| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- // Copyright (C) 2021 The Qt Company Ltd.
- // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
- import QtQuick 2.15
- import QtQuick.Layouts 1.15
- import HelperWidgets 2.0
- import StudioTheme 1.0 as StudioTheme
- Column {
- width: parent.width
- Section {
- caption: qsTr("Model")
- width: parent.width
- SectionLayout {
- PropertyLabel {
- text: qsTr("Source")
- tooltip: qsTr("Sets the location of the mesh file containing the geometry of this model.")
- }
- SecondColumnLayout {
- UrlChooser {
- id: sourceUrlChooser
- backendValue: backendValues.source
- filter: "*.mesh"
- defaultItems: ["#Rectangle" ,"#Sphere" ,"#Cube" ,"#Cone" ,"#Cylinder"]
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Geometry")
- tooltip: qsTr("Sets a custom geometry for the model")
- }
- SecondColumnLayout {
- ItemFilterComboBox {
- id: geometryComboBox
- typeFilter: "QtQuick3D.Geometry"
- backendValue: backendValues.geometry
- implicitWidth: StudioTheme.Values.singleControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- Connections {
- target: geometryComboBox.backendValue
- function onExpressionChanged() {
- if (geometryComboBox.backendValue.expression !== "" &&
- sourceUrlChooser.backendValue.expression !== "")
- sourceUrlChooser.backendValue.resetValue()
- }
- }
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Materials")
- Layout.alignment: Qt.AlignTop
- Layout.topMargin: 5
- }
- SecondColumnLayout {
- EditableListView {
- backendValue: backendValues.materials
- model: backendValues.materials.expressionAsList
- Layout.fillWidth: true
- typeFilter: "QtQuick3D.Material"
- textRole: "idAndName"
- onAdd: function(value) { backendValues.materials.idListAdd(value) }
- onRemove: function(idx) { backendValues.materials.idListRemove(idx) }
- onReplace: function (idx, value) { backendValues.materials.idListReplace(idx, value) }
- extraButtonIcon: StudioTheme.Constants.material_medium
- extraButtonToolTip: qsTr("Edit material")
- onExtraButtonClicked: (idx) => { backendValues.materials.openMaterialEditor(idx) }
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Casts Shadows")
- tooltip: qsTr("Enables the geometry of this model to be rendered to the shadow maps.")
- }
- SecondColumnLayout {
- CheckBox {
- text: backendValues.castsShadows.valueToString
- backendValue: backendValues.castsShadows
- implicitWidth: StudioTheme.Values.twoControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Receives Shadows")
- tooltip: qsTr("Enables the geometry of this model to receive shadows.")
- }
- SecondColumnLayout {
- CheckBox {
- text: backendValues.receivesShadows.valueToString
- backendValue: backendValues.receivesShadows
- implicitWidth: StudioTheme.Values.twoControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Casts Reflections")
- tooltip: qsTr("Enables reflection probes to reflect this model.")
- }
- SecondColumnLayout {
- CheckBox {
- text: backendValues.castsReflections.valueToString
- backendValue: backendValues.castsReflections
- implicitWidth: StudioTheme.Values.twoControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Receives Reflections")
- tooltip: qsTr("Enables the geometry of this model to receive reflections from the nearest reflection probe. The model must be inside at least one reflection probe to start receiving reflections.")
- }
- SecondColumnLayout {
- CheckBox {
- text: backendValues.receivesReflections.valueToString
- backendValue: backendValues.receivesReflections
- implicitWidth: StudioTheme.Values.twoControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Is Pickable")
- tooltip: qsTr("Enables ray cast based picking for this model.")
- }
- SecondColumnLayout {
- CheckBox {
- text: backendValues.pickable.valueToString
- backendValue: backendValues.pickable
- implicitWidth: StudioTheme.Values.twoControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Used in Baked Lighting")
- tooltip: qsTr("This model is static and suitable to contribute to baked lighting.")
- }
- SecondColumnLayout {
- CheckBox {
- text: backendValues.usedInBakedLighting.valueToString
- backendValue: backendValues.usedInBakedLighting
- implicitWidth: StudioTheme.Values.twoControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Depth Bias")
- tooltip: qsTr("Sets the depth bias of the model.")
- }
- SecondColumnLayout {
- SpinBox {
- minimumValue: -9999999
- maximumValue: 9999999
- decimals: 0
- backendValue: backendValues.depthBias
- implicitWidth: StudioTheme.Values.singleControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("LOD Bias")
- tooltip: qsTr("Sets the size a model needs to be when rendered before the automatic level of detail meshes are used")
- }
- SecondColumnLayout {
- SpinBox {
- minimumValue: 0.0
- maximumValue: 9999999
- decimals: 2
- backendValue: backendValues.levelOfDetailBias
- implicitWidth: StudioTheme.Values.singleControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- }
- }
- Section {
- caption: qsTr("Instancing")
- width: parent.width
- SectionLayout {
- PropertyLabel {
- text: qsTr("Data Source")
- tooltip: qsTr("If this property is set, the model will not be rendered normally. Instead, a number of instances of the model will be rendered, as defined by the instance table.")
- }
- SecondColumnLayout {
- ItemFilterComboBox {
- typeFilter: "QtQuick3D.Instancing"
- backendValue: backendValues.instancing
- implicitWidth: StudioTheme.Values.singleControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Origin Node")
- tooltip: qsTr("Sets the origin of the instance’s coordinate system.")
- }
- SecondColumnLayout {
- ItemFilterComboBox {
- typeFilter: "QtQuick3D.Node"
- backendValue: backendValues.instanceRoot
- implicitWidth: StudioTheme.Values.singleControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- }
- }
- Section {
- caption: qsTr("Animation")
- width: parent.width
- SectionLayout {
- PropertyLabel {
- text: qsTr("Skeleton")
- tooltip: qsTr("Sets the skeleton for the model.")
- }
- SecondColumnLayout {
- ItemFilterComboBox {
- typeFilter: "QtQuick3D.Skeleton"
- backendValue: backendValues.skeleton
- implicitWidth: StudioTheme.Values.singleControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Morph Targets")
- tooltip: qsTr("Sets a list of MorphTargets used to render the provided geometry.")
- Layout.alignment: Qt.AlignTop
- Layout.topMargin: 5
- }
- SecondColumnLayout {
- EditableListView {
- backendValue: backendValues.morphTargets
- model: backendValues.morphTargets.expressionAsList
- Layout.fillWidth: true
- typeFilter: "QtQuick3D.MorphTarget"
- onAdd: function(value) { backendValues.morphTargets.idListAdd(value) }
- onRemove: function(idx) { backendValues.morphTargets.idListRemove(idx) }
- onReplace: function (idx, value) { backendValues.morphTargets.idListReplace(idx, value) }
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Skin")
- tooltip: qsTr("Sets the skin for the model.")
- }
- SecondColumnLayout {
- ItemFilterComboBox {
- typeFilter: "QtQuick3D.Skin"
- backendValue: backendValues.skin
- implicitWidth: StudioTheme.Values.singleControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- }
- }
- Section {
- caption: qsTr("Lightmapping")
- width: parent.width
- SectionLayout {
- PropertyLabel {
- text: qsTr("Resolution")
- tooltip: qsTr("Sets the target resolution of the baked lightmap texture for the model.")
- }
- SecondColumnLayout {
- SpinBox {
- minimumValue: 128
- maximumValue: 4096
- decimals: 0
- stepSize: 128
- sliderIndicatorVisible: true
- backendValue: backendValues.lightmapBaseResolution
- implicitWidth: StudioTheme.Values.singleControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- PropertyLabel {
- text: qsTr("Lightmap")
- tooltip: qsTr("Sets the baked lightmap data for the model.")
- }
- SecondColumnLayout {
- ItemFilterComboBox {
- typeFilter: "QtQuick3D.BakedLightmap"
- backendValue: backendValues.bakedLightmap
- implicitWidth: StudioTheme.Values.singleControlColumnWidth
- + StudioTheme.Values.actionIndicatorWidth
- }
- ExpandingSpacer {}
- }
- }
- }
- }
|