@lovelace_lol/embody 0.0.17 → 0.0.18

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.
@@ -245,6 +245,75 @@ JSON report after creating the new file. In a source checkout, invoke
245
245
  `node model-tools/prepare-actor.mjs` with the same arguments. CI runs the
246
246
  `test:model-tools` regression source as part of the existing package checks.
247
247
 
248
+ #### Extracting reusable garment files
249
+
250
+ `extractGarmentModel(source, options)` extracts explicitly selected source-file
251
+ node primitives as a separate self-contained GLB. It is the shared file operation
252
+ for browser and backend-worker consumers; it does not depend on a Three scene,
253
+ initialize the animation runtime, persist a wardrobe item, or attach it to a rig.
254
+ LoomLarge owns mesh selection, storage and the preview/save workflow. Embody's
255
+ Runtime garment attachment and removal belong to the renderer adapter and need
256
+ separate implementation; this file API does not provide that lifecycle.
257
+
258
+ ```js
259
+ import { extractGarmentModel } from '@lovelace_lol/embody/model-tools';
260
+
261
+ const garment = await extractGarmentModel(originalFileBytes, {
262
+ selections: [{ nodeIndex: 12, primitiveIndices: [0, 2] }],
263
+ ownedBoneNodeIndices: [31, 32], // Optional explicitly garment-owned skin joints.
264
+ signal: abortController.signal,
265
+ });
266
+ // Persist garment.bytes separately only after extraction succeeds.
267
+ ```
268
+
269
+ Indices refer to the original GLB JSON: each selection identifies a node and the
270
+ primitive indices within that node's mesh. They are not the `mesh:N` selectors
271
+ used by `prepareActorModel`, live-scene child paths, or names. Selecting one
272
+ instance of a shared mesh does not include another instance. Duplicate node or
273
+ primitive selections and invalid indices are errors. Output indices are remapped;
274
+ inspect each new file before selecting from it again.
275
+
276
+ Extraction preserves retained vertex/index/morph accessor values and order,
277
+ including unused vertices within a selected accessor, skin joint palette order,
278
+ inverse bind matrices, mesh weights, ancestor transforms, material settings,
279
+ texture transforms, original embedded image bytes, and retained `extras`.
280
+ Unselected primitives and unreferenced file resources are excluded. Shared or
281
+ interleaved views are repacked per accessor so unrelated streams are excluded;
282
+ when primitives share an accessor, its unused vertex values deliberately remain
283
+ to preserve vertex numbering. Texture atlases remain whole. There is no triangle
284
+ reduction, vertex compaction, texture resizing, image decoding/re-encoding, or
285
+ live-pose capture. Animation clips are deliberately omitted with a warning;
286
+ cameras and unrelated scene objects are not garment dependencies.
287
+
288
+ `ownedBoneNodeIndices` marks only explicit joints with
289
+ `extras.loomlargeGarmentBone: true`. Each owned branch must move a selected
290
+ primitive, have a shared parent joint, include its complete descendant joint
291
+ chain, and have no positive influence on unselected primitives or instances.
292
+ Validation reads every `JOINTS_n`/`WEIGHTS_n` set and the vertices actually
293
+ referenced by each primitive. Transform-only helper nodes between joints retain
294
+ their source transforms. Existing ownership flags on shared source nodes are
295
+ ignored; they cannot grant ownership. Required skin palettes and their ancestor
296
+ nodes are retained even when some joints have no selected positive weights.
297
+
298
+ Inputs must be embedded GLB 2.0 with PNG, JPEG, or WebP images. In addition to core
299
+ PBR materials, extraction preserves `KHR_texture_transform`,
300
+ `KHR_mesh_quantization`, `EXT_texture_webp`, `EXT_materials_bump`, and the
301
+ `KHR_materials_` extensions `unlit`, `clearcoat`, `emissive_strength`, `ior`,
302
+ `iridescence`, `sheen`, `specular`, `transmission`, `volume`, `anisotropy`, and
303
+ `dispersion`. Unsupported or undeclared extensions, including compression, VRM,
304
+ and scene lights, fail before output. Buffer/accessor bounds, alignment, sparse
305
+ indices, primitive indices and skin influences are validated. Resource URIs are
306
+ rejected rather than fetched. Both source bytes and selection lists are copied
307
+ before asynchronous stages; cancellation rejects without returning partial
308
+ output. Use a worker for large inputs when synchronous validation/copy stages
309
+ must not occupy the UI thread.
310
+
311
+ This lossless extraction stage is separate from `prepareActorModel`'s existing
312
+ compaction/reduction behavior and its extension-free input policy. Future texture
313
+ processing and geometry variants should build on the same file boundary with
314
+ explicit processing options; extracting clothing does not implicitly lower its
315
+ quality.
316
+
248
317
  ### Annotation runtime
