mirror of https://github.com/qt/qt3d.git
132 lines
3.0 KiB
QML
132 lines
3.0 KiB
QML
// 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.0
|
|
import Qt3D.Input 2.0
|
|
import Qt3D.Extras 2.0
|
|
|
|
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 )
|
|
}
|
|
|
|
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: [
|
|
DirectionalLight {
|
|
worldDirection: Qt.vector3d(0., 0., -1.0).normalized();
|
|
color: "white"
|
|
intensity: 1.
|
|
}
|
|
]
|
|
}
|
|
|
|
|
|
Entity {
|
|
id: mainEntity
|
|
objectName: "mainEntity"
|
|
|
|
ConeMesh {
|
|
id: coneMesh
|
|
length: 4
|
|
}
|
|
|
|
PhongMaterial {
|
|
id: coneMaterial
|
|
diffuse: "yellow"
|
|
}
|
|
|
|
Transform {
|
|
id: coneTransform
|
|
scale: 1.5
|
|
translation: Qt.vector3d(0, 2, 0)
|
|
}
|
|
|
|
components: [ coneMesh, coneMaterial, coneTransform ]
|
|
}
|
|
|
|
|
|
|
|
Entity {
|
|
id: draggerEntity
|
|
objectName: "draggerEntity"
|
|
property vector3d position: Qt.vector3d(0, 0, 0)
|
|
|
|
CylinderMesh {
|
|
id: mesh
|
|
radius: .5
|
|
length: 3
|
|
rings: 2
|
|
slices: 20
|
|
}
|
|
|
|
Transform {
|
|
id: transform
|
|
rotationZ: 90
|
|
translation: draggerEntity.position.plus(Qt.vector3d(0, -5, 0))
|
|
}
|
|
|
|
PhongMaterial {
|
|
id: material
|
|
diffuse: picker.pressed ? "lightgreen" : "green"
|
|
}
|
|
|
|
ObjectPicker {
|
|
id: picker
|
|
property double lastPos: 0
|
|
dragEnabled: true
|
|
onPressed: {
|
|
lastPos = pick.worldIntersection.x
|
|
}
|
|
onMoved: {
|
|
var x = draggerEntity.position.x + (pick.worldIntersection.x - lastPos)
|
|
if (x > 5) x = 5
|
|
if (x < -5) x = -5
|
|
draggerEntity.position.x = x
|
|
lastPos = pick.worldIntersection.x
|
|
coneMesh.bottomRadius = 1. + (x / 7.)
|
|
}
|
|
}
|
|
|
|
components: [ mesh, material, transform, picker ]
|
|
}
|
|
|
|
|
|
Entity {
|
|
id: obstructionEntity
|
|
|
|
components: [
|
|
CuboidMesh { },
|
|
PhongMaterial { diffuse: "blue" },
|
|
Transform {
|
|
scale: 2
|
|
translation: Qt.vector3d(4, -5, 0)
|
|
},
|
|
ObjectPicker { }
|
|
]
|
|
}
|
|
}
|