talking-head-studio 0.4.10 → 0.4.12

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 (178) hide show
  1. package/README.md +299 -337
  2. package/dist/TalkingHead.d.ts +44 -28
  3. package/dist/TalkingHead.js +21 -2
  4. package/dist/TalkingHead.web.d.ts +37 -4
  5. package/dist/TalkingHead.web.js +28 -8
  6. package/dist/TalkingHeadVisualization.d.ts +22 -0
  7. package/dist/TalkingHeadVisualization.js +30 -10
  8. package/dist/api/studioApi.d.ts +12 -1
  9. package/dist/api/studioApi.js +41 -28
  10. package/dist/appearance/apply.js +2 -3
  11. package/dist/appearance/matchers.js +1 -2
  12. package/dist/appearance/schema.js +1 -2
  13. package/dist/contract.d.ts +14 -0
  14. package/dist/contract.js +30 -0
  15. package/dist/core/avatar/avatarCapabilities.d.ts +60 -0
  16. package/dist/core/avatar/avatarCapabilities.js +100 -0
  17. package/dist/core/avatar/backend.d.ts +130 -0
  18. package/dist/core/avatar/backend.js +4 -0
  19. package/dist/core/avatar/backends/gaussian.d.ts +49 -0
  20. package/dist/core/avatar/backends/gaussian.js +293 -0
  21. package/dist/core/avatar/backends/index.d.ts +3 -0
  22. package/dist/core/avatar/backends/index.js +7 -0
  23. package/dist/core/avatar/backends/morphTarget.d.ts +39 -0
  24. package/dist/core/avatar/backends/morphTarget.js +179 -0
  25. package/dist/core/avatar/faceControls.d.ts +40 -0
  26. package/dist/core/avatar/faceControls.js +138 -0
  27. package/dist/core/avatar/motion.d.ts +1713 -0
  28. package/dist/core/avatar/motion.js +550 -0
  29. package/dist/core/avatar/motionRuntime.d.ts +46 -0
  30. package/dist/core/avatar/motionRuntime.js +84 -0
  31. package/dist/core/avatar/schema.d.ts +78 -0
  32. package/dist/core/avatar/schema.js +134 -0
  33. package/dist/core/avatar/visemes.d.ts +47 -1
  34. package/dist/core/avatar/visemes.js +114 -1
  35. package/dist/editor/AvatarCanvas.js +93 -3
  36. package/dist/editor/AvatarEditor.native.js +19 -9
  37. package/dist/editor/AvatarModel.js +2 -2
  38. package/dist/editor/FaceSqueezeEditor.d.ts +3 -1
  39. package/dist/editor/FaceSqueezeEditor.js +195 -121
  40. package/dist/editor/FaceSqueezeEditor.web.d.ts +3 -1
  41. package/dist/editor/FaceSqueezeEditor.web.js +32 -30
  42. package/dist/editor/RigidAccessory.js +18 -4
  43. package/dist/editor/SkinnedClothing.js +19 -9
  44. package/dist/editor/boneLockedDrag.d.ts +11 -0
  45. package/dist/editor/boneLockedDrag.js +68 -0
  46. package/dist/editor/boneSnap.js +22 -12
  47. package/dist/editor/boneSnap.web.d.ts +27 -0
  48. package/dist/editor/boneSnap.web.js +99 -0
  49. package/dist/editor/index.web.d.ts +10 -0
  50. package/dist/editor/index.web.js +26 -0
  51. package/dist/editor/sounds/haha.wav +0 -0
  52. package/dist/editor/sounds/owie.wav +0 -0
  53. package/dist/editor/sounds/stop.wav +0 -0
  54. package/dist/editor/studioTheme.d.ts +14 -14
  55. package/dist/editor/studioTheme.js +19 -16
  56. package/dist/editor/types.d.ts +1 -0
  57. package/dist/html/accessories.d.ts +7 -0
  58. package/dist/html/accessories.js +149 -0
  59. package/dist/html/motion.d.ts +1 -0
  60. package/dist/html/motion.js +189 -0
  61. package/dist/html/visemes.d.ts +7 -0
  62. package/dist/html/visemes.js +348 -0
  63. package/dist/html.d.ts +1 -1
  64. package/dist/html.js +56 -734
  65. package/dist/index.d.ts +19 -1
  66. package/dist/index.js +44 -5
  67. package/dist/index.web.d.ts +18 -1
  68. package/dist/index.web.js +36 -3
  69. package/dist/platform/api/types.d.ts +10 -0
  70. package/dist/platform/api/types.js +2 -0
  71. package/dist/platform/marketplace/types.d.ts +32 -0
  72. package/dist/platform/marketplace/types.js +2 -0
  73. package/dist/platform/sdk/unity.d.ts +27 -0
  74. package/dist/platform/sdk/unity.js +2 -0
  75. package/dist/platform/sdk/unreal.d.ts +23 -0
  76. package/dist/platform/sdk/unreal.js +2 -0
  77. package/dist/platform/sdk/web.d.ts +16 -0
  78. package/dist/platform/sdk/web.js +2 -0
  79. package/dist/sketchfab/api.js +5 -5
  80. package/dist/sketchfab/glbInspect.d.ts +22 -0
  81. package/dist/sketchfab/glbInspect.js +58 -0
  82. package/dist/sketchfab/index.d.ts +3 -0
  83. package/dist/sketchfab/index.js +8 -1
  84. package/dist/sketchfab/inspectRemote.d.ts +13 -0
  85. package/dist/sketchfab/inspectRemote.js +77 -0
  86. package/dist/sketchfab/types.d.ts +10 -0
  87. package/dist/sketchfab/useSketchfabSearch.js +1 -2
  88. package/dist/studio/AccessoryBrowserScreen.d.ts +6 -0
  89. package/dist/studio/AccessoryBrowserScreen.js +626 -0
  90. package/dist/studio/AccessoryPanel.d.ts +10 -0
  91. package/dist/studio/AccessoryPanel.js +396 -0
  92. package/dist/studio/AppearancePanel.d.ts +9 -0
  93. package/dist/studio/AppearancePanel.js +77 -0
  94. package/dist/studio/AvatarCreatorScreen.d.ts +5 -0
  95. package/dist/studio/AvatarCreatorScreen.js +806 -0
  96. package/dist/studio/AvatarEditorScreen.d.ts +14 -0
  97. package/dist/studio/AvatarEditorScreen.js +510 -0
  98. package/dist/studio/AvatarGrid.d.ts +23 -0
  99. package/dist/studio/AvatarGrid.js +257 -0
  100. package/dist/studio/ColorSwatch.d.ts +8 -0
  101. package/dist/studio/ColorSwatch.js +100 -0
  102. package/dist/studio/CreateVoiceProfileSheet.d.ts +8 -0
  103. package/dist/studio/CreateVoiceProfileSheet.js +242 -0
  104. package/dist/studio/DetailsPanel.d.ts +15 -0
  105. package/dist/studio/DetailsPanel.js +239 -0
  106. package/dist/studio/FilamentEditor.d.ts +2 -0
  107. package/dist/studio/FilamentEditor.js +6 -0
  108. package/dist/studio/PrecisionPanel.d.ts +2 -0
  109. package/dist/studio/PrecisionPanel.js +7 -0
  110. package/dist/studio/PublicGalleryScreen.d.ts +5 -0
  111. package/dist/studio/PublicGalleryScreen.js +358 -0
  112. package/dist/studio/SketchfabModelCard.d.ts +20 -0
  113. package/dist/studio/SketchfabModelCard.js +104 -0
  114. package/dist/studio/StudioBrowseHeader.d.ts +9 -0
  115. package/dist/studio/StudioBrowseHeader.js +28 -0
  116. package/dist/studio/StudioEmptyState.d.ts +8 -0
  117. package/dist/studio/StudioEmptyState.js +29 -0
  118. package/dist/studio/StudioFloatingAction.d.ts +13 -0
  119. package/dist/studio/StudioFloatingAction.js +42 -0
  120. package/dist/studio/StudioSectionHeader.d.ts +7 -0
  121. package/dist/studio/StudioSectionHeader.js +27 -0
  122. package/dist/studio/StudioSurfaceCard.d.ts +8 -0
  123. package/dist/studio/StudioSurfaceCard.js +20 -0
  124. package/dist/studio/VoicePanel.d.ts +15 -0
  125. package/dist/studio/VoicePanel.js +305 -0
  126. package/dist/studio/constants.d.ts +3 -0
  127. package/dist/studio/constants.js +6 -0
  128. package/dist/studio/index.d.ts +29 -0
  129. package/dist/studio/index.js +54 -0
  130. package/dist/studio/useSketchfabCapabilities.d.ts +31 -0
  131. package/dist/studio/useSketchfabCapabilities.js +82 -0
  132. package/dist/tts/useDirectVisemeStream.d.ts +2 -6
  133. package/dist/tts/useDirectVisemeStream.js +16 -12
  134. package/dist/tts/useMotionMarkers.d.ts +0 -1
  135. package/dist/tts/useMotionMarkers.js +1 -2
  136. package/dist/utils/avatarUtils.js +94 -8
  137. package/dist/utils/faceLandmarkerToShapeWeights.js +21 -14
  138. package/dist/voice/convertToWav.js +1 -2
  139. package/dist/voice/index.d.ts +3 -0
  140. package/dist/voice/index.js +6 -1
  141. package/dist/voice/useAudioPlayer.js +18 -6
  142. package/dist/voice/useAudioRecording.js +1 -2
  143. package/dist/voice/useFaceControls.d.ts +14 -0
  144. package/dist/voice/useFaceControls.js +81 -0
  145. package/dist/voice/useVoicePreview.d.ts +7 -0
  146. package/dist/voice/useVoicePreview.js +83 -0
  147. package/dist/wardrobe/index.d.ts +3 -0
  148. package/dist/wardrobe/index.js +8 -1
  149. package/dist/wardrobe/useAccessoryGestures.d.ts +20 -0
  150. package/dist/wardrobe/useAccessoryGestures.js +94 -0
  151. package/dist/wardrobe/useAvatarWardrobeHydration.js +9 -4
  152. package/dist/wardrobe/useStudioAvatar.d.ts +29 -0
  153. package/dist/wardrobe/useStudioAvatar.js +186 -0
  154. package/dist/wardrobe/wardrobeStore.d.ts +2 -0
  155. package/dist/wardrobe/wardrobeStore.js +12 -2
  156. package/dist/wgpu/R3FWebGpuCanvas.d.ts +15 -0
  157. package/dist/wgpu/R3FWebGpuCanvas.js +176 -0
  158. package/dist/wgpu/WgpuAvatar.d.ts +26 -2
  159. package/dist/wgpu/WgpuAvatar.js +313 -46
  160. package/dist/wgpu/accessoryDefaults.d.ts +12 -0
  161. package/dist/wgpu/accessoryDefaults.js +19 -0
  162. package/dist/wgpu/blobShim.d.ts +2 -0
  163. package/dist/wgpu/blobShim.js +191 -0
  164. package/dist/wgpu/index.d.ts +1 -0
  165. package/dist/wgpu/index.js +4 -1
  166. package/dist/wgpu/loadGLTFFromUri.d.ts +2 -0
  167. package/dist/wgpu/loadGLTFFromUri.js +75 -0
  168. package/dist/wgpu/morphTables.js +21 -10
  169. package/dist/wgpu/motionState.d.ts +20 -0
  170. package/dist/wgpu/motionState.js +31 -0
  171. package/dist/wgpu/patchThreeForRN.d.ts +28 -0
  172. package/dist/wgpu/patchThreeForRN.js +292 -0
  173. package/dist/wgpu/scenePlacement.d.ts +5 -0
  174. package/dist/wgpu/scenePlacement.js +50 -0
  175. package/dist/wgpu/useAuthedModelUri.js +22 -11
  176. package/dist/wgpu/useNativeGLTF.d.ts +7 -0
  177. package/dist/wgpu/useNativeGLTF.js +36 -0
  178. package/package.json +102 -32
