118 lines
3.5 KiB
QML
118 lines
3.5 KiB
QML
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
|
|
import QtQuick
|
|
import QtQuick.Window
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import QtCore
|
|
import QtQuick3D
|
|
import QtQuick3D.Helpers
|
|
|
|
Item {
|
|
id: previewControls
|
|
required property View3D targetView
|
|
required property OrbitCameraController orbitCamera
|
|
property alias modelSource: modelComboBox.currentValue
|
|
property alias enableIBL: iblEnableButton.checked
|
|
property alias enableDirectionalLight: directionalLightEnabledButton.checked
|
|
|
|
|
|
Settings {
|
|
property alias enableIbl: previewControls.enableIBL
|
|
property alias enableDirectionalLight: previewControls.enableDirectionalLight
|
|
property alias environmentOrientationSliderValue: environmentOrientationSlider.value
|
|
}
|
|
|
|
FrostedGlass {
|
|
width: parent.width
|
|
height: layout.implicitHeight
|
|
backgroundItem: previewControls.targetView
|
|
backgroundRect: Qt.rect(0, 0, width, height)
|
|
// range: 0.05
|
|
// blur: 0.005
|
|
range: 0.05
|
|
blur: 0.05
|
|
//color: "pink"
|
|
}
|
|
|
|
RowLayout {
|
|
id: layout
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: 10
|
|
Label {
|
|
text: "Model"
|
|
}
|
|
ComboBox {
|
|
id: modelComboBox
|
|
textRole: "text"
|
|
valueRole: "value"
|
|
model: ListModel {
|
|
ListElement {
|
|
text: "Sphere"
|
|
value: "#Sphere"
|
|
}
|
|
ListElement {
|
|
text: "Cube"
|
|
value: "#Cube"
|
|
}
|
|
ListElement {
|
|
text: "Plane"
|
|
value: "#Rectangle"
|
|
}
|
|
ListElement {
|
|
text: "Suzanne"
|
|
value: "assets/meshes/suzanne.mesh"
|
|
}
|
|
}
|
|
}
|
|
Button {
|
|
text: "Reset View"
|
|
onClicked: {
|
|
previewControls.orbitCamera.origin.rotation = Qt.quaternion(1, 0, 0, 0)
|
|
previewControls.orbitCamera.camera.rotation = Qt.quaternion(1, 0, 0, 0)
|
|
previewControls.orbitCamera.camera.position = Qt.vector3d(0, 0, 300)
|
|
environmentOrientationSlider.value = 0
|
|
}
|
|
}
|
|
ToolButton {
|
|
id: iblEnableButton
|
|
icon.source: "assets/icons/texture.png"
|
|
checkable: true
|
|
checked: true
|
|
hoverEnabled: true
|
|
ToolTip.delay: 1000
|
|
ToolTip.timeout: 5000
|
|
ToolTip.visible: hovered
|
|
ToolTip.text: qsTr("Toggle the use of IBL")
|
|
}
|
|
|
|
Label {
|
|
visible: previewControls.enableIBL
|
|
text: "Environment Orientation"
|
|
}
|
|
Slider {
|
|
visible: previewControls.enableIBL
|
|
id: environmentOrientationSlider
|
|
Layout.fillWidth: true
|
|
from: -180
|
|
to: 180
|
|
value: 0
|
|
onValueChanged: {
|
|
previewControls.targetView.environment.probeOrientation = Qt.vector3d(0, value, 0)
|
|
}
|
|
}
|
|
ToolButton {
|
|
id: directionalLightEnabledButton
|
|
icon.source: "assets/icons/lightdirectional.png"
|
|
checkable: true
|
|
checked: true
|
|
hoverEnabled: true
|
|
ToolTip.delay: 1000
|
|
ToolTip.timeout: 5000
|
|
ToolTip.visible: hovered
|
|
ToolTip.text: qsTr("Toggle a Directional Light")
|
|
}
|
|
}
|
|
}
|