diff options
Diffstat (limited to 'tests/manual')
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 Binary files differnew file mode 100644 index 000000000..47c7f5577 --- /dev/null +++ b/tests/manual/spritegrid/spritegrid.png 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> |