1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
// 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 { }
]
}
}
|