@lovelace_lol/embody 0.0.8 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,14 @@
1
+ /** JavaScript names for the numeric Rust API used by profile tooling. */
2
+ export declare function isEmbodyCoreReady(): boolean;
3
+ export declare const coreAbiVersion: () => number;
4
+ export declare const packMorphFrameDelta: (meshIds: Uint32Array, morphTargetIds: Uint32Array, values: Float32Array, modes: Uint8Array) => Float32Array<ArrayBufferLike>;
5
+ export declare const solveBilateralValues: (base: number, balance: number) => Float32Array<ArrayBufferLike>;
6
+ export declare const solveMorphBatch: (values: Float32Array, balances: Float32Array, mixWeights: Float32Array) => Float32Array<ArrayBufferLike>;
7
+ export declare const solveAxisQuaternion: (axis: number, degrees: number, value: number, scale: number) => Float32Array<ArrayBufferLike>;
8
+ export declare const analyzeMeshProportions: (vertices: Float32Array, verticalAxis: number) => Float32Array<ArrayBufferLike>;
9
+ export declare const solveTemplateSkeletonFit: (meshVertices: Float32Array, templateBounds: Float32Array, verticalAxis: number, verticalAnchor: number) => Float32Array<ArrayBufferLike>;
10
+ export declare const composeTemplateFitAdjustment: (fit: Float32Array, scaleMultiplier: number, offsetX: number, offsetY: number, offsetZ: number) => Float32Array<ArrayBufferLike>;
11
+ export declare const composeTemplateSkeletonFitTransform: (fitScale: number, fitTranslation: Float32Array, manualScale: number, manualTranslation: Float32Array) => Float32Array<ArrayBufferLike>;
12
+ export declare const defaultHairPhysicsConfigValues: () => Float32Array<ArrayBufferLike>;
13
+ export declare function createHairPhysicsSolver(configValues?: Float32Array<ArrayBufferLike>): import("./embody_wasm").HairPhysicsSolver;
14
+ export declare function createRuntimeCore(visemeSlotCount: number): import("./embody_wasm").RuntimeCore;
@@ -41,6 +41,41 @@ export class HairPhysicsSolver {
41
41
  update(dt: number, head_values: Float32Array): Float32Array;
42
42
  }
43
43
 
44
+ /**
45
+ * A command protocol for one bound model/profile, not an animation evaluator.
46
+ * Dispatch each returned batch in order, then feed native events to `notify`.
47
+ * Before `free`, dispatch `dispose` to release engine-owned resources.
48
+ */
49
+ export class NativePlaybackSession {
50
+ free(): void;
51
+ [Symbol.dispose](): void;
52
+ control(handle: string, control_json: string): string;
53
+ dispose(): string;
54
+ constructor();
55
+ /**
56
+ * Late/duplicate/foreign well-formed notifications return an empty batch.
57
+ * A native error after held completion releases resources without emitting
58
+ * a second terminal event.
59
+ */
60
+ notify(native_event_json: string): string;
61
+ /**
62
+ * Takes concrete ClipIR from RuntimeCore compilation or baked-clip intake.
63
+ * Semantic strength must already be compiled into the clip; weight is the
64
+ * native action's contribution and never changes compiled samples.
65
+ */
66
+ play(clip_json: string, options_json: string): string;
67
+ /**
68
+ * Always starts a new generation, even if the identity labels are reused.
69
+ * Hosts must call this on every model/profile replacement before new play.
70
+ */
71
+ rebind(model_key: string, profile_key: string): string;
72
+ /**
73
+ * Replace authored samples without resetting native time, loop progress or
74
+ * the request identity. A held request remains terminal after a pose edit.
75
+ */
76
+ replace_clip(handle: string, clip_json: string): string;
77
+ }
78
+
44
79
  /**
45
80
  * Host-neutral live morph runtime. Owns AU/viseme/mix state and emits packed
46
81
  * morph frame deltas. Engine objects never enter this struct.
@@ -48,13 +83,33 @@ export class HairPhysicsSolver {
48
83
  export class RuntimeCore {
49
84
  free(): void;
50
85
  [Symbol.dispose](): void;
51
- active_transition_count(): number;
52
86
  /**
53
87
  * Validate every channel before replacing Body state. Other FACS state remains.
54
88
  */
55
89
  apply_semantic_pose_json(json: string): void;
56
90
  static au_morph_binding_stride(): number;
91
+ /**
92
+ * Begin one host command; its concrete destinations determine which native
93
+ * actions are replaced. Unrelated targets keep their existing playback.
94
+ */
95
+ begin_live_command(): void;
57
96
  build_clip(clip_name: string, curves_json: string, options_json: string): string;
