@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
@@ -10,9 +10,12 @@ export function resolveHandBounceConfig(options = {}) {
10
10
  floorY,
11
11
  armReach: options.armReach ?? 0.55,
12
12
  ballGap: options.ballGap ?? 0.09,
13
- standing: { period: 0.46, palmTop: 1.02, palmPush: 0.62, ...options.standing },
14
- running: { period: 0.3, palmTop: 0.92, palmPush: 0.6, ...options.running },
13
+ standing: { period: 0.46, palmTop: 1.02, palmPush: 0.5, ...options.standing },
14
+ running: { period: 0.3, palmTop: 0.88, palmPush: 0.54, ...options.running },
15
15
  runSpeed: options.runSpeed ?? 0.45,
16
+ maxOffset: options.maxOffset ?? 0.25,
17
+ leadGain: options.leadGain ?? 0.02,
18
+ leadMax: options.leadMax ?? 0.1,
16
19
  phases: { rideEnd: 0.35, palmTurn: 0.6, floorAt: 0.66, catchFrom: 0.92, ...options.phases },
17
20
  floorBallY: floorY + ballRadius
18
21
  };
@@ -23,7 +26,7 @@ export function handBounceCycle(config, t, shoulderY, moving = false) {
23
26
  const { rideEnd, palmTurn, floorAt } = config.phases;
24
27
  const top = Math.min(config.floorY + gait.palmTop, shoulderY - 0.3);
25
28
  const push = Math.max(config.floorY + gait.palmPush, shoulderY - config.armReach);
26
- const low = push - 0.04;
29
+ const low = push - 0.06;
27
30
  let palmY;
28
31
  let effort;
29
32
  if (t < rideEnd) {
@@ -37,8 +40,11 @@ export function handBounceCycle(config, t, shoulderY, moving = false) {
37
40
  palmY = lerp(push, low, 1 - (1 - s) * (1 - s));
38
41
  }
39
42
  else {
40
- const s = (t - palmTurn) / (1 - palmTurn);
41
- effort = t < floorAt ? 1 : 1 - smoothstep((t - floorAt) / (1 - floorAt));
43
+ // The palm stays at its lowest until the ball has met the floor, then rises with it (it receives the ball on the way up).
44
+ const s = Math.max(0, (t - floorAt) / (1 - floorAt));
45
+ // The body stays sunk a little past the floor contact (the arm cannot follow the ball down without it), then comes up.
46
+ const e = Math.max(0, (t - floorAt - 0.08) / (1 - floorAt - 0.08));
47
+ effort = 1 - smoothstep(e);
42
48
  palmY = lerp(low, top, smoothstep(s));
43
49
  }
44
50
  return { palmY, ballY: handBounceBallY(config, t, palmY, push - config.ballGap, top - config.ballGap), effort };
@@ -78,16 +84,24 @@ export function handBounceContactWeight(config, phase) {
78
84
  return smoothstep((t - floorAt - 0.1) / (catchFrom - floorAt - 0.1));
79
85
  return 1;
80
86
  }
81
- /** Horizontal ball position: on the palm at contact, drifting ahead with the handler's stride only while the ball is in the air. */
87
+ /**
88
+ * Horizontal ball position: directly under the palm. While the ball is in the air a runner's ball lands a little ahead of the
89
+ * hand, only along the direction of travel and at most `leadMax`; a stationary handler gets no lead. The result is never more
90
+ * than `maxOffset` from the palm.
91
+ */
82
92
  export function handBounceBallXZ(config, palm, holder, phase) {
83
93
  const free = 1 - handBounceContactWeight(config, phase);
84
- const ox = palm[0] - holder.x;
85
- const oz = palm[2] - holder.z;
86
- const olen = Math.hypot(ox, oz) || 1;
87
- return {
88
- x: palm[0] + (ox / olen) * 0.02 * free + holder.vx * 0.04 * free,
89
- z: palm[2] + (oz / olen) * 0.02 * free + holder.vz * 0.04 * free
90
- };
94
+ const speed = Math.hypot(holder.vx, holder.vz);
95
+ let lx = 0;
96
+ let lz = 0;
97
+ if (speed > config.runSpeed) {
98
+ const lead = Math.min(speed * config.leadGain, config.leadMax) * free;
99
+ lx = (holder.vx / speed) * lead;
100
+ lz = (holder.vz / speed) * lead;
101
+ }
102
+ const len = Math.hypot(lx, lz);
103
+ const k = len > config.maxOffset ? config.maxOffset / len : 1;
104
+ return { x: palm[0] + lx * k, z: palm[2] + lz * k };
91
105
  }
92
106
  /** Clamp a palm target into the arm's reach sphere around the shoulder (a target the arm cannot reach makes the hand miss the ball). */
93
107
  export function clampPalmReach(shoulder, target, reach) {
@@ -106,7 +120,7 @@ export function handBounceOverlayAngles(effort, moving, leanScale = 1) {
106
120
  const lean = (1.28 + 0.77 * effort) * leanScale;
107
121
  return { spine: lean * 0.55, chest: lean * 0.45, head: -lean * 0.6 };
108
122
  }
109
- return { spine: (0.2 + 0.3 * effort) * leanScale, chest: (0.12 + 0.2 * effort) * leanScale, head: -0.22 };
123
+ return { spine: (0.3 + 0.55 * effort) * leanScale, chest: (0.2 + 0.4 * effort) * leanScale, head: -0.22 };
110
124
  }
111
125
  const SIDE_PREFIX = { left: "left", right: "right" };
112
126
  export function createHandBounce(options = {}) {
@@ -130,6 +144,19 @@ export function createHandBounce(options = {}) {
130
144
  let prevBall;
131
145
  let lastDt = 1 / 60;
132
146
  let floorContact = false;
147
+ const placeOnPalm = (palm, holder, hold) => {
148
+ if (hold) {
149
+ ball = [palm[0], palm[1], palm[2]];
150
+ }
151
+ else {
152
+ const at = handBounceBallXZ(config, palm, holder, phase);
153
+ if (phase < config.phases.rideEnd)
154
+ releaseY = palm[1] - config.ballGap;
155
+ ball = [at.x, handBounceBallY(config, phase, palm[1], releaseY, palm[1] - config.ballGap), at.z];
156
+ }
157
+ palmY = palm[1];
158
+ floorContact = ball[1] <= config.floorBallY + 0.02;
159
+ };
133
160
  const frame = () => ({ phase, moving, contact, effort, palmY, ball: [ball[0], ball[1], ball[2]], floorContact });
134
161
  return {
135
162
  config,
@@ -150,17 +177,7 @@ export function createHandBounce(options = {}) {
150
177
  prevBall = [ball[0], ball[1], ball[2]];
151
178
  lastDt = dt;
152
179
  if (input.palm) {
153
- const palm = input.palm;
154
- if (input.hold) {
155
- ball = [palm[0], palm[1], palm[2]];
156
- }
157
- else {
158
- const at = handBounceBallXZ(config, palm, input.holder, phase);
159
- if (phase < config.phases.rideEnd)
160
- releaseY = palm[1] - config.ballGap;
161
- ball = [at.x, handBounceBallY(config, phase, palm[1], releaseY, palm[1] - config.ballGap), at.z];
162
- }
163
- palmY = palm[1];
180
+ placeOnPalm(input.palm, input.holder, Boolean(input.hold));
164
181
  }
165
182
  else {
166
183
  palmY = cyc.palmY;
@@ -169,6 +186,10 @@ export function createHandBounce(options = {}) {
169
186
  floorContact = ball[1] <= config.floorBallY + 0.02;
170
187
  return frame();
171
188
  },
189
+ place(input) {
190
+ placeOnPalm(input.palm, input.holder, false);
191
+ return frame();
192
+ },
172
193
  state() {
173
194
  return { phase, moving, contact, effort, palmY, ball: [ball[0], ball[1], ball[2]], releaseY, floorContact, active };
174
195
  },
@@ -206,58 +227,85 @@ export function createHandBounce(options = {}) {
206
227
  }
207
228
  };
208
229
  }
209
- /** Limits the Aura Hoops dribble is held to. */
210
- export const DEFAULT_HAND_BOUNCE_LIMITS = { meet: 0.12, floorContact: 0.55, floorError: 0.02, maxDistance: 0.9 };
230
+ /** Limits for a stationary handler (the Aura Hoops dribble is held to these). The meet limit is ball radius + 0.05 m: `measureHandBall` replaces it with the configured radius. */
231
+ export const DEFAULT_HAND_BOUNCE_LIMITS = {
232
+ meet: 0.18, floorContact: 0.6, floorXZ: 0.12, floorPalmHeight: 0.5, floorError: 0.02, maxXZ: 0.25, maxDistance: 0.9
233
+ };
234
+ /** Limits for a running handler: the ball may land up to 0.2 m ahead of the hand, and the hand may stay up to 0.6 m above the floor. */
235
+ export const RUNNING_HAND_BOUNCE_LIMITS = {
236
+ meet: 0.18, floorContact: 0.65, floorXZ: 0.2, floorPalmHeight: 0.6, floorError: 0.02, maxXZ: 0.25, maxDistance: 0.9
237
+ };
211
238
  /** Probe: feed per-frame palm and ball world positions of a dribble; returns the distances the game must keep small. Call it from QA hooks and tools/game-checks. */
212
239
  export function measureHandBall(samples, options = {}) {
213
240
  const config = resolveHandBounceConfig(options);
214
- const limits = { ...DEFAULT_HAND_BOUNCE_LIMITS, ...options.limits };
241
+ const meetDefault = config.ballRadius + 0.05;
242
+ const floorWindow = options.floorWindow ?? 0.02;
243
+ const standingLimits = { ...DEFAULT_HAND_BOUNCE_LIMITS, meet: meetDefault, ...options.limits };
244
+ const runningLimits = { ...RUNNING_HAND_BOUNCE_LIMITS, meet: meetDefault, ...options.runningLimits };
215
245
  let meetMax = 0;
216
246
  let floorMax = Number.NaN;
247
+ let floorXZMax = Number.NaN;
217
248
  let floorPalm = Number.NaN;
218
249
  let maxDistance = 0;
250
+ let maxXZ = 0;
219
251
  let lowest = Infinity;
220
252
  let floorSamples = 0;
221
253
  let meetSamples = 0;
222
254
  let used = 0;
255
+ const failures = [];
256
+ const fail = (message) => { if (!failures.includes(message))
257
+ failures.push(message); };
258
+ const worst = (cur, v) => (Number.isNaN(cur) ? v : Math.max(cur, v));
223
259
  for (const s of samples) {
224
260
  if (s.dribbling === false)
225
261
  continue;
226
262
  used += 1;
263
+ const lim = s.moving ? runningLimits : standingLimits;
264
+ const mode = s.moving ? "running" : "standing";
227
265
  const d = Math.hypot(s.palm[0] - s.ball[0], s.palm[1] - s.ball[1], s.palm[2] - s.ball[2]);
266
+ const xz = Math.hypot(s.palm[0] - s.ball[0], s.palm[2] - s.ball[2]);
228
267
  maxDistance = Math.max(maxDistance, d);
268
+ maxXZ = Math.max(maxXZ, xz);
229
269
  lowest = Math.min(lowest, s.ball[1]);
270
+ if (xz > lim.maxXZ)
271
+ fail(`${mode}: ball strays ${xz.toFixed(3)} m horizontally from the palm > ${lim.maxXZ} m`);
272
+ if (d > lim.maxDistance)
273
+ fail(`${mode}: ball strays ${d.toFixed(3)} m from the hand > ${lim.maxDistance} m`);
230
274
  const t = ((s.phase % 1) + 1) % 1;
231
275
  if (t < 0.04 || t > config.phases.catchFrom + 0.01) {
232
276
  meetMax = Math.max(meetMax, d);
233
277
  meetSamples += 1;
278
+ if (d > lim.meet)
279
+ fail(`${mode}: palm to ball at the meet ${d.toFixed(3)} m > ${lim.meet.toFixed(2)} m`);
234
280
  }
235
- if (s.ball[1] <= config.floorBallY + 0.02) {
236
- floorMax = Number.isNaN(floorMax) ? d : Math.max(floorMax, d);
281
+ if (s.ball[1] <= config.floorBallY + floorWindow) {
237
282
  const h = s.palm[1] - config.floorY;
238
- floorPalm = Number.isNaN(floorPalm) ? h : Math.max(floorPalm, h);
283
+ floorMax = worst(floorMax, d);
284
+ floorXZMax = worst(floorXZMax, xz);
285
+ floorPalm = worst(floorPalm, h);
239
286
  floorSamples += 1;
287
+ if (d > lim.floorContact)
288
+ fail(`${mode}: palm to ball at the floor contact ${d.toFixed(3)} m > ${lim.floorContact} m`);
289
+ if (xz > lim.floorXZ)
290
+ fail(`${mode}: horizontal palm to ball at the floor contact ${xz.toFixed(3)} m > ${lim.floorXZ} m`);
291
+ if (h > lim.floorPalmHeight)
292
+ fail(`${mode}: palm ${h.toFixed(3)} m above the floor at the floor contact > ${lim.floorPalmHeight} m`);
240
293
  }
241
294
  }
242
295
  const floorError = used === 0 ? Number.NaN : Math.abs(lowest - config.floorBallY);
243
- const failures = [];
244
296
  if (used === 0)
245
- failures.push("no dribble samples");
246
- if (meetSamples > 0 && meetMax > limits.meet)
247
- failures.push(`palm to ball at the meet ${meetMax.toFixed(3)} m > ${limits.meet} m`);
248
- if (floorSamples > 0 && floorMax > limits.floorContact)
249
- failures.push(`palm to ball at the floor contact ${floorMax.toFixed(3)} m > ${limits.floorContact} m`);
250
- if (used > 0 && floorError > limits.floorError)
251
- failures.push(`ball centre misses the floor by ${floorError.toFixed(3)} m > ${limits.floorError} m`);
252
- if (maxDistance > limits.maxDistance)
253
- failures.push(`ball strays ${maxDistance.toFixed(3)} m from the hand > ${limits.maxDistance} m`);
297
+ fail("no dribble samples");
298
+ if (used > 0 && floorError > standingLimits.floorError)
299
+ fail(`ball centre misses the floor by ${floorError.toFixed(3)} m > ${standingLimits.floorError} m`);
254
300
  return {
255
301
  samples: used,
256
302
  meetMax,
257
303
  floorContactMax: floorMax,
304
+ floorContactXZMax: floorXZMax,
258
305
  floorContactPalmHeightMax: floorPalm,
259
306
  floorError,
260
307
  maxDistance,
308
+ maxXZ,
261
309
  floorSamples,
262
310
  meetSamples,
263
311
  ok: failures.length === 0,
@@ -1 +1 @@
1
- {"version":3,"file":"handBounce.js","sourceRoot":"","sources":["../../../../../packages/game/src/motion/handBounce.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handBounce.js","sourceRoot":"","sources":["../../../../../packages/game/src/motion/handBounce.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,10 @@ export { runMotionGate } from "./motionGate.js";
16
16
  export type { MotionGateOptions, MotionGateReport } from "./motionGate.js";
17
17
  export { clearCameraEye, createCameraClearance } from "./cameraClear.js";
18
18
  export type { CameraVec3, ClearEyeOptions, ClearEye, CameraClearanceOptions, CameraClearance } from "./cameraClear.js";
19
- export { createHandBounce, resolveHandBounceConfig, handBounceCycle, handBounceBallY, handBounceContactWeight, handBounceBallXZ, clampPalmReach, handBounceOverlayAngles, measureHandBall, DEFAULT_HAND_BOUNCE_LIMITS } from "./handBounce.js";
19
+ export { createHandBounce, resolveHandBounceConfig, handBounceCycle, handBounceBallY, handBounceContactWeight, handBounceBallXZ, clampPalmReach, handBounceOverlayAngles, measureHandBall, DEFAULT_HAND_BOUNCE_LIMITS, RUNNING_HAND_BOUNCE_LIMITS } from "./handBounce.js";
20
20
  export type { HandBounceVec3, HandBounceGait, HandBounceOptions, HandBouncePhases, HandBounceConfig, HandBounceCycle, HandBounceOverlayBone, HandBounceOverlay, HandBounceInput, HandBounceFrame, HandBounceState, HandBounceRelease, HandBounce, HandBounceSample, HandBounceReport, HandBounceLimits } from "./handBounce.js";
21
+ export { createTwoHandGrip, solveTwoHandGrip, calibrateGripSocket, mirrorTwoHandGripBodyRig, twoHandGripBonesForEngine, relaxedTopHand, measureGrip, handCentroid, DEFAULT_GRIP_LIMITS, DEFAULT_GRIP_BONE_NAMES, solveGripTwoBone, orbitGripElbow, gripAzimuthTwist, gripQNorm, gripQMul, gripQConj, gripQAxis, gripQRot, gripQFromTo, gripQToEulerXYZ, gripQToEulerZYX, gripUnit, gripRotY, GRIP_Q_ID } from "./twoHandGrip.js";
22
+ export type { GripVec3, GripQuat, TwoHandGripBoneNames, TwoHandGripBodyRig, TwoHandGripRig, TwoHandGripTarget, TwoHandGripPrev, TwoHandGripBone, TwoHandGripPose, SolveTwoHandGripOptions, TwoHandGripState, TwoHandGrip, GripSample, GripLimits, GripPhaseReport, GripReport } from "./twoHandGrip.js";
23
+ export { wrapAngle, yawToFace, visualHeading, facingError, faceTowards } from "./facing.js";
24
+ export type { ForwardAxis, FacingTarget, FaceTowardsOptions } from "./facing.js";
21
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/game/src/motion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtI,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5H,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrG,YAAY,EACV,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAC5G,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,oBAAoB,EACjF,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC7G,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/G,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClH,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAChH,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1E,YAAY,EAAE,WAAW,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACpH,OAAO,EACL,gBAAgB,EAAE,uBAAuB,EAAE,eAAe,EAAE,eAAe,EAAE,uBAAuB,EAAE,gBAAgB,EACtH,cAAc,EAAE,uBAAuB,EAAE,eAAe,EAAE,0BAA0B,EACrF,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAC7H,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,EACrH,gBAAgB,EAAE,gBAAgB,EACnC,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/game/src/motion/index.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,7 @@ export { checkDoubleFrame, detectSharedSkeleton, detectCoincidentModels, detectD
7
7
  export { createFixedStepPresenter, createRecordBlend } from "./presenter.js";
8
8
  export { runMotionGate } from "./motionGate.js";
9
9
  export { clearCameraEye, createCameraClearance } from "./cameraClear.js";
10
- export { createHandBounce, resolveHandBounceConfig, handBounceCycle, handBounceBallY, handBounceContactWeight, handBounceBallXZ, clampPalmReach, handBounceOverlayAngles, measureHandBall, DEFAULT_HAND_BOUNCE_LIMITS } from "./handBounce.js";
10
+ export { createHandBounce, resolveHandBounceConfig, handBounceCycle, handBounceBallY, handBounceContactWeight, handBounceBallXZ, clampPalmReach, handBounceOverlayAngles, measureHandBall, DEFAULT_HAND_BOUNCE_LIMITS, RUNNING_HAND_BOUNCE_LIMITS } from "./handBounce.js";
11
+ export { createTwoHandGrip, solveTwoHandGrip, calibrateGripSocket, mirrorTwoHandGripBodyRig, twoHandGripBonesForEngine, relaxedTopHand, measureGrip, handCentroid, DEFAULT_GRIP_LIMITS, DEFAULT_GRIP_BONE_NAMES, solveGripTwoBone, orbitGripElbow, gripAzimuthTwist, gripQNorm, gripQMul, gripQConj, gripQAxis, gripQRot, gripQFromTo, gripQToEulerXYZ, gripQToEulerZYX, gripUnit, gripRotY, GRIP_Q_ID } from "./twoHandGrip.js";
12
+ export { wrapAngle, yawToFace, visualHeading, facingError, faceTowards } from "./facing.js";
11
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/game/src/motion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtI,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAKrG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE7G,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElH,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,EACL,gBAAgB,EAAE,uBAAuB,EAAE,eAAe,EAAE,eAAe,EAAE,uBAAuB,EAAE,gBAAgB,EACtH,cAAc,EAAE,uBAAuB,EAAE,eAAe,EAAE,0BAA0B,EACrF,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/game/src/motion/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEtI,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAKrG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE7G,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElH,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,EACL,gBAAgB,EAAE,uBAAuB,EAAE,eAAe,EAAE,eAAe,EAAE,uBAAuB,EAAE,gBAAgB,EACtH,cAAc,EAAE,uBAAuB,EAAE,eAAe,EAAE,0BAA0B,EAAE,0BAA0B,EACjH,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,cAAc,EAC7H,WAAW,EAAE,YAAY,EAAE,mBAAmB,EAAE,uBAAuB,EACvE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EACpH,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAChE,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,229 @@
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
+ export type GripVec3 = [number, number, number];
11
+ export type GripQuat = [number, number, number, number];
12
+ export declare const GRIP_Q_ID: GripQuat;
13
+ export declare const gripQNorm: (q: GripQuat) => GripQuat;
14
+ export declare const gripQMul: (a: GripQuat, b: GripQuat) => GripQuat;
15
+ export declare const gripQConj: (q: GripQuat) => GripQuat;
16
+ export declare const gripQAxis: (axis: GripVec3, angle: number) => GripQuat;
17
+ export declare const gripQRot: (q: GripQuat, v: GripVec3) => GripVec3;
18
+ /** Robust rotation taking normalized vector a to normalized vector b. */
19
+ export declare const gripQFromTo: (a: GripVec3, b: GripVec3) => GripQuat;
20
+ /** Quaternion to XYZ-intrinsic Euler radians (the engine's `eulerXYZFromQuat` convention). */
21
+ export declare const gripQToEulerXYZ: (q: GripQuat) => GripVec3;
22
+ /** 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. */
23
+ export declare const gripQToEulerZYX: (q: GripQuat) => GripVec3;
24
+ export declare const gripUnit: (v: GripVec3) => GripVec3;
25
+ /** Rotate about +Y (positive angle turns +X toward -Z, the chest-yaw convention of the solver). */
26
+ export declare const gripRotY: (angle: number, v: GripVec3) => GripVec3;
27
+ /** 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. */
28
+ export declare function solveGripTwoBone(shoulder: GripVec3, target: GripVec3, pole: GripVec3, l1: number, l2: number): GripVec3;
29
+ /** Elbow for shoulder to target with the hint pole rotated by `gamma` about the shoulder-to-target axis (the elbow's circle of solutions). */
30
+ export declare function orbitGripElbow(shoulder: GripVec3, target: GripVec3, pole: GripVec3, l1: number, l2: number, gamma: number): GripVec3;
31
+ /** Twist (radians) about `axis` that rolls the rotated grip axis `a` onto `d`, compared as azimuths about `axis` and unwrapped against `prev`. */
32
+ export declare function gripAzimuthTwist(a: GripVec3, axis: GripVec3, d: GripVec3, prev: number): number;
33
+ export interface TwoHandGripBoneNames {
34
+ readonly hips: string;
35
+ readonly spine: string;
36
+ readonly chest: string;
37
+ readonly rightUpperArm: string;
38
+ readonly rightForearm: string;
39
+ readonly leftUpperArm: string;
40
+ readonly leftForearm: string;
41
+ }
42
+ export declare const DEFAULT_GRIP_BONE_NAMES: TwoHandGripBoneNames;
43
+ /** The body half of the rig: bind skeleton measurements in the actor's local frame (+X = the character's left, +Z forward). */
44
+ export interface TwoHandGripBodyRig {
45
+ /** Chest bone position at bind (hip shifts add onto it). */
46
+ readonly chestBind: GripVec3;
47
+ /** Shoulder offsets from the chest bone at bind. */
48
+ readonly shoulderR: GripVec3;
49
+ readonly shoulderL: GripVec3;
50
+ /** Grip point in FOREARM bone space: where the drawn hand's skinned vertices actually centre in pose (measure it with the CPU skin of the solved poses, not the bind-pose centroid). */
51
+ readonly palmR: GripVec3;
52
+ readonly palmL: GripVec3;
53
+ /** Bind bone directions (shoulder to elbow, elbow to palm), unit length; the left arm's are the mirror of the right's. */
54
+ readonly bindDirUA: GripVec3;
55
+ readonly bindDirFA: GripVec3;
56
+ readonly bindDirUAL: GripVec3;
57
+ readonly bindDirFAL: GripVec3;
58
+ /** Upper arm length and elbow-to-palm length. */
59
+ readonly upperArm: number;
60
+ readonly foreHand: number;
61
+ /** Hips bone translation at bind (hip shifts add onto it). */
62
+ readonly hipsBind: GripVec3;
63
+ /** Elbow hint for the top arm (hangs down and slightly back). */
64
+ readonly poleL: GripVec3;
65
+ readonly boneNames?: TwoHandGripBoneNames;
66
+ }
67
+ /** Everything the solver needs: the body, the object's calibrated socket and the grip geometry. */
68
+ export interface TwoHandGripRig extends TwoHandGripBodyRig {
69
+ /** Rotation of the object's local grip axis (+X from the grip point toward the far end) in forearm bone space at the calibration stance. */
70
+ readonly socketRot: GripQuat;
71
+ /** Cosine of the angle between the forearm and the object axis at the calibration stance; the elbow orbits until the forearm sits at it. */
72
+ readonly coneCos: number;
73
+ /** How far up the object's axis the top hand grips (metres in actor units). */
74
+ readonly gripSpread: number;
75
+ /** Object length from the grip point and the sweet-spot distance along it (for `sweetPoint` and `tipPoint`). */
76
+ readonly objectLength: number;
77
+ readonly sweetSpot: number;
78
+ }
79
+ /** One pose target: the grip point, the object's direction, chest yaw, hip shift and the elbow hint of the bottom arm. */
80
+ export interface TwoHandGripTarget {
81
+ readonly K: GripVec3;
82
+ readonly D: GripVec3;
83
+ readonly phi: number;
84
+ readonly hip: GripVec3;
85
+ readonly pole: GripVec3;
86
+ }
87
+ export interface TwoHandGripPrev {
88
+ readonly tau?: number;
89
+ readonly tauL?: number;
90
+ readonly gamma?: number;
91
+ }
92
+ export interface TwoHandGripBone {
93
+ position?: GripVec3;
94
+ rotation?: GripQuat;
95
+ }
96
+ export interface TwoHandGripPose {
97
+ /** Bone transforms keyed by the rig's bone names; feed them to `poseBonesForEngine`. */
98
+ readonly bones: Readonly<Record<string, TwoHandGripBone>>;
99
+ readonly tau: number;
100
+ readonly tauL: number;
101
+ readonly gamma: number;
102
+ readonly qFa: GripQuat;
103
+ /** Object orientation in the actor frame (forearm rotation times the socket): its +X is `objectDir`. */
104
+ readonly objectRot: GripQuat;
105
+ readonly objectDir: GripVec3;
106
+ /** The bottom palm (the object's grip point), the top palm and the top hand's target. */
107
+ readonly palm: GripVec3;
108
+ readonly palmL: GripVec3;
109
+ readonly targetL: GripVec3;
110
+ readonly elbow: GripVec3;
111
+ readonly elbowL: GripVec3;
112
+ readonly chest: GripVec3;
113
+ readonly shoulder: GripVec3;
114
+ readonly shoulderL: GripVec3;
115
+ readonly sweetPoint: GripVec3;
116
+ readonly tipPoint: GripVec3;
117
+ /** Elbow flexion in radians (0 = straight). */
118
+ readonly flexR: number;
119
+ readonly flexL: number;
120
+ }
121
+ export interface SolveTwoHandGripOptions {
122
+ /** 0 to 1: the top hand lets go and relaxes toward its rest position (follow-through of a one-handed finish). Default 0. */
123
+ readonly release?: number;
124
+ }
125
+ /** Where the relaxed top hand hangs (actor frame), relative to its shoulder: down the arm, slightly forward. */
126
+ export declare function relaxedTopHand(rig: TwoHandGripBodyRig, shoulderL: GripVec3): GripVec3;
127
+ /**
128
+ * Calibrate the object socket from a stance: the rotation that puts the object's axis along `stanceDir` while the bottom hand holds `stanceK`
129
+ * with the given elbow hint, and the forearm-to-axis cosine the elbow orbit then holds for every other pose.
130
+ */
131
+ export declare function calibrateGripSocket(body: TwoHandGripBodyRig, stance: {
132
+ readonly K: GripVec3;
133
+ readonly D: GripVec3;
134
+ readonly phi: number;
135
+ readonly pole: GripVec3;
136
+ }): {
137
+ socketRot: GripQuat;
138
+ coneCos: number;
139
+ };
140
+ /**
141
+ * 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
142
+ * fixed angle to the wanted object direction `D` (preferring the elbow nearest the previous frame's, `prev.gamma`); a forearm twist rolls
143
+ * 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.
144
+ */
145
+ export declare function solveTwoHandGrip(rig: TwoHandGripRig, target: TwoHandGripTarget, prev?: TwoHandGripPrev, options?: SolveTwoHandGripOptions): TwoHandGripPose;
146
+ /** The same grip for the mirror-image stance (left-handed batter, golfer, hitter): x is flipped and the two arms swap roles. */
147
+ export declare function mirrorTwoHandGripBodyRig(rig: TwoHandGripBodyRig): TwoHandGripBodyRig;
148
+ /** The engine's animation pose reads `{x,y,z}` and `{x,y,z,w}` objects: tuple arrays would leave every bone untouched. */
149
+ export declare function twoHandGripBonesForEngine(bones: Readonly<Record<string, {
150
+ position?: readonly number[];
151
+ rotation?: readonly number[];
152
+ }>>): Record<string, {
153
+ position?: {
154
+ x: number;
155
+ y: number;
156
+ z: number;
157
+ };
158
+ rotation?: {
159
+ x: number;
160
+ y: number;
161
+ z: number;
162
+ w: number;
163
+ };
164
+ }>;
165
+ export interface TwoHandGripState {
166
+ readonly tau: number;
167
+ readonly tauL: number;
168
+ readonly gamma: number;
169
+ readonly release: number;
170
+ readonly steps: number;
171
+ readonly pose: TwoHandGripPose | null;
172
+ }
173
+ export interface TwoHandGrip {
174
+ readonly rig: TwoHandGripRig;
175
+ /** Solve one fixed step, carrying the elbow and twist continuity between steps. `release` (0 to 1) lets the top hand go. */
176
+ step(target: TwoHandGripTarget, release?: number): TwoHandGripPose;
177
+ state(): TwoHandGripState;
178
+ /** Forget the continuity (a new swing from the stance). */
179
+ reset(): void;
180
+ }
181
+ export declare function createTwoHandGrip(rig: TwoHandGripRig): TwoHandGrip;
182
+ /** 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. */
183
+ export declare function handCentroid(vertices: ArrayLike<number> | ReadonlyArray<readonly [number, number, number]>): GripVec3;
184
+ export interface GripSample {
185
+ /** Label used to group samples ("stance", "load", "swing", "follow-through"). */
186
+ readonly phase?: string;
187
+ /** The object's grip point (the knob of a bat, the butt of a club) and its unit axis toward the far end; `length` is the handle length the top hand may use. */
188
+ readonly knob: readonly [number, number, number];
189
+ readonly axis: readonly [number, number, number];
190
+ readonly length?: number;
191
+ /** Palm positions: from the solver, or from `handCentroid` of the CPU-skinned hand vertices. */
192
+ readonly bottomPalm: readonly [number, number, number];
193
+ readonly topPalm: readonly [number, number, number];
194
+ }
195
+ export interface GripLimits {
196
+ /** Bottom palm to the grip point. Default 0.06 m. */
197
+ readonly knobToBottomPalm: number;
198
+ /** Top palm to the object axis. Default 0.06 m. */
199
+ readonly topPalmToAxis: number;
200
+ /** Phases allowed the looser tail limit (follow-through). */
201
+ readonly tailPhases: readonly string[];
202
+ /** The looser limit for those phases. Default 0.08 m. */
203
+ readonly tail: number;
204
+ }
205
+ export declare const DEFAULT_GRIP_LIMITS: GripLimits;
206
+ export interface GripPhaseReport {
207
+ readonly phase: string;
208
+ readonly samples: number;
209
+ readonly knobToBottomPalmMax: number;
210
+ readonly knobToBottomPalmP95: number;
211
+ readonly topPalmToAxisMax: number;
212
+ readonly topPalmToAxisP95: number;
213
+ /** Top palm distance along the axis from the knob (should sit about `gripSpread`, inside the handle). */
214
+ readonly topAlongMin: number;
215
+ readonly topAlongMax: number;
216
+ readonly limit: number;
217
+ readonly ok: boolean;
218
+ }
219
+ export interface GripReport {
220
+ readonly samples: number;
221
+ readonly phases: readonly GripPhaseReport[];
222
+ readonly knobToBottomPalmMax: number;
223
+ readonly topPalmToAxisMax: number;
224
+ readonly ok: boolean;
225
+ readonly failures: readonly string[];
226
+ }
227
+ /** Per-phase grip numbers for a recorded plate appearance, round of golf, tennis point or sword exchange: palms against the object's axis. */
228
+ export declare function measureGrip(samples: readonly GripSample[], limits?: Partial<GripLimits>): GripReport;
229
+ //# sourceMappingURL=twoHandGrip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"twoHandGrip.d.ts","sourceRoot":"","sources":["../../../../../packages/game/src/motion/twoHandGrip.ts"],"names":[],"mappings":"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"}