diff --git a/studio-frontend/src/app/app.element.ts b/studio-frontend/src/app/app.element.ts
index 9f1e3fc..989d64f 100644
--- a/studio-frontend/src/app/app.element.ts
+++ b/studio-frontend/src/app/app.element.ts
@@ -21,6 +21,7 @@ import { Ref, createRef, ref } from "lit-html/directives/ref.js";
import "@storyteller/studio-web/canvas-provider";
import "@storyteller/studio-web/viewer";
import "@storyteller/studio-web/bvh-viewer";
+import "@storyteller/studio-web/mixamo-viewer";
import "./button.element";
import "./help.element";
import "./icon.element";
@@ -46,6 +47,7 @@ export class AppElement extends LitElement {
@state() selection?: string | null;
@state() bvhPath?: string;
+ @state() mixamoPath?: string;
@state() mode?: StudioMode;
#sceneObjects: studio.SceneObject[] = [];
@@ -67,6 +69,9 @@ export class AppElement extends LitElement {
if (params.has("bvh"))
this.bvhPath = params.get("bvh")!;
+ if (params.has("mixamo"))
+ this.mixamoPath = params.get("mixamo")!;
+
this.mode = match (params.get("mode"), {
"studio": () => StudioMode.Editor,
"viewer": () => StudioMode.Viewer,
@@ -195,6 +200,12 @@ export class AppElement extends LitElement {
skyboxId="test_scene"
@scene-state=${this.onSceneStateChange}
>
+ ` : this.mixamoPath ? html`
+
` : html`
): void {
+ if (changes.has("mixamoPath") && !!this.mixamoPath) {
+ // TODO
+ }
+
+ if (changes.has("skyboxId") && !!this.skyboxId)
+ studio.setSkybox(this.skyboxId);
+ }
+}
diff --git a/studio/assets/mocap/hip-hop-dancing.bin b/studio/assets/mocap/hip-hop-dancing.bin
new file mode 100644
index 0000000..896f963
Binary files /dev/null and b/studio/assets/mocap/hip-hop-dancing.bin differ
diff --git a/studio/assets/mocap/hip-hop-dancing.gltf b/studio/assets/mocap/hip-hop-dancing.gltf
new file mode 100644
index 0000000..2576aef
--- /dev/null
+++ b/studio/assets/mocap/hip-hop-dancing.gltf
@@ -0,0 +1,3171 @@
+{
+ "asset": {
+ "generator": "FBX2glTF v0.9.7",
+ "version": "2.0"
+ },
+ "scene": 0,
+ "buffers": [
+ {
+ "byteLength": 2016720,
+ "uri": "hip-hop-dancing.bin"
+ }
+ ],
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 612,
+ "byteOffset": 0
+ },
+ {
+ "buffer": 0,
+ "byteLength": 1836,
+ "byteOffset": 612
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 2448
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 4896
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 7344
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 9792
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 12240
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 14688
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 17136
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 19584
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 22032
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 24480
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 26928
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 29376
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 31824
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 34272
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 36720
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 39168
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 41616
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 44064
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 46512
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 48960
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 51408
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 53856
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 56304
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 58752
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 61200
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 63648
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 66096
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 68544
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 70992
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 73440
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 75888
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 78336
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 80784
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 83232
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 85680
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 88128
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 90576
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 93024
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 95472
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 97920
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 100368
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 102816
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 105264
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 107712
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 110160
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 112608
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 115056
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 117504
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 119952
+ },
+ {
+ "buffer": 0,
+ "byteLength": 2448,
+ "byteOffset": 122400
+ },
+ {
+ "buffer": 0,
+ "byteLength": 169632,
+ "byteOffset": 124848,
+ "target": 34963
+ },
+ {
+ "buffer": 0,
+ "byteLength": 190812,
+ "byteOffset": 294480,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 190812,
+ "byteOffset": 485292,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 127208,
+ "byteOffset": 676104,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 127208,
+ "byteOffset": 803312,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 254416,
+ "byteOffset": 930520,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 125040,
+ "byteOffset": 1184936,
+ "target": 34963
+ },
+ {
+ "buffer": 0,
+ "byteLength": 149676,
+ "byteOffset": 1309976,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 149676,
+ "byteOffset": 1459652,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 99784,
+ "byteOffset": 1609328,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 99784,
+ "byteOffset": 1709112,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 199568,
+ "byteOffset": 1808896,
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 4160,
+ "byteOffset": 2008464
+ },
+ {
+ "buffer": 0,
+ "byteLength": 4096,
+ "byteOffset": 2012624
+ }
+ ],
+ "scenes": [
+ {
+ "name": "Root Scene",
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "accessors": [
+ {
+ "componentType": 5126,
+ "type": "SCALAR",
+ "count": 153,
+ "bufferView": 0,
+ "byteOffset": 0,
+ "min": [
+ 0.0
+ ],
+ "max": [
+ 6.33333349227905
+ ]
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC3",
+ "count": 153,
+ "bufferView": 1,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 2,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 3,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 4,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 5,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 6,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 7,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 8,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 9,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 10,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 11,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 12,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 13,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 14,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 15,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 16,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 17,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 18,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 19,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 20,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 21,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 22,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 23,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 24,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 25,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 26,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 27,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 28,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 29,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 30,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 31,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 32,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 33,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 34,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 35,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 36,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 37,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 38,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 39,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 40,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 41,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 42,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 43,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 44,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 45,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 46,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 47,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 48,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 49,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 50,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 153,
+ "bufferView": 51,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5123,
+ "type": "SCALAR",
+ "count": 84816,
+ "bufferView": 52,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC3",
+ "count": 15901,
+ "bufferView": 53,
+ "byteOffset": 0,
+ "min": [
+ -0.902566194534302,
+ -0.00032193775405176,
+ -0.148957028985023
+ ],
+ "max": [
+ 0.902565836906433,
+ 1.80888319015503,
+ 0.17174169421196
+ ]
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC3",
+ "count": 15901,
+ "bufferView": 54,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC2",
+ "count": 15901,
+ "bufferView": 55,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5123,
+ "type": "VEC4",
+ "count": 15901,
+ "bufferView": 56,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 15901,
+ "bufferView": 57,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5123,
+ "type": "SCALAR",
+ "count": 62520,
+ "bufferView": 58,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC3",
+ "count": 12473,
+ "bufferView": 59,
+ "byteOffset": 0,
+ "min": [
+ -0.883467078208923,
+ -0.00035116117214784,
+ -0.12990514934063
+ ],
+ "max": [
+ 0.883466720581055,
+ 1.59644222259521,
+ 0.125019237399101
+ ]
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC3",
+ "count": 12473,
+ "bufferView": 60,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC2",
+ "count": 12473,
+ "bufferView": 61,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5123,
+ "type": "VEC4",
+ "count": 12473,
+ "bufferView": 62,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "VEC4",
+ "count": 12473,
+ "bufferView": 63,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "MAT4",
+ "count": 65,
+ "bufferView": 64,
+ "byteOffset": 0
+ },
+ {
+ "componentType": 5126,
+ "type": "MAT4",
+ "count": 64,
+ "bufferView": 65,
+ "byteOffset": 0
+ }
+ ],
+ "samplers": [
+ {}
+ ],
+ "materials": [
+ {
+ "name": "Beta_HighLimbsGeoSG3",
+ "alphaMode": "OPAQUE",
+ "extras": {
+ "fromFBX": {
+ "shadingModel": "Phong",
+ "isTruePBR": false
+ }
+ },
+ "pbrMetallicRoughness": {
+ "baseColorFactor": [
+ 0.669600009918213,
+ 0.241846427321434,
+ 0.21092401444912,
+ 1.0
+ ],
+ "metallicFactor": 0.400000005960464,
+ "roughnessFactor": 0.593640983104706
+ }
+ },
+ {
+ "name": "Beta_Joints_MAT1",
+ "alphaMode": "OPAQUE",
+ "extras": {
+ "fromFBX": {
+ "shadingModel": "Phong",
+ "isTruePBR": false
+ }
+ },
+ "pbrMetallicRoughness": {
+ "baseColorFactor": [
+ 0.266666680574417,
+ 0.0996231064200401,
+ 0.0808117911219597,
+ 1.0
+ ],
+ "metallicFactor": 0.400000005960464,
+ "roughnessFactor": 0.70710676908493
+ }
+ }
+ ],
+ "meshes": [
+ {
+ "name": "Beta_Surface",
+ "primitives": [
+ {
+ "material": 0,
+ "mode": 4,
+ "attributes": {
+ "JOINTS_0": 56,
+ "NORMAL": 54,
+ "POSITION": 53,
+ "TEXCOORD_0": 55,
+ "WEIGHTS_0": 57
+ },
+ "indices": 52
+ }
+ ]
+ },
+ {
+ "name": "Beta_Joints",
+ "primitives": [
+ {
+ "material": 1,
+ "mode": 4,
+ "attributes": {
+ "JOINTS_0": 62,
+ "NORMAL": 60,
+ "POSITION": 59,
+ "TEXCOORD_0": 61,
+ "WEIGHTS_0": 63
+ },
+ "indices": 58
+ }
+ ]
+ }
+ ],
+ "skins": [
+ {
+ "joints": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65
+ ],
+ "inverseBindMatrices": 64,
+ "skeleton": 1
+ },
+ {
+ "joints": [
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 27,
+ 28,
+ 29,
+ 30,
+ 31,
+ 32,
+ 33,
+ 34,
+ 35,
+ 36,
+ 37,
+ 38,
+ 39,
+ 40,
+ 41,
+ 42,
+ 43,
+ 44,
+ 45,
+ 46,
+ 47,
+ 48,
+ 49,
+ 50,
+ 51,
+ 52,
+ 53,
+ 54,
+ 55,
+ 56,
+ 57,
+ 58,
+ 59,
+ 60,
+ 61,
+ 62,
+ 63,
+ 64,
+ 65
+ ],
+ "inverseBindMatrices": 65,
+ "skeleton": 1
+ }
+ ],
+ "animations": [
+ {
+ "name": "mixamo.com",
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 1,
+ "path": "translation"
+ }
+ },
+ {
+ "sampler": 1,
+ "target": {
+ "node": 1,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 2,
+ "target": {
+ "node": 2,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 3,
+ "target": {
+ "node": 3,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 4,
+ "target": {
+ "node": 4,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 5,
+ "target": {
+ "node": 5,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 6,
+ "target": {
+ "node": 6,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 7,
+ "target": {
+ "node": 8,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 8,
+ "target": {
+ "node": 9,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 9,
+ "target": {
+ "node": 10,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 10,
+ "target": {
+ "node": 11,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 11,
+ "target": {
+ "node": 12,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 12,
+ "target": {
+ "node": 13,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 13,
+ "target": {
+ "node": 14,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 14,
+ "target": {
+ "node": 16,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 15,
+ "target": {
+ "node": 17,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 16,
+ "target": {
+ "node": 18,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 17,
+ "target": {
+ "node": 20,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 18,
+ "target": {
+ "node": 21,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 19,
+ "target": {
+ "node": 22,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 20,
+ "target": {
+ "node": 24,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 21,
+ "target": {
+ "node": 25,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 22,
+ "target": {
+ "node": 26,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 23,
+ "target": {
+ "node": 28,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 24,
+ "target": {
+ "node": 29,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 25,
+ "target": {
+ "node": 30,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 26,
+ "target": {
+ "node": 32,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 27,
+ "target": {
+ "node": 33,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 28,
+ "target": {
+ "node": 34,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 29,
+ "target": {
+ "node": 35,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 30,
+ "target": {
+ "node": 36,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 31,
+ "target": {
+ "node": 37,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 32,
+ "target": {
+ "node": 38,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 33,
+ "target": {
+ "node": 40,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 34,
+ "target": {
+ "node": 41,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 35,
+ "target": {
+ "node": 42,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 36,
+ "target": {
+ "node": 44,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 37,
+ "target": {
+ "node": 45,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 38,
+ "target": {
+ "node": 46,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 39,
+ "target": {
+ "node": 48,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 40,
+ "target": {
+ "node": 52,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 41,
+ "target": {
+ "node": 53,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 42,
+ "target": {
+ "node": 54,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 43,
+ "target": {
+ "node": 56,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 44,
+ "target": {
+ "node": 57,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 45,
+ "target": {
+ "node": 58,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 46,
+ "target": {
+ "node": 59,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 47,
+ "target": {
+ "node": 61,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 48,
+ "target": {
+ "node": 62,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 49,
+ "target": {
+ "node": 63,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 50,
+ "target": {
+ "node": 64,
+ "path": "rotation"
+ }
+ }
+ ],
+ "samplers": [
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 1
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 2
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 3
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 4
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 5
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 6
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 7
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 8
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 9
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 10
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 11
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 12
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 13
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 14
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 15
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 16
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 17
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 18
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 19
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 20
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 21
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 22
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 23
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 24
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 25
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 26
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 27
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 28
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 29
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 30
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 31
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 32
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 33
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 34
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 35
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 36
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 37
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 38
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 39
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 40
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 41
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 42
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 43
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 44
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 45
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 46
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 47
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 48
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 49
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 50
+ },
+ {
+ "input": 0,
+ "interpolation": "LINEAR",
+ "output": 51
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "name": "RootNode",
+ "translation": [
+ 0.0,
+ 0.0,
+ 0.0
+ ],
+ "rotation": [
+ 0.0,
+ 0.0,
+ 0.0,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 1,
+ 66,
+ 67
+ ]
+ },
+ {
+ "name": "mixamorig:Hips",
+ "translation": [
+ -7.72729080722456e-08,
+ 1.04274868965149,
+ 0.0155431581661105
+ ],
+ "rotation": [
+ 0.00645854603499174,
+ 0.0,
+ 0.0,
+ 0.999979138374329
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 2,
+ 56,
+ 61
+ ]
+ },
+ {
+ "name": "mixamorig:Spine",
+ "translation": [
+ -4.25583049704081e-12,
+ 0.10182436555624,
+ -3.996802716597e-17
+ ],
+ "rotation": [
+ -0.080155722796917,
+ 1.65970161621918e-24,
+ -2.48068090513698e-07,
+ 0.99678236246109
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 3
+ ]
+ },
+ {
+ "name": "mixamorig:Spine1",
+ "translation": [
+ 0.0,
+ 0.100026749074459,
+ 3.55271359939116e-17
+ ],
+ "rotation": [
+ -0.0,
+ -3.30872245021211e-24,
+ -3.88774887899923e-23,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 4
+ ]
+ },
+ {
+ "name": "mixamorig:Spine2",
+ "translation": [
+ 1.13754221945427e-16,
+ 0.0932209119200706,
+ 2.82368106674369e-09
+ ],
+ "rotation": [
+ 0.0128856198862195,
+ -4.7711740114309e-10,
+ -3.70240442748582e-08,
+ 0.999916970729828
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 5,
+ 8,
+ 32
+ ]
+ },
+ {
+ "name": "mixamorig:Neck",
+ "translation": [
+ 4.14748834234868e-12,
+ 0.168653219938278,
+ 5.68434175902586e-16
+ ],
+ "rotation": [
+ -1.38777878078145e-17,
+ -3.30872245021211e-24,
+ -2.60561892954204e-23,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 6
+ ]
+ },
+ {
+ "name": "mixamorig:Head",
+ "translation": [
+ -1.07567477147796e-09,
+ 0.0934192314743996,
+ 0.0284104086458683
+ ],
+ "rotation": [
+ -1.38777878078145e-17,
+ -9.92616735063633e-24,
+ 2.60561892954204e-23,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 7
+ ]
+ },
+ {
+ "name": "mixamorig:HeadTop_End",
+ "translation": [
+ 9.85697390376572e-09,
+ 0.20962780714035,
+ 0.101229347288609
+ ],
+ "rotation": [
+ 8.32667268468867e-17,
+ -3.30872245021211e-24,
+ 2.56425989891439e-23,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:RightShoulder",
+ "translation": [
+ -0.0456997007131577,
+ 0.1119584441185,
+ -0.00806631799787283
+ ],
+ "rotation": [
+ -0.484430640935898,
+ 0.570963680744171,
+ -0.526163637638092,
+ -0.403087168931961
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 9
+ ]
+ },
+ {
+ "name": "mixamorig:RightArm",
+ "translation": [
+ 2.66453519954337e-17,
+ 0.108381755650043,
+ -2.84217087951293e-16
+ ],
+ "rotation": [
+ -0.0246162414550781,
+ 0.00256229168735445,
+ -0.103498414158821,
+ 0.994321644306183
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 10
+ ]
+ },
+ {
+ "name": "mixamorig:RightForeArm",
+ "translation": [
+ -9.96406429587537e-11,
+ 0.27841517329216,
+ 2.84217087951293e-16
+ ],
+ "rotation": [
+ 4.15476157156535e-23,
+ 0.0,
+ 1.32348898008484e-23,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 11
+ ]
+ },
+ {
+ "name": "mixamorig:RightHand",
+ "translation": [
+ 2.28585989248131e-07,
+ 0.283288389444351,
+ 4.47253860613728e-08
+ ],
+ "rotation": [
+ 9.44871780744909e-23,
+ 5.29395592033938e-23,
+ -2.64697796016969e-23,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 12,
+ 16,
+ 20,
+ 24,
+ 28
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandThumb1",
+ "translation": [
+ 0.0268185175955296,
+ 0.0246480498462915,
+ 0.0157398395240307
+ ],
+ "rotation": [
+ 0.253284484148026,
+ 0.0616182722151279,
+ -0.228210255503654,
+ 0.938067257404327
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 13
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandThumb2",
+ "translation": [
+ -1.68753897625441e-16,
+ 0.0418898537755013,
+ -2.84217087951293e-16
+ ],
+ "rotation": [
+ -0.00231574918143451,
+ -0.00117044895887375,
+ 0.00930010993033648,
+ 0.999953389167786
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 14
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandThumb3",
+ "translation": [
+ -1.45439209873148e-16,
+ 0.0341627113521099,
+ 0.0
+ ],
+ "rotation": [
+ -0.00166473828721792,
+ -0.000807781063485891,
+ 0.00691974768415093,
+ 0.999974370002747
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 15
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandThumb4",
+ "translation": [
+ -1.32116533048251e-16,
+ 0.0257497727870941,
+ -2.84217087951293e-16
+ ],
+ "rotation": [
+ 0.00577485375106335,
+ -0.117509201169014,
+ -0.0487437099218369,
+ 0.991858005523682
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandIndex1",
+ "translation": [
+ 0.0225983504205942,
+ 0.091082826256752,
+ 0.0051786215044558
+ ],
+ "rotation": [
+ -6.0593407624765e-07,
+ 9.95352897326107e-11,
+ -0.000164267534273677,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 17
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandIndex2",
+ "translation": [
+ -8.43769488127207e-17,
+ 0.0370000004768372,
+ 0.0
+ ],
+ "rotation": [
+ 1.74034091066008e-23,
+ -2.64653320039132e-23,
+ 0.000255644234130159,
+ 0.999999940395355
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 18
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandIndex3",
+ "translation": [
+ -3.42836860686886e-15,
+ 0.028499998152256,
+ -8.89315270730107e-12
+ ],
+ "rotation": [
+ -5.79545436153882e-23,
+ 5.09547792062601e-27,
+ -8.79219733178616e-05,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 19
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandIndex4",
+ "translation": [
+ 7.90478759651794e-15,
+ 0.0277219042181969,
+ 5.11420246429584e-12
+ ],
+ "rotation": [
+ 8.65985967379856e-08,
+ 0.00100269203539938,
+ 8.70583244250156e-05,
+ 0.999999523162842
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandMiddle1",
+ "translation": [
+ -2.36873233916413e-07,
+ 0.0953250080347061,
+ 3.9855689237811e-07
+ ],
+ "rotation": [
+ -9.78174057308934e-07,
+ 4.90853580004114e-10,
+ -0.000501805916428566,
+ 0.99999988079071
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 21
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandMiddle2",
+ "translation": [
+ -1.06581407981735e-16,
+ 0.0370000004768372,
+ 0.0
+ ],
+ "rotation": [
+ -2.8641118612229e-22,
+ -2.43412769807742e-25,
+ 0.000849871430546045,
+ 0.999999642372131
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 22
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandMiddle3",
+ "translation": [
+ -2.52242663571539e-15,
+ 0.0295000001788139,
+ -1.54113583006321e-10
+ ],
+ "rotation": [
+ -6.51138854706014e-23,
+ -5.29186070577511e-23,
+ -0.000321842002449557,
+ 0.999999940395355
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 23
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandMiddle4",
+ "translation": [
+ 1.13686835180517e-15,
+ 0.029466288164258,
+ 7.20586923463884e-11
+ ],
+ "rotation": [
+ 1.54982686240146e-07,
+ 0.000928814173676074,
+ 0.0001663944858592,
+ 0.999999582767487
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandRing1",
+ "translation": [
+ -0.0186513308435678,
+ 0.0910359174013138,
+ 0.000430696498369798
+ ],
+ "rotation": [
+ 6.96316604376079e-08,
+ 1.08506528415098e-11,
+ 0.000155829300638288,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 25
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandRing2",
+ "translation": [
+ -5.32907039908674e-17,
+ 0.0337927304208279,
+ 0.0
+ ],
+ "rotation": [
+ 4.13913423703292e-23,
+ -9.16880704186738e-27,
+ -0.000221515088924207,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 26
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandRing3",
+ "translation": [
+ 2.62900815619369e-15,
+ 0.0288968458771706,
+ 8.20222102043688e-12
+ ],
+ "rotation": [
+ 2.09479473249325e-23,
+ -2.64721430289689e-23,
+ -0.000112805100798141,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 27
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandRing4",
+ "translation": [
+ 4.72510892175412e-15,
+ 0.0263881552964449,
+ 5.68206809728466e-12
+ ],
+ "rotation": [
+ -1.33964519477558e-07,
+ 0.000146075006341562,
+ -0.000799286179244518,
+ 0.999999642372131
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandPinky1",
+ "translation": [
+ -0.0380627736449242,
+ 0.0807667598128319,
+ 0.00486703682690859
+ ],
+ "rotation": [
+ 4.67071913590189e-06,
+ 2.43046982539852e-09,
+ 0.000520362984389067,
+ 0.99999988079071
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 29
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandPinky2",
+ "translation": [
+ -1.06581407981735e-16,
+ 0.0359999984502792,
+ 0.0
+ ],
+ "rotation": [
+ -5.5537059807588e-22,
+ 2.59998172951333e-23,
+ 0.000846231647301465,
+ 0.999999642372131
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 30
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandPinky3",
+ "translation": [
+ -5.3290702005634e-16,
+ 0.0209999978542328,
+ -2.11638845337703e-10
+ ],
+ "rotation": [
+ 1.44227946696892e-21,
+ -2.71862767183602e-23,
+ -0.000496777822263539,
+ 0.99999988079071
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 31
+ ]
+ },
+ {
+ "name": "mixamorig:RightHandPinky4",
+ "translation": [
+ 1.29674042076438e-15,
+ 0.0211578104645014,
+ 1.44073614150031e-10
+ ],
+ "rotation": [
+ -6.4206595595806e-08,
+ 0.00156948121730238,
+ -4.12852823501453e-05,
+ 0.99999874830246
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:LeftShoulder",
+ "translation": [
+ 0.0457044579088688,
+ 0.111956439912319,
+ -0.00806627236306667
+ ],
+ "rotation": [
+ 0.48442268371582,
+ 0.570970475673676,
+ -0.52616161108017,
+ 0.403089731931686
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 33
+ ]
+ },
+ {
+ "name": "mixamorig:LeftArm",
+ "translation": [
+ -2.66453519954337e-17,
+ 0.108377054333687,
+ 0.0
+ ],
+ "rotation": [
+ -0.0246063582599163,
+ -0.00256139459088445,
+ 0.103504531085491,
+ 0.994321286678314
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 34
+ ]
+ },
+ {
+ "name": "mixamorig:LeftForeArm",
+ "translation": [
+ 9.76996256376182e-17,
+ 0.278415203094482,
+ -2.84217087951293e-16
+ ],
+ "rotation": [
+ -1.3721941358974e-22,
+ -2.64697796016969e-23,
+ -5.29395592033938e-23,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 35
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHand",
+ "translation": [
+ 5.43873497349523e-08,
+ 0.283288329839706,
+ -5.56424861741789e-09
+ ],
+ "rotation": [
+ -1.37219262128447e-22,
+ -2.64697796016969e-23,
+ -5.29395592033938e-23,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 36,
+ 40,
+ 44,
+ 48,
+ 52
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandThumb1",
+ "translation": [
+ -0.0268173143267632,
+ 0.02466144785285,
+ 0.0157619286328554
+ ],
+ "rotation": [
+ 0.253096461296082,
+ -0.0613232329487801,
+ 0.227352753281593,
+ 0.938345551490784
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 37
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandThumb2",
+ "translation": [
+ -5.99520390945937e-17,
+ 0.0418709442019463,
+ 2.84217087951293e-16
+ ],
+ "rotation": [
+ -0.00206703203730285,
+ 0.00104273075703532,
+ -0.00821340829133987,
+ 0.999963581562042
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 38
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandThumb3",
+ "translation": [
+ 9.99200679149249e-18,
+ 0.0341838821768761,
+ 5.68434175902586e-16
+ ],
+ "rotation": [
+ -0.00153135892469436,
+ 0.000745255209039897,
+ -0.00607311958447099,
+ 0.999980092048645
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 39
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandThumb4",
+ "translation": [
+ 1.0103029153512e-16,
+ 0.025805814191699,
+ -2.84217087951293e-16
+ ],
+ "rotation": [
+ 0.00515340734273195,
+ 0.12268278002739,
+ 0.0416515357792377,
+ 0.991558134555817
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandIndex1",
+ "translation": [
+ -0.0225986279547215,
+ 0.0910930931568146,
+ 0.00518034305423498
+ ],
+ "rotation": [
+ 6.66575999730412e-07,
+ -2.93803488482514e-11,
+ -4.40765179519076e-05,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 41
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandIndex2",
+ "translation": [
+ -6.21724896437066e-17,
+ 0.0370000004768372,
+ -2.84217087951293e-16
+ ],
+ "rotation": [
+ 3.40721356906215e-07,
+ 3.58091958863049e-11,
+ 0.000105098180938512,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 42
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandIndex3",
+ "translation": [
+ -7.17648156341438e-15,
+ 0.028499998152256,
+ 5.68434175902586e-16
+ ],
+ "rotation": [
+ 3.34750552610785e-07,
+ -2.2176925226769e-11,
+ -6.62491074763238e-05,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 43
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandIndex4",
+ "translation": [
+ 8.58868538626285e-15,
+ 0.0277486555278301,
+ 2.84217087951293e-16
+ ],
+ "rotation": [
+ 1.05946043049698e-08,
+ -0.000377563264919445,
+ -1.30695379993995e-05,
+ 0.999999940395355
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandMiddle1",
+ "translation": [
+ -3.66043593658105e-07,
+ 0.0953340157866478,
+ -3.25404727163914e-07
+ ],
+ "rotation": [
+ 4.08473596280601e-07,
+ -1.29267213253015e-11,
+ -3.16464065690525e-05,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 45
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandMiddle2",
+ "translation": [
+ -1.77635679969558e-17,
+ 0.0370000004768372,
+ -2.84217087951293e-16
+ ],
+ "rotation": [
+ -1.63583848689086e-07,
+ -3.46734620182421e-12,
+ 2.11961414606776e-05,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 46
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandMiddle3",
+ "translation": [
+ -2.87059262536575e-14,
+ 0.0295000001788139,
+ -2.84217087951293e-16
+ ],
+ "rotation": [
+ -4.27589924356653e-07,
+ -8.84662308686668e-12,
+ 2.06895019800868e-05,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 47
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandMiddle4",
+ "translation": [
+ -8.7112534254228e-14,
+ 0.0295286346226931,
+ -1.42108538681691e-15
+ ],
+ "rotation": [
+ -2.67594248981595e-08,
+ -0.00102414074353874,
+ 2.79847572528524e-05,
+ 0.999999463558197
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandRing1",
+ "translation": [
+ 0.0186508111655712,
+ 0.0910452827811241,
+ 0.000430282350862399
+ ],
+ "rotation": [
+ 6.24899598733464e-07,
+ 3.94516450757942e-12,
+ 6.31327748124022e-06,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 49
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandRing2",
+ "translation": [
+ -3.55271359939116e-17,
+ 0.0315000005066395,
+ 0.0
+ ],
+ "rotation": [
+ -1.97563284358411e-22,
+ 2.64697796016969e-23,
+ 5.60519385729927e-45,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 50
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandRing3",
+ "translation": [
+ 2.64328914312273e-08,
+ 0.0295000001788139,
+ 5.20985965479781e-09
+ ],
+ "rotation": [
+ -4.78639094945216e-22,
+ -2.64697796016969e-23,
+ -1.26116861789234e-44,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 51
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandRing4",
+ "translation": [
+ -2.3274330374079e-07,
+ 0.026443162932992,
+ -1.46075755935726e-08
+ ],
+ "rotation": [
+ -2.73169348474767e-07,
+ 0.000493437342811376,
+ 1.60470226546749e-05,
+ 0.99999988079071
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandPinky1",
+ "translation": [
+ 0.0380626320838928,
+ 0.0807777866721153,
+ 0.00486877001821995
+ ],
+ "rotation": [
+ -4.97553810419049e-06,
+ 1.01780974759436e-08,
+ 0.00204480229876935,
+ 0.999997913837433
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 53
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandPinky2",
+ "translation": [
+ -1.77635679969558e-17,
+ 0.0359999984502792,
+ 5.68434175902586e-16
+ ],
+ "rotation": [
+ 6.28546672487573e-07,
+ -1.32409652686682e-10,
+ -0.000210660000448115,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 54
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandPinky3",
+ "translation": [
+ 2.41584532699533e-15,
+ 0.0210000015795231,
+ 2.84217087951293e-16
+ ],
+ "rotation": [
+ 1.05605415967602e-07,
+ -7.08423424089499e-12,
+ -6.70821100356989e-05,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 55
+ ]
+ },
+ {
+ "name": "mixamorig:LeftHandPinky4",
+ "translation": [
+ 1.10489391683751e-14,
+ 0.0212553143501282,
+ 0.0
+ ],
+ "rotation": [
+ 2.20347089907591e-07,
+ -0.000783398805651814,
+ -0.00029538557282649,
+ 0.999999642372131
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:RightUpLeg",
+ "translation": [
+ -0.0820778906345367,
+ -0.0677176415920258,
+ -0.0151221863925457
+ ],
+ "rotation": [
+ 2.70476707697753e-09,
+ 0.0103564755991101,
+ 0.999946355819702,
+ 2.6115276341443e-07
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 57
+ ]
+ },
+ {
+ "name": "mixamorig:RightLeg",
+ "translation": [
+ 6.1972739440197e-11,
+ 0.443714618682861,
+ -1.66200379163089e-15
+ ],
+ "rotation": [
+ -0.0380913764238358,
+ -8.16315237628373e-10,
+ 2.14148929700286e-08,
+ 0.999274253845215
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 58
+ ]
+ },
+ {
+ "name": "mixamorig:RightFoot",
+ "translation": [
+ -5.53829308802545e-11,
+ 0.445278108119965,
+ 1.77635673352113e-16
+ ],
+ "rotation": [
+ 0.459740072488785,
+ 1.86290701836518e-23,
+ -1.24328465744838e-07,
+ 0.8880535364151
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 59
+ ]
+ },
+ {
+ "name": "mixamorig:RightToeBase",
+ "translation": [
+ 0.0,
+ 0.138168662786484,
+ 5.32907039908674e-17
+ ],
+ "rotation": [
+ 0.33524152636528,
+ -1.05358534895936e-23,
+ -1.11300892058352e-07,
+ 0.942132234573364
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 60
+ ]
+ },
+ {
+ "name": "mixamorig:RightToe_End",
+ "translation": [
+ 0.0,
+ 0.0927812084555626,
+ 4.2891038605271e-17
+ ],
+ "rotation": [
+ 6.77763359592394e-21,
+ 0.0116080678999424,
+ -7.86805323028623e-23,
+ 0.999932646751404
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "mixamorig:LeftUpLeg",
+ "translation": [
+ 0.0820778831839561,
+ -0.0677180290222168,
+ -0.0151221379637718
+ ],
+ "rotation": [
+ 2.81914824817875e-09,
+ 0.0103679597377777,
+ 0.999946236610413,
+ 2.71895032710745e-07
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 62
+ ]
+ },
+ {
+ "name": "mixamorig:LeftLeg",
+ "translation": [
+ 6.46826758821106e-11,
+ 0.443713903427124,
+ 3.75255368559018e-16
+ ],
+ "rotation": [
+ -0.0381124503910542,
+ -8.17260259466934e-10,
+ 2.14278141896784e-08,
+ 0.999273478984833
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 63
+ ]
+ },
+ {
+ "name": "mixamorig:LeftFoot",
+ "translation": [
+ -5.54777890293678e-11,
+ 0.445278465747833,
+ -2.22044604925031e-16
+ ],
+ "rotation": [
+ 0.459748595952988,
+ -2.98066612307818e-23,
+ -1.16685178852549e-07,
+ 0.888049125671387
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 64
+ ]
+ },
+ {
+ "name": "mixamorig:LeftToeBase",
+ "translation": [
+ 1.77635679969558e-17,
+ 0.138168647885323,
+ -2.66453519954337e-17
+ ],
+ "rotation": [
+ 0.335241496562958,
+ -1.75597566048502e-23,
+ -1.14520787519723e-07,
+ 0.942132234573364
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "children": [
+ 65
+ ]
+ },
+ {
+ "name": "mixamorig:LeftToe_End",
+ "translation": [
+ 0.0,
+ 0.0927813723683357,
+ -1.31253512354117e-17
+ ],
+ "rotation": [
+ 5.02820374861371e-24,
+ -0.011869166046381,
+ 4.23605987251787e-22,
+ 0.999929547309875
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ]
+ },
+ {
+ "name": "Beta_Surface",
+ "translation": [
+ 0.0,
+ 0.0,
+ 0.0
+ ],
+ "rotation": [
+ 0.0,
+ 0.0,
+ 0.0,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "mesh": 0,
+ "skin": 0
+ },
+ {
+ "name": "Beta_Joints",
+ "translation": [
+ 0.0,
+ 0.0,
+ 0.0
+ ],
+ "rotation": [
+ 0.0,
+ 0.0,
+ 0.0,
+ 1.0
+ ],
+ "scale": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "mesh": 1,
+ "skin": 1
+ }
+ ]
+}
diff --git a/studio/src/anim/mod.rs b/studio/src/anim/mod.rs
new file mode 100644
index 0000000..1f03b7c
--- /dev/null
+++ b/studio/src/anim/mod.rs
@@ -0,0 +1,141 @@
+use bevy::{
+ math::Affine3A,
+ prelude::*,
+ render::{mesh::skinning::SkinnedMesh, view::NoFrustumCulling},
+ utils::{EntityHashMap, EntityHashSet},
+};
+use space_editor::space_prefab::editor_registry::EditorRegistryExt;
+
+use crate::hierarchy;
+pub use retargeting::*;
+
+mod retargeting;
+
+pub struct AnimPlugin;
+impl Plugin for AnimPlugin {
+ fn build(&self, app: &mut App) {
+ app.register_type::()
+ .editor_registry::()
+ .register_type::()
+ .editor_registry::()
+ .register_type::()
+ .editor_registry::()
+ .register_type::()
+ .editor_registry::()
+ .register_type::()
+ .editor_registry::()
+ .register_type::()
+ .editor_registry::();
+
+ app.add_systems(Update, process_skinned_meshes);
+
+ app.add_plugins(retargeting::RetargetingPlugin);
+ }
+}
+
+#[derive(Component, Clone, Copy, Debug, Default, Reflect)]
+#[reflect(Component)]
+pub struct Skeleton;
+
+#[derive(Component, Clone, Copy, Debug, Default, Reflect)]
+#[reflect(Component)]
+pub struct SkeletalJoint(pub Color);
+
+#[derive(Component, Clone, Copy, Debug, Default, Reflect)]
+#[reflect(Component)]
+pub struct ProcessedSkinnedMesh;
+
+#[derive(Component, Clone, Copy, Debug, Default, Deref, DerefMut, Reflect)]
+#[reflect(Component)]
+pub struct BindPoseLocal(pub Transform);
+
+#[derive(Component, Clone, Copy, Debug, Default, Deref, DerefMut, Reflect)]
+#[reflect(Component)]
+pub struct BindPoseGlobal(pub Affine3A);
+
+#[derive(Component, Clone, Copy, Debug, Default, Deref, DerefMut, Reflect)]
+#[reflect(Component)]
+pub struct InvBindPose(pub Affine3A);
+
+fn process_skinned_meshes(
+ mut cmd: Commands,
+ q_skinned_meshes: Query<(Entity, &SkinnedMesh), Without>,
+ mut q_xforms: ParamSet<(TransformHelper, Query<&Transform>)>,
+ q_parents: Query