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
132
133
134
135
|
// Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import Qt3D.Core 2.0
import Qt3D.Render 2.0
import Qt3D.Input 2.0
import Qt3D.Extras 2.10
import QtQuick 2.5
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 }
RenderSettings {
id : external_forward_renderer
activeFrameGraph : ForwardRenderer {
camera: camera
clearColor: "lightgrey"
}
}
// Event Source will be set by the Qt3DQuickWindow
InputSettings { id: inputSettings }
components: [external_forward_renderer, inputSettings]
PlaneMesh {
id: mesh
}
SpriteGrid {
id: spriteGrid
rows: 2
columns: 6
texture: textureLoader
}
SpriteSheet {
id:spriteSheet
texture: textureLoader
SpriteItem { x: 0; y: 0; width: 250; height: 172 }
SpriteItem { x: 276; y: 0; width: 250; height: 172 }
SpriteItem { x: 550; y: 0; width: 250; height: 172 }
SpriteItem { x: 826; y: 0; width: 250; height: 172 }
SpriteItem { x: 1100; y: 0; width: 250; height: 172 }
SpriteItem { x: 1376; y: 0; width: 250; height: 172 }
SpriteItem { x: 0; y: 198; width: 250; height: 172 }
SpriteItem { x: 276; y: 198; width: 250; height: 172 }
SpriteItem { x: 550; y: 198; width: 250; height: 172 }
SpriteItem { x: 826; y: 198; width: 250; height: 172 }
SpriteItem { x: 1100; y: 198; width: 250; height: 172 }
SpriteItem { x: 1376; y: 198; width: 250; height: 172 }
}
Transform {
id: transform1
scale: 8
rotation: fromAxisAndAngle(Qt.vector3d(1, 0, 0), 45)
translation: Qt.vector3d(-6, 0, 0)
}
TextureMaterial {
id: material1
texture: TextureLoader {
id: textureLoader
source: "spritegrid.png"
mirrored: false
}
textureTransform: spriteGrid.textureTransform
}
Entity {
components: [ mesh, material1, transform1 ]
}
Transform {
id: transform2
scale: 8
rotation: fromAxisAndAngle(Qt.vector3d(1, 0, 0), 45)
translation: Qt.vector3d(6, 0, 0)
}
TextureMaterial {
id: material2
texture: material1.texture
textureTransform: spriteSheet.textureTransform
}
Entity {
components: [ mesh, material2, transform2 ]
}
Transform {
id: transform3
scale3D: Qt.vector3d(12, 4, 4)
rotation: fromAxisAndAngle(Qt.vector3d(1, 0, 0), 90)
translation: Qt.vector3d(0, -6, 0)
}
TextureMaterial {
id: material3
texture: material1.texture
}
Entity {
components: [ mesh, material3, transform3 ]
}
Timer {
interval: 1000
repeat: true
running: true
onTriggered: {
spriteGrid.currentIndex = (spriteGrid.currentIndex + 1) % (spriteGrid.rows * spriteGrid.columns)
spriteSheet.currentIndex = (spriteSheet.currentIndex + 1) % (spriteSheet.sprites.length)
}
}
}
|