@aura3d/animation 3.0.1 → 4.0.0
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/dist/AnimationController.d.ts +8 -0
- package/dist/AnimationController.d.ts.map +1 -1
- package/dist/AnimationController.js +93 -0
- package/dist/AnimationController.js.map +1 -1
- package/dist/AnimationMixer.d.ts.map +1 -1
- package/dist/AnimationMixer.js +11 -0
- package/dist/AnimationMixer.js.map +1 -1
- package/dist/FootIk.d.ts +41 -0
- package/dist/FootIk.d.ts.map +1 -1
- package/dist/FootIk.js +202 -0
- package/dist/FootIk.js.map +1 -1
- package/dist/IK.d.ts +26 -0
- package/dist/IK.d.ts.map +1 -1
- package/dist/IK.js +515 -0
- package/dist/IK.js.map +1 -1
- package/dist/Keyframe.d.ts.map +1 -1
- package/dist/Keyframe.js +13 -12
- package/dist/Keyframe.js.map +1 -1
- package/dist/SpringBones.d.ts +80 -0
- package/dist/SpringBones.d.ts.map +1 -1
- package/dist/SpringBones.js +593 -49
- package/dist/SpringBones.js.map +1 -1
- package/dist/browser-index.d.ts +1 -1
- package/dist/browser-index.d.ts.map +1 -1
- package/dist/browser-index.js +1 -1
- package/dist/browser-index.js.map +1 -1
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +7 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/pose.d.ts +25 -0
- package/dist/contracts/pose.d.ts.map +1 -0
- package/dist/contracts/pose.js +41 -0
- package/dist/contracts/pose.js.map +1 -0
- package/dist/experimental/CrowdAnimation.d.ts +13 -0
- package/dist/experimental/CrowdAnimation.d.ts.map +1 -0
- package/dist/experimental/CrowdAnimation.js +14 -0
- package/dist/experimental/CrowdAnimation.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lanes/index.d.ts +17 -0
- package/dist/lanes/index.d.ts.map +1 -0
- package/dist/lanes/index.js +17 -0
- package/dist/lanes/index.js.map +1 -0
- package/dist/lanes/prd01.d.ts +6 -0
- package/dist/lanes/prd01.d.ts.map +1 -0
- package/dist/lanes/prd01.js +6 -0
- package/dist/lanes/prd01.js.map +1 -0
- package/dist/lanes/prd02.d.ts +6 -0
- package/dist/lanes/prd02.d.ts.map +1 -0
- package/dist/lanes/prd02.js +6 -0
- package/dist/lanes/prd02.js.map +1 -0
- package/dist/lanes/prd03.d.ts +6 -0
- package/dist/lanes/prd03.d.ts.map +1 -0
- package/dist/lanes/prd03.js +6 -0
- package/dist/lanes/prd03.js.map +1 -0
- package/dist/lanes/prd04.d.ts +6 -0
- package/dist/lanes/prd04.d.ts.map +1 -0
- package/dist/lanes/prd04.js +6 -0
- package/dist/lanes/prd04.js.map +1 -0
- package/dist/lanes/prd05.d.ts +6 -0
- package/dist/lanes/prd05.d.ts.map +1 -0
- package/dist/lanes/prd05.js +6 -0
- package/dist/lanes/prd05.js.map +1 -0
- package/dist/lanes/prd06.d.ts +37 -0
- package/dist/lanes/prd06.d.ts.map +1 -0
- package/dist/lanes/prd06.js +26 -0
- package/dist/lanes/prd06.js.map +1 -0
- package/dist/lanes/prd07.d.ts +6 -0
- package/dist/lanes/prd07.d.ts.map +1 -0
- package/dist/lanes/prd07.js +6 -0
- package/dist/lanes/prd07.js.map +1 -0
- package/dist/lanes/prd08.d.ts +6 -0
- package/dist/lanes/prd08.d.ts.map +1 -0
- package/dist/lanes/prd08.js +6 -0
- package/dist/lanes/prd08.js.map +1 -0
- package/dist/lanes/prd09.d.ts +6 -0
- package/dist/lanes/prd09.d.ts.map +1 -0
- package/dist/lanes/prd09.js +6 -0
- package/dist/lanes/prd09.js.map +1 -0
- package/dist/lanes/prd10.d.ts +6 -0
- package/dist/lanes/prd10.d.ts.map +1 -0
- package/dist/lanes/prd10.js +6 -0
- package/dist/lanes/prd10.js.map +1 -0
- package/dist/lanes/prd11.d.ts +6 -0
- package/dist/lanes/prd11.d.ts.map +1 -0
- package/dist/lanes/prd11.js +6 -0
- package/dist/lanes/prd11.js.map +1 -0
- package/dist/lanes/prd12.d.ts +6 -0
- package/dist/lanes/prd12.d.ts.map +1 -0
- package/dist/lanes/prd12.js +6 -0
- package/dist/lanes/prd12.js.map +1 -0
- package/dist/lanes/prd13.d.ts +6 -0
- package/dist/lanes/prd13.d.ts.map +1 -0
- package/dist/lanes/prd13.js +6 -0
- package/dist/lanes/prd13.js.map +1 -0
- package/dist/lanes/prd14.d.ts +6 -0
- package/dist/lanes/prd14.d.ts.map +1 -0
- package/dist/lanes/prd14.js +6 -0
- package/dist/lanes/prd14.js.map +1 -0
- package/dist/lanes/prd15.d.ts +6 -0
- package/dist/lanes/prd15.d.ts.map +1 -0
- package/dist/lanes/prd15.js +6 -0
- package/dist/lanes/prd15.js.map +1 -0
- package/dist/pose/BoneMask.d.ts +39 -0
- package/dist/pose/BoneMask.d.ts.map +1 -0
- package/dist/pose/BoneMask.js +160 -0
- package/dist/pose/BoneMask.js.map +1 -0
- package/dist/pose/CcdIkConstraint.d.ts +38 -0
- package/dist/pose/CcdIkConstraint.d.ts.map +1 -0
- package/dist/pose/CcdIkConstraint.js +198 -0
- package/dist/pose/CcdIkConstraint.js.map +1 -0
- package/dist/pose/CompiledClip.d.ts +48 -0
- package/dist/pose/CompiledClip.d.ts.map +1 -0
- package/dist/pose/CompiledClip.js +209 -0
- package/dist/pose/CompiledClip.js.map +1 -0
- package/dist/pose/LookAtConstraint.d.ts +48 -0
- package/dist/pose/LookAtConstraint.d.ts.map +1 -0
- package/dist/pose/LookAtConstraint.js +251 -0
- package/dist/pose/LookAtConstraint.js.map +1 -0
- package/dist/pose/MotionMetrics.d.ts +136 -0
- package/dist/pose/MotionMetrics.d.ts.map +1 -0
- package/dist/pose/MotionMetrics.js +253 -0
- package/dist/pose/MotionMetrics.js.map +1 -0
- package/dist/pose/PoseBuffer.d.ts +23 -0
- package/dist/pose/PoseBuffer.d.ts.map +1 -0
- package/dist/pose/PoseBuffer.js +48 -0
- package/dist/pose/PoseBuffer.js.map +1 -0
- package/dist/pose/PoseInertializer.d.ts +38 -0
- package/dist/pose/PoseInertializer.d.ts.map +1 -0
- package/dist/pose/PoseInertializer.js +208 -0
- package/dist/pose/PoseInertializer.js.map +1 -0
- package/dist/pose/PoseMixer.d.ts +256 -0
- package/dist/pose/PoseMixer.d.ts.map +1 -0
- package/dist/pose/PoseMixer.js +848 -0
- package/dist/pose/PoseMixer.js.map +1 -0
- package/dist/pose/Retarget.d.ts +77 -0
- package/dist/pose/Retarget.d.ts.map +1 -0
- package/dist/pose/Retarget.js +378 -0
- package/dist/pose/Retarget.js.map +1 -0
- package/dist/pose/RetargetCache.d.ts +21 -0
- package/dist/pose/RetargetCache.d.ts.map +1 -0
- package/dist/pose/RetargetCache.js +102 -0
- package/dist/pose/RetargetCache.js.map +1 -0
- package/dist/pose/RetargetWorker.d.ts +21 -0
- package/dist/pose/RetargetWorker.d.ts.map +1 -0
- package/dist/pose/RetargetWorker.js +56 -0
- package/dist/pose/RetargetWorker.js.map +1 -0
- package/dist/pose/SkeletonBinding.d.ts +55 -0
- package/dist/pose/SkeletonBinding.d.ts.map +1 -0
- package/dist/pose/SkeletonBinding.js +62 -0
- package/dist/pose/SkeletonBinding.js.map +1 -0
- package/dist/pose/blendKernels.d.ts +32 -0
- package/dist/pose/blendKernels.d.ts.map +1 -0
- package/dist/pose/blendKernels.js +101 -0
- package/dist/pose/blendKernels.js.map +1 -0
- package/dist/pose/makeClipAdditive.d.ts +22 -0
- package/dist/pose/makeClipAdditive.d.ts.map +1 -0
- package/dist/pose/makeClipAdditive.js +101 -0
- package/dist/pose/makeClipAdditive.js.map +1 -0
- package/dist/pose/poseMixerFlags.d.ts +18 -0
- package/dist/pose/poseMixerFlags.d.ts.map +1 -0
- package/dist/pose/poseMixerFlags.js +30 -0
- package/dist/pose/poseMixerFlags.js.map +1 -0
- package/dist/pose/quatFlat.d.ts +16 -0
- package/dist/pose/quatFlat.d.ts.map +1 -0
- package/dist/pose/quatFlat.js +88 -0
- package/dist/pose/quatFlat.js.map +1 -0
- package/dist/pose/retarget.worker.d.ts +25 -0
- package/dist/pose/retarget.worker.d.ts.map +1 -0
- package/dist/pose/retarget.worker.js +22 -0
- package/dist/pose/retarget.worker.js.map +1 -0
- package/package.json +14 -2
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T1.11 (PRD-06 §10) — the `A3D_QR_ANIMATION_POSE_MIXER` read for
|
|
3
|
+
* `@aura3d/animation`. The package cannot import the engine's flag machinery
|
|
4
|
+
* (dependency direction is engine → animation), so a provider seam is
|
|
5
|
+
* installed by the app side (lane barrel `packages/engine/src/lanes/prd06.ts`
|
|
6
|
+
* binds `qrAnimationFlags().on("A3D_QR_ANIMATION_POSE_MIXER")`). Without a
|
|
7
|
+
* provider the env fallback reads `A3D_QR_ANIMATION_POSE_MIXER` directly.
|
|
8
|
+
* Multi-word sub-flags cannot appear in the `A3D_QR=` list (the resolver's
|
|
9
|
+
* short-name form is `lane.sub`, two parts), so the env var and the
|
|
10
|
+
* `qualityRebuild.flags` record are the only sources — matching
|
|
11
|
+
* `applyPerFlagEnv` semantics.
|
|
12
|
+
*
|
|
13
|
+
* Sub-flag semantics (§10): OFF means the legacy blend math runs unchanged —
|
|
14
|
+
* the flag being merely unset is not an implicit opt-in.
|
|
15
|
+
*/
|
|
16
|
+
let poseMixerBlendProvider;
|
|
17
|
+
export function setPoseMixerBlendFlagProvider(provider) {
|
|
18
|
+
poseMixerBlendProvider = provider;
|
|
19
|
+
}
|
|
20
|
+
export function poseMixerBlendEnabled() {
|
|
21
|
+
if (poseMixerBlendProvider !== undefined) {
|
|
22
|
+
return poseMixerBlendProvider();
|
|
23
|
+
}
|
|
24
|
+
if (typeof process === "undefined") {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const direct = process.env.A3D_QR_ANIMATION_POSE_MIXER;
|
|
28
|
+
return direct === "1" || direct === "on" || direct === "true";
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=poseMixerFlags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"poseMixerFlags.js","sourceRoot":"","sources":["../../../../../packages/animation/src/pose/poseMixerFlags.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,IAAI,sBAAmD,CAAC;AAExD,MAAM,UAAU,6BAA6B,CAAC,QAAqC;IACjF,sBAAsB,GAAG,QAAQ,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,IAAI,sBAAsB,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,sBAAsB,EAAE,CAAC;IAClC,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;IACvD,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal flat-array quaternion/vec3 math for the pose pipeline — mirrors
|
|
3
|
+
* three r185 `Quaternion.slerpFlat` / `multiplyQuaternionsFlat` so the
|
|
4
|
+
* incremental blend order in PoseMixer stays within the 1e-4 parity bar.
|
|
5
|
+
* All functions write into a caller-supplied flat array + offset: no
|
|
6
|
+
* allocation in the hot path.
|
|
7
|
+
*/
|
|
8
|
+
/** three r185 `Quaternion.slerpFlat` — spherical (or near-linear) blend on flat arrays. */
|
|
9
|
+
export declare function slerpQuatFlat(dst: Float32Array | number[], dstOffset: number, a: Float32Array | number[] | readonly number[], aOffset: number, b: Float32Array | number[] | readonly number[], bOffset: number, t: number): void;
|
|
10
|
+
export declare function normalizeQuatFlat(q: Float32Array | number[], offset: number): void;
|
|
11
|
+
/** `dst = a * b` on flat quaternions (three r185 `multiplyQuaternionsFlat`). */
|
|
12
|
+
export declare function multiplyQuatFlat(dst: Float32Array, dstOffset: number, a: Float32Array | readonly number[], aOffset: number, b: Float32Array | readonly number[], bOffset: number): void;
|
|
13
|
+
/** Quaternion conjugate (inverse for unit quaternions) into a flat array. */
|
|
14
|
+
export declare function conjugateQuatFlat(dst: Float32Array, dstOffset: number, q: Float32Array | readonly number[], qOffset: number): void;
|
|
15
|
+
export declare function lerpVec3Flat(dst: Float32Array, dstOffset: number, a: Float32Array | readonly number[], aOffset: number, b: Float32Array | readonly number[], bOffset: number, t: number): void;
|
|
16
|
+
//# sourceMappingURL=quatFlat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quatFlat.d.ts","sourceRoot":"","sources":["../../../../../packages/animation/src/pose/quatFlat.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2FAA2F;AAC3F,wBAAgB,aAAa,CAC3B,GAAG,EAAE,YAAY,GAAG,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAC/C,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAC/D,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAC/D,CAAC,EAAE,MAAM,GACR,IAAI,CAoCN;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CASlF;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EACpC,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EACpD,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GACnD,IAAI,CAON;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EACpC,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,GACnD,IAAI,CAKN;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EACpC,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EACpD,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EACpD,CAAC,EAAE,MAAM,GACR,IAAI,CAIN"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal flat-array quaternion/vec3 math for the pose pipeline — mirrors
|
|
3
|
+
* three r185 `Quaternion.slerpFlat` / `multiplyQuaternionsFlat` so the
|
|
4
|
+
* incremental blend order in PoseMixer stays within the 1e-4 parity bar.
|
|
5
|
+
* All functions write into a caller-supplied flat array + offset: no
|
|
6
|
+
* allocation in the hot path.
|
|
7
|
+
*/
|
|
8
|
+
/** three r185 `Quaternion.slerpFlat` — spherical (or near-linear) blend on flat arrays. */
|
|
9
|
+
export function slerpQuatFlat(dst, dstOffset, a, aOffset, b, bOffset, t) {
|
|
10
|
+
let ax = a[aOffset];
|
|
11
|
+
let ay = a[aOffset + 1];
|
|
12
|
+
let az = a[aOffset + 2];
|
|
13
|
+
let aw = a[aOffset + 3];
|
|
14
|
+
let bx = b[bOffset];
|
|
15
|
+
let by = b[bOffset + 1];
|
|
16
|
+
let bz = b[bOffset + 2];
|
|
17
|
+
let bw = b[bOffset + 3];
|
|
18
|
+
if (ax === bx && ay === by && az === bz && aw === bw) {
|
|
19
|
+
dst[dstOffset] = ax;
|
|
20
|
+
dst[dstOffset + 1] = ay;
|
|
21
|
+
dst[dstOffset + 2] = az;
|
|
22
|
+
dst[dstOffset + 3] = aw;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
let dot = ax * bx + ay * by + az * bz + aw * bw;
|
|
26
|
+
if (dot < 0) {
|
|
27
|
+
bx = -bx;
|
|
28
|
+
by = -by;
|
|
29
|
+
bz = -bz;
|
|
30
|
+
bw = -bw;
|
|
31
|
+
dot = -dot;
|
|
32
|
+
}
|
|
33
|
+
let s = 1 - t;
|
|
34
|
+
if (dot < 0.9995) {
|
|
35
|
+
const theta = Math.acos(dot);
|
|
36
|
+
const sin = Math.sin(theta);
|
|
37
|
+
s = Math.sin(s * theta) / sin;
|
|
38
|
+
t = Math.sin(t * theta) / sin;
|
|
39
|
+
dst[dstOffset] = ax * s + bx * t;
|
|
40
|
+
dst[dstOffset + 1] = ay * s + by * t;
|
|
41
|
+
dst[dstOffset + 2] = az * s + bz * t;
|
|
42
|
+
dst[dstOffset + 3] = aw * s + bw * t;
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
dst[dstOffset] = ax * s + bx * t;
|
|
46
|
+
dst[dstOffset + 1] = ay * s + by * t;
|
|
47
|
+
dst[dstOffset + 2] = az * s + bz * t;
|
|
48
|
+
dst[dstOffset + 3] = aw * s + bw * t;
|
|
49
|
+
normalizeQuatFlat(dst, dstOffset);
|
|
50
|
+
}
|
|
51
|
+
export function normalizeQuatFlat(q, offset) {
|
|
52
|
+
const x = q[offset], y = q[offset + 1], z = q[offset + 2], w = q[offset + 3];
|
|
53
|
+
const length = Math.sqrt(x * x + y * y + z * z + w * w);
|
|
54
|
+
if (length <= 1e-9) {
|
|
55
|
+
q[offset] = 0;
|
|
56
|
+
q[offset + 1] = 0;
|
|
57
|
+
q[offset + 2] = 0;
|
|
58
|
+
q[offset + 3] = 1;
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const inv = 1 / length;
|
|
62
|
+
q[offset] = x * inv;
|
|
63
|
+
q[offset + 1] = y * inv;
|
|
64
|
+
q[offset + 2] = z * inv;
|
|
65
|
+
q[offset + 3] = w * inv;
|
|
66
|
+
}
|
|
67
|
+
/** `dst = a * b` on flat quaternions (three r185 `multiplyQuaternionsFlat`). */
|
|
68
|
+
export function multiplyQuatFlat(dst, dstOffset, a, aOffset, b, bOffset) {
|
|
69
|
+
const ax = a[aOffset], ay = a[aOffset + 1], az = a[aOffset + 2], aw = a[aOffset + 3];
|
|
70
|
+
const bx = b[bOffset], by = b[bOffset + 1], bz = b[bOffset + 2], bw = b[bOffset + 3];
|
|
71
|
+
dst[dstOffset] = ax * bw + aw * bx + ay * bz - az * by;
|
|
72
|
+
dst[dstOffset + 1] = ay * bw + aw * by + az * bx - ax * bz;
|
|
73
|
+
dst[dstOffset + 2] = az * bw + aw * bz + ax * by - ay * bx;
|
|
74
|
+
dst[dstOffset + 3] = aw * bw - ax * bx - ay * by - az * bz;
|
|
75
|
+
}
|
|
76
|
+
/** Quaternion conjugate (inverse for unit quaternions) into a flat array. */
|
|
77
|
+
export function conjugateQuatFlat(dst, dstOffset, q, qOffset) {
|
|
78
|
+
dst[dstOffset] = -q[qOffset];
|
|
79
|
+
dst[dstOffset + 1] = -q[qOffset + 1];
|
|
80
|
+
dst[dstOffset + 2] = -q[qOffset + 2];
|
|
81
|
+
dst[dstOffset + 3] = q[qOffset + 3];
|
|
82
|
+
}
|
|
83
|
+
export function lerpVec3Flat(dst, dstOffset, a, aOffset, b, bOffset, t) {
|
|
84
|
+
dst[dstOffset] = a[aOffset] + (b[bOffset] - a[aOffset]) * t;
|
|
85
|
+
dst[dstOffset + 1] = a[aOffset + 1] + (b[bOffset + 1] - a[aOffset + 1]) * t;
|
|
86
|
+
dst[dstOffset + 2] = a[aOffset + 2] + (b[bOffset + 2] - a[aOffset + 2]) * t;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=quatFlat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quatFlat.js","sourceRoot":"","sources":["../../../../../packages/animation/src/pose/quatFlat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T3.8 (PRD-06 §7.2, R11) — bake worker entry. `actor.animation.addClipsFrom`
|
|
3
|
+
* posts the source skeleton + compiled clips here; the bake runs off the main
|
|
4
|
+
* thread and structured-clone returns the baked `CompiledClip` map. Everything
|
|
5
|
+
* on the wire is plain data (Float32Array/Uint8Array/Map), so no marshal layer
|
|
6
|
+
* is needed.
|
|
7
|
+
*/
|
|
8
|
+
import { type BakeRetargetedClipsOptions } from "./Retarget.js";
|
|
9
|
+
import type { CompiledClip } from "./CompiledClip.js";
|
|
10
|
+
import type { SkeletonBinding } from "./SkeletonBinding.js";
|
|
11
|
+
export interface RetargetWorkerRequest {
|
|
12
|
+
readonly kind: "bake";
|
|
13
|
+
readonly requestId: number;
|
|
14
|
+
readonly sourceSkeleton: SkeletonBinding;
|
|
15
|
+
readonly targetSkeleton: SkeletonBinding;
|
|
16
|
+
readonly clips: ReadonlyMap<string, CompiledClip>;
|
|
17
|
+
readonly options?: BakeRetargetedClipsOptions;
|
|
18
|
+
}
|
|
19
|
+
export interface RetargetWorkerResponse {
|
|
20
|
+
readonly kind: "baked" | "error";
|
|
21
|
+
readonly requestId: number;
|
|
22
|
+
readonly clips?: ReadonlyMap<string, CompiledClip>;
|
|
23
|
+
readonly error?: string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=retarget.worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retarget.worker.d.ts","sourceRoot":"","sources":["../../../../../packages/animation/src/pose/retarget.worker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAyB,KAAK,0BAA0B,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,0BAA0B,CAAC;CAC/C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* T3.8 (PRD-06 §7.2, R11) — bake worker entry. `actor.animation.addClipsFrom`
|
|
3
|
+
* posts the source skeleton + compiled clips here; the bake runs off the main
|
|
4
|
+
* thread and structured-clone returns the baked `CompiledClip` map. Everything
|
|
5
|
+
* on the wire is plain data (Float32Array/Uint8Array/Map), so no marshal layer
|
|
6
|
+
* is needed.
|
|
7
|
+
*/
|
|
8
|
+
import { bakeRetargetedClipMap } from "./Retarget.js";
|
|
9
|
+
const scope = self;
|
|
10
|
+
scope.onmessage = (event) => {
|
|
11
|
+
const request = event.data;
|
|
12
|
+
if (request.kind !== "bake")
|
|
13
|
+
return;
|
|
14
|
+
try {
|
|
15
|
+
const clips = bakeRetargetedClipMap({ skeleton: request.sourceSkeleton, clips: request.clips }, request.targetSkeleton, request.options ?? {});
|
|
16
|
+
scope.postMessage({ kind: "baked", requestId: request.requestId, clips });
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
scope.postMessage({ kind: "error", requestId: request.requestId, error: error instanceof Error ? error.message : String(error) });
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=retarget.worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retarget.worker.js","sourceRoot":"","sources":["../../../../../packages/animation/src/pose/retarget.worker.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,qBAAqB,EAAmC,MAAM,eAAe,CAAC;AAoBvF,MAAM,KAAK,GAAG,IAGb,CAAC;AAEF,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;IAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;IAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO;IACpC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,qBAAqB,CACjC,EAAE,QAAQ,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAC1D,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,OAAO,IAAI,EAAE,CACtB,CAAC;QACF,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpI,CAAC;AACH,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aura3d/animation",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -9,10 +9,22 @@
|
|
|
9
9
|
".": {
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
11
11
|
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./pose": {
|
|
14
|
+
"types": "./dist/contracts/pose.d.ts",
|
|
15
|
+
"import": "./dist/contracts/pose.js"
|
|
16
|
+
},
|
|
17
|
+
"./lanes": {
|
|
18
|
+
"types": "./dist/lanes/index.d.ts",
|
|
19
|
+
"import": "./dist/lanes/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./contracts": {
|
|
22
|
+
"types": "./dist/contracts/index.d.ts",
|
|
23
|
+
"import": "./dist/contracts/index.js"
|
|
12
24
|
}
|
|
13
25
|
},
|
|
14
26
|
"dependencies": {
|
|
15
|
-
"@aura3d/math": "
|
|
27
|
+
"@aura3d/math": "4.0.0"
|
|
16
28
|
},
|
|
17
29
|
"description": "Deterministic animation clips, mixers, root motion, skeleton palettes, blend trees, state machines, and scene/ECS animation bridges for Aura3D.",
|
|
18
30
|
"keywords": [
|