249
318
 
250
319
  `AnnotationRuntime` in `src/annotation_runtime/` owns the annotation behavior
@@ -667,7 +736,14 @@ a push to `main`, or a manual run on `main` with the `ref` input left empty.
667
736
  It chooses the next patch version, records the source commit in `gitHead`, and
668
737
  builds and validates once. Stable version selection reads public metadata from
669
738
  `registry.npmjs.org` anonymously; redirects and failed lookups stop the release.
670
- Metadata reads never transmit publishing credentials. The separate
739
+ Metadata reads request cache revalidation and never transmit publishing credentials.
740
+ Before building, version selection checks its candidate once at the exact-version
741
+ endpoint. An upload missing from the package index is incorporated into selection
742
+ and source-history checks: the same source reuses that version; a newer source
743
+ selects the next version before the build. Conflicting records or failed reads stop
744
+ preparation. This is a bounded reconciliation, not polling or a guarantee that every
745
+ registry replica has caught up; the independent publication check still rejects an
746
+ occupied or uncertain version without changing the verified tarball. The separate
671
747
  publish job first requires the npm visibility endpoint (the endpoint used by
672
748
  `npm access get status`) to report the existing package as public. It reads this
673
749
  anonymously without npm token configuration, then uses GitHub OIDC trusted
