@aura3d/engine 4.3.0 → 4.3.2

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.
Files changed (91) hide show
  1. package/dist/aura3d-cli/cli-help.js +1 -1
  2. package/dist/aura3d-cli/cli.js +5 -0
  3. package/dist/aura3d-cli/cli.js.map +1 -1
  4. package/dist/aura3d-cli/index.d.ts +2 -0
  5. package/dist/aura3d-cli/index.d.ts.map +1 -1
  6. package/dist/aura3d-cli/index.js +1 -0
  7. package/dist/aura3d-cli/index.js.map +1 -1
  8. package/dist/aura3d-cli/skin/command.d.ts +5 -1
  9. package/dist/aura3d-cli/skin/command.d.ts.map +1 -1
  10. package/dist/aura3d-cli/skin/command.js +23 -1
  11. package/dist/aura3d-cli/skin/command.js.map +1 -1
  12. package/dist/aura3d-cli/skin/glbEdit.d.ts +1 -1
  13. package/dist/aura3d-cli/skin/glbEdit.d.ts.map +1 -1
  14. package/dist/aura3d-cli/skin/glbEdit.js +1 -1
  15. package/dist/aura3d-cli/skin/glbEdit.js.map +1 -1
  16. package/dist/aura3d-cli/skin/refitSkeleton.d.ts +23 -0
  17. package/dist/aura3d-cli/skin/refitSkeleton.d.ts.map +1 -0
  18. package/dist/aura3d-cli/skin/refitSkeleton.js +288 -0
  19. package/dist/aura3d-cli/skin/refitSkeleton.js.map +1 -0
  20. package/dist/aura3d-cli/skin/repair.d.ts +4 -0
  21. package/dist/aura3d-cli/skin/repair.d.ts.map +1 -1
  22. package/dist/aura3d-cli/skin/repair.js +42 -30
  23. package/dist/aura3d-cli/skin/repair.js.map +1 -1
  24. package/dist/create-aura3d/index.js +1 -1
  25. package/dist/engine/agent-api/camera/layers.d.ts.map +1 -1
  26. package/dist/engine/agent-api/camera/layers.js +6 -1
  27. package/dist/engine/agent-api/camera/layers.js.map +1 -1
  28. package/dist/engine/agent-api/compiler/lines.d.ts.map +1 -1
  29. package/dist/engine/agent-api/compiler/lines.js +8 -6
  30. package/dist/engine/agent-api/compiler/lines.js.map +1 -1
  31. package/dist/engine/agent-api/vfx/effects-api.d.ts.map +1 -1
  32. package/dist/engine/agent-api/vfx/effects-api.js +12 -3
  33. package/dist/engine/agent-api/vfx/effects-api.js.map +1 -1
  34. package/dist/engine/agent-api/vfx/gameEffects.d.ts.map +1 -1
  35. package/dist/engine/agent-api/vfx/gameEffects.js +20 -3
  36. package/dist/engine/agent-api/vfx/gameEffects.js.map +1 -1
  37. package/dist/engine/contracts/camera.d.ts +1 -0
  38. package/dist/engine/contracts/camera.d.ts.map +1 -1
  39. package/dist/engine/contracts/effects.d.ts +4 -2
  40. package/dist/engine/contracts/effects.d.ts.map +1 -1
  41. package/dist/engine/contracts/effects.js.map +1 -1
  42. package/dist/game/index.d.ts +2 -2
  43. package/dist/game/index.d.ts.map +1 -1
  44. package/dist/game/index.js +1 -1
  45. package/dist/game/index.js.map +1 -1
  46. package/dist/game/motion/facing.d.ts +30 -0
  47. package/dist/game/motion/facing.d.ts.map +1 -0
  48. package/dist/game/motion/facing.js +50 -0
  49. package/dist/game/motion/facing.js.map +1 -0
  50. package/dist/game/motion/handBounce.d.ts +50 -5
  51. package/dist/game/motion/handBounce.d.ts.map +1 -1
  52. package/dist/game/motion/handBounce.js +89 -41
  53. package/dist/game/motion/handBounce.js.map +1 -1
  54. package/dist/game/motion/index.d.ts +5 -1
  55. package/dist/game/motion/index.d.ts.map +1 -1
  56. package/dist/game/motion/index.js +3 -1
  57. package/dist/game/motion/index.js.map +1 -1
  58. package/dist/game/motion/twoHandGrip.d.ts +229 -0
  59. package/dist/game/motion/twoHandGrip.d.ts.map +1 -0
  60. package/dist/game/motion/twoHandGrip.js +413 -0
  61. package/dist/game/motion/twoHandGrip.js.map +1 -0
  62. package/dist/rendering/DepthPass.d.ts.map +1 -1
  63. package/dist/rendering/DepthPass.js +1 -2
  64. package/dist/rendering/DepthPass.js.map +1 -1
  65. package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts +2 -0
  66. package/dist/rendering/shadows/DirectionalCascadeFitter.d.ts.map +1 -1
  67. package/dist/rendering/shadows/DirectionalCascadeFitter.js +13 -4
  68. package/dist/rendering/shadows/DirectionalCascadeFitter.js.map +1 -1
  69. package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts +7 -0
  70. package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts.map +1 -1
  71. package/dist/rendering/shadows/Prd02DepthShaderLibrary.js +27 -1
  72. package/dist/rendering/shadows/Prd02DepthShaderLibrary.js.map +1 -1
  73. package/dist/rendering/shadows/ShadowSystem.d.ts.map +1 -1
  74. package/dist/rendering/shadows/ShadowSystem.js +3 -1
  75. package/dist/rendering/shadows/ShadowSystem.js.map +1 -1
  76. package/dist/rendering/shadows/shadowLegacy.d.ts +14 -0
  77. package/dist/rendering/shadows/shadowLegacy.d.ts.map +1 -0
  78. package/dist/rendering/shadows/shadowLegacy.js +15 -0
  79. package/dist/rendering/shadows/shadowLegacy.js.map +1 -0
  80. package/dist/rendering/webgl2/LegacyPost.d.ts +11 -0
  81. package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
  82. package/dist/rendering/webgl2/LegacyPost.js +41 -1
  83. package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
  84. package/package.json +26 -25
  85. package/templates/cinematic-scene/package.json +2 -2
  86. package/templates/mini-game/package.json +2 -2
  87. package/templates/product-viewer/package.json +2 -2
  88. package/templates/production-asset-inspector/package.json +1 -1
  89. package/templates/production-material-studio/package.json +1 -1
  90. package/templates/production-product-configurator/package.json +1 -1
  91. package/templates/production-product-viewer/package.json +1 -1