@@ -0,0 +1,1713 @@
1
+ /**
2
+ * Shared, framework-free motion engine data + math.
3
+ *
4
+ * This is the single source of truth for procedural body motions (groove,
5
+ * wave, attack, defend, …). It is consumed two ways:
6
+ * 1. The WebView avatar serializes MOTION_DEFS into the generated HTML
7
+ * (see src/html/motion.ts) and runs the math inside the render loop.
8
+ * 2. The native WebGPU avatar (src/wgpu/WgpuAvatar.tsx) imports it directly
9
+ * and drives bones from inside an R3F useFrame callback.
10
+ *
11
+ * Keep this module dependency-free (no three.js, no React) so both runtimes
12
+ * can share it. The quaternion helpers below are intentionally minimal.
13
+ */
14
+ /** A single sinusoidal (or static, when freq === 0) rotation oscillator. */
15
+ export interface MotionOscillator {
16
+ /** Rotation axis x/y/z (need not be normalized for small angles). */
17
+ ax: number;
18
+ ay: number;
19
+ az: number;
20
+ /** Peak rotation in radians. */
21
+ amp: number;
22
+ /** Oscillation frequency in Hz. freq === 0 means a held static pose offset. */
23
+ freq: number;
24
+ /** Phase offset in radians. */
25
+ phase: number;
26
+ }
27
+ /** Logical bone key -> list of oscillators applied on top of its rest pose. */
28
+ export type MotionBoneMap = Partial<Record<MotionBoneKey, MotionOscillator[]>>;
29
+ export interface MotionDef {
30
+ /** Beats per minute — cosmetic metadata (drives beat UI in the full editor). */
31
+ bpm: number;
32
+ /** Smile morph weight held while this motion plays (0..1). */
33
+ smile: number;
34
+ /** Human-readable label. */
35
+ label: string;
36
+ /**
37
+ * When set, the motion auto-reverts to rest after this many milliseconds.
38
+ * Used by pose-like combat states (attack/defend) so a combat loop snaps to
39
+ * a pose then returns to guard without an explicit stop message. Omitted for
40
+ * looping motions (groove, idle, …) which run until stopped.
41
+ */
42
+ autoReturnMs?: number;
43
+ }
44
+ export type MotionBoneKey = 'hips' | 'spine' | 'spine2' | 'neck' | 'head' | 'leftShoulder' | 'rightShoulder' | 'leftArm' | 'rightArm' | 'leftForeArm' | 'rightForeArm';
45
+ export interface MotionDefWithBones extends MotionDef {
46
+ bones: MotionBoneMap;
47
+ }
48
+ /**
49
+ * Bone name map: logical key -> keywords to match in an armature.
50
+ * Matching normalizes by lowercasing and stripping punctuation, so RPM names
51
+ * like LeftShoulder, RightArm, LeftForeArm all match correctly.
52
+ */
53
+ export declare const MOTION_BONE_SEARCH: Record<MotionBoneKey, string[]>;
54
+ export declare const MOTION_DEFS: {
55
+ groove: {
56
+ bpm: number;
57
+ smile: number;
58
+ label: string;
59
+ bones: {
60
+ hips: {
61
+ ax: number;
62
+ ay: number;
63
+ az: number;
64
+ amp: number;
65
+ freq: number;
66
+ phase: number;
67
+ }[];
68
+ spine: {
69
+ ax: number;
70
+ ay: number;
71
+ az: number;
72
+ amp: number;
73
+ freq: number;
74
+ phase: number;
75
+ }[];
76
+ spine2: {
77
+ ax: number;
78
+ ay: number;
79
+ az: number;
80
+ amp: number;
81
+ freq: number;
82
+ phase: number;
83
+ }[];
84
+ neck: {
85
+ ax: number;
86
+ ay: number;
87
+ az: number;
88
+ amp: number;
89
+ freq: number;
90
+ phase: number;
91
+ }[];
92
+ head: {
93
+ ax: number;
94
+ ay: number;
95
+ az: number;
96
+ amp: number;
97
+ freq: number;
98
+ phase: number;
99
+ }[];
100
+ leftArm: {
101
+ ax: number;
102
+ ay: number;
103
+ az: number;
104
+ amp: number;
105
+ freq: number;
106
+ phase: number;
107
+ }[];
108
+ rightArm: {
109
+ ax: number;
110
+ ay: number;
111
+ az: number;
112
+ amp: number;
113
+ freq: number;
114
+ phase: number;
115
+ }[];
116
+ };
117
+ };
118
+ wave: {
119
+ bpm: number;
120
+ smile: number;
121
+ label: string;
122
+ bones: {
123
+ hips: {
124
+ ax: number;
125
+ ay: number;
126
+ az: number;
127
+ amp: number;
128
+ freq: number;
129
+ phase: number;
130
+ }[];
131
+ spine: {
132
+ ax: number;
133
+ ay: number;
134
+ az: number;
135
+ amp: number;
136
+ freq: number;
137
+ phase: number;
138
+ }[];
139
+ head: {
140
+ ax: number;
141
+ ay: number;
142
+ az: number;
143
+ amp: number;
144
+ freq: number;
145
+ phase: number;
146
+ }[];
147
+ rightShoulder: {
148
+ ax: number;
149
+ ay: number;
150
+ az: number;
151
+ amp: number;
152
+ freq: number;
153
+ phase: number;
154
+ }[];
155
+ rightArm: {
156
+ ax: number;
157
+ ay: number;
158
+ az: number;
159
+ amp: number;
160
+ freq: number;
161
+ phase: number;
162
+ }[];
163
+ rightForeArm: {
164
+ ax: number;
165
+ ay: number;
166
+ az: number;
167
+ amp: number;
168
+ freq: number;
169
+ phase: number;
170
+ }[];
171
+ };
172
+ };
173
+ nod: {
174
+ bpm: number;
175
+ smile: number;
176
+ label: string;
177
+ bones: {
178
+ hips: {
179
+ ax: number;
180
+ ay: number;
181
+ az: number;
182
+ amp: number;
183
+ freq: number;
184
+ phase: number;
185
+ }[];
186
+ spine: {
187
+ ax: number;
188
+ ay: number;
189
+ az: number;
190
+ amp: number;
191
+ freq: number;
192
+ phase: number;
193
+ }[];
194
+ neck: {
195
+ ax: number;
196
+ ay: number;
197
+ az: number;
198
+ amp: number;
199
+ freq: number;
200
+ phase: number;
201
+ }[];
202
+ head: {
203
+ ax: number;
204
+ ay: number;
205
+ az: number;
206
+ amp: number;
207
+ freq: number;
208
+ phase: number;
209
+ }[];
210
+ leftArm: {
211
+ ax: number;
212
+ ay: number;
213
+ az: number;
214
+ amp: number;
215
+ freq: number;
216
+ phase: number;
217
+ }[];
218
+ rightArm: {
219
+ ax: number;
220
+ ay: number;
221
+ az: number;
222
+ amp: number;
223
+ freq: number;
224
+ phase: number;
225
+ }[];
226
+ };
227
+ };
228
+ idle: {
229
+ bpm: number;
230
+ smile: number;
231
+ label: string;
232
+ bones: {
233
+ hips: {
234
+ ax: number;
235
+ ay: number;
236
+ az: number;
237
+ amp: number;
238
+ freq: number;
239
+ phase: number;
240
+ }[];
241
+ spine: {
242
+ ax: number;
243
+ ay: number;
244
+ az: number;
245
+ amp: number;
246
+ freq: number;
247
+ phase: number;
248
+ }[];
249
+ spine2: {
250
+ ax: number;
251
+ ay: number;
252
+ az: number;
253
+ amp: number;
254
+ freq: number;
255
+ phase: number;
256
+ }[];
257
+ head: {
258
+ ax: number;
259
+ ay: number;
260
+ az: number;
261
+ amp: number;
262
+ freq: number;
263
+ phase: number;
264
+ }[];
265
+ };
266
+ };
267
+ attack: {
268
+ bpm: number;
269
+ smile: number;
270
+ label: string;
271
+ autoReturnMs: number;
272
+ bones: {
273
+ hips: {
274
+ ax: number;
275
+ ay: number;
276
+ az: number;
277
+ amp: number;
278
+ freq: number;
279
+ phase: number;
280
+ }[];
281
+ spine: {
282
+ ax: number;
283
+ ay: number;
284
+ az: number;
285
+ amp: number;
286
+ freq: number;
287
+ phase: number;
288
+ }[];
289
+ spine2: {
290
+ ax: number;
291
+ ay: number;
292
+ az: number;
293
+ amp: number;
294
+ freq: number;
295
+ phase: number;
296
+ }[];
297
+ head: {
298
+ ax: number;
299
+ ay: number;
300
+ az: number;
301
+ amp: number;
302
+ freq: number;
303
+ phase: number;
304
+ }[];
305
+ rightShoulder: {
306
+ ax: number;
307
+ ay: number;
308
+ az: number;
309
+ amp: number;
310
+ freq: number;
311
+ phase: number;
312
+ }[];
313
+ rightArm: {
314
+ ax: number;
315
+ ay: number;
316
+ az: number;
317
+ amp: number;
318
+ freq: number;
319
+ phase: number;
320
+ }[];
321
+ rightForeArm: {
322
+ ax: number;
323
+ ay: number;
324
+ az: number;
325
+ amp: number;
326
+ freq: number;
327
+ phase: number;
328
+ }[];
329
+ leftArm: {
330
+ ax: number;
331
+ ay: number;
332
+ az: number;
333
+ amp: number;
334
+ freq: number;
335
+ phase: number;
336
+ }[];
337
+ };
338
+ };
339
+ defend: {
340
+ bpm: number;
341
+ smile: number;
342
+ label: string;
343
+ autoReturnMs: number;
344
+ bones: {
345
+ hips: {
346
+ ax: number;
347
+ ay: number;
348
+ az: number;
349
+ amp: number;
350
+ freq: number;
351
+ phase: number;
352
+ }[];
353
+ spine: {
354
+ ax: number;
355
+ ay: number;
356
+ az: number;
357
+ amp: number;
358
+ freq: number;
359
+ phase: number;
360
+ }[];
361
+ head: {
362
+ ax: number;
363
+ ay: number;
364
+ az: number;
365
+ amp: number;
366
+ freq: number;
367
+ phase: number;
368
+ }[];
369
+ leftShoulder: {
370
+ ax: number;
371
+ ay: number;
372
+ az: number;
373
+ amp: number;
374
+ freq: number;
375
+ phase: number;
376
+ }[];
377
+ rightShoulder: {
378
+ ax: number;
379
+ ay: number;
380
+ az: number;
381
+ amp: number;
382
+ freq: number;
383
+ phase: number;
384
+ }[];
385
+ leftArm: {
386
+ ax: number;
387
+ ay: number;
388
+ az: number;
389
+ amp: number;
390
+ freq: number;
391
+ phase: number;
392
+ }[];
393
+ rightArm: {
394
+ ax: number;
395
+ ay: number;
396
+ az: number;
397
+ amp: number;
398
+ freq: number;
399
+ phase: number;
400
+ }[];
401
+ leftForeArm: {
402
+ ax: number;
403
+ ay: number;
404
+ az: number;
405
+ amp: number;
406
+ freq: number;
407
+ phase: number;
408
+ }[];
409
+ rightForeArm: {
410
+ ax: number;
411
+ ay: number;
412
+ az: number;
413
+ amp: number;
414
+ freq: number;
415
+ phase: number;
416
+ }[];
417
+ };
418
+ };
419
+ cast: {
420
+ bpm: number;
421
+ smile: number;
422
+ label: string;
423
+ autoReturnMs: number;
424
+ bones: {
425
+ spine: {
426
+ ax: number;
427
+ ay: number;
428
+ az: number;
429
+ amp: number;
430
+ freq: number;
431
+ phase: number;
432
+ }[];
433
+ head: {
434
+ ax: number;
435
+ ay: number;
436
+ az: number;
437
+ amp: number;
438
+ freq: number;
439
+ phase: number;
440
+ }[];
441
+ leftShoulder: {
442
+ ax: number;
443
+ ay: number;
444
+ az: number;
445
+ amp: number;
446
+ freq: number;
447
+ phase: number;
448
+ }[];
449
+ rightShoulder: {
450
+ ax: number;
451
+ ay: number;
452
+ az: number;
453
+ amp: number;
454
+ freq: number;
455
+ phase: number;
456
+ }[];
457
+ leftArm: {
458
+ ax: number;
459
+ ay: number;
460
+ az: number;
461
+ amp: number;
462
+ freq: number;
463
+ phase: number;
464
+ }[];
465
+ rightArm: {
466
+ ax: number;
467
+ ay: number;
468
+ az: number;
469
+ amp: number;
470
+ freq: number;
471
+ phase: number;
472
+ }[];
473
+ };
474
+ };
475
+ hurt: {
476
+ bpm: number;
477
+ smile: number;
478
+ label: string;
479
+ autoReturnMs: number;
480
+ bones: {
481
+ hips: {
482
+ ax: number;
483
+ ay: number;
484
+ az: number;
485
+ amp: number;
486
+ freq: number;
487
+ phase: number;
488
+ }[];
489
+ spine: {
490
+ ax: number;
491
+ ay: number;
492
+ az: number;
493
+ amp: number;
494
+ freq: number;
495
+ phase: number;
496
+ }[];
497
+ head: {
498
+ ax: number;
499
+ ay: number;
500
+ az: number;
501
+ amp: number;
502
+ freq: number;
503
+ phase: number;
504
+ }[];
505
+ leftArm: {
506
+ ax: number;
507
+ ay: number;
508
+ az: number;
509
+ amp: number;
510
+ freq: number;
511
+ phase: number;
512
+ }[];
513
+ rightArm: {
514
+ ax: number;
515
+ ay: number;
516
+ az: number;
517
+ amp: number;
518
+ freq: number;
519
+ phase: number;
520
+ }[];
521
+ };
522
+ };
523
+ die: {
524
+ bpm: number;
525
+ smile: number;
526
+ label: string;
527
+ bones: {
528
+ hips: {
529
+ ax: number;
530
+ ay: number;
531
+ az: number;
532
+ amp: number;
533
+ freq: number;
534
+ phase: number;
535
+ }[];
536
+ spine: {
537
+ ax: number;
538
+ ay: number;
539
+ az: number;
540
+ amp: number;
541
+ freq: number;
542
+ phase: number;
543
+ }[];
544
+ spine2: {
545
+ ax: number;
546
+ ay: number;
547
+ az: number;
548
+ amp: number;
549
+ freq: number;
550
+ phase: number;
551
+ }[];
552
+ head: {
553
+ ax: number;
554
+ ay: number;
555
+ az: number;
556
+ amp: number;
557
+ freq: number;
558
+ phase: number;
559
+ }[];
560
+ leftArm: {
561
+ ax: number;
562
+ ay: number;
563
+ az: number;
564
+ amp: number;
565
+ freq: number;
566
+ phase: number;
567
+ }[];
568
+ rightArm: {
569
+ ax: number;
570
+ ay: number;
571
+ az: number;
572
+ amp: number;
573
+ freq: number;
574
+ phase: number;
575
+ }[];
576
+ };
577
+ };
578
+ windup: {
579
+ bpm: number;
580
+ smile: number;
581
+ label: string;
582
+ autoReturnMs: number;
583
+ bones: {
584
+ hips: {
585
+ ax: number;
586
+ ay: number;
587
+ az: number;
588
+ amp: number;
589
+ freq: number;
590
+ phase: number;
591
+ }[];
592
+ spine: {
593
+ ax: number;
594
+ ay: number;
595
+ az: number;
596
+ amp: number;
597
+ freq: number;
598
+ phase: number;
599
+ }[];
600
+ head: {
601
+ ax: number;
602
+ ay: number;
603
+ az: number;
604
+ amp: number;
605
+ freq: number;
606
+ phase: number;
607
+ }[];
608
+ rightShoulder: {
609
+ ax: number;
610
+ ay: number;
611
+ az: number;
612
+ amp: number;
613
+ freq: number;
614
+ phase: number;
615
+ }[];
616
+ rightArm: {
617
+ ax: number;
618
+ ay: number;
619
+ az: number;
620
+ amp: number;
621
+ freq: number;
622
+ phase: number;
623
+ }[];
624
+ rightForeArm: {
625
+ ax: number;
626
+ ay: number;
627
+ az: number;
628
+ amp: number;
629
+ freq: number;
630
+ phase: number;
631
+ }[];
632
+ };
633
+ };
634
+ victory: {
635
+ bpm: number;
636
+ smile: number;
637
+ label: string;
638
+ bones: {
639
+ hips: {
640
+ ax: number;
641
+ ay: number;
642
+ az: number;
643
+ amp: number;
644
+ freq: number;
645
+ phase: number;
646
+ }[];
647
+ spine: {
648
+ ax: number;
649
+ ay: number;
650
+ az: number;
651
+ amp: number;
652
+ freq: number;
653
+ phase: number;
654
+ }[];
655
+ head: {
656
+ ax: number;
657
+ ay: number;
658
+ az: number;
659
+ amp: number;
660
+ freq: number;
661
+ phase: number;
662
+ }[];
663
+ leftShoulder: {
664
+ ax: number;
665
+ ay: number;
666
+ az: number;
667
+ amp: number;
668
+ freq: number;
669
+ phase: number;
670
+ }[];
671
+ rightShoulder: {
672
+ ax: number;
673
+ ay: number;
674
+ az: number;
675
+ amp: number;
676
+ freq: number;
677
+ phase: number;
678
+ }[];
679
+ leftArm: {
680
+ ax: number;
681
+ ay: number;
682
+ az: number;
683
+ amp: number;
684
+ freq: number;
685
+ phase: number;
686
+ }[];
687
+ rightArm: {
688
+ ax: number;
689
+ ay: number;
690
+ az: number;
691
+ amp: number;
692
+ freq: number;
693
+ phase: number;
694
+ }[];
695
+ };
696
+ };
697
+ pulled: {
698
+ bpm: number;
699
+ smile: number;
700
+ label: string;
701
+ autoReturnMs: number;
702
+ bones: {
703
+ hips: {
704
+ ax: number;
705
+ ay: number;
706
+ az: number;
707
+ amp: number;
708
+ freq: number;
709
+ phase: number;
710
+ }[];
711
+ spine: {
712
+ ax: number;
713
+ ay: number;
714
+ az: number;
715
+ amp: number;
716
+ freq: number;
717
+ phase: number;
718
+ }[];
719
+ head: {
720
+ ax: number;
721
+ ay: number;
722
+ az: number;
723
+ amp: number;
724
+ freq: number;
725
+ phase: number;
726
+ }[];
727
+ leftArm: {
728
+ ax: number;
729
+ ay: number;
730
+ az: number;
731
+ amp: number;
732
+ freq: number;
733
+ phase: number;
734
+ }[];
735
+ rightArm: {
736
+ ax: number;
737
+ ay: number;
738
+ az: number;
739
+ amp: number;
740
+ freq: number;
741
+ phase: number;
742
+ }[];
743
+ };
744
+ };
745
+ eaten: {
746
+ bpm: number;
747
+ smile: number;
748
+ label: string;
749
+ bones: {
750
+ hips: {
751
+ ax: number;
752
+ ay: number;
753
+ az: number;
754
+ amp: number;
755
+ freq: number;
756
+ phase: number;
757
+ }[];
758
+ spine: {
759
+ ax: number;
760
+ ay: number;
761
+ az: number;
762
+ amp: number;
763
+ freq: number;
764
+ phase: number;
765
+ }[];
766
+ spine2: {
767
+ ax: number;
768
+ ay: number;
769
+ az: number;
770
+ amp: number;
771
+ freq: number;
772
+ phase: number;
773
+ }[];
774
+ head: {
775
+ ax: number;
776
+ ay: number;
777
+ az: number;
778
+ amp: number;
779
+ freq: number;
780
+ phase: number;
781
+ }[];
782
+ leftArm: {
783
+ ax: number;
784
+ ay: number;
785
+ az: number;
786
+ amp: number;
787
+ freq: number;
788
+ phase: number;
789
+ }[];
790
+ rightArm: {
791
+ ax: number;
792
+ ay: number;
793
+ az: number;
794
+ amp: number;
795
+ freq: number;
796
+ phase: number;
797
+ }[];
798
+ };
799
+ };
800
+ handup: {
801
+ bpm: number;
802
+ smile: number;
803
+ label: string;
804
+ autoReturnMs: number;
805
+ bones: {
806
+ spine: {
807
+ ax: number;
808
+ ay: number;
809
+ az: number;
810
+ amp: number;
811
+ freq: number;
812
+ phase: number;
813
+ }[];
814
+ head: {
815
+ ax: number;
816
+ ay: number;
817
+ az: number;
818
+ amp: number;
819
+ freq: number;
820
+ phase: number;
821
+ }[];
822
+ rightShoulder: {
823
+ ax: number;
824
+ ay: number;
825
+ az: number;
826
+ amp: number;
827
+ freq: number;
828
+ phase: number;
829
+ }[];
830
+ rightArm: {
831
+ ax: number;
832
+ ay: number;
833
+ az: number;
834
+ amp: number;
835
+ freq: number;
836
+ phase: number;
837
+ }[];
838
+ rightForeArm: {
839
+ ax: number;
840
+ ay: number;
841
+ az: number;
842
+ amp: number;
843
+ freq: number;
844
+ phase: number;
845
+ }[];
846
+ };
847
+ };
848
+ index: {
849
+ bpm: number;
850
+ smile: number;
851
+ label: string;
852
+ autoReturnMs: number;
853
+ bones: {
854
+ spine: {
855
+ ax: number;
856
+ ay: number;
857
+ az: number;
858
+ amp: number;
859
+ freq: number;
860
+ phase: number;
861
+ }[];
862
+ head: {
863
+ ax: number;
864
+ ay: number;
865
+ az: number;
866
+ amp: number;
867
+ freq: number;
868
+ phase: number;
869
+ }[];
870
+ rightShoulder: {
871
+ ax: number;
872
+ ay: number;
873
+ az: number;
874
+ amp: number;
875
+ freq: number;
876
+ phase: number;
877
+ }[];
878
+ rightArm: {
879
+ ax: number;
880
+ ay: number;
881
+ az: number;
882
+ amp: number;
883
+ freq: number;
884
+ phase: number;
885
+ }[];
886
+ rightForeArm: {
887
+ ax: number;
888
+ ay: number;
889
+ az: number;
890
+ amp: number;
891
+ freq: number;
892
+ phase: number;
893
+ }[];
894
+ };
895
+ };
896
+ ok: {
897
+ bpm: number;
898
+ smile: number;
899
+ label: string;
900
+ autoReturnMs: number;
901
+ bones: {
902
+ head: {
903
+ ax: number;
904
+ ay: number;
905
+ az: number;
906
+ amp: number;
907
+ freq: number;
908
+ phase: number;
909
+ }[];
910
+ rightShoulder: {
911
+ ax: number;
912
+ ay: number;
913
+ az: number;
914
+ amp: number;
915
+ freq: number;
916
+ phase: number;
917
+ }[];
918
+ rightArm: {
919
+ ax: number;
920
+ ay: number;
921
+ az: number;
922
+ amp: number;
923
+ freq: number;
924
+ phase: number;
925
+ }[];
926
+ rightForeArm: {
927
+ ax: number;
928
+ ay: number;
929
+ az: number;
930
+ amp: number;
931
+ freq: number;
932
+ phase: number;
933
+ }[];
934
+ };
935
+ };
936
+ thumbup: {
937
+ bpm: number;
938
+ smile: number;
939
+ label: string;
940
+ autoReturnMs: number;
941
+ bones: {
942
+ spine: {
943
+ ax: number;
944
+ ay: number;
945
+ az: number;
946
+ amp: number;
947
+ freq: number;
948
+ phase: number;
949
+ }[];
950
+ rightShoulder: {
951
+ ax: number;
952
+ ay: number;
953
+ az: number;
954
+ amp: number;
955
+ freq: number;
956
+ phase: number;
957
+ }[];
958
+ rightArm: {
959
+ ax: number;
960
+ ay: number;
961
+ az: number;
962
+ amp: number;
963
+ freq: number;
964
+ phase: number;
965
+ }[];
966
+ rightForeArm: {
967
+ ax: number;
968
+ ay: number;
969
+ az: number;
970
+ amp: number;
971
+ freq: number;
972
+ phase: number;
973
+ }[];
974
+ };
975
+ };
976
+ thumbdown: {
977
+ bpm: number;
978
+ smile: number;
979
+ label: string;
980
+ autoReturnMs: number;
981
+ bones: {
982
+ spine: {
983
+ ax: number;
984
+ ay: number;
985
+ az: number;
986
+ amp: number;
987
+ freq: number;
988
+ phase: number;
989
+ }[];
990
+ head: {
991
+ ax: number;
992
+ ay: number;
993
+ az: number;
994
+ amp: number;
995
+ freq: number;
996
+ phase: number;
997
+ }[];
998
+ rightShoulder: {
999
+ ax: number;
1000
+ ay: number;
1001
+ az: number;
1002
+ amp: number;
1003
+ freq: number;
1004
+ phase: number;
1005
+ }[];
1006
+ rightArm: {
1007
+ ax: number;
1008
+ ay: number;
1009
+ az: number;
1010
+ amp: number;
1011
+ freq: number;
1012
+ phase: number;
1013
+ }[];
1014
+ rightForeArm: {
1015
+ ax: number;
1016
+ ay: number;
1017
+ az: number;
1018
+ amp: number;
1019
+ freq: number;
1020
+ phase: number;
1021
+ }[];
1022
+ };
1023
+ };
1024
+ side: {
1025
+ bpm: number;
1026
+ smile: number;
1027
+ label: string;
1028
+ bones: {
1029
+ hips: {
1030
+ ax: number;
1031
+ ay: number;
1032
+ az: number;
1033
+ amp: number;
1034
+ freq: number;
1035
+ phase: number;
1036
+ }[];
1037
+ spine: {
1038
+ ax: number;
1039
+ ay: number;
1040
+ az: number;
1041
+ amp: number;
1042
+ freq: number;
1043
+ phase: number;
1044
+ }[];
1045
+ spine2: {
1046
+ ax: number;
1047
+ ay: number;
1048
+ az: number;
1049
+ amp: number;
1050
+ freq: number;
1051
+ phase: number;
1052
+ }[];
1053
+ head: {
1054
+ ax: number;
1055
+ ay: number;
1056
+ az: number;
1057
+ amp: number;
1058
+ freq: number;
1059
+ phase: number;
1060
+ }[];
1061
+ leftArm: {
1062
+ ax: number;
1063
+ ay: number;
1064
+ az: number;
1065
+ amp: number;
1066
+ freq: number;
1067
+ phase: number;
1068
+ }[];
1069
+ rightArm: {
1070
+ ax: number;
1071
+ ay: number;
1072
+ az: number;
1073
+ amp: number;
1074
+ freq: number;
1075
+ phase: number;
1076
+ }[];
1077
+ };
1078
+ };
1079
+ shrug: {
1080
+ bpm: number;
1081
+ smile: number;
1082
+ label: string;
1083
+ autoReturnMs: number;
1084
+ bones: {
1085
+ spine: {
1086
+ ax: number;
1087
+ ay: number;
1088
+ az: number;
1089
+ amp: number;
1090
+ freq: number;
1091
+ phase: number;
1092
+ }[];
1093
+ head: {
1094
+ ax: number;
1095
+ ay: number;
1096
+ az: number;
1097
+ amp: number;
1098
+ freq: number;
1099
+ phase: number;
1100
+ }[];
1101
+ leftShoulder: {
1102
+ ax: number;
1103
+ ay: number;
1104
+ az: number;
1105
+ amp: number;
1106
+ freq: number;
1107
+ phase: number;
1108
+ }[];
1109
+ rightShoulder: {
1110
+ ax: number;
1111
+ ay: number;
1112
+ az: number;
1113
+ amp: number;
1114
+ freq: number;
1115
+ phase: number;
1116
+ }[];
1117
+ leftArm: {
1118
+ ax: number;
1119
+ ay: number;
1120
+ az: number;
1121
+ amp: number;
1122
+ freq: number;
1123
+ phase: number;
1124
+ }[];
1125
+ rightArm: {
1126
+ ax: number;
1127
+ ay: number;
1128
+ az: number;
1129
+ amp: number;
1130
+ freq: number;
1131
+ phase: number;
1132
+ }[];
1133
+ leftForeArm: {
1134
+ ax: number;
1135
+ ay: number;
1136
+ az: number;
1137
+ amp: number;
1138
+ freq: number;
1139
+ phase: number;
1140
+ }[];
1141
+ rightForeArm: {
1142
+ ax: number;
1143
+ ay: number;
1144
+ az: number;
1145
+ amp: number;
1146
+ freq: number;
1147
+ phase: number;
1148
+ }[];
1149
+ };
1150
+ };
1151
+ namaste: {
1152
+ bpm: number;
1153
+ smile: number;
1154
+ label: string;
1155
+ autoReturnMs: number;
1156
+ bones: {
1157
+ spine: {
1158
+ ax: number;
1159
+ ay: number;
1160
+ az: number;
1161
+ amp: number;
1162
+ freq: number;
1163
+ phase: number;
1164
+ }[];
1165
+ head: {
1166
+ ax: number;
1167
+ ay: number;
1168
+ az: number;
1169
+ amp: number;
1170
+ freq: number;
1171
+ phase: number;
1172
+ }[];
1173
+ leftShoulder: {
1174
+ ax: number;
1175
+ ay: number;
1176
+ az: number;
1177
+ amp: number;
1178
+ freq: number;
1179
+ phase: number;
1180
+ }[];
1181
+ rightShoulder: {
1182
+ ax: number;
1183
+ ay: number;
1184
+ az: number;
1185
+ amp: number;
1186
+ freq: number;
1187
+ phase: number;
1188
+ }[];
1189
+ leftArm: {
1190
+ ax: number;
1191
+ ay: number;
1192
+ az: number;
1193
+ amp: number;
1194
+ freq: number;
1195
+ phase: number;
1196
+ }[];
1197
+ rightArm: {
1198
+ ax: number;
1199
+ ay: number;
1200
+ az: number;
1201
+ amp: number;
1202
+ freq: number;
1203
+ phase: number;
1204
+ }[];
1205
+ leftForeArm: {
1206
+ ax: number;
1207
+ ay: number;
1208
+ az: number;
1209
+ amp: number;
1210
+ freq: number;
1211
+ phase: number;
1212
+ }[];
1213
+ rightForeArm: {
1214
+ ax: number;
1215
+ ay: number;
1216
+ az: number;
1217
+ amp: number;
1218
+ freq: number;
1219
+ phase: number;
1220
+ }[];
1221
+ };
1222
+ };
1223
+ hip: {
1224
+ bpm: number;
1225
+ smile: number;
1226
+ label: string;
1227
+ bones: {
1228
+ hips: {
1229
+ ax: number;
1230
+ ay: number;
1231
+ az: number;
1232
+ amp: number;
1233
+ freq: number;
1234
+ phase: number;
1235
+ }[];
1236
+ spine: {
1237
+ ax: number;
1238
+ ay: number;
1239
+ az: number;
1240
+ amp: number;
1241
+ freq: number;
1242
+ phase: number;
1243
+ }[];
1244
+ leftArm: {
1245
+ ax: number;
1246
+ ay: number;
1247
+ az: number;
1248
+ amp: number;
1249
+ freq: number;
1250
+ phase: number;
1251
+ }[];
1252
+ rightArm: {
1253
+ ax: number;
1254
+ ay: number;
1255
+ az: number;
1256
+ amp: number;
1257
+ freq: number;
1258
+ phase: number;
1259
+ }[];
1260
+ };
1261
+ };
1262
+ turn: {
1263
+ bpm: number;
1264
+ smile: number;
1265
+ label: string;
1266
+ bones: {
1267
+ hips: {
1268
+ ax: number;
1269
+ ay: number;
1270
+ az: number;
1271
+ amp: number;
1272
+ freq: number;
1273
+ phase: number;
1274
+ }[];
1275
+ spine: {
1276
+ ax: number;
1277
+ ay: number;
1278
+ az: number;
1279
+ amp: number;
1280
+ freq: number;
1281
+ phase: number;
1282
+ }[];
1283
+ spine2: {
1284
+ ax: number;
1285
+ ay: number;
1286
+ az: number;
1287
+ amp: number;
1288
+ freq: number;
1289
+ phase: number;
1290
+ }[];
1291
+ head: {
1292
+ ax: number;
1293
+ ay: number;
1294
+ az: number;
1295
+ amp: number;
1296
+ freq: number;
1297
+ phase: number;
1298
+ }[];
1299
+ };
1300
+ };
1301
+ bend: {
1302
+ bpm: number;
1303
+ smile: number;
1304
+ label: string;
1305
+ bones: {
1306
+ hips: {
1307
+ ax: number;
1308
+ ay: number;
1309
+ az: number;
1310
+ amp: number;
1311
+ freq: number;
1312
+ phase: number;
1313
+ }[];
1314
+ spine: {
1315
+ ax: number;
1316
+ ay: number;
1317
+ az: number;
1318
+ amp: number;
1319
+ freq: number;
1320
+ phase: number;
1321
+ }[];
1322
+ spine2: {
1323
+ ax: number;
1324
+ ay: number;
1325
+ az: number;
1326
+ amp: number;
1327
+ freq: number;
1328
+ phase: number;
1329
+ }[];
1330
+ neck: {
1331
+ ax: number;
1332
+ ay: number;
1333
+ az: number;
1334
+ amp: number;
1335
+ freq: number;
1336
+ phase: number;
1337
+ }[];
1338
+ head: {
1339
+ ax: number;
1340
+ ay: number;
1341
+ az: number;
1342
+ amp: number;
1343
+ freq: number;
1344
+ phase: number;
1345
+ }[];
1346
+ };
1347
+ };
1348
+ back: {
1349
+ bpm: number;
1350
+ smile: number;
1351
+ label: string;
1352
+ bones: {
1353
+ hips: {
1354
+ ax: number;
1355
+ ay: number;
1356
+ az: number;
1357
+ amp: number;
1358
+ freq: number;
1359
+ phase: number;
1360
+ }[];
1361
+ spine: {
1362
+ ax: number;
1363
+ ay: number;
1364
+ az: number;
1365
+ amp: number;
1366
+ freq: number;
1367
+ phase: number;
1368
+ }[];
1369
+ spine2: {
1370
+ ax: number;
1371
+ ay: number;
1372
+ az: number;
1373
+ amp: number;
1374
+ freq: number;
1375
+ phase: number;
1376
+ }[];
1377
+ head: {
1378
+ ax: number;
1379
+ ay: number;
1380
+ az: number;
1381
+ amp: number;
1382
+ freq: number;
1383
+ phase: number;
1384
+ }[];
1385
+ };
1386
+ };
1387
+ straight: {
1388
+ bpm: number;
1389
+ smile: number;
1390
+ label: string;
1391
+ bones: {
1392
+ hips: {
1393
+ ax: number;
1394
+ ay: number;
1395
+ az: number;
1396
+ amp: number;
1397
+ freq: number;
1398
+ phase: number;
1399
+ }[];
1400
+ spine: {
1401
+ ax: number;
1402
+ ay: number;
1403
+ az: number;
1404
+ amp: number;
1405
+ freq: number;
1406
+ phase: number;
1407
+ }[];
1408
+ head: {
1409
+ ax: number;
1410
+ ay: number;
1411
+ az: number;
1412
+ amp: number;
1413
+ freq: number;
1414
+ phase: number;
1415
+ }[];
1416
+ };
1417
+ };
1418
+ wide: {
1419
+ bpm: number;
1420
+ smile: number;
1421
+ label: string;
1422
+ bones: {
1423
+ hips: {
1424
+ ax: number;
1425
+ ay: number;
1426
+ az: number;
1427
+ amp: number;
1428
+ freq: number;
1429
+ phase: number;
1430
+ }[];
1431
+ leftShoulder: {
1432
+ ax: number;
1433
+ ay: number;
1434
+ az: number;
1435
+ amp: number;
1436
+ freq: number;
1437
+ phase: number;
1438
+ }[];
1439
+ rightShoulder: {
1440
+ ax: number;
1441
+ ay: number;
1442
+ az: number;
1443
+ amp: number;
1444
+ freq: number;
1445
+ phase: number;
1446
+ }[];
1447
+ leftArm: {
1448
+ ax: number;
1449
+ ay: number;
1450
+ az: number;
1451
+ amp: number;
1452
+ freq: number;
1453
+ phase: number;
1454
+ }[];
1455
+ rightArm: {
1456
+ ax: number;
1457
+ ay: number;
1458
+ az: number;
1459
+ amp: number;
1460
+ freq: number;
1461
+ phase: number;
1462
+ }[];
1463
+ };
1464
+ };
1465
+ oneknee: {
1466
+ bpm: number;
1467
+ smile: number;
1468
+ label: string;
1469
+ bones: {
1470
+ hips: {
1471
+ ax: number;
1472
+ ay: number;
1473
+ az: number;
1474
+ amp: number;
1475
+ freq: number;
1476
+ phase: number;
1477
+ }[];
1478
+ spine: {
1479
+ ax: number;
1480
+ ay: number;
1481
+ az: number;
1482
+ amp: number;
1483
+ freq: number;
1484
+ phase: number;
1485
+ }[];
1486
+ head: {
1487
+ ax: number;
1488
+ ay: number;
1489
+ az: number;
1490
+ amp: number;
1491
+ freq: number;
1492
+ phase: number;
1493
+ }[];
1494
+ leftArm: {
1495
+ ax: number;
1496
+ ay: number;
1497
+ az: number;
1498
+ amp: number;
1499
+ freq: number;
1500
+ phase: number;
1501
+ }[];
1502
+ rightArm: {
1503
+ ax: number;
1504
+ ay: number;
1505
+ az: number;
1506
+ amp: number;
1507
+ freq: number;
1508
+ phase: number;
1509
+ }[];
1510
+ };
1511
+ };
1512
+ kneel: {
1513
+ bpm: number;
1514
+ smile: number;
1515
+ label: string;
1516
+ bones: {
1517
+ hips: {
1518
+ ax: number;
1519
+ ay: number;
1520
+ az: number;
1521
+ amp: number;
1522
+ freq: number;
1523
+ phase: number;
1524
+ }[];
1525
+ spine: {
1526
+ ax: number;
1527
+ ay: number;
1528
+ az: number;
1529
+ amp: number;
1530
+ freq: number;
1531
+ phase: number;
1532
+ }[];
1533
+ spine2: {
1534
+ ax: number;
1535
+ ay: number;
1536
+ az: number;
1537
+ amp: number;
1538
+ freq: number;
1539
+ phase: number;
1540
+ }[];
1541
+ head: {
1542
+ ax: number;
1543
+ ay: number;
1544
+ az: number;
1545
+ amp: number;
1546
+ freq: number;
1547
+ phase: number;
1548
+ }[];
1549
+ };
1550
+ };
1551
+ sitting: {
1552
+ bpm: number;
1553
+ smile: number;
1554
+ label: string;
1555
+ bones: {
1556
+ hips: {
1557
+ ax: number;
1558
+ ay: number;
1559
+ az: number;
1560
+ amp: number;
1561
+ freq: number;
1562
+ phase: number;
1563
+ }[];
1564
+ spine: {
1565
+ ax: number;
1566
+ ay: number;
1567
+ az: number;
1568
+ amp: number;
1569
+ freq: number;
1570
+ phase: number;
1571
+ }[];
1572
+ spine2: {
1573
+ ax: number;
1574
+ ay: number;
1575
+ az: number;
1576
+ amp: number;
1577
+ freq: number;
1578
+ phase: number;
1579
+ }[];
1580
+ leftArm: {
1581
+ ax: number;
1582
+ ay: number;
1583
+ az: number;
1584
+ amp: number;
1585
+ freq: number;
1586
+ phase: number;
1587
+ }[];
1588
+ rightArm: {
1589
+ ax: number;
1590
+ ay: number;
1591
+ az: number;
1592
+ amp: number;
1593
+ freq: number;
1594
+ phase: number;
1595
+ }[];
1596
+ };
1597
+ };
1598
+ celebrate: {
1599
+ bpm: number;
1600
+ smile: number;
1601
+ label: string;
1602
+ bones: {
1603
+ hips: {
1604
+ ax: number;
1605
+ ay: number;
1606
+ az: number;
1607
+ amp: number;
1608
+ freq: number;
1609
+ phase: number;
1610
+ }[];
1611
+ spine: {
1612
+ ax: number;
1613
+ ay: number;
1614
+ az: number;
1615
+ amp: number;
1616
+ freq: number;
1617
+ phase: number;
1618
+ }[];
1619
+ spine2: {
1620
+ ax: number;
1621
+ ay: number;
1622
+ az: number;
1623
+ amp: number;
1624
+ freq: number;
1625
+ phase: number;
1626
+ }[];
1627
+ neck: {
1628
+ ax: number;
1629
+ ay: number;
1630
+ az: number;
1631
+ amp: number;
1632
+ freq: number;
1633
+ phase: number;
1634
+ }[];
1635
+ head: {
1636
+ ax: number;
1637
+ ay: number;
1638
+ az: number;
1639
+ amp: number;
1640
+ freq: number;
1641
+ phase: number;
1642
+ }[];
1643
+ leftShoulder: {
1644
+ ax: number;
1645
+ ay: number;
1646
+ az: number;
1647
+ amp: number;
1648
+ freq: number;
1649
+ phase: number;
1650
+ }[];
1651
+ rightShoulder: {
1652
+ ax: number;
1653
+ ay: number;
1654
+ az: number;
1655
+ amp: number;
1656
+ freq: number;
1657
+ phase: number;
1658
+ }[];
1659
+ leftArm: {
1660
+ ax: number;
1661
+ ay: number;
1662
+ az: number;
1663
+ amp: number;
1664
+ freq: number;
1665
+ phase: number;
1666
+ }[];
1667
+ rightArm: {
1668
+ ax: number;
1669
+ ay: number;
1670
+ az: number;
1671
+ amp: number;
1672
+ freq: number;
1673
+ phase: number;
1674
+ }[];
1675
+ leftForeArm: {
1676
+ ax: number;
1677
+ ay: number;
1678
+ az: number;
1679
+ amp: number;
1680
+ freq: number;
1681
+ phase: number;
1682
+ }[];
1683
+ rightForeArm: {
1684
+ ax: number;
1685
+ ay: number;
1686
+ az: number;
1687
+ amp: number;
1688
+ freq: number;
1689
+ phase: number;
1690
+ }[];
1691
+ };
1692
+ };
1693
+ };
1694
+ /** Union of valid motion keys, for typed consumer APIs. */
1695
+ export type MotionKey = keyof typeof MOTION_DEFS;
1696
+ /** All available motion keys (runtime list for pickers / validation). */
1697
+ export declare const MOTION_KEYS: MotionKey[];
1698
+ /** Returns true if `key` names a known motion. */
1699
+ export declare function isMotionKey(key: string): key is MotionKey;
1700
+ /**
1701
+ * Gesture names supported by the upstream met4citizen TalkingHead (master).
1702
+ * Passing anything outside this set to playGesture() is a silent no-op there,
1703
+ * so consumers (and the editor) can validate against this list.
1704
+ */
1705
+ export declare const TALKINGHEAD_GESTURES: readonly ["handup", "index", "ok", "thumbup", "thumbdown", "side", "shrug", "namaste"];
1706
+ export type TalkingHeadGesture = (typeof TALKINGHEAD_GESTURES)[number];
1707
+ /**
1708
+ * Built-in pose template names from upstream TalkingHead (master). playPose()
1709
+ * accepts either one of these names OR a URL to a pose animation file — so
1710
+ * combat states like a kneeling "defeated" pose need no hosted asset.
1711
+ */
1712
+ export declare const TALKINGHEAD_POSES: readonly ["side", "hip", "turn", "bend", "back", "straight", "wide", "oneknee", "kneel", "sitting"];
1713
+ export type TalkingHeadPose = (typeof TALKINGHEAD_POSES)[number];