// Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only import QtQuick import QtQuick3D import QtQuick3D.Helpers import QtQuick.Controls import QtQuick.Layouts Window { width: 1280 height: 720 visible: true title: qsTr("Input in 3D") objectName: "root window" color: "green" Shortcut { sequence: StandardKey.Quit onActivated: Qt.quit() } // DebugView { // anchors.top: parent.top // anchors.left: parent.left // source: view3D // } View3D { id: view3D objectName: "Viewport3D" anchors.left: parent.left //anchors.leftMargin: 256 anchors.top: parent.top anchors.bottom: parent.bottom anchors.right: parent.right environment: SceneEnvironment { clearColor: "white" backgroundMode: SceneEnvironment.Color } PerspectiveCamera { z: 600 } DirectionalLight { } DirectionalLight { eulerRotation.y: -90 } Node { x: 0 z: 300 eulerRotation.y: 15 Model { objectName: "middle cube in middle stack" source: "#Cube" pickable: true materials: DefaultMaterial { diffuseMap: Texture { sourceItem: InputDebugger { objectName: "middle InputDebugger on middle stack of cubes" } } } } Model { objectName: "bottom cube in middle stack" y: -100 source: "#Cube" pickable: true materials: PrincipledMaterial { baseColorMap: Texture { sourceItem: InputDebugger { objectName: "bottom InputDebugger on middle stack of cubes" } } } } Model { objectName: "top cube in middle stack" y: 100 source: "#Cube" pickable: true materials: CustomMaterial { property TextureInput diffuse: TextureInput { texture: Texture { sourceItem: InputDebugger { objectName: "top InputDebugger on middle stack of cubes" } } } fragmentShader: "custom.frag" } } } Node { x: 200 z: 300 Model { source: "#Cube" pickable: true objectName: "middle cube in right stack" materials: DefaultMaterial { diffuseMap: Texture { sourceItem: InputDebugger { objectName: "lower-left InputDebugger, layer mapped onto right stack of cubes" layer.enabled: true layer.textureSize: Qt.size(512, 512) id: sharedItem x: 10; y: 400 } } } // eulerRotation.z: 30 // PropertyAnimation on eulerRotation.y { // from: 0 // to: 360 // duration: 15000 // running: true // loops: Animation.Infinite // } } Model { objectName: "bottom cube in right stack" y: -100 source: "#Cube" pickable: true materials: PrincipledMaterial { baseColorMap: Texture { sourceItem: sharedItem } } } Model { objectName: "top cube in right stack" y: 100 source: "#Cube" pickable: true materials: CustomMaterial { property TextureInput diffuse: TextureInput { texture: Texture { sourceItem: sharedItem } } fragmentShader: "custom.frag" } } } Model { objectName: "rotating cube" source: "#Cube" x: 50 z: 400 scale: Qt.vector3d(0.2, 0.2, 0.2) materials: DefaultMaterial { diffuseColor: "tomato" } pickable: true eulerRotation.z: 20 PropertyAnimation on eulerRotation.y { from: 0 to: 360 duration: 5000 running: true loops: Animation.Infinite } } // Node { // x: -512 // y: 256 // eulerRotation.y: 65 // InputDebugger { // objectName: "top-left rotated planar InputDebugger" // } // } } }