Section { // LightSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Color") tooltip: qsTr("This property defines the color applied to models illuminated by this light. The default value is white, rgb(255, 255, 255).") } SecondColumnLayout { ColorEditor { caption: qsTr("color") backendValue: backendValues.color supportGradient: false Layout.fillWidth: true } } Label { text: qsTr("Ambient Color") tooltip: qsTr("The property defines the ambient color applied to materials before being lit by this light. The default value is black, rgb(0, 0, 0).") } SecondColumnLayout { ColorEditor { caption: qsTr("ambientColor") backendValue: backendValues.ambientColor supportGradient: false Layout.fillWidth: true } } Label { text: qsTr("Brightness") tooltip: qsTr("This property defines an overall multiplier for this light’s effects. The default value is 1.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.brightness Layout.fillWidth: true } } Label { text: qsTr("Scope") tooltip: qsTr("The property allows the selection of a Node in the scene. Only that node and it's children are affected by this light. By default no scope is selected.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Node" Layout.fillWidth: true backendValue: backendValues.scope } } Label { text: qsTr("Casts Shadow") tooltip: qsTr("When this property is enabled, the light will cast shadows. The default value is false.") } SecondColumnLayout { CheckBox { id: castsShadowCheckBox text: backendValues.castsShadow.valueToString backendValue: backendValues.castsShadow Layout.fillWidth: true } } Label { text: qsTr("Shadow Bias") tooltip: qsTr("This property is used to tweak the shadowing effect when objects are casting shadows on themselves. The value range is [-1.0, 1.0]. Generally, a value inside [-0.1, 0.1] is sufficient. The default value is 0.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.shadowBias Layout.fillWidth: true } } Label { text: qsTr("Shadow Factor") tooltip: qsTr("This property determines how dark the cast shadows should be. The value range is [0, 100], where 0 means no shadows and 100 means the light is fully shadowed. The default value is 5.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.shadowFactor Layout.fillWidth: true } } Label { text: qsTr("Shadow Map Quality") tooltip: qsTr("The property sets the quality of the shadow map created for shadow rendering. Lower quality uses less resources, but produces lower quality shadows while higher quality uses more resources, but produces better quality shadows.") } SecondColumnLayout { ComboBox { scope: "Light" model: ["ShadowMapQualityLow", "ShadowMapQualityMedium", "ShadowMapQualityHigh", "ShadowMapQualityVeryHigh"] backendValue: backendValues.shadowMapQuality Layout.fillWidth: true } } Label { text: qsTr("Shadow Map Far") tooltip: qsTr("The property determines the maximum distance for the shadow map. Smaller values improve the precision and effects of the map. The default value is 5000.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.shadowMapFar Layout.fillWidth: true } } Label { text: qsTr("Shadow Filter") tooltip: qsTr("This property sets how much blur is applied to the shadows. The default value is 5.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.shadowFilter Layout.fillWidth: true } } } } // LightSection.qml Section { // CameraSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Frustum Culling Enabled") tooltip: qsTr("When this property is true, objects outside the camera frustum will be culled, meaning they will not be passed to the renderer. By default this property is set to false. For scenes where all or most objects are inside the camera frustum, frustum culling is an unnecessary performance overhead. But for complex scenes where large parts are located outside the camera's view, enabling frustum culling may improve performance.") } SecondColumnLayout { CheckBox { id: frustumCullingEnabledCheckBox text: backendValues.frustumCullingEnabled.valueToString backendValue: backendValues.frustumCullingEnabled Layout.fillWidth: true } } } } // CameraSection.qml Section { // CustomCameraSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Projection") tooltip: qsTr("This property defines the CustomCamera's projection matrix.") } SecondColumnLayout { // unknown type: QMatrix4x4 } } } // CustomCameraSection.qml Section { // CustomMaterialSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Shading Mode") tooltip: qsTr("Specifies the type of the material. The default value is Shaded.") } SecondColumnLayout { ComboBox { scope: "CustomMaterial" model: ["Unshaded", "Shaded"] backendValue: backendValues.shadingMode Layout.fillWidth: true } } Label { text: qsTr("Fragment Shader") tooltip: qsTr("Specfies the file with the snippet of custom fragment shader code.") } SecondColumnLayout { UrlChooser { backendValue: backendValues.fragmentShader filter: "*.*" } } Label { text: qsTr("Vertex Shader") tooltip: qsTr("Specfies the file with the snippet of custom vertex shader code.") } SecondColumnLayout { UrlChooser { backendValue: backendValues.vertexShader filter: "*.*" } } Label { text: qsTr("Source Blend") tooltip: qsTr("Specifies the source blend factor. The default value is CustomMaterial.NoBlend.") } SecondColumnLayout { ComboBox { scope: "CustomMaterial" model: ["NoBlend", "Zero", "One", "SrcColor", "OneMinusSrcColor", "DstColor", "OneMinusDstColor", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha", "ConstantColor", "OneMinusConstantColor", "ConstantAlpha", "OneMinusConstantAlpha", "SrcAlphaSaturate"] backendValue: backendValues.sourceBlend Layout.fillWidth: true } } Label { text: qsTr("Destination Blend") tooltip: qsTr("Specifies the destination blend factor. The default value is CustomMaterial.NoBlend.") } SecondColumnLayout { ComboBox { scope: "CustomMaterial" model: ["NoBlend", "Zero", "One", "SrcColor", "OneMinusSrcColor", "DstColor", "OneMinusDstColor", "SrcAlpha", "OneMinusSrcAlpha", "DstAlpha", "OneMinusDstAlpha", "ConstantColor", "OneMinusConstantColor", "ConstantAlpha", "OneMinusConstantAlpha", "SrcAlphaSaturate"] backendValue: backendValues.destinationBlend Layout.fillWidth: true } } Label { text: qsTr("Always Dirty") tooltip: qsTr("Specifies that the material state is always dirty, which indicates that the material needs to be refreshed every time it is used by the QtQuick3D.") } SecondColumnLayout { CheckBox { id: alwaysDirtyCheckBox text: backendValues.alwaysDirty.valueToString backendValue: backendValues.alwaysDirty Layout.fillWidth: true } } Label { text: qsTr("Line Width") tooltip: qsTr("This property determines the width of the lines rendered, when the geometry is using a primitive type of lines or line strips. The default value is 1.0. This property is not relevant when rendering other types of geometry, such as, triangle meshes.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.lineWidth Layout.fillWidth: true } } } } // CustomMaterialSection.qml Section { // DefaultMaterialSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Lighting") tooltip: qsTr("This property defines which lighting method is used when generating this material.") } SecondColumnLayout { ComboBox { scope: "DefaultMaterial" model: ["NoLighting", "FragmentLighting"] backendValue: backendValues.lighting Layout.fillWidth: true } } Label { text: qsTr("Blend Mode") tooltip: qsTr("This property determines how the colors of the model rendered blend with those behind it.") } SecondColumnLayout { ComboBox { scope: "DefaultMaterial" model: ["SourceOver", "Screen", "Multiply"] backendValue: backendValues.blendMode Layout.fillWidth: true } } Label { text: qsTr("Diffuse Color") tooltip: qsTr("This property determines the diffuse color (albedo) for the material. Setting the diffuse color to a black tint will create a purely-specular material (e.g. metals or mirrors).") } SecondColumnLayout { ColorEditor { caption: qsTr("diffuseColor") backendValue: backendValues.diffuseColor supportGradient: false Layout.fillWidth: true } } Label { text: qsTr("Diffuse Map") tooltip: qsTr("This property defines a Texture to apply to the material. Using Texture with transparency will also apply the alpha channel as an opacity map.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.diffuseMap } } Label { text: qsTr("Emissive Factor") tooltip: qsTr("This property determines the color of self-illumination for this material. If an emissive map is set, the x, y, and z components are used as factors (multipliers) for the R, G and B channels of the texture, respectively. The default value is (0, 0, 0) and it means no emissive contribution at all.") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.emissiveFactor_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.emissiveFactor_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.emissiveFactor_z Layout.fillWidth: true Layout.minimumWidth: 0 } } } Label { text: qsTr("Emissive Map") tooltip: qsTr("This property sets a RGB Texture to be used to specify the intensity of the emissive color.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.emissiveMap } } Label { text: qsTr("Specular Reflection Map") tooltip: qsTr("This property sets a Texture used for specular highlights on the material.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.specularReflectionMap } } Label { text: qsTr("Specular Map") tooltip: qsTr("This property defines a RGB Texture to modulate the amount and the color of specularity across the surface of the material. These values are multiplied by the specularAmount.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.specularMap } } Label { text: qsTr("Specular Model") tooltip: qsTr("This property determines which functions are used to calculate specular highlights for lights in the scene.") } SecondColumnLayout { ComboBox { scope: "DefaultMaterial" model: ["Default", "KGGX"] backendValue: backendValues.specularModel Layout.fillWidth: true } } Label { text: qsTr("Specular Tint") tooltip: qsTr("This property defines a color used to adjust the specular reflections. Use white for no effect") } SecondColumnLayout { ColorEditor { caption: qsTr("specularTint") backendValue: backendValues.specularTint supportGradient: false Layout.fillWidth: true } } Label { text: qsTr("Index Of Refraction") tooltip: qsTr("This property controls what angles of reflections are affected by the fresnelPower. The default is 1.45. The value must be greater or equal to 1.0. \note No known material in the world have ior much greater than 3.0.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.indexOfRefraction Layout.fillWidth: true } } Label { text: qsTr("Fresnel Power") tooltip: qsTr("This property decreases head-on reflections (looking directly at the surface) while maintaining reflections seen at grazing angles. The default value is 0 disabling the fresnel effect.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.fresnelPower Layout.fillWidth: true } } Label { text: qsTr("Specular Amount") tooltip: qsTr("This property controls the strength of specularity (highlights and reflections). The default value is 0 disabling the specularity. The range is [0.0, 1.0].") } SecondColumnLayout { SpinBox { maximumValue: 1.0 minimumValue: 0.0 realDragRange: 5000 decimals: 0 backendValue: backendValues.specularAmount Layout.fillWidth: true } } Label { text: qsTr("Specular Roughness") tooltip: qsTr("This property controls the size of the specular highlight generated from lights, and the clarity of reflections in general. Larger values increase the roughness, softening specular highlights and blurring reflections. The range is [0.0, 1.0]. The default value is 0.") } SecondColumnLayout { SpinBox { maximumValue: 1.0 minimumValue: 0.0 realDragRange: 5000 decimals: 0 backendValue: backendValues.specularRoughness Layout.fillWidth: true } } Label { text: qsTr("Roughness Map") tooltip: qsTr("This property defines a Texture to control the specular roughness of the material. If the texture contains multiple channels(RGBA), then the correct channel can be set using the roughnessChannel property.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.roughnessMap } } Label { text: qsTr("Roughness Channel") tooltip: qsTr("This property defines the texture channel used to read the roughness value from roughnessMap. The default value is Material.R.") } SecondColumnLayout { ComboBox { scope: "DefaultMaterial" model: ["R", "G", "B", "A"] backendValue: backendValues.roughnessChannel Layout.fillWidth: true } } Label { text: qsTr("Opacity") tooltip: qsTr("This property drops the opacity of just this material, separate from the model. The default is 1.0. The range is [0.0, 1.0].") } SecondColumnLayout { SpinBox { maximumValue: 1.0 minimumValue: 0.0 realDragRange: 5000 decimals: 0 backendValue: backendValues.opacity Layout.fillWidth: true } } Label { text: qsTr("Opacity Map") tooltip: qsTr("This property defines a Texture used to control the opacity differently for different parts of the material.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.opacityMap } } Label { text: qsTr("Opacity Channel") tooltip: qsTr("This property defines the texture channel used to read the opacity value from opacityMap. The default value is Material.A.") } SecondColumnLayout { ComboBox { scope: "DefaultMaterial" model: ["R", "G", "B", "A"] backendValue: backendValues.opacityChannel Layout.fillWidth: true } } Label { text: qsTr("Bump Map") tooltip: qsTr("This property defines a grayscale Texture to simulate fine geometry displacement across the surface of the material. Brighter pixels indicate raised regions. The amount of the effect is controlled by the bumpAmount property.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.bumpMap } } Label { text: qsTr("Bump Amount") tooltip: qsTr("This property controls the amount of simulated displacement for the bumpMap or normalMap. The default value is 0 disabling the bump effect. The range is [0, 1].") } SecondColumnLayout { SpinBox { maximumValue: 1 minimumValue: 0 realDragRange: 5000 decimals: 0 backendValue: backendValues.bumpAmount Layout.fillWidth: true } } Label { text: qsTr("Normal Map") tooltip: qsTr("This property defines a RGB image used to simulate fine geometry displacement across the surface of the material. The RGB channels indicate XYZ normal deviations. The amount of the effect is controlled by the bumpAmount property.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.normalMap } } Label { text: qsTr("Translucency Map") tooltip: qsTr("This property defines a grayscale Texture controlling how much light can pass through the material from behind.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.translucencyMap } } Label { text: qsTr("Translucency Channel") tooltip: qsTr("This property defines the texture channel used to read the translucency value from translucencyMap. The default value is Material.A.") } SecondColumnLayout { ComboBox { scope: "DefaultMaterial" model: ["R", "G", "B", "A"] backendValue: backendValues.translucencyChannel Layout.fillWidth: true } } Label { text: qsTr("Translucent Falloff") tooltip: qsTr("This property defines the amount of falloff for the translucency based on the angle of the normals of the object to the light source.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.translucentFalloff Layout.fillWidth: true } } Label { text: qsTr("Diffuse Light Wrap") tooltip: qsTr("This property determines the amount of light wrap for the translucency map. A value of 0 will not wrap the light at all, while a value of 1 will wrap the light all around the object.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.diffuseLightWrap Layout.fillWidth: true } } Label { text: qsTr("Vertex Colors Enabled") tooltip: qsTr("When this property is enabled, the material will use vertex colors from the mesh. These will be multiplied by any other colors specified for the material.") } SecondColumnLayout { CheckBox { id: vertexColorsEnabledCheckBox text: backendValues.vertexColorsEnabled.valueToString backendValue: backendValues.vertexColorsEnabled Layout.fillWidth: true } } Label { text: qsTr("Point Size") tooltip: qsTr("This property determines the size of the points rendered, when the geometry is using a primitive type of points. The default value is 1.0. This property is not relevant when rendering other types of geometry, such as, triangle meshes.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.pointSize Layout.fillWidth: true } } Label { text: qsTr("Line Width") tooltip: qsTr("This property determines the width of the lines rendered, when the geometry is using a primitive type of lines or line strips. The default value is 1.0. This property is not relevant when rendering other types of geometry, such as, triangle meshes.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.lineWidth Layout.fillWidth: true } } } } // DefaultMaterialSection.qml Section { // EffectSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Passes") tooltip: qsTr("Contains a list of render passes implemented by the effect.") } SecondColumnLayout { EditableListView { backendValue: backendValues.passes model: backendValues.passes.expressionAsList Layout.fillWidth: true typeFilter: "QtQuick3D.Pass" onAdd: function(value) { backendValues.passes.idListAdd(value) } onRemove: function(idx) { backendValues.passes.idListRemove(idx) } onReplace: function (idx, value) { backendValues.passes.idListReplace(idx, value) } } } } } // EffectSection.qml Section { // InstancingSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Source") tooltip: qsTr("This property holds the location of an XML or binary file containing the instance data.") } SecondColumnLayout { UrlChooser { backendValue: backendValues.source filter: "*.*" } } } } // InstancingSection.qml Section { // FrustumCameraSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Top") tooltip: qsTr("This property defines the top of the frustum on the near plane, relative to its center.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.top Layout.fillWidth: true } } Label { text: qsTr("Bottom") tooltip: qsTr("This property defines the bottom of the frustum on the near plane, relative to its center.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.bottom Layout.fillWidth: true } } Label { text: qsTr("Right") tooltip: qsTr("This property defines the right side of the frustum on the near plane, relative to its center.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.right Layout.fillWidth: true } } Label { text: qsTr("Left") tooltip: qsTr("This property defines the left side of the frustum on the near plane, relative to its center.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.left Layout.fillWidth: true } } } } // FrustumCameraSection.qml Section { // InstancingSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Instances") tooltip: qsTr("") } SecondColumnLayout { EditableListView { backendValue: backendValues.instances model: backendValues.instances.expressionAsList Layout.fillWidth: true typeFilter: "QtQuick3D.InstanceListEntry" onAdd: function(value) { backendValues.instances.idListAdd(value) } onRemove: function(idx) { backendValues.instances.idListRemove(idx) } onReplace: function (idx, value) { backendValues.instances.idListReplace(idx, value) } } } } } // InstancingSection.qml Section { // InstancingSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Position") tooltip: qsTr("") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.position_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.position_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.position_z Layout.fillWidth: true Layout.minimumWidth: 0 } } } Label { text: qsTr("Scale") tooltip: qsTr("") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.scale_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.scale_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.scale_z Layout.fillWidth: true Layout.minimumWidth: 0 } } } Label { text: qsTr("Euler Rotation") tooltip: qsTr("") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.eulerRotation_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.eulerRotation_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.eulerRotation_z Layout.fillWidth: true Layout.minimumWidth: 0 } } } Label { text: qsTr("Rotation") tooltip: qsTr("") } SecondColumnLayout { // unknown type: QQuaternion } Label { text: qsTr("Color") tooltip: qsTr("") } SecondColumnLayout { ColorEditor { caption: qsTr("color") backendValue: backendValues.color supportGradient: false Layout.fillWidth: true } } Label { text: qsTr("Custom Data") tooltip: qsTr("") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.customData_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.customData_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.customData_z Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("W") width: 100 color: StudioTheme.Values.theme3DAxisWColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.customData_w Layout.fillWidth: true Layout.minimumWidth: 0 } } } } } // InstancingSection.qml Section { // InstancingSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Instance Count Override") tooltip: qsTr("Set this property to limit the number of instances without regenerating or re-uploading the instance table. This allows very inexpensive animation of the number of instances rendered.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.instanceCountOverride Layout.fillWidth: true } } Label { text: qsTr("Has Transparency") tooltip: qsTr("Set this property to true if the instancing table contains alpha values that should be used when rendering the model. This property only makes a difference if the model is opaque: If the model has a transparent \lmaterial, or an \lopacity less than one, the alpha value from the table will be used regardless.") } SecondColumnLayout { CheckBox { id: hasTransparencyCheckBox text: backendValues.hasTransparency.valueToString backendValue: backendValues.hasTransparency Layout.fillWidth: true } } Label { text: qsTr("Depth Sorting Enabled") tooltip: qsTr("Holds the depth sorting enabled value for the instance table. When enabled, instances are sorted and rendered from the furthest instance from the camera to the nearest i.e. back-to-front. If disabled, which is the default, instances are rendered in the order they are specified in the instance table.") } SecondColumnLayout { CheckBox { id: depthSortingEnabledCheckBox text: backendValues.depthSortingEnabled.valueToString backendValue: backendValues.depthSortingEnabled Layout.fillWidth: true } } } } // InstancingSection.qml Section { // JointSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Index") tooltip: qsTr("Specifies the index of this joint. This index value is used in the JointSemantic custom geometry attribute.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.index Layout.fillWidth: true } } Label { text: qsTr("Skeleton Root") tooltip: qsTr("Specifies the ") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Skeleton" Layout.fillWidth: true backendValue: backendValues.skeletonRoot } } } } // JointSection.qml Section { // Loader3DSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Active") tooltip: qsTr("This property is true if the Loader3D is currently active. The default value for this property is true.") } SecondColumnLayout { CheckBox { id: activeCheckBox text: backendValues.active.valueToString backendValue: backendValues.active Layout.fillWidth: true } } Label { text: qsTr("Source") tooltip: qsTr("This property holds the URL of the QML component to instantiate.") } SecondColumnLayout { UrlChooser { backendValue: backendValues.source filter: "*.*" } } Label { text: qsTr("Source Component") tooltip: qsTr("This property holds the \l") } SecondColumnLayout { IdComboBox { typeFilter: "QQmlComponent" Layout.fillWidth: true backendValue: backendValues.sourceComponent } } Label { text: qsTr("Item") tooltip: qsTr("This property holds the top-level object that is currently loaded.") } SecondColumnLayout { IdComboBox { typeFilter: "QObject" Layout.fillWidth: true backendValue: backendValues.item } } Label { text: qsTr("Asynchronous") tooltip: qsTr("This property holds whether the component will be instantiated asynchronously.") } SecondColumnLayout { CheckBox { id: asynchronousCheckBox text: backendValues.asynchronous.valueToString backendValue: backendValues.asynchronous Layout.fillWidth: true } } } } // Loader3DSection.qml Section { // MaterialSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Light Probe") tooltip: qsTr("This property defines a Texture for overriding or setting an image based lighting Texture for use with this material only.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.lightProbe } } Label { text: qsTr("Cull Mode") tooltip: qsTr("This property defines whether primitive culling is enabled, and, when enabled, which primitives are discarded.") } SecondColumnLayout { ComboBox { scope: "Material" model: ["BackFaceCulling", "FrontFaceCulling", "NoCulling"] backendValue: backendValues.cullMode Layout.fillWidth: true } } Label { text: qsTr("Depth Draw Mode") tooltip: qsTr("This property determines if and when depth rendering takes place for this material. The default behavior when ") } SecondColumnLayout { ComboBox { scope: "Material" model: ["OpaqueOnlyDepthDraw", "AlwaysDepthDraw", "NeverDepthDraw", "OpaquePrePassDepthDraw"] backendValue: backendValues.depthDrawMode Layout.fillWidth: true } } } } // MaterialSection.qml Section { // ModelSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Source") tooltip: qsTr("This property defines the location of the mesh file containing the geometry of this Model or one of the built-in primitive meshes listed below as described in ") } SecondColumnLayout { UrlChooser { backendValue: backendValues.source filter: "*.*" } } Label { text: qsTr("Casts Shadows") tooltip: qsTr("When this property is true, the geometry of this model is used when rendering to the shadow maps.") } SecondColumnLayout { CheckBox { id: castsShadowsCheckBox text: backendValues.castsShadows.valueToString backendValue: backendValues.castsShadows Layout.fillWidth: true } } Label { text: qsTr("Receives Shadows") tooltip: qsTr("When this property is set to true, the model's materials take shadow contribution from shadow casting lights into account.") } SecondColumnLayout { CheckBox { id: receivesShadowsCheckBox text: backendValues.receivesShadows.valueToString backendValue: backendValues.receivesShadows Layout.fillWidth: true } } Label { text: qsTr("Materials") tooltip: qsTr("This property contains a list of materials used to render the provided geometry. To render anything, there must be at least one material. Normally there should be one material for each sub-mesh included in the source geometry.") } SecondColumnLayout { EditableListView { backendValue: backendValues.materials model: backendValues.materials.expressionAsList Layout.fillWidth: true typeFilter: "QtQuick3D.Material" onAdd: function(value) { backendValues.materials.idListAdd(value) } onRemove: function(idx) { backendValues.materials.idListRemove(idx) } onReplace: function (idx, value) { backendValues.materials.idListReplace(idx, value) } } } Label { text: qsTr("Morph Targets") tooltip: qsTr("This property contains a list of [QtQuick3D QML] MorphTargets used to render the provided geometry. Meshes should have at least one attribute among positions, normals, tangent, bitangent for the morph targets. Quick3D supports maximum 8 morph targets and remains will be ignored.") } 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) } } } Label { text: qsTr("Pickable") tooltip: qsTr("This property controls whether the model is pickable or not. Set this property to true to make the model pickable. Models are not pickable by default.") } SecondColumnLayout { CheckBox { id: pickableCheckBox text: backendValues.pickable.valueToString backendValue: backendValues.pickable Layout.fillWidth: true } } Label { text: qsTr("Geometry") tooltip: qsTr("Specify a custom geometry for the model. The Model::source must be empty when custom geometry is used.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Geometry" Layout.fillWidth: true backendValue: backendValues.geometry } } Label { text: qsTr("Instancing") 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 { IdComboBox { typeFilter: "QtQuick3D.Instancing" Layout.fillWidth: true backendValue: backendValues.instancing } } Label { text: qsTr("Instance Root") tooltip: qsTr("This property defines the origin of the instance’s coordinate system.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Node" Layout.fillWidth: true backendValue: backendValues.instanceRoot } } Label { text: qsTr("Skeleton") tooltip: qsTr("Contains the skeleton for the model. The Skeleton is used together with Vertex Skinning") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Skeleton" Layout.fillWidth: true backendValue: backendValues.skeleton } } Label { text: qsTr("Inverse Bind Poses") tooltip: qsTr("This property contains a list of Inverse Bind Pose matrixes used for the skeletal animation. Each inverseBindPose matrix means the inverse of the global transform of the repective skeleton, which will be used initially.") } SecondColumnLayout { EditableListView { backendValue: backendValues.inverseBindPoses model: backendValues.inverseBindPoses.expressionAsList Layout.fillWidth: true typeFilter: "QList" onAdd: function(value) { backendValues.inverseBindPoses.idListAdd(value) } onRemove: function(idx) { backendValues.inverseBindPoses.idListRemove(idx) } onReplace: function (idx, value) { backendValues.inverseBindPoses.idListReplace(idx, value) } } } Label { text: qsTr("Depth Bias") tooltip: qsTr("Holds the depth bias of the model. Depth bias is added to the object distance from camera when sorting objects. This can be used to force rendering order between objects close to each other, that might otherwise be rendered in different order in different frames. Negative values cause the sorting value to move closer to the camera while positive values move it further from the camera.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.depthBias Layout.fillWidth: true } } } } // ModelSection.qml Section { // MorphTargetSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Weight") tooltip: qsTr("Specifies the weight of the current morph target. The weight is the multiplication factor used by the linear interpolation. A weight of 1 means that this target is fully applied. A weight of 0 means that it has no influence.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.weight Layout.fillWidth: true } } Label { text: qsTr("Attributes") tooltip: qsTr("Specifies the set of attributes of the current morph target. In order to animate vertex attributes in morphing, the mesh must contain those target attributes and the morph target must have the attributes enabled.") } SecondColumnLayout { // unknown type: MorphTargetAttributes } } } // MorphTargetSection.qml Section { // NodeSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("X") tooltip: qsTr("This property contains the x value of the position translation in local coordinate space.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.x Layout.fillWidth: true } } Label { text: qsTr("Y") tooltip: qsTr("This property contains the y value of the position translation in local coordinate space.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.y Layout.fillWidth: true } } Label { text: qsTr("Z") tooltip: qsTr("This property contains the z value of the position translation in local coordinate space.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.z Layout.fillWidth: true } } Label { text: qsTr("Rotation") tooltip: qsTr("This property contains the rotation values for the node. These values are stored as a quaternion.") } SecondColumnLayout { // unknown type: QQuaternion } Label { text: qsTr("Euler Rotation") tooltip: qsTr("This property contains the rotation values for the x, y, and z axis. These values are stored as a vector3d. Rotation order is assumed to be ZXY.") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.eulerRotation_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.eulerRotation_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.eulerRotation_z Layout.fillWidth: true Layout.minimumWidth: 0 } } } Label { text: qsTr("Position") tooltip: qsTr("This property contains the position translation in local coordinate space.") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.position_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.position_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.position_z Layout.fillWidth: true Layout.minimumWidth: 0 } } } Label { text: qsTr("Scale") tooltip: qsTr("This property contains the scale values for the x, y, and z axis.") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.scale_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.scale_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.scale_z Layout.fillWidth: true Layout.minimumWidth: 0 } } } Label { text: qsTr("Pivot") tooltip: qsTr("This property contains the pivot values for the x, y, and z axis. These values are used as the pivot points when applying rotations to the node.") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.pivot_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.pivot_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.pivot_z Layout.fillWidth: true Layout.minimumWidth: 0 } } } Label { text: qsTr("Opacity") tooltip: qsTr("This property contains the local opacity value of the Node. Since Node objects are not necessarily visible, this value might not have any effect, but this value is inherited by all children of the Node, which might be visible.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.opacity Layout.fillWidth: true } } Label { text: qsTr("Visible") tooltip: qsTr("When this property is true, the Node (and its children) can be visible.") } SecondColumnLayout { CheckBox { id: visibleCheckBox text: backendValues.visible.valueToString backendValue: backendValues.visible Layout.fillWidth: true } } Label { text: qsTr("Static Flags") tooltip: qsTr("This property defines the static flags that are used to evaluate how the node is rendered. Currently doesn't do anything but act as a placeholder for a future implementation.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.staticFlags Layout.fillWidth: true } } } } // NodeSection.qml Section { // Object3DSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Parent") tooltip: qsTr("This property holds the parent of the Object3D in a 3D scene.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Object3D" Layout.fillWidth: true backendValue: backendValues.parent } } Label { text: qsTr("Data") tooltip: qsTr("The data property allows you to freely mix Object3D children and resources in an object. If you assign a Object3D to the data list it becomes a child and if you assign any other object type, it is added as a resource.") } SecondColumnLayout { EditableListView { backendValue: backendValues.data model: backendValues.data.expressionAsList Layout.fillWidth: true typeFilter: "QObject" onAdd: function(value) { backendValues.data.idListAdd(value) } onRemove: function(idx) { backendValues.data.idListRemove(idx) } onReplace: function (idx, value) { backendValues.data.idListReplace(idx, value) } } } Label { text: qsTr("Resources") tooltip: qsTr("The children property contains the list of visual children of this object. The resources property contains non-visual resources that you want to reference by name.") } SecondColumnLayout { EditableListView { backendValue: backendValues.resources model: backendValues.resources.expressionAsList Layout.fillWidth: true typeFilter: "QObject" onAdd: function(value) { backendValues.resources.idListAdd(value) } onRemove: function(idx) { backendValues.resources.idListRemove(idx) } onReplace: function (idx, value) { backendValues.resources.idListReplace(idx, value) } } } Label { text: qsTr("Children") tooltip: qsTr("The children property contains the list of visual children of this object. The resources property contains non-visual resources that you want to reference by name.") } SecondColumnLayout { EditableListView { backendValue: backendValues.children model: backendValues.children.expressionAsList Layout.fillWidth: true typeFilter: "QtQuick3D.Object3D" onAdd: function(value) { backendValues.children.idListAdd(value) } onRemove: function(idx) { backendValues.children.idListRemove(idx) } onReplace: function (idx, value) { backendValues.children.idListReplace(idx, value) } } } Label { text: qsTr("States") tooltip: qsTr("This property holds the list of possible states for this object. To change the state of this object, set the state property to one of these states, or set the state property to an empty string to revert the object to its default state.") } SecondColumnLayout { EditableListView { backendValue: backendValues.states model: backendValues.states.expressionAsList Layout.fillWidth: true typeFilter: "QtQuickState" onAdd: function(value) { backendValues.states.idListAdd(value) } onRemove: function(idx) { backendValues.states.idListRemove(idx) } onReplace: function (idx, value) { backendValues.states.idListReplace(idx, value) } } } Label { text: qsTr("Transitions") tooltip: qsTr("This property holds the list of transitions for this object. These define the transitions to be applied to the object whenever it changes its state.") } SecondColumnLayout { EditableListView { backendValue: backendValues.transitions model: backendValues.transitions.expressionAsList Layout.fillWidth: true typeFilter: "QtQuickTransition" onAdd: function(value) { backendValues.transitions.idListAdd(value) } onRemove: function(idx) { backendValues.transitions.idListRemove(idx) } onReplace: function (idx, value) { backendValues.transitions.idListReplace(idx, value) } } } Label { text: qsTr("State") tooltip: qsTr("This property holds the list of possible states for this object. To change the state of this object, set the state property to one of these states, or set the state property to an empty string to revert the object to its default state.") } SecondColumnLayout { LineEdit { backendValue: backendValues.state Layout.fillWidth: true showTranslateCheckBox: false } } } } // Object3DSection.qml Section { // OrthographicCameraSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Clip Near") tooltip: qsTr("This property defines the near clip plane of the OrthographicCamera's frustum. Geometry which is closer to the Camera than the near clip plane will not be visible.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.clipNear Layout.fillWidth: true } } Label { text: qsTr("Clip Far") tooltip: qsTr("This property defines the far clip plane of the OrthographicCamera's frustum. Geometry which is further away from the Camera than the far clip plane will not be visible.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.clipFar Layout.fillWidth: true } } Label { text: qsTr("Horizontal Magnification") tooltip: qsTr("This property holds the horizontal magnification of the OrthographicCamera's frustum.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.horizontalMagnification Layout.fillWidth: true } } Label { text: qsTr("Vertical Magnification") tooltip: qsTr("This property holds the vertical magnification of the OrthographicCamera's frustum.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.verticalMagnification Layout.fillWidth: true } } } } // OrthographicCameraSection.qml Section { // PerspectiveCameraSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Clip Near") tooltip: qsTr("This property defines the near clip plane of the PerspectiveCamera's frustum. Geometry which is closer to the Camera than the near clip plane will not be visible.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.clipNear Layout.fillWidth: true } } Label { text: qsTr("Clip Far") tooltip: qsTr("This property defines the far clip plane of the PerspectiveCamera's frustum. Geometry which is further away from the Camera than the far clip plane will not be visible.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.clipFar Layout.fillWidth: true } } Label { text: qsTr("Field Of View") tooltip: qsTr("This property holds the field of view of the camera in degrees. This can be either the vertical or horizontal field of view depending on whether the fieldOfViewOrientation property is set to PerspectiveCamera.Horizontal.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.fieldOfView Layout.fillWidth: true } } Label { text: qsTr("Field Of View Orientation") tooltip: qsTr("This property determines if the field of view property reflects the vertical or the horizontal field of view.") } SecondColumnLayout { ComboBox { scope: "PerspectiveCamera" model: ["Vertical", "Horizontal"] backendValue: backendValues.fieldOfViewOrientation Layout.fillWidth: true } } } } // PerspectiveCameraSection.qml Section { // PointLightSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Constant Fade") tooltip: qsTr("This property is constant factor of the attenuation term of the light. The default value is 1.0.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.constantFade Layout.fillWidth: true } } Label { text: qsTr("Linear Fade") tooltip: qsTr("This property increases the rate at which the lighting effect dims the light in proportion to the distance to the light. The default value is 0.0, meaning the light doesn't have linear fade. The value used here is multiplied by 0.01 before being used to calculate light attenuation.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.linearFade Layout.fillWidth: true } } Label { text: qsTr("Quadratic Fade") tooltip: qsTr("This property increases the rate at which the lighting effect dims the light in proportion to the inverse square law. The default value is 1.0 meaning the point light fade exactly follows the inverse square law i.e. when distance to an object doubles the light intensity decreases to 1/4th. The value used here is multiplied by 0.0001 before being used to calculate light attenuation.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.quadraticFade Layout.fillWidth: true } } } } // PointLightSection.qml Section { // PrincipledMaterialSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Lighting") tooltip: qsTr("This property defines which lighting method is used when generating this material.") } SecondColumnLayout { ComboBox { scope: "PrincipledMaterial" model: ["NoLighting", "FragmentLighting"] backendValue: backendValues.lighting Layout.fillWidth: true } } Label { text: qsTr("Blend Mode") tooltip: qsTr("This property determines how the colors of the model rendered blends with those behind it.") } SecondColumnLayout { ComboBox { scope: "PrincipledMaterial" model: ["SourceOver", "Screen", "Multiply"] backendValue: backendValues.blendMode Layout.fillWidth: true } } Label { text: qsTr("Base Color") tooltip: qsTr("This property sets the base color for the material. Depending on the type of material specified (metal or dielectric) the diffuse and specular channels will be set appropriately. For example, a dielectric material will have a diffuse color equal to the base color, while it's specular color, depending on the specular amount, will have a bright specular color. For metals the diffuse and specular channels will be mixed from the base color and have a dark diffuse channel and a specular channel close to the base color.") } SecondColumnLayout { ColorEditor { caption: qsTr("baseColor") backendValue: backendValues.baseColor supportGradient: false Layout.fillWidth: true } } Label { text: qsTr("Base Color Map") tooltip: qsTr("This property defines the texture used to set the base color of the material.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.baseColorMap } } Label { text: qsTr("Metalness") tooltip: qsTr("The metalness property defines the \e metalness of the the material. The value is normalized, where 0.0 means the material is a \e dielectric (non-metallic) material and a value of 1.0 means the material is a metal.") } SecondColumnLayout { SpinBox { maximumValue: 1.0 minimumValue: 0.0 realDragRange: 5000 decimals: 0 backendValue: backendValues.metalness Layout.fillWidth: true } } Label { text: qsTr("Metalness Map") tooltip: qsTr("This property sets a Texture to be used to set the metalness amount for the different parts of the material.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.metalnessMap } } Label { text: qsTr("Metalness Channel") tooltip: qsTr("This property defines the texture channel used to read the metalness value from metalnessMap. The default value is Material.B.") } SecondColumnLayout { ComboBox { scope: "PrincipledMaterial" model: ["R", "G", "B", "A"] backendValue: backendValues.metalnessChannel Layout.fillWidth: true } } Label { text: qsTr("Specular Amount") tooltip: qsTr("This property controls the strength of specularity (highlights and reflections).") } SecondColumnLayout { SpinBox { maximumValue: 1.0 minimumValue: 0.0 realDragRange: 5000 decimals: 0 backendValue: backendValues.specularAmount Layout.fillWidth: true } } Label { text: qsTr("Specular Map") tooltip: qsTr("The property defines a RGB Texture to modulate the amount and the color of specularity across the surface of the material. These values are multiplied by the specularAmount.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.specularMap } } Label { text: qsTr("Specular Tint") tooltip: qsTr("This property defines how much of the base color contributes to the specular reflections.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.specularTint Layout.fillWidth: true } } Label { text: qsTr("Roughness") tooltip: qsTr("This property controls the size of the specular highlight generated from lights, and the clarity of reflections in general. Larger values increase the roughness, softening specular highlights and blurring reflections. The range is [0.0, 1.0]. The default value is 0.") } SecondColumnLayout { SpinBox { maximumValue: 1.0 minimumValue: 0.0 realDragRange: 5000 decimals: 0 backendValue: backendValues.roughness Layout.fillWidth: true } } Label { text: qsTr("Roughness Map") tooltip: qsTr("This property defines a Texture to control the specular roughness of the material.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.roughnessMap } } Label { text: qsTr("Roughness Channel") tooltip: qsTr("This property defines the texture channel used to read the roughness value from roughnessMap. The default value is Material.G.") } SecondColumnLayout { ComboBox { scope: "PrincipledMaterial" model: ["R", "G", "B", "A"] backendValue: backendValues.roughnessChannel Layout.fillWidth: true } } Label { text: qsTr("Emissive Factor") tooltip: qsTr("This property determines the color of self-illumination for this material. If an emissive map is set, the x, y, and z components are used as factors (multipliers) for the R, G and B channels of the texture, respectively. The default value is (0, 0, 0) and it means no emissive contribution at all.") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.emissiveFactor_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.emissiveFactor_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.emissiveFactor_z Layout.fillWidth: true Layout.minimumWidth: 0 } } } Label { text: qsTr("Emissive Map") tooltip: qsTr("This property sets a RGB Texture to be used to specify the intensity of the emissive color.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.emissiveMap } } Label { text: qsTr("Opacity") tooltip: qsTr("This property drops the opacity of just this material, separate from the model.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.opacity Layout.fillWidth: true } } Label { text: qsTr("Opacity Map") tooltip: qsTr("This property defines a Texture used to control the opacity differently for different parts of the material.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.opacityMap } } Label { text: qsTr("Opacity Channel") tooltip: qsTr("This property defines the texture channel used to read the opacity value from opacityMap. The default value is Material.A.") } SecondColumnLayout { ComboBox { scope: "PrincipledMaterial" model: ["R", "G", "B", "A"] backendValue: backendValues.opacityChannel Layout.fillWidth: true } } Label { text: qsTr("Normal Map") tooltip: qsTr("This property defines an RGB image used to simulate fine geometry displacement across the surface of the material. The RGB channels indicate XYZ normal deviations.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.normalMap } } Label { text: qsTr("Normal Strength") tooltip: qsTr("This property controls the amount of simulated displacement for the normalMap.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.normalStrength Layout.fillWidth: true } } Label { text: qsTr("Specular Reflection Map") tooltip: qsTr("This property sets a Texture used for specular highlights on the material.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.specularReflectionMap } } Label { text: qsTr("Occlusion Map") tooltip: qsTr("This property defines a texture used to determine how much indirect light the different areas of the material should receive. Values are expected to be linear from 0.0 to 1.0, where 0.0 means no indirect lighting and 1.0 means the effect of the indirect lighting is left unchanged.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.occlusionMap } } Label { text: qsTr("Occlusion Channel") tooltip: qsTr("This property defines the texture channel used to read the occlusion value from occlusionMap. The default value is Material.R.") } SecondColumnLayout { ComboBox { scope: "PrincipledMaterial" model: ["R", "G", "B", "A"] backendValue: backendValues.occlusionChannel Layout.fillWidth: true } } Label { text: qsTr("Occlusion Amount") tooltip: qsTr("This property contains the factor used to modify the values from the occlusionMap texture. The value should be between 0.0 to 1.0. The default is 1.0") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.occlusionAmount Layout.fillWidth: true } } Label { text: qsTr("Alpha Mode") tooltip: qsTr("This property specifies how the alpha color value from baseColor and the alpha channel of a \lbase color map are used.") } SecondColumnLayout { ComboBox { scope: "PrincipledMaterial" model: ["Default", "Mask", "Blend", "Opaque"] backendValue: backendValues.alphaMode Layout.fillWidth: true } } Label { text: qsTr("Alpha Cutoff") tooltip: qsTr("The alphaCutoff property can be used to specify the cutoff value when using the \lMask alphaMode. Fragments where the alpha value falls below the threshold will be rendered fully transparent (\c") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.alphaCutoff Layout.fillWidth: true } } Label { text: qsTr("Point Size") tooltip: qsTr("This property determines the size of the points rendered, when the geometry is using a primitive type of points. The default value is 1.0. This property is not relevant when rendering other types of geometry, such as, triangle meshes.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.pointSize Layout.fillWidth: true } } Label { text: qsTr("Line Width") tooltip: qsTr("This property determines the width of the lines rendered, when the geometry is using a primitive type of lines or line strips. The default value is 1.0. This property is not relevant when rendering other types of geometry, such as, triangle meshes.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.lineWidth Layout.fillWidth: true } } Label { text: qsTr("Height Map") tooltip: qsTr("This property defines a texture used to determine the height the texture will be displaced when rendered through the use of Parallax Mapping. Values are expected to be linear from 0.0 to 1.0, where 0.0 means no displacement and 1.0 means means maximum displacement.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.heightMap } } Label { text: qsTr("Height Channel") tooltip: qsTr("This property defines the texture channel used to read the height value from heightMap. The default value is Material.R.") } SecondColumnLayout { ComboBox { scope: "PrincipledMaterial" model: ["R", "G", "B", "A"] backendValue: backendValues.heightChannel Layout.fillWidth: true } } Label { text: qsTr("Height Amount") tooltip: qsTr("This property contains the factor used to modify the values from the heightMap texture. The value should be between 0.0 to 1.0. The default value is 0.0 which means that height displacement will be disabled, even if a height map set.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.heightAmount Layout.fillWidth: true } } Label { text: qsTr("Min Height Map Samples") tooltip: qsTr("This property defines the minimum number of samples used for performing Parallex Occlusion Mapping using the heightMap. The minHeightMapSamples value is the number of samples of the heightMap are used when looking directly at a surface (when the camera view is perpendicular to the fragment). The default value is 8.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.minHeightMapSamples Layout.fillWidth: true } } Label { text: qsTr("Max Height Map Samples") tooltip: qsTr("This property defines the maximum number of samples used for performing Parallex Occlusion Mapping using the heightMap. The maxHeightMapSamples value is the number of samples of the heightMap are used when looking parallel to a surface. The default value is 32.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.maxHeightMapSamples Layout.fillWidth: true } } } } // PrincipledMaterialSection.qml Section { // QuaternionAnimationSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("From") tooltip: qsTr("This property holds the starting value for the animation.") } SecondColumnLayout { // unknown type: QQuaternion } Label { text: qsTr("To") tooltip: qsTr("This property holds the ending value for the animation.") } SecondColumnLayout { // unknown type: QQuaternion } Label { text: qsTr("Type") tooltip: qsTr("This property defines the interpolation mode.") } SecondColumnLayout { ComboBox { scope: "QuaternionAnimation" model: ["Slerp", "Nlerp"] backendValue: backendValues.type Layout.fillWidth: true } } Label { text: qsTr("From X Rotation") tooltip: qsTr("This property holds the starting value of the animation for the X axis as an euler angle in degrees.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.fromXRotation Layout.fillWidth: true } } Label { text: qsTr("From Y Rotation") tooltip: qsTr("This property holds the starting value of the animation for the Y axis as an euler angle in degrees.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.fromYRotation Layout.fillWidth: true } } Label { text: qsTr("From Z Rotation") tooltip: qsTr("This property holds the starting value of the animation for the Z axis as an euler angle in degrees.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.fromZRotation Layout.fillWidth: true } } Label { text: qsTr("To X Rotation") tooltip: qsTr("This property holds the ending value of the animation for the X axis as an euler angle in degrees.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.toXRotation Layout.fillWidth: true } } Label { text: qsTr("To Y Rotation") tooltip: qsTr("This property holds the ending value of the animation for the Y axis as an euler angle in degrees.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.toYRotation Layout.fillWidth: true } } Label { text: qsTr("To Z Rotation") tooltip: qsTr("This property holds the ending value of the animation for the Z axis as an euler angle in degrees.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.toZRotation Layout.fillWidth: true } } } } // QuaternionAnimationSection.qml Section { // Repeater3DSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Model") tooltip: qsTr("The model providing data for the repeater.") } SecondColumnLayout { LineEdit { backendValue: backendValues.model Layout.fillWidth: true showTranslateCheckBox: false } } Label { text: qsTr("Delegate") tooltip: qsTr("The delegate provides a template defining each object instantiated by the repeater.") } SecondColumnLayout { IdComboBox { typeFilter: "QQmlComponent" Layout.fillWidth: true backendValue: backendValues.delegate } } } } // Repeater3DSection.qml Section { // SceneEnvironmentSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Antialiasing Mode") tooltip: qsTr("This property controls the antialiasing mode that is applied when rendering the scene.") } SecondColumnLayout { ComboBox { scope: "SceneEnvironment" model: ["NoAA", "SSAA", "MSAA", "ProgressiveAA"] backendValue: backendValues.antialiasingMode Layout.fillWidth: true } } Label { text: qsTr("Antialiasing Quality") tooltip: qsTr("This property sets the level of antialiasing applied to the scene. Behavior depends on used antialiasingMode. With antialiasingMode property set to NoAA this property doesn't have an effect.") } SecondColumnLayout { ComboBox { scope: "SceneEnvironment" model: ["Medium", "High", "VeryHigh"] backendValue: backendValues.antialiasingQuality Layout.fillWidth: true } } Label { text: qsTr("Temporal AA Enabled") tooltip: qsTr("When this property is enabled temporal antialiasing will be used.") } SecondColumnLayout { CheckBox { id: temporalAAEnabledCheckBox text: backendValues.temporalAAEnabled.valueToString backendValue: backendValues.temporalAAEnabled Layout.fillWidth: true } } Label { text: qsTr("Temporal AA Strength") tooltip: qsTr("This property modifies the amount of temporal movement (antialiasing). This has an effect only when temporalAAEnabled property is true.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.temporalAAStrength Layout.fillWidth: true } } Label { text: qsTr("Background Mode") tooltip: qsTr("This property controls if and how the background of the scene should be cleared.") } SecondColumnLayout { ComboBox { scope: "SceneEnvironment" model: ["Transparent", "Unspecified", "Color", "SkyBox"] backendValue: backendValues.backgroundMode Layout.fillWidth: true } } Label { text: qsTr("Clear Color") tooltip: qsTr("This property defines which color will be used to clear the viewport when using SceneEnvironment.Color for the backgroundMode property.") } SecondColumnLayout { ColorEditor { caption: qsTr("clearColor") backendValue: backendValues.clearColor supportGradient: false Layout.fillWidth: true } } Label { text: qsTr("Depth Test Enabled") tooltip: qsTr("The default value is true. By default the renderer classifies the objects in the scene either as opaque or as semi-transparent. The objects (sub-meshes with the associated material) in the opaque list are rendered first, with depth testing and depth write enabled, providing optimal Z-culling for typical 3D objects that have no semi-transparent regions. The objects in the semi-transparent list are rendered with depth write disabled, although still with depth testing enabled (to test against the opaque objects), in back to front order (sorted based on their center point's distance from the camera). This allows correct blending ("see through") for 3D objects that involve semi-transparent regions on their surface, either due to the \lnode opacity or due to some color or texture map in the material.") } SecondColumnLayout { CheckBox { id: depthTestEnabledCheckBox text: backendValues.depthTestEnabled.valueToString backendValue: backendValues.depthTestEnabled Layout.fillWidth: true } } Label { text: qsTr("Depth Pre Pass Enabled") tooltip: qsTr("When enabled, the renderer performs a Z-prepass for opaque objects, meaning it renders them with a simple shader and color write disabled in order to get the depth buffer pre-filled before issuing draw calls for the main rendering passes.") } SecondColumnLayout { CheckBox { id: depthPrePassEnabledCheckBox text: backendValues.depthPrePassEnabled.valueToString backendValue: backendValues.depthPrePassEnabled Layout.fillWidth: true } } Label { text: qsTr("Ao Strength") tooltip: qsTr("This property defines the amount of ambient occulusion applied. Ambient occulusion is a form of approximated global illumination which causes non-directional self-shadowing where objects are close together. A value of 100 causes full darkness shadows; lower values cause the shadowing to appear lighter. A value of 0 disables ambient occlusion entirely, improving performance at a cost to the visual realism of 3D objects rendered in the scene.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.aoStrength Layout.fillWidth: true } } Label { text: qsTr("Ao Distance") tooltip: qsTr("This property defines roughly how far ambient occlusion shadows spread away from objects. Greater distances cause increasing impact to performance.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.aoDistance Layout.fillWidth: true } } Label { text: qsTr("Ao Softness") tooltip: qsTr("This property how smooth the edges of the ambient occlusion shading are.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.aoSoftness Layout.fillWidth: true } } Label { text: qsTr("Ao Dither") tooltip: qsTr("When this property is enabled it scatters the edges of the ambient occlusion shadow bands to improve smoothness (at the risk of sometimes producing obvious patterned artifacts).") } SecondColumnLayout { CheckBox { id: aoDitherCheckBox text: backendValues.aoDither.valueToString backendValue: backendValues.aoDither Layout.fillWidth: true } } Label { text: qsTr("Ao Sample Rate") tooltip: qsTr("This property defines ambient occlusion quality (more shades of gray) at the expense of performance.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.aoSampleRate Layout.fillWidth: true } } Label { text: qsTr("Ao Bias") tooltip: qsTr("This property defines a cutoff distance preventing objects from exhibiting ambient occlusion at close distances. Higher values increase the distance required between objects before ambient occlusion is seen.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.aoBias Layout.fillWidth: true } } Label { text: qsTr("Light Probe") tooltip: qsTr("This property defines an image used to light the scene, either instead of, or in addition to standard lights.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.lightProbe } } Label { text: qsTr("Probe Exposure") tooltip: qsTr("This property modifies the amount of light emitted by the light probe.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.probeExposure Layout.fillWidth: true } } Label { text: qsTr("Probe Horizon") tooltip: qsTr("This property when defined with increasing values adds darkness (black) to the bottom half of the environment, forcing the lighting to come predominantly from the top of the image (and removing specific reflections from the lower half). This property is useful for accounting for a ground plane that would have the effect of obscuring the reflection of the light probe from the ground. This is necessary because light probe contributions come directily from the image without consideration for the content of the scene.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.probeHorizon Layout.fillWidth: true } } Label { text: qsTr("Probe Orientation") tooltip: qsTr("This property when defines the orientation of the light probe. Orientation is defined in terms of euler angles in degrees over the x, y, and z axes.") } SecondColumnLayout { RowLayout { spacing: 0 Label { text: qsTr("X") width: 100 color: StudioTheme.Values.theme3DAxisXColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.probeOrientation_x Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Y") width: 100 color: StudioTheme.Values.theme3DAxisYColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.probeOrientation_y Layout.fillWidth: true Layout.minimumWidth: 0 } } RowLayout { spacing: 0 Label { text: qsTr("Z") width: 100 color: StudioTheme.Values.theme3DAxisZColor } SpinBox { maximumValue: 9999999 minimumValue: -9999999 realDragRange: 5000 decimals: 2 backendValue: backendValues.probeOrientation_z Layout.fillWidth: true Layout.minimumWidth: 0 } } } Label { text: qsTr("Tonemap Mode") tooltip: qsTr("This property defines how colors are tonemapped before rendering. All rendering in Qt Quick 3D is performed in linear color space and can in many cases lead to generating color values that are not displayable. The tonemapMode determines the technique that is used to remap colors into a displayable range.") } SecondColumnLayout { ComboBox { scope: "SceneEnvironment" model: ["TonemapModeNone", "TonemapModeLinear", "TonemapModeAces", "TonemapModeHejlDawson", "TonemapModeFilmic"] backendValue: backendValues.tonemapMode Layout.fillWidth: true } } Label { text: qsTr("Effects") tooltip: qsTr("This property contains a list of post-processing effects that will be applied to the entire viewport. The result of each effect is fed to the next so the order is significant.") } SecondColumnLayout { EditableListView { backendValue: backendValues.effects model: backendValues.effects.expressionAsList Layout.fillWidth: true typeFilter: "QtQuick3D.Effect" onAdd: function(value) { backendValues.effects.idListAdd(value) } onRemove: function(idx) { backendValues.effects.idListRemove(idx) } onReplace: function (idx, value) { backendValues.effects.idListReplace(idx, value) } } } } } // SceneEnvironmentSection.qml Section { // ShaderSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Target") tooltip: qsTr("") } SecondColumnLayout { LineEdit { backendValue: backendValues.target Layout.fillWidth: true showTranslateCheckBox: false } } Label { text: qsTr("Value") tooltip: qsTr("") } SecondColumnLayout { LineEdit { backendValue: backendValues.value Layout.fillWidth: true showTranslateCheckBox: false } } } } // ShaderSection.qml Section { // ShaderSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Format") tooltip: qsTr("") } SecondColumnLayout { ComboBox { scope: "Shader" model: ["Unknown", "RGBA8", "RGBA16F", "RGBA32F", "R8", "R16", "R16F", "R32F"] backendValue: backendValues.format Layout.fillWidth: true } } Label { text: qsTr("Texture Filter Operation") tooltip: qsTr("") } SecondColumnLayout { ComboBox { scope: "Shader" model: ["Unknown", "Nearest", "Linear"] backendValue: backendValues.textureFilterOperation Layout.fillWidth: true } } Label { text: qsTr("Texture Coord Operation") tooltip: qsTr("") } SecondColumnLayout { ComboBox { scope: "Shader" model: ["Unknown", "ClampToEdge", "MirroredRepeat", "Repeat"] backendValue: backendValues.textureCoordOperation Layout.fillWidth: true } } Label { text: qsTr("Size Multiplier") tooltip: qsTr("") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.sizeMultiplier Layout.fillWidth: true } } Label { text: qsTr("Buffer Flags") tooltip: qsTr("") } SecondColumnLayout { ComboBox { scope: "Shader" model: ["None", "SceneLifetime"] backendValue: backendValues.bufferFlags Layout.fillWidth: true } } Label { text: qsTr("Name") tooltip: qsTr("") } SecondColumnLayout { LineEdit { backendValue: backendValues.name Layout.fillWidth: true showTranslateCheckBox: false } } } } // ShaderSection.qml Section { // ShaderSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Buffer") tooltip: qsTr("") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Buffer" Layout.fillWidth: true backendValue: backendValues.buffer } } Label { text: qsTr("Sampler") tooltip: qsTr("") } SecondColumnLayout { LineEdit { backendValue: backendValues.sampler Layout.fillWidth: true showTranslateCheckBox: false } } } } // ShaderSection.qml Section { // ShaderSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Commands") tooltip: qsTr("") } SecondColumnLayout { EditableListView { backendValue: backendValues.commands model: backendValues.commands.expressionAsList Layout.fillWidth: true typeFilter: "QtQuick3D.Command" onAdd: function(value) { backendValues.commands.idListAdd(value) } onRemove: function(idx) { backendValues.commands.idListRemove(idx) } onReplace: function (idx, value) { backendValues.commands.idListReplace(idx, value) } } } Label { text: qsTr("Output") tooltip: qsTr("") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Buffer" Layout.fillWidth: true backendValue: backendValues.output } } Label { text: qsTr("Shaders") tooltip: qsTr("") } SecondColumnLayout { EditableListView { backendValue: backendValues.shaders model: backendValues.shaders.expressionAsList Layout.fillWidth: true typeFilter: "QtQuick3D.Shader" onAdd: function(value) { backendValues.shaders.idListAdd(value) } onRemove: function(idx) { backendValues.shaders.idListRemove(idx) } onReplace: function (idx, value) { backendValues.shaders.idListReplace(idx, value) } } } } } // ShaderSection.qml Section { // ShaderSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Shader") tooltip: qsTr("Specifies the name of the shader source file. For details on how to write shader code, see the Effect documentation.") } SecondColumnLayout { UrlChooser { backendValue: backendValues.shader filter: "*.*" } } Label { text: qsTr("Stage") tooltip: qsTr("Specifies the stage of the rendering pipeline when the shader code will be executed. The default is Shader.Fragment") } SecondColumnLayout { ComboBox { scope: "Shader" model: ["Vertex", "Fragment"] backendValue: backendValues.stage Layout.fillWidth: true } } } } // ShaderSection.qml Section { // ShaderSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Texture") tooltip: qsTr("") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Texture" Layout.fillWidth: true backendValue: backendValues.texture } } Label { text: qsTr("Enabled") tooltip: qsTr("") } SecondColumnLayout { CheckBox { id: enabledCheckBox text: backendValues.enabled.valueToString backendValue: backendValues.enabled Layout.fillWidth: true } } } } // ShaderSection.qml Section { // SpotLightSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Constant Fade") tooltip: qsTr("This property is constant factor of the attenuation term of the light. The default value is 1.0.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.constantFade Layout.fillWidth: true } } Label { text: qsTr("Linear Fade") tooltip: qsTr("This property increases the rate at which the lighting effect dims the light in proportion to the distance to the light. The default value is 0.0, which means the light doesn't have linear fade. The value used here is multiplied by 0.01 before being used to calculate light attenuation.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.linearFade Layout.fillWidth: true } } Label { text: qsTr("Quadratic Fade") tooltip: qsTr("This property increases the rate at which the lighting effect dims the light in proportion to the inverse square law. The default value is 1.0, which means the spot light fade exactly follows the inverse square law, i.e. when distance to an object doubles the light intensity decreases to 1/4th. The value used here is multiplied by 0.0001 before being used to calculate light attenuation.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.quadraticFade Layout.fillWidth: true } } Label { text: qsTr("Cone Angle") tooltip: qsTr("This property defines the cut-off angle (from edge to edge) beyond which the light doesn't affect the scene. Defined in degrees between 0 and 180. The default value is 40.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.coneAngle Layout.fillWidth: true } } Label { text: qsTr("Inner Cone Angle") tooltip: qsTr("This property defines the angle (from edge to edge) at which the light intensity starts to gradually diminish as it approaches coneAngle, it'll behave as if it had the same value as ") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.innerConeAngle Layout.fillWidth: true } } } } // SpotLightSection.qml Section { // TextureSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Source") tooltip: qsTr("This property holds the location of an image or texture file containing the data used by the texture.") } SecondColumnLayout { UrlChooser { backendValue: backendValues.source filter: "*.*" } } Label { text: qsTr("Source Item") tooltip: qsTr("This property defines a Item to be used as the source of the texture. Using this property allows any 2D Qt Quick content to be used as a texture source by rendering that item as an offscreen layer.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuickItem" Layout.fillWidth: true backendValue: backendValues.sourceItem } } Label { text: qsTr("Texture Data") tooltip: qsTr("This property holds a reference to a TextureData component which defines the contents and properties of raw texture data.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.TextureData" Layout.fillWidth: true backendValue: backendValues.textureData } } Label { text: qsTr("Scale U") tooltip: qsTr("This property defines how to scale the U texture coordinate when mapping to a mesh's UV coordinates.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.scaleU Layout.fillWidth: true } } Label { text: qsTr("Scale V") tooltip: qsTr("This property defines how to scale the V texture coordinate when mapping to a mesh's UV coordinates.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.scaleV Layout.fillWidth: true } } Label { text: qsTr("Mapping Mode") tooltip: qsTr("This property defines which method of mapping to use when sampling this texture.") } SecondColumnLayout { ComboBox { scope: "Texture" model: ["UV", "Environment", "LightProbe"] backendValue: backendValues.mappingMode Layout.fillWidth: true } } Label { text: qsTr("Tiling Mode Horizontal") tooltip: qsTr("Controls how the texture is mapped when the U scaling value is greater than 1.") } SecondColumnLayout { ComboBox { scope: "Texture" model: ["ClampToEdge", "MirroredRepeat", "Repeat"] backendValue: backendValues.tilingModeHorizontal Layout.fillWidth: true } } Label { text: qsTr("Tiling Mode Vertical") tooltip: qsTr("This property controls how the texture is mapped when the V scaling value is greater than 1.") } SecondColumnLayout { ComboBox { scope: "Texture" model: ["ClampToEdge", "MirroredRepeat", "Repeat"] backendValue: backendValues.tilingModeVertical Layout.fillWidth: true } } Label { text: qsTr("Rotation UV") tooltip: qsTr("This property rotates the texture around the pivot point. This is defined using euler angles and for a positive value rotation is clockwise.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.rotationUV Layout.fillWidth: true } } Label { text: qsTr("Position U") tooltip: qsTr("This property offsets the U coordinate mapping from left to right.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.positionU Layout.fillWidth: true } } Label { text: qsTr("Position V") tooltip: qsTr("This property offsets the V coordinate mapping from bottom to top.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.positionV Layout.fillWidth: true } } Label { text: qsTr("Pivot U") tooltip: qsTr("This property sets the pivot U position which is used when applying a \lrotationUV.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.pivotU Layout.fillWidth: true } } Label { text: qsTr("Pivot V") tooltip: qsTr("This property sets the pivot V position which is used when applying a \lrotationUV.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.pivotV Layout.fillWidth: true } } Label { text: qsTr("Flip U") tooltip: qsTr("This property sets the use of the horizontally flipped texture coordinates.") } SecondColumnLayout { CheckBox { id: flipUCheckBox text: backendValues.flipU.valueToString backendValue: backendValues.flipU Layout.fillWidth: true } } Label { text: qsTr("Flip V") tooltip: qsTr("This property sets the use of the vertically flipped texture coordinates.") } SecondColumnLayout { CheckBox { id: flipVCheckBox text: backendValues.flipV.valueToString backendValue: backendValues.flipV Layout.fillWidth: true } } Label { text: qsTr("Index UV") tooltip: qsTr("This property sets the UV coordinate index used by this texture. Since QtQuick3D supports 2 UV sets(0 or 1) for now, the value will be saturated to the range.") } SecondColumnLayout { SpinBox { maximumValue: 999999 minimumValue: -999999 realDragRange: 5000 decimals: 0 backendValue: backendValues.indexUV Layout.fillWidth: true } } Label { text: qsTr("Mag Filter") tooltip: qsTr("This property determines how the texture is sampled when a texel covers more than one pixel.") } SecondColumnLayout { ComboBox { scope: "Texture" model: ["None", "Nearest", "Linear"] backendValue: backendValues.magFilter Layout.fillWidth: true } } Label { text: qsTr("Min Filter") tooltip: qsTr("This property determines how the texture is sampled when a texel covers more than one pixel.") } SecondColumnLayout { ComboBox { scope: "Texture" model: ["None", "Nearest", "Linear"] backendValue: backendValues.minFilter Layout.fillWidth: true } } Label { text: qsTr("Mip Filter") tooltip: qsTr("This property determines how the texture mipmaps are sampled when a texel covers less than one pixel.") } SecondColumnLayout { ComboBox { scope: "Texture" model: ["None", "Nearest", "Linear"] backendValue: backendValues.mipFilter Layout.fillWidth: true } } Label { text: qsTr("Generate Mipmaps") tooltip: qsTr("This property determines if mipmaps are generated for textures that do not provide mipmap levels themselves. Using mipmaps along with mip filtering gives better visual quality when viewing textures at a distance compared rendering without them, but it may come at a performance cost (both when initializing the image and during rendering).") } SecondColumnLayout { CheckBox { id: generateMipmapsCheckBox text: backendValues.generateMipmaps.valueToString backendValue: backendValues.generateMipmaps Layout.fillWidth: true } } Label { text: qsTr("Auto Orientation") tooltip: qsTr("This property determines if a texture transformation, such as flipping the V texture coordinate, is applied automatically for textures where this is typically relevant.") } SecondColumnLayout { CheckBox { id: autoOrientationCheckBox text: backendValues.autoOrientation.valueToString backendValue: backendValues.autoOrientation Layout.fillWidth: true } } } } // TextureSection.qml Section { // View3DSection.qml caption: qsTr("") width: parent.width SectionLayout { Label { text: qsTr("Data") tooltip: qsTr("") } SecondColumnLayout { EditableListView { backendValue: backendValues.data model: backendValues.data.expressionAsList Layout.fillWidth: true typeFilter: "QObject" onAdd: function(value) { backendValues.data.idListAdd(value) } onRemove: function(idx) { backendValues.data.idListRemove(idx) } onReplace: function (idx, value) { backendValues.data.idListReplace(idx, value) } } } Label { text: qsTr("Camera") tooltip: qsTr("This property specifies which Camera is used to render the scene. If this property is not set, then the first enabled camera in the scene will be used.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Camera" Layout.fillWidth: true backendValue: backendValues.camera } } Label { text: qsTr("Environment") tooltip: qsTr("This property specifies the SceneEnvironment used to render the scene.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.SceneEnvironment" Layout.fillWidth: true backendValue: backendValues.environment } } Label { text: qsTr("Scene") tooltip: qsTr("Holds the root Node of the View3D's scene.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Node" Layout.fillWidth: true backendValue: backendValues.scene } } Label { text: qsTr("Import Scene") tooltip: qsTr("This property defines the reference node of the scene to render to the viewport. The node does not have to be a child of the View3D. This referenced node becomes a sibling with child nodes of View3D, if there are any.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3D.Node" Layout.fillWidth: true backendValue: backendValues.importScene } } Label { text: qsTr("Render Mode") tooltip: qsTr("This property determines how the View3D is combined with the other parts of the Qt Quick scene.") } SecondColumnLayout { ComboBox { scope: "View3D" model: ["Offscreen", "Underlay", "Overlay", "Inline"] backendValue: backendValues.renderMode Layout.fillWidth: true } } Label { text: qsTr("Render Stats") tooltip: qsTr("This property provides statistics about the rendering of a frame, such as fps, frameTime, renderTime, syncTime, and maxFrameTime.") } SecondColumnLayout { IdComboBox { typeFilter: "QtQuick3DRenderStats" Layout.fillWidth: true backendValue: backendValues.renderStats } } } } // View3DSection.qml