diff options
-rw-r--r-- | examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple.gltf | 539 | ||||
-rw-r--r-- | examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple0.bin | bin | 0 -> 6128 bytes | |||
-rw-r--r-- | examples/qt3d/exampleresources/gltf.qrc | 2 | ||||
-rw-r--r-- | tests/manual/skinned-mesh/SkinnedEntity.qml | 37 | ||||
-rw-r--r-- | tests/manual/skinned-mesh/SkinnedPbrEffect.qml | 38 | ||||
-rw-r--r-- | tests/manual/skinned-mesh/main.qml | 64 | ||||
-rw-r--r-- | tests/manual/skinned-mesh/skinned-mesh.pro | 4 | ||||
-rw-r--r-- | tests/manual/skinned-mesh/skinned-mesh.qrc | 2 |
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 Binary files differnew file mode 100644 index 000000000..ed24826b7 --- /dev/null +++ b/examples/qt3d/exampleresources/assets/gltf/2.0/RiggedSimple/RiggedSimple0.bin 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> |