@yali-engine/animation 0.0.0-stage → 0.4.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { type Component, type ComponentValues, type Entity, type World } from '@yali-engine/core';
2
+ import type { Animation } from './animation.ts';
3
+ import type { AnimatedGltf } from './gltf.ts';
4
+ /**
5
+ * What a ragdoll needs of `@yali-engine/physics` (duck-typed: this package does not depend on it). Pass
6
+ * its components and value builders: `{ ...physicsComponents, rigidBody, collider, joint }`.
7
+ */
8
+ export interface RagdollPhysics {
9
+ readonly RigidBody: Component;
10
+ readonly Collider: Component;
11
+ readonly Joint: Component;
12
+ rigidBody(o?: {
13
+ kind?: 0 | 1 | 2;
14
+ }): ComponentValues;
15
+ collider(shape: {
16
+ capsule: {
17
+ halfHeight: number;
18
+ radius: number;
19
+ };
20
+ }, o?: {
21
+ layer?: number;
22
+ mask?: number;
23
+ density?: number;
24
+ }): ComponentValues;
25
+ joint(type: 'spherical', o?: {
26
+ other?: Entity;
27
+ anchorA?: readonly [number, number, number];
28
+ anchorB?: readonly [number, number, number];
29
+ axis?: readonly [number, number, number];
30
+ cone?: number;
31
+ }): ComponentValues;
32
+ }
33
+ /** `buildRagdoll`'s options. */
34
+ export interface RagdollOptions {
35
+ /** Capsule radius as a share of its bone's length (default 0.2), at least `minRadius`. */
36
+ readonly thickness?: number;
37
+ /** Smallest capsule radius in metres (default 0.02). */
38
+ readonly minRadius?: number;
39
+ /** Bones shorter than this (metres) get no body (default 0.03). */
40
+ readonly minLength?: number;
41
+ /** Each ball joint's swing cone, radians (default 0.7). */
42
+ readonly cone?: number;
43
+ /** The collision layer bit its bodies use; they do not collide with each other (default 1 << 15). */
44
+ readonly layer?: number;
45
+ }
46
+ /** A built ragdoll: its bodies (one per bone) and whether physics drives the pose. */
47
+ export interface Ragdoll {
48
+ readonly root: Entity;
49
+ readonly bodies: readonly {
50
+ readonly entity: Entity;
51
+ readonly joint: number;
52
+ }[];
53
+ active: boolean;
54
+ }
55
+ /**
56
+ * A ragdoll for a spawned model (ADR-0091): a capsule body for every skinned joint with a
57
+ * skinned child (from the joint to its child, `thickness` of its length thick), ball joints with
58
+ * a swing cone between neighbouring bodies, on one collision layer that does not collide with
59
+ * itself. Built kinematic, following the animation (`anim.Bone` follow); `setRagdoll(…, true)`
60
+ * hands it to physics. Call after the model's first animation update (it reads the joints'
61
+ * poses).
62
+ *
63
+ * @example
64
+ * const ragdoll = buildRagdoll(world, animation, { ...physicsComponents, rigidBody, collider, joint }, fox);
65
+ * setRagdoll(world, ragdoll, physicsComponents, rigidBody, true); // it falls
66
+ */
67
+ export declare function buildRagdoll(world: World, animation: Animation, physics: RagdollPhysics, model: AnimatedGltf, o?: RagdollOptions): Ragdoll;
68
+ /**
69
+ * Hands a ragdoll to physics (`active`: its bodies dynamic, driving the skeleton) or back to the
70
+ * animation (kinematic, following it). Bodies start from rest when activated.
71
+ */
72
+ export declare function setRagdoll(world: World, ragdoll: Ragdoll, physics: Pick<RagdollPhysics, 'RigidBody' | 'rigidBody'>, active: boolean): void;
@@ -0,0 +1,192 @@
1
+ import { registerTransforms, YaliError } from '@yali-engine/core';
2
+ import { BONE_DRIVE, BONE_FOLLOW, registerAnimation } from "./components.js";
3
+ const col = (m, c) => [m[c * 4], m[c * 4 + 1], m[c * 4 + 2]];
4
+ const sub = (a, b) => [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
5
+ const len = (a) => Math.hypot(a[0], a[1], a[2]);
6
+ /** `q · v` for a unit quaternion. */
7
+ function rotate(q, v) {
8
+ const [x, y, z, w] = q;
9
+ const tx = 2 * (y * v[2] - z * v[1]);
10
+ const ty = 2 * (z * v[0] - x * v[2]);
11
+ const tz = 2 * (x * v[1] - y * v[0]);
12
+ return [v[0] + w * tx + (y * tz - z * ty), v[1] + w * ty + (z * tx - x * tz), v[2] + w * tz + (x * ty - y * tx)];
13
+ }
14
+ /** The shortest rotation taking unit `a` to unit `b`. */
15
+ function arc(a, b) {
16
+ const d = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
17
+ if (d < -0.99999) {
18
+ // Opposite: half a turn about an axis perpendicular to `a`.
19
+ const p = Math.abs(a[0]) < 0.9 ? [0, -a[2], a[1]] : [a[2], 0, -a[0]];
20
+ const l = len(p);
21
+ return [p[0] / l, p[1] / l, p[2] / l, 0];
22
+ }
23
+ const c = [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
24
+ const q = [c[0], c[1], c[2], 1 + d];
25
+ const l = Math.hypot(...q);
26
+ return q.map((v) => v / l);
27
+ }
28
+ const qmul = (a, b) => [
29
+ a[3] * b[0] + a[0] * b[3] + a[1] * b[2] - a[2] * b[1],
30
+ a[3] * b[1] - a[0] * b[2] + a[1] * b[3] + a[2] * b[0],
31
+ a[3] * b[2] + a[0] * b[1] - a[1] * b[0] + a[2] * b[3],
32
+ a[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2],
33
+ ];
34
+ const conj = (q) => [-q[0], -q[1], -q[2], q[3]];
35
+ /** A column-major rotation matrix's quaternion (its columns normalized: scale removed). */
36
+ function quatOf(m) {
37
+ const c0 = col(m, 0);
38
+ const c1 = col(m, 1);
39
+ const c2 = col(m, 2);
40
+ const [s0, s1, s2] = [len(c0), len(c1), len(c2)];
41
+ const [m00, m10, m20] = c0.map((v) => v / s0);
42
+ const [m01, m11, m21] = c1.map((v) => v / s1);
43
+ const [m02, m12, m22] = c2.map((v) => v / s2);
44
+ const t = m00 + m11 + m22;
45
+ let q;
46
+ if (t > 0) {
47
+ const s = Math.sqrt(t + 1) * 2;
48
+ q = [(m21 - m12) / s, (m02 - m20) / s, (m10 - m01) / s, 0.25 * s];
49
+ }
50
+ else if (m00 > m11 && m00 > m22) {
51
+ const s = Math.sqrt(1 + m00 - m11 - m22) * 2;
52
+ q = [0.25 * s, (m01 + m10) / s, (m02 + m20) / s, (m21 - m12) / s];
53
+ }
54
+ else if (m11 > m22) {
55
+ const s = Math.sqrt(1 + m11 - m00 - m22) * 2;
56
+ q = [(m01 + m10) / s, 0.25 * s, (m12 + m21) / s, (m02 - m20) / s];
57
+ }
58
+ else {
59
+ const s = Math.sqrt(1 + m22 - m00 - m11) * 2;
60
+ q = [(m02 + m20) / s, (m12 + m21) / s, 0.25 * s, (m10 - m01) / s];
61
+ }
62
+ const l = Math.hypot(...q);
63
+ return q.map((v) => v / l);
64
+ }
65
+ /**
66
+ * A ragdoll for a spawned model (ADR-0091): a capsule body for every skinned joint with a
67
+ * skinned child (from the joint to its child, `thickness` of its length thick), ball joints with
68
+ * a swing cone between neighbouring bodies, on one collision layer that does not collide with
69
+ * itself. Built kinematic, following the animation (`anim.Bone` follow); `setRagdoll(…, true)`
70
+ * hands it to physics. Call after the model's first animation update (it reads the joints'
71
+ * poses).
72
+ *
73
+ * @example
74
+ * const ragdoll = buildRagdoll(world, animation, { ...physicsComponents, rigidBody, collider, joint }, fox);
75
+ * setRagdoll(world, ragdoll, physicsComponents, rigidBody, true); // it falls
76
+ */
77
+ export function buildRagdoll(world, animation, physics, model, o = {}) {
78
+ const { Transform, GlobalTransform } = registerTransforms(world);
79
+ const { Bone } = registerAnimation(world);
80
+ const thickness = o.thickness ?? 0.2;
81
+ const minRadius = o.minRadius ?? 0.02;
82
+ const minLength = o.minLength ?? 0.03;
83
+ const layer = o.layer ?? 1 << 15;
84
+ // The root's world pose (a root-level entity).
85
+ const rootT = readTransform(world, Transform, model.root);
86
+ // Skinned joints (skeleton indices); each one's first skinned child makes its bone.
87
+ const skinned = new Set();
88
+ for (const slots of model.assets.skinJoints)
89
+ for (const j of slots)
90
+ skinned.add(j);
91
+ const parentJoint = (j) => model.assets.parents[j] ?? -1;
92
+ const childOf = new Map();
93
+ for (const j of [...skinned].sort((a, b) => a - b)) {
94
+ const p = parentJoint(j);
95
+ if (p >= 0 && skinned.has(p) && !childOf.has(p))
96
+ childOf.set(p, j);
97
+ }
98
+ const bodies = [];
99
+ const bodyOf = new Map();
100
+ const s = rootT.s;
101
+ const world3 = (m) => {
102
+ // A model-space point → world.
103
+ const p = rotate(rootT.r, col(m, 3).map((v) => v * s));
104
+ return [rootT.t[0] + p[0], rootT.t[1] + p[1], rootT.t[2] + p[2]];
105
+ };
106
+ const order = [...childOf.keys()].sort((a, b) => a - b);
107
+ for (const j of order) {
108
+ const c = childOf.get(j);
109
+ const mj = animation.jointModel(model.root, j);
110
+ const mc = animation.jointModel(model.root, c);
111
+ if (!mj || !mc)
112
+ throw new YaliError('ANIM_INVALID', 'buildRagdoll needs the model animated once (no joint poses yet).', 'Step the app once after spawnAnimatedGltf, then build the ragdoll.');
113
+ const pj = world3(mj);
114
+ const pc = world3(mc);
115
+ const lengthW = len(sub(pc, pj));
116
+ if (lengthW < minLength)
117
+ continue;
118
+ const radius = Math.max(minRadius, thickness * lengthW);
119
+ // The bone's direction in the joint's frame (model units), and the body's offset: halfway, Y along it.
120
+ const qj = quatOf(mj);
121
+ const dModel = sub(col(mc, 3), col(mj, 3));
122
+ const sj = len(col(mj, 0)) || 1;
123
+ const local = rotate(conj(qj), dModel).map((v) => v / sj);
124
+ const ll = len(local) || 1;
125
+ const offsetR = arc([0, 1, 0], local.map((v) => v / ll));
126
+ const offsetT = local.map((v) => v * 0.5);
127
+ // The body's world pose (what the follow pass will write).
128
+ const centerW = pj.map((v, i) => (v + pc[i]) * 0.5);
129
+ const rW = qmul(qmul(rootT.r, qj), offsetR);
130
+ const e = world.spawn([Transform, GlobalTransform, physics.RigidBody, physics.Collider, Bone]);
131
+ world.insert(e, Transform, { t: centerW, r: rW, s: 1 });
132
+ world.insert(e, physics.RigidBody, physics.rigidBody({ kind: 1 }));
133
+ world.insert(e, physics.Collider, physics.collider({ capsule: { halfHeight: Math.max(0, lengthW / 2 - radius), radius } }, { layer, mask: ~layer >>> 0, density: 985 }));
134
+ world.insert(e, Bone, { animator: model.root, joint: j, mode: BONE_FOLLOW, offsetT, offsetR });
135
+ bodies.push({ entity: e, joint: j });
136
+ bodyOf.set(j, { entity: e, pose: { t: centerW, r: rW } });
137
+ }
138
+ // Ball joints: each body to the body of its nearest ancestor bone, at its joint.
139
+ const toLocal = (pose, p) => rotate(conj(pose.r), sub(p, pose.t));
140
+ for (const { entity, joint } of bodies) {
141
+ let a = parentJoint(joint);
142
+ while (a >= 0 && !bodyOf.has(a))
143
+ a = parentJoint(a);
144
+ const me = bodyOf.get(joint);
145
+ const at = world3(animation.jointModel(model.root, joint));
146
+ if (a < 0)
147
+ continue; // the topmost bone: free (its joint is the pelvis)
148
+ const other = bodyOf.get(a);
149
+ const jv = physics.joint('spherical', { other: other.entity, anchorA: toLocal(other.pose, at), anchorB: toLocal(me.pose, at), axis: [0, 1, 0], cone: o.cone ?? 0.7 });
150
+ world.insert(entity, physics.Joint, jv);
151
+ }
152
+ return { root: model.root, bodies, active: false };
153
+ }
154
+ /**
155
+ * Hands a ragdoll to physics (`active`: its bodies dynamic, driving the skeleton) or back to the
156
+ * animation (kinematic, following it). Bodies start from rest when activated.
157
+ */
158
+ export function setRagdoll(world, ragdoll, physics, active) {
159
+ const { Bone } = registerAnimation(world);
160
+ for (const { entity, joint } of ragdoll.bodies) {
161
+ world.insert(entity, physics.RigidBody, physics.rigidBody({ kind: active ? 0 : 1 }));
162
+ const q = world.query({ with: [Bone], columns: [[Bone, 'offsetT'], [Bone, 'offsetR']] });
163
+ let offsetT = [0, 0, 0];
164
+ let offsetR = [0, 0, 0, 1];
165
+ const n = q.run();
166
+ for (let c = 0; c < n; c++) {
167
+ const k = q.chunk(c);
168
+ for (let i = 0; i < k.length; i++) {
169
+ if (k.entity(i) !== entity)
170
+ continue;
171
+ offsetT = Array.from(k.f32(0).subarray(i * 3, i * 3 + 3));
172
+ offsetR = Array.from(k.f32(1).subarray(i * 4, i * 4 + 4));
173
+ }
174
+ }
175
+ world.insert(entity, Bone, { animator: ragdoll.root, joint, mode: active ? BONE_DRIVE : BONE_FOLLOW, offsetT, offsetR });
176
+ }
177
+ ragdoll.active = active;
178
+ }
179
+ function readTransform(world, Transform, e) {
180
+ const q = world.query({ with: [Transform], columns: [[Transform, 't'], [Transform, 'r'], [Transform, 's']] });
181
+ const n = q.run();
182
+ for (let c = 0; c < n; c++) {
183
+ const k = q.chunk(c);
184
+ for (let i = 0; i < k.length; i++) {
185
+ if (k.entity(i) !== e)
186
+ continue;
187
+ return { t: Array.from(k.f64(0).subarray(i * 3, i * 3 + 3)), r: Array.from(k.f32(1).subarray(i * 4, i * 4 + 4)), s: k.f32(2)[i] || 1 };
188
+ }
189
+ }
190
+ throw new YaliError('MISSING_COMPONENT', `Entity ${e} has no Transform.`, 'Pass a model spawnAnimatedGltf returned.');
191
+ }
192
+ //# sourceMappingURL=ragdoll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ragdoll.js","sourceRoot":"","sources":["../src/ragdoll.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,31 @@
1
1
  {
2
2
  "name": "@yali-engine/animation",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.4.0",
4
+ "description": "Yali animation: skeletons, clips and skinned meshes from glTF, sampled and skinned by the core's anim variant (ADR-0083, ADR-0088).",
5
+ "license": "MIT OR Apache-2.0",
6
+ "type": "module",
7
+ "sideEffects": false,
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "publishConfig": {
15
+ "access": "public"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "devDependencies": {
21
+ "@yali-engine/physics": "0.4.0"
22
+ },
23
+ "dependencies": {
24
+ "@yali-engine/core": "0.4.0",
25
+ "@yali-engine/gltf": "0.4.0"
26
+ },
27
+ "scripts": {
28
+ "typecheck": "tsc -p tsconfig.json",
29
+ "test": "node --experimental-strip-types --no-warnings --test \"test/*.test.ts\""
30
+ }
6
31
  }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.