Revision control
Copy as Markdown
// Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import Qt3D.Core 2.0
import Qt3D.Render 2.9
import Qt3D.Input 2.0
import Qt3D.Extras 2.9
import QtQuick 2.0 as QQ2
Entity {
id: sceneRoot
Camera {
id: camera
projectionType: CameraLens.PerspectiveProjection
fieldOfView: 45
aspectRatio: 16/9
nearPlane : 0.1
farPlane : 1000.0
position: Qt.vector3d( 0.0, 0.0, 20.0 )
upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )
}
OrbitCameraController { camera: camera }
Entity {
id: headlight
components: [
DirectionalLight {
color: Qt.rgba(0.8, 0.8, 0.8, 1.0)
worldDirection: camera.viewVector
}
]
}
RenderSettings {
id : external_forward_renderer
activeFrameGraph : ForwardRenderer {
camera: camera
clearColor: "white"
}
}
// Event Source will be set by the Qt3DQuickWindow
InputSettings { id: inputSettings }
components: [external_forward_renderer, inputSettings]
Entity {
components: [
Transform {
id: transform
}
]
Entity {
components: [
CylinderMesh {
id: mesh
radius: 1
length: 3
rings: 2
slices: sliceValues[lod.currentIndex]
property var sliceValues: [20, 10, 6, 4]
},
Transform {
scale: 1.5
translation: Qt.vector3d(0, 0, 0)
rotation: fromAxisAndAngle(Qt.vector3d(1, 0, 0), 45)
},
PhongMaterial {
id: material
diffuse: "lightgreen"
},
LevelOfDetail {
id: lod
camera: camera
thresholds: [1000, 600, 300, 180]
thresholdType: LevelOfDetail.ProjectedScreenPixelSizeThreshold
volumeOverride: lod.createBoundingSphere(Qt.vector3d(0, 0, 0), 2.0)
}
]
}
}
Entity {
components: [
Transform {
translation: transform.translation
}
]
LevelOfDetailLoader {
id: lodLoader
components: [ Transform {
scale: .5
translation: Qt.vector3d(-8, 0, 0)
} ]
camera: camera
thresholds: [20, 35, 50, 65]
thresholdType: LevelOfDetail.DistanceToCameraThreshold
volumeOverride: lodLoader.createBoundingSphere(Qt.vector3d(0, 0, 0), -1)
sources: ["qrc:/SphereEntity.qml", "qrc:/CylinderEntity.qml", "qrc:/ConeEntity.qml", "qrc:/CuboidEntity.qml"]
}
}
Entity {
components: [
Transform {
translation: transform.translation
}
]
Entity {
components: [
Transform {
scale: .5
translation: Qt.vector3d(8, 0, 0)
},
LevelOfDetailSwitch {
camera: camera
thresholds: [20, 35, 50, 65]
thresholdType: LevelOfDetail.DistanceToCameraThreshold
}
]
SphereEntity {
enabled: false
}
CylinderEntity {
enabled: false
}
ConeEntity {
enabled: false
}
CuboidEntity {
enabled: false
}
}
}
QQ2.SequentialAnimation {
QQ2.Vector3dAnimation {
target: transform
properties: "translation"
from: Qt.vector3d(0, 0, 10)
to: Qt.vector3d(0, 0, -50)
duration: 2500
easing.type: QQ2.Easing.InOutQuad
}
QQ2.PropertyAnimation {
target: transform
properties: "translation"
from: Qt.vector3d(0, 0, -50)
to: Qt.vector3d(0, 0, 10)
duration: 2500
easing.type: QQ2.Easing.InOutQuad
}
loops: QQ2.Animation.Infinite
running: true
}
}