Revision control
Copy as Markdown
// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
import QtQuick3D
import QtQuick3D.Helpers
Item {
id: mainWindow
anchors.fill: parent
View3D {
id: view3D
anchors.fill: parent
camera: PerspectiveCamera {
position: Qt.vector3d(0, 100, 300)
}
environment: SceneEnvironment {
clearColor: "#000000"
antialiasingMode: AppSettings.antialiasingMode
antialiasingQuality: AppSettings.antialiasingQuality
backgroundMode: SceneEnvironment.SkyMaterial
skyMaterial: ProceduralSkyMaterial {}
oitMethod: SceneEnvironment.OITWeightedBlended
}
Node {
id: sceneRoot
Model {
id: pillar
source: "#Cylinder"
scale: Qt.vector3d(0.3, 100, 0.3)
position: Qt.vector3d(100, 0, 100)
materials: [
PrincipledMaterial {
id: pillarMaterial
normalMap: Texture {
source: "images/pillar_normal.png"
scaleU: 20.0
}
roughness: 0.2
}
]
}
Model {
id: pillar2
source: "#Cylinder"
scale: Qt.vector3d(0.3, 100, 0.3)
position: Qt.vector3d(-100, 0, 100)
materials: [
PrincipledMaterial {
id: pillarMaterial2
normalMap: Texture {
source: "images/pillar_normal.png"
scaleU: 20.0
}
roughness: 0.2
}
]
}
RandomInstancing {
id: randomInstancing
instanceCount: 80
position: InstanceRange {
from: Qt.vector3d(-200, -200, -200)
to: Qt.vector3d(200, 200, 200)
}
scale: InstanceRange {
from: Qt.vector3d(5, 5, 5)
to: Qt.vector3d(20, 20, 20)
proportional: true
}
rotation: InstanceRange {
from: Qt.vector3d(0, 0, 0)
to: Qt.vector3d(360, 360, 360)
}
color: InstanceRange {
from: "grey"
to: "white"
proportional: true
}
randomSeed: 1423
}
DirectionalLight {
position: Qt.vector3d(0, -300, 0)
eulerRotation: Qt.vector3d(-90, 0, 0)
brightness: 4
color: Qt.rgba(0.8, 0.8, 1.0, 1.0)
}
Node {
NumberAnimation on eulerRotation.y {
duration: 30000
from: 0
to: 360
loops: Animation.Infinite
running: true
}
PointLight {
id: pointLight
position: Qt.vector3d(0, 100, 300)
brightness: 1
ambientColor: Qt.rgba(0.5, 0.3, 0.1, 1.0)
SequentialAnimation {
loops: Animation.Infinite
running: true
NumberAnimation {
target: pointLight
property: "brightness"
to: 1
duration: 2000
easing.type: Easing.OutElastic
}
NumberAnimation {
target: pointLight
property: "brightness"
to: 2
duration: 6000
easing.type: Easing.InOutQuad
}
}
}
PointLight {
id: pointLight2
position: Qt.vector3d(100, 100, 300)
brightness: 1
ambientColor: Qt.rgba(0.5, 0.3, 0.1, 1.0)
SequentialAnimation {
loops: Animation.Infinite
running: true
NumberAnimation {
target: pointLight
property: "brightness"
to: 1
duration: 2000
easing.type: Easing.OutElastic
}
NumberAnimation {
target: pointLight
property: "brightness"
to: 2
duration: 6000
easing.type: Easing.InOutQuad
}
}
}
Model {
instancing: randomInstancing
source: "meshes/asteroid.mesh"
opacity: 0.5
materials: [
PrincipledMaterial {
baseColor: "#c0e0cc"
roughness: 0.1
cullMode: Material.NoCulling
}
]
}
}
}
}
Pane {
anchors.top: view3D.top
anchors.right: parent.right
Label {
id: debugViewToggleText
text: dbg.visible ? "Hide DebugView" : "Show DebugView"
anchors.right: parent.right
anchors.top: parent.top
MouseArea {
anchors.fill: parent
onClicked: dbg.visible = !dbg.visible
DebugView {
y: debugViewToggleText.height * 2
anchors.right: parent.right
source: view3D
id: dbg
visible: false
}
}
}
}
}