summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple.gltf539
-rw-r--r--examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple0.binbin0 -> 6128 bytes
-rw-r--r--examples/qt3d/exampleresources/gltf.qrc2
-rw-r--r--tests/manual/skinned-mesh/SkinnedEntity.qml37
-rw-r--r--tests/manual/skinned-mesh/SkinnedPbrEffect.qml38
-rw-r--r--tests/manual/skinned-mesh/main.qml64
-rw-r--r--tests/manual/skinned-mesh/skinned-mesh.pro4
-rw-r--r--tests/manual/skinned-mesh/skinned-mesh.qrc2
8 files changed, 636 insertions, 50 deletions
diff --git a/examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple.gltf b/examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple.gltf
new file mode 100644
index 000000000..ea3a4cb64
--- /dev/null
+++ b/examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple.gltf
@@ -0,0 +1,539 @@
+{
+ "asset": {
+ "generator": "COLLADA2GLTF",
+ "version": "2.0"
+ },
+ "scene": 0,
+ "scenes": [
+ {
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "children": [
+ 4,
+ 1
+ ],
+ "matrix": [
+ 1.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ -1.0,
+ 0.0,
+ 0.0,
+ 1.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 1.0
+ ]
+ },
+ {
+ "mesh": 0,
+ "skin": 0
+ },
+ {
+ "children": [
+ 3
+ ],
+ "translation": [
+ 0.0,
+ -3.156060017772689e-7,
+ -4.1803297996521
+ ],
+ "rotation": [
+ -0.7047404050827026,
+ -0.0,
+ -0.0,
+ -0.7094652056694031
+ ],
+ "scale": [
+ 1.0,
+ 0.9999998807907105,
+ 0.9999998807907105
+ ]
+ },
+ {
+ "translation": [
+ 0.0,
+ 4.18717098236084,
+ 0.0
+ ],
+ "rotation": [
+ -0.0020521103870123626,
+ -9.94789530750495e-8,
+ -0.00029137087403796613,
+ -0.999997854232788
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0000001192092896
+ ]
+ },
+ {
+ "children": [
+ 2
+ ]
+ }
+ ],
+ "meshes": [
+ {
+ "primitives": [
+ {
+ "attributes": {
+ "JOINTS_0": 1,
+ "NORMAL": 2,
+ "POSITION": 3,
+ "WEIGHTS_0": 4
+ },
+ "indices": 0,
+ "mode": 4,
+ "material": 0
+ }
+ ],
+ "name": "Cylinder"
+ }
+ ],
+ "animations": [
+ {
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 2,
+ "path": "translation"
+ }
+ },
+ {
+ "sampler": 1,
+ "target": {
+ "node": 2,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 2,
+ "target": {
+ "node": 2,
+ "path": "scale"
+ }
+ }
+ ],
+ "samplers": [
+ {
+ "input": 5,
+ "interpolation": "LINEAR",
+ "output": 6
+ },
+ {
+ "input": 5,
+ "interpolation": "LINEAR",
+ "output": 7
+ },
+ {
+ "input": 5,
+ "interpolation": "LINEAR",
+ "output": 8
+ }
+ ]
+ },
+ {
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 3,
+ "path": "translation"
+ }
+ },
+ {
+ "sampler": 1,
+ "target": {
+ "node": 3,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 2,
+ "target": {
+ "node": 3,
+ "path": "scale"
+ }
+ }
+ ],
+ "samplers": [
+ {
+ "input": 9,
+ "interpolation": "LINEAR",
+ "output": 10
+ },
+ {
+ "input": 9,
+ "interpolation": "LINEAR",
+ "output": 11
+ },
+ {
+ "input": 9,
+ "interpolation": "LINEAR",
+ "output": 12
+ }
+ ]
+ }
+ ],
+ "skins": [
+ {
+ "inverseBindMatrices": 13,
+ "skeleton": 2,
+ "joints": [
+ 2,
+ 3
+ ],
+ "name": "Armature"
+ }
+ ],
+ "accessors": [
+ {
+ "bufferView": 0,
+ "byteOffset": 0,
+ "componentType": 5123,
+ "count": 564,
+ "max": [
+ 95
+ ],
+ "min": [
+ 0
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 1,
+ "byteOffset": 0,
+ "componentType": 5123,
+ "count": 96,
+ "max": [
+ 1,
+ 1,
+ 0,
+ 0
+ ],
+ "min": [
+ 0,
+ 0,
+ 0,
+ 0
+ ],
+ "type": "VEC4"
+ },
+ {
+ "bufferView": 2,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 96,
+ "max": [
+ 0.998198390007019,
+ 0.998198390007019,
+ 0.6888381242752075
+ ],
+ "min": [
+ -0.998198390007019,
+ -0.998198390007019,
+ -0.644473135471344
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 2,
+ "byteOffset": 1152,
+ "componentType": 5126,
+ "count": 96,
+ "max": [
+ 1.0,
+ 1.0,
+ 4.575077056884766
+ ],
+ "min": [
+ -1.0,
+ -0.9999995827674866,
+ -4.575077056884766
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 3,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 96,
+ "max": [
+ 1.0,
+ 0.261398196220398,
+ 0.0,
+ 0.0
+ ],
+ "min": [
+ 0.738601803779602,
+ 0.0,
+ 0.0,
+ 0.0
+ ],
+ "type": "VEC4"
+ },
+ {
+ "bufferView": 4,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 3,
+ "max": [
+ 2.083333015441895
+ ],
+ "min": [
+ 0.04166661947965622
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 5,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 3,
+ "max": [
+ 0.0,
+ -3.156060017772689e-7,
+ -4.1803297996521
+ ],
+ "min": [
+ 0.0,
+ -3.156060017772689e-7,
+ -4.1803297996521
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 6,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 3,
+ "max": [
+ -0.7047404050827026,
+ -0.0,
+ -0.0,
+ -0.7094652056694031
+ ],
+ "min": [
+ -0.7047404050827026,
+ -0.0,
+ -0.0,
+ -0.7094652056694031
+ ],
+ "type": "VEC4"
+ },
+ {
+ "bufferView": 5,
+ "byteOffset": 36,
+ "componentType": 5126,
+ "count": 3,
+ "max": [
+ 1.0,
+ 0.9999998807907105,
+ 0.9999998807907105
+ ],
+ "min": [
+ 1.0,
+ 0.9999998807907105,
+ 0.9999998807907105
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 4,
+ "byteOffset": 12,
+ "componentType": 5126,
+ "count": 3,
+ "max": [
+ 2.083333015441895
+ ],
+ "min": [
+ 0.04166661947965622
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 5,
+ "byteOffset": 72,
+ "componentType": 5126,
+ "count": 3,
+ "max": [
+ 0.0,
+ 4.18717098236084,
+ 0.0
+ ],
+ "min": [
+ 0.0,
+ 4.18717098236084,
+ 0.0
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 6,
+ "byteOffset": 48,
+ "componentType": 5126,
+ "count": 3,
+ "max": [
+ 0.2933785021305084,
+ -9.94789530750495e-8,
+ -0.0002783441450446844,
+ -0.9559963345527648
+ ],
+ "min": [
+ -0.0020521103870123626,
+ -0.00008614854596089572,
+ -0.00029137087403796613,
+ -0.999997854232788
+ ],
+ "type": "VEC4"
+ },
+ {
+ "bufferView": 5,
+ "byteOffset": 108,
+ "componentType": 5126,
+ "count": 3,
+ "max": [
+ 1.0,
+ 1.0,
+ 1.0000001192092896
+ ],
+ "min": [
+ 1.0,
+ 1.0,
+ 1.0000001192092896
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 7,
+ "byteOffset": 0,
+ "componentType": 5126,
+ "count": 2,
+ "max": [
+ 1.0,
+ 0.0,
+ 0.000001394809942212305,
+ 0.0,
+ 0.000002896920022976701,
+ 0.006681859027594328,
+ -0.9999778270721436,
+ 0.0,
+ 0.0005827349959872663,
+ 0.9999966025352478,
+ 0.006681739818304777,
+ 0.0,
+ 0.0,
+ 4.18023681640625,
+ 0.02795993909239769,
+ 1.0
+ ],
+ "min": [
+ 0.9999999403953552,
+ -0.0005827400018461049,
+ 0.0,
+ 0.0,
+ 0.0,
+ 0.002577662002295256,
+ -0.9999967217445374,
+ 0.0,
+ 0.0,
+ 0.999977707862854,
+ 0.002577601931989193,
+ 0.0,
+ -0.000004012620138382772,
+ -0.006818830035626888,
+ 0.027931740507483484,
+ 1.0
+ ],
+ "type": "MAT4"
+ }
+ ],
+ "materials": [
+ {
+ "pbrMetallicRoughness": {
+ "baseColorFactor": [
+ 0.27963539958000185,
+ 0.6399999856948853,
+ 0.21094390749931336,
+ 1.0
+ ],
+ "metallicFactor": 0.0
+ },
+ "emissiveFactor": [
+ 0.0,
+ 0.0,
+ 0.0
+ ],
+ "name": "Material_001-effect"
+ }
+ ],
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteOffset": 5000,
+ "byteLength": 1128,
+ "target": 34963
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 4208,
+ "byteLength": 768,
+ "byteStride": 8,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 1904,
+ "byteLength": 2304,
+ "byteStride": 12,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 224,
+ "byteLength": 1536,
+ "byteStride": 16,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 4976,
+ "byteLength": 24
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 1760,
+ "byteLength": 144
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 128,
+ "byteLength": 96
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 0,
+ "byteLength": 128
+ }
+ ],
+ "buffers": [
+ {
+ "byteLength": 6128,
+ "uri": "RiggedSimple0.bin"
+ }
+ ]
+}
diff --git a/examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple0.bin b/examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple0.bin
new file mode 100644
index 000000000..ed24826b7
--- /dev/null
+++ b/examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple0.bin
Binary files differ
diff --git a/examples/qt3d/exampleresources/gltf.qrc b/examples/qt3d/exampleresources/gltf.qrc
index 0ae789fb7..aa9a994a1 100644
--- a/examples/qt3d/exampleresources/gltf.qrc
+++ b/examples/qt3d/exampleresources/gltf.qrc
@@ -16,5 +16,7 @@
<file>assets/gltf/wine/wine3VS.glsl</file>
<file>assets/gltf/2.0/RiggedFigure/RiggedFigure.gltf</file>
<file>assets/gltf/2.0/RiggedFigure/RiggedFigure0.bin</file>
+ <file>assets/gltf/2.0/RiggedSimple/RiggedSimple.gltf</file>
+ <file>assets/gltf/2.0/RiggedSimple/RiggedSimple0.bin</file>
</qresource>
</RCC>
diff --git a/tests/manual/skinned-mesh/SkinnedEntity.qml b/tests/manual/skinned-mesh/SkinnedEntity.qml
new file mode 100644
index 000000000..455f3869e
--- /dev/null
+++ b/tests/manual/skinned-mesh/SkinnedEntity.qml
@@ -0,0 +1,37 @@
+import Qt3D.Core 2.10
+import Qt3D.Render 2.10
+import Qt3D.Input 2.0
+import Qt3D.Extras 2.10
+
+Entity {
+ id: root
+
+ property Effect effect: skinnedPbrEffect
+ property url source: ""
+ property alias transform: transform
+ property color baseColor: "red"
+
+ components: [
+ Transform {
+ id: transform
+ rotationX: -90
+ },
+ Mesh {
+ source: root.source
+ },
+ Armature {
+ skeleton: SkeletonLoader {
+ source: root.source
+ onStatusChanged: console.log("skeleton loader status: " + status)
+ onJointCountChanged: console.log("skeleton has " + jointCount + " joints")
+ }
+ },
+ Material {
+ effect: root.effect
+
+ parameters: [
+ Parameter { name: "baseColor"; value: root.baseColor }
+ ]
+ }
+ ]
+}
diff --git a/tests/manual/skinned-mesh/SkinnedPbrEffect.qml b/tests/manual/skinned-mesh/SkinnedPbrEffect.qml
new file mode 100644
index 000000000..79e4f7757
--- /dev/null
+++ b/tests/manual/skinned-mesh/SkinnedPbrEffect.qml
@@ -0,0 +1,38 @@
+import Qt3D.Core 2.10
+import Qt3D.Render 2.10
+import Qt3D.Input 2.0
+import Qt3D.Extras 2.10
+
+Effect {
+ id: skinnedPbrEffect
+ parameters: [
+ Parameter { name: "baseColor"; value: "red" },
+ Parameter { name: "metalness"; value: 0.1 },
+ Parameter { name: "roughness"; value: 0.2 }
+ ]
+
+ techniques: [
+ Technique {
+ filterKeys: FilterKey { name: "renderingStyle"; value: "forward" }
+
+ graphicsApiFilter {
+ api: GraphicsApiFilter.OpenGL
+ majorVersion: 3
+ minorVersion: 1
+ profile: GraphicsApiFilter.CoreProfile
+ }
+
+ renderPasses: RenderPass {
+ shaderProgram: ShaderProgram {
+ id: prog
+ vertexShaderCode: loadSource("qrc:/skinnedPbr.vert")
+ }
+
+ ShaderProgramBuilder {
+ shaderProgram: prog
+ fragmentShaderGraph: "qrc:/shaders/graphs/metalroughuniform.frag.json"
+ }
+ }
+ }
+ ]
+}
diff --git a/tests/manual/skinned-mesh/main.qml b/tests/manual/skinned-mesh/main.qml
index c07ab5eeb..31c618382 100644
--- a/tests/manual/skinned-mesh/main.qml
+++ b/tests/manual/skinned-mesh/main.qml
@@ -56,56 +56,22 @@ import Qt3D.Extras 2.10
DefaultSceneEntity {
id: scene
- Entity {
- components: [
- Transform {
- rotationX: -90
- },
- Mesh {
- source: "qrc:/assets/gltf/2.0/RiggedFigure/RiggedFigure.gltf"
- },
- Armature {
- skeleton: SkeletonLoader {
- source: "qrc:/assets/gltf/2.0/RiggedFigure/RiggedFigure.gltf"
- onStatusChanged: console.log("skeleton loader status: " + status)
- onJointCountChanged: console.log("skeleton has " + jointCount + " joints")
- }
- },
- Material {
- effect: Effect {
- id: skinnedPbrEffect
- parameters: [
- Parameter { name: "baseColor"; value: "red" },
- Parameter { name: "metalness"; value: 0.1 },
- Parameter { name: "roughness"; value: 0.2 }
- ]
-
- techniques: [
- Technique {
- filterKeys: FilterKey { name: "renderingStyle"; value: "forward" }
-
- graphicsApiFilter {
- api: GraphicsApiFilter.OpenGL
- majorVersion: 3
- minorVersion: 2
- profile: GraphicsApiFilter.CoreProfile
- }
+ SkinnedPbrEffect {
+ id: skinnedPbrEffect
+ }
- renderPasses: RenderPass {
- shaderProgram: ShaderProgram {
- id: prog
- vertexShaderCode: loadSource("qrc:/skinnedPbr.vert")
- }
+ SkinnedEntity {
+ id: riggedFigure
+ effect: skinnedPbrEffect
+ source: "qrc:/assets/gltf/2.0/RiggedFigure/RiggedFigure.gltf"
+ }
- ShaderProgramBuilder {
- shaderProgram: prog
- fragmentShaderGraph: "qrc:/shaders/graphs/metalroughuniform.frag.json"
- }
- }
- }
- ]
- }
- }
- ]
+ SkinnedEntity {
+ id: riggedSimple
+ effect: skinnedPbrEffect
+ source: "qrc:/assets/gltf/2.0/RiggedSimple/RiggedSimple.gltf"
+ baseColor: "blue"
+ transform.scale: 0.05
+ transform.translation: Qt.vector3d(0.5, 0.25, 0.0)
}
}
diff --git a/tests/manual/skinned-mesh/skinned-mesh.pro b/tests/manual/skinned-mesh/skinned-mesh.pro
index 1430b5c36..dc5fd3730 100644
--- a/tests/manual/skinned-mesh/skinned-mesh.pro
+++ b/tests/manual/skinned-mesh/skinned-mesh.pro
@@ -9,7 +9,9 @@ SOURCES += \
OTHER_FILES += \
main.qml \
- DefaultSceneEntity.qml
+ DefaultSceneEntity.qml \
+ SkinnedEntity.qml \
+ SkinnedPbrEffect.qml
RESOURCES += \
skinned-mesh.qrc \
diff --git a/tests/manual/skinned-mesh/skinned-mesh.qrc b/tests/manual/skinned-mesh/skinned-mesh.qrc
index ce8d0f976..e062e6be4 100644
--- a/tests/manual/skinned-mesh/skinned-mesh.qrc
+++ b/tests/manual/skinned-mesh/skinned-mesh.qrc
@@ -3,5 +3,7 @@
<file>main.qml</file>
<file>DefaultSceneEntity.qml</file>
<file>skinnedPbr.vert</file>
+ <file>SkinnedEntity.qml</file>
+ <file>SkinnedPbrEffect.qml</file>
</qresource>
</RCC>