@@ -810,6 +886,13 @@ no named body-control catalog or fixed control count. `engine.getAUDescriptors()
810
886
  and initialized `getAUDescriptors(profile, modelDescriptor?)` return per-AU
811
887
  metadata and resolved output support, including labels, signed pair IDs,
812
888
  bilateral sides, saved morph strength and resolved bone/morph names.
889
+ Descriptors separate AU/FACS (`au`), semantic Body (`body`), authored joint-axis
890
+ rotations (`bone`) and other profile controls (`custom`). Optional `section`,
891
+ `order` and `controlLabel` metadata organizes those same numeric identities.
892
+ Classification is independent of output availability and morph routing;
893
+ `hasConfiguredBones`/`hasConfiguredMorphs` retain evidence of unavailable authored
894
+ outputs. Visemes keep their own slot API. See [Body controls](docs/body-controls.md#categories-and-anatomical-presentation)
895
+ for preset inheritance, explicit clears and anatomical presentation.
813
896
 
814
897
  Use `setAU`/`transitionAU`, `setContinuum`, `getAUBalance` and
815
898
  `setAUMixWeight` for live controls. `buildClip`/`playSnippet` compile numeric
@@ -1,6 +1,13 @@
1
+ export type ControlCategory = 'au' | 'body' | 'bone' | 'custom';
1
2
  export interface AUDescriptor {
2
3
  auId: number;
3
4
  label: string;
5
+ /** Semantic category, independent of whether configured output targets resolve. */
6
+ category: ControlCategory;
7
+ section?: string | null;
8
+ order?: number | null;
9
+ /** A combined movement label shared by the two directions of a continuum. */
10
+ controlLabel?: string | null;
4
11
  faceArea?: string | null;
5
12
  facePart?: string | null;
6
13
  negativeAuId?: number | null;
@@ -22,6 +29,8 @@ export interface AUDescriptor {
22
29
  availableSides: Array<'left' | 'right' | 'center'>;
23
30
  hasBones: boolean;
24
31
  hasMorphs: boolean;
32
+ hasConfiguredBones: boolean;
33
+ hasConfiguredMorphs: boolean;
25
34
  available: boolean;
26
35
  diagnostics: string[];
27
36
  }
@@ -794,10 +794,139 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
794
794
 
795
795
  export interface InitOutput {
796
796
  readonly memory: WebAssembly.Memory;
797
- readonly __wbg_runtimecore_free: (a: number, b: number) => void;
797
+ readonly analyze_model_descriptor: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number, number];
798
+ readonly decode_legacy_animation: (a: number, b: number, c: number, d: number) => [number, number, number, number];
799
+ readonly decode_legacy_pose: (a: number, b: number, c: number, d: number) => [number, number, number, number];
800
+ readonly decode_vrma_animation: (a: number, b: number) => [number, number, number, number];
801
+ readonly encode_vrma_animation: (a: number, b: number) => [number, number, number, number];
802
+ readonly extract_model_data_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
803
+ readonly normalize_mixamo_animation: (a: number, b: number) => [number, number, number, number];
804
+ readonly retarget_vrma_animation: (a: number, b: number, c: number, d: number) => [number, number, number, number];
805
+ readonly default_hair_color_appearance_json: () => [number, number, number, number];
806
+ readonly hair_color_presets_json: () => [number, number, number, number];
807
+ readonly normalize_hair_color_appearance_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
808
+ readonly embody_request: (a: number, b: number) => [number, number, number, number];
809
+ readonly solve_axis_quaternion: (a: number, b: number, c: number, d: number) => [number, number];
810
+ readonly solve_bilateral_values: (a: number, b: number) => [number, number];
811
+ readonly solve_morph_batch: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
812
+ readonly validate_generated_template_fit_metadata: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
813
+ readonly build_hair_gravity_curves: (a: number, b: number) => [number, number, number, number];
814
+ readonly build_hair_idle_curves: (a: number, b: number, c: number) => [number, number, number, number];
815
+ readonly build_hair_impulse_curves: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
816
+ readonly compile_clip: (a: number, b: number) => [number, number, number, number];
817
+ readonly compile_clip_curves: (a: number, b: number) => [number, number, number, number];
818
+ readonly compute_humanoid_skeleton_template_rest_bounds: (a: number, b: number) => [number, number, number, number];
819
+ readonly create_validation_skeleton_json: (a: number, b: number) => [number, number, number, number];
820
+ readonly extract_humanoid_skeleton_template_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
821
+ readonly get_humanoid_skeleton_template_json: (a: number, b: number) => [number, number, number, number];
822
+ readonly get_preset_json: (a: number, b: number) => [number, number, number, number];
823
+ readonly has_preset: (a: number, b: number) => number;
824
+ readonly humanoid_skeleton_template_bone_names: (a: number, b: number) => [number, number, number, number];
825
+ readonly list_humanoid_skeleton_templates_json: () => [number, number, number, number];
826
+ readonly list_presets: () => [number, number];
827
+ readonly marker_endpoint_stride: () => number;
828
+ readonly marker_visibility_animation_factors: (a: number, b: number) => [number, number];
829
+ readonly merge_embedded_preset: (a: number, b: number, c: number, d: number) => [number, number, number, number];
830
+ readonly merge_preset_profile: (a: number, b: number, c: number, d: number) => [number, number, number, number];
831
+ readonly passes_marker_camera_angle_gate: (a: number, b: number, c: number) => number;
832
+ readonly resolve_embedded_profile_view: (a: number, b: number, c: number, d: number) => [number, number, number, number];
833
+ readonly resolve_profile_view: (a: number, b: number) => [number, number, number, number];
834
+ readonly resolve_viewport_constrained_line_scale: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
835
+ readonly resolve_viewport_safe_bounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
836
+ readonly sample_marker_arc_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
837
+ readonly sample_marker_bezier_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
838
+ readonly separate_overlapping_marker_endpoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
839
+ readonly should_show_marker: (a: number, b: number, c: number, d: number) => number;
840
+ readonly validate_humanoid_characterization: (a: number, b: number, c: number, d: number) => [number, number, number, number];
841
+ readonly validate_profile_model: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
842
+ readonly marker_visibility_factors_stride: () => number;
843
+ readonly __wbg_nativeplaybacksession_free: (a: number, b: number) => void;
844
+ readonly nativeplaybacksession_control: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
845
+ readonly nativeplaybacksession_dispose: (a: number) => [number, number, number, number];
846
+ readonly nativeplaybacksession_new: () => [number, number, number];
847
+ readonly nativeplaybacksession_notify: (a: number, b: number, c: number) => [number, number, number, number];
848
+ readonly nativeplaybacksession_play: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
849
+ readonly nativeplaybacksession_rebind: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
850
+ readonly nativeplaybacksession_replace_clip: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
851
+ readonly __wbg_annotationlifecycle_free: (a: number, b: number) => void;
852
+ readonly __wbg_hairphysicssolver_free: (a: number, b: number) => void;
853
+ readonly annotationlifecycle_command: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
854
+ readonly annotationlifecycle_deadline: (a: number) => [number, number];
855
+ readonly annotationlifecycle_is_active: (a: number) => number;
856
+ readonly annotationlifecycle_new: (a: number, b: number, c: number) => number;
857
+ readonly compose_template_skeleton_fit_transform: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
858
+ readonly default_hair_physics_config_values: () => [number, number];
859
+ readonly hair_config_stride: () => number;
860
+ readonly hair_head_state_stride: () => number;
861
+ readonly hair_morph_output_stride: () => number;
862
+ readonly hair_state_stride: () => number;
863
+ readonly hairphysicssolver_get_config: (a: number) => [number, number];
864
+ readonly hairphysicssolver_get_state: (a: number) => [number, number];
865
+ readonly hairphysicssolver_new: (a: number, b: number) => number;
866
+ readonly hairphysicssolver_reset: (a: number) => void;
867
+ readonly hairphysicssolver_set_config: (a: number, b: number, c: number) => void;
868
+ readonly hairphysicssolver_update: (a: number, b: number, c: number, d: number) => [number, number];
869
+ readonly template_skeleton_fit_transform_stride: () => number;
870
+ readonly __wbg_annotationruntime_free: (a: number, b: number) => void;
871
+ readonly __wbg_cameraflight_free: (a: number, b: number) => void;
872
+ readonly __wbg_cameraorbit_free: (a: number, b: number) => void;
798
873
  readonly analyze_mesh_proportions: (a: number, b: number, c: number) => [number, number];
874
+ readonly annotation_bone_vertices: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
875
+ readonly annotation_camera_framing_stride: () => number;
876
+ readonly annotation_marker_frame_stride: () => number;
877
+ readonly annotation_morph_anchor_candidates: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
878
+ readonly annotation_morph_candidates: (a: number, b: number, c: number, d: number, e: number) => [number, number];
879
+ readonly annotation_morph_center: (a: number, b: number, c: number, d: number) => [number, number, number, number];
880
+ readonly annotation_point_bounds: (a: number, b: number) => [number, number];
881
+ readonly annotation_query: (a: number, b: number, c: number, d: number) => [number, number, number, number];
882
+ readonly annotation_weighted_anchor: (a: number, b: number) => [number, number];
883
+ readonly annotationruntime_camera_frame: (a: number, b: number, c: number, d: number) => [number, number];
884
+ readonly annotationruntime_command: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
885
+ readonly annotationruntime_completed_camera_request: (a: number) => number;
886
+ readonly annotationruntime_dispose: (a: number) => void;
887
+ readonly annotationruntime_finish_markers: (a: number, b: number) => void;
888
+ readonly annotationruntime_generation: (a: number) => number;
889
+ readonly annotationruntime_is_current: (a: number, b: number) => number;
890
+ readonly annotationruntime_label_metrics: (a: number, b: number, c: number, d: number) => void;
891
+ readonly annotationruntime_marker_frame: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
892
+ readonly annotationruntime_needs_frame: (a: number) => number;
893
+ readonly annotationruntime_new: (a: number, b: number) => [number, number, number];
894
+ readonly annotationruntime_observe_model: (a: number, b: number, c: number) => [number, number];
895
+ readonly annotationruntime_observe_morph_anchor: (a: number, b: number, c: number, d: number, e: number) => number;
896
+ readonly annotationruntime_observe_morph_geometry: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
897
+ readonly annotationruntime_observe_occlusion: (a: number, b: number, c: number) => void;
898
+ readonly annotationruntime_observe_transforms: (a: number, b: number, c: number) => void;
899
+ readonly annotationruntime_occlusion_queries: (a: number) => [number, number];
900
+ readonly annotationruntime_plan_markers: (a: number, b: number, c: number) => [number, number, number, number];
901
+ readonly annotationruntime_prepare_morph_anchor: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
902
+ readonly annotationruntime_revision: (a: number) => number;
903
+ readonly annotationruntime_set_model: (a: number, b: number, c: number) => [number, number];
904
+ readonly annotationruntime_snapshot: (a: number) => [number, number];
905
+ readonly annotationruntime_surface_result: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
906
+ readonly annotationruntime_tracked_objects: (a: number) => [number, number];
907
+ readonly cameraflight_duration_ms: (a: number) => number;
908
+ readonly cameraflight_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
909
+ readonly cameraflight_sample: (a: number, b: number) => [number, number];
910
+ readonly cameraorbit_duration_ms: (a: number) => number;
911
+ readonly cameraorbit_new: (a: number, b: number, c: number, d: number, e: number) => number;
912
+ readonly cameraorbit_sample: (a: number, b: number) => [number, number];
799
913
  readonly compose_template_fit_adjustment: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
914
+ readonly focus_padding_factor: (a: number, b: number, c: number, d: number) => number;
800
915
  readonly mesh_proportions_stride: () => number;
916
+ readonly normalize_camera_angle_degrees: (a: number) => number;
917
+ readonly resolve_auto_closeup_angle: (a: number, b: number, c: number, d: number, e: number) => number;
918
+ readonly resolve_focus_camera_direction: (a: number, b: number, c: number, d: number, e: number) => [number, number];
919
+ 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];
920
+ 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];
921
+ readonly solve_template_skeleton_fit: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
922
+ readonly template_skeleton_fit_solution_stride: () => number;
923
+ readonly world_direction_for_camera_angle: (a: number, b: number, c: number) => [number, number];
924
+ readonly camera_flight_sample_stride: () => number;
925
+ readonly __wbg_runtimecore_free: (a: number, b: number) => void;
926
+ readonly core_abi_version: () => number;
927
+ readonly pack_morph_frame_delta: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
928
+ readonly packed_bone_frame_delta_stride: () => number;
929
+ readonly packed_morph_frame_delta_stride: () => number;
801
930
  readonly runtimecore_add_hair_response_impulse: (a: number, b: number, c: number) => [number, number];
802
931
  readonly runtimecore_advance_mesh_highlight: (a: number, b: number) => [number, number, number, number];
803
932
  readonly runtimecore_au_morph_binding_stride: () => number;
@@ -870,138 +999,9 @@ export interface InitOutput {
870
999
  readonly runtimecore_set_viseme: (a: number, b: number, c: number) => void;
871
1000
  readonly runtimecore_set_viseme_jaw_scale: (a: number, b: number, c: number) => void;
872
1001
  readonly runtimecore_set_viseme_slot_count: (a: number, b: number) => void;
873
- readonly runtimecore_viseme_morph_binding_stride: () => number;
874
1002
  readonly runtimecore_viseme_slot_index: (a: number, b: number, c: number) => number;
875
- readonly solve_template_skeleton_fit: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
876
- readonly template_skeleton_fit_solution_stride: () => number;
1003
+ readonly runtimecore_viseme_morph_binding_stride: () => number;
877
1004
  readonly runtimecore_remove_animation_clip: (a: number, b: number, c: number) => number;
878
- readonly compose_template_skeleton_fit_transform: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
879
- readonly marker_endpoint_stride: () => number;
880
- readonly marker_visibility_animation_factors: (a: number, b: number) => [number, number];
881
- readonly passes_marker_camera_angle_gate: (a: number, b: number, c: number) => number;
882
- readonly resolve_viewport_constrained_line_scale: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
883
- readonly resolve_viewport_safe_bounds: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
884
- readonly sample_marker_arc_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
885
- readonly sample_marker_bezier_curve: (a: number, b: number, c: number, d: number, e: number) => [number, number];
886
- readonly separate_overlapping_marker_endpoints: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number];
887
- readonly should_show_marker: (a: number, b: number, c: number, d: number) => number;
888
- readonly template_skeleton_fit_transform_stride: () => number;
889
- readonly marker_visibility_factors_stride: () => number;
890
- readonly analyze_model_descriptor: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number, number];
891
- readonly extract_model_data_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
892
- readonly __wbg_nativeplaybacksession_free: (a: number, b: number) => void;
893
- readonly nativeplaybacksession_control: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
894
- readonly nativeplaybacksession_dispose: (a: number) => [number, number, number, number];
895
- readonly nativeplaybacksession_new: () => [number, number, number];
896
- readonly nativeplaybacksession_notify: (a: number, b: number, c: number) => [number, number, number, number];
897
- readonly nativeplaybacksession_play: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
898
- readonly nativeplaybacksession_rebind: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
899
- readonly nativeplaybacksession_replace_clip: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
900
- readonly build_hair_gravity_curves: (a: number, b: number) => [number, number, number, number];
901
- readonly build_hair_idle_curves: (a: number, b: number, c: number) => [number, number, number, number];
902
- readonly build_hair_impulse_curves: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
903
- readonly compile_clip: (a: number, b: number) => [number, number, number, number];
904
- readonly compile_clip_curves: (a: number, b: number) => [number, number, number, number];
905
- readonly compute_humanoid_skeleton_template_rest_bounds: (a: number, b: number) => [number, number, number, number];
906
- readonly create_validation_skeleton_json: (a: number, b: number) => [number, number, number, number];
907
- readonly extract_humanoid_skeleton_template_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
908
- readonly get_humanoid_skeleton_template_json: (a: number, b: number) => [number, number, number, number];
909
- readonly get_preset_json: (a: number, b: number) => [number, number, number, number];
910
- readonly has_preset: (a: number, b: number) => number;
911
- readonly humanoid_skeleton_template_bone_names: (a: number, b: number) => [number, number, number, number];
912
- readonly list_humanoid_skeleton_templates_json: () => [number, number, number, number];
913
- readonly list_presets: () => [number, number];
914
- readonly merge_embedded_preset: (a: number, b: number, c: number, d: number) => [number, number, number, number];
915
- readonly merge_preset_profile: (a: number, b: number, c: number, d: number) => [number, number, number, number];
916
- readonly resolve_embedded_profile_view: (a: number, b: number, c: number, d: number) => [number, number, number, number];
917
- readonly resolve_profile_view: (a: number, b: number) => [number, number, number, number];
918
- readonly validate_humanoid_characterization: (a: number, b: number, c: number, d: number) => [number, number, number, number];
919
- readonly validate_profile_model: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
920
- readonly __wbg_annotationlifecycle_free: (a: number, b: number) => void;
921
- readonly __wbg_cameraflight_free: (a: number, b: number) => void;
922
- readonly __wbg_cameraorbit_free: (a: number, b: number) => void;
923
- readonly __wbg_hairphysicssolver_free: (a: number, b: number) => void;
924
- readonly annotation_camera_framing_stride: () => number;
925
- readonly annotationlifecycle_command: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
926
- readonly annotationlifecycle_deadline: (a: number) => [number, number];
927
- readonly annotationlifecycle_is_active: (a: number) => number;
928
- readonly annotationlifecycle_new: (a: number, b: number, c: number) => number;
929
- readonly cameraflight_duration_ms: (a: number) => number;
930
- readonly cameraflight_new: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
931
- readonly cameraflight_sample: (a: number, b: number) => [number, number];
932
- readonly cameraorbit_duration_ms: (a: number) => number;
933
- readonly cameraorbit_new: (a: number, b: number, c: number, d: number, e: number) => number;
934
- readonly cameraorbit_sample: (a: number, b: number) => [number, number];
935
- readonly default_hair_physics_config_values: () => [number, number];
936
- readonly focus_padding_factor: (a: number, b: number, c: number, d: number) => number;
937
- readonly hair_config_stride: () => number;
938
- readonly hair_head_state_stride: () => number;
939
- readonly hair_morph_output_stride: () => number;
940
- readonly hair_state_stride: () => number;
941
- readonly hairphysicssolver_get_config: (a: number) => [number, number];
942
- readonly hairphysicssolver_get_state: (a: number) => [number, number];
943
- readonly hairphysicssolver_new: (a: number, b: number) => number;
944
- readonly hairphysicssolver_reset: (a: number) => void;
945
- readonly hairphysicssolver_set_config: (a: number, b: number, c: number) => void;
946
- readonly hairphysicssolver_update: (a: number, b: number, c: number, d: number) => [number, number];
947
- readonly normalize_camera_angle_degrees: (a: number) => number;
948
- readonly resolve_auto_closeup_angle: (a: number, b: number, c: number, d: number, e: number) => number;
949
- readonly resolve_focus_camera_direction: (a: number, b: number, c: number, d: number, e: number) => [number, number];
950
- 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];
951
- 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];
952
- readonly world_direction_for_camera_angle: (a: number, b: number, c: number) => [number, number];
953
- readonly camera_flight_sample_stride: () => number;
954
- readonly default_hair_color_appearance_json: () => [number, number, number, number];
955
- readonly hair_color_presets_json: () => [number, number, number, number];
956
- readonly normalize_hair_color_appearance_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
957
- readonly decode_legacy_animation: (a: number, b: number, c: number, d: number) => [number, number, number, number];
958
- readonly decode_legacy_pose: (a: number, b: number, c: number, d: number) => [number, number, number, number];
959
- readonly decode_vrma_animation: (a: number, b: number) => [number, number, number, number];
960
- readonly encode_vrma_animation: (a: number, b: number) => [number, number, number, number];
961
- readonly normalize_mixamo_animation: (a: number, b: number) => [number, number, number, number];
962
- readonly retarget_vrma_animation: (a: number, b: number, c: number, d: number) => [number, number, number, number];
963
- readonly __wbg_annotationruntime_free: (a: number, b: number) => void;
964
- readonly annotation_bone_vertices: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
965
- readonly annotation_marker_frame_stride: () => number;
966
- readonly annotation_morph_anchor_candidates: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => [number, number, number, number];
967
- readonly annotation_morph_candidates: (a: number, b: number, c: number, d: number, e: number) => [number, number];
968
- readonly annotation_morph_center: (a: number, b: number, c: number, d: number) => [number, number, number, number];
969
- readonly annotation_point_bounds: (a: number, b: number) => [number, number];
970
- readonly annotation_query: (a: number, b: number, c: number, d: number) => [number, number, number, number];
971
- readonly annotation_weighted_anchor: (a: number, b: number) => [number, number];
972
- readonly annotationruntime_camera_frame: (a: number, b: number, c: number, d: number) => [number, number];
973
- readonly annotationruntime_command: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
974
- readonly annotationruntime_completed_camera_request: (a: number) => number;
975
- readonly annotationruntime_dispose: (a: number) => void;
976
- readonly annotationruntime_finish_markers: (a: number, b: number) => void;
977
- readonly annotationruntime_generation: (a: number) => number;
978
- readonly annotationruntime_is_current: (a: number, b: number) => number;
979
- readonly annotationruntime_label_metrics: (a: number, b: number, c: number, d: number) => void;
980
- readonly annotationruntime_marker_frame: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
981
- readonly annotationruntime_needs_frame: (a: number) => number;
982
- readonly annotationruntime_new: (a: number, b: number) => [number, number, number];
983
- readonly annotationruntime_observe_model: (a: number, b: number, c: number) => [number, number];
984
- readonly annotationruntime_observe_morph_anchor: (a: number, b: number, c: number, d: number, e: number) => number;
985
- readonly annotationruntime_observe_morph_geometry: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
986
- readonly annotationruntime_observe_occlusion: (a: number, b: number, c: number) => void;
987
- readonly annotationruntime_observe_transforms: (a: number, b: number, c: number) => void;
988
- readonly annotationruntime_occlusion_queries: (a: number) => [number, number];
989
- readonly annotationruntime_plan_markers: (a: number, b: number, c: number) => [number, number, number, number];
990
- readonly annotationruntime_prepare_morph_anchor: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
991
- readonly annotationruntime_revision: (a: number) => number;
992
- readonly annotationruntime_set_model: (a: number, b: number, c: number) => [number, number];
993
- readonly annotationruntime_snapshot: (a: number) => [number, number];
994
- readonly annotationruntime_surface_result: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
995
- readonly annotationruntime_tracked_objects: (a: number) => [number, number];
996
- readonly core_abi_version: () => number;
997
- readonly pack_morph_frame_delta: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
998
- readonly packed_bone_frame_delta_stride: () => number;
999
- readonly packed_morph_frame_delta_stride: () => number;
1000
- readonly solve_axis_quaternion: (a: number, b: number, c: number, d: number) => [number, number];
1001
- readonly solve_bilateral_values: (a: number, b: number) => [number, number];
1002
- readonly solve_morph_batch: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
1003
- readonly validate_generated_template_fit_metadata: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
1004
- readonly embody_request: (a: number, b: number) => [number, number, number, number];
1005
1005
  readonly __wbindgen_externrefs: WebAssembly.Table;
1006
1006
  readonly __wbindgen_malloc: (a: number, b: number) => number;
1007
1007
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
Binary file