@@ -0,0 +1,413 @@
1
+ /**
2
+ * Two-handed grip: a held object (bat, club, racket, staff, sword, tool) with a bottom hand at its grip point and a top hand a fixed
3
+ * spread up its axis. Two-bone IK puts both drawn palms on the handle, a forearm twist rolls the object onto the wanted direction,
4
+ * and the elbow swings around its circle of solutions until the forearm sits at the grip's own angle to that direction.
5
+ *
6
+ * Pure maths, no engine calls and no wall clock: the game feeds a pose target per fixed step and applies the returned bone
7
+ * rotations (`poseBonesForEngine`) and object transform itself. All vectors are in the actor's local frame (+Y up). The "R" hand
8
+ * is the bottom hand (at the grip point), "L" the top hand; a left-handed stance uses `mirrorTwoHandGripRig`.
9
+ */
10
+ const clamp = (v, lo, hi) => Math.max(lo, Math.min(hi, v));
11
+ const lerp = (a, b, t) => a + (b - a) * t;
12
+ const smoothstep = (t) => (t <= 0 ? 0 : t >= 1 ? 1 : t * t * (3 - 2 * t));
13
+ export const GRIP_Q_ID = [0, 0, 0, 1];
14
+ export const gripQNorm = (q) => {
15
+ const l = Math.hypot(q[0], q[1], q[2], q[3]) || 1;
16
+ return [q[0] / l, q[1] / l, q[2] / l, q[3] / l];
17
+ };
18
+ export const gripQMul = (a, b) => {
19
+ const [ax, ay, az, aw] = a;
20
+ const [bx, by, bz, bw] = b;
21
+ return [aw * bx + ax * bw + ay * bz - az * by, aw * by - ax * bz + ay * bw + az * bx, aw * bz + ax * by - ay * bx + az * bw, aw * bw - ax * bx - ay * by - az * bz];
22
+ };
23
+ export const gripQConj = (q) => [-q[0], -q[1], -q[2], q[3]];
24
+ export const gripQAxis = (axis, angle) => {
25
+ const l = Math.hypot(axis[0], axis[1], axis[2]) || 1;
26
+ const h = angle / 2;
27
+ const s = Math.sin(h);
28
+ return gripQNorm([(axis[0] / l) * s, (axis[1] / l) * s, (axis[2] / l) * s, Math.cos(h)]);
29
+ };
30
+ export const gripQRot = (q, v) => {
31
+ const t = [2 * (q[1] * v[2] - q[2] * v[1]), 2 * (q[2] * v[0] - q[0] * v[2]), 2 * (q[0] * v[1] - q[1] * v[0])];
32
+ const c = [q[1] * t[2] - q[2] * t[1], q[2] * t[0] - q[0] * t[2], q[0] * t[1] - q[1] * t[0]];
33
+ return [v[0] + t[0] * q[3] + c[0], v[1] + t[1] * q[3] + c[1], v[2] + t[2] * q[3] + c[2]];
34
+ };
35
+ /** Robust rotation taking normalized vector a to normalized vector b. */
36
+ export const gripQFromTo = (a, b) => {
37
+ const d = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
38
+ if (d > 0.99999)
39
+ return GRIP_Q_ID;
40
+ if (d < -0.99999) {
41
+ const axis = [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
42
+ const alt = Math.hypot(axis[0], axis[2]) < 1e-6 ? [0, 0, 1] : [1, 0, 0];
43
+ const c = [a[1] * alt[2] - a[2] * alt[1], a[2] * alt[0] - a[0] * alt[2], a[0] * alt[1] - a[1] * alt[0]];
44
+ return gripQAxis(c, Math.PI);
45
+ }
46
+ return gripQNorm([a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0], 1 + d]);
47
+ };
48
+ /** Quaternion to XYZ-intrinsic Euler radians (the engine's `eulerXYZFromQuat` convention). */
49
+ export const gripQToEulerXYZ = (q) => {
50
+ const [x, y, z, w] = gripQNorm(q);
51
+ const m13 = 2 * (x * z + y * w);
52
+ const pitch = Math.asin(clamp(m13, -1, 1));
53
+ if (Math.abs(m13) >= 0.9999999) {
54
+ const m32 = 2 * (y * z + x * w);
55
+ const m22 = 2 * (x * x + w * w);
56
+ return [Math.atan2(m32, m22), pitch, 0];
57
+ }
58
+ const m11 = 1 - 2 * (y * y + z * z);
59
+ const m12 = 2 * (x * y - z * w);
60
+ const m23 = 2 * (y * z - x * w);
61
+ const m33 = 1 - 2 * (x * x + y * y);
62
+ return [Math.atan2(-m23, m33), pitch, Math.atan2(-m12, m11)];
63
+ };
64
+ /** Quaternion to Euler radians for the engine's default node rotation order "ZYX" (matrix Rz*Ry*Rx), which `setRotation(x, y, z)` on a route node uses. Applying XYZ angles to a ZYX node tilts the object the wrong way. */
65
+ export const gripQToEulerZYX = (q) => {
66
+ const [x, y, z, w] = gripQNorm(q);
67
+ const m11 = 1 - 2 * (y * y + z * z);
68
+ const m21 = 2 * (x * y + z * w);
69
+ const m31 = 2 * (x * z - y * w);
70
+ const m32 = 2 * (y * z + x * w);
71
+ const m33 = 1 - 2 * (x * x + y * y);
72
+ const m12 = 2 * (x * y - z * w);
73
+ const m22 = 1 - 2 * (x * x + z * z);
74
+ const ry = Math.asin(clamp(-m31, -1, 1));
75
+ if (Math.abs(m31) < 0.9999999)
76
+ return [Math.atan2(m32, m33), ry, Math.atan2(m21, m11)];
77
+ return [0, ry, Math.atan2(-m12, m22)];
78
+ };
79
+ export const gripUnit = (v) => {
80
+ const l = Math.hypot(v[0], v[1], v[2]) || 1;
81
+ return [v[0] / l, v[1] / l, v[2] / l];
82
+ };
83
+ /** Rotate about +Y (positive angle turns +X toward -Z, the chest-yaw convention of the solver). */
84
+ export const gripRotY = (angle, v) => {
85
+ const c = Math.cos(angle);
86
+ const s = Math.sin(angle);
87
+ return [v[0] * c + v[2] * s, v[1], -v[0] * s + v[2] * c];
88
+ };
89
+ /** Two-bone IK: elbow position for shoulder to target with an elbow-hint pole direction; targets past the arm's reach are clamped to it. */
90
+ export function solveGripTwoBone(shoulder, target, pole, l1, l2) {
91
+ const to = [target[0] - shoulder[0], target[1] - shoulder[1], target[2] - shoulder[2]];
92
+ const dRaw = Math.hypot(to[0], to[1], to[2]);
93
+ const d = clamp(dRaw, Math.abs(l1 - l2) + 1e-4, l1 + l2 - 1e-4);
94
+ const n = dRaw < 1e-6 ? [0, 0, 1] : [to[0] / dRaw, to[1] / dRaw, to[2] / dRaw];
95
+ const a = (l1 * l1 - l2 * l2 + d * d) / (2 * d);
96
+ const h = Math.sqrt(Math.max(0, l1 * l1 - a * a));
97
+ const pd = pole[0] * n[0] + pole[1] * n[1] + pole[2] * n[2];
98
+ let b = [pole[0] - n[0] * pd, pole[1] - n[1] * pd, pole[2] - n[2] * pd];
99
+ const bl = Math.hypot(b[0], b[1], b[2]);
100
+ b = bl < 1e-5 ? gripUnit([n[1], n[2], n[0]]) : [b[0] / bl, b[1] / bl, b[2] / bl];
101
+ return [shoulder[0] + n[0] * a + b[0] * h, shoulder[1] + n[1] * a + b[1] * h, shoulder[2] + n[2] * a + b[2] * h];
102
+ }
103
+ /** Elbow for shoulder to target with the hint pole rotated by `gamma` about the shoulder-to-target axis (the elbow's circle of solutions). */
104
+ export function orbitGripElbow(shoulder, target, pole, l1, l2, gamma) {
105
+ const e0 = solveGripTwoBone(shoulder, target, pole, l1, l2);
106
+ if (gamma === 0)
107
+ return e0;
108
+ const to = [target[0] - shoulder[0], target[1] - shoulder[1], target[2] - shoulder[2]];
109
+ const n = gripUnit(to);
110
+ const r = [e0[0] - shoulder[0], e0[1] - shoulder[1], e0[2] - shoulder[2]];
111
+ const rn = r[0] * n[0] + r[1] * n[1] + r[2] * n[2];
112
+ const along = [n[0] * rn, n[1] * rn, n[2] * rn];
113
+ const perp = [r[0] - along[0], r[1] - along[1], r[2] - along[2]];
114
+ const cr = [n[1] * perp[2] - n[2] * perp[1], n[2] * perp[0] - n[0] * perp[2], n[0] * perp[1] - n[1] * perp[0]];
115
+ const c = Math.cos(gamma);
116
+ const sn = Math.sin(gamma);
117
+ return [
118
+ shoulder[0] + along[0] + perp[0] * c + cr[0] * sn,
119
+ shoulder[1] + along[1] + perp[1] * c + cr[1] * sn,
120
+ shoulder[2] + along[2] + perp[2] * c + cr[2] * sn
121
+ ];
122
+ }
123
+ /** Twist (radians) about `axis` that rolls the rotated grip axis `a` onto `d`, compared as azimuths about `axis` and unwrapped against `prev`. */
124
+ export function gripAzimuthTwist(a, axis, d, prev) {
125
+ const aDot = a[0] * axis[0] + a[1] * axis[1] + a[2] * axis[2];
126
+ const dDot = d[0] * axis[0] + d[1] * axis[1] + d[2] * axis[2];
127
+ const aPerp = [a[0] - axis[0] * aDot, a[1] - axis[1] * aDot, a[2] - axis[2] * aDot];
128
+ const dPerp = [d[0] - axis[0] * dDot, d[1] - axis[1] * dDot, d[2] - axis[2] * dDot];
129
+ const cr = [aPerp[1] * dPerp[2] - aPerp[2] * dPerp[1], aPerp[2] * dPerp[0] - aPerp[0] * dPerp[2], aPerp[0] * dPerp[1] - aPerp[1] * dPerp[0]];
130
+ let tau = Math.atan2(cr[0] * axis[0] + cr[1] * axis[1] + cr[2] * axis[2], aPerp[0] * dPerp[0] + aPerp[1] * dPerp[1] + aPerp[2] * dPerp[2]);
131
+ while (tau - prev > Math.PI)
132
+ tau -= 2 * Math.PI;
133
+ while (tau - prev < -Math.PI)
134
+ tau += 2 * Math.PI;
135
+ return tau;
136
+ }
137
+ export const DEFAULT_GRIP_BONE_NAMES = {
138
+ hips: "Hips",
139
+ spine: "Spine",
140
+ chest: "Chest",
141
+ rightUpperArm: "RightUpperArm",
142
+ rightForearm: "RightForearm",
143
+ leftUpperArm: "LeftUpperArm",
144
+ leftForearm: "LeftForearm"
145
+ };
146
+ const flexOf = (sh, el, hand) => {
147
+ const ua = gripUnit([el[0] - sh[0], el[1] - sh[1], el[2] - sh[2]]);
148
+ const fa = gripUnit([hand[0] - el[0], hand[1] - el[1], hand[2] - el[2]]);
149
+ return Math.acos(clamp(ua[0] * fa[0] + ua[1] * fa[1] + ua[2] * fa[2], -1, 1));
150
+ };
151
+ /** Where the relaxed top hand hangs (actor frame), relative to its shoulder: down the arm, slightly forward. */
152
+ export function relaxedTopHand(rig, shoulderL) {
153
+ const reach = (rig.upperArm + rig.foreHand) * 0.85;
154
+ return [shoulderL[0] + 0.04, shoulderL[1] - reach, shoulderL[2] + 0.1];
155
+ }
156
+ /**
157
+ * Calibrate the object socket from a stance: the rotation that puts the object's axis along `stanceDir` while the bottom hand holds `stanceK`
158
+ * with the given elbow hint, and the forearm-to-axis cosine the elbow orbit then holds for every other pose.
159
+ */
160
+ export function calibrateGripSocket(body, stance) {
161
+ const sr = gripRotY(stance.phi, body.shoulderR);
162
+ const shoulder = [body.chestBind[0] + sr[0], body.chestBind[1] + sr[1], body.chestBind[2] + sr[2]];
163
+ const elbow = solveGripTwoBone(shoulder, stance.K, stance.pole, body.upperArm, body.foreHand);
164
+ const faDir = gripUnit([stance.K[0] - elbow[0], stance.K[1] - elbow[1], stance.K[2] - elbow[2]]);
165
+ const qFa = gripQFromTo(body.bindDirFA, faDir);
166
+ const socketRot = gripQMul(gripQConj(qFa), gripQFromTo([1, 0, 0], stance.D));
167
+ const coneCos = faDir[0] * stance.D[0] + faDir[1] * stance.D[1] + faDir[2] * stance.D[2];
168
+ return { socketRot, coneCos };
169
+ }
170
+ /**
171
+ * Solve one pose. The bottom hand IKs onto `K`; the elbow is swung round its circle of solutions until the forearm sits at the grip's
172
+ * fixed angle to the wanted object direction `D` (preferring the elbow nearest the previous frame's, `prev.gamma`); a forearm twist rolls
173
+ * the socketed object onto `D`; the top hand then IKs onto the point `gripSpread` up the object's real axis and rolls onto it the same way.
174
+ */
175
+ export function solveTwoHandGrip(rig, target, prev = {}, options = {}) {
176
+ const { K, D, phi, hip, pole: poleR } = target;
177
+ const prevTau = prev.tau ?? 0;
178
+ const prevTauL = prev.tauL ?? 0;
179
+ const prevGamma = prev.gamma ?? 0;
180
+ const names = rig.boneNames ?? DEFAULT_GRIP_BONE_NAMES;
181
+ const chest = [rig.chestBind[0] + hip[0], rig.chestBind[1] + hip[1], rig.chestBind[2] + hip[2]];
182
+ const sr = gripRotY(phi, rig.shoulderR);
183
+ const sl = gripRotY(phi, rig.shoulderL);
184
+ const shRt = [chest[0] + sr[0], chest[1] + sr[1], chest[2] + sr[2]];
185
+ const shLt = [chest[0] + sl[0], chest[1] + sl[1], chest[2] + sl[2]];
186
+ let gamma = prevGamma;
187
+ let bestCost = Infinity;
188
+ for (let i = 0; i < 96; i++) {
189
+ const g = -Math.PI + (2 * Math.PI * i) / 96;
190
+ const e = orbitGripElbow(shRt, K, poleR, rig.upperArm, rig.foreHand, g);
191
+ const f = gripUnit([K[0] - e[0], K[1] - e[1], K[2] - e[2]]);
192
+ const cosA = f[0] * D[0] + f[1] * D[1] + f[2] * D[2];
193
+ let dg = g - prevGamma;
194
+ while (dg > Math.PI)
195
+ dg -= 2 * Math.PI;
196
+ while (dg < -Math.PI)
197
+ dg += 2 * Math.PI;
198
+ const cost = (cosA - rig.coneCos) * (cosA - rig.coneCos) + 0.004 * dg * dg;
199
+ if (cost < bestCost) {
200
+ bestCost = cost;
201
+ gamma = g;
202
+ }
203
+ }
204
+ const eR = orbitGripElbow(shRt, K, poleR, rig.upperArm, rig.foreHand, gamma);
205
+ const faDir = gripUnit([K[0] - eR[0], K[1] - eR[1], K[2] - eR[2]]);
206
+ const qUaR = gripQFromTo(rig.bindDirUA, gripUnit([eR[0] - shRt[0], eR[1] - shRt[1], eR[2] - shRt[2]]));
207
+ const qFaZt = gripQFromTo(rig.bindDirFA, faDir);
208
+ const tau = gripAzimuthTwist(gripQRot(gripQMul(qFaZt, rig.socketRot), [1, 0, 0]), faDir, D, prevTau);
209
+ const qFa = gripQMul(gripQAxis(faDir, tau), qFaZt);
210
+ const objectRot = gripQMul(qFa, rig.socketRot);
211
+ const objectDir = gripQRot(objectRot, [1, 0, 0]);
212
+ const palmOff = gripQRot(qFa, rig.palmR);
213
+ const palm = [eR[0] + palmOff[0], eR[1] + palmOff[1], eR[2] + palmOff[2]];
214
+ // The top hand grips the object where it really is (palm plus the socketed object's own direction), not where D asked for it.
215
+ const gripped = [palm[0] + objectDir[0] * rig.gripSpread, palm[1] + objectDir[1] * rig.gripSpread, palm[2] + objectDir[2] * rig.gripSpread];
216
+ const release = clamp(options.release ?? 0, 0, 1);
217
+ let targetL = gripped;
218
+ if (release > 0) {
219
+ const rest = relaxedTopHand(rig, shLt);
220
+ const u = smoothstep(release);
221
+ targetL = [lerp(gripped[0], rest[0], u), lerp(gripped[1], rest[1], u), lerp(gripped[2], rest[2], u)];
222
+ }
223
+ const eL = solveGripTwoBone(shLt, targetL, rig.poleL, rig.upperArm, rig.foreHand);
224
+ const faDirL = gripUnit([targetL[0] - eL[0], targetL[1] - eL[1], targetL[2] - eL[2]]);
225
+ const qFaLZt = gripQFromTo(rig.bindDirFAL, faDirL);
226
+ // Top hand: the mirror of the bottom hand's grip axis, rolled onto the object the same way (free-hanging when released).
227
+ const gripR = gripQRot(rig.socketRot, [1, 0, 0]);
228
+ const gripL = [-gripR[0], gripR[1], gripR[2]];
229
+ const tauL = release >= 1 ? prevTauL : gripAzimuthTwist(gripQRot(qFaLZt, gripL), faDirL, objectDir, prevTauL);
230
+ const qFaL = gripQMul(gripQAxis(faDirL, tauL), qFaLZt);
231
+ const qChest = gripQAxis([0, 1, 0], phi);
232
+ const qUaL = gripQFromTo(rig.bindDirUAL, gripUnit([eL[0] - shLt[0], eL[1] - shLt[1], eL[2] - shLt[2]]));
233
+ const palmLOff = gripQRot(qFaL, rig.palmL);
234
+ const palmL = [eL[0] + palmLOff[0], eL[1] + palmLOff[1], eL[2] + palmLOff[2]];
235
+ const bones = {
236
+ [names.hips]: { position: [rig.hipsBind[0] + hip[0], rig.hipsBind[1] + hip[1], rig.hipsBind[2] + hip[2]] },
237
+ // Pin the spine so the chest forward kinematics the socket was calibrated against is exact.
238
+ [names.spine]: { rotation: GRIP_Q_ID },
239
+ [names.chest]: { rotation: qChest },
240
+ [names.rightUpperArm]: { rotation: gripQMul(gripQConj(qChest), qUaR) },
241
+ [names.rightForearm]: { rotation: gripQMul(gripQConj(qUaR), qFa) },
242
+ [names.leftUpperArm]: { rotation: gripQMul(gripQConj(qChest), qUaL) },
243
+ [names.leftForearm]: { rotation: gripQMul(gripQConj(qUaL), qFaL) }
244
+ };
245
+ return {
246
+ bones,
247
+ tau,
248
+ tauL,
249
+ gamma,
250
+ qFa,
251
+ objectRot,
252
+ objectDir,
253
+ palm,
254
+ palmL,
255
+ targetL,
256
+ elbow: eR,
257
+ elbowL: eL,
258
+ chest,
259
+ shoulder: shRt,
260
+ shoulderL: shLt,
261
+ sweetPoint: [palm[0] + objectDir[0] * rig.sweetSpot, palm[1] + objectDir[1] * rig.sweetSpot, palm[2] + objectDir[2] * rig.sweetSpot],
262
+ tipPoint: [palm[0] + objectDir[0] * rig.objectLength, palm[1] + objectDir[1] * rig.objectLength, palm[2] + objectDir[2] * rig.objectLength],
263
+ flexR: flexOf(shRt, eR, palm),
264
+ flexL: flexOf(shLt, eL, palmL)
265
+ };
266
+ }
267
+ /** The same grip for the mirror-image stance (left-handed batter, golfer, hitter): x is flipped and the two arms swap roles. */
268
+ export function mirrorTwoHandGripBodyRig(rig) {
269
+ const m = (v) => [-v[0], v[1], v[2]];
270
+ const n = rig.boneNames ?? DEFAULT_GRIP_BONE_NAMES;
271
+ return {
272
+ ...rig,
273
+ chestBind: m(rig.chestBind),
274
+ shoulderR: m(rig.shoulderL),
275
+ shoulderL: m(rig.shoulderR),
276
+ palmR: m(rig.palmL),
277
+ palmL: m(rig.palmR),
278
+ bindDirUA: m(rig.bindDirUAL),
279
+ bindDirFA: m(rig.bindDirFAL),
280
+ bindDirUAL: m(rig.bindDirUA),
281
+ bindDirFAL: m(rig.bindDirFA),
282
+ poleL: m(rig.poleL),
283
+ boneNames: {
284
+ ...n,
285
+ rightUpperArm: n.leftUpperArm,
286
+ rightForearm: n.leftForearm,
287
+ leftUpperArm: n.rightUpperArm,
288
+ leftForearm: n.rightForearm
289
+ }
290
+ };
291
+ }
292
+ /** The engine's animation pose reads `{x,y,z}` and `{x,y,z,w}` objects: tuple arrays would leave every bone untouched. */
293
+ export function twoHandGripBonesForEngine(bones) {
294
+ const out = {};
295
+ for (const [name, b] of Object.entries(bones)) {
296
+ out[name] = {
297
+ ...(b.position ? { position: { x: b.position[0], y: b.position[1], z: b.position[2] } } : {}),
298
+ ...(b.rotation ? { rotation: { x: b.rotation[0], y: b.rotation[1], z: b.rotation[2], w: b.rotation[3] } } : {})
299
+ };
300
+ }
301
+ return out;
302
+ }
303
+ export function createTwoHandGrip(rig) {
304
+ let tau = 0;
305
+ let tauL = 0;
306
+ let gamma = 0;
307
+ let release = 0;
308
+ let steps = 0;
309
+ let pose = null;
310
+ return {
311
+ rig,
312
+ step(target, rel = 0) {
313
+ release = clamp(rel, 0, 1);
314
+ pose = solveTwoHandGrip(rig, target, { tau, tauL, gamma }, { release });
315
+ tau = pose.tau;
316
+ tauL = pose.tauL;
317
+ gamma = pose.gamma;
318
+ steps += 1;
319
+ return pose;
320
+ },
321
+ state: () => ({ tau, tauL, gamma, release, steps, pose }),
322
+ reset() {
323
+ tau = 0;
324
+ tauL = 0;
325
+ gamma = 0;
326
+ release = 0;
327
+ steps = 0;
328
+ pose = null;
329
+ }
330
+ };
331
+ }
332
+ /** Where the drawn palm centres: the mean of the hand's skinned vertices (a flat xyz array or a list of points). Use it so grip is measured against what the screen shows. */
333
+ export function handCentroid(vertices) {
334
+ const flat = vertices.length > 0 && typeof vertices[0] === "number";
335
+ let x = 0;
336
+ let y = 0;
337
+ let z = 0;
338
+ let n = 0;
339
+ if (flat) {
340
+ const f = vertices;
341
+ for (let i = 0; i + 2 < f.length; i += 3) {
342
+ x += f[i];
343
+ y += f[i + 1];
344
+ z += f[i + 2];
345
+ n += 1;
346
+ }
347
+ }
348
+ else {
349
+ for (const p of vertices) {
350
+ x += p[0];
351
+ y += p[1];
352
+ z += p[2];
353
+ n += 1;
354
+ }
355
+ }
356
+ return n === 0 ? [0, 0, 0] : [x / n, y / n, z / n];
357
+ }
358
+ export const DEFAULT_GRIP_LIMITS = { knobToBottomPalm: 0.06, topPalmToAxis: 0.06, tailPhases: ["follow-through"], tail: 0.08 };
359
+ const p95 = (xs) => (xs.length === 0 ? Number.NaN : [...xs].sort((a, b) => a - b)[Math.min(xs.length - 1, Math.floor(xs.length * 0.95))]);
360
+ /** Per-phase grip numbers for a recorded plate appearance, round of golf, tennis point or sword exchange: palms against the object's axis. */
361
+ export function measureGrip(samples, limits = {}) {
362
+ const lim = { ...DEFAULT_GRIP_LIMITS, ...limits };
363
+ const groups = new Map();
364
+ for (const s of samples) {
365
+ const phase = s.phase ?? "all";
366
+ const g = groups.get(phase) ?? { k: [], a: [], along: [] };
367
+ groups.set(phase, g);
368
+ const ax = gripUnit([s.axis[0], s.axis[1], s.axis[2]]);
369
+ g.k.push(Math.hypot(s.bottomPalm[0] - s.knob[0], s.bottomPalm[1] - s.knob[1], s.bottomPalm[2] - s.knob[2]));
370
+ const rel = [s.topPalm[0] - s.knob[0], s.topPalm[1] - s.knob[1], s.topPalm[2] - s.knob[2]];
371
+ const along = rel[0] * ax[0] + rel[1] * ax[1] + rel[2] * ax[2];
372
+ const perp = [rel[0] - ax[0] * along, rel[1] - ax[1] * along, rel[2] - ax[2] * along];
373
+ g.a.push(Math.hypot(perp[0], perp[1], perp[2]));
374
+ g.along.push(along);
375
+ }
376
+ const phases = [];
377
+ const failures = [];
378
+ for (const [phase, g] of groups) {
379
+ const limit = lim.tailPhases.includes(phase) ? lim.tail : Math.max(lim.knobToBottomPalm, lim.topPalmToAxis);
380
+ const kLimit = lim.tailPhases.includes(phase) ? lim.tail : lim.knobToBottomPalm;
381
+ const aLimit = lim.tailPhases.includes(phase) ? lim.tail : lim.topPalmToAxis;
382
+ const kMax = Math.max(...g.k);
383
+ const aMax = Math.max(...g.a);
384
+ const ok = kMax <= kLimit && aMax <= aLimit;
385
+ if (kMax > kLimit)
386
+ failures.push(`${phase}: bottom palm ${kMax.toFixed(3)} m from the grip point > ${kLimit} m`);
387
+ if (aMax > aLimit)
388
+ failures.push(`${phase}: top palm ${aMax.toFixed(3)} m from the object axis > ${aLimit} m`);
389
+ phases.push({
390
+ phase,
391
+ samples: g.k.length,
392
+ knobToBottomPalmMax: kMax,
393
+ knobToBottomPalmP95: p95(g.k),
394
+ topPalmToAxisMax: aMax,
395
+ topPalmToAxisP95: p95(g.a),
396
+ topAlongMin: Math.min(...g.along),
397
+ topAlongMax: Math.max(...g.along),
398
+ limit,
399
+ ok
400
+ });
401
+ }
402
+ if (samples.length === 0)
403
+ failures.push("no grip samples");
404
+ return {
405
+ samples: samples.length,
406
+ phases,
407
+ knobToBottomPalmMax: phases.length === 0 ? Number.NaN : Math.max(...phases.map((p) => p.knobToBottomPalmMax)),
408
+ topPalmToAxisMax: phases.length === 0 ? Number.NaN : Math.max(...phases.map((p) => p.topPalmToAxisMax)),
409
+ ok: failures.length === 0,
410
+ failures
411
+ };
412
+ }
413
+ //# sourceMappingURL=twoHandGrip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twoHandGrip.js","sourceRoot":"","sources":["../../../../../packages/game/src/motion/twoHandGrip.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DepthPass.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/DepthPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtE,OAAO,EAA0D,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAIvF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IACjE;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,sBAAsB,CAAC;IACxE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/D,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChH;AAED,qBAAa,aAAc,SAAQ,QAAQ;;CAY1C;AAID,qBAAa,SAAU,SAAQ,cAAc;IAmB/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlBpC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAA8C;IAEnF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;gBAEnB,OAAO,EAAE,gBAAgB;IAKtD,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMzC,OAAO,CAAC,UAAU;IAmClB,gFAAgF;IAChF,OAAO,CAAC,iBAAiB;IAuFzB,OAAO,CAAC,SAAS;CAQlB"}
1
+ {"version":3,"file":"DepthPass.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/DepthPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtE,OAAO,EAA0D,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAIvF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAAC;IACjE;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,sBAAsB,CAAC;IACxE,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/D,sEAAsE;IACtE,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAChH;AAED,qBAAa,aAAc,SAAQ,QAAQ;;CAY1C;AAID,qBAAa,SAAU,SAAQ,cAAc;IAmB/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAlBpC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAA8C;IAEnF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuB;gBAEnB,OAAO,EAAE,gBAAgB;IAKtD,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMzC,OAAO,CAAC,UAAU;IAmClB,gFAAgF;IAChF,OAAO,CAAC,iBAAiB;IAsFzB,OAAO,CAAC,SAAS;CAQlB"}
@@ -92,7 +92,7 @@ export class DepthPass extends BaseRenderPass {
92
92
  const instanceTotal = instanceTransforms ? instanceTransforms.length / 16 : 1;
93
93
  // More instances than the uniform array holds ride a per-instance vertex-attribute buffer: one draw for the whole set
94
94
  // instead of ceil(n / 64) draws per cascade (a forest of 2,000 trees was 32 draws in every cascade).
95
- const attributeMode = Boolean(variant.instanced && instanceTransforms && instanceTotal > PRD02_DEPTH_MAX_INSTANCES);
95
+ const attributeMode = Boolean(variant.instanced && instanceTransforms && instanceTotal > PRD02_DEPTH_MAX_INSTANCES && variant.features["prd02.depthInstanceAttr"] !== undefined);
96
96
  const batchCount = variant.instanced && instanceTransforms && !attributeMode ? Math.ceil(instanceTotal / PRD02_DEPTH_MAX_INSTANCES) : 1;
97
97
  let instanceBuffer = null;
98
98
  let instanceAttributes = null;
@@ -111,7 +111,6 @@ export class DepthPass extends BaseRenderPass {
111
111
  else {
112
112
  const offset = batch * PRD02_DEPTH_MAX_INSTANCES;
113
113
  const count = Math.min(PRD02_DEPTH_MAX_INSTANCES, instanceTotal - offset);
114
- uniforms.set("u_instanceAttributeMode", 0);
115
114
  uniforms.set("u_instanceMatrices", instanceTransforms.subarray(offset * 16, (offset + count) * 16));
116
115
  uniforms.set("u_instanceCount", count);
117
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DepthPass.js","sourceRoot":"","sources":["../../../../packages/rendering/src/DepthPass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAiH,iBAAiB,EAA+C,MAAM,gBAAgB,CAAC;AAC/M,OAAO,EAAE,cAAc,EAA0B,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,yBAAyB,EAAsB,MAAM,qBAAqB,CAAC;AACjH,OAAO,EAAmB,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC3H,OAAO,EAAE,YAAY,EAAE,YAAY,EAAa,MAAM,eAAe,CAAC;AAkBtE,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,yBAAyB;YACpC,UAAU,EAAE;gBACV,qBAAqB,EAAE,cAAc,EAAE;aACxC;YACD,kBAAkB,EAAE,CAAC,YAAY,CAAC;YAClC,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,8BAA8B,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,CAAU,CAAC;AAErI,MAAM,OAAO,SAAU,SAAQ,cAAc;IAmBd;IAlB7B;;;;;;;;;;;;OAYG;IACK,MAAM,CAAU,aAAa,GAAG,IAAI,OAAO,EAA+B,CAAC;IAElE,aAAa,CAAgB;IAC7B,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IAEhD,YAA6B,OAAyB;QACpD,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QADH,YAAO,GAAP,OAAO,CAAkB;QAEpD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,2BAA2B,EAAE,CAAC;IAC9E,CAAC;IAED,OAAO,CAAC,OAA0B;QAChC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,MAAoB,EAAE,MAAkB;QACzD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,YAAY,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/E,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,YAAY,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACjG,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YACzD,MAAM,OAAO,GAAgB;gBAC3B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,eAAe;gBACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;gBAClC,YAAY;gBACZ,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM;gBACjD,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;gBACrF,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7F,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;gBACvC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzF,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;oBACrB,WAAW;oBACX,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI;oBAC5C,UAAU,EAAE,SAAS,CAAC,KAAK;oBAC3B,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChE,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC7F,CAAC;IAED,gFAAgF;IACxE,iBAAiB,CACvB,MAAoB,EACpB,MAAkB,EAClB,OAA+B,EAC/B,YAAyC,EACzC,WAAuC,EACvC,SAA6D,EAC7D,GAAS;QAET,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3G,MAAM,aAAa,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,sHAAsH;QACtH,qGAAqG;QACrG,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,IAAI,aAAa,GAAG,yBAAyB,CAAC,CAAC;QACpH,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxI,IAAI,cAAc,GAAwB,IAAI,CAAC;QAC/C,IAAI,kBAAkB,GAA8C,IAAI,CAAC;QACzE,IAAI,aAAa,IAAI,kBAAkB,EAAE,CAAC;YACxC,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,kBAAkB,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;YAClG,MAAM,MAAM,GAAG,cAAc,CAAC;YAC9B,kBAAkB,GAAG,8BAA8B,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,CAAU,EAAE,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjL,CAAC;QACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAuB,CAAC,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACjF,IAAI,OAAO,CAAC,SAAS,IAAI,kBAAkB,EAAE,CAAC;gBAC5C,IAAI,aAAa,EAAE,CAAC;oBAClB,QAAQ,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;oBAC3C,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACN,MAAM,MAAM,GAAG,KAAK,GAAG,yBAAyB,CAAC;oBACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,aAAa,GAAG,MAAM,CAAC,CAAC;oBAC1E,QAAQ,CAAC,GAAG,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;oBAC3C,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACpG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;gBAC5E,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnD,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;gBACrC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;YACxC,CAAC;YACD,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,eAAe,CAAC,CAAC;gBAChE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,CAAC,oBAAoB,CAAC,CAAC;gBACtE,IAAI,OAAO,MAAM,KAAK,QAAQ;oBAAE,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBACtE,oHAAoH;gBACpH,gHAAgH;gBAChH,QAAQ,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5I,CAAC;YACD,iEAAiE;YACjE,4DAA4D;YAC5D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,KAAK,KAAK,SAAS;oBAAE,OAAO,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACrG,CAAC;YACD,MAAM,OAAO,GAAgB;gBAC3B,KAAK,EAAE,GAAG,MAAM,CAAC,KAAK,IAAI,eAAe,IAAI,KAAK,EAAE;gBACpD,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;gBAClC,YAAY;gBACZ,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM;gBACjD,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;gBACrF,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7F,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB;oBACzC,CAAC,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,yBAAyB,EAAE,aAAa,GAAG,KAAK,GAAG,yBAAyB,CAAC,EAAE;oBAC3I,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,MAAM;gBACN,QAAQ;gBACR,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC;aACzE,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;oBACrB,WAAW;oBACX,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI;oBAC5C,UAAU,EAAE,SAAS,CAAC,KAAK;oBAC3B,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChE,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;QACD,cAAc,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAEO,SAAS,CAAC,MAAoB;QACpC,IAAI,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC/E,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;;AAGH;;;GAGG;AACH,SAAS,gBAAgB,CACvB,OAAoC,EACpC,WAAW,GAAG,KAAK;IAEnB,OAAO;QACL,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACvC,KAAK,EAAE,KAAK;QACZ,YAAY,EAAE,YAAY;QAC1B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgC,EAAE,KAA8B;IAC7F,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC;IACnF,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;QACrJ,MAAM,IAAI,iBAAiB,CAAC,4DAA4D,EAAE,0BAA0B,EAAE;YACpH,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,IAAI,YAAY,CAAC;QACtB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACV,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;KACX,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,KAAuC,EAAE,KAAc;IACrE,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,QAAQ,yCAAyC,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,MAAyB,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"DepthPass.js","sourceRoot":"","sources":["../../../../packages/rendering/src/DepthPass.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,8 @@ export interface DirectionalCascadeFitOptions {
42
42
  * the frustum-corner interpolation.
43
43
  */
44
44
  readonly maxDistance?: number;
45
+ /** Restore the 4.2.0 fit (casters widen the ortho, camera near/far as given). Default: `shadowFitLegacy()`. */
46
+ readonly legacy?: boolean;
45
47
  }
46
48
  type Vec3Tuple = readonly [number, number, number];
47
49
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"DirectionalCascadeFitter.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/shadows/DirectionalCascadeFitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DirectionalCascadeFitter.d.ts","sourceRoot":"","sources":["../../../../../packages/rendering/src/shadows/DirectionalCascadeFitter.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  * ortho centre snaps to the shadow-texel grid so the edge mask is stable
7
7
  * under sub-texel camera motion (the `prd02-17` shimmer gate).
8
8
  */
9
+ import { shadowFitLegacy } from "./shadowLegacy.js";
9
10
  import { instancedWorldBounds } from "../renderer/InstanceBounds.js";
10
11
  import { CascadedShadowMaps } from "../CascadedShadowMaps.js";
11
12
  import { skinnedItemLocalBounds } from "../renderer/SkinnedBounds.js";
@@ -265,7 +266,12 @@ export function isOversizeShadowCaster(item, shadowDistance) {
265
266
  const b = itemWorldBounds(item);
266
267
  if (!b)
267
268
  return false;
268
- const largest = Math.max(b.max[0] - b.min[0], b.max[1] - b.min[1], b.max[2] - b.min[2]);
269
+ const dx = b.max[0] - b.min[0], dy = b.max[1] - b.min[1], dz = b.max[2] - b.min[2];
270
+ const largest = Math.max(dx, dy, dz);
271
+ // A ground plane, court floor or flat terrain is a large receiver, never a shell: every real shell (sky dome, skybox, planet) is
272
+ // large on all three axes, a floor is thin on one.
273
+ if (Math.min(dx, dy, dz) < 0.2 * largest)
274
+ return false;
269
275
  return largest > Math.max(OVERSIZE_CASTER_FLOOR, OVERSIZE_CASTER_FACTOR * shadowDistance);
270
276
  }
271
277
  const dist3 = (a, b) => Math.hypot(a[0] - b[0], a[1] - b[1], a[2] - b[2]);
@@ -302,7 +308,10 @@ export function fitDirectionalCascades(options) {
302
308
  const invVp = invertMat4(vp);
303
309
  const nearCorners = [-1, 1].flatMap((x) => [-1, 1].map((y) => ndcToWorld(invVp, x, y, -1)));
304
310
  const farCorners = [-1, 1].flatMap((x) => [-1, 1].map((y) => ndcToWorld(invVp, x, y, 1)));
305
- const clip = resolveClipRange(nearCorners, farCorners, options.camera.near, options.camera.far);
311
+ const legacyFit = options.legacy ?? shadowFitLegacy();
312
+ const clip = legacyFit
313
+ ? { near: Math.max(1e-3, options.camera.near ?? 0.1), far: Math.max(Math.max(1e-3, options.camera.near ?? 0.1) + 1e-3, options.camera.far ?? 100) }
314
+ : resolveClipRange(nearCorners, farCorners, options.camera.near, options.camera.far);
306
315
  const near = clip.near;
307
316
  const far = clip.far;
308
317
  const shadowFar = options.maxDistance !== undefined && Number.isFinite(options.maxDistance) && options.maxDistance > near
@@ -330,7 +339,7 @@ export function fitDirectionalCascades(options) {
330
339
  // light-space footprint overlaps the slice can shadow it, so casters never widen x/y (a scene-spanning instanced set
331
340
  // or a distant mountain used to inflate every cascade to kilometres: 1 m texels and washed-out shadows); they only
332
341
  // extend the depth range toward the light, below.
333
- const allPts = frustumPts;
342
+ const allPts = legacyFit ? [...frustumPts, ...casterBounds.flatMap((b) => [b.min, b.max])] : frustumPts;
334
343
  let min = [Infinity, Infinity, Infinity];
335
344
  let max = [-Infinity, -Infinity, -Infinity];
336
345
  for (const p of allPts) {
@@ -365,7 +374,7 @@ export function fitDirectionalCascades(options) {
365
374
  let zHi = max[2];
366
375
  // Casters whose light-space footprint overlaps the slice extend the depth range toward the light (capped, so a huge
367
376
  // box cannot stretch the range and cost depth precision); casters behind the slice cannot shadow it.
368
- {
377
+ if (!legacyFit) {
369
378
  const reach = Math.max(8 * radius, 200);
370
379
  const rx0 = centerX - radius - padding, rx1 = centerX + radius + padding;
371
380
  const ry0 = centerY - radius - padding, ry1 = centerY + radius + padding;