summaryrefslogtreecommitdiffstats
path: root/tests/manual
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual')
-rw-r--r--tests/manual/animation-keyframe-blendtree/main.qml26
-rw-r--r--tests/manual/animation-keyframe-simple/main.qml22
-rw-r--r--tests/manual/bigscene-instanced-qml/instanced.vert2
-rw-r--r--tests/manual/blitframebuffer-qml/blitframebuffer-qml.pro14
-rw-r--r--tests/manual/blitframebuffer-qml/blitframebuffer-qml.qrc5
-rw-r--r--tests/manual/blitframebuffer-qml/main.cpp72
-rw-r--r--tests/manual/blitframebuffer-qml/main.qml273
-rw-r--r--[-rwxr-xr-x]tests/manual/buffercapture-qml/bufferSetter.comp0
-rw-r--r--tests/manual/custom-mesh-update-data-cpp/main.cpp2
-rw-r--r--tests/manual/downloading/downloading.pro14
-rw-r--r--tests/manual/downloading/downloading.qrc5
-rw-r--r--tests/manual/downloading/main.cpp63
-rw-r--r--tests/manual/downloading/main.qml105
-rw-r--r--tests/manual/layerfilter-qml/layerfilter-qml.pro14
-rw-r--r--tests/manual/layerfilter-qml/layerfilter-qml.qrc5
-rw-r--r--tests/manual/layerfilter-qml/main.cpp63
-rw-r--r--tests/manual/layerfilter-qml/main.qml221
-rw-r--r--tests/manual/manual.pro9
-rw-r--r--tests/manual/pointlinesize/Scene.qml138
-rw-r--r--tests/manual/pointlinesize/main.cpp72
-rw-r--r--tests/manual/pointlinesize/main.qml107
-rw-r--r--tests/manual/pointlinesize/pointlinesize.pro15
-rw-r--r--tests/manual/pointlinesize/pointlinesize.qrc6
-rw-r--r--tests/manual/proximityfilter/main.cpp63
-rw-r--r--tests/manual/proximityfilter/main.qml148
-rw-r--r--tests/manual/proximityfilter/proximityfilter.pro11
-rw-r--r--tests/manual/proximityfilter/proximityfilter.qrc5
-rw-r--r--tests/manual/rendercapture-qml/main.cpp6
-rw-r--r--tests/manual/skinned-mesh/DefaultSceneEntity.qml116
-rw-r--r--tests/manual/skinned-mesh/SkinnedEntity.qml41
-rw-r--r--tests/manual/skinned-mesh/SkinnedPbrEffect.qml39
-rw-r--r--tests/manual/skinned-mesh/jump.json4571
-rw-r--r--tests/manual/skinned-mesh/main.cpp65
-rw-r--r--tests/manual/skinned-mesh/main.qml254
-rw-r--r--tests/manual/skinned-mesh/skinned-mesh.pro23
-rw-r--r--tests/manual/skinned-mesh/skinned-mesh.qrc10
-rw-r--r--tests/manual/skinned-mesh/skinnedPbr.vert94
-rw-r--r--tests/manual/spritegrid/main.cpp63
-rw-r--r--tests/manual/spritegrid/main.qml182
-rw-r--r--tests/manual/spritegrid/spritegrid.pngbin0 -> 19751 bytes
-rw-r--r--tests/manual/spritegrid/spritegrid.pro14
-rw-r--r--tests/manual/spritegrid/spritegrid.qrc6
42 files changed, 6957 insertions, 7 deletions
diff --git a/tests/manual/animation-keyframe-blendtree/main.qml b/tests/manual/animation-keyframe-blendtree/main.qml
index 23aba4b79..3d7fa47e5 100644
--- a/tests/manual/animation-keyframe-blendtree/main.qml
+++ b/tests/manual/animation-keyframe-blendtree/main.qml
@@ -75,16 +75,36 @@ DefaultSceneEntity {
shininess: 50
},
ObjectPicker {
- onClicked: blendedAnimator.running = true
+ onClicked: {
+ if (blendedAnimator.running == false) {
+ blendedAnimator.running = true;
+ } else {
+ switch (pick.button) {
+ case PickEvent.RightButton:
+ animatorClock.playbackRate *= 2.0;
+ break;
+ case PickEvent.LeftButton:
+ animatorClock.playbackRate /= 2.0;
+ break;
+ default:
+ break;
+ }
+ }
+ }
},
BlendedClipAnimator {
id: blendedAnimator
- loops: 2
+ loops: 3
+
+ clock: Clock {
+ id: animatorClock
+ playbackRate: 0.5
+ }
onRunningChanged: console.log("running = " + running)
blendTree: LerpClipBlend {
- blendFactor: 0.2
+ blendFactor: 0.8
startClip: ClipBlendValue {
clip: AnimationClipLoader { source: "sliding-cube.json" }
}
diff --git a/tests/manual/animation-keyframe-simple/main.qml b/tests/manual/animation-keyframe-simple/main.qml
index 79fb75fbd..9246f2467 100644
--- a/tests/manual/animation-keyframe-simple/main.qml
+++ b/tests/manual/animation-keyframe-simple/main.qml
@@ -75,13 +75,33 @@ DefaultSceneEntity {
shininess: 50
},
ObjectPicker {
- onClicked: animator.running = true
+ onClicked: {
+ if (animator.running == false) {
+ animator.running = true;
+ } else {
+ switch (pick.button) {
+ case PickEvent.RightButton:
+ animationClock.playbackRate *= 2.0;
+ break;
+ case PickEvent.LeftButton:
+ animationClock.playbackRate /= 2.0;
+ break;
+ default:
+ break;
+ }
+ }
+ }
},
ClipAnimator {
id: animator
loops: 3
onRunningChanged: console.log("running = " + running)
+ clock: Clock {
+ id: animationClock
+ playbackRate: 1
+ }
+
clip: AnimationClipLoader {
source: "cubeanimation.json"
onDurationChanged: console.log("duration = " + duration)
diff --git a/tests/manual/bigscene-instanced-qml/instanced.vert b/tests/manual/bigscene-instanced-qml/instanced.vert
index f713957e3..141cf9927 100644
--- a/tests/manual/bigscene-instanced-qml/instanced.vert
+++ b/tests/manual/bigscene-instanced-qml/instanced.vert
@@ -1,6 +1,6 @@
#version 150 core
-#define M_PI 3.14159
+#define M_PI 3.14159265358979323846
in vec3 vertexPosition;
in vec3 vertexNormal;
diff --git a/tests/manual/blitframebuffer-qml/blitframebuffer-qml.pro b/tests/manual/blitframebuffer-qml/blitframebuffer-qml.pro
new file mode 100644
index 000000000..c115cbeaf
--- /dev/null
+++ b/tests/manual/blitframebuffer-qml/blitframebuffer-qml.pro
@@ -0,0 +1,14 @@
+!include( ../manual.pri ) {
+ error( "Couldn't find the manual.pri file!" )
+}
+
+QT += 3dcore 3drender 3dinput 3dquick 3dlogic qml quick 3dquickextras
+
+SOURCES += \
+ main.cpp
+
+OTHER_FILES += \
+ main.qml
+
+RESOURCES += \
+ blitframebuffer-qml.qrc
diff --git a/tests/manual/blitframebuffer-qml/blitframebuffer-qml.qrc b/tests/manual/blitframebuffer-qml/blitframebuffer-qml.qrc
new file mode 100644
index 000000000..5f6483ac3
--- /dev/null
+++ b/tests/manual/blitframebuffer-qml/blitframebuffer-qml.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ </qresource>
+</RCC>
diff --git a/tests/manual/blitframebuffer-qml/main.cpp b/tests/manual/blitframebuffer-qml/main.cpp
new file mode 100644
index 000000000..3d85df6eb
--- /dev/null
+++ b/tests/manual/blitframebuffer-qml/main.cpp
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <Qt3DQuickExtras/qt3dquickwindow.h>
+#include <QGuiApplication>
+
+int main(int argc, char* argv[])
+{
+ QGuiApplication app(argc, argv);
+ Qt3DExtras::Quick::Qt3DQuickWindow view;
+
+
+ QSurfaceFormat format;
+ format.setVersion(4, 3);
+ format.setProfile(QSurfaceFormat::CoreProfile);
+ format.setDepthBufferSize(24);
+ format.setSamples(1);
+ format.setStencilBufferSize(8);
+ view.setFormat(format);
+
+ view.setSource(QUrl("qrc:/main.qml"));
+ view.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/blitframebuffer-qml/main.qml b/tests/manual/blitframebuffer-qml/main.qml
new file mode 100644
index 000000000..4b3c1915b
--- /dev/null
+++ b/tests/manual/blitframebuffer-qml/main.qml
@@ -0,0 +1,273 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2 as QQ2
+import Qt3D.Core 2.0
+import Qt3D.Render 2.10
+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, -40.0 )
+ upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
+ viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )
+ }
+
+ RenderTarget {
+ id: intermediateRenderTarget
+ attachments : [
+ RenderTargetOutput {
+ objectName : "color"
+ attachmentPoint : RenderTargetOutput.Color0
+ texture : Texture2D {
+ id : colorAttachment0
+ width : 1024
+ height : 768
+ format : Texture.R32F
+ generateMipMaps : false
+ magnificationFilter : Texture.Linear
+ minificationFilter : Texture.Linear
+ wrapMode {
+ x: WrapMode.ClampToEdge
+ y: WrapMode.ClampToEdge
+ }
+ }
+ },
+ RenderTargetOutput {
+ objectName : "color"
+ attachmentPoint : RenderTargetOutput.Color1
+ texture : Texture2D {
+ id : colorAttachment1
+ width : 1024
+ height : 1024
+ format : Texture.R32F
+ generateMipMaps : false
+ magnificationFilter : Texture.Linear
+ minificationFilter : Texture.Linear
+ wrapMode {
+ x: WrapMode.ClampToEdge
+ y: WrapMode.ClampToEdge
+ }
+ }
+ }
+ ]
+ }
+
+ components: [
+ RenderSettings {
+ activeFrameGraph: RenderSurfaceSelector {
+ Viewport {
+ RenderTargetSelector {
+ target: intermediateRenderTarget
+ NoDraw {}
+ }
+
+ RenderTargetSelector {
+ target: RenderTarget {
+ id: renderTarget
+ attachments : [
+ RenderTargetOutput {
+ objectName : "color"
+ attachmentPoint : RenderTargetOutput.Color0
+ texture : Texture2D {
+ id : colorAttachment
+ width : 1024
+ height : 768
+ format : Texture.RGBA32F
+ generateMipMaps : false
+ magnificationFilter : Texture.Linear
+ minificationFilter : Texture.Linear
+ wrapMode {
+ x: WrapMode.ClampToEdge
+ y: WrapMode.ClampToEdge
+ }
+ }
+ },
+ RenderTargetOutput {
+ objectName : "depth"
+ attachmentPoint : RenderTargetOutput.Depth
+ texture : Texture2D {
+ id : depthAttachment
+ width : 1024
+ height : 1024
+ format : Texture.D32F
+ generateMipMaps : false
+ magnificationFilter : Texture.Linear
+ minificationFilter : Texture.Linear
+ wrapMode {
+ x: WrapMode.ClampToEdge
+ y: WrapMode.ClampToEdge
+ }
+ }
+ }
+ ]
+ }
+ ClearBuffers {
+ clearColor: "white"
+ buffers: ClearBuffers.ColorDepthBuffer
+ CameraSelector {
+ camera: camera
+ }
+ }
+ }
+
+ NoDraw{
+
+ BlitFramebuffer {
+ source: renderTarget
+ destination: intermediateRenderTarget
+ sourceRect: Qt.rect(0,0,1024,768)
+ destinationRect: Qt.rect(0,0,1024,1024)
+ sourceAttachmentPoint: RenderTargetOutput.Color0
+ destinationAttachmentPoint: RenderTargetOutput.Color0
+ interpolationMethod: BlitFramebuffer.Linear
+ }
+
+ BlitFramebuffer {
+ source: intermediateRenderTarget
+ sourceRect: Qt.rect(0,0,1024,1024)
+ destinationRect: Qt.rect(0,0,512,384)
+ sourceAttachmentPoint: RenderTargetOutput.Color0
+ interpolationMethod: BlitFramebuffer.Linear
+ }
+
+ BlitFramebuffer {
+ source: renderTarget
+ sourceRect: Qt.rect(0,0,1024,768)
+ destinationRect: Qt.rect(0,384,512,384)
+ sourceAttachmentPoint: RenderTargetOutput.Color0
+ interpolationMethod: BlitFramebuffer.Linear
+ }
+
+ BlitFramebuffer {
+ source: renderTarget
+ sourceRect: Qt.rect(128,200,256,256)
+ destinationRect: Qt.rect(512,384,512,384)
+ sourceAttachmentPoint: RenderTargetOutput.Color0
+ interpolationMethod: BlitFramebuffer.Linear
+ }
+
+ BlitFramebuffer {
+ source: renderTarget
+ sourceRect: Qt.rect(128,200,256,256)
+ destinationRect: Qt.rect(512,0,512,384)
+ sourceAttachmentPoint: RenderTargetOutput.Color0
+ interpolationMethod: BlitFramebuffer.Nearest
+ }
+ }
+ }
+ }
+ }
+ ]
+
+ PhongMaterial {
+ id: material
+ }
+
+ TorusMesh {
+ id: torusMesh
+ radius: 5
+ minorRadius: 1
+ rings: 100
+ slices: 20
+ }
+
+ Transform {
+ id: torusTransform
+ scale3D: Qt.vector3d(1.5, 1, 0.5)
+ rotation: fromAxisAndAngle(Qt.vector3d(1, 0, 0), 45)
+ }
+
+ Entity {
+ id: torusEntity
+ components: [ torusMesh, material, torusTransform ]
+ }
+
+ SphereMesh {
+ id: sphereMesh
+ radius: 3
+ }
+
+ Transform {
+ id: sphereTransform
+ property real userAngle: 0.0
+ matrix: {
+ var m = Qt.matrix4x4();
+ m.rotate(userAngle, Qt.vector3d(0, 1, 0));
+ m.translate(Qt.vector3d(20, 0, 0));
+ return m;
+ }
+ }
+
+ QQ2.NumberAnimation {
+ target: sphereTransform
+ property: "userAngle"
+ duration: 10000
+ from: 0
+ to: 360
+
+ loops: QQ2.Animation.Infinite
+ running: true
+ }
+
+ Entity {
+ id: sphereEntity
+ components: [ sphereMesh, material, sphereTransform ]
+ }
+}
diff --git a/tests/manual/buffercapture-qml/bufferSetter.comp b/tests/manual/buffercapture-qml/bufferSetter.comp
index d7c383669..d7c383669 100755..100644
--- a/tests/manual/buffercapture-qml/bufferSetter.comp
+++ b/tests/manual/buffercapture-qml/bufferSetter.comp
diff --git a/tests/manual/custom-mesh-update-data-cpp/main.cpp b/tests/manual/custom-mesh-update-data-cpp/main.cpp
index c7f5742dc..80ee2088d 100644
--- a/tests/manual/custom-mesh-update-data-cpp/main.cpp
+++ b/tests/manual/custom-mesh-update-data-cpp/main.cpp
@@ -277,7 +277,7 @@ int main(int argc, char* argv[])
void TimerObject::timeout()
{
- angle += float(M_PI / 360.0);
+ angle += qDegreesToRadians(0.5f);
QByteArray updateData;
updateData.resize(3*sizeof(float));
diff --git a/tests/manual/downloading/downloading.pro b/tests/manual/downloading/downloading.pro
new file mode 100644
index 000000000..6f1b6e3d5
--- /dev/null
+++ b/tests/manual/downloading/downloading.pro
@@ -0,0 +1,14 @@
+!include( ../manual.pri ) {
+ error( "Couldn't find the manual.pri file!" )
+}
+
+QT += 3dcore 3drender 3dinput 3dquick qml quick 3dquickextras
+
+SOURCES += \
+ main.cpp
+
+OTHER_FILES += \
+ main.qml
+
+RESOURCES += \
+ downloading.qrc
diff --git a/tests/manual/downloading/downloading.qrc b/tests/manual/downloading/downloading.qrc
new file mode 100644
index 000000000..5f6483ac3
--- /dev/null
+++ b/tests/manual/downloading/downloading.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ </qresource>
+</RCC>
diff --git a/tests/manual/downloading/main.cpp b/tests/manual/downloading/main.cpp
new file mode 100644
index 000000000..dba6e0bff
--- /dev/null
+++ b/tests/manual/downloading/main.cpp
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <Qt3DQuickExtras/qt3dquickwindow.h>
+#include <QGuiApplication>
+
+int main(int argc, char* argv[])
+{
+ QGuiApplication app(argc, argv);
+ Qt3DExtras::Quick::Qt3DQuickWindow view;
+
+ view.setSource(QUrl("qrc:/main.qml"));
+ view.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/downloading/main.qml b/tests/manual/downloading/main.qml
new file mode 100644
index 000000000..47d1c09fb
--- /dev/null
+++ b/tests/manual/downloading/main.qml
@@ -0,0 +1,105 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+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
+ position: Qt.vector3d( 0.0, 0.5, 15.0 )
+ viewCenter: Qt.vector3d( 0.0, 0.5, 0.0 )
+ }
+
+ OrbitCameraController { camera: camera }
+
+ RenderSettings {
+ id : external_forward_renderer
+ activeFrameGraph : ForwardRenderer {
+ camera: camera
+ clearColor: "white"
+ }
+ }
+
+ // Event Source will be set by the Qt3DQuickWindow
+ InputSettings { id: inputSettings }
+
+ DirectionalLight { id: light; worldDirection: camera.viewVector }
+
+ components: [external_forward_renderer, inputSettings, light]
+
+ Mesh {
+ id: mesh
+ source: "https://codereview.qt-project.org/gitweb?p=qt/qt3d.git;a=blob_plain;hb=refs/heads/dev;f=examples/qt3d/exampleresources/assets/chest/Chest.obj"
+ }
+
+ Transform {
+ id: transform
+ scale: 0.03
+ rotation: fromAxisAndAngle(Qt.vector3d(1, 0, 0), 30)
+ }
+
+ DiffuseMapMaterial {
+ id: material
+ diffuse: TextureLoader { source: "https://codereview.qt-project.org/gitweb?p=qt/qt3d.git;a=blob_plain;hb=refs/heads/dev;f=examples/qt3d/planets-qml/images/solarsystemscope/earthmap2k.jpg" }
+ specular: Qt.rgba( 0.2, 0.2, 0.2, 1.0 )
+ shininess: 2.0
+ }
+
+ Entity {
+ id: mainEntity
+ objectName: "mainEntity"
+ components: [ mesh, material, transform ]
+ }
+}
diff --git a/tests/manual/layerfilter-qml/layerfilter-qml.pro b/tests/manual/layerfilter-qml/layerfilter-qml.pro
new file mode 100644
index 000000000..edeb4c6e2
--- /dev/null
+++ b/tests/manual/layerfilter-qml/layerfilter-qml.pro
@@ -0,0 +1,14 @@
+!include( ../manual.pri ) {
+ error( "Couldn't find the manual.pri file!" )
+}
+
+QT += 3dcore 3drender 3dinput 3dquick qml quick 3dquickextras
+
+SOURCES += \
+ main.cpp
+
+OTHER_FILES += \
+ main.qml
+
+RESOURCES += \
+ layerfilter-qml.qrc
diff --git a/tests/manual/layerfilter-qml/layerfilter-qml.qrc b/tests/manual/layerfilter-qml/layerfilter-qml.qrc
new file mode 100644
index 000000000..5f6483ac3
--- /dev/null
+++ b/tests/manual/layerfilter-qml/layerfilter-qml.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ </qresource>
+</RCC>
diff --git a/tests/manual/layerfilter-qml/main.cpp b/tests/manual/layerfilter-qml/main.cpp
new file mode 100644
index 000000000..dba6e0bff
--- /dev/null
+++ b/tests/manual/layerfilter-qml/main.cpp
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <Qt3DQuickExtras/qt3dquickwindow.h>
+#include <QGuiApplication>
+
+int main(int argc, char* argv[])
+{
+ QGuiApplication app(argc, argv);
+ Qt3DExtras::Quick::Qt3DQuickWindow view;
+
+ view.setSource(QUrl("qrc:/main.qml"));
+ view.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/layerfilter-qml/main.qml b/tests/manual/layerfilter-qml/main.qml
new file mode 100644
index 000000000..00b1cffa0
--- /dev/null
+++ b/tests/manual/layerfilter-qml/main.qml
@@ -0,0 +1,221 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt3D.Core 2.0
+import Qt3D.Render 2.10
+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, 3.0 )
+ upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
+ viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )
+ }
+
+ Camera {
+ id: backgroundCamera
+ projectionType: CameraLens.OrthographicProjection
+ left: -0.25
+ bottom: -0.25
+ top: 0.25
+ right: 0.25
+ nearPlane: 0.1
+ farPlane: 1.5
+ position: Qt.vector3d( 0.0, 0.0, 1.0 )
+ upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
+ viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )
+ }
+
+ Layer {
+ id: backgroundLayer
+ recursive: true
+ }
+
+ Layer {
+ id: sceneLayer
+ recursive: true
+ }
+
+ Layer {
+ id: secondBackgroundLayer
+ }
+
+ RenderSettings {
+ id : external_forward_renderer
+ activeFrameGraph :
+
+ RenderSurfaceSelector {
+ Viewport {
+ normalizedRect: Qt.rect(0,0,1,1)
+
+ ClearBuffers {
+ buffers: ClearBuffers.ColorDepthStencilBuffer
+ clearColor: "white"
+
+ LayerFilter {
+ layers: [
+ backgroundLayer,
+ secondBackgroundLayer
+ ]
+
+ CameraSelector {
+ camera: backgroundCamera
+ }
+ }
+ }
+
+ ClearBuffers {
+ buffers: ClearBuffers.DepthStencilBuffer
+
+ LayerFilter {
+ layers: [
+ backgroundLayer,
+ ]
+ filterMode: LayerFilter.DiscardAnyMatchingLayers
+
+ CameraSelector {
+ camera: camera
+ }
+ }
+ }
+ }
+ }
+ }
+
+ OrbitCameraController {
+ camera: camera
+ }
+
+ InputSettings {
+ id: inputSettings
+ }
+
+ components: [external_forward_renderer, inputSettings]
+
+ PlaneMesh {
+ id: backgroundMesh
+ width: 0.5
+ height: 0.5
+ }
+
+ Transform {
+ id: backgroundTransform
+ rotation: fromAxisAndAngle(Qt.vector3d(1,0,0), 90)
+ }
+
+ Transform {
+ id: smallBackgroundTransform
+ translation: Qt.vector3d(0,0.5,0)
+ scale: 0.5
+ }
+
+ PhongMaterial {
+ id: backgroundMaterial
+ ambient: "black"
+ }
+
+ PhongMaterial {
+ id: smallBackgroundMaterial
+ ambient: "red"
+ }
+
+ PlaneMesh {
+ id: mesh
+ width: 1
+ height: 1
+ }
+
+ Transform {
+ id: transform
+ translation: Qt.vector3d(0,0,-1)
+ rotation: fromAxisAndAngle(Qt.vector3d(1,0,0), 90)
+ }
+
+ PhongMaterial {
+ id: material
+ ambient: "blue"
+ }
+
+ Entity {
+ id: backgroundFilterEntity
+ components: [backgroundLayer]
+
+ Entity {
+ id: backgroundEntity
+ objectName: "backgroundEntity"
+ components: [backgroundMesh, backgroundMaterial, backgroundTransform]
+
+ Entity {
+ id: smallBackground
+ objectName: "smallBackground"
+ components: [backgroundMesh, smallBackgroundMaterial, smallBackgroundTransform]
+ }
+ }
+ }
+
+ Entity {
+ components: [sceneLayer]
+
+ Entity {
+ id: mainEntity
+ objectName: "mainEntity"
+ components: [ mesh, material, transform ]
+ }
+ }
+}
diff --git a/tests/manual/manual.pro b/tests/manual/manual.pro
index 7eedbe05e..724cc0fb3 100644
--- a/tests/manual/manual.pro
+++ b/tests/manual/manual.pro
@@ -16,6 +16,7 @@ SUBDIRS += \
cylinder-qml \
deferred-renderer-cpp \
deferred-renderer-qml \
+ downloading \
dragging \
dynamicscene-cpp \
enabled-qml \
@@ -28,11 +29,13 @@ SUBDIRS += \
multiplewindows-qml \
picking-qml \
plasma \
+ pointlinesize \
scene3d-loader \
simple-shaders-qml \
skybox \
tessellation-modes \
transforms-qml \
+ spritegrid \
transparency-qml \
transparency-qml-scene3d \
rendercapture-qml \
@@ -48,7 +51,11 @@ SUBDIRS += \
mesh-morphing \
anim-viewer \
animation-keyframe-programmatic \
- rendercapture-qml-fbo
+ layerfilter-qml \
+ skinned-mesh \
+ proximityfilter \
+ rendercapture-qml-fbo \
+ blitframebuffer-qml
qtHaveModule(widgets): {
SUBDIRS += \
diff --git a/tests/manual/pointlinesize/Scene.qml b/tests/manual/pointlinesize/Scene.qml
new file mode 100644
index 000000000..94f3bf351
--- /dev/null
+++ b/tests/manual/pointlinesize/Scene.qml
@@ -0,0 +1,138 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt3D.Core 2.0
+import Qt3D.Render 2.10
+import Qt3D.Input 2.0
+import Qt3D.Extras 2.0
+import QtQuick 2.0 as QQ2;
+
+Entity {
+ id: sceneRoot
+
+ property real width : 1
+ property alias smooth : lineWidth.smooth
+
+ Camera {
+ id: camera
+ projectionType: CameraLens.PerspectiveProjection
+ fieldOfView: 45
+ aspectRatio: 16/9
+ nearPlane : 0.1
+ farPlane : 1000.0
+ position: Qt.vector3d( 0.0, 0.0, 2.0 )
+ upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
+ viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )
+ }
+
+ FirstPersonCameraController {
+ camera: camera
+ linearSpeed: 1.0
+ }
+
+ components: [
+ RenderSettings {
+ activeFrameGraph : RenderStateSet {
+ renderStates: [
+ PointSize {
+ value: sceneRoot.width
+ sizeMode: PointSize.Fixed
+ },
+ LineWidth {
+ id: lineWidth
+ value: sceneRoot.width / 3.0
+ }
+
+ ]
+
+ ForwardRenderer {
+ camera: camera
+ clearColor: "black"
+ }
+ }
+ },
+ InputSettings {
+ }
+ ]
+
+ SphereGeometry {
+ id: sphere
+ rings: 4
+ slices: 4
+ radius: 1
+ }
+
+ Entity {
+ components: [
+ GeometryRenderer {
+ // abuse PlaneGeometry to give us some lines
+ geometry: sphere
+ primitiveType: GeometryRenderer.LineStrip
+ },
+ PhongMaterial {
+ ambient: "white"
+ }
+ ]
+ }
+
+ Entity {
+ components: [
+ GeometryRenderer {
+ // abuse PlaneGeometry to give us some points
+ geometry: sphere
+ primitiveType: GeometryRenderer.Points
+ },
+ PhongMaterial {
+ ambient: "red"
+ }
+ ]
+ }
+
+}
diff --git a/tests/manual/pointlinesize/main.cpp b/tests/manual/pointlinesize/main.cpp
new file mode 100644
index 000000000..5ede02f15
--- /dev/null
+++ b/tests/manual/pointlinesize/main.cpp
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QGuiApplication>
+#include <QQuickView>
+#include <QOpenGLContext>
+
+int main(int argc, char **argv)
+{
+ QGuiApplication app(argc, argv);
+
+ QSurfaceFormat format;
+ format.setVersion(2, 0);
+ format.setProfile(QSurfaceFormat::CompatibilityProfile);
+ format.setDepthBufferSize(24);
+
+ QQuickView view;
+ view.setFormat(format);
+ view.resize(1200, 600);
+ view.setResizeMode(QQuickView::SizeRootObjectToView);
+ view.setSource(QUrl("qrc:/main.qml"));
+ view.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/pointlinesize/main.qml b/tests/manual/pointlinesize/main.qml
new file mode 100644
index 000000000..a0180391f
--- /dev/null
+++ b/tests/manual/pointlinesize/main.qml
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtQuick.Scene3D 2.0
+
+import QtQuick.Controls 1.4
+import QtQuick.Controls.Styles 1.4
+
+Item {
+ id: root
+
+ Scene3D {
+ anchors.fill: parent
+ focus: true
+ aspects: ["input", "logic", "render"]
+ cameraAspectRatioMode: Scene3D.AutomaticAspectRatio
+
+ Scene {
+ id: scene
+ width : root.lineWidth
+ }
+ }
+
+ property real wMin : 0.5
+ property real wMax : 64.0
+ property real lineWidth : wMin * Math.exp(Math.log(wMax / wMin) * slider.value)
+
+ Text {
+ id: sliderLabel
+ anchors.top: parent.top
+ anchors.right: parent.right
+ anchors.margins: 20
+ font.pixelSize: 20
+ color: "white"
+ text: "width = " + lineWidth.toFixed(2)
+ }
+
+ Slider {
+ id: slider
+ anchors.top: sliderLabel.bottom
+ anchors.right: parent.right
+ anchors.margins: 20
+ width: 200
+ value: 0.0
+ }
+
+ Text {
+ anchors.top: slider.bottom
+ anchors.right: parent.right
+ anchors.margins: 20
+ color: scene.smooth ? "white" : "lightgray"
+ text: scene.smooth ? "Line Smoothing enabled" : "Line Smoothing disabled"
+ font.pixelSize: 20
+ MouseArea {
+ anchors.fill: parent
+ onClicked: scene.smooth = !scene.smooth
+ }
+ }
+}
diff --git a/tests/manual/pointlinesize/pointlinesize.pro b/tests/manual/pointlinesize/pointlinesize.pro
new file mode 100644
index 000000000..7ebde2e11
--- /dev/null
+++ b/tests/manual/pointlinesize/pointlinesize.pro
@@ -0,0 +1,15 @@
+!include( ../manual.pri ) {
+ error( "Couldn't find the manual.pri file!" )
+}
+
+QT += 3dcore 3drender 3dinput 3dquick qml quick 3dquickextras
+
+SOURCES += \
+ main.cpp
+
+OTHER_FILES += \
+ Scene.qml \
+ main.qml
+
+RESOURCES += \
+ pointlinesize.qrc
diff --git a/tests/manual/pointlinesize/pointlinesize.qrc b/tests/manual/pointlinesize/pointlinesize.qrc
new file mode 100644
index 000000000..72868031a
--- /dev/null
+++ b/tests/manual/pointlinesize/pointlinesize.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ <file>Scene.qml</file>
+ </qresource>
+</RCC>
diff --git a/tests/manual/proximityfilter/main.cpp b/tests/manual/proximityfilter/main.cpp
new file mode 100644
index 000000000..41d2f08a5
--- /dev/null
+++ b/tests/manual/proximityfilter/main.cpp
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <Qt3DQuickExtras/qt3dquickwindow.h>
+#include <QGuiApplication>
+
+int main(int argc, char* argv[])
+{
+ QGuiApplication app(argc, argv);
+ Qt3DExtras::Quick::Qt3DQuickWindow view;
+
+ view.setSource(QUrl("qrc:/main.qml"));
+ view.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/proximityfilter/main.qml b/tests/manual/proximityfilter/main.qml
new file mode 100644
index 000000000..05c2e4415
--- /dev/null
+++ b/tests/manual/proximityfilter/main.qml
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import Qt3D.Core 2.10
+import Qt3D.Render 2.10
+import Qt3D.Input 2.0
+import Qt3D.Extras 2.9
+
+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, 150.0 )
+ upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
+ viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )
+ }
+
+ OrbitCameraController { camera: camera }
+
+ components: [
+ RenderSettings {
+ activeFrameGraph: RenderSurfaceSelector {
+ Viewport {
+ normalizedRect: Qt.rect(0, 0, 1, 1)
+
+ ClearBuffers {
+ buffers: ClearBuffers.ColorDepthBuffer
+ clearColor: Qt.rgba(0.6, 0.6, 0.6, 1.0)
+ NoDraw {}
+ }
+
+ FrustumCulling {
+ CameraSelector {
+ camera: camera
+ ProximityFilter {
+ entity: proximityTarget
+ distanceThreshold: 30
+ }
+ }
+ }
+ }
+ }
+ },
+ // Event Source will be set by the Qt3DQuickWindow
+ InputSettings { }
+ ]
+
+ SphereMesh {
+ id: sphereMesh
+ }
+
+ PhongMaterial {
+ id: phongMaterial
+ diffuse: "orange"
+ }
+
+ NodeInstantiator {
+ id: instantiator
+ model: 64
+ Entity {
+ readonly property real angle: Math.PI * 2.0 * model.index % 8
+ readonly property real radius: 20
+ readonly property real verticalStep: 10
+ readonly property color meshColor: Qt.hsla(model.index / instantiator.count, 0.5, 0.5, 1.0);
+
+ readonly property Transform transform: Transform {
+ translation: Qt.vector3d(radius * Math.cos(angle),
+ (-(instantiator.count / (8 * 2)) + model.index / 8) * verticalStep,
+ radius * Math.sin(angle))
+ }
+ readonly property Material material: Material {
+ effect: phongMaterial.effect
+ parameters: Parameter { name: "kd"; value: meshColor }
+ }
+ readonly property SphereMesh mesh: sphereMesh
+ components: [ transform, mesh, material ]
+ }
+ }
+
+ Entity {
+ id: proximityTarget
+ readonly property Transform transform: Transform
+ {
+ property real y: 0;
+ SequentialAnimation on y {
+ NumberAnimation { from: -50; to: 50; duration: 2000; easing.type: Easing.InOutQuart }
+ NumberAnimation { from: 50; to: -50; duration: 2000; easing.type: Easing.InOutQuart }
+ loops: Animation.Infinite
+ }
+ translation: Qt.vector3d(0.0, y, 0.0)
+ }
+ components: [ sphereMesh, phongMaterial, transform ]
+ }
+}
diff --git a/tests/manual/proximityfilter/proximityfilter.pro b/tests/manual/proximityfilter/proximityfilter.pro
new file mode 100644
index 000000000..2e3f19157
--- /dev/null
+++ b/tests/manual/proximityfilter/proximityfilter.pro
@@ -0,0 +1,11 @@
+!include( ../manual.pri ) {
+ error( "Couldn't find the manual.pri file!" )
+}
+
+QT += 3dcore 3drender 3dinput 3dquick quick 3dquickextras
+
+SOURCES += \
+ main.cpp
+
+RESOURCES += \
+ proximityfilter.qrc
diff --git a/tests/manual/proximityfilter/proximityfilter.qrc b/tests/manual/proximityfilter/proximityfilter.qrc
new file mode 100644
index 000000000..5f6483ac3
--- /dev/null
+++ b/tests/manual/proximityfilter/proximityfilter.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ </qresource>
+</RCC>
diff --git a/tests/manual/rendercapture-qml/main.cpp b/tests/manual/rendercapture-qml/main.cpp
index 5c581c88e..9f8a8ed24 100644
--- a/tests/manual/rendercapture-qml/main.cpp
+++ b/tests/manual/rendercapture-qml/main.cpp
@@ -65,6 +65,12 @@ int main(int argc, char* argv[])
RenderCaptureProvider *provider = new RenderCaptureProvider;
qmlRegisterType<RenderCaptureProvider>("Extras", 1, 0, "RenderCaptureProvider");
+ QSurfaceFormat format;
+ format.setVersion(3, 2);
+ format.setProfile(QSurfaceFormat::CoreProfile);
+ format.setDepthBufferSize(24);
+ view.setFormat(format);
+
view.engine()->rootContext()->setContextProperty("_renderCaptureProvider", provider);
view.engine()->addImageProvider("rendercapture", provider);
diff --git a/tests/manual/skinned-mesh/DefaultSceneEntity.qml b/tests/manual/skinned-mesh/DefaultSceneEntity.qml
new file mode 100644
index 000000000..e3465a8bb
--- /dev/null
+++ b/tests/manual/skinned-mesh/DefaultSceneEntity.qml
@@ -0,0 +1,116 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt3D.Core 2.10
+import Qt3D.Render 2.10
+import Qt3D.Input 2.0
+import Qt3D.Extras 2.10
+
+Entity {
+ id: root
+
+ components: [
+ RenderSettings {
+ activeFrameGraph: ForwardRenderer {
+ camera: mainCamera
+ }
+ },
+ // Event Source will be set by the Qt3DQuickWindow
+ InputSettings { }
+ ]
+
+ Camera {
+ id: mainCamera
+ position: Qt.vector3d(2.5, 0.8, 5)
+ viewCenter: Qt.vector3d(2.5, 0.8, 0)
+ fieldOfView: 60
+ }
+
+ OrbitCameraController {
+ camera: mainCamera
+ linearSpeed: 10
+ lookSpeed: 180
+ }
+
+ Entity {
+ components: [
+ PointLight {
+ enabled: parent.enabled
+ color: "black"
+ intensity: 0
+ },
+ EnvironmentLight {
+ enabled: parent.enabled
+
+ irradiance: TextureLoader {
+ source: "qrc:/assets/envmaps/cedar-bridge/cedar_bridge_irradiance.dds"
+ wrapMode {
+ x: WrapMode.ClampToEdge
+ y: WrapMode.ClampToEdge
+ }
+ generateMipMaps: false
+ }
+ specular: TextureLoader {
+ source: "qrc:/assets/envmaps/cedar-bridge/cedar_bridge_specular.dds"
+ wrapMode {
+ x: WrapMode.ClampToEdge
+ y: WrapMode.ClampToEdge
+ }
+ generateMipMaps: false
+ }
+ }
+ ]
+
+ SkyboxEntity {
+ baseName: "qrc:/assets/envmaps/cedar-bridge/cedar_bridge_irradiance"
+ extension: ".dds"
+ }
+ }
+}
diff --git a/tests/manual/skinned-mesh/SkinnedEntity.qml b/tests/manual/skinned-mesh/SkinnedEntity.qml
new file mode 100644
index 000000000..f1c3ee0c2
--- /dev/null
+++ b/tests/manual/skinned-mesh/SkinnedEntity.qml
@@ -0,0 +1,41 @@
+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 createJointsEnabled: skeleton.createJointsEnabled
+ property alias transform: transform
+ property color baseColor: "red"
+ property alias rootJoint: skeleton.rootJoint
+ property alias skeleton: skeleton
+
+ components: [
+ Transform {
+ id: transform
+ rotationX: -90
+ },
+ Mesh {
+ source: root.source
+ },
+ Armature {
+ skeleton: SkeletonLoader {
+ id: skeleton
+ 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..c1c383a74
--- /dev/null
+++ b/tests/manual/skinned-mesh/SkinnedPbrEffect.qml
@@ -0,0 +1,39 @@
+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/metalrough.frag.json"
+ enabledLayers: ["baseColor", "metalness", "roughness", "ambientOcclusion", "normal"]
+ }
+ }
+ }
+ ]
+}
diff --git a/tests/manual/skinned-mesh/jump.json b/tests/manual/skinned-mesh/jump.json
new file mode 100644
index 000000000..7d7447a40
--- /dev/null
+++ b/tests/manual/skinned-mesh/jump.json
@@ -0,0 +1,4571 @@
+{
+ "animations": [
+ {
+ "animationName": "Jump",
+ "channels": [
+ {
+ "channelComponents": [
+ {
+ "channelComponentName": "Location X",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ],
+ "leftHandle": [
+ -0.3090757727622986,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.3090757528940837,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 0.7916666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 0.482590913772583,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.9543381532033285,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.2083333333333333,
+ -0.5
+ ],
+ "leftHandle": [
+ 1.0456618467966716,
+ -0.5
+ ],
+ "rightHandle": [
+ 1.2896690368652344,
+ -0.5
+ ]
+ },
+ {
+ "coords": [
+ 1.4166666666666667,
+ -0.5
+ ],
+ "leftHandle": [
+ 1.3353309631347656,
+ -0.5
+ ],
+ "rightHandle": [
+ 1.5305366516113281,
+ -0.5
+ ]
+ },
+ {
+ "coords": [
+ 1.7083333333333333,
+ 2.5
+ ],
+ "leftHandle": [
+ 1.5944633483886719,
+ 1.4873701333999634
+ ],
+ "rightHandle": [
+ 1.838470458984375,
+ 3.6572914123535156
+ ]
+ },
+ {
+ "coords": [
+ 2.0416666666666665,
+ 5.0
+ ],
+ "leftHandle": [
+ 1.911529541015625,
+ 5.0
+ ],
+ "rightHandle": [
+ 2.5296810468037925,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 3.2916666666666665,
+ 5.0
+ ],
+ "leftHandle": [
+ 2.8036524454752603,
+ 5.0
+ ],
+ "rightHandle": [
+ 3.405536651611328,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 3.5833333333333335,
+ 5.0
+ ],
+ "leftHandle": [
+ 3.469463348388672,
+ 5.0
+ ],
+ "rightHandle": [
+ 3.6972033182779946,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 3.875,
+ 5.0
+ ],
+ "leftHandle": [
+ 3.7611300150553384,
+ 5.0
+ ],
+ "rightHandle": [
+ 3.9888699849446616,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 4.166666666666667,
+ 5.0
+ ],
+ "leftHandle": [
+ 4.052796681722005,
+ 5.0
+ ],
+ "rightHandle": [
+ 4.248002370198567,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 4.375,
+ 5.0
+ ],
+ "leftHandle": [
+ 4.293664296468099,
+ 5.0
+ ],
+ "rightHandle": [
+ 4.456335703531901,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 4.583333333333333,
+ 5.0
+ ],
+ "leftHandle": [
+ 4.501997629801433,
+ 5.0
+ ],
+ "rightHandle": [
+ 4.664669036865234,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 4.791666666666667,
+ 5.0
+ ],
+ "leftHandle": [
+ 4.710330963134766,
+ 5.0
+ ],
+ "rightHandle": [
+ 4.873002370198567,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 5.0,
+ 5.0
+ ],
+ "leftHandle": [
+ 4.918664296468099,
+ 5.0
+ ],
+ "rightHandle": [
+ 5.081335703531901,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 5.208333333333333,
+ 5.0
+ ],
+ "leftHandle": [
+ 5.126997629801433,
+ 5.0
+ ],
+ "rightHandle": [
+ 5.598744710286458,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 6.208333333333333,
+ 5.0
+ ],
+ "leftHandle": [
+ 5.817921956380208,
+ 5.0
+ ],
+ "rightHandle": [
+ 6.371004740397136,
+ 5.0
+ ]
+ },
+ {
+ "coords": [
+ 6.625,
+ 5.5
+ ],
+ "leftHandle": [
+ 6.462328592936198,
+ 5.5
+ ],
+ "rightHandle": [
+ 6.706335703531901,
+ 5.5
+ ]
+ },
+ {
+ "coords": [
+ 6.833333333333333,
+ 5.5
+ ],
+ "leftHandle": [
+ 6.751997629801433,
+ 5.5
+ ],
+ "rightHandle": [
+ 6.947203318277995,
+ 5.5
+ ]
+ },
+ {
+ "coords": [
+ 7.125,
+ 2.5
+ ],
+ "leftHandle": [
+ 7.011130015055339,
+ 3.512629985809326
+ ],
+ "rightHandle": [
+ 7.255137125651042,
+ 1.342708706855774
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 7.328196207682292,
+ 0.0
+ ],
+ "rightHandle": [
+ 7.946347554524739,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 8.708333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 8.220319112141928,
+ 0.0
+ ],
+ "rightHandle": [
+ 8.822203318277994,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.0,
+ 0.0
+ ],
+ "leftHandle": [
+ 8.886130015055338,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.113869984944662,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.291666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.177796681722006,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.405536651611328,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.583333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.469463348388672,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.664669036865234,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.791666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.710330963134766,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.873002370198568,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.9186642964681,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.0813357035319,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.208333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 10.126997629801432,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.289669036865234,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.416666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 10.335330963134766,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.498002370198568,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.625,
+ 0.0
+ ],
+ "leftHandle": [
+ 10.5436642964681,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.7063357035319,
+ 0.0
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Location Z",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ],
+ "leftHandle": [
+ -0.3090757727622986,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.3090757528940837,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 0.7916666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 0.482590913772583,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.9543381532033285,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.2083333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.0456618467966716,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.2896690368652344,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.4166666666666667,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.3353309631347656,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.5305366516113281,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.7083333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.5944633483886719,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.838470458984375,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 2.0416666666666665,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.911529541015625,
+ 0.0
+ ],
+ "rightHandle": [
+ 2.5296810468037925,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.2916666666666665,
+ 0.0
+ ],
+ "leftHandle": [
+ 2.8036524454752603,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.405536651611328,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.5833333333333335,
+ 0.0
+ ],
+ "leftHandle": [
+ 3.469463348388672,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.6972033182779946,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.875,
+ 0.0
+ ],
+ "leftHandle": [
+ 3.7611300150553384,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.9888699849446616,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 4.166666666666667,
+ 0.0
+ ],
+ "leftHandle": [
+ 4.052796681722005,
+ 0.0
+ ],
+ "rightHandle": [
+ 4.248002370198567,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 4.375,
+ 0.0
+ ],
+ "leftHandle": [
+ 4.293664296468099,
+ 0.0
+ ],
+ "rightHandle": [
+ 4.456335703531901,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 4.583333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 4.501997629801433,
+ 0.0
+ ],
+ "rightHandle": [
+ 4.664669036865234,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 4.791666666666667,
+ 0.0
+ ],
+ "leftHandle": [
+ 4.710330963134766,
+ 0.0
+ ],
+ "rightHandle": [
+ 4.873002370198567,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 5.0,
+ 0.0
+ ],
+ "leftHandle": [
+ 4.918664296468099,
+ 0.0
+ ],
+ "rightHandle": [
+ 5.081335703531901,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 5.208333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 5.126997629801433,
+ 0.0
+ ],
+ "rightHandle": [
+ 5.598744710286458,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 6.208333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 5.817921956380208,
+ 0.0
+ ],
+ "rightHandle": [
+ 6.371004740397136,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 6.625,
+ 0.0
+ ],
+ "leftHandle": [
+ 6.462328592936198,
+ 0.0
+ ],
+ "rightHandle": [
+ 6.706335703531901,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 6.833333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 6.751997629801433,
+ 0.0
+ ],
+ "rightHandle": [
+ 6.947203318277995,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 7.125,
+ 0.0
+ ],
+ "leftHandle": [
+ 7.011130015055339,
+ 0.0
+ ],
+ "rightHandle": [
+ 7.255137125651042,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 7.328196207682292,
+ 0.0
+ ],
+ "rightHandle": [
+ 7.946347554524739,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 8.708333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 8.220319112141928,
+ 0.0
+ ],
+ "rightHandle": [
+ 8.822203318277994,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.0,
+ 0.0
+ ],
+ "leftHandle": [
+ 8.886130015055338,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.113869984944662,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.291666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.177796681722006,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.405536651611328,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.583333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.469463348388672,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.664669036865234,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.791666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.710330963134766,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.873002370198568,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.9186642964681,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.0813357035319,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.208333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 10.126997629801432,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.289669036865234,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.416666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 10.335330963134766,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.498002370198568,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.625,
+ 0.0
+ ],
+ "leftHandle": [
+ 10.5436642964681,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.7063357035319,
+ 0.0
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Location Y",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ],
+ "leftHandle": [
+ -0.3090757727622986,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.3090757528940837,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 0.7916666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 0.482590913772583,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.9543381532033285,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.2083333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.0456618467966716,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.2896690368652344,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.4166666666666667,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.3353309631347656,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.5305366516113281,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.7083333333333333,
+ 2.0
+ ],
+ "leftHandle": [
+ 1.5944633483886719,
+ 2.0
+ ],
+ "rightHandle": [
+ 1.838470458984375,
+ 2.0
+ ]
+ },
+ {
+ "coords": [
+ 2.0416666666666665,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.911529541015625,
+ 0.0
+ ],
+ "rightHandle": [
+ 2.5296810468037925,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.2916666666666665,
+ 0.0
+ ],
+ "leftHandle": [
+ 2.8036524454752603,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.405536651611328,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.5833333333333335,
+ 0.0
+ ],
+ "leftHandle": [
+ 3.469463348388672,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.6972033182779946,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.875,
+ 0.5
+ ],
+ "leftHandle": [
+ 3.7611300150553384,
+ 0.5
+ ],
+ "rightHandle": [
+ 3.9888699849446616,
+ 0.5
+ ]
+ },
+ {
+ "coords": [
+ 4.166666666666667,
+ 0.0
+ ],
+ "leftHandle": [
+ 4.052796681722005,
+ 0.0
+ ],
+ "rightHandle": [
+ 4.248002370198567,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 4.375,
+ 0.0
+ ],
+ "leftHandle": [
+ 4.293664296468099,
+ 0.0
+ ],
+ "rightHandle": [
+ 4.456335703531901,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 4.583333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 4.501997629801433,
+ 0.0
+ ],
+ "rightHandle": [
+ 4.664669036865234,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 4.791666666666667,
+ 0.0
+ ],
+ "leftHandle": [
+ 4.710330963134766,
+ 0.0
+ ],
+ "rightHandle": [
+ 4.873002370198567,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 5.0,
+ 0.30000001192092896
+ ],
+ "leftHandle": [
+ 4.918664296468099,
+ 0.30000001192092896
+ ],
+ "rightHandle": [
+ 5.081335703531901,
+ 0.30000001192092896
+ ]
+ },
+ {
+ "coords": [
+ 5.208333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 5.126997629801433,
+ 0.0
+ ],
+ "rightHandle": [
+ 5.598744710286458,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 6.208333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 5.817921956380208,
+ 0.0
+ ],
+ "rightHandle": [
+ 6.371004740397136,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 6.625,
+ 0.0
+ ],
+ "leftHandle": [
+ 6.462328592936198,
+ 0.0
+ ],
+ "rightHandle": [
+ 6.706335703531901,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 6.833333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 6.751997629801433,
+ 0.0
+ ],
+ "rightHandle": [
+ 6.947203318277995,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 7.125,
+ 2.0
+ ],
+ "leftHandle": [
+ 7.011130015055339,
+ 2.0
+ ],
+ "rightHandle": [
+ 7.255137125651042,
+ 2.0
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 7.328196207682292,
+ 0.0
+ ],
+ "rightHandle": [
+ 7.946347554524739,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 8.708333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 8.220319112141928,
+ 0.0
+ ],
+ "rightHandle": [
+ 8.822203318277994,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.0,
+ 0.0
+ ],
+ "leftHandle": [
+ 8.886130015055338,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.113869984944662,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.291666666666666,
+ 0.5
+ ],
+ "leftHandle": [
+ 9.177796681722006,
+ 0.5
+ ],
+ "rightHandle": [
+ 9.405536651611328,
+ 0.5
+ ]
+ },
+ {
+ "coords": [
+ 9.583333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.469463348388672,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.664669036865234,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.791666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.710330963134766,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.873002370198568,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 0.0
+ ],
+ "leftHandle": [
+ 9.9186642964681,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.0813357035319,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.208333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 10.126997629801432,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.289669036865234,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 10.416666666666666,
+ 0.30000001192092896
+ ],
+ "leftHandle": [
+ 10.335330963134766,
+ 0.30000001192092896
+ ],
+ "rightHandle": [
+ 10.498002370198568,
+ 0.30000001192092896
+ ]
+ },
+ {
+ "coords": [
+ 10.625,
+ 0.0
+ ],
+ "leftHandle": [
+ 10.5436642964681,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.7063357035319,
+ 0.0
+ ]
+ }
+ ]
+ }
+ ],
+ "channelName": "Location",
+ "jointIndex": 0
+ },
+ {
+ "channelComponents": [
+ {
+ "channelComponentName": "Scale X",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ -0.3090757926305135,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 0.3090757528940837,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 0.7916666666666666,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 0.482590913772583,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 0.9543381532033285,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 1.2083333333333333,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 1.0456618467966716,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 1.6150120099385579,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 1.4166666666666667,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 1.0099881490071614,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 1.5305366516113281,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 1.7083333333333333,
+ 0.8000703454017639
+ ],
+ "leftHandle": [
+ 1.5944633483886719,
+ 0.8000703454017639
+ ],
+ "rightHandle": [
+ 1.838470458984375,
+ 0.8000703454017639
+ ]
+ },
+ {
+ "coords": [
+ 2.0416666666666665,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 1.9603309631347656,
+ 1.0536658763885498
+ ],
+ "rightHandle": [
+ 2.057933807373047,
+ 1.229351282119751
+ ]
+ },
+ {
+ "coords": [
+ 2.0833333333333335,
+ 1.3000702857971191
+ ],
+ "leftHandle": [
+ 2.0386231740315757,
+ 1.3000702857971191
+ ],
+ "rightHandle": [
+ 2.1339289347330728,
+ 1.3000702857971191
+ ]
+ },
+ {
+ "coords": [
+ 2.2083333333333335,
+ 0.9400703310966492
+ ],
+ "leftHandle": [
+ 2.1606807708740234,
+ 0.9400703310966492
+ ],
+ "rightHandle": [
+ 2.255985895792643,
+ 0.9400703310966492
+ ]
+ },
+ {
+ "coords": [
+ 2.3333333333333335,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 2.2827377319335938,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 2.3780434926350913,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 3.2916666666666665,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 2.917522430419922,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 3.405536651611328,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 3.5833333333333335,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 3.469463348388672,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 3.6972033182779946,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 3.875,
+ 0.8000703454017639
+ ],
+ "leftHandle": [
+ 3.7611300150553384,
+ 0.8000703454017639
+ ],
+ "rightHandle": [
+ 3.9888699849446616,
+ 0.8000703454017639
+ ]
+ },
+ {
+ "coords": [
+ 4.166666666666667,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 4.052796681722005,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 4.248002370198567,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 4.375,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 4.293664296468099,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 4.456335703531901,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 4.583333333333333,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 4.501997629801433,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 4.664669036865234,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 4.791666666666667,
+ 1.1000703573226929
+ ],
+ "leftHandle": [
+ 4.710330963134766,
+ 1.1508238315582275
+ ],
+ "rightHandle": [
+ 4.873002370198567,
+ 1.0493168830871582
+ ]
+ },
+ {
+ "coords": [
+ 5.0,
+ 0.9400703310966492
+ ],
+ "leftHandle": [
+ 4.918664296468099,
+ 0.9400703310966492
+ ],
+ "rightHandle": [
+ 5.081335703531901,
+ 0.9400703310966492
+ ]
+ },
+ {
+ "coords": [
+ 5.208333333333333,
+ 1.1000703573226929
+ ],
+ "leftHandle": [
+ 5.126997629801433,
+ 1.1000703573226929
+ ],
+ "rightHandle": [
+ 5.2734018961588545,
+ 1.1000703573226929
+ ]
+ },
+ {
+ "coords": [
+ 5.375,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 5.3099314371744795,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 5.7003428141276045,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 6.208333333333333,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 5.8829905192057295,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 6.371004740397136,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 6.625,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 6.462328592936198,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 7.031678517659505,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 6.833333333333333,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 6.426654815673828,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 6.947203318277995,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 7.125,
+ 0.8000703454017639
+ ],
+ "leftHandle": [
+ 7.011130015055339,
+ 0.8000703454017639
+ ],
+ "rightHandle": [
+ 7.255137125651042,
+ 0.8000703454017639
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 7.376997629801433,
+ 1.0536658763885498
+ ],
+ "rightHandle": [
+ 7.474600474039714,
+ 1.229351282119751
+ ]
+ },
+ {
+ "coords": [
+ 7.5,
+ 1.3000702857971191
+ ],
+ "leftHandle": [
+ 7.455289204915364,
+ 1.3000702857971191
+ ],
+ "rightHandle": [
+ 7.550595601399739,
+ 1.3000702857971191
+ ]
+ },
+ {
+ "coords": [
+ 7.625,
+ 0.9400703310966492
+ ],
+ "leftHandle": [
+ 7.5773468017578125,
+ 0.9400703310966492
+ ],
+ "rightHandle": [
+ 7.6726531982421875,
+ 0.9400703310966492
+ ]
+ },
+ {
+ "coords": [
+ 7.75,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 7.699404398600261,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 7.794710795084636,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 8.708333333333334,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 8.334189097086588,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 8.822203318277994,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 9.0,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 8.886130015055338,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 9.113869984944662,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 9.291666666666666,
+ 0.8000703454017639
+ ],
+ "leftHandle": [
+ 9.177796681722006,
+ 0.8000703454017639
+ ],
+ "rightHandle": [
+ 9.405536651611328,
+ 0.8000703454017639
+ ]
+ },
+ {
+ "coords": [
+ 9.583333333333334,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 9.469462076822916,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 9.664667765299479,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 9.791666666666666,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 9.710332234700521,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 9.873001098632812,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 9.918665568033854,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 10.081334431966146,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 10.208333333333334,
+ 1.1000703573226929
+ ],
+ "leftHandle": [
+ 10.126998901367188,
+ 1.1000703573226929
+ ],
+ "rightHandle": [
+ 10.289667765299479,
+ 1.1000703573226929
+ ]
+ },
+ {
+ "coords": [
+ 10.416666666666666,
+ 0.9400703310966492
+ ],
+ "leftHandle": [
+ 10.335332234700521,
+ 0.9400703310966492
+ ],
+ "rightHandle": [
+ 10.498001098632812,
+ 0.9400703310966492
+ ]
+ },
+ {
+ "coords": [
+ 10.625,
+ 1.1000703573226929
+ ],
+ "leftHandle": [
+ 10.543665568033854,
+ 1.1000703573226929
+ ],
+ "rightHandle": [
+ 10.690068562825521,
+ 1.1000703573226929
+ ]
+ },
+ {
+ "coords": [
+ 10.791666666666666,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 10.726598103841146,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 10.856735229492188,
+ 1.000070333480835
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Scale Z",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ -0.3090757926305135,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 0.3090757528940837,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 0.7916666666666666,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 0.482590913772583,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 0.9543381532033285,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 1.2083333333333333,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 1.0456618467966716,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 1.6150120099385579,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 1.4166666666666667,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 1.0099881490071614,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 1.5305366516113281,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 1.7083333333333333,
+ 0.8000703454017639
+ ],
+ "leftHandle": [
+ 1.5944633483886719,
+ 0.8000703454017639
+ ],
+ "rightHandle": [
+ 1.838470458984375,
+ 0.8000703454017639
+ ]
+ },
+ {
+ "coords": [
+ 2.0416666666666665,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 1.9603309631347656,
+ 1.0536658763885498
+ ],
+ "rightHandle": [
+ 2.057933807373047,
+ 1.229351282119751
+ ]
+ },
+ {
+ "coords": [
+ 2.0833333333333335,
+ 1.3000702857971191
+ ],
+ "leftHandle": [
+ 2.0386231740315757,
+ 1.3000702857971191
+ ],
+ "rightHandle": [
+ 2.1339289347330728,
+ 1.3000702857971191
+ ]
+ },
+ {
+ "coords": [
+ 2.2083333333333335,
+ 0.9400703310966492
+ ],
+ "leftHandle": [
+ 2.1606807708740234,
+ 0.9400703310966492
+ ],
+ "rightHandle": [
+ 2.255985895792643,
+ 0.9400703310966492
+ ]
+ },
+ {
+ "coords": [
+ 2.3333333333333335,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 2.2827377319335938,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 2.3780434926350913,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 3.2916666666666665,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 2.917522430419922,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 3.405536651611328,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 3.5833333333333335,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 3.469463348388672,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 3.6972033182779946,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 3.875,
+ 0.8000703454017639
+ ],
+ "leftHandle": [
+ 3.7611300150553384,
+ 0.8000703454017639
+ ],
+ "rightHandle": [
+ 3.9888699849446616,
+ 0.8000703454017639
+ ]
+ },
+ {
+ "coords": [
+ 4.166666666666667,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 4.052796681722005,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 4.248002370198567,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 4.375,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 4.293664296468099,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 4.456335703531901,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 4.583333333333333,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 4.501997629801433,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 4.664669036865234,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 4.791666666666667,
+ 1.1000703573226929
+ ],
+ "leftHandle": [
+ 4.710330963134766,
+ 1.1508238315582275
+ ],
+ "rightHandle": [
+ 4.873002370198567,
+ 1.0493168830871582
+ ]
+ },
+ {
+ "coords": [
+ 5.0,
+ 0.9400703310966492
+ ],
+ "leftHandle": [
+ 4.918664296468099,
+ 0.9400703310966492
+ ],
+ "rightHandle": [
+ 5.081335703531901,
+ 0.9400703310966492
+ ]
+ },
+ {
+ "coords": [
+ 5.208333333333333,
+ 1.1000703573226929
+ ],
+ "leftHandle": [
+ 5.126997629801433,
+ 1.1000703573226929
+ ],
+ "rightHandle": [
+ 5.2734018961588545,
+ 1.1000703573226929
+ ]
+ },
+ {
+ "coords": [
+ 5.375,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 5.3099314371744795,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 5.7003428141276045,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 6.208333333333333,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 5.8829905192057295,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 6.371004740397136,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 6.625,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 6.462328592936198,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 7.031678517659505,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 6.833333333333333,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 6.426654815673828,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 6.947203318277995,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 7.125,
+ 0.8000703454017639
+ ],
+ "leftHandle": [
+ 7.011130015055339,
+ 0.8000703454017639
+ ],
+ "rightHandle": [
+ 7.255137125651042,
+ 0.8000703454017639
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 7.376997629801433,
+ 1.0536658763885498
+ ],
+ "rightHandle": [
+ 7.474600474039714,
+ 1.229351282119751
+ ]
+ },
+ {
+ "coords": [
+ 7.5,
+ 1.3000702857971191
+ ],
+ "leftHandle": [
+ 7.455289204915364,
+ 1.3000702857971191
+ ],
+ "rightHandle": [
+ 7.550595601399739,
+ 1.3000702857971191
+ ]
+ },
+ {
+ "coords": [
+ 7.625,
+ 0.9400703310966492
+ ],
+ "leftHandle": [
+ 7.5773468017578125,
+ 0.9400703310966492
+ ],
+ "rightHandle": [
+ 7.6726531982421875,
+ 0.9400703310966492
+ ]
+ },
+ {
+ "coords": [
+ 7.75,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 7.699404398600261,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 7.794710795084636,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 8.708333333333334,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 8.334189097086588,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 8.822203318277994,
+ 1.000070333480835
+ ]
+ },
+ {
+ "coords": [
+ 9.0,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 8.886130015055338,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 9.113869984944662,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 9.291666666666666,
+ 0.8000703454017639
+ ],
+ "leftHandle": [
+ 9.177796681722006,
+ 0.8000703454017639
+ ],
+ "rightHandle": [
+ 9.405536651611328,
+ 0.8000703454017639
+ ]
+ },
+ {
+ "coords": [
+ 9.583333333333334,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 9.469462076822916,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 9.664667765299479,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 9.791666666666666,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 9.710332234700521,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 9.873001098632812,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 1.2000703811645508
+ ],
+ "leftHandle": [
+ 9.918665568033854,
+ 1.2000703811645508
+ ],
+ "rightHandle": [
+ 10.081334431966146,
+ 1.2000703811645508
+ ]
+ },
+ {
+ "coords": [
+ 10.208333333333334,
+ 1.1000703573226929
+ ],
+ "leftHandle": [
+ 10.126998901367188,
+ 1.1508238315582275
+ ],
+ "rightHandle": [
+ 10.289667765299479,
+ 1.0493168830871582
+ ]
+ },
+ {
+ "coords": [
+ 10.416666666666666,
+ 0.9400703310966492
+ ],
+ "leftHandle": [
+ 10.335332234700521,
+ 0.9400703310966492
+ ],
+ "rightHandle": [
+ 10.498001098632812,
+ 0.9400703310966492
+ ]
+ },
+ {
+ "coords": [
+ 10.625,
+ 1.1000703573226929
+ ],
+ "leftHandle": [
+ 10.543665568033854,
+ 1.1000703573226929
+ ],
+ "rightHandle": [
+ 10.690068562825521,
+ 1.1000703573226929
+ ]
+ },
+ {
+ "coords": [
+ 10.791666666666666,
+ 1.000070333480835
+ ],
+ "leftHandle": [
+ 10.726598103841146,
+ 1.000070333480835
+ ],
+ "rightHandle": [
+ 10.856735229492188,
+ 1.000070333480835
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Scale Y",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 1.0
+ ],
+ "leftHandle": [
+ -0.30907583236694336,
+ 1.0
+ ],
+ "rightHandle": [
+ 0.3090757528940837,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 0.7916666666666666,
+ 1.0
+ ],
+ "leftHandle": [
+ 0.44092432657877606,
+ 1.0
+ ],
+ "rightHandle": [
+ 0.9126714070638021,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 1.2083333333333333,
+ 0.6000000238418579
+ ],
+ "leftHandle": [
+ 1.0039952596028645,
+ 0.6000000238418579
+ ],
+ "rightHandle": [
+ 1.5733451843261719,
+ 0.6000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 1.4166666666666667,
+ 0.6000000238418579
+ ],
+ "leftHandle": [
+ 1.0099881490071614,
+ 0.6000000238418579
+ ],
+ "rightHandle": [
+ 1.5305366516113281,
+ 0.6000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 1.7083333333333333,
+ 1.2000000476837158
+ ],
+ "leftHandle": [
+ 1.5527966817220051,
+ 1.2000000476837158
+ ],
+ "rightHandle": [
+ 1.7968037923177083,
+ 1.2000000476837158
+ ]
+ },
+ {
+ "coords": [
+ 2.0416666666666665,
+ 0.550000011920929
+ ],
+ "leftHandle": [
+ 1.996956507364909,
+ 0.550000011920929
+ ],
+ "rightHandle": [
+ 2.0922622680664062,
+ 0.550000011920929
+ ]
+ },
+ {
+ "coords": [
+ 2.2083333333333335,
+ 1.0499999523162842
+ ],
+ "leftHandle": [
+ 2.119014104207357,
+ 1.0499999523162842
+ ],
+ "rightHandle": [
+ 2.2143192291259766,
+ 1.0499999523162842
+ ]
+ },
+ {
+ "coords": [
+ 2.3333333333333335,
+ 1.0
+ ],
+ "leftHandle": [
+ 2.2827377319335938,
+ 1.0
+ ],
+ "rightHandle": [
+ 2.3780434926350913,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 3.2916666666666665,
+ 1.0
+ ],
+ "leftHandle": [
+ 2.8758557637532554,
+ 1.0
+ ],
+ "rightHandle": [
+ 3.3638699849446616,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 3.5833333333333335,
+ 0.6000000238418579
+ ],
+ "leftHandle": [
+ 3.469463348388672,
+ 0.6000000238418579
+ ],
+ "rightHandle": [
+ 3.6972033182779946,
+ 0.6000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 3.875,
+ 1.100000023841858
+ ],
+ "leftHandle": [
+ 3.719463348388672,
+ 1.100000023841858
+ ],
+ "rightHandle": [
+ 3.9472033182779946,
+ 1.100000023841858
+ ]
+ },
+ {
+ "coords": [
+ 4.125,
+ 0.800000011920929
+ ],
+ "leftHandle": [
+ 4.011130015055339,
+ 0.800000011920929
+ ],
+ "rightHandle": [
+ 4.206335703531901,
+ 0.800000011920929
+ ]
+ },
+ {
+ "coords": [
+ 4.375,
+ 1.0
+ ],
+ "leftHandle": [
+ 4.251997629801433,
+ 1.0
+ ],
+ "rightHandle": [
+ 4.414669036865234,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 4.583333333333333,
+ 1.0
+ ],
+ "leftHandle": [
+ 4.501997629801433,
+ 1.0
+ ],
+ "rightHandle": [
+ 4.664669036865234,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 4.791666666666667,
+ 0.8999999761581421
+ ],
+ "leftHandle": [
+ 4.668664296468099,
+ 0.8999999761581421
+ ],
+ "rightHandle": [
+ 4.831335703531901,
+ 0.8999999761581421
+ ]
+ },
+ {
+ "coords": [
+ 5.0,
+ 1.0499999523162842
+ ],
+ "leftHandle": [
+ 4.918664296468099,
+ 1.0499999523162842
+ ],
+ "rightHandle": [
+ 5.081335703531901,
+ 1.0499999523162842
+ ]
+ },
+ {
+ "coords": [
+ 5.208333333333333,
+ 0.8999999761581421
+ ],
+ "leftHandle": [
+ 5.085330963134766,
+ 0.8999999761581421
+ ],
+ "rightHandle": [
+ 5.2317352294921875,
+ 0.8999999761581421
+ ]
+ },
+ {
+ "coords": [
+ 5.375,
+ 1.0
+ ],
+ "leftHandle": [
+ 5.2682647705078125,
+ 1.0
+ ],
+ "rightHandle": [
+ 5.6586761474609375,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 6.208333333333333,
+ 1.0
+ ],
+ "leftHandle": [
+ 5.8413238525390625,
+ 1.0
+ ],
+ "rightHandle": [
+ 6.329338073730469,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 6.625,
+ 0.6000000238418579
+ ],
+ "leftHandle": [
+ 6.420661926269531,
+ 0.6000000238418579
+ ],
+ "rightHandle": [
+ 6.990011850992839,
+ 0.6000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 6.791666666666667,
+ 0.6000000238418579
+ ],
+ "leftHandle": [
+ 6.384988149007161,
+ 0.6000000238418579
+ ],
+ "rightHandle": [
+ 6.905536651611328,
+ 0.6000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 7.125,
+ 1.2000000476837158
+ ],
+ "leftHandle": [
+ 6.969463348388672,
+ 1.2000000476837158
+ ],
+ "rightHandle": [
+ 7.213470458984375,
+ 1.2000000476837158
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 0.800000011920929
+ ],
+ "leftHandle": [
+ 7.3353322347005205,
+ 1.0928102731704712
+ ],
+ "rightHandle": [
+ 7.4631195068359375,
+ 0.7886062860488892
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 0.550000011920929
+ ],
+ "leftHandle": [
+ 7.413622538248698,
+ 0.550000011920929
+ ],
+ "rightHandle": [
+ 7.508928934733073,
+ 0.550000011920929
+ ]
+ },
+ {
+ "coords": [
+ 7.625,
+ 1.0499999523162842
+ ],
+ "leftHandle": [
+ 7.5356801350911455,
+ 1.0499999523162842
+ ],
+ "rightHandle": [
+ 7.6309865315755205,
+ 1.0499999523162842
+ ]
+ },
+ {
+ "coords": [
+ 7.75,
+ 1.0
+ ],
+ "leftHandle": [
+ 7.699404398600261,
+ 1.0
+ ],
+ "rightHandle": [
+ 7.794710795084636,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 8.708333333333334,
+ 1.0
+ ],
+ "leftHandle": [
+ 8.292522430419922,
+ 1.0
+ ],
+ "rightHandle": [
+ 8.780536651611328,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 8.958333333333334,
+ 0.6000000238418579
+ ],
+ "leftHandle": [
+ 8.844463348388672,
+ 0.6000000238418579
+ ],
+ "rightHandle": [
+ 9.07220458984375,
+ 0.6000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 9.291666666666666,
+ 1.100000023841858
+ ],
+ "leftHandle": [
+ 9.136128743489584,
+ 1.100000023841858
+ ],
+ "rightHandle": [
+ 9.363871256510416,
+ 1.100000023841858
+ ]
+ },
+ {
+ "coords": [
+ 9.541666666666666,
+ 0.800000011920929
+ ],
+ "leftHandle": [
+ 9.42779541015625,
+ 0.800000011920929
+ ],
+ "rightHandle": [
+ 9.623001098632812,
+ 0.800000011920929
+ ]
+ },
+ {
+ "coords": [
+ 9.791666666666666,
+ 1.0
+ ],
+ "leftHandle": [
+ 9.668665568033854,
+ 1.0
+ ],
+ "rightHandle": [
+ 9.831334431966146,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 1.0
+ ],
+ "leftHandle": [
+ 9.918665568033854,
+ 1.0
+ ],
+ "rightHandle": [
+ 10.081334431966146,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 10.208333333333334,
+ 0.8999999761581421
+ ],
+ "leftHandle": [
+ 10.085332234700521,
+ 0.8999999761581421
+ ],
+ "rightHandle": [
+ 10.248001098632812,
+ 0.8999999761581421
+ ]
+ },
+ {
+ "coords": [
+ 10.416666666666666,
+ 1.0499999523162842
+ ],
+ "leftHandle": [
+ 10.335332234700521,
+ 1.0499999523162842
+ ],
+ "rightHandle": [
+ 10.498001098632812,
+ 1.0499999523162842
+ ]
+ },
+ {
+ "coords": [
+ 10.625,
+ 0.8999999761581421
+ ],
+ "leftHandle": [
+ 10.501998901367188,
+ 0.8999999761581421
+ ],
+ "rightHandle": [
+ 10.648401896158854,
+ 0.8999999761581421
+ ]
+ },
+ {
+ "coords": [
+ 10.791666666666666,
+ 1.0
+ ],
+ "leftHandle": [
+ 10.684931437174479,
+ 1.0
+ ],
+ "rightHandle": [
+ 10.815068562825521,
+ 1.0
+ ]
+ }
+ ]
+ }
+ ],
+ "channelName": "Scale",
+ "jointIndex": 0
+ },
+ {
+ "channelComponents": [
+ {
+ "channelComponentName": "Rotation W",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 1.0
+ ],
+ "leftHandle": [
+ -0.3090757727622986,
+ 1.0
+ ],
+ "rightHandle": [
+ 0.3090757528940837,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 0.7916666666666666,
+ 1.0
+ ],
+ "leftHandle": [
+ 0.482590913772583,
+ 1.0
+ ],
+ "rightHandle": [
+ 0.9543381532033285,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 1.2083333333333333,
+ 1.0
+ ],
+ "leftHandle": [
+ 1.0456618467966716,
+ 1.0
+ ],
+ "rightHandle": [
+ 1.2896690368652344,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 1.4166666666666667,
+ 1.0
+ ],
+ "leftHandle": [
+ 1.3353309631347656,
+ 1.0
+ ],
+ "rightHandle": [
+ 1.4817352294921875,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 1.5833333333333333,
+ 0.9848077893257141
+ ],
+ "leftHandle": [
+ 1.5182647705078125,
+ 0.9848077893257141
+ ],
+ "rightHandle": [
+ 1.6809361775716145,
+ 0.9848077893257141
+ ]
+ },
+ {
+ "coords": [
+ 1.8333333333333333,
+ 0.9961948394775391
+ ],
+ "leftHandle": [
+ 1.735730489095052,
+ 0.9930806159973145
+ ],
+ "rightHandle": [
+ 1.9146690368652344,
+ 0.9987900257110596
+ ]
+ },
+ {
+ "coords": [
+ 2.0416666666666665,
+ 1.000000238418579
+ ],
+ "leftHandle": [
+ 1.9603309631347656,
+ 1.000000238418579
+ ],
+ "rightHandle": [
+ 2.448345343271891,
+ 1.000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 3.2916666666666665,
+ 1.000000238418579
+ ],
+ "leftHandle": [
+ 2.8036524454752603,
+ 1.000000238418579
+ ],
+ "rightHandle": [
+ 3.405536651611328,
+ 1.000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 3.5833333333333335,
+ 1.000000238418579
+ ],
+ "leftHandle": [
+ 3.469463348388672,
+ 1.000000238418579
+ ],
+ "rightHandle": [
+ 3.6972033182779946,
+ 1.000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 3.875,
+ 0.8191520571708679
+ ],
+ "leftHandle": [
+ 3.7611300150553384,
+ 0.9475935697555542
+ ],
+ "rightHandle": [
+ 3.9888699849446616,
+ 0.6907105445861816
+ ]
+ },
+ {
+ "coords": [
+ 4.166666666666667,
+ 0.3420201539993286
+ ],
+ "leftHandle": [
+ 4.052796681722005,
+ 0.3420201539993286
+ ],
+ "rightHandle": [
+ 4.248002370198567,
+ 0.3420201539993286
+ ]
+ },
+ {
+ "coords": [
+ 4.375,
+ 0.3420201539993286
+ ],
+ "leftHandle": [
+ 4.293664296468099,
+ 0.3420201539993286
+ ],
+ "rightHandle": [
+ 4.456335703531901,
+ 0.3420201539993286
+ ]
+ },
+ {
+ "coords": [
+ 4.583333333333333,
+ 0.3420201539993286
+ ],
+ "leftHandle": [
+ 4.501997629801433,
+ 0.3420201539993286
+ ],
+ "rightHandle": [
+ 4.664669036865234,
+ 0.3420201539993286
+ ]
+ },
+ {
+ "coords": [
+ 4.791666666666667,
+ 0.3420201539993286
+ ],
+ "leftHandle": [
+ 4.710330963134766,
+ 0.3420201539993286
+ ],
+ "rightHandle": [
+ 4.873002370198567,
+ 0.3420201539993286
+ ]
+ },
+ {
+ "coords": [
+ 5.0,
+ 0.17364823818206787
+ ],
+ "leftHandle": [
+ 4.918664296468099,
+ 0.24041254818439484
+ ],
+ "rightHandle": [
+ 5.081335703531901,
+ 0.1068839281797409
+ ]
+ },
+ {
+ "coords": [
+ 5.208333333333333,
+ -5.960464477539063e-08
+ ],
+ "leftHandle": [
+ 5.126997629801433,
+ -5.960464477539063e-08
+ ],
+ "rightHandle": [
+ 5.598744710286458,
+ -5.960464477539063e-08
+ ]
+ },
+ {
+ "coords": [
+ 6.208333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 5.817921956380208,
+ -5.960464477539063e-08
+ ],
+ "rightHandle": [
+ 6.371004740397136,
+ 2.4835268064293814e-08
+ ]
+ },
+ {
+ "coords": [
+ 6.625,
+ 2.384185791015625e-07
+ ],
+ "leftHandle": [
+ 6.462328592936198,
+ 2.384185791015625e-07
+ ],
+ "rightHandle": [
+ 7.031678517659505,
+ 2.384185791015625e-07
+ ]
+ },
+ {
+ "coords": [
+ 6.833333333333333,
+ 2.384185791015625e-07
+ ],
+ "leftHandle": [
+ 6.5079905192057295,
+ 2.384185791015625e-07
+ ],
+ "rightHandle": [
+ 6.8984018961588545,
+ 2.384185791015625e-07
+ ]
+ },
+ {
+ "coords": [
+ 7.0,
+ 1.9185245037078857e-07
+ ],
+ "leftHandle": [
+ 6.9349314371744795,
+ 1.9185245037078857e-07
+ ],
+ "rightHandle": [
+ 7.097602844238281,
+ 1.9185245037078857e-07
+ ]
+ },
+ {
+ "coords": [
+ 7.25,
+ -4.353933036327362e-08
+ ],
+ "leftHandle": [
+ 7.152397155761719,
+ 0.003114179940894246
+ ],
+ "rightHandle": [
+ 7.331335703531901,
+ -0.0025952300056815147
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 7.376997629801433,
+ 0.0
+ ],
+ "rightHandle": [
+ 7.865011850992839,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 8.708333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 8.220319112141928,
+ 0.0
+ ],
+ "rightHandle": [
+ 8.82220458984375,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.0,
+ 0.0
+ ],
+ "leftHandle": [
+ 8.886128743489584,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.113871256510416,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.291666666666666,
+ 0.5735764503479004
+ ],
+ "leftHandle": [
+ 9.178207397460938,
+ 0.3380364775657654
+ ],
+ "rightHandle": [
+ 9.428712209065756,
+ 0.8580812215805054
+ ]
+ },
+ {
+ "coords": [
+ 9.583333333333334,
+ 0.9396926164627075
+ ],
+ "leftHandle": [
+ 9.469462076822916,
+ 0.9396926164627075
+ ],
+ "rightHandle": [
+ 9.664667765299479,
+ 0.9396926164627075
+ ]
+ },
+ {
+ "coords": [
+ 9.791666666666666,
+ 0.9396926164627075
+ ],
+ "leftHandle": [
+ 9.710332234700521,
+ 0.9396926164627075
+ ],
+ "rightHandle": [
+ 9.873001098632812,
+ 0.9396926164627075
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 0.9396926164627075
+ ],
+ "leftHandle": [
+ 9.918665568033854,
+ 0.9396926164627075
+ ],
+ "rightHandle": [
+ 10.081334431966146,
+ 0.9396926164627075
+ ]
+ },
+ {
+ "coords": [
+ 10.208333333333334,
+ 0.9396926164627075
+ ],
+ "leftHandle": [
+ 10.126998901367188,
+ 0.9396926164627075
+ ],
+ "rightHandle": [
+ 10.289667765299479,
+ 0.9396926164627075
+ ]
+ },
+ {
+ "coords": [
+ 10.416666666666666,
+ 0.9848077297210693
+ ],
+ "leftHandle": [
+ 10.335332234700521,
+ 0.9627091884613037
+ ],
+ "rightHandle": [
+ 10.498001098632812,
+ 1.006906270980835
+ ]
+ },
+ {
+ "coords": [
+ 10.625,
+ 1.0
+ ],
+ "leftHandle": [
+ 10.543665568033854,
+ 1.0
+ ],
+ "rightHandle": [
+ 10.706334431966146,
+ 1.0
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Rotation X",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ],
+ "leftHandle": [
+ -0.3090757727622986,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.3090757528940837,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 0.7916666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 0.482590913772583,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.9543381532033285,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.2083333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.0456618467966716,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.2896690368652344,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.4166666666666667,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.3353309631347656,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.4817352294921875,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.5833333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.5182647705078125,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.6809361775716145,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.8333333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.735730489095052,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.9146690368652344,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 2.0416666666666665,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.9603309631347656,
+ 0.0
+ ],
+ "rightHandle": [
+ 2.448345343271891,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.2916666666666665,
+ 0.0
+ ],
+ "leftHandle": [
+ 2.8036524454752603,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.405536651611328,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.5833333333333335,
+ 0.0
+ ],
+ "leftHandle": [
+ 3.469463348388672,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.6972033182779946,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.875,
+ 4.2734766836360905e-09
+ ],
+ "leftHandle": [
+ 3.7611300150553384,
+ 2.906791696233313e-09
+ ],
+ "rightHandle": [
+ 3.9888699849446616,
+ 5.640161671038868e-09
+ ]
+ },
+ {
+ "coords": [
+ 4.166666666666667,
+ 7.001254243022004e-09
+ ],
+ "leftHandle": [
+ 4.052796681722005,
+ 7.001254243022004e-09
+ ],
+ "rightHandle": [
+ 4.248002370198567,
+ 7.001254243022004e-09
+ ]
+ },
+ {
+ "coords": [
+ 4.375,
+ 7.001254243022004e-09
+ ],
+ "leftHandle": [
+ 4.293664296468099,
+ 7.001254243022004e-09
+ ],
+ "rightHandle": [
+ 4.456335703531901,
+ 7.001254243022004e-09
+ ]
+ },
+ {
+ "coords": [
+ 4.583333333333333,
+ 7.001254243022004e-09
+ ],
+ "leftHandle": [
+ 4.501997629801433,
+ 7.001254243022004e-09
+ ],
+ "rightHandle": [
+ 4.664669036865234,
+ 7.001254243022004e-09
+ ]
+ },
+ {
+ "coords": [
+ 4.791666666666667,
+ 7.001254243022004e-09
+ ],
+ "leftHandle": [
+ 4.710330963134766,
+ 7.001254243022004e-09
+ ],
+ "rightHandle": [
+ 4.873002370198567,
+ 7.001254243022004e-09
+ ]
+ },
+ {
+ "coords": [
+ 5.0,
+ 7.337388030492775e-09
+ ],
+ "leftHandle": [
+ 4.918664296468099,
+ 7.249677302922919e-09
+ ],
+ "rightHandle": [
+ 5.081335703531901,
+ 7.4250987580626315e-09
+ ]
+ },
+ {
+ "coords": [
+ 5.208333333333333,
+ 7.450578376477779e-09
+ ],
+ "leftHandle": [
+ 5.126997629801433,
+ 7.450578376477779e-09
+ ],
+ "rightHandle": [
+ 5.598744710286458,
+ 7.450578376477779e-09
+ ]
+ },
+ {
+ "coords": [
+ 6.208333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 5.817921956380208,
+ 0.0
+ ],
+ "rightHandle": [
+ 6.371004740397136,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 6.625,
+ 0.0
+ ],
+ "leftHandle": [
+ 6.462328592936198,
+ 0.0
+ ],
+ "rightHandle": [
+ 6.706335703531901,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 6.833333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 6.751997629801433,
+ 0.0
+ ],
+ "rightHandle": [
+ 6.8984018961588545,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 7.0,
+ -0.1736481785774231
+ ],
+ "leftHandle": [
+ 6.9349314371744795,
+ -0.1736481785774231
+ ],
+ "rightHandle": [
+ 7.097602844238281,
+ -0.1736481785774231
+ ]
+ },
+ {
+ "coords": [
+ 7.25,
+ 0.08715573698282242
+ ],
+ "leftHandle": [
+ 7.152397155761719,
+ 0.08715573698282242
+ ],
+ "rightHandle": [
+ 7.331335703531901,
+ 0.08715573698282242
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 7.376997629801433,
+ 0.0
+ ],
+ "rightHandle": [
+ 7.865011850992839,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 8.708333333333334,
+ 0.0
+ ],
+ "leftHandle": [
+ 8.220319112141928,
+ 0.0
+ ],
+ "rightHandle": [
+ 8.822203318277994,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.0,
+ 0.0
+ ],
+ "leftHandle": [
+ 8.886130015055338,
+ 0.0
+ ],
+ "rightHandle": [
+ 9.113869984944662,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 9.291666666666666,
+ -2.410053712154081e-09
+ ],
+ "leftHandle": [
+ 9.177796681722006,
+ -1.8343819796484695e-09
+ ],
+ "rightHandle": [
+ 9.405536651611328,
+ -2.9857254446596926e-09
+ ]
+ },
+ {
+ "coords": [
+ 9.583333333333334,
+ -2.9857254446596926e-09
+ ],
+ "leftHandle": [
+ 9.469463348388672,
+ -2.9857254446596926e-09
+ ],
+ "rightHandle": [
+ 9.664669036865234,
+ -2.9857254446596926e-09
+ ]
+ },
+ {
+ "coords": [
+ 9.791666666666666,
+ -2.9857254446596926e-09
+ ],
+ "leftHandle": [
+ 9.710330963134766,
+ -2.9857254446596926e-09
+ ],
+ "rightHandle": [
+ 9.873002370198568,
+ -2.9857254446596926e-09
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ -2.9857254446596926e-09
+ ],
+ "leftHandle": [
+ 9.9186642964681,
+ -2.9857254446596926e-09
+ ],
+ "rightHandle": [
+ 10.0813357035319,
+ -2.9857254446596926e-09
+ ]
+ },
+ {
+ "coords": [
+ 10.208333333333334,
+ -2.9857254446596926e-09
+ ],
+ "leftHandle": [
+ 10.126997629801432,
+ -2.9857254446596926e-09
+ ],
+ "rightHandle": [
+ 10.289669036865234,
+ -2.9857254446596926e-09
+ ]
+ },
+ {
+ "coords": [
+ 10.416666666666666,
+ -1.5745631465335919e-09
+ ],
+ "leftHandle": [
+ 10.335330963134766,
+ -2.2619428552417276e-09
+ ],
+ "rightHandle": [
+ 10.498002370198568,
+ -8.871833823143049e-10
+ ]
+ },
+ {
+ "coords": [
+ 10.625,
+ 5.355835774878415e-10
+ ],
+ "leftHandle": [
+ 10.5436642964681,
+ 5.355835774878415e-10
+ ],
+ "rightHandle": [
+ 10.7063357035319,
+ 5.355835774878415e-10
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Rotation Z",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ -0.0
+ ],
+ "leftHandle": [
+ -0.3090757727622986,
+ -0.0
+ ],
+ "rightHandle": [
+ 0.3090757528940837,
+ -0.0
+ ]
+ },
+ {
+ "coords": [
+ 0.7916666666666666,
+ -0.0
+ ],
+ "leftHandle": [
+ 0.482590913772583,
+ -0.0
+ ],
+ "rightHandle": [
+ 0.9543381532033285,
+ -0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.2083333333333333,
+ -0.0
+ ],
+ "leftHandle": [
+ 1.0456618467966716,
+ -0.0
+ ],
+ "rightHandle": [
+ 1.2896690368652344,
+ -0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.4166666666666667,
+ -0.0
+ ],
+ "leftHandle": [
+ 1.3353309631347656,
+ -0.0
+ ],
+ "rightHandle": [
+ 1.4817352294921875,
+ -0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.5833333333333333,
+ -0.1736481785774231
+ ],
+ "leftHandle": [
+ 1.5182647705078125,
+ -0.1736481785774231
+ ],
+ "rightHandle": [
+ 1.6809361775716145,
+ -0.1736481785774231
+ ]
+ },
+ {
+ "coords": [
+ 1.8333333333333333,
+ 0.08715575933456421
+ ],
+ "leftHandle": [
+ 1.735730489095052,
+ 0.08715575933456421
+ ],
+ "rightHandle": [
+ 1.9146690368652344,
+ 0.08715575933456421
+ ]
+ },
+ {
+ "coords": [
+ 2.0416666666666665,
+ 7.450580596923828e-09
+ ],
+ "leftHandle": [
+ 1.9603309631347656,
+ 7.450580596923828e-09
+ ],
+ "rightHandle": [
+ 2.448345343271891,
+ 7.450580596923828e-09
+ ]
+ },
+ {
+ "coords": [
+ 3.2916666666666665,
+ 7.450580596923828e-09
+ ],
+ "leftHandle": [
+ 2.8036524454752603,
+ 7.450580596923828e-09
+ ],
+ "rightHandle": [
+ 3.405536651611328,
+ 7.450580596923828e-09
+ ]
+ },
+ {
+ "coords": [
+ 3.5833333333333335,
+ 7.450580596923828e-09
+ ],
+ "leftHandle": [
+ 3.469463348388672,
+ 7.450580596923828e-09
+ ],
+ "rightHandle": [
+ 3.6972033182779946,
+ 7.450580596923828e-09
+ ]
+ },
+ {
+ "coords": [
+ 3.875,
+ 6.1031566467306675e-09
+ ],
+ "leftHandle": [
+ 3.7611300150553384,
+ 7.060120044144469e-09
+ ],
+ "rightHandle": [
+ 3.9888699849446616,
+ 5.146193249316866e-09
+ ]
+ },
+ {
+ "coords": [
+ 4.166666666666667,
+ 2.5482482790550876e-09
+ ],
+ "leftHandle": [
+ 4.052796681722005,
+ 2.5482482790550876e-09
+ ],
+ "rightHandle": [
+ 4.248002370198567,
+ 2.5482482790550876e-09
+ ]
+ },
+ {
+ "coords": [
+ 4.375,
+ 2.5482482790550876e-09
+ ],
+ "leftHandle": [
+ 4.293664296468099,
+ 2.5482482790550876e-09
+ ],
+ "rightHandle": [
+ 4.456335703531901,
+ 2.5482482790550876e-09
+ ]
+ },
+ {
+ "coords": [
+ 4.583333333333333,
+ 2.5482482790550876e-09
+ ],
+ "leftHandle": [
+ 4.501997629801433,
+ 2.5482482790550876e-09
+ ],
+ "rightHandle": [
+ 4.664669036865234,
+ 2.5482482790550876e-09
+ ]
+ },
+ {
+ "coords": [
+ 4.791666666666667,
+ 2.5482482790550876e-09
+ ],
+ "leftHandle": [
+ 4.710330963134766,
+ 2.5482482790550876e-09
+ ],
+ "rightHandle": [
+ 4.873002370198567,
+ 2.5482482790550876e-09
+ ]
+ },
+ {
+ "coords": [
+ 5.0,
+ 1.2937797500001125e-09
+ ],
+ "leftHandle": [
+ 4.918664296468099,
+ 1.7912125116481548e-09
+ ],
+ "rightHandle": [
+ 5.081335703531901,
+ 7.96346932840919e-10
+ ]
+ },
+ {
+ "coords": [
+ 5.208333333333333,
+ -4.440892098500626e-16
+ ],
+ "leftHandle": [
+ 5.126997629801433,
+ -4.440892098500626e-16
+ ],
+ "rightHandle": [
+ 5.598744710286458,
+ -4.440892098500626e-16
+ ]
+ },
+ {
+ "coords": [
+ 6.208333333333333,
+ -0.0
+ ],
+ "leftHandle": [
+ 5.817921956380208,
+ -0.0
+ ],
+ "rightHandle": [
+ 6.371004740397136,
+ -0.0
+ ]
+ },
+ {
+ "coords": [
+ 6.625,
+ -0.0
+ ],
+ "leftHandle": [
+ 6.462328592936198,
+ -0.0
+ ],
+ "rightHandle": [
+ 6.706335703531901,
+ -0.0
+ ]
+ },
+ {
+ "coords": [
+ 6.833333333333333,
+ -0.0
+ ],
+ "leftHandle": [
+ 6.751997629801433,
+ -0.0
+ ],
+ "rightHandle": [
+ 6.8984018961588545,
+ -0.0
+ ]
+ },
+ {
+ "coords": [
+ 7.0,
+ 2.9802322387695312e-08
+ ],
+ "leftHandle": [
+ 6.9349314371744795,
+ 2.9802322387695312e-08
+ ],
+ "rightHandle": [
+ 7.097602844238281,
+ 2.9802322387695312e-08
+ ]
+ },
+ {
+ "coords": [
+ 7.25,
+ -7.450580596923828e-09
+ ],
+ "leftHandle": [
+ 7.152397155761719,
+ -7.450580596923828e-09
+ ],
+ "rightHandle": [
+ 7.331335703531901,
+ -7.450580596923828e-09
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 7.450580596923828e-09
+ ],
+ "leftHandle": [
+ 7.376997629801433,
+ 7.450580596923828e-09
+ ],
+ "rightHandle": [
+ 7.865011850992839,
+ 7.450580596923828e-09
+ ]
+ },
+ {
+ "coords": [
+ 8.708333333333334,
+ 7.450580596923828e-09
+ ],
+ "leftHandle": [
+ 8.220319112141928,
+ 7.450580596923828e-09
+ ],
+ "rightHandle": [
+ 8.822203318277994,
+ 7.450580596923828e-09
+ ]
+ },
+ {
+ "coords": [
+ 9.0,
+ 7.450580596923828e-09
+ ],
+ "leftHandle": [
+ 8.886130015055338,
+ 7.450580596923828e-09
+ ],
+ "rightHandle": [
+ 9.113869984944662,
+ 7.450580596923828e-09
+ ]
+ },
+ {
+ "coords": [
+ 9.291666666666666,
+ 1.0482139600753726e-08
+ ],
+ "leftHandle": [
+ 9.177796681722006,
+ 8.819545094240766e-09
+ ],
+ "rightHandle": [
+ 9.405536651611328,
+ 1.2144734107266686e-08
+ ]
+ },
+ {
+ "coords": [
+ 9.583333333333334,
+ 1.5967721367360355e-08
+ ],
+ "leftHandle": [
+ 9.469463348388672,
+ 1.5967721367360355e-08
+ ],
+ "rightHandle": [
+ 9.664669036865234,
+ 1.5967721367360355e-08
+ ]
+ },
+ {
+ "coords": [
+ 9.791666666666666,
+ 1.5967721367360355e-08
+ ],
+ "leftHandle": [
+ 9.710330963134766,
+ 1.5967721367360355e-08
+ ],
+ "rightHandle": [
+ 9.873002370198568,
+ 1.5967721367360355e-08
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 1.5967721367360355e-08
+ ],
+ "leftHandle": [
+ 9.9186642964681,
+ 1.5967721367360355e-08
+ ],
+ "rightHandle": [
+ 10.0813357035319,
+ 1.5967721367360355e-08
+ ]
+ },
+ {
+ "coords": [
+ 10.208333333333334,
+ 1.5967721367360355e-08
+ ],
+ "leftHandle": [
+ 10.126997629801432,
+ 1.5967721367360355e-08
+ ],
+ "rightHandle": [
+ 10.289669036865234,
+ 1.5967721367360355e-08
+ ]
+ },
+ {
+ "coords": [
+ 10.416666666666666,
+ 1.7476175173669617e-08
+ ],
+ "leftHandle": [
+ 10.335330963134766,
+ 1.7084600401062744e-08
+ ],
+ "rightHandle": [
+ 10.498002370198568,
+ 1.786774994627649e-08
+ ]
+ },
+ {
+ "coords": [
+ 10.625,
+ 1.7973679433680445e-08
+ ],
+ "leftHandle": [
+ 10.5436642964681,
+ 1.7973679433680445e-08
+ ],
+ "rightHandle": [
+ 10.7063357035319,
+ 1.7973679433680445e-08
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Rotation Y",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ],
+ "leftHandle": [
+ -0.3090757727622986,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.3090757528940837,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 0.7916666666666666,
+ 0.0
+ ],
+ "leftHandle": [
+ 0.482590913772583,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.9543381532033285,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.2083333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.0456618467966716,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.2896690368652344,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.4166666666666667,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.3353309631347656,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.4817352294921875,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.5833333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.5182647705078125,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.6809361775716145,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 1.8333333333333333,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.735730489095052,
+ 0.0
+ ],
+ "rightHandle": [
+ 1.9146690368652344,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 2.0416666666666665,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.9603309631347656,
+ 0.0
+ ],
+ "rightHandle": [
+ 2.448345343271891,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.2916666666666665,
+ 0.0
+ ],
+ "leftHandle": [
+ 2.8036524454752603,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.405536651611328,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.5833333333333335,
+ 0.0
+ ],
+ "leftHandle": [
+ 3.469463348388672,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.6972033182779946,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 3.875,
+ 0.5735764503479004
+ ],
+ "leftHandle": [
+ 3.7611300150553384,
+ 0.3901430368423462
+ ],
+ "rightHandle": [
+ 3.9888699849446616,
+ 0.7570098638534546
+ ]
+ },
+ {
+ "coords": [
+ 4.166666666666667,
+ 0.9396926164627075
+ ],
+ "leftHandle": [
+ 4.052796681722005,
+ 0.9396926164627075
+ ],
+ "rightHandle": [
+ 4.248002370198567,
+ 0.9396926164627075
+ ]
+ },
+ {
+ "coords": [
+ 4.375,
+ 0.9396926164627075
+ ],
+ "leftHandle": [
+ 4.293664296468099,
+ 0.9396926164627075
+ ],
+ "rightHandle": [
+ 4.456335703531901,
+ 0.9396926164627075
+ ]
+ },
+ {
+ "coords": [
+ 4.583333333333333,
+ 0.9396926164627075
+ ],
+ "leftHandle": [
+ 4.501997629801433,
+ 0.9396926164627075
+ ],
+ "rightHandle": [
+ 4.664669036865234,
+ 0.9396926164627075
+ ]
+ },
+ {
+ "coords": [
+ 4.791666666666667,
+ 0.9396926164627075
+ ],
+ "leftHandle": [
+ 4.710330963134766,
+ 0.9396926164627075
+ ],
+ "rightHandle": [
+ 4.873002370198567,
+ 0.9396926164627075
+ ]
+ },
+ {
+ "coords": [
+ 5.0,
+ 0.9848077297210693
+ ],
+ "leftHandle": [
+ 4.918664296468099,
+ 0.9730353951454163
+ ],
+ "rightHandle": [
+ 5.081335703531901,
+ 0.9965800642967224
+ ]
+ },
+ {
+ "coords": [
+ 5.208333333333333,
+ 1.0
+ ],
+ "leftHandle": [
+ 5.126997629801433,
+ 1.0
+ ],
+ "rightHandle": [
+ 5.598744710286458,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 6.208333333333333,
+ 1.0
+ ],
+ "leftHandle": [
+ 5.817921956380208,
+ 1.0
+ ],
+ "rightHandle": [
+ 6.371004740397136,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 6.625,
+ 1.000000238418579
+ ],
+ "leftHandle": [
+ 6.462328592936198,
+ 1.000000238418579
+ ],
+ "rightHandle": [
+ 7.031678517659505,
+ 1.000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 6.833333333333333,
+ 1.000000238418579
+ ],
+ "leftHandle": [
+ 6.5079905192057295,
+ 1.000000238418579
+ ],
+ "rightHandle": [
+ 6.8984018961588545,
+ 1.000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 7.0,
+ 1.0
+ ],
+ "leftHandle": [
+ 6.9349314371744795,
+ 1.0
+ ],
+ "rightHandle": [
+ 7.097605387369792,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 7.25,
+ 1.0
+ ],
+ "leftHandle": [
+ 7.152397155761719,
+ 1.0
+ ],
+ "rightHandle": [
+ 7.331335703531901,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 7.458333333333333,
+ 1.000000238418579
+ ],
+ "leftHandle": [
+ 7.376997629801433,
+ 1.000000238418579
+ ],
+ "rightHandle": [
+ 7.865011850992839,
+ 1.000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 8.708333333333334,
+ 1.000000238418579
+ ],
+ "leftHandle": [
+ 8.220319112141928,
+ 1.000000238418579
+ ],
+ "rightHandle": [
+ 8.82220458984375,
+ 1.000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 9.0,
+ 1.000000238418579
+ ],
+ "leftHandle": [
+ 8.886128743489584,
+ 1.000000238418579
+ ],
+ "rightHandle": [
+ 9.113871256510416,
+ 1.000000238418579
+ ]
+ },
+ {
+ "coords": [
+ 9.291666666666666,
+ 0.8191520571708679
+ ],
+ "leftHandle": [
+ 9.17779541015625,
+ 0.932508647441864
+ ],
+ "rightHandle": [
+ 9.405537923177084,
+ 0.7057954668998718
+ ]
+ },
+ {
+ "coords": [
+ 9.583333333333334,
+ 0.3420201241970062
+ ],
+ "leftHandle": [
+ 9.469462076822916,
+ 0.3420201241970062
+ ],
+ "rightHandle": [
+ 9.664667765299479,
+ 0.3420201241970062
+ ]
+ },
+ {
+ "coords": [
+ 9.791666666666666,
+ 0.3420201241970062
+ ],
+ "leftHandle": [
+ 9.710332234700521,
+ 0.3420201241970062
+ ],
+ "rightHandle": [
+ 9.873001098632812,
+ 0.3420201241970062
+ ]
+ },
+ {
+ "coords": [
+ 10.0,
+ 0.3420201241970062
+ ],
+ "leftHandle": [
+ 9.918665568033854,
+ 0.3420201241970062
+ ],
+ "rightHandle": [
+ 10.081334431966146,
+ 0.3420201241970062
+ ]
+ },
+ {
+ "coords": [
+ 10.208333333333334,
+ 0.3420201241970062
+ ],
+ "leftHandle": [
+ 10.126998901367188,
+ 0.3420201241970062
+ ],
+ "rightHandle": [
+ 10.289667765299479,
+ 0.3420201241970062
+ ]
+ },
+ {
+ "coords": [
+ 10.416666666666666,
+ 0.1736481785774231
+ ],
+ "leftHandle": [
+ 10.335413614908854,
+ 0.2643083930015564
+ ],
+ "rightHandle": [
+ 10.498001098632812,
+ 0.08289717137813568
+ ]
+ },
+ {
+ "coords": [
+ 10.625,
+ 0.0
+ ],
+ "leftHandle": [
+ 10.543665568033854,
+ 0.0
+ ],
+ "rightHandle": [
+ 10.706334431966146,
+ 0.0
+ ]
+ }
+ ]
+ }
+ ],
+ "channelName": "Rotation",
+ "jointIndex": 0
+ }
+ ]
+ }
+ ]
+}
diff --git a/tests/manual/skinned-mesh/main.cpp b/tests/manual/skinned-mesh/main.cpp
new file mode 100644
index 000000000..8e2ebcbfb
--- /dev/null
+++ b/tests/manual/skinned-mesh/main.cpp
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <Qt3DQuickExtras/qt3dquickwindow.h>
+#include <Qt3DAnimation/QAnimationAspect>
+#include <QGuiApplication>
+
+int main(int argc, char* argv[])
+{
+ QGuiApplication app(argc, argv);
+ Qt3DExtras::Quick::Qt3DQuickWindow view;
+ view.registerAspect(new Qt3DAnimation::QAnimationAspect());
+
+ view.setSource(QUrl("qrc:/main.qml"));
+ view.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/skinned-mesh/main.qml b/tests/manual/skinned-mesh/main.qml
new file mode 100644
index 000000000..174d54f83
--- /dev/null
+++ b/tests/manual/skinned-mesh/main.qml
@@ -0,0 +1,254 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import Qt3D.Core 2.10
+import Qt3D.Render 2.10
+import Qt3D.Input 2.0
+import Qt3D.Animation 2.10
+import Qt3D.Extras 2.10
+import QtQuick 2.9
+
+DefaultSceneEntity {
+ id: scene
+
+ SkinnedPbrEffect {
+ id: skinnedPbrEffect
+ }
+
+ Timer {
+ interval: 2000
+ running: true
+ repeat: false
+ onTriggered: {
+ animator1.running = true
+ animator2.running = true
+ animator3.running = true
+ animator4.running = true
+ animator5.running = true
+ }
+ }
+
+ SkinnedEntity {
+ id: riggedFigure1
+ effect: skinnedPbrEffect
+ source: "qrc:/assets/gltf/2.0/RiggedFigure/RiggedFigure.gltf"
+ baseColor: "red"
+
+ components: [
+// ClipAnimator {
+// loops: 3
+// clip: AnimationClipLoader { source: "qrc:/jump.json" }
+// channelMapper: ChannelMapper {
+// mappings: [
+// SkeletonChannelMapping { target: riggedFigure.skeleton }
+// ]
+// }
+// }
+ BlendedClipAnimator {
+ id: animator1
+ loops: 5
+ blendTree: ClipBlendValue {
+ clip: AnimationClipLoader { source: "qrc:/jump.json" }
+ }
+ channelMapper: ChannelMapper {
+ mappings: [
+ SkeletonMapping { skeleton: riggedFigure1.skeleton }
+ ]
+ }
+
+ onRunningChanged: console.log("running = " + running)
+ }
+ ]
+ }
+
+ SkinnedEntity {
+ id: riggedFigure2
+ effect: skinnedPbrEffect
+ source: "qrc:/assets/gltf/2.0/RiggedFigure/RiggedFigure.gltf"
+ baseColor: "purple"
+ transform.translation: Qt.vector3d(0.0, 0.0, -1.0);
+
+ components: [
+ BlendedClipAnimator {
+ id: animator2
+ loops: 5
+ blendTree: ClipBlendValue {
+ clip: AnimationClipLoader { source: "qrc:/jump.json" }
+ }
+ channelMapper: ChannelMapper {
+ mappings: [
+ SkeletonMapping { skeleton: riggedFigure2.skeleton }
+ ]
+ }
+
+ onRunningChanged: console.log("running = " + running)
+ }
+ ]
+ }
+
+ SkinnedEntity {
+ id: riggedFigure3
+ effect: skinnedPbrEffect
+ source: "qrc:/assets/gltf/2.0/RiggedFigure/RiggedFigure.gltf"
+ baseColor: "blue"
+ transform.translation: Qt.vector3d(0.0, 0.0, -2.0);
+
+ components: [
+ BlendedClipAnimator {
+ id: animator3
+ loops: 5
+ blendTree: ClipBlendValue {
+ clip: AnimationClipLoader { source: "qrc:/jump.json" }
+ }
+ channelMapper: ChannelMapper {
+ mappings: [
+ SkeletonMapping { skeleton: riggedFigure3.skeleton }
+ ]
+ }
+
+ onRunningChanged: console.log("running = " + running)
+ }
+ ]
+ }
+
+ SkinnedEntity {
+ id: riggedFigure4
+ effect: skinnedPbrEffect
+ source: "qrc:/assets/gltf/2.0/RiggedFigure/RiggedFigure.gltf"
+ baseColor: "green"
+ transform.translation: Qt.vector3d(0.0, 0.0, -3.0);
+
+ components: [
+ BlendedClipAnimator {
+ id: animator4
+ loops: 5
+ blendTree: ClipBlendValue {
+ clip: AnimationClipLoader { source: "qrc:/jump.json" }
+ }
+ channelMapper: ChannelMapper {
+ mappings: [
+ SkeletonMapping { skeleton: riggedFigure4.skeleton }
+ ]
+ }
+
+ onRunningChanged: console.log("running = " + running)
+ }
+ ]
+ }
+
+ SkinnedEntity {
+ id: riggedFigure5
+ effect: skinnedPbrEffect
+ source: "qrc:/assets/gltf/2.0/RiggedFigure/RiggedFigure.gltf"
+ baseColor: "orange"
+ transform.translation: Qt.vector3d(0.0, 0.0, -4.0);
+
+ components: [
+ BlendedClipAnimator {
+ id: animator5
+ loops: 5
+ blendTree: ClipBlendValue {
+ clip: AnimationClipLoader { source: "qrc:/jump.json" }
+ }
+ channelMapper: ChannelMapper {
+ mappings: [
+ SkeletonMapping { skeleton: riggedFigure5.skeleton }
+ ]
+ }
+
+ onRunningChanged: console.log("running = " + running)
+ }
+ ]
+ }
+
+ 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)
+ createJointsEnabled: true
+
+ onRootJointChanged: {
+ var animation = animationComp.createObject(rootJoint)
+ var targetJoint = rootJoint.childJoints[0]
+ animation.target = targetJoint
+ animation.running = true
+ }
+
+ Component {
+ id: animationComp
+ SequentialAnimation {
+ id: sequentialAnimation
+ property variant target: null
+ property real dz: 30.0
+ loops: Animation.Infinite
+
+ NumberAnimation {
+ target: sequentialAnimation.target
+ property: "rotationZ"
+ from: -dz
+ to: dz
+ duration: 600
+ easing.type: Easing.OutCubic
+ }
+ NumberAnimation {
+ target: sequentialAnimation.target
+ property: "rotationZ"
+ from: dz
+ to: -dz
+ duration: 600
+ easing.type: Easing.OutCubic
+ }
+ }
+ }
+ }
+}
diff --git a/tests/manual/skinned-mesh/skinned-mesh.pro b/tests/manual/skinned-mesh/skinned-mesh.pro
new file mode 100644
index 000000000..380b1bb35
--- /dev/null
+++ b/tests/manual/skinned-mesh/skinned-mesh.pro
@@ -0,0 +1,23 @@
+!include( ../manual.pri ) {
+ error( "Couldn't find the manual.pri file!" )
+}
+
+QT += 3dcore 3drender 3dinput 3dquick qml quick 3dquickextras 3danimation
+
+SOURCES += \
+ main.cpp
+
+OTHER_FILES += \
+ main.qml \
+ DefaultSceneEntity.qml \
+ SkinnedEntity.qml \
+ SkinnedPbrEffect.qml
+
+RESOURCES += \
+ skinned-mesh.qrc \
+ ../../../examples/qt3d/exampleresources/cubemaps.qrc \
+ ../../../examples/qt3d/exampleresources/envmaps.qrc \
+ ../../../examples/qt3d/exampleresources/gltf.qrc
+
+DISTFILES += \
+ skinnedPbr.vert
diff --git a/tests/manual/skinned-mesh/skinned-mesh.qrc b/tests/manual/skinned-mesh/skinned-mesh.qrc
new file mode 100644
index 000000000..f34f93f37
--- /dev/null
+++ b/tests/manual/skinned-mesh/skinned-mesh.qrc
@@ -0,0 +1,10 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ <file>DefaultSceneEntity.qml</file>
+ <file>skinnedPbr.vert</file>
+ <file>SkinnedEntity.qml</file>
+ <file>SkinnedPbrEffect.qml</file>
+ <file>jump.json</file>
+ </qresource>
+</RCC>
diff --git a/tests/manual/skinned-mesh/skinnedPbr.vert b/tests/manual/skinned-mesh/skinnedPbr.vert
new file mode 100644
index 000000000..94cb3417c
--- /dev/null
+++ b/tests/manual/skinned-mesh/skinnedPbr.vert
@@ -0,0 +1,94 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#version 150
+
+in vec3 vertexPosition;
+in vec3 vertexNormal;
+in vec4 vertexTangent;
+in vec2 vertexTexCoord;
+in ivec4 vertexJointIndices;
+in vec4 vertexJointWeights;
+
+out vec3 worldPosition;
+out vec3 worldNormal;
+out vec4 worldTangent;
+out vec2 texCoord;
+
+uniform mat4 modelMatrix;
+uniform mat3 modelNormalMatrix;
+uniform mat4 mvp;
+
+const int maxJoints = 100;
+uniform mat4 skinningPalette[maxJoints];
+
+void main()
+{
+ // Pass the texture coordinates through
+ texCoord = vertexTexCoord;
+
+ // Perform the skinning
+ mat4 skinningMatrix = skinningPalette[vertexJointIndices[0]] * vertexJointWeights[0];
+ skinningMatrix += skinningPalette[vertexJointIndices[1]] * vertexJointWeights[1];
+ skinningMatrix += skinningPalette[vertexJointIndices[2]] * vertexJointWeights[2];
+ skinningMatrix += skinningPalette[vertexJointIndices[3]] * vertexJointWeights[3];
+
+ vec4 skinnedPosition = skinningMatrix * vec4(vertexPosition, 1.0);
+ vec3 skinnedNormal = vec3(skinningMatrix * vec4(vertexNormal, 0.0));
+ vec3 skinnedTangent = vec3(skinningMatrix * vec4(vertexTangent.xyz, 0.0));
+
+ // Transform position, normal, and tangent to world space
+ worldPosition = vec3(modelMatrix * skinnedPosition);
+ worldNormal = normalize(modelNormalMatrix * skinnedNormal);
+ worldTangent.xyz = normalize(vec3(modelMatrix * vec4(skinnedTangent, 0.0)));
+ worldTangent.w = vertexTangent.w;
+
+ gl_Position = mvp * skinnedPosition;
+}
diff --git a/tests/manual/spritegrid/main.cpp b/tests/manual/spritegrid/main.cpp
new file mode 100644
index 000000000..70a8ec467
--- /dev/null
+++ b/tests/manual/spritegrid/main.cpp
@@ -0,0 +1,63 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <Qt3DQuickExtras/qt3dquickwindow.h>
+#include <QGuiApplication>
+
+int main(int argc, char* argv[])
+{
+ QGuiApplication app(argc, argv);
+ Qt3DExtras::Quick::Qt3DQuickWindow view;
+
+ view.setSource(QUrl("qrc:/main.qml"));
+ view.show();
+
+ return app.exec();
+}
diff --git a/tests/manual/spritegrid/main.qml b/tests/manual/spritegrid/main.qml
new file mode 100644
index 000000000..ca3d7fd92
--- /dev/null
+++ b/tests/manual/spritegrid/main.qml
@@ -0,0 +1,182 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the Qt3D module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+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)
+ }
+ }
+}
diff --git a/tests/manual/spritegrid/spritegrid.png b/tests/manual/spritegrid/spritegrid.png
new file mode 100644
index 000000000..47c7f5577
--- /dev/null
+++ b/tests/manual/spritegrid/spritegrid.png
Binary files differ
diff --git a/tests/manual/spritegrid/spritegrid.pro b/tests/manual/spritegrid/spritegrid.pro
new file mode 100644
index 000000000..8e4a1f2a7
--- /dev/null
+++ b/tests/manual/spritegrid/spritegrid.pro
@@ -0,0 +1,14 @@
+!include( ../manual.pri ) {
+ error( "Couldn't find the manual.pri file!" )
+}
+
+QT += 3dcore 3drender 3dinput 3dquick qml quick 3dquickextras
+
+SOURCES += \
+ main.cpp
+
+OTHER_FILES += \
+ main.qml
+
+RESOURCES += \
+ spritegrid.qrc
diff --git a/tests/manual/spritegrid/spritegrid.qrc b/tests/manual/spritegrid/spritegrid.qrc
new file mode 100644
index 000000000..5e648adf2
--- /dev/null
+++ b/tests/manual/spritegrid/spritegrid.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ <file>spritegrid.png</file>
+ </qresource>
+</RCC>