@lovelace_lol/embody 0.0.10 → 0.0.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.
- package/README.md +30 -40
- package/dist/index.js +38 -40
- package/dist/index.js.map +1 -1
- package/dist/three/annotations/DPthree3DMarkers.d.ts +2 -1
- package/dist/three/authoring.d.ts +2 -2
- package/dist/three/authoringTypes.d.ts +0 -91
- package/dist/three/character.d.ts +2 -8
- package/dist/three.js +38 -40
- package/dist/three.js.map +1 -1
- package/dist/wasm/README.md +30 -40
- package/dist/wasm/auDescriptors.d.ts +35 -0
- package/dist/wasm/embody_wasm.d.ts +52 -96
- package/dist/wasm/embody_wasm.js +12 -147
- package/dist/wasm/embody_wasm_bg.wasm +0 -0
- package/dist/wasm/embody_wasm_bg.wasm.d.ts +48 -56
- package/dist/wasm/index.d.ts +2 -0
- package/dist/wasm.js +288 -1
- package/dist/wasm.js.map +1 -1
- package/package.json +2 -2
package/dist/wasm/README.md
CHANGED
|
@@ -87,6 +87,11 @@ spent. Each native mesh raycast is indivisible; a large mesh can still cause a
|
|
|
87
87
|
frame drop, and slicing does not reduce total raycast CPU time. Interactive
|
|
88
88
|
annotation changes retain synchronous queries so a marker samples one pose.
|
|
89
89
|
Replacement, clearing and disposal cancel stale loads before scene commits.
|
|
90
|
+
New 3D markers and separated endpoints invalidate the cached camera layout.
|
|
91
|
+
Visible markers receive the current zoom sizing and Rust viewport constraints
|
|
92
|
+
before paint; hidden markers receive that layout before reveal captures label
|
|
93
|
+
scales. Viewport clipping also follows the animated label size during reveal
|
|
94
|
+
overshoot. Markers added during a reveal stay hidden until its layout pass resumes.
|
|
90
95
|
|
|
91
96
|
For first reveal, call `controller.prepareModelForRender(model, { signal })`
|
|
92
97
|
from the existing `beforeReveal` callback (or directly before attaching the
|
|
@@ -289,7 +294,7 @@ step/linear clip conversion, and remaining import work.
|
|
|
289
294
|
|
|
290
295
|
`humanoid.getSpecification` exposes all 55 VRM 1.0 anatomical roles and their
|
|
291
296
|
parent/required rules. CC4 maps all 55 to distinct authored bones and supplies
|
|
292
|
-
|
|
297
|
+
authored AU mappings for fingers, wrists, shoulders, feet, whole body motion, the
|
|
293
298
|
spine, head, eyes and jaw. `profile.setHumanoidRoleBinding` edits or clears a role and
|
|
294
299
|
retargets its existing actuators. The runtime keeps the same bone/morph evaluator;
|
|
295
300
|
other rigs must author their own calibrated axes/ranges and optional muscle
|
|
@@ -520,42 +525,27 @@ the package; CI checks and publishes that same build.
|
|
|
520
525
|
|
|
521
526
|
MIT. See [LICENSE](LICENSE) and [AUTHORS.md](AUTHORS.md).
|
|
522
527
|
|
|
523
|
-
###
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
`
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
keyframes:[{time,intensity}]}]}` through the same AU/bone/morph evaluator.
|
|
548
|
-
Direction is `positive` or `negative`; time is seconds. Unsupported directions,
|
|
549
|
-
unknown controls, duplicate actions and non-increasing/out-of-range keys fail.
|
|
550
|
-
`options.faceCurves` accepts additional non-Body AU curves so face and body compile
|
|
551
|
-
together, including overlapping mapped bones. Compilation preserves live state;
|
|
552
|
-
per-track morph strength changes only the compiled output. The host mixer owns
|
|
553
|
-
playback and interpolation, as with existing snippets.
|
|
554
|
-
|
|
555
|
-
Catalog `availableSides` identifies actual mapped left/right/center outputs.
|
|
556
|
-
Generated animations reject a negative balance without a left output or positive
|
|
557
|
-
balance without a right output; balance zero may drive the remaining side of a
|
|
558
|
-
partial rig. Stored static poses retain their portability across missing outputs.
|
|
559
|
-
`evaluate_semantic_body_bone_frame()` returns exact Body-owned properties including
|
|
560
|
-
neutral values, allowing an explicit semantic pose/reset to replace old raw bone
|
|
561
|
-
edits without touching unrelated properties.
|
|
528
|
+
### AU controls and authored animation
|
|
529
|
+
|
|
530
|
+
Character controls come from the character's saved `auInfo`/`actionInfo`,
|
|
531
|
+
`auToBones`, `auToMorphs`, `compositeRotations` and `continuumPairs`. There is
|
|
532
|
+
no named body-control catalog or fixed control count. `engine.getAUDescriptors()`
|
|
533
|
+
and initialized `getAUDescriptors(profile, modelDescriptor?)` return per-AU
|
|
534
|
+
metadata and resolved output support, including labels, signed pair IDs,
|
|
535
|
+
bilateral sides, saved morph strength and resolved bone/morph names.
|
|
536
|
+
|
|
537
|
+
Use `setAU`/`transitionAU`, `setContinuum`, `getAUBalance` and
|
|
538
|
+
`setAUMixWeight` for live controls. `buildClip`/`playSnippet` compile numeric
|
|
539
|
+
AU curves through the same saved bone/morph evaluator; `balanceMap` and
|
|
540
|
+
`mixWeights` are per-AU compilation options. Compilation preserves live state.
|
|
541
|
+
Native playback owns interpolation, pause, resume, cancellation and blending.
|
|
542
|
+
Reset an authored control by setting its mapped AU values to zero. Hosts select
|
|
543
|
+
which mapped AU IDs to reset; unrelated face state and saved mix strengths remain
|
|
544
|
+
under their existing owners.
|
|
545
|
+
|
|
546
|
+
Named semantic pose/animation APIs and profile `bodyControls` are retired.
|
|
547
|
+
Persisted named records must be decoded at the storage boundary to numeric AU
|
|
548
|
+
values/curves, using their original profile mappings. `LEGACY_BODY_CONTROL_AUS`
|
|
549
|
+
is a deprecated reader-only historical identity snapshot for old CC4 records;
|
|
550
|
+
it is never consulted for current controls, actuation or profile compilation.
|
|
551
|
+
Unknown legacy names must be reported rather than silently omitted.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface AUDescriptor {
|
|
2
|
+
auId: number;
|
|
3
|
+
label: string;
|
|
4
|
+
faceArea?: string | null;
|
|
5
|
+
facePart?: string | null;
|
|
6
|
+
negativeAuId?: number | null;
|
|
7
|
+
positiveAuId?: number | null;
|
|
8
|
+
/** At least one left/right output supports balance; inspect availableSides for the actual sides. */
|
|
9
|
+
bilateral: boolean;
|
|
10
|
+
boneBindings: Array<Record<string, unknown> & {
|
|
11
|
+
auId: number;
|
|
12
|
+
boneName: string;
|
|
13
|
+
}>;
|
|
14
|
+
boneNames: string[];
|
|
15
|
+
morphBindings: {
|
|
16
|
+
left: unknown[];
|
|
17
|
+
right: unknown[];
|
|
18
|
+
center: unknown[];
|
|
19
|
+
};
|
|
20
|
+
morphNames: string[];
|
|
21
|
+
morphStrength: number;
|
|
22
|
+
availableSides: Array<'left' | 'right' | 'center'>;
|
|
23
|
+
hasBones: boolean;
|
|
24
|
+
hasMorphs: boolean;
|
|
25
|
+
available: boolean;
|
|
26
|
+
diagnostics: string[];
|
|
27
|
+
}
|
|
28
|
+
/** Inspect saved AU metadata. Optional model is a renderer-neutral model descriptor. */
|
|
29
|
+
export declare function getAUDescriptors(profile: object, model?: object): AUDescriptor[];
|
|
30
|
+
/** @deprecated Reader-only identity snapshot for persisted named poses/animations. Never use for active controls. */
|
|
31
|
+
export declare const LEGACY_BODY_CONTROL_AUS: Readonly<Record<string, Readonly<{
|
|
32
|
+
positiveAuId: number;
|
|
33
|
+
negativeAuId?: number;
|
|
34
|
+
bilateral: boolean;
|
|
35
|
+
}>>>;
|
|
@@ -83,10 +83,6 @@ export class NativePlaybackSession {
|
|
|
83
83
|
export class RuntimeCore {
|
|
84
84
|
free(): void;
|
|
85
85
|
[Symbol.dispose](): void;
|
|
86
|
-
/**
|
|
87
|
-
* Validate every channel before replacing Body state. Other FACS state remains.
|
|
88
|
-
*/
|
|
89
|
-
apply_semantic_pose_json(json: string): void;
|
|
90
86
|
static au_morph_binding_stride(): number;
|
|
91
87
|
/**
|
|
92
88
|
* Begin one host command; its concrete destinations determine which native
|
|
@@ -110,15 +106,7 @@ export class RuntimeCore {
|
|
|
110
106
|
* this clip with finalPose=release so native ownership ends at completion.
|
|
111
107
|
*/
|
|
112
108
|
build_live_release_clip(name: string, previous_clip_json: string, duration_seconds: number): string;
|
|
113
|
-
/**
|
|
114
|
-
* Compile semantic motions and optional facial curves together without changing live state.
|
|
115
|
-
*/
|
|
116
|
-
build_semantic_clip(name: string, json: string, options_json: string): string;
|
|
117
109
|
build_typed_clip(clip_name: string, channels_json: string, options_json: string): string;
|
|
118
|
-
/**
|
|
119
|
-
* Captures manual semantic state; does not infer actions from a mixer pose.
|
|
120
|
-
*/
|
|
121
|
-
capture_semantic_pose_json(): string;
|
|
122
110
|
cleanup_snippet(clip_name: string): boolean;
|
|
123
111
|
clear(): void;
|
|
124
112
|
/**
|
|
@@ -190,11 +178,6 @@ export class RuntimeCore {
|
|
|
190
178
|
* are owned by the host mixer, so this returns an empty frame.
|
|
191
179
|
*/
|
|
192
180
|
evaluate_scene_frame(): string;
|
|
193
|
-
/**
|
|
194
|
-
* Full Body property writes, including neutral reference values. Hosts use
|
|
195
|
-
* this once when an explicit pose replaces direct legacy bone edits.
|
|
196
|
-
*/
|
|
197
|
-
evaluate_semantic_body_bone_frame(): Float32Array;
|
|
198
181
|
get_animation_clips(): string;
|
|
199
182
|
get_au(id: number): number;
|
|
200
183
|
/**
|
|
@@ -202,14 +185,13 @@ export class RuntimeCore {
|
|
|
202
185
|
*/
|
|
203
186
|
get_au_balance(id: number): number;
|
|
204
187
|
/**
|
|
205
|
-
*
|
|
188
|
+
* Observed AU metadata and resolved outputs. AU mappings remain the source of truth.
|
|
206
189
|
*/
|
|
207
|
-
|
|
190
|
+
get_au_descriptors_json(): string;
|
|
208
191
|
/**
|
|
209
|
-
*
|
|
210
|
-
* inspection and descriptor resolution are cached until reconfiguration.
|
|
192
|
+
* Current runtime tissue strength, independent of persisted profile defaults.
|
|
211
193
|
*/
|
|
212
|
-
|
|
194
|
+
get_au_mix_weight(id: number): number;
|
|
213
195
|
get_continuum(neg_au: number, pos_au: number): number;
|
|
214
196
|
/**
|
|
215
197
|
* Normalized hair configuration belongs to the selected profile, never an
|
|
@@ -217,10 +199,6 @@ export class RuntimeCore {
|
|
|
217
199
|
*/
|
|
218
200
|
get_hair_config_json(): string;
|
|
219
201
|
get_missing_hair_morph_targets_json(available_json: string): string;
|
|
220
|
-
/**
|
|
221
|
-
* Profile-derived motions and resolved model support for prompt/pose editors.
|
|
222
|
-
*/
|
|
223
|
-
get_semantic_pose_catalog_json(): string;
|
|
224
202
|
/**
|
|
225
203
|
* Stored direct viseme value, or zero for an unset or out-of-range slot.
|
|
226
204
|
* Host mixer output is not part of this live control state.
|
|
@@ -278,12 +256,6 @@ export class RuntimeCore {
|
|
|
278
256
|
*/
|
|
279
257
|
release_procedural_morph_frame(): Float32Array;
|
|
280
258
|
remove_animation_clip(clip_name: string): boolean;
|
|
281
|
-
/**
|
|
282
|
-
* Clear each unique configured Body action and bilateral balance together.
|
|
283
|
-
* Shared facial aliases are Body actions too. Preserve other actions,
|
|
284
|
-
* visemes, direct morph overrides, and authored/current morph mix weights.
|
|
285
|
-
*/
|
|
286
|
-
reset_body_controls(): void;
|
|
287
259
|
/**
|
|
288
260
|
* Forget ownership when renderer bindings are discarded. Before replacing
|
|
289
261
|
* bindings, apply release_procedural_morph_frame through the old IDs.
|
|
@@ -311,14 +283,6 @@ export class RuntimeCore {
|
|
|
311
283
|
set_viseme(index: number, value: number): void;
|
|
312
284
|
set_viseme_jaw_scale(index: number, jaw_scale: number): void;
|
|
313
285
|
set_viseme_slot_count(count: number): void;
|
|
314
|
-
/**
|
|
315
|
-
* Compile and validate without registering a clip or changing live controls.
|
|
316
|
-
*/
|
|
317
|
-
validate_semantic_animation_json(json: string, options_json: string): void;
|
|
318
|
-
/**
|
|
319
|
-
* Validate and fill optional settings without changing runtime or renderer state.
|
|
320
|
-
*/
|
|
321
|
-
validate_semantic_pose_json(json: string): string;
|
|
322
286
|
static viseme_morph_binding_stride(): number;
|
|
323
287
|
viseme_slot_index(slot_id: string): number;
|
|
324
288
|
}
|
|
@@ -636,16 +600,22 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
|
|
|
636
600
|
|
|
637
601
|
export interface InitOutput {
|
|
638
602
|
readonly memory: WebAssembly.Memory;
|
|
639
|
-
readonly
|
|
603
|
+
readonly default_hair_color_appearance_json: () => [number, number, number, number];
|
|
604
|
+
readonly hair_color_presets_json: () => [number, number, number, number];
|
|
605
|
+
readonly normalize_hair_color_appearance_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
606
|
+
readonly embody_request: (a: number, b: number) => [number, number, number, number];
|
|
607
|
+
readonly compute_humanoid_skeleton_template_rest_bounds: (a: number, b: number) => [number, number, number, number];
|
|
608
|
+
readonly core_abi_version: () => number;
|
|
609
|
+
readonly create_validation_skeleton_json: (a: number, b: number) => [number, number, number, number];
|
|
610
|
+
readonly extract_humanoid_skeleton_template_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
611
|
+
readonly get_humanoid_skeleton_template_json: (a: number, b: number) => [number, number, number, number];
|
|
612
|
+
readonly humanoid_skeleton_template_bone_names: (a: number, b: number) => [number, number, number, number];
|
|
613
|
+
readonly list_humanoid_skeleton_templates_json: () => [number, number, number, number];
|
|
640
614
|
readonly marker_endpoint_stride: () => number;
|
|
641
615
|
readonly marker_visibility_animation_factors: (a: number, b: number) => [number, number];
|
|
642
|
-
readonly
|
|
643
|
-
readonly
|
|
644
|
-
readonly
|
|
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];
|
|
616
|
+
readonly pack_morph_frame_delta: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
|
|
617
|
+
readonly packed_bone_frame_delta_stride: () => number;
|
|
618
|
+
readonly packed_morph_frame_delta_stride: () => number;
|
|
649
619
|
readonly passes_marker_camera_angle_gate: (a: number, b: number, c: number) => number;
|
|
650
620
|
readonly resolve_viewport_constrained_line_scale: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
651
621
|
readonly resolve_viewport_safe_bounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
@@ -654,14 +624,9 @@ export interface InitOutput {
|
|
|
654
624
|
readonly separate_overlapping_marker_endpoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
|
|
655
625
|
readonly should_show_marker: (a: number, b: number, c: number, d: number) => number;
|
|
656
626
|
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
627
|
readonly __wbg_cameraflight_free: (a: number, b: number) => void;
|
|
664
628
|
readonly __wbg_cameraorbit_free: (a: number, b: number) => void;
|
|
629
|
+
readonly __wbg_runtimecore_free: (a: number, b: number) => void;
|
|
665
630
|
readonly analyze_mesh_proportions: (a: number, b: number, c: number) => [number, number];
|
|
666
631
|
readonly annotation_camera_framing_stride: () => number;
|
|
667
632
|
readonly cameraflight_duration_ms: (a: number) => number;
|
|
@@ -671,48 +636,18 @@ export interface InitOutput {
|
|
|
671
636
|
readonly cameraorbit_new: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
672
637
|
readonly cameraorbit_sample: (a: number, b: number) => [number, number];
|
|
673
638
|
readonly compose_template_fit_adjustment: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
674
|
-
readonly compute_humanoid_skeleton_template_rest_bounds: (a: number, b: number) => [number, number, number, number];
|
|
675
|
-
readonly create_validation_skeleton_json: (a: number, b: number) => [number, number, number, number];
|
|
676
|
-
readonly extract_humanoid_skeleton_template_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
677
639
|
readonly focus_padding_factor: (a: number, b: number, c: number, d: number) => number;
|
|
678
|
-
readonly get_humanoid_skeleton_template_json: (a: number, b: number) => [number, number, number, number];
|
|
679
|
-
readonly humanoid_skeleton_template_bone_names: (a: number, b: number) => [number, number, number, number];
|
|
680
|
-
readonly list_humanoid_skeleton_templates_json: () => [number, number, number, number];
|
|
681
640
|
readonly mesh_proportions_stride: () => number;
|
|
682
641
|
readonly normalize_camera_angle_degrees: (a: number) => number;
|
|
683
642
|
readonly resolve_auto_closeup_angle: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
684
643
|
readonly resolve_focus_camera_direction: (a: number, b: number, c: number, d: number, e: number) => [number, number];
|
|
685
|
-
readonly
|
|
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;
|
|
692
|
-
readonly __wbg_runtimecore_free: (a: number, b: number) => void;
|
|
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];
|
|
705
|
-
readonly pack_morph_frame_delta: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
|
|
706
|
-
readonly packed_bone_frame_delta_stride: () => number;
|
|
707
|
-
readonly runtimecore_apply_semantic_pose_json: (a: number, b: number, c: number) => [number, number];
|
|
644
|
+
readonly runtimecore_au_morph_binding_stride: () => number;
|
|
708
645
|
readonly runtimecore_begin_live_command: (a: number) => void;
|
|
709
646
|
readonly runtimecore_build_clip: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
|
|
710
647
|
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
648
|
readonly runtimecore_build_live_clip: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
712
649
|
readonly runtimecore_build_live_release_clip: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
|
|
713
|
-
readonly runtimecore_build_semantic_clip: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
|
|
714
650
|
readonly runtimecore_build_typed_clip: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
|
|
715
|
-
readonly runtimecore_capture_semantic_pose_json: (a: number) => [number, number];
|
|
716
651
|
readonly runtimecore_cleanup_snippet: (a: number, b: number, c: number) => number;
|
|
717
652
|
readonly runtimecore_clear: (a: number) => void;
|
|
718
653
|
readonly runtimecore_configure: (a: number, b: number, c: number, d: number, e: number) => [number, number];
|
|
@@ -726,16 +661,14 @@ export interface InitOutput {
|
|
|
726
661
|
readonly runtimecore_evaluate_procedural_bone_frame: (a: number) => [number, number];
|
|
727
662
|
readonly runtimecore_evaluate_procedural_morph_frame: (a: number) => [number, number];
|
|
728
663
|
readonly runtimecore_evaluate_scene_frame: (a: number) => [number, number, number, number];
|
|
729
|
-
readonly runtimecore_evaluate_semantic_body_bone_frame: (a: number) => [number, number];
|
|
730
664
|
readonly runtimecore_get_animation_clips: (a: number) => [number, number, number, number];
|
|
731
665
|
readonly runtimecore_get_au: (a: number, b: number) => number;
|
|
732
666
|
readonly runtimecore_get_au_balance: (a: number, b: number) => number;
|
|
667
|
+
readonly runtimecore_get_au_descriptors_json: (a: number) => [number, number];
|
|
733
668
|
readonly runtimecore_get_au_mix_weight: (a: number, b: number) => number;
|
|
734
|
-
readonly runtimecore_get_body_controls_json: (a: number) => [number, number];
|
|
735
669
|
readonly runtimecore_get_continuum: (a: number, b: number, c: number) => number;
|
|
736
670
|
readonly runtimecore_get_hair_config_json: (a: number) => [number, number, number, number];
|
|
737
671
|
readonly runtimecore_get_missing_hair_morph_targets_json: (a: number, b: number, c: number) => [number, number, number, number];
|
|
738
|
-
readonly runtimecore_get_semantic_pose_catalog_json: (a: number) => [number, number];
|
|
739
672
|
readonly runtimecore_get_viseme: (a: number, b: number) => number;
|
|
740
673
|
readonly runtimecore_get_viseme_jaw_scale: (a: number, b: number) => number;
|
|
741
674
|
readonly runtimecore_has_left_right_bones: (a: number, b: number) => number;
|
|
@@ -753,7 +686,6 @@ export interface InitOutput {
|
|
|
753
686
|
readonly runtimecore_release_morph: (a: number, b: number, c: number, d: number, e: number) => number;
|
|
754
687
|
readonly runtimecore_release_morph_index: (a: number, b: number, c: number, d: number) => number;
|
|
755
688
|
readonly runtimecore_release_procedural_morph_frame: (a: number) => [number, number];
|
|
756
|
-
readonly runtimecore_reset_body_controls: (a: number) => void;
|
|
757
689
|
readonly runtimecore_reset_procedural_frame_tracking: (a: number) => void;
|
|
758
690
|
readonly runtimecore_resolve_hair_motion_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
759
691
|
readonly runtimecore_set_au: (a: number, b: number, c: number, d: number) => void;
|
|
@@ -767,21 +699,23 @@ export interface InitOutput {
|
|
|
767
699
|
readonly runtimecore_set_viseme: (a: number, b: number, c: number) => void;
|
|
768
700
|
readonly runtimecore_set_viseme_jaw_scale: (a: number, b: number, c: number) => void;
|
|
769
701
|
readonly runtimecore_set_viseme_slot_count: (a: number, b: number) => void;
|
|
770
|
-
readonly runtimecore_validate_semantic_animation_json: (a: number, b: number, c: number, d: number, e: number) => [number, number];
|
|
771
|
-
readonly runtimecore_validate_semantic_pose_json: (a: number, b: number, c: number) => [number, number, number, number];
|
|
772
|
-
readonly runtimecore_viseme_slot_index: (a: number, b: number, c: number) => number;
|
|
773
|
-
readonly packed_morph_frame_delta_stride: () => number;
|
|
774
|
-
readonly runtimecore_au_morph_binding_stride: () => number;
|
|
775
702
|
readonly runtimecore_viseme_morph_binding_stride: () => number;
|
|
703
|
+
readonly runtimecore_viseme_slot_index: (a: number, b: number, c: number) => number;
|
|
704
|
+
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];
|
|
705
|
+
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];
|
|
706
|
+
readonly solve_template_skeleton_fit: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
707
|
+
readonly template_skeleton_fit_solution_stride: () => number;
|
|
708
|
+
readonly world_direction_for_camera_angle: (a: number, b: number, c: number) => [number, number];
|
|
709
|
+
readonly camera_flight_sample_stride: () => number;
|
|
776
710
|
readonly runtimecore_remove_animation_clip: (a: number, b: number, c: number) => number;
|
|
777
711
|
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];
|
|
779
712
|
readonly build_hair_gravity_curves: (a: number, b: number) => [number, number, number, number];
|
|
780
713
|
readonly build_hair_idle_curves: (a: number, b: number, c: number) => [number, number, number, number];
|
|
781
714
|
readonly build_hair_impulse_curves: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
782
715
|
readonly compile_clip: (a: number, b: number) => [number, number, number, number];
|
|
783
716
|
readonly compile_clip_curves: (a: number, b: number) => [number, number, number, number];
|
|
784
717
|
readonly compose_template_skeleton_fit_transform: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
718
|
+
readonly extract_model_data_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
785
719
|
readonly get_preset_json: (a: number, b: number) => [number, number, number, number];
|
|
786
720
|
readonly has_preset: (a: number, b: number) => number;
|
|
787
721
|
readonly list_presets: () => [number, number];
|
|
@@ -789,11 +723,33 @@ export interface InitOutput {
|
|
|
789
723
|
readonly merge_preset_profile: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
790
724
|
readonly resolve_embedded_profile_view: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
791
725
|
readonly resolve_profile_view: (a: number, b: number) => [number, number, number, number];
|
|
726
|
+
readonly solve_axis_quaternion: (a: number, b: number, c: number, d: number) => [number, number];
|
|
727
|
+
readonly solve_bilateral_values: (a: number, b: number) => [number, number];
|
|
728
|
+
readonly solve_morph_batch: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
|
|
792
729
|
readonly template_skeleton_fit_transform_stride: () => number;
|
|
793
730
|
readonly validate_generated_template_fit_metadata: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
|
|
794
731
|
readonly validate_humanoid_characterization: (a: number, b: number, c: number, d: number) => [number, number, number, number];
|
|
795
732
|
readonly validate_profile_model: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
|
|
796
|
-
readonly
|
|
733
|
+
readonly __wbg_hairphysicssolver_free: (a: number, b: number) => void;
|
|
734
|
+
readonly __wbg_nativeplaybacksession_free: (a: number, b: number) => void;
|
|
735
|
+
readonly default_hair_physics_config_values: () => [number, number];
|
|
736
|
+
readonly hair_config_stride: () => number;
|
|
737
|
+
readonly hair_head_state_stride: () => number;
|
|
738
|
+
readonly hair_morph_output_stride: () => number;
|
|
739
|
+
readonly hair_state_stride: () => number;
|
|
740
|
+
readonly hairphysicssolver_get_config: (a: number) => [number, number];
|
|
741
|
+
readonly hairphysicssolver_get_state: (a: number) => [number, number];
|
|
742
|
+
readonly hairphysicssolver_new: (a: number, b: number) => number;
|
|
743
|
+
readonly hairphysicssolver_reset: (a: number) => void;
|
|
744
|
+
readonly hairphysicssolver_set_config: (a: number, b: number, c: number) => void;
|
|
745
|
+
readonly hairphysicssolver_update: (a: number, b: number, c: number, d: number) => [number, number];
|
|
746
|
+
readonly nativeplaybacksession_control: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
747
|
+
readonly nativeplaybacksession_dispose: (a: number) => [number, number, number, number];
|
|
748
|
+
readonly nativeplaybacksession_new: () => [number, number, number];
|
|
749
|
+
readonly nativeplaybacksession_notify: (a: number, b: number, c: number) => [number, number, number, number];
|
|
750
|
+
readonly nativeplaybacksession_play: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
751
|
+
readonly nativeplaybacksession_rebind: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
752
|
+
readonly nativeplaybacksession_replace_clip: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
|
|
797
753
|
readonly __wbindgen_externrefs: WebAssembly.Table;
|
|
798
754
|
readonly __wbindgen_malloc: (a: number, b: number) => number;
|
|
799
755
|
readonly __wbindgen_free: (a: number, b: number, c: number) => void;
|
package/dist/wasm/embody_wasm.js
CHANGED
|
@@ -383,18 +383,6 @@ export class RuntimeCore {
|
|
|
383
383
|
const ptr = this.__destroy_into_raw();
|
|
384
384
|
wasm.__wbg_runtimecore_free(ptr, 0);
|
|
385
385
|
}
|
|
386
|
-
/**
|
|
387
|
-
* Validate every channel before replacing Body state. Other FACS state remains.
|
|
388
|
-
* @param {string} json
|
|
389
|
-
*/
|
|
390
|
-
apply_semantic_pose_json(json) {
|
|
391
|
-
const ptr0 = passStringToWasm0(json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
392
|
-
const len0 = WASM_VECTOR_LEN;
|
|
393
|
-
const ret = wasm.runtimecore_apply_semantic_pose_json(this.__wbg_ptr, ptr0, len0);
|
|
394
|
-
if (ret[1]) {
|
|
395
|
-
throw takeFromExternrefTable0(ret[0]);
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
386
|
/**
|
|
399
387
|
* @returns {number}
|
|
400
388
|
*/
|
|
@@ -528,37 +516,6 @@ export class RuntimeCore {
|
|
|
528
516
|
wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);
|
|
529
517
|
}
|
|
530
518
|
}
|
|
531
|
-
/**
|
|
532
|
-
* Compile semantic motions and optional facial curves together without changing live state.
|
|
533
|
-
* @param {string} name
|
|
534
|
-
* @param {string} json
|
|
535
|
-
* @param {string} options_json
|
|
536
|
-
* @returns {string}
|
|
537
|
-
*/
|
|
538
|
-
build_semantic_clip(name, json, options_json) {
|
|
539
|
-
let deferred5_0;
|
|
540
|
-
let deferred5_1;
|
|
541
|
-
try {
|
|
542
|
-
const ptr0 = passStringToWasm0(name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
543
|
-
const len0 = WASM_VECTOR_LEN;
|
|
544
|
-
const ptr1 = passStringToWasm0(json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
545
|
-
const len1 = WASM_VECTOR_LEN;
|
|
546
|
-
const ptr2 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
547
|
-
const len2 = WASM_VECTOR_LEN;
|
|
548
|
-
const ret = wasm.runtimecore_build_semantic_clip(this.__wbg_ptr, ptr0, len0, ptr1, len1, ptr2, len2);
|
|
549
|
-
var ptr4 = ret[0];
|
|
550
|
-
var len4 = ret[1];
|
|
551
|
-
if (ret[3]) {
|
|
552
|
-
ptr4 = 0; len4 = 0;
|
|
553
|
-
throw takeFromExternrefTable0(ret[2]);
|
|
554
|
-
}
|
|
555
|
-
deferred5_0 = ptr4;
|
|
556
|
-
deferred5_1 = len4;
|
|
557
|
-
return getStringFromWasm0(ptr4, len4);
|
|
558
|
-
} finally {
|
|
559
|
-
wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
519
|
/**
|
|
563
520
|
* @param {string} clip_name
|
|
564
521
|
* @param {string} channels_json
|
|
@@ -589,22 +546,6 @@ export class RuntimeCore {
|
|
|
589
546
|
wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);
|
|
590
547
|
}
|
|
591
548
|
}
|
|
592
|
-
/**
|
|
593
|
-
* Captures manual semantic state; does not infer actions from a mixer pose.
|
|
594
|
-
* @returns {string}
|
|
595
|
-
*/
|
|
596
|
-
capture_semantic_pose_json() {
|
|
597
|
-
let deferred1_0;
|
|
598
|
-
let deferred1_1;
|
|
599
|
-
try {
|
|
600
|
-
const ret = wasm.runtimecore_capture_semantic_pose_json(this.__wbg_ptr);
|
|
601
|
-
deferred1_0 = ret[0];
|
|
602
|
-
deferred1_1 = ret[1];
|
|
603
|
-
return getStringFromWasm0(ret[0], ret[1]);
|
|
604
|
-
} finally {
|
|
605
|
-
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
606
|
-
}
|
|
607
|
-
}
|
|
608
549
|
/**
|
|
609
550
|
* @param {string} clip_name
|
|
610
551
|
* @returns {boolean}
|
|
@@ -781,17 +722,6 @@ export class RuntimeCore {
|
|
|
781
722
|
wasm.__wbindgen_free(deferred2_0, deferred2_1, 1);
|
|
782
723
|
}
|
|
783
724
|
}
|
|
784
|
-
/**
|
|
785
|
-
* Full Body property writes, including neutral reference values. Hosts use
|
|
786
|
-
* this once when an explicit pose replaces direct legacy bone edits.
|
|
787
|
-
* @returns {Float32Array}
|
|
788
|
-
*/
|
|
789
|
-
evaluate_semantic_body_bone_frame() {
|
|
790
|
-
const ret = wasm.runtimecore_evaluate_semantic_body_bone_frame(this.__wbg_ptr);
|
|
791
|
-
var v1 = getArrayF32FromWasm0(ret[0], ret[1]).slice();
|
|
792
|
-
wasm.__wbindgen_free(ret[0], ret[1] * 4, 4);
|
|
793
|
-
return v1;
|
|
794
|
-
}
|
|
795
725
|
/**
|
|
796
726
|
* @returns {string}
|
|
797
727
|
*/
|
|
@@ -831,24 +761,14 @@ export class RuntimeCore {
|
|
|
831
761
|
return ret;
|
|
832
762
|
}
|
|
833
763
|
/**
|
|
834
|
-
*
|
|
835
|
-
* @param {number} id
|
|
836
|
-
* @returns {number}
|
|
837
|
-
*/
|
|
838
|
-
get_au_mix_weight(id) {
|
|
839
|
-
const ret = wasm.runtimecore_get_au_mix_weight(this.__wbg_ptr, id);
|
|
840
|
-
return ret;
|
|
841
|
-
}
|
|
842
|
-
/**
|
|
843
|
-
* Resolved Body descriptors for the configured profile/model. Model
|
|
844
|
-
* inspection and descriptor resolution are cached until reconfiguration.
|
|
764
|
+
* Observed AU metadata and resolved outputs. AU mappings remain the source of truth.
|
|
845
765
|
* @returns {string}
|
|
846
766
|
*/
|
|
847
|
-
|
|
767
|
+
get_au_descriptors_json() {
|
|
848
768
|
let deferred1_0;
|
|
849
769
|
let deferred1_1;
|
|
850
770
|
try {
|
|
851
|
-
const ret = wasm.
|
|
771
|
+
const ret = wasm.runtimecore_get_au_descriptors_json(this.__wbg_ptr);
|
|
852
772
|
deferred1_0 = ret[0];
|
|
853
773
|
deferred1_1 = ret[1];
|
|
854
774
|
return getStringFromWasm0(ret[0], ret[1]);
|
|
@@ -856,6 +776,15 @@ export class RuntimeCore {
|
|
|
856
776
|
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
857
777
|
}
|
|
858
778
|
}
|
|
779
|
+
/**
|
|
780
|
+
* Current runtime tissue strength, independent of persisted profile defaults.
|
|
781
|
+
* @param {number} id
|
|
782
|
+
* @returns {number}
|
|
783
|
+
*/
|
|
784
|
+
get_au_mix_weight(id) {
|
|
785
|
+
const ret = wasm.runtimecore_get_au_mix_weight(this.__wbg_ptr, id);
|
|
786
|
+
return ret;
|
|
787
|
+
}
|
|
859
788
|
/**
|
|
860
789
|
* @param {number} neg_au
|
|
861
790
|
* @param {number} pos_au
|
|
@@ -912,22 +841,6 @@ export class RuntimeCore {
|
|
|
912
841
|
wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
|
|
913
842
|
}
|
|
914
843
|
}
|
|
915
|
-
/**
|
|
916
|
-
* Profile-derived motions and resolved model support for prompt/pose editors.
|
|
917
|
-
* @returns {string}
|
|
918
|
-
*/
|
|
919
|
-
get_semantic_pose_catalog_json() {
|
|
920
|
-
let deferred1_0;
|
|
921
|
-
let deferred1_1;
|
|
922
|
-
try {
|
|
923
|
-
const ret = wasm.runtimecore_get_semantic_pose_catalog_json(this.__wbg_ptr);
|
|
924
|
-
deferred1_0 = ret[0];
|
|
925
|
-
deferred1_1 = ret[1];
|
|
926
|
-
return getStringFromWasm0(ret[0], ret[1]);
|
|
927
|
-
} finally {
|
|
928
|
-
wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
|
|
929
|
-
}
|
|
930
|
-
}
|
|
931
844
|
/**
|
|
932
845
|
* Stored direct viseme value, or zero for an unset or out-of-range slot.
|
|
933
846
|
* Host mixer output is not part of this live control state.
|
|
@@ -1119,14 +1032,6 @@ export class RuntimeCore {
|
|
|
1119
1032
|
const ret = wasm.runtimecore_remove_animation_clip(this.__wbg_ptr, ptr0, len0);
|
|
1120
1033
|
return ret !== 0;
|
|
1121
1034
|
}
|
|
1122
|
-
/**
|
|
1123
|
-
* Clear each unique configured Body action and bilateral balance together.
|
|
1124
|
-
* Shared facial aliases are Body actions too. Preserve other actions,
|
|
1125
|
-
* visemes, direct morph overrides, and authored/current morph mix weights.
|
|
1126
|
-
*/
|
|
1127
|
-
reset_body_controls() {
|
|
1128
|
-
wasm.runtimecore_reset_body_controls(this.__wbg_ptr);
|
|
1129
|
-
}
|
|
1130
1035
|
/**
|
|
1131
1036
|
* Forget ownership when renderer bindings are discarded. Before replacing
|
|
1132
1037
|
* bindings, apply release_procedural_morph_frame through the old IDs.
|
|
@@ -1275,46 +1180,6 @@ export class RuntimeCore {
|
|
|
1275
1180
|
set_viseme_slot_count(count) {
|
|
1276
1181
|
wasm.runtimecore_set_viseme_slot_count(this.__wbg_ptr, count);
|
|
1277
1182
|
}
|
|
1278
|
-
/**
|
|
1279
|
-
* Compile and validate without registering a clip or changing live controls.
|
|
1280
|
-
* @param {string} json
|
|
1281
|
-
* @param {string} options_json
|
|
1282
|
-
*/
|
|
1283
|
-
validate_semantic_animation_json(json, options_json) {
|
|
1284
|
-
const ptr0 = passStringToWasm0(json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
1285
|
-
const len0 = WASM_VECTOR_LEN;
|
|
1286
|
-
const ptr1 = passStringToWasm0(options_json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
1287
|
-
const len1 = WASM_VECTOR_LEN;
|
|
1288
|
-
const ret = wasm.runtimecore_validate_semantic_animation_json(this.__wbg_ptr, ptr0, len0, ptr1, len1);
|
|
1289
|
-
if (ret[1]) {
|
|
1290
|
-
throw takeFromExternrefTable0(ret[0]);
|
|
1291
|
-
}
|
|
1292
|
-
}
|
|
1293
|
-
/**
|
|
1294
|
-
* Validate and fill optional settings without changing runtime or renderer state.
|
|
1295
|
-
* @param {string} json
|
|
1296
|
-
* @returns {string}
|
|
1297
|
-
*/
|
|
1298
|
-
validate_semantic_pose_json(json) {
|
|
1299
|
-
let deferred3_0;
|
|
1300
|
-
let deferred3_1;
|
|
1301
|
-
try {
|
|
1302
|
-
const ptr0 = passStringToWasm0(json, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
|
|
1303
|
-
const len0 = WASM_VECTOR_LEN;
|
|
1304
|
-
const ret = wasm.runtimecore_validate_semantic_pose_json(this.__wbg_ptr, ptr0, len0);
|
|
1305
|
-
var ptr2 = ret[0];
|
|
1306
|
-
var len2 = ret[1];
|
|
1307
|
-
if (ret[3]) {
|
|
1308
|
-
ptr2 = 0; len2 = 0;
|
|
1309
|
-
throw takeFromExternrefTable0(ret[2]);
|
|
1310
|
-
}
|
|
1311
|
-
deferred3_0 = ptr2;
|
|
1312
|
-
deferred3_1 = len2;
|
|
1313
|
-
return getStringFromWasm0(ptr2, len2);
|
|
1314
|
-
} finally {
|
|
1315
|
-
wasm.__wbindgen_free(deferred3_0, deferred3_1, 1);
|
|
1316
|
-
}
|
|
1317
|
-
}
|
|
1318
1183
|
/**
|
|
1319
1184
|
* @returns {number}
|
|
1320
1185
|
*/
|
|
Binary file
|