distark-render 1.1.10 → 1.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -0
- package/assets/tank.json +0 -0
- package/dist/cli/animate.d.ts +0 -0
- package/dist/cli/animate.d.ts.map +0 -0
- package/dist/cli/animate.js +0 -0
- package/dist/cli/animate.js.map +0 -0
- package/dist/cli/diff.d.ts +0 -0
- package/dist/cli/diff.d.ts.map +0 -0
- package/dist/cli/diff.js +0 -0
- package/dist/cli/diff.js.map +0 -0
- package/dist/cli/distark-check.d.ts +0 -0
- package/dist/cli/distark-check.d.ts.map +0 -0
- package/dist/cli/distark-check.js +16 -16
- package/dist/cli/distark-check.js.map +0 -0
- package/dist/cli/query.d.ts +0 -0
- package/dist/cli/query.d.ts.map +0 -0
- package/dist/cli/query.js +0 -0
- package/dist/cli/query.js.map +0 -0
- package/dist/cli/record.d.ts +0 -0
- package/dist/cli/record.d.ts.map +0 -0
- package/dist/cli/record.js +0 -0
- package/dist/cli/record.js.map +0 -0
- package/dist/cli/render.d.ts +0 -0
- package/dist/cli/render.d.ts.map +0 -0
- package/dist/cli/render.js +0 -0
- package/dist/cli/render.js.map +0 -0
- package/dist/cli/scene.d.ts +2 -12
- package/dist/cli/scene.d.ts.map +1 -1
- package/dist/cli/scene.js +4 -235
- package/dist/cli/scene.js.map +1 -1
- package/dist/cli/shared.d.ts +0 -0
- package/dist/cli/shared.d.ts.map +0 -0
- package/dist/cli/shared.js +0 -0
- package/dist/cli/shared.js.map +0 -0
- package/dist/cli/test.d.ts +0 -0
- package/dist/cli/test.d.ts.map +0 -0
- package/dist/cli/test.js +0 -0
- package/dist/cli/test.js.map +0 -0
- package/dist/cli/verify.d.ts +0 -0
- package/dist/cli/verify.d.ts.map +0 -0
- package/dist/cli/verify.js +0 -0
- package/dist/cli/verify.js.map +0 -0
- package/dist/modules/adapters/p5Renderer.d.ts +0 -0
- package/dist/modules/adapters/p5Renderer.d.ts.map +1 -1
- package/dist/modules/adapters/p5Renderer.js +40 -17
- package/dist/modules/adapters/p5Renderer.js.map +1 -1
- package/dist/modules/adapters/skiaRenderer.d.ts +2 -0
- package/dist/modules/adapters/skiaRenderer.d.ts.map +1 -1
- package/dist/modules/adapters/skiaRenderer.js +47 -16
- package/dist/modules/adapters/skiaRenderer.js.map +1 -1
- package/dist/modules/animationDiff.d.ts +0 -0
- package/dist/modules/animationDiff.d.ts.map +0 -0
- package/dist/modules/animationDiff.js +0 -0
- package/dist/modules/animationDiff.js.map +0 -0
- package/dist/modules/browserSceneRenderer.d.ts +0 -0
- package/dist/modules/browserSceneRenderer.d.ts.map +0 -0
- package/dist/modules/browserSceneRenderer.js +0 -0
- package/dist/modules/browserSceneRenderer.js.map +0 -0
- package/dist/modules/eyeSystem.d.ts +0 -0
- package/dist/modules/eyeSystem.d.ts.map +0 -0
- package/dist/modules/eyeSystem.js +0 -0
- package/dist/modules/eyeSystem.js.map +0 -0
- package/dist/modules/imageLoad.d.ts +22 -8
- package/dist/modules/imageLoad.d.ts.map +1 -1
- package/dist/modules/imageLoad.js +203 -78
- package/dist/modules/imageLoad.js.map +1 -1
- package/dist/modules/mouthSystem.d.ts +0 -0
- package/dist/modules/mouthSystem.d.ts.map +0 -0
- package/dist/modules/mouthSystem.js +0 -0
- package/dist/modules/mouthSystem.js.map +0 -0
- package/dist/modules/renderRig.d.ts +0 -0
- package/dist/modules/renderRig.d.ts.map +1 -1
- package/dist/modules/renderRig.js +52 -4
- package/dist/modules/renderRig.js.map +1 -1
- package/dist/modules/sceneRenderer.d.ts +2 -1
- package/dist/modules/sceneRenderer.d.ts.map +1 -1
- package/dist/modules/sceneRenderer.js +9 -6
- package/dist/modules/sceneRenderer.js.map +1 -1
- package/dist/tests/helpers.d.ts +0 -0
- package/dist/tests/helpers.d.ts.map +0 -0
- package/dist/tests/helpers.js +0 -0
- package/dist/tests/helpers.js.map +0 -0
- package/dist/tests/test-animation-diff-rendering.d.ts +0 -0
- package/dist/tests/test-animation-diff-rendering.d.ts.map +0 -0
- package/dist/tests/test-animation-diff-rendering.js +0 -0
- package/dist/tests/test-animation-diff-rendering.js.map +0 -0
- package/dist/tests/test-animation-diff.d.ts +0 -0
- package/dist/tests/test-animation-diff.d.ts.map +0 -0
- package/dist/tests/test-animation-diff.js +0 -0
- package/dist/tests/test-animation-diff.js.map +0 -0
- package/dist/tests/test-autofit.d.ts +0 -0
- package/dist/tests/test-autofit.d.ts.map +0 -0
- package/dist/tests/test-autofit.js +0 -0
- package/dist/tests/test-autofit.js.map +0 -0
- package/dist/tests/test-base-autofit.d.ts +0 -0
- package/dist/tests/test-base-autofit.d.ts.map +0 -0
- package/dist/tests/test-base-autofit.js +0 -0
- package/dist/tests/test-base-autofit.js.map +0 -0
- package/dist/tests/test-browser-scene.d.ts +0 -0
- package/dist/tests/test-browser-scene.d.ts.map +0 -0
- package/dist/tests/test-browser-scene.js +0 -0
- package/dist/tests/test-browser-scene.js.map +0 -0
- package/dist/tests/test-cli.d.ts +0 -0
- package/dist/tests/test-cli.d.ts.map +0 -0
- package/dist/tests/test-cli.js +0 -0
- package/dist/tests/test-cli.js.map +0 -0
- package/dist/tests/test-image-loading.d.ts +0 -0
- package/dist/tests/test-image-loading.d.ts.map +0 -0
- package/dist/tests/test-image-loading.js +0 -0
- package/dist/tests/test-image-loading.js.map +0 -0
- package/dist/tests/test-joint-movement.d.ts +0 -0
- package/dist/tests/test-joint-movement.d.ts.map +0 -0
- package/dist/tests/test-joint-movement.js +0 -0
- package/dist/tests/test-joint-movement.js.map +0 -0
- package/dist/tests/test-p5-image-types.d.ts +0 -0
- package/dist/tests/test-p5-image-types.d.ts.map +0 -0
- package/dist/tests/test-p5-image-types.js +0 -0
- package/dist/tests/test-p5-image-types.js.map +0 -0
- package/dist/tests/test-render-cache-visual.d.ts +0 -0
- package/dist/tests/test-render-cache-visual.d.ts.map +0 -0
- package/dist/tests/test-render-cache-visual.js +0 -0
- package/dist/tests/test-render-cache-visual.js.map +0 -0
- package/dist/tests/test-render-cache.d.ts +0 -0
- package/dist/tests/test-render-cache.d.ts.map +0 -0
- package/dist/tests/test-render-cache.js +0 -0
- package/dist/tests/test-render-cache.js.map +0 -0
- package/dist/tests/test-scene-object-svg-rerasterization.d.ts +2 -0
- package/dist/tests/test-scene-object-svg-rerasterization.d.ts.map +1 -0
- package/dist/tests/test-scene-object-svg-rerasterization.js +86 -0
- package/dist/tests/test-scene-object-svg-rerasterization.js.map +1 -0
- package/dist/tests/test-scene.d.ts +0 -0
- package/dist/tests/test-scene.d.ts.map +0 -0
- package/dist/tests/test-scene.js +0 -0
- package/dist/tests/test-scene.js.map +0 -0
- package/dist/tests/test-skia.d.ts +0 -0
- package/dist/tests/test-skia.d.ts.map +0 -0
- package/dist/tests/test-skia.js +0 -0
- package/dist/tests/test-skia.js.map +0 -0
- package/dist/tests/test-svg-rerasterization.d.ts +2 -0
- package/dist/tests/test-svg-rerasterization.d.ts.map +1 -0
- package/dist/tests/test-svg-rerasterization.js +97 -0
- package/dist/tests/test-svg-rerasterization.js.map +1 -0
- package/dist/tests/test-torso-pivot.d.ts +0 -0
- package/dist/tests/test-torso-pivot.d.ts.map +0 -0
- package/dist/tests/test-torso-pivot.js +0 -0
- package/dist/tests/test-torso-pivot.js.map +0 -0
- package/dist/tests/test-visual-verification.d.ts +0 -0
- package/dist/tests/test-visual-verification.d.ts.map +0 -0
- package/dist/tests/test-visual-verification.js +0 -0
- package/dist/tests/test-visual-verification.js.map +0 -0
- package/dist/types.d.ts +0 -0
- package/dist/types.d.ts.map +0 -0
- package/dist/types.js +0 -0
- package/dist/types.js.map +0 -0
- package/package.json +1 -1
- package/assets/presets/jumping-jack.json +0 -194
|
File without changes
|
|
File without changes
|
package/dist/tests/test-cli.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/tests/test-cli.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-scene-object-svg-rerasterization.d.ts","sourceRoot":"","sources":["../../tests/test-scene-object-svg-rerasterization.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { SceneEngine } from '../modules/sceneRenderer.js';
|
|
2
|
+
import { SkiaImageLoader } from '../modules/adapters/skiaRenderer.js';
|
|
3
|
+
import { assert, printSummary } from './helpers.js';
|
|
4
|
+
class FakeContext {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.drawCalls = [];
|
|
7
|
+
}
|
|
8
|
+
save() { }
|
|
9
|
+
restore() { }
|
|
10
|
+
translate() { }
|
|
11
|
+
rotate() { }
|
|
12
|
+
drawImage(img, _x, _y, width, height) {
|
|
13
|
+
this.drawCalls.push({ img, width, height });
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
class FakeObjectLoader extends SkiaImageLoader {
|
|
17
|
+
constructor() {
|
|
18
|
+
super('http://example.test');
|
|
19
|
+
}
|
|
20
|
+
async loadImageAsync(key, _imageData) {
|
|
21
|
+
const cached = this.getCachedImage(key);
|
|
22
|
+
if (cached) {
|
|
23
|
+
return cached;
|
|
24
|
+
}
|
|
25
|
+
const initialRaster = { width: 24, height: 24, key: 'initial' };
|
|
26
|
+
this.attachSvgMetadata(initialRaster, '<svg width="24" height="24"></svg>', 24, 24, 24, 24);
|
|
27
|
+
this.cacheImage(key, initialRaster);
|
|
28
|
+
return initialRaster;
|
|
29
|
+
}
|
|
30
|
+
async createSvgCanvas(svgSource, targetWidth, targetHeight) {
|
|
31
|
+
const upgradedRaster = {
|
|
32
|
+
width: targetWidth,
|
|
33
|
+
height: targetHeight,
|
|
34
|
+
key: `upgraded-${targetWidth}x${targetHeight}`,
|
|
35
|
+
};
|
|
36
|
+
this.attachSvgMetadata(upgradedRaster, svgSource, 24, 24, targetWidth, targetHeight);
|
|
37
|
+
return upgradedRaster;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async function main() {
|
|
41
|
+
console.log('\n=== Scene Object SVG Re-rasterization Tests ===\n');
|
|
42
|
+
const world = { scene: { background: null }, characters: [], objects: [], timeline: [] };
|
|
43
|
+
const engine = new SceneEngine(world, {});
|
|
44
|
+
const loader = new FakeObjectLoader();
|
|
45
|
+
engine.objectImageLoader = loader;
|
|
46
|
+
engine.objectLoadedImages = {};
|
|
47
|
+
const ctx = new FakeContext();
|
|
48
|
+
const objectSource = 'data:image/svg+xml;charset=utf-8,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%3E%3C%2Fsvg%3E';
|
|
49
|
+
await engine.drawWorldObject(ctx, {
|
|
50
|
+
id: 'prop',
|
|
51
|
+
frontImage: objectSource,
|
|
52
|
+
xCoor: 100,
|
|
53
|
+
yCoor: 100,
|
|
54
|
+
width: 24,
|
|
55
|
+
height: 24,
|
|
56
|
+
});
|
|
57
|
+
const initialAsset = ctx.drawCalls[0]?.img;
|
|
58
|
+
assert(initialAsset?.key === 'initial', 'Initial object draw uses the first cached SVG raster');
|
|
59
|
+
await engine.drawWorldObject(ctx, {
|
|
60
|
+
id: 'prop',
|
|
61
|
+
frontImage: objectSource,
|
|
62
|
+
xCoor: 100,
|
|
63
|
+
yCoor: 100,
|
|
64
|
+
width: 25,
|
|
65
|
+
height: 25,
|
|
66
|
+
});
|
|
67
|
+
assert(ctx.drawCalls[1]?.img === initialAsset, 'First upscale draw uses the current raster while an upgrade is requested');
|
|
68
|
+
await loader.waitForPendingImageUpgrades();
|
|
69
|
+
await engine.drawWorldObject(ctx, {
|
|
70
|
+
id: 'prop',
|
|
71
|
+
frontImage: objectSource,
|
|
72
|
+
xCoor: 100,
|
|
73
|
+
yCoor: 100,
|
|
74
|
+
width: 25,
|
|
75
|
+
height: 25,
|
|
76
|
+
});
|
|
77
|
+
const upgradedAsset = ctx.drawCalls[2]?.img;
|
|
78
|
+
assert(upgradedAsset !== initialAsset, 'Later object draw swaps to the regenerated SVG raster');
|
|
79
|
+
assert(upgradedAsset?.width >= 25 && upgradedAsset?.height >= 25, 'Any object upscale immediately regenerates a larger SVG raster');
|
|
80
|
+
printSummary();
|
|
81
|
+
}
|
|
82
|
+
main().catch((error) => {
|
|
83
|
+
console.error(error);
|
|
84
|
+
process.exit(1);
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=test-scene-object-svg-rerasterization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-scene-object-svg-rerasterization.js","sourceRoot":"","sources":["../../tests/test-scene-object-svg-rerasterization.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
package/dist/tests/test-scene.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/tests/test-skia.js
CHANGED
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-svg-rerasterization.d.ts","sourceRoot":"","sources":["../../tests/test-svg-rerasterization.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { CharacterRigRenderer } from '../modules/renderRig.js';
|
|
2
|
+
import { ImageLoader } from '../modules/imageLoad.js';
|
|
3
|
+
import { assert, printSummary } from './helpers.js';
|
|
4
|
+
class FakeCanvasContext {
|
|
5
|
+
clearRect() { }
|
|
6
|
+
drawImage() { }
|
|
7
|
+
}
|
|
8
|
+
class FakeRasterCanvas {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.width = 0;
|
|
11
|
+
this.height = 0;
|
|
12
|
+
}
|
|
13
|
+
getContext(kind) {
|
|
14
|
+
return kind === '2d' ? new FakeCanvasContext() : null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
class MockImage {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.width = 0;
|
|
20
|
+
this.height = 0;
|
|
21
|
+
this.onload = null;
|
|
22
|
+
this.onerror = null;
|
|
23
|
+
this.crossOrigin = '';
|
|
24
|
+
}
|
|
25
|
+
set src(_value) {
|
|
26
|
+
setTimeout(() => {
|
|
27
|
+
this.width = 10;
|
|
28
|
+
this.height = 10;
|
|
29
|
+
this.onload?.();
|
|
30
|
+
}, 0);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
function makeSvgDataUrl() {
|
|
34
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><circle cx="12" cy="12" r="10" fill="black" /></svg>`;
|
|
35
|
+
return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`;
|
|
36
|
+
}
|
|
37
|
+
function makeRig(svgPath, torsoWidth, torsoHeight) {
|
|
38
|
+
return {
|
|
39
|
+
imagePaths: {
|
|
40
|
+
torso: svgPath,
|
|
41
|
+
},
|
|
42
|
+
dimensionValues: {
|
|
43
|
+
torso: { width: torsoWidth, height: torsoHeight },
|
|
44
|
+
},
|
|
45
|
+
rotationValues: {},
|
|
46
|
+
selfRotationValues: {},
|
|
47
|
+
pivotPoints: {
|
|
48
|
+
root_torso: { x: 0, y: 0 },
|
|
49
|
+
},
|
|
50
|
+
zIndexValues: {
|
|
51
|
+
torso: 1,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
async function main() {
|
|
56
|
+
console.log('\n=== SVG Re-rasterization Tests ===\n');
|
|
57
|
+
globalThis.document = {
|
|
58
|
+
createElement(tag) {
|
|
59
|
+
if (tag !== 'canvas') {
|
|
60
|
+
throw new Error(`Unexpected element creation: ${tag}`);
|
|
61
|
+
}
|
|
62
|
+
return new FakeRasterCanvas();
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
globalThis.Image = MockImage;
|
|
66
|
+
const svgPath = makeSvgDataUrl();
|
|
67
|
+
const loader = new ImageLoader('http://example.test');
|
|
68
|
+
const renderer = new CharacterRigRenderer(loader);
|
|
69
|
+
const smallRig = makeRig(svgPath, 24, 24);
|
|
70
|
+
const loadedImages = await loader.loadAllRigImages(smallRig, false);
|
|
71
|
+
const initialAsset = loadedImages[svgPath];
|
|
72
|
+
assert(!!initialAsset?.__distarkSvgSource, 'Initial SVG asset keeps original SVG source');
|
|
73
|
+
assert(initialAsset?.width === 24 && initialAsset?.height === 24, 'Initial SVG raster matches initial rendered size');
|
|
74
|
+
const largeRig = makeRig(svgPath, 25, 25);
|
|
75
|
+
const firstLargeRender = renderer.computeCharacterRigData(largeRig, {
|
|
76
|
+
canvasWidth: 400,
|
|
77
|
+
canvasHeight: 400,
|
|
78
|
+
loadedImages,
|
|
79
|
+
});
|
|
80
|
+
assert(firstLargeRender.objects[0]?.imageData === initialAsset, 'Upscale request initially uses current cached raster while upgrade is pending');
|
|
81
|
+
await loader.waitForPendingImageUpgrades();
|
|
82
|
+
const upgradedAsset = loadedImages[svgPath];
|
|
83
|
+
assert(upgradedAsset !== initialAsset, 'Upscaling swaps in a regenerated SVG raster asset');
|
|
84
|
+
assert(upgradedAsset?.width >= 25 && upgradedAsset?.height >= 25, 'Any upscale immediately regenerates a larger SVG raster');
|
|
85
|
+
const secondLargeRender = renderer.computeCharacterRigData(largeRig, {
|
|
86
|
+
canvasWidth: 400,
|
|
87
|
+
canvasHeight: 400,
|
|
88
|
+
loadedImages,
|
|
89
|
+
});
|
|
90
|
+
assert(secondLargeRender.objects[0]?.imageData === upgradedAsset, 'Subsequent renders use the upgraded SVG raster');
|
|
91
|
+
printSummary();
|
|
92
|
+
}
|
|
93
|
+
main().catch((error) => {
|
|
94
|
+
console.error(error);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=test-svg-rerasterization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-svg-rerasterization.js","sourceRoot":"","sources":["../../tests/test-svg-rerasterization.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/types.d.ts
CHANGED
|
File without changes
|
package/dist/types.d.ts.map
CHANGED
|
File without changes
|
package/dist/types.js
CHANGED
|
File without changes
|
package/dist/types.js.map
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
"rotationValues": {
|
|
4
|
-
"leftUpperArm": -3.141593,
|
|
5
|
-
"rightUpperArm": 3.141593,
|
|
6
|
-
"leftThigh": -3.141593,
|
|
7
|
-
"rightThigh": 3.141593
|
|
8
|
-
}
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"rotationValues": {
|
|
12
|
-
"leftUpperArm": -3.325734,
|
|
13
|
-
"rightUpperArm": 3.325734,
|
|
14
|
-
"leftThigh": -3.088003,
|
|
15
|
-
"rightThigh": 3.088003
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"rotationValues": {
|
|
20
|
-
"leftUpperArm": -3.828816,
|
|
21
|
-
"rightUpperArm": 3.828816,
|
|
22
|
-
"leftThigh": -2.941593,
|
|
23
|
-
"rightThigh": 2.941593
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"rotationValues": {
|
|
28
|
-
"leftUpperArm": -4.516039,
|
|
29
|
-
"rightUpperArm": 4.516039,
|
|
30
|
-
"leftThigh": -2.741593,
|
|
31
|
-
"rightThigh": 2.741593
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"rotationValues": {
|
|
36
|
-
"leftUpperArm": -5.203263,
|
|
37
|
-
"rightUpperArm": 5.203263,
|
|
38
|
-
"leftThigh": -2.541593,
|
|
39
|
-
"rightThigh": 2.541593
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"rotationValues": {
|
|
44
|
-
"leftUpperArm": -5.706345,
|
|
45
|
-
"rightUpperArm": 5.706345,
|
|
46
|
-
"leftThigh": -2.395182,
|
|
47
|
-
"rightThigh": 2.395182
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"rotationValues": {
|
|
52
|
-
"leftUpperArm": -5.890486,
|
|
53
|
-
"rightUpperArm": 5.890486,
|
|
54
|
-
"leftThigh": -2.341593,
|
|
55
|
-
"rightThigh": 2.341593
|
|
56
|
-
}
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"rotationValues": {
|
|
60
|
-
"leftUpperArm": -5.706345,
|
|
61
|
-
"rightUpperArm": 5.706345,
|
|
62
|
-
"leftThigh": -2.395182,
|
|
63
|
-
"rightThigh": 2.395182
|
|
64
|
-
}
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"rotationValues": {
|
|
68
|
-
"leftUpperArm": -5.203263,
|
|
69
|
-
"rightUpperArm": 5.203263,
|
|
70
|
-
"leftThigh": -2.541593,
|
|
71
|
-
"rightThigh": 2.541593
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
"rotationValues": {
|
|
76
|
-
"leftUpperArm": -4.516039,
|
|
77
|
-
"rightUpperArm": 4.516039,
|
|
78
|
-
"leftThigh": -2.741593,
|
|
79
|
-
"rightThigh": 2.741593
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"rotationValues": {
|
|
84
|
-
"leftUpperArm": -3.828816,
|
|
85
|
-
"rightUpperArm": 3.828816,
|
|
86
|
-
"leftThigh": -2.941593,
|
|
87
|
-
"rightThigh": 2.941593
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
"rotationValues": {
|
|
92
|
-
"leftUpperArm": -3.325734,
|
|
93
|
-
"rightUpperArm": 3.325734,
|
|
94
|
-
"leftThigh": -3.088003,
|
|
95
|
-
"rightThigh": 3.088003
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"rotationValues": {
|
|
100
|
-
"leftUpperArm": -3.141593,
|
|
101
|
-
"rightUpperArm": 3.141593,
|
|
102
|
-
"leftThigh": -3.141593,
|
|
103
|
-
"rightThigh": 3.141593
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
"rotationValues": {
|
|
108
|
-
"leftUpperArm": -3.325734,
|
|
109
|
-
"rightUpperArm": 3.325734,
|
|
110
|
-
"leftThigh": -3.088003,
|
|
111
|
-
"rightThigh": 3.088003
|
|
112
|
-
}
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
"rotationValues": {
|
|
116
|
-
"leftUpperArm": -3.828816,
|
|
117
|
-
"rightUpperArm": 3.828816,
|
|
118
|
-
"leftThigh": -2.941593,
|
|
119
|
-
"rightThigh": 2.941593
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
"rotationValues": {
|
|
124
|
-
"leftUpperArm": -4.516039,
|
|
125
|
-
"rightUpperArm": 4.516039,
|
|
126
|
-
"leftThigh": -2.741593,
|
|
127
|
-
"rightThigh": 2.741593
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
"rotationValues": {
|
|
132
|
-
"leftUpperArm": -5.203263,
|
|
133
|
-
"rightUpperArm": 5.203263,
|
|
134
|
-
"leftThigh": -2.541593,
|
|
135
|
-
"rightThigh": 2.541593
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
"rotationValues": {
|
|
140
|
-
"leftUpperArm": -5.706345,
|
|
141
|
-
"rightUpperArm": 5.706345,
|
|
142
|
-
"leftThigh": -2.395182,
|
|
143
|
-
"rightThigh": 2.395182
|
|
144
|
-
}
|
|
145
|
-
},
|
|
146
|
-
{
|
|
147
|
-
"rotationValues": {
|
|
148
|
-
"leftUpperArm": -5.890486,
|
|
149
|
-
"rightUpperArm": 5.890486,
|
|
150
|
-
"leftThigh": -2.341593,
|
|
151
|
-
"rightThigh": 2.341593
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
"rotationValues": {
|
|
156
|
-
"leftUpperArm": -5.706345,
|
|
157
|
-
"rightUpperArm": 5.706345,
|
|
158
|
-
"leftThigh": -2.395182,
|
|
159
|
-
"rightThigh": 2.395182
|
|
160
|
-
}
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
"rotationValues": {
|
|
164
|
-
"leftUpperArm": -5.203263,
|
|
165
|
-
"rightUpperArm": 5.203263,
|
|
166
|
-
"leftThigh": -2.541593,
|
|
167
|
-
"rightThigh": 2.541593
|
|
168
|
-
}
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
"rotationValues": {
|
|
172
|
-
"leftUpperArm": -4.516039,
|
|
173
|
-
"rightUpperArm": 4.516039,
|
|
174
|
-
"leftThigh": -2.741593,
|
|
175
|
-
"rightThigh": 2.741593
|
|
176
|
-
}
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
"rotationValues": {
|
|
180
|
-
"leftUpperArm": -3.828816,
|
|
181
|
-
"rightUpperArm": 3.828816,
|
|
182
|
-
"leftThigh": -2.941593,
|
|
183
|
-
"rightThigh": 2.941593
|
|
184
|
-
}
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
"rotationValues": {
|
|
188
|
-
"leftUpperArm": -3.325734,
|
|
189
|
-
"rightUpperArm": 3.325734,
|
|
190
|
-
"leftThigh": -3.088003,
|
|
191
|
-
"rightThigh": 3.088003
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
]
|