97
+ /**
98
+ * Compile the configured gravity response directly to concrete morph
99
+ * tracks. Three owns interpolation from the captured initial scene pose.
100
+ */
101
+ build_hair_gravity_clip(name: string, pitch: number, duration_seconds: number, options_json: string): string;
102
+ /**
103
+ * Compile the current live semantic controls into ordinary native tracks.
104
+ * The connector captures inherited starts at play time; Rust never ticks
105
+ * or interpolates these samples. Empty output relinquishes all live tracks.
106
+ */
107
+ build_live_clip(name: string, duration_seconds: number): string;
108
+ /**
109
+ * Compile relinquished live targets back to their reference values. Run
110
+ * this clip with finalPose=release so native ownership ends at completion.
111
+ */
112
+ build_live_release_clip(name: string, previous_clip_json: string, duration_seconds: number): string;
58
113
  /**
59
114
  * Compile semantic motions and optional facial curves together without changing live state.
60
115
  */
@@ -66,7 +121,6 @@ export class RuntimeCore {
66
121
  capture_semantic_pose_json(): string;
67
122
  cleanup_snippet(clip_name: string): boolean;
68
123
  clear(): void;
69
- clear_transitions(): void;
70
124
  /**
71
125
  * Configure the core from the profile and model descriptor JSON hosts
72
126
  * already have. All binding compilation (mesh/morph/bone name resolution,
@@ -89,10 +143,10 @@ export class RuntimeCore {
89
143
  */
90
144
  configure_with_profile(profile_json: string, model_json: string): void;
91
145
  /**
92
- * Host-owned crossfade marker. Rust does not lerp; the host mixer should fade.
146
+ * Carry canonical controls across a renderer rebind. Model-local IDs and
147
+ * reference values belong to the new binding and are never copied.
93
148
  */
94
- crossfade_to(clip_name: string, _duration: number, options_json: string): string;
95
- drain_animation_events(): string;
149
+ copy_live_state_from(previous: RuntimeCore): void;
96
150
  /**
97
151
  * Same rows as `evaluate_bone_frame_delta`, but only bones an active AU,
98
152
  * translation, or viseme jaw value is currently rotating or moving.
@@ -142,7 +196,6 @@ export class RuntimeCore {
142
196
  */
143
197
  evaluate_semantic_body_bone_frame(): Float32Array;
144
198
  get_animation_clips(): string;
145
- get_animation_state(clip_name: string): string;
146
199
  get_au(id: number): number;
147
200
  /**
148
201
  * Stored live AU balance in [-1, 1], or neutral zero when unset or cleared.
@@ -158,7 +211,12 @@ export class RuntimeCore {
158
211
  */
159
212
  get_body_controls_json(): string;
160
213
  get_continuum(neg_au: number, pos_au: number): number;
161
- get_playing_animations(): string;
214
+ /**
215
+ * Normalized hair configuration belongs to the selected profile, never an
216
+ * adapter fallback. Explicit empty/null mappings remain empty.
217
+ */
218
+ get_hair_config_json(): string;
219
+ get_missing_hair_morph_targets_json(available_json: string): string;
162
220
  /**
163
221
  * Profile-derived motions and resolved model support for prompt/pose editors.
164
222
  */
@@ -172,15 +230,14 @@ export class RuntimeCore {
172
230
  * Stored direct viseme jaw scale, or one for an unset or out-of-range slot.
173
231
  */
174
232
  get_viseme_jaw_scale(index: number): number;
233
+ has_left_right_bones(au_id: number): boolean;
234
+ live_command_targets_json(): string;
175
235
  load_animation_clips(clips_json: string): void;
176
236
  /**
177
237
  * Packed rows: `[au_id, side, mesh_id, morph_target_id, weight] * N`
178
238
  * side: 0=left, 1=right, 2=center
179
239
  */
180
240
  load_au_morph_bindings(values: Float32Array): void;
181
- /**
182
- * Packed rows: `[bone_id, px, py, pz, qx, qy, qz, qw] * N`
183
- */
184
241
  load_bone_rest_transforms(values: Float32Array): void;
185
242
  /**
186
243
  * Packed rows: `[au_id, bone_id, axis(0=x,1=y,2=z), scale, max_units] * N`
@@ -204,15 +261,6 @@ export class RuntimeCore {
204
261
  */
205
262
  load_viseme_morph_bindings(values: Float32Array): void;
206
263
  constructor(viseme_slot_count: number);
207
- pause_all_animations(): void;
208
- pause_animation(clip_name: string): void;
209
- /**
210
- * Registry lookup only. Host animation libraries own play/lerp; this returns
211
- * a host-owned action id marker when the clip exists in the registry.
212
- */
213
- play_animation(clip_name: string, _options_json: string): string;
214
- play_snippet(clip_name: string, curves_json: string, options_json: string): string;
215
- play_typed_snippet(clip_name: string, channels_json: string, options_json: string): string;
216
264
  register_animation_clip(clip_json: string, source: string): void;
217
265
  /**
218
266
  * Release a direct morph override so AU/viseme/mixer ownership can resume.
@@ -242,17 +290,11 @@ export class RuntimeCore {
242
290
  * Normal clear/reset deliberately retain tracking for the next frame.
243
291
  */
244
292
  reset_procedural_frame_tracking(): void;
245
- resume_all_animations(): void;
246
- resume_animation(clip_name: string): void;
247
- seek_animation(clip_name: string, time: number): void;
248
- set_animation_blend_mode(clip_name: string, blend_mode: string): void;
249
- set_animation_easing(clip_name: string, easing: string): void;
250
- set_animation_intensity(clip_name: string, intensity: number): void;
251
- set_animation_loop_mode(clip_name: string, loop_mode: string): void;
252
- set_animation_repeat_count(clip_name: string, repeat_count: number): void;
253
- set_animation_reverse(clip_name: string, reverse: boolean): void;
254
- set_animation_speed(clip_name: string, speed: number): void;
255
- set_animation_time_scale(time_scale: number): void;
293
+ /**
294
+ * The adapter supplies native quaternion samples and scene/reference
295
+ * transforms; the profile resolves which tracks represent head motion.
296
+ */
297
+ resolve_hair_motion_json(tracks_json: string, additive: boolean): string;
256
298
  set_au(id: number, value: number, balance: number): void;
257
299
  set_au_mix_weight(id: number, weight: number): void;
258
300
  /**
@@ -262,36 +304,13 @@ export class RuntimeCore {
262
304
  */
263
305
  set_au_signed(id: number, value: number, balance: number): void;
264
306
  set_continuum(neg_au: number, pos_au: number, value: number, balance: number): void;
307
+ set_hair_config_json(update_json: string): string;
265
308
  set_mixed_aus(ids: Uint32Array): void;
266
309
  set_morph(morph_name: string, value: number, mesh_names_json: string): number;
267
310
  set_morph_index(morph_index: number, value: number, mesh_names_json: string): number;
268
311
  set_viseme(index: number, value: number): void;
269
312
  set_viseme_jaw_scale(index: number, jaw_scale: number): void;
270
313
  set_viseme_slot_count(count: number): void;
271
- stop_all_animations(): void;
272
- stop_animation(clip_name: string): void;
273
- /**
274
- * Set an AU immediately. Duration is ignored — host mixers own timed fades.
275
- */
276
- transition_au(id: number, to: number, _duration_ms: number, balance: number): void;
277
- /**
278
- * Set morph(s) immediately. Duration is ignored — host mixers own timed fades.
279
- */
280
- transition_morph(morph_name: string, to: number, _duration_ms: number, mesh_names_json: string): number;
281
- /**
282
- * Set morph index target(s) immediately. Duration is ignored.
283
- */
284
- transition_morph_index(morph_index: number, to: number, _duration_ms: number, mesh_names_json: string): number;
285
- /**
286
- * Set a viseme immediately. Duration is ignored — host mixers own timed fades.
287
- */
288
- transition_viseme(index: number, to: number, _duration_ms: number, jaw_scale: number): void;
289
- /**
290
- * Tick hook for hosts. Clip playback/lerp lives in the host animation
291
- * library; Rust only exposes live AU/viseme state for packed frames.
292
- */
293
- update(_dt_seconds: number): number;
294
- update_clip_params(clip_name: string, params_json: string): boolean;
295
314
  /**
296
315
  * Compile and validate without registering a clip or changing live controls.
297
316
  */
@@ -506,8 +525,6 @@ export function sample_marker_arc_curve(start: Float32Array, end: Float32Array,
506
525
  */
507
526
  export function sample_marker_bezier_curve(start: Float32Array, end: Float32Array, segments: number): Float32Array;
508
527
 
509
- export function screen_space_gaze_solution_stride(): number;
510
-
511
528
  /**
512
529
  * Separates overlapping marker endpoints while preserving each marker's
513
530
  * surface anchor and leader-line length.
@@ -555,62 +572,6 @@ export function solve_full_body_framing(box_min: Float32Array, box_max: Float32A
555
572
 
556
573
  export function solve_morph_batch(values: Float32Array, balances: Float32Array, mix_weights: Float32Array): Float32Array;
557
574
 
558
- /**
559
- * Solve a screen-space eye target against rendered-camera and character-eye
560
- * geometry using the profile's authored AU rotation limits.
561
- *
562
- * Output layout (14 floats): combined target x/y, eye target x/y, head target
563
- * x/y, total yaw/pitch degrees, camera-center yaw/pitch degrees, eye-to-camera
564
- * distance, and viewer-target world x/y/z.
565
- *
566
- * The profile must describe the active rig and calibrated semantic yaw/pitch
567
- * axes: neutral forward is model +Z, up is +Y, and head yaw precedes pitch.
568
- * Bone availability/rest and optical-axis calibration are not encoded by this
569
- * ABI. Missing or morph-only AUs have no inferred angular capacity. Shared eye
570
- * outputs cannot represent vergence or independently calibrated eye ranges.
571
- * Head follow is participation from model-neutral +Z toward the shared target;
572
- * zero prefers neutral, with additional head movement allowed for eye overflow.
573
- */
574
- export function solve_profile_screen_space_gaze(profile_json: string, screen_target: Float32Array, camera_position: Float32Array, camera_quaternion: Float32Array, gaze_origin: Float32Array, model_quaternion: Float32Array, vertical_fov_degrees: number, aspect: number, eyes_enabled: boolean, head_enabled: boolean, head_follow_fraction: number): Float32Array;
575
-
576
- /**
577
- * Normalized tracking controls span the active profile's signed head AU range
578
- * (or eye range with the head disabled). At full head participation, +/-1 on
579
- * an aligned display axis reaches the same rotation as its AU at intensity 1.
580
- * Zero input retains the camera bearing, bounded by that range. Camera roll
581
- * rotates display axes into the model frame. X/Y are clamped to [-1, 1]; Z is
582
- * finite-target depth in meters and does not attenuate angular movement.
583
- * Pass 1 for full head participation; smaller explicit fractions retain the
584
- * existing allocation policy. Output layout matches the physical gaze solvers.
585
- */
586
- export function solve_profile_tracking_gaze(profile_json: string, tracking_target: Float32Array, camera_position: Float32Array, camera_quaternion: Float32Array, gaze_origin: Float32Array, model_quaternion: Float32Array, eyes_enabled: boolean, head_enabled: boolean, head_follow_fraction: number, lock_head_to_camera: boolean, world_units_per_meter: number): Float32Array;
587
-
588
- /**
589
- * Solve a webcam/user target against the rendered camera. `viewer_target` is
590
- * x/y in webcam NDC and z as estimated viewer distance behind the rendered
591
- * camera in the same units as `camera_position` and `gaze_origin`. Hosts must
592
- * convert estimated meters to scene units before calling. Zero x/y extends the
593
- * eye-to-camera bearing; camera-right/up offsets retain the viewer projection
594
- * without making eye contact depend on where the eyes sit in the image.
595
- * `lock_head_to_camera` prefers the camera bearing while eyes can reach; it
596
- * allows head overflow correction and follows the viewer with eyes disabled.
597
- * Without that explicit lock, head follow participates from model-neutral +Z
598
- * toward the shared target. A zero follow fraction does not imply camera lock.
599
- * New consumers with metric viewer depth should use
600
- * `solve_profile_viewer_space_gaze_scaled` to supply the scene conversion.
601
- */
602
- export function solve_profile_viewer_space_gaze(profile_json: string, viewer_target: Float32Array, camera_position: Float32Array, camera_quaternion: Float32Array, gaze_origin: Float32Array, model_quaternion: Float32Array, viewer_vertical_fov_degrees: number, viewer_aspect: number, eyes_enabled: boolean, head_enabled: boolean, head_follow_fraction: number, lock_head_to_camera: boolean): Float32Array;
603
-
604
- /**
605
- * Solve a webcam/user target with an explicit scene-unit conversion.
606
- * `viewer_target` x/y are normalized webcam coordinates and z is estimated
607
- * viewer distance in meters. `world_units_per_meter` converts both that depth
608
- * and its projected lateral offsets into the units of `camera_position` and
609
- * `gaze_origin`. Positive finite scales are accepted; malformed scales use 1.
610
- * The output layout and head/eye allocation match the unscaled export.
611
- */
612
- export function solve_profile_viewer_space_gaze_scaled(profile_json: string, viewer_target: Float32Array, camera_position: Float32Array, camera_quaternion: Float32Array, gaze_origin: Float32Array, model_quaternion: Float32Array, viewer_vertical_fov_degrees: number, viewer_aspect: number, eyes_enabled: boolean, head_enabled: boolean, head_follow_fraction: number, lock_head_to_camera: boolean, world_units_per_meter: number): Float32Array;
613
-
614
575
  /**
615
576
  * Solve a uniform scale and translation for placing a template skeleton inside a mesh.
616
577
  *
@@ -675,35 +636,89 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
675
636
 
676
637
  export interface InitOutput {
677
638
  readonly memory: WebAssembly.Memory;
678
- readonly embody_request: (a: number, b: number) => [number, number, number, number];
639
+ readonly __wbg_nativeplaybacksession_free: (a: number, b: number) => void;
640
+ readonly marker_endpoint_stride: () => number;
641
+ readonly marker_visibility_animation_factors: (a: number, b: number) => [number, number];
642
+ readonly nativeplaybacksession_control: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
643
+ readonly nativeplaybacksession_dispose: (a: number) => [number, number, number, number];
644
+ readonly nativeplaybacksession_new: () => [number, number, number];
645
+ readonly nativeplaybacksession_notify: (a: number, b: number, c: number) => [number, number, number, number];
646
+ readonly nativeplaybacksession_play: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
647
+ readonly nativeplaybacksession_rebind: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
648
+ readonly nativeplaybacksession_replace_clip: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
649
+ readonly passes_marker_camera_angle_gate: (a: number, b: number, c: number) => number;
650
+ readonly resolve_viewport_constrained_line_scale: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
651
+ readonly resolve_viewport_safe_bounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
652
+ readonly sample_marker_arc_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
653
+ readonly sample_marker_bezier_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
654
+ readonly separate_overlapping_marker_endpoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
655
+ readonly should_show_marker: (a: number, b: number, c: number, d: number) => number;
656
+ readonly marker_visibility_factors_stride: () => number;
657
+ readonly default_hair_color_appearance_json: () => [number, number, number, number];
658
+ readonly hair_color_presets_json: () => [number, number, number, number];
659
+ readonly normalize_hair_color_appearance_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
660
+ readonly solve_axis_quaternion: (a: number, b: number, c: number, d: number) => [number, number];
661
+ readonly solve_bilateral_values: (a: number, b: number) => [number, number];
662
+ readonly solve_morph_batch: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
663
+ readonly __wbg_cameraflight_free: (a: number, b: number) => void;
664
+ readonly __wbg_cameraorbit_free: (a: number, b: number) => void;
665
+ readonly analyze_mesh_proportions: (a: number, b: number, c: number) => [number, number];
666
+ readonly annotation_camera_framing_stride: () => number;
667
+ readonly cameraflight_duration_ms: (a: number) => number;
668
+ readonly cameraflight_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
669
+ readonly cameraflight_sample: (a: number, b: number) => [number, number];
670
+ readonly cameraorbit_duration_ms: (a: number) => number;
671
+ readonly cameraorbit_new: (a: number, b: number, c: number, d: number, e: number) => number;
672
+ readonly cameraorbit_sample: (a: number, b: number) => [number, number];
673
+ readonly compose_template_fit_adjustment: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
679
674
  readonly compute_humanoid_skeleton_template_rest_bounds: (a: number, b: number) => [number, number, number, number];
680
675
  readonly create_validation_skeleton_json: (a: number, b: number) => [number, number, number, number];
681
676
  readonly extract_humanoid_skeleton_template_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
677
+ readonly focus_padding_factor: (a: number, b: number, c: number, d: number) => number;
682
678
  readonly get_humanoid_skeleton_template_json: (a: number, b: number) => [number, number, number, number];
683
679
  readonly humanoid_skeleton_template_bone_names: (a: number, b: number) => [number, number, number, number];
684
680
  readonly list_humanoid_skeleton_templates_json: () => [number, number, number, number];
685
- readonly validate_generated_template_fit_metadata: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
681
+ readonly mesh_proportions_stride: () => number;
682
+ readonly normalize_camera_angle_degrees: (a: number) => number;
683
+ readonly resolve_auto_closeup_angle: (a: number, b: number, c: number, d: number, e: number) => number;
684
+ readonly resolve_focus_camera_direction: (a: number, b: number, c: number, d: number, e: number) => [number, number];
685
+ readonly solve_focus_framing: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number) => [number, number];
686
+ readonly solve_full_body_framing: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number];
687
+ readonly solve_template_skeleton_fit: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
688
+ readonly template_skeleton_fit_solution_stride: () => number;
689
+ readonly world_direction_for_camera_angle: (a: number, b: number, c: number) => [number, number];
690
+ readonly camera_flight_sample_stride: () => number;
691
+ readonly __wbg_hairphysicssolver_free: (a: number, b: number) => void;
686
692
  readonly __wbg_runtimecore_free: (a: number, b: number) => void;
687
- readonly compose_template_skeleton_fit_transform: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
688
693
  readonly core_abi_version: () => number;
694
+ readonly default_hair_physics_config_values: () => [number, number];
695
+ readonly hair_config_stride: () => number;
696
+ readonly hair_head_state_stride: () => number;
697
+ readonly hair_morph_output_stride: () => number;
698
+ readonly hair_state_stride: () => number;
699
+ readonly hairphysicssolver_get_config: (a: number) => [number, number];
700
+ readonly hairphysicssolver_get_state: (a: number) => [number, number];
701
+ readonly hairphysicssolver_new: (a: number, b: number) => number;
702
+ readonly hairphysicssolver_reset: (a: number) => void;
703
+ readonly hairphysicssolver_set_config: (a: number, b: number, c: number) => void;
704
+ readonly hairphysicssolver_update: (a: number, b: number, c: number, d: number) => [number, number];
689
705
  readonly pack_morph_frame_delta: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
690
706
  readonly packed_bone_frame_delta_stride: () => number;
691
- readonly packed_morph_frame_delta_stride: () => number;
692
- readonly runtimecore_active_transition_count: (a: number) => number;
693
707
  readonly runtimecore_apply_semantic_pose_json: (a: number, b: number, c: number) => [number, number];
694
- readonly runtimecore_au_morph_binding_stride: () => number;
708
+ readonly runtimecore_begin_live_command: (a: number) => void;
695
709
  readonly runtimecore_build_clip: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
710
+ readonly runtimecore_build_hair_gravity_clip: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
711
+ readonly runtimecore_build_live_clip: (a: number, b: number, c: number, d: number) => [number, number, number, number];
712
+ readonly runtimecore_build_live_release_clip: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
696
713
  readonly runtimecore_build_semantic_clip: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
697
714
  readonly runtimecore_build_typed_clip: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
698
715
  readonly runtimecore_capture_semantic_pose_json: (a: number) => [number, number];
699
716
  readonly runtimecore_cleanup_snippet: (a: number, b: number, c: number) => number;
700
717
  readonly runtimecore_clear: (a: number) => void;
701
- readonly runtimecore_clear_transitions: (a: number) => void;
702
718
  readonly runtimecore_configure: (a: number, b: number, c: number, d: number, e: number) => [number, number];
703
719
  readonly runtimecore_configure_with_preset: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
704
720
  readonly runtimecore_configure_with_profile: (a: number, b: number, c: number, d: number, e: number) => [number, number];
705
- readonly runtimecore_crossfade_to: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
706
- readonly runtimecore_drain_animation_events: (a: number) => [number, number, number, number];
721
+ readonly runtimecore_copy_live_state_from: (a: number, b: number) => void;
707
722
  readonly runtimecore_evaluate_active_bone_frame: (a: number) => [number, number];
708
723
  readonly runtimecore_evaluate_active_morph_frame: (a: number) => [number, number];
709
724
  readonly runtimecore_evaluate_bone_frame_delta: (a: number) => [number, number];
@@ -713,16 +728,18 @@ export interface InitOutput {
713
728
  readonly runtimecore_evaluate_scene_frame: (a: number) => [number, number, number, number];
714
729
  readonly runtimecore_evaluate_semantic_body_bone_frame: (a: number) => [number, number];
715
730
  readonly runtimecore_get_animation_clips: (a: number) => [number, number, number, number];
716
- readonly runtimecore_get_animation_state: (a: number, b: number, c: number) => [number, number, number, number];
717
731
  readonly runtimecore_get_au: (a: number, b: number) => number;
718
732
  readonly runtimecore_get_au_balance: (a: number, b: number) => number;
719
733
  readonly runtimecore_get_au_mix_weight: (a: number, b: number) => number;
720
734
  readonly runtimecore_get_body_controls_json: (a: number) => [number, number];
721
735
  readonly runtimecore_get_continuum: (a: number, b: number, c: number) => number;
722
- readonly runtimecore_get_playing_animations: (a: number) => [number, number, number, number];
736
+ readonly runtimecore_get_hair_config_json: (a: number) => [number, number, number, number];
737
+ readonly runtimecore_get_missing_hair_morph_targets_json: (a: number, b: number, c: number) => [number, number, number, number];
723
738
  readonly runtimecore_get_semantic_pose_catalog_json: (a: number) => [number, number];
724
739
  readonly runtimecore_get_viseme: (a: number, b: number) => number;
725
740
  readonly runtimecore_get_viseme_jaw_scale: (a: number, b: number) => number;
741
+ readonly runtimecore_has_left_right_bones: (a: number, b: number) => number;
742
+ readonly runtimecore_live_command_targets_json: (a: number) => [number, number];
726
743
  readonly runtimecore_load_animation_clips: (a: number, b: number, c: number) => [number, number];
727
744
  readonly runtimecore_load_au_morph_bindings: (a: number, b: number, c: number) => void;
728
745
  readonly runtimecore_load_bone_rest_transforms: (a: number, b: number, c: number) => void;
@@ -732,123 +749,51 @@ export interface InitOutput {
732
749
  readonly runtimecore_load_viseme_jaw_amounts: (a: number, b: number, c: number) => void;
733
750
  readonly runtimecore_load_viseme_morph_bindings: (a: number, b: number, c: number) => void;
734
751
  readonly runtimecore_new: (a: number) => number;
735
- readonly runtimecore_pause_all_animations: (a: number) => void;
736
- readonly runtimecore_pause_animation: (a: number, b: number, c: number) => void;
737
- readonly runtimecore_play_animation: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
738
- readonly runtimecore_play_snippet: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
739
- readonly runtimecore_play_typed_snippet: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
740
752
  readonly runtimecore_register_animation_clip: (a: number, b: number, c: number, d: number, e: number) => [number, number];
741
753
  readonly runtimecore_release_morph: (a: number, b: number, c: number, d: number, e: number) => number;
742
754
  readonly runtimecore_release_morph_index: (a: number, b: number, c: number, d: number) => number;
743
755
  readonly runtimecore_release_procedural_morph_frame: (a: number) => [number, number];
744
756
  readonly runtimecore_reset_body_controls: (a: number) => void;
745
757
  readonly runtimecore_reset_procedural_frame_tracking: (a: number) => void;
746
- readonly runtimecore_resume_all_animations: (a: number) => void;
747
- readonly runtimecore_resume_animation: (a: number, b: number, c: number) => void;
748
- readonly runtimecore_seek_animation: (a: number, b: number, c: number, d: number) => void;
749
- readonly runtimecore_set_animation_blend_mode: (a: number, b: number, c: number, d: number, e: number) => [number, number];
750
- readonly runtimecore_set_animation_easing: (a: number, b: number, c: number, d: number, e: number) => [number, number];
751
- readonly runtimecore_set_animation_intensity: (a: number, b: number, c: number, d: number) => void;
752
- readonly runtimecore_set_animation_loop_mode: (a: number, b: number, c: number, d: number, e: number) => [number, number];
753
- readonly runtimecore_set_animation_repeat_count: (a: number, b: number, c: number, d: number) => void;
754
- readonly runtimecore_set_animation_reverse: (a: number, b: number, c: number, d: number) => void;
755
- readonly runtimecore_set_animation_speed: (a: number, b: number, c: number, d: number) => void;
756
- readonly runtimecore_set_animation_time_scale: (a: number, b: number) => void;
758
+ readonly runtimecore_resolve_hair_motion_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
757
759
  readonly runtimecore_set_au: (a: number, b: number, c: number, d: number) => void;
758
760
  readonly runtimecore_set_au_mix_weight: (a: number, b: number, c: number) => void;
759
761
  readonly runtimecore_set_au_signed: (a: number, b: number, c: number, d: number) => void;
760
762
  readonly runtimecore_set_continuum: (a: number, b: number, c: number, d: number, e: number) => void;
763
+ readonly runtimecore_set_hair_config_json: (a: number, b: number, c: number) => [number, number, number, number];
761
764
  readonly runtimecore_set_mixed_aus: (a: number, b: number, c: number) => void;
762
765
  readonly runtimecore_set_morph: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
763
766
  readonly runtimecore_set_morph_index: (a: number, b: number, c: number, d: number, e: number) => number;
764
767
  readonly runtimecore_set_viseme: (a: number, b: number, c: number) => void;
765
768
  readonly runtimecore_set_viseme_jaw_scale: (a: number, b: number, c: number) => void;
766
769
  readonly runtimecore_set_viseme_slot_count: (a: number, b: number) => void;
767
- readonly runtimecore_stop_all_animations: (a: number) => void;
768
- readonly runtimecore_stop_animation: (a: number, b: number, c: number) => void;
769
- readonly runtimecore_transition_au: (a: number, b: number, c: number, d: number, e: number) => void;
770
- readonly runtimecore_transition_morph: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number;
771
- readonly runtimecore_transition_morph_index: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
772
- readonly runtimecore_transition_viseme: (a: number, b: number, c: number, d: number, e: number) => void;
773
- readonly runtimecore_update: (a: number, b: number) => number;
774
- readonly runtimecore_update_clip_params: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
775
770
  readonly runtimecore_validate_semantic_animation_json: (a: number, b: number, c: number, d: number, e: number) => [number, number];
776
771
  readonly runtimecore_validate_semantic_pose_json: (a: number, b: number, c: number) => [number, number, number, number];
777
772
  readonly runtimecore_viseme_slot_index: (a: number, b: number, c: number) => number;
778
- readonly runtimecore_remove_animation_clip: (a: number, b: number, c: number) => number;
773
+ readonly packed_morph_frame_delta_stride: () => number;
774
+ readonly runtimecore_au_morph_binding_stride: () => number;
779
775
  readonly runtimecore_viseme_morph_binding_stride: () => number;
780
- readonly template_skeleton_fit_transform_stride: () => number;
781
- readonly marker_endpoint_stride: () => number;
782
- readonly marker_visibility_animation_factors: (a: number, b: number) => [number, number];
783
- readonly passes_marker_camera_angle_gate: (a: number, b: number, c: number) => number;
784
- readonly resolve_viewport_constrained_line_scale: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
785
- readonly resolve_viewport_safe_bounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
786
- readonly sample_marker_arc_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
787
- readonly sample_marker_bezier_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
788
- readonly separate_overlapping_marker_endpoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
789
- readonly should_show_marker: (a: number, b: number, c: number, d: number) => number;
790
- readonly marker_visibility_factors_stride: () => number;
791
- readonly __wbg_hairphysicssolver_free: (a: number, b: number) => void;
776
+ readonly runtimecore_remove_animation_clip: (a: number, b: number, c: number) => number;
777
+ readonly analyze_model_descriptor: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number, number];
778
+ readonly extract_model_data_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
792
779
  readonly build_hair_gravity_curves: (a: number, b: number) => [number, number, number, number];
793
780
  readonly build_hair_idle_curves: (a: number, b: number, c: number) => [number, number, number, number];
794
781
  readonly build_hair_impulse_curves: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
795
782
  readonly compile_clip: (a: number, b: number) => [number, number, number, number];
796
783
  readonly compile_clip_curves: (a: number, b: number) => [number, number, number, number];
797
- readonly default_hair_color_appearance_json: () => [number, number, number, number];
798
- readonly default_hair_physics_config_values: () => [number, number];
784
+ readonly compose_template_skeleton_fit_transform: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
799
785
  readonly get_preset_json: (a: number, b: number) => [number, number, number, number];
800
- readonly hair_color_presets_json: () => [number, number, number, number];
801
- readonly hair_config_stride: () => number;
802
- readonly hair_head_state_stride: () => number;
803
- readonly hair_morph_output_stride: () => number;
804
- readonly hair_state_stride: () => number;
805
- readonly hairphysicssolver_get_config: (a: number) => [number, number];
806
- readonly hairphysicssolver_get_state: (a: number) => [number, number];
807
- readonly hairphysicssolver_new: (a: number, b: number) => number;
808
- readonly hairphysicssolver_reset: (a: number) => void;
809
- readonly hairphysicssolver_set_config: (a: number, b: number, c: number) => void;
810
- readonly hairphysicssolver_update: (a: number, b: number, c: number, d: number) => [number, number];
811
786
  readonly has_preset: (a: number, b: number) => number;
812
787
  readonly list_presets: () => [number, number];
813
788
  readonly merge_embedded_preset: (a: number, b: number, c: number, d: number) => [number, number, number, number];
814
789
  readonly merge_preset_profile: (a: number, b: number, c: number, d: number) => [number, number, number, number];
815
- readonly normalize_hair_color_appearance_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
816
790
  readonly resolve_embedded_profile_view: (a: number, b: number, c: number, d: number) => [number, number, number, number];
817
791
  readonly resolve_profile_view: (a: number, b: number) => [number, number, number, number];
792
+ readonly template_skeleton_fit_transform_stride: () => number;
793
+ readonly validate_generated_template_fit_metadata: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
818
794
  readonly validate_humanoid_characterization: (a: number, b: number, c: number, d: number) => [number, number, number, number];
819
795
  readonly validate_profile_model: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
820
- readonly __wbg_cameraflight_free: (a: number, b: number) => void;
821
- readonly __wbg_cameraorbit_free: (a: number, b: number) => void;
822
- readonly analyze_model_descriptor: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number, number];
823
- readonly annotation_camera_framing_stride: () => number;
824
- readonly cameraflight_duration_ms: (a: number) => number;
825
- readonly cameraflight_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
826
- readonly cameraflight_sample: (a: number, b: number) => [number, number];
827
- readonly cameraorbit_duration_ms: (a: number) => number;
828
- readonly cameraorbit_new: (a: number, b: number, c: number, d: number, e: number) => number;
829
- readonly cameraorbit_sample: (a: number, b: number) => [number, number];
830
- readonly extract_model_data_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
831
- readonly focus_padding_factor: (a: number, b: number, c: number, d: number) => number;
832
- readonly normalize_camera_angle_degrees: (a: number) => number;
833
- readonly resolve_auto_closeup_angle: (a: number, b: number, c: number, d: number, e: number) => number;
834
- readonly resolve_focus_camera_direction: (a: number, b: number, c: number, d: number, e: number) => [number, number];
835
- readonly screen_space_gaze_solution_stride: () => number;
836
- readonly solve_focus_framing: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number) => [number, number];
837
- readonly solve_full_body_framing: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number) => [number, number];
838
- readonly solve_profile_screen_space_gaze: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number) => [number, number, number, number];
839
- readonly solve_profile_tracking_gaze: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number) => [number, number, number, number];
840
- readonly solve_profile_viewer_space_gaze: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number) => [number, number, number, number];
841
- readonly solve_profile_viewer_space_gaze_scaled: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number, s: number) => [number, number, number, number];
842
- readonly world_direction_for_camera_angle: (a: number, b: number, c: number) => [number, number];
843
- readonly camera_flight_sample_stride: () => number;
844
- readonly analyze_mesh_proportions: (a: number, b: number, c: number) => [number, number];
845
- readonly compose_template_fit_adjustment: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
846
- readonly mesh_proportions_stride: () => number;
847
- readonly solve_axis_quaternion: (a: number, b: number, c: number, d: number) => [number, number];
848
- readonly solve_bilateral_values: (a: number, b: number) => [number, number];
849
- readonly solve_morph_batch: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
850
- readonly solve_template_skeleton_fit: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
851
- readonly template_skeleton_fit_solution_stride: () => number;
796
+ readonly embody_request: (a: number, b: number) => [number, number, number, number];
852
797
  readonly __wbindgen_externrefs: WebAssembly.Table;
853
798
  readonly __wbindgen_malloc: (a: number, b: number) => number;
854
799
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;