@certe/atmos-animation 0.1.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/LICENCE +674 -0
- package/README.md +131 -0
- package/dist/animation-clip.d.ts +25 -0
- package/dist/animation-clip.d.ts.map +1 -0
- package/dist/animation-clip.js +15 -0
- package/dist/animation-clip.js.map +1 -0
- package/dist/animation-handler.d.ts +31 -0
- package/dist/animation-handler.d.ts.map +1 -0
- package/dist/animation-handler.js +75 -0
- package/dist/animation-handler.js.map +1 -0
- package/dist/animation-mixer.d.ts +75 -0
- package/dist/animation-mixer.d.ts.map +1 -0
- package/dist/animation-mixer.js +274 -0
- package/dist/animation-mixer.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/keyframe-sampler.d.ts +14 -0
- package/dist/keyframe-sampler.d.ts.map +1 -0
- package/dist/keyframe-sampler.js +85 -0
- package/dist/keyframe-sampler.js.map +1 -0
- package/dist/pose.d.ts +16 -0
- package/dist/pose.d.ts.map +1 -0
- package/dist/pose.js +89 -0
- package/dist/pose.js.map +1 -0
- package/dist/register-builtins.d.ts +3 -0
- package/dist/register-builtins.d.ts.map +1 -0
- package/dist/register-builtins.js +18 -0
- package/dist/register-builtins.js.map +1 -0
- package/dist/skeleton.d.ts +32 -0
- package/dist/skeleton.d.ts.map +1 -0
- package/dist/skeleton.js +47 -0
- package/dist/skeleton.js.map +1 -0
- package/package.json +28 -0
- package/src/index.ts +15 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animation-mixer.js","sourceRoot":"","sources":["../src/animation-mixer.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { createSkeleton, getInverseBindMatrix } from './skeleton.js';
|
|
2
|
+
export type { Joint, Skeleton } from './skeleton.js';
|
|
3
|
+
export { createAnimationClip } from './animation-clip.js';
|
|
4
|
+
export type { KeyframeTrack, AnimationClip, AnimationChannel, Interpolation } from './animation-clip.js';
|
|
5
|
+
export { sampleTrack } from './keyframe-sampler.js';
|
|
6
|
+
export { computeBoneMatrices } from './pose.js';
|
|
7
|
+
export { AnimationMixer } from './animation-mixer.js';
|
|
8
|
+
export type { AnimationLayer } from './animation-mixer.js';
|
|
9
|
+
export { AnimationHandler } from './animation-handler.js';
|
|
10
|
+
export { registerAnimationBuiltins } from './register-builtins.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { createSkeleton, getInverseBindMatrix } from './skeleton.js';
|
|
2
|
+
export { createAnimationClip } from './animation-clip.js';
|
|
3
|
+
export { sampleTrack } from './keyframe-sampler.js';
|
|
4
|
+
export { computeBoneMatrices } from './pose.js';
|
|
5
|
+
export { AnimationMixer } from './animation-mixer.js';
|
|
6
|
+
export { AnimationHandler } from './animation-handler.js';
|
|
7
|
+
export { registerAnimationBuiltins } from './register-builtins.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyframe sampling with binary search + interpolation.
|
|
3
|
+
* Hot-path code – zero heap allocations via module-level scratch arrays.
|
|
4
|
+
*/
|
|
5
|
+
import type { KeyframeTrack } from './animation-clip.js';
|
|
6
|
+
/**
|
|
7
|
+
* Sample a keyframe track at the given time, writing the result into `out`.
|
|
8
|
+
* For translation/scale: out must be Float32Array(3).
|
|
9
|
+
* For rotation: out must be Float32Array(4).
|
|
10
|
+
*
|
|
11
|
+
* @returns The `out` array.
|
|
12
|
+
*/
|
|
13
|
+
export declare function sampleTrack(out: Float32Array, track: KeyframeTrack, time: number): Float32Array;
|
|
14
|
+
//# sourceMappingURL=keyframe-sampler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyframe-sampler.d.ts","sourceRoot":"","sources":["../src/keyframe-sampler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE,MAAM,GACX,YAAY,CA8Cd"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyframe sampling with binary search + interpolation.
|
|
3
|
+
* Hot-path code – zero heap allocations via module-level scratch arrays.
|
|
4
|
+
*/
|
|
5
|
+
import { Vec3, Quat } from '@certe/atmos-math';
|
|
6
|
+
// Scratch arrays for interpolation (never exposed)
|
|
7
|
+
const _scratchA = new Float32Array(4);
|
|
8
|
+
const _scratchB = new Float32Array(4);
|
|
9
|
+
/**
|
|
10
|
+
* Sample a keyframe track at the given time, writing the result into `out`.
|
|
11
|
+
* For translation/scale: out must be Float32Array(3).
|
|
12
|
+
* For rotation: out must be Float32Array(4).
|
|
13
|
+
*
|
|
14
|
+
* @returns The `out` array.
|
|
15
|
+
*/
|
|
16
|
+
export function sampleTrack(out, track, time) {
|
|
17
|
+
const { times, values, interpolation, channel } = track;
|
|
18
|
+
const keyCount = times.length;
|
|
19
|
+
if (keyCount === 0)
|
|
20
|
+
return out;
|
|
21
|
+
// Clamp to range
|
|
22
|
+
if (time <= times[0]) {
|
|
23
|
+
return copyValues(out, values, 0, channel);
|
|
24
|
+
}
|
|
25
|
+
if (time >= times[keyCount - 1]) {
|
|
26
|
+
return copyValues(out, values, keyCount - 1, channel);
|
|
27
|
+
}
|
|
28
|
+
// Binary search for the keyframe pair
|
|
29
|
+
const i = findKeyframe(times, time);
|
|
30
|
+
const t0 = times[i];
|
|
31
|
+
const t1 = times[i + 1];
|
|
32
|
+
if (interpolation === 'STEP') {
|
|
33
|
+
return copyValues(out, values, i, channel);
|
|
34
|
+
}
|
|
35
|
+
// LINEAR interpolation
|
|
36
|
+
const alpha = (time - t0) / (t1 - t0);
|
|
37
|
+
const stride = channel === 'rotation' ? 4 : 3;
|
|
38
|
+
const off0 = i * stride;
|
|
39
|
+
const off1 = (i + 1) * stride;
|
|
40
|
+
if (channel === 'rotation') {
|
|
41
|
+
// Quaternion slerp
|
|
42
|
+
for (let j = 0; j < 4; j++) {
|
|
43
|
+
_scratchA[j] = values[off0 + j];
|
|
44
|
+
_scratchB[j] = values[off1 + j];
|
|
45
|
+
}
|
|
46
|
+
Quat.slerp(out, _scratchA, _scratchB, alpha);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// Vec3 lerp for translation / scale
|
|
50
|
+
for (let j = 0; j < 3; j++) {
|
|
51
|
+
_scratchA[j] = values[off0 + j];
|
|
52
|
+
_scratchB[j] = values[off1 + j];
|
|
53
|
+
}
|
|
54
|
+
Vec3.lerp(out, _scratchA.subarray(0, 3), _scratchB.subarray(0, 3), alpha);
|
|
55
|
+
}
|
|
56
|
+
return out;
|
|
57
|
+
}
|
|
58
|
+
/** Copy values for the given keyframe index into `out`. */
|
|
59
|
+
function copyValues(out, values, index, channel) {
|
|
60
|
+
const stride = channel === 'rotation' ? 4 : 3;
|
|
61
|
+
const offset = index * stride;
|
|
62
|
+
for (let i = 0; i < stride; i++) {
|
|
63
|
+
out[i] = values[offset + i];
|
|
64
|
+
}
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Binary search: find index i such that times[i] <= time < times[i+1].
|
|
69
|
+
* Assumes time is within [times[0], times[last]].
|
|
70
|
+
*/
|
|
71
|
+
function findKeyframe(times, time) {
|
|
72
|
+
let lo = 0;
|
|
73
|
+
let hi = times.length - 1;
|
|
74
|
+
while (lo < hi - 1) {
|
|
75
|
+
const mid = (lo + hi) >> 1;
|
|
76
|
+
if (times[mid] <= time) {
|
|
77
|
+
lo = mid;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
hi = mid;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return lo;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=keyframe-sampler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyframe-sampler.js","sourceRoot":"","sources":["../src/keyframe-sampler.ts"],"names":[],"mappings":"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"}
|
package/dist/pose.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bone matrix computation: compose local TRS → walk parent chain → apply inverse bind matrix.
|
|
3
|
+
* Pre-allocated scratch arrays at module level for zero heap allocs on hot path.
|
|
4
|
+
*/
|
|
5
|
+
import type { Skeleton } from './skeleton.js';
|
|
6
|
+
/**
|
|
7
|
+
* Compute final bone matrices (joint matrix = parentWorldMatrix * localTRS * inverseBindMatrix).
|
|
8
|
+
*
|
|
9
|
+
* @param out Output buffer: jointCount * 16 floats. Each 16-float block is one mat4.
|
|
10
|
+
* @param skeleton The skeleton hierarchy
|
|
11
|
+
* @param localT Per-joint local translations: jointCount * 3 floats
|
|
12
|
+
* @param localR Per-joint local rotations (quaternions): jointCount * 4 floats
|
|
13
|
+
* @param localS Per-joint local scales: jointCount * 3 floats
|
|
14
|
+
*/
|
|
15
|
+
export declare function computeBoneMatrices(out: Float32Array, skeleton: Skeleton, localT: Float32Array, localR: Float32Array, localS: Float32Array): void;
|
|
16
|
+
//# sourceMappingURL=pose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pose.d.ts","sourceRoot":"","sources":["../src/pose.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAM9C;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,GACnB,IAAI,CAkDN"}
|
package/dist/pose.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bone matrix computation: compose local TRS → walk parent chain → apply inverse bind matrix.
|
|
3
|
+
* Pre-allocated scratch arrays at module level for zero heap allocs on hot path.
|
|
4
|
+
*/
|
|
5
|
+
import { Mat4 } from '@certe/atmos-math';
|
|
6
|
+
// Module-level scratch matrices (reused every frame)
|
|
7
|
+
const _localMat = Mat4.create();
|
|
8
|
+
const _ibm = Mat4.create();
|
|
9
|
+
/**
|
|
10
|
+
* Compute final bone matrices (joint matrix = parentWorldMatrix * localTRS * inverseBindMatrix).
|
|
11
|
+
*
|
|
12
|
+
* @param out Output buffer: jointCount * 16 floats. Each 16-float block is one mat4.
|
|
13
|
+
* @param skeleton The skeleton hierarchy
|
|
14
|
+
* @param localT Per-joint local translations: jointCount * 3 floats
|
|
15
|
+
* @param localR Per-joint local rotations (quaternions): jointCount * 4 floats
|
|
16
|
+
* @param localS Per-joint local scales: jointCount * 3 floats
|
|
17
|
+
*/
|
|
18
|
+
export function computeBoneMatrices(out, skeleton, localT, localR, localS) {
|
|
19
|
+
const { joints, jointCount, inverseBindMatrices } = skeleton;
|
|
20
|
+
// Pass 1: Compute world matrices in-place in `out`.
|
|
21
|
+
// We rely on parent indices always being < current index (topological order).
|
|
22
|
+
for (let i = 0; i < jointCount; i++) {
|
|
23
|
+
const tOff = i * 3;
|
|
24
|
+
const rOff = i * 4;
|
|
25
|
+
const sOff = i * 3;
|
|
26
|
+
const outOff = i * 16;
|
|
27
|
+
// Compose local TRS matrix
|
|
28
|
+
Mat4.fromRotationTranslationScale(_localMat, localR.subarray(rOff, rOff + 4), localT.subarray(tOff, tOff + 3), localS.subarray(sOff, sOff + 3));
|
|
29
|
+
const parentIdx = joints[i].parentIndex;
|
|
30
|
+
if (parentIdx < 0) {
|
|
31
|
+
// Root joint: world = local
|
|
32
|
+
copyMat4ToBuffer(out, outOff, _localMat);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// world = parentWorld * local
|
|
36
|
+
// Parent is already computed (topological order guarantee)
|
|
37
|
+
multiplyFromBuffer(out, outOff, out, parentIdx * 16, _localMat);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// Pass 2: Multiply each world matrix by its inverse bind matrix.
|
|
41
|
+
// finalBoneMatrix = worldMatrix * inverseBindMatrix
|
|
42
|
+
for (let i = 0; i < jointCount; i++) {
|
|
43
|
+
const outOff = i * 16;
|
|
44
|
+
const ibmOff = i * 16;
|
|
45
|
+
// Read IBM
|
|
46
|
+
for (let j = 0; j < 16; j++) {
|
|
47
|
+
_ibm[j] = inverseBindMatrices[ibmOff + j];
|
|
48
|
+
}
|
|
49
|
+
// Read world matrix into _localMat (reuse scratch)
|
|
50
|
+
for (let j = 0; j < 16; j++) {
|
|
51
|
+
_localMat[j] = out[outOff + j];
|
|
52
|
+
}
|
|
53
|
+
// result = worldMatrix * IBM
|
|
54
|
+
// Write directly back into out
|
|
55
|
+
mulMat4InPlace(out, outOff, _localMat, _ibm);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Copy a Mat4 into a Float32Array at the given offset. */
|
|
59
|
+
function copyMat4ToBuffer(buf, offset, m) {
|
|
60
|
+
for (let i = 0; i < 16; i++) {
|
|
61
|
+
buf[offset + i] = m[i];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/** Multiply two mat4s where `a` is read from a buffer at aOffset, result written to buf[outOffset]. */
|
|
65
|
+
function multiplyFromBuffer(buf, outOffset, aBuf, aOffset, b) {
|
|
66
|
+
// a * b, column-major
|
|
67
|
+
for (let col = 0; col < 4; col++) {
|
|
68
|
+
for (let row = 0; row < 4; row++) {
|
|
69
|
+
let sum = 0;
|
|
70
|
+
for (let k = 0; k < 4; k++) {
|
|
71
|
+
sum += aBuf[aOffset + k * 4 + row] * b[col * 4 + k];
|
|
72
|
+
}
|
|
73
|
+
buf[outOffset + col * 4 + row] = sum;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Multiply a * b and write result into buf at offset. */
|
|
78
|
+
function mulMat4InPlace(buf, offset, a, b) {
|
|
79
|
+
for (let col = 0; col < 4; col++) {
|
|
80
|
+
for (let row = 0; row < 4; row++) {
|
|
81
|
+
let sum = 0;
|
|
82
|
+
for (let k = 0; k < 4; k++) {
|
|
83
|
+
sum += a[k * 4 + row] * b[col * 4 + k];
|
|
84
|
+
}
|
|
85
|
+
buf[offset + col * 4 + row] = sum;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=pose.js.map
|
package/dist/pose.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pose.js","sourceRoot":"","sources":["../src/pose.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-builtins.d.ts","sourceRoot":"","sources":["../src/register-builtins.ts"],"names":[],"mappings":"AAGA,wDAAwD;AACxD,wBAAgB,yBAAyB,IAAI,IAAI,CAahD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { registerComponent } from '@certe/atmos-core';
|
|
2
|
+
import { AnimationHandler } from './animation-handler.js';
|
|
3
|
+
/** Register animation components (AnimationHandler). */
|
|
4
|
+
export function registerAnimationBuiltins() {
|
|
5
|
+
registerComponent(AnimationHandler, {
|
|
6
|
+
name: 'AnimationHandler',
|
|
7
|
+
properties: [
|
|
8
|
+
{
|
|
9
|
+
key: 'initialClip', type: 'enum', options: [],
|
|
10
|
+
optionsFrom: (t) => t.clipNames,
|
|
11
|
+
},
|
|
12
|
+
{ key: 'speed', type: 'number', min: 0, max: 10, step: 0.1 },
|
|
13
|
+
{ key: 'loop', type: 'boolean' },
|
|
14
|
+
{ key: 'autoplay', type: 'boolean' },
|
|
15
|
+
],
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=register-builtins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-builtins.js","sourceRoot":"","sources":["../src/register-builtins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,wDAAwD;AACxD,MAAM,UAAU,yBAAyB;IACvC,iBAAiB,CAAC,gBAAgB,EAAE;QAClC,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE;YACV;gBACE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;gBAC7C,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAE,CAAsB,CAAC,SAAS;aACtD;YACD,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;YAC5D,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;YAChC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;SACrC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Mat4Type } from '@certe/atmos-math';
|
|
2
|
+
/** A single joint in a skeleton. */
|
|
3
|
+
export interface Joint {
|
|
4
|
+
name: string;
|
|
5
|
+
/** Index into the skeleton's joints array. -1 = root (no parent). */
|
|
6
|
+
parentIndex: number;
|
|
7
|
+
}
|
|
8
|
+
/** Skeleton data: joint hierarchy + inverse bind matrices + rest pose. */
|
|
9
|
+
export interface Skeleton {
|
|
10
|
+
joints: readonly Joint[];
|
|
11
|
+
/** One 4x4 matrix per joint (flattened: jointCount * 16 floats). */
|
|
12
|
+
inverseBindMatrices: Float32Array;
|
|
13
|
+
jointCount: number;
|
|
14
|
+
/** Rest-pose local translations: jointCount * 3 floats. */
|
|
15
|
+
restT: Float32Array;
|
|
16
|
+
/** Rest-pose local rotations (quaternions): jointCount * 4 floats. */
|
|
17
|
+
restR: Float32Array;
|
|
18
|
+
/** Rest-pose local scales: jointCount * 3 floats. */
|
|
19
|
+
restS: Float32Array;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create a skeleton from joint definitions and inverse bind matrices.
|
|
23
|
+
* @param joints Joint hierarchy (parent indices must reference earlier joints or -1)
|
|
24
|
+
* @param inverseBindMatrices Flat Float32Array of jointCount * 16 floats
|
|
25
|
+
* @param restT Optional rest-pose translations (jointCount * 3). Defaults to zeros.
|
|
26
|
+
* @param restR Optional rest-pose rotations (jointCount * 4). Defaults to identity quaternions.
|
|
27
|
+
* @param restS Optional rest-pose scales (jointCount * 3). Defaults to (1,1,1).
|
|
28
|
+
*/
|
|
29
|
+
export declare function createSkeleton(joints: Joint[], inverseBindMatrices: Float32Array, restT?: Float32Array, restR?: Float32Array, restS?: Float32Array): Skeleton;
|
|
30
|
+
/** Read one inverse bind matrix from a skeleton. */
|
|
31
|
+
export declare function getInverseBindMatrix(out: Mat4Type, skeleton: Skeleton, jointIndex: number): Mat4Type;
|
|
32
|
+
//# sourceMappingURL=skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../src/skeleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,oCAAoC;AACpC,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IACzB,oEAAoE;IACpE,mBAAmB,EAAE,YAAY,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,KAAK,EAAE,YAAY,CAAC;IACpB,sEAAsE;IACtE,KAAK,EAAE,YAAY,CAAC;IACpB,qDAAqD;IACrD,KAAK,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,KAAK,EAAE,EACf,mBAAmB,EAAE,YAAY,EACjC,KAAK,CAAC,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,YAAY,GACnB,QAAQ,CA4BV;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,MAAM,GACjB,QAAQ,CAMV"}
|
package/dist/skeleton.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a skeleton from joint definitions and inverse bind matrices.
|
|
3
|
+
* @param joints Joint hierarchy (parent indices must reference earlier joints or -1)
|
|
4
|
+
* @param inverseBindMatrices Flat Float32Array of jointCount * 16 floats
|
|
5
|
+
* @param restT Optional rest-pose translations (jointCount * 3). Defaults to zeros.
|
|
6
|
+
* @param restR Optional rest-pose rotations (jointCount * 4). Defaults to identity quaternions.
|
|
7
|
+
* @param restS Optional rest-pose scales (jointCount * 3). Defaults to (1,1,1).
|
|
8
|
+
*/
|
|
9
|
+
export function createSkeleton(joints, inverseBindMatrices, restT, restR, restS) {
|
|
10
|
+
if (inverseBindMatrices.length !== joints.length * 16) {
|
|
11
|
+
throw new Error(`Expected ${joints.length * 16} floats for inverseBindMatrices, got ${inverseBindMatrices.length}`);
|
|
12
|
+
}
|
|
13
|
+
const jc = joints.length;
|
|
14
|
+
const defaultT = restT ?? new Float32Array(jc * 3);
|
|
15
|
+
const defaultR = restR ?? (() => {
|
|
16
|
+
const r = new Float32Array(jc * 4);
|
|
17
|
+
for (let i = 0; i < jc; i++)
|
|
18
|
+
r[i * 4 + 3] = 1; // identity quaternions
|
|
19
|
+
return r;
|
|
20
|
+
})();
|
|
21
|
+
const defaultS = restS ?? (() => {
|
|
22
|
+
const s = new Float32Array(jc * 3);
|
|
23
|
+
for (let i = 0; i < jc; i++) {
|
|
24
|
+
s[i * 3] = 1;
|
|
25
|
+
s[i * 3 + 1] = 1;
|
|
26
|
+
s[i * 3 + 2] = 1;
|
|
27
|
+
}
|
|
28
|
+
return s;
|
|
29
|
+
})();
|
|
30
|
+
return {
|
|
31
|
+
joints,
|
|
32
|
+
inverseBindMatrices,
|
|
33
|
+
jointCount: jc,
|
|
34
|
+
restT: defaultT,
|
|
35
|
+
restR: defaultR,
|
|
36
|
+
restS: defaultS,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Read one inverse bind matrix from a skeleton. */
|
|
40
|
+
export function getInverseBindMatrix(out, skeleton, jointIndex) {
|
|
41
|
+
const offset = jointIndex * 16;
|
|
42
|
+
for (let i = 0; i < 16; i++) {
|
|
43
|
+
out[i] = skeleton.inverseBindMatrices[offset + i];
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.js","sourceRoot":"","sources":["../src/skeleton.ts"],"names":[],"mappings":"AAuBA;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAe,EACf,mBAAiC,EACjC,KAAoB,EACpB,KAAoB,EACpB,KAAoB;IAEpB,IAAI,mBAAmB,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CACb,YAAY,MAAM,CAAC,MAAM,GAAG,EAAE,wCAAwC,mBAAmB,CAAC,MAAM,EAAE,CACnG,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IAEzB,MAAM,QAAQ,GAAG,KAAK,IAAI,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;QAC9B,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB;QACtE,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE;QAC9B,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAClF,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,MAAM;QACN,mBAAmB;QACnB,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,QAAQ;KAChB,CAAC;AACJ,CAAC;AAED,oDAAoD;AACpD,MAAM,UAAU,oBAAoB,CAClC,GAAa,EACb,QAAkB,EAClB,UAAkB;IAElB,MAAM,MAAM,GAAG,UAAU,GAAG,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACrD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@certe/atmos-animation",
|
|
3
|
+
"description": "Skeletal animation system for the Atmos Engine — keyframes, blending, cross-fade",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/certesolutions-cyber/atmos.git",
|
|
8
|
+
"directory": "packages/animation"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/certesolutions-cyber/atmos",
|
|
11
|
+
"license": "GPL-3.0-or-later",
|
|
12
|
+
"keywords": ["animation", "skeletal", "game-engine", "keyframe", "skinning", "atmos"],
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "src/index.ts",
|
|
15
|
+
"types": "src/index.ts",
|
|
16
|
+
"publishConfig": {
|
|
17
|
+
"main": "dist/index.js",
|
|
18
|
+
"types": "dist/index.d.ts"
|
|
19
|
+
},
|
|
20
|
+
"files": ["dist", "!dist/__tests__", "package.json", "README.md", "LICENCE"],
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@certe/atmos-core": "^0.1.0",
|
|
23
|
+
"@certe/atmos-math": "^0.1.0"
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"test": "vitest run"
|
|
27
|
+
}
|
|
28
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { createSkeleton, getInverseBindMatrix } from './skeleton.js';
|
|
2
|
+
export type { Joint, Skeleton } from './skeleton.js';
|
|
3
|
+
|
|
4
|
+
export { createAnimationClip } from './animation-clip.js';
|
|
5
|
+
export type { KeyframeTrack, AnimationClip, AnimationChannel, Interpolation } from './animation-clip.js';
|
|
6
|
+
|
|
7
|
+
export { sampleTrack } from './keyframe-sampler.js';
|
|
8
|
+
export { computeBoneMatrices } from './pose.js';
|
|
9
|
+
|
|
10
|
+
export { AnimationMixer } from './animation-mixer.js';
|
|
11
|
+
export type { AnimationLayer } from './animation-mixer.js';
|
|
12
|
+
|
|
13
|
+
export { AnimationHandler } from './animation-handler.js';
|
|
14
|
+
|
|
15
|
+
export { registerAnimationBuiltins } from './register-builtins.js';
|