summaryrefslogtreecommitdiffstats
path: root/tests/manual/animation-keyframe-simple
diff options
context:
space:
mode:
Diffstat (limited to 'tests/manual/animation-keyframe-simple')
-rw-r--r--tests/manual/animation-keyframe-simple/DefaultSceneEntity.qml57
-rw-r--r--tests/manual/animation-keyframe-simple/cubeanimation.json333
-rw-r--r--tests/manual/animation-keyframe-simple/main.cpp57
-rw-r--r--tests/manual/animation-keyframe-simple/main.qml119
-rw-r--r--tests/manual/animation-keyframe-simple/main.qrc1
-rw-r--r--tests/manual/animation-keyframe-simple/pulsing-cube-additive.json84
6 files changed, 482 insertions, 169 deletions
diff --git a/tests/manual/animation-keyframe-simple/DefaultSceneEntity.qml b/tests/manual/animation-keyframe-simple/DefaultSceneEntity.qml
index efffd44c9..f1c6110d6 100644
--- a/tests/manual/animation-keyframe-simple/DefaultSceneEntity.qml
+++ b/tests/manual/animation-keyframe-simple/DefaultSceneEntity.qml
@@ -1,11 +1,52 @@
-/*************************************************************************
- *
- * Copyright (c) 2016, Klaralvdalens Datakonsult AB (KDAB)
- * All rights reserved.
- *
- * See the LICENSE.txt file shipped along with this file for the license.
- *
- *************************************************************************/
+/****************************************************************************
+**
+** 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
diff --git a/tests/manual/animation-keyframe-simple/cubeanimation.json b/tests/manual/animation-keyframe-simple/cubeanimation.json
index addf92907..3faff409c 100644
--- a/tests/manual/animation-keyframe-simple/cubeanimation.json
+++ b/tests/manual/animation-keyframe-simple/cubeanimation.json
@@ -1,87 +1,250 @@
{
"animations": [
- { "object": "Cube",
- "action": "CubeAction",
- "range": [0.0, 60.0],
- "groups": [
- { "group": "Location",
- "channels": [
- { "name": "x",
- "keyframes": [
- { "co": [0.0, 0.0],
- "handle_left": [-0.4717472394307454, 0.0],
- "handle_right": [0.4717472394307454, 0.0]}
- ,{ "co": [1.2083333333333333, 2.430499792098999],
- "handle_left": [0.7365860939025879, 1.4711904525756836],
- "handle_right": [1.696347713470459, 3.42288875579834]}
- ,{ "co": [2.4583333333333335, 5.0],
- "handle_left": [1.9703189531962078, 5.0],
- "handle_right": [2.9463475545247397, 5.0]}
- ]}
- ,{ "name": "z",
- "keyframes": [
- { "co": [0.0, 0.0],
- "handle_left": [-0.4717472394307454, 0.0],
- "handle_right": [0.4717472394307454, 0.0]}
- ,{ "co": [1.2083333333333333, 0.0],
- "handle_left": [0.7365860939025879, 0.0],
- "handle_right": [1.696347713470459, 0.0]}
- ,{ "co": [2.4583333333333335, 0.0],
- "handle_left": [1.9703189531962078, 0.0],
- "handle_right": [2.9463475545247397, 0.0]}
- ]}
- ,{ "name": "y",
- "keyframes": [
- { "co": [0.0, 0.0],
- "handle_left": [-0.4717472394307454, 0.0],
- "handle_right": [0.4717472394307454, 0.0]}
- ,{ "co": [1.2083333333333333, 3.0],
- "handle_left": [0.7365860939025879, 3.0],
- "handle_right": [1.696347713470459, 3.0]}
- ,{ "co": [2.4583333333333335, 0.0],
- "handle_left": [1.9703189531962078, 0.0],
- "handle_right": [2.9463475545247397, 0.0]}
- ]}
- ]}
- ,{ "group": "Rotation",
- "channels": [
- { "name": "w",
- "keyframes": [
- { "co": [0.0, 1.0],
- "handle_left": [-0.9597616195678711, 1.0],
- "handle_right": [0.9597616195678711, 1.0]}
- ,{ "co": [2.4583333333333335, -4.371138828673793e-08],
- "handle_left": [1.4985717137654622, -4.371138828673793e-08],
- "handle_right": [3.4180949529012046, -4.371138828673793e-08]}
- ]}
- ,{ "name": "x",
- "keyframes": [
- { "co": [0.0, 0.0],
- "handle_left": [-0.9597616195678711, 0.0],
- "handle_right": [0.9597616195678711, 0.0]}
- ,{ "co": [2.4583333333333335, 0.0],
- "handle_left": [1.4985717137654622, 0.0],
- "handle_right": [3.4180949529012046, 0.0]}
- ]}
- ,{ "name": "z",
- "keyframes": [
- { "co": [0.0, -0.0],
- "handle_left": [-0.9597616195678711, -0.0],
- "handle_right": [0.9597616195678711, -0.0]}
- ,{ "co": [2.4583333333333335, -1.0],
- "handle_left": [1.4985717137654622, -1.0],
- "handle_right": [3.4180949529012046, -1.0]}
- ]}
- ,{ "name": "y",
- "keyframes": [
- { "co": [0.0, 0.0],
- "handle_left": [-0.9597616195678711, 0.0],
- "handle_right": [0.9597616195678711, 0.0]}
- ,{ "co": [2.4583333333333335, 0.0],
- "handle_left": [1.4985717137654622, 0.0],
- "handle_right": [3.4180949529012046, 0.0]}
- ]}
- ]}
- ]}
- ]
-}
+ {
+ "animationName": "CubeAction",
+ "channels": [
+ {
+ "channelComponents": [
+ {
+ "channelComponentName": "Location X",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ],
+ "leftHandle": [
+ -0.9597616195678711,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.9597616195678711,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 2.4583333333333335,
+ 5.0
+ ],
+ "leftHandle": [
+ 1.4985717137654622,
+ 5.0
+ ],
+ "rightHandle": [
+ 3.4180949529012046,
+ 5.0
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Location Z",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ],
+ "leftHandle": [
+ -0.9597616195678711,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.9597616195678711,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 2.4583333333333335,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.4985717137654622,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.4180949529012046,
+ 0.0
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Location Y",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ],
+ "leftHandle": [
+ -0.9597616195678711,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.9597616195678711,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 2.4583333333333335,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.4985717137654622,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.4180949529012046,
+ 0.0
+ ]
+ }
+ ]
+ }
+ ],
+ "channelName": "Location"
+ },
+ {
+ "channelComponents": [
+ {
+ "channelComponentName": "Rotation W",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 1.0
+ ],
+ "leftHandle": [
+ -0.9597616195678711,
+ 1.0
+ ],
+ "rightHandle": [
+ 0.9597616195678711,
+ 1.0
+ ]
+ },
+ {
+ "coords": [
+ 2.4583333333333335,
+ -4.371138828673793e-08
+ ],
+ "leftHandle": [
+ 1.4985717137654622,
+ -4.371138828673793e-08
+ ],
+ "rightHandle": [
+ 3.4180949529012046,
+ -4.371138828673793e-08
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Rotation X",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ],
+ "leftHandle": [
+ -0.9597616195678711,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.9597616195678711,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 2.4583333333333335,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.4985717137654622,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.4180949529012046,
+ 0.0
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Rotation Z",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ -0.0
+ ],
+ "leftHandle": [
+ -0.9597616195678711,
+ -0.0
+ ],
+ "rightHandle": [
+ 0.9597616195678711,
+ -0.0
+ ]
+ },
+ {
+ "coords": [
+ 2.4583333333333335,
+ -1.0
+ ],
+ "leftHandle": [
+ 1.4985717137654622,
+ -1.0
+ ],
+ "rightHandle": [
+ 3.4180949529012046,
+ -1.0
+ ]
+ }
+ ]
+ },
+ {
+ "channelComponentName": "Rotation Y",
+ "keyFrames": [
+ {
+ "coords": [
+ 0.0,
+ 0.0
+ ],
+ "leftHandle": [
+ -0.9597616195678711,
+ 0.0
+ ],
+ "rightHandle": [
+ 0.9597616195678711,
+ 0.0
+ ]
+ },
+ {
+ "coords": [
+ 2.4583333333333335,
+ 0.0
+ ],
+ "leftHandle": [
+ 1.4985717137654622,
+ 0.0
+ ],
+ "rightHandle": [
+ 3.4180949529012046,
+ 0.0
+ ]
+ }
+ ]
+ }
+ ],
+ "channelName": "Rotation"
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/tests/manual/animation-keyframe-simple/main.cpp b/tests/manual/animation-keyframe-simple/main.cpp
index fc48fc702..fce9ecc5f 100644
--- a/tests/manual/animation-keyframe-simple/main.cpp
+++ b/tests/manual/animation-keyframe-simple/main.cpp
@@ -1,11 +1,52 @@
-/*************************************************************************
- *
- * Copyright (c) 2016, Klaralvdalens Datakonsult AB (KDAB)
- * All rights reserved.
- *
- * See the LICENSE.txt file shipped along with this file for the license.
- *
- *************************************************************************/
+/****************************************************************************
+**
+** 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 <Qt3DAnimation/QAnimationAspect>
diff --git a/tests/manual/animation-keyframe-simple/main.qml b/tests/manual/animation-keyframe-simple/main.qml
index 8546d8b34..79fb75fbd 100644
--- a/tests/manual/animation-keyframe-simple/main.qml
+++ b/tests/manual/animation-keyframe-simple/main.qml
@@ -1,16 +1,57 @@
-/*************************************************************************
- *
- * Copyright (c) 2016, Klaralvdalens Datakonsult AB (KDAB)
- * All rights reserved.
- *
- * See the LICENSE.txt file shipped along with this file for the license.
- *
- *************************************************************************/
+/****************************************************************************
+**
+** 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.Animation 2.2
+import Qt3D.Animation 2.9
import Qt3D.Extras 2.0
DefaultSceneEntity {
@@ -41,7 +82,7 @@ DefaultSceneEntity {
loops: 3
onRunningChanged: console.log("running = " + running)
- clip: AnimationClip {
+ clip: AnimationClipLoader {
source: "cubeanimation.json"
onDurationChanged: console.log("duration = " + duration)
}
@@ -62,64 +103,6 @@ DefaultSceneEntity {
]
}
- Entity {
- id: sphere
-
- components: [
- Transform {
- id: sphereTransform
- translation: Qt.vector3d(5, 0, 0)
- onTranslationChanged: console.log("t = " + translation)
- },
- SphereMesh {
- },
- PhongMaterial {
- id: sphereMaterial
- ambient: Qt.rgba(0.02, 0.02, 0.02, 1.0)
- diffuse: "red"
- shininess: 50
- },
- ObjectPicker {
- onClicked: blendedAnimator.running = true
- },
- BlendedClipAnimator {
- id: blendedAnimator
- loops: 2
-
- onRunningChanged: console.log("running = " + running)
-
- blendTree: LerpBlend {
- blendFactor: 0.5
- clips: [
- AnimationClip {
- source: "cubeanimation.json"
- onDurationChanged: console.log("duration = " + duration)
- },
- AnimationClip {
- source: "pulsing-moving-cube.json"
- onDurationChanged: console.log("duration = " + duration)
- }]
- }
-
-
- // By default introspect parent Entity and try
- // to map fcurve groups to properties of QTransform
- // mapping: AutomaticAnimationMapping {}
-
- // To do more, we can be explicit
- channelMapper: ChannelMapper {
- mappings: [
- ChannelMapping { channelName: "Location"; target: sphereTransform; property: "translation" },
- ChannelMapping { channelName: "Rotation"; target: sphereTransform; property: "rotation" },
- ChannelMapping { channelName: "Scaling"; target: sphereTransform; property: "scale3D" },
- ChannelMapping { channelName: "Diffuse Color"; target: sphereMaterial; property: "diffuse" }
- ]
- }
- }
- ]
- }
-
-
camera: Camera {
position: Qt.vector3d(10, 3, 15)
viewCenter: Qt.vector3d(2.5, 1, 0)
diff --git a/tests/manual/animation-keyframe-simple/main.qrc b/tests/manual/animation-keyframe-simple/main.qrc
index 323756a88..b59429895 100644
--- a/tests/manual/animation-keyframe-simple/main.qrc
+++ b/tests/manual/animation-keyframe-simple/main.qrc
@@ -4,5 +4,6 @@
<file>DefaultSceneEntity.qml</file>
<file>cubeanimation.json</file>
<file>pulsing-moving-cube.json</file>
+ <file>pulsing-cube-additive.json</file>
</qresource>
</RCC>
diff --git a/tests/manual/animation-keyframe-simple/pulsing-cube-additive.json b/tests/manual/animation-keyframe-simple/pulsing-cube-additive.json
new file mode 100644
index 000000000..1373a5002
--- /dev/null
+++ b/tests/manual/animation-keyframe-simple/pulsing-cube-additive.json
@@ -0,0 +1,84 @@
+{
+ "animations": [
+ { "object": "Cube",
+ "action": "CubeAction",
+ "range": [0.0, 60.0],
+ "groups": [
+ { "group": "Scaling",
+ "channels": [
+ { "name": "x",
+ "keyframes": [
+ { "co": [0.0, 1.0],
+ "handle_left": [-0.1464043160279592, 1.0],
+ "handle_right": [0.14640430609385172, 1.0]}
+ ,{ "co": [0.375, 0.5],
+ "handle_left": [0.22859569390614828, 0.5],
+ "handle_right": [0.5376714468002319, 0.5]}
+ ,{ "co": [0.7916666666666666, 1.0],
+ "handle_left": [0.6289951801300049, 1.0],
+ "handle_right": [0.9543381532033285, 1.0]}
+ ,{ "co": [1.2083333333333333, 0.5],
+ "handle_left": [1.0456619262695312, 0.5],
+ "handle_right": [1.371035893758138, 0.5]}
+ ,{ "co": [1.625, 1.0],
+ "handle_left": [1.462328592936198, 1.0],
+ "handle_right": [1.787671407063802, 1.0]}
+ ,{ "co": [2.0416666666666665, 0.5],
+ "handle_left": [1.8789952596028645, 0.5],
+ "handle_right": [2.2043380737304688, 0.5]}
+ ,{ "co": [2.4583333333333335, 1.0],
+ "handle_left": [2.2956619262695312, 1.0],
+ "handle_right": [2.6210047403971353, 1.0]}
+ ]}
+ ,{ "name": "z",
+ "keyframes": [
+ { "co": [0.0, 1.0],
+ "handle_left": [-0.1464043160279592, 1.0],
+ "handle_right": [0.14640430609385172, 1.0]}
+ ,{ "co": [0.375, 0.5],
+ "handle_left": [0.22859569390614828, 0.5],
+ "handle_right": [0.5376714468002319, 0.5]}
+ ,{ "co": [0.7916666666666666, 1.0],
+ "handle_left": [0.6289951801300049, 1.0],
+ "handle_right": [0.9543381532033285, 1.0]}
+ ,{ "co": [1.2083333333333333, 0.5],
+ "handle_left": [1.0456618467966716, 0.5],
+ "handle_right": [1.3710047403971355, 0.5]}
+ ,{ "co": [1.625, 1.0],
+ "handle_left": [1.462328592936198, 1.0],
+ "handle_right": [1.787671407063802, 1.0]}
+ ,{ "co": [2.0416666666666665, 0.5],
+ "handle_left": [1.8789952596028645, 0.5],
+ "handle_right": [2.2043380737304688, 0.5]}
+ ,{ "co": [2.4583333333333335, 1.0],
+ "handle_left": [2.2956619262695312, 1.0],
+ "handle_right": [2.6210047403971353, 1.0]}
+ ]}
+ ,{ "name": "y",
+ "keyframes": [
+ { "co": [0.0, 1.0],
+ "handle_left": [-0.1464043160279592, 1.0],
+ "handle_right": [0.14640430609385172, 1.0]}
+ ,{ "co": [0.375, 0.5],
+ "handle_left": [0.22859569390614828, 0.5],
+ "handle_right": [0.5376714468002319, 0.5]}
+ ,{ "co": [0.7916666666666666, 1.0],
+ "handle_left": [0.6289951801300049, 1.0],
+ "handle_right": [0.9543381532033285, 1.0]}
+ ,{ "co": [1.2083333333333333, 0.5441937446594238],
+ "handle_left": [1.0456618467966716, 0.5441937446594238],
+ "handle_right": [1.3710047403971355, 0.5441937446594238]}
+ ,{ "co": [1.625, 1.0],
+ "handle_left": [1.462328592936198, 1.0],
+ "handle_right": [1.787671407063802, 1.0]}
+ ,{ "co": [2.0416666666666665, 0.5771476030349731],
+ "handle_left": [1.8789952596028645, 0.5771476030349731],
+ "handle_right": [2.2043380737304688, 0.5771476030349731]}
+ ,{ "co": [2.4583333333333335, 1.0],
+ "handle_left": [2.2956619262695312, 1.0],
+ "handle_right": [2.6210047403971353, 1.0]}
+ ]}
+ ]}
+ ]}
+ ]
+}