@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/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.
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import * as THREE3 from 'three';
|
|
|
2
2
|
import { NoBlending, MultiplyBlending, SubtractiveBlending, AdditiveBlending, NormalBlending, Vector3, Box3, Timer, Matrix4, AnimationMixer, AdditiveAnimationBlendMode, NormalAnimationBlendMode, LoopOnce, LoopRepeat, LoopPingPong, PropertyBinding, Euler, Quaternion, AnimationUtils, InterpolateDiscrete, InterpolateLinear, MathUtils, Mesh, PlaneGeometry, ShadowMaterial, HemisphereLight, DirectionalLight, SRGBColorSpace, ACESFilmicToneMapping, WebGLRenderer, Scene, Color, PerspectiveCamera, PCFShadowMap, PCFSoftShadowMap, NumberKeyframeTrack, QuaternionKeyframeTrack, VectorKeyframeTrack, AnimationClip, PMREMGenerator, FloatType, Float32BufferAttribute, BufferAttribute, WebGPUCoordinateSystem, WebGLCoordinateSystem } from 'three';
|
|
3
3
|
import { CC4_HUMANOID_SKELETON_TEMPLATE, HUMANOID_SKELETON_TEMPLATES, DEFAULT_HAIR_COLOR_APPEARANCE, initEmbodyCore, requireInitializedEmbodyCore } from '@lovelace_lol/embody/wasm';
|
|
4
4
|
export * from '@lovelace_lol/embody/wasm';
|
|
5
|
-
export { CC4_HUMANOID_SKELETON_TEMPLATE, DEFAULT_AXIS_TO_CHANNEL, DEFAULT_BONE_MAX_DEGREES, DEFAULT_HAIR_COLOR_APPEARANCE, HAIR_COLOR_PRESETS, HUMANOID_SKELETON_TEMPLATES, JOINT_CONTROL_SECTION, VISEME_KEYS } from '@lovelace_lol/embody/wasm';
|
|
5
|
+
export { CC4_HUMANOID_SKELETON_TEMPLATE, DEFAULT_AXIS_TO_CHANNEL, DEFAULT_BONE_MAX_DEGREES, DEFAULT_HAIR_COLOR_APPEARANCE, HAIR_COLOR_PRESETS, HUMANOID_SKELETON_TEMPLATES, JOINT_CONTROL_SECTION, LEGACY_BODY_CONTROL_AUS, VISEME_KEYS, getAUDescriptors } from '@lovelace_lol/embody/wasm';
|
|
6
6
|
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
|
|
7
7
|
import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader.js';
|
|
8
8
|
import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js';
|
|
@@ -1207,6 +1207,7 @@ var DPthree3DMarkers = class {
|
|
|
1207
1207
|
// Calculated from model size - collapse expanded regions when zoomed out
|
|
1208
1208
|
__publicField(this, "lastCameraDistance", -1);
|
|
1209
1209
|
// Cache to avoid unnecessary checks
|
|
1210
|
+
__publicField(this, "markerLayoutDirty", false);
|
|
1210
1211
|
__publicField(this, "visibilityAnimationActive", false);
|
|
1211
1212
|
__publicField(this, "visibilityAnimationScheduler", new AnimationFrameTaskScheduler());
|
|
1212
1213
|
__publicField(this, "visibilityAnimationStates", []);
|
|
@@ -1370,6 +1371,8 @@ var DPthree3DMarkers = class {
|
|
|
1370
1371
|
return;
|
|
1371
1372
|
}
|
|
1372
1373
|
this.separateOverlappingMarkers(annotationCameraCore);
|
|
1374
|
+
this.markerLayoutDirty = true;
|
|
1375
|
+
this.update();
|
|
1373
1376
|
console.log(`[3DMarkers] loadRegions complete. Created markers for:`, Array.from(this.markerMeshes.keys()));
|
|
1374
1377
|
console.log(`[3DMarkers] lineEndpoints:`, Array.from(this.lineEndpoints.keys()));
|
|
1375
1378
|
console.log(`[3DMarkers] resolvedStyles:`, Array.from(this.resolvedStyles.keys()));
|
|
@@ -1841,6 +1844,12 @@ var DPthree3DMarkers = class {
|
|
|
1841
1844
|
this.markerTargetVisibility.set(region.name, !startHidden && !region.isFallback);
|
|
1842
1845
|
this.markerAngleGateVisibility.delete(region.name);
|
|
1843
1846
|
this.markerViewportVisibility.set(region.name, true);
|
|
1847
|
+
this.markerLayoutDirty = true;
|
|
1848
|
+
if (this.visibilityAnimationActive) {
|
|
1849
|
+
this.setMarkerObjectsVisible(region.name, false, false);
|
|
1850
|
+
} else {
|
|
1851
|
+
this.update();
|
|
1852
|
+
}
|
|
1844
1853
|
}
|
|
1845
1854
|
/**
|
|
1846
1855
|
* Embody Rust owns endpoint layout; the Three adapter applies the returned positions
|
|
@@ -2456,7 +2465,7 @@ var DPthree3DMarkers = class {
|
|
|
2456
2465
|
const dy = this.camera.position.y - this.modelCenter.y;
|
|
2457
2466
|
const dz = this.camera.position.z - this.modelCenter.z;
|
|
2458
2467
|
const cameraDistance = Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
2459
|
-
const distanceChanged = this.lastCameraDistance < 0 || Math.abs(cameraDistance - this.lastCameraDistance) > this.lastCameraDistance * 0.02;
|
|
2468
|
+
const distanceChanged = this.markerLayoutDirty || this.lastCameraDistance < 0 || Math.abs(cameraDistance - this.lastCameraDistance) > this.lastCameraDistance * 0.02;
|
|
2460
2469
|
if (distanceChanged) {
|
|
2461
2470
|
const previousDistance = this.lastCameraDistance;
|
|
2462
2471
|
this.lastCameraDistance = cameraDistance;
|
|
@@ -2467,22 +2476,27 @@ var DPthree3DMarkers = class {
|
|
|
2467
2476
|
sphere.scale.setScalar(clampedScale);
|
|
2468
2477
|
}
|
|
2469
2478
|
const shouldBeZoomedIn = cameraDistance < this.zoomThreshold;
|
|
2470
|
-
|
|
2479
|
+
const zoomChanged = shouldBeZoomedIn !== this.isZoomedIn;
|
|
2480
|
+
if (this.markerLayoutDirty || zoomChanged) {
|
|
2471
2481
|
this.isZoomedIn = shouldBeZoomedIn;
|
|
2472
|
-
this.applyZoomScale(
|
|
2482
|
+
this.applyZoomScale(
|
|
2483
|
+
shouldBeZoomedIn ? ZOOMED_IN_LINE_SCALE : 1,
|
|
2484
|
+
zoomChanged || shouldBeZoomedIn
|
|
2485
|
+
);
|
|
2473
2486
|
}
|
|
2474
2487
|
const crossedAutoCollapseThreshold = previousDistance >= 0 && previousDistance <= this.autoCollapseThreshold && cameraDistance > this.autoCollapseThreshold;
|
|
2475
2488
|
if (crossedAutoCollapseThreshold) {
|
|
2476
2489
|
this.collapseAllRegions();
|
|
2477
2490
|
}
|
|
2478
2491
|
}
|
|
2479
|
-
const cameraMoved = !this.hasCameraAngleUpdateSnapshot || this.lastCameraAngleUpdatePosition.distanceToSquared(this.camera.position) > 1e-4 || 1 - Math.abs(this.lastCameraAngleUpdateQuaternion.dot(this.camera.quaternion)) > 1e-5;
|
|
2492
|
+
const cameraMoved = this.markerLayoutDirty || !this.hasCameraAngleUpdateSnapshot || this.lastCameraAngleUpdatePosition.distanceToSquared(this.camera.position) > 1e-4 || 1 - Math.abs(this.lastCameraAngleUpdateQuaternion.dot(this.camera.quaternion)) > 1e-5;
|
|
2480
2493
|
if (!cameraMoved) {
|
|
2481
2494
|
return;
|
|
2482
2495
|
}
|
|
2483
2496
|
this.lastCameraAngleUpdatePosition.copy(this.camera.position);
|
|
2484
2497
|
this.lastCameraAngleUpdateQuaternion.copy(this.camera.quaternion);
|
|
2485
2498
|
this.hasCameraAngleUpdateSnapshot = true;
|
|
2499
|
+
this.markerLayoutDirty = false;
|
|
2486
2500
|
const cameraAngle = getModelLocalOrbitAngle(this.model, this.modelCenter, this.camera.position);
|
|
2487
2501
|
for (const [name, sphere] of this.markerMeshes) {
|
|
2488
2502
|
const markerAngle = sphere.userData.cameraAngle;
|
|
@@ -2520,14 +2534,16 @@ var DPthree3DMarkers = class {
|
|
|
2520
2534
|
}
|
|
2521
2535
|
/**
|
|
2522
2536
|
* Apply zoom-based scaling to all markers, lines, and labels.
|
|
2523
|
-
*
|
|
2537
|
+
* Runs on zoom threshold crossings and when marker geometry changes.
|
|
2524
2538
|
*/
|
|
2525
|
-
applyZoomScale(scaleFactor) {
|
|
2539
|
+
applyZoomScale(scaleFactor, scaleSpheres = true) {
|
|
2526
2540
|
const isZoomed = scaleFactor < 1;
|
|
2527
2541
|
const sphereScaleFactor = isZoomed ? ZOOMED_IN_SPHERE_SCALE : 1;
|
|
2528
2542
|
const labelScaleFactor = isZoomed ? ZOOMED_IN_LABEL_SCALE : 1;
|
|
2529
|
-
|
|
2530
|
-
sphere.
|
|
2543
|
+
if (scaleSpheres) {
|
|
2544
|
+
for (const sphere of this.markerMeshes.values()) {
|
|
2545
|
+
sphere.scale.setScalar(sphereScaleFactor);
|
|
2546
|
+
}
|
|
2531
2547
|
}
|
|
2532
2548
|
for (const line of this.lineMeshes.values()) {
|
|
2533
2549
|
const material = line.material;
|
|
@@ -2631,6 +2647,10 @@ var DPthree3DMarkers = class {
|
|
|
2631
2647
|
object.visible = true;
|
|
2632
2648
|
this.setObjectOpacity(object, opacity * itemOpacityFactor);
|
|
2633
2649
|
}
|
|
2650
|
+
const name = state.label?.object.userData.annotation;
|
|
2651
|
+
if (typeof name === "string" && !this.updateMarkerLineLayout(name)) {
|
|
2652
|
+
this.setMarkerObjectsVisible(name, false, false);
|
|
2653
|
+
}
|
|
2634
2654
|
}
|
|
2635
2655
|
}
|
|
2636
2656
|
restoreVisibilityAnimationStates(states) {
|
|
@@ -2816,6 +2836,8 @@ var DPthree3DMarkers = class {
|
|
|
2816
2836
|
this.stopVisibilityAnimation(true);
|
|
2817
2837
|
if (visible) {
|
|
2818
2838
|
this.markerGroup.visible = true;
|
|
2839
|
+
this.markerLayoutDirty = true;
|
|
2840
|
+
this.update();
|
|
2819
2841
|
}
|
|
2820
2842
|
this.visibilityAnimationStates = this.captureVisibilityAnimationStates();
|
|
2821
2843
|
if (this.visibilityAnimationStates.length === 0) {
|
|
@@ -2878,6 +2900,7 @@ var DPthree3DMarkers = class {
|
|
|
2878
2900
|
this.markerAngleGateVisibility.clear();
|
|
2879
2901
|
this.markerViewportVisibility.clear();
|
|
2880
2902
|
this.soloedMarker = null;
|
|
2903
|
+
this.markerLayoutDirty = false;
|
|
2881
2904
|
this.hasCameraAngleUpdateSnapshot = false;
|
|
2882
2905
|
}
|
|
2883
2906
|
// ============ SOLO MODE ============
|
|
@@ -6560,9 +6583,6 @@ var resolveContinuumDisplayLabel = (profile, negativeAuId, positiveAuId) => requ
|
|
|
6560
6583
|
function inspectModel(model, meshes, profile) {
|
|
6561
6584
|
return new ThreeModelInspector().inspectModel(model, { meshes, profile });
|
|
6562
6585
|
}
|
|
6563
|
-
function getBodyControls(profile, model) {
|
|
6564
|
-
return request2("profile.getBodyControls", { profile, ...model ? { model: inspectModel(model, void 0, profile).descriptor } : {} });
|
|
6565
|
-
}
|
|
6566
6586
|
function extractModelData(model, meshes, animations = []) {
|
|
6567
6587
|
const inspection = inspectModel(model, meshes);
|
|
6568
6588
|
return JSON.parse(requireInitializedEmbodyCore().extract_model_data_json(json(inspection.descriptor), json(serializeAnimationClips(model, animations, inspection))));
|
|
@@ -7414,12 +7434,10 @@ var Embody = class _Embody {
|
|
|
7414
7434
|
return parse(this.core.build_clip(source.name, json2(source.input), json2(buildOptions)));
|
|
7415
7435
|
case "typed":
|
|
7416
7436
|
return parse(this.core.build_typed_clip(source.name, json2(source.input), json2(buildOptions)));
|
|
7417
|
-
case "semantic":
|
|
7418
|
-
return parse(this.core.build_semantic_clip(source.name, json2(source.input), json2(buildOptions)));
|
|
7419
7437
|
case "compiled":
|
|
7420
7438
|
return source.clip;
|
|
7421
7439
|
case "native":
|
|
7422
|
-
throw new Error("Native animation sources do not require
|
|
7440
|
+
throw new Error("Native animation sources do not require AU compilation.");
|
|
7423
7441
|
}
|
|
7424
7442
|
}
|
|
7425
7443
|
restValues(track) {
|
|
@@ -7858,7 +7876,8 @@ var Embody = class _Embody {
|
|
|
7858
7876
|
return this.handle(source, options, play);
|
|
7859
7877
|
}
|
|
7860
7878
|
buildClip(name, curves, options = {}) {
|
|
7861
|
-
|
|
7879
|
+
if (options.semanticAnimation) throw new Error("Decode legacy named animation tracks to numeric AU curves before building a clip.");
|
|
7880
|
+
return this.build({ name, kind: "curves", input: copy(curves), options: copy(options) }, options, false);
|
|
7862
7881
|
}
|
|
7863
7882
|
snippetToClip(name, curves, options = {}) {
|
|
7864
7883
|
return this.buildClip(name, curves, options);
|
|
@@ -7869,9 +7888,6 @@ var Embody = class _Embody {
|
|
|
7869
7888
|
typedSnippetToClip(name, channels, options = {}) {
|
|
7870
7889
|
return this.buildTypedClip(name, channels, options);
|
|
7871
7890
|
}
|
|
7872
|
-
semanticAnimationToClip(name, animation, options = {}) {
|
|
7873
|
-
return this.build({ name, kind: "semantic", input: copy(animation), options: copy(options) }, options, false);
|
|
7874
|
-
}
|
|
7875
7891
|
playSnippet(snippet, curvesOrOptions = {}, options = {}) {
|
|
7876
7892
|
return typeof snippet === "string" ? this.buildClip(snippet, curvesOrOptions, options).play() : this.buildClip(snippet.name, snippet.curves, curvesOrOptions).play();
|
|
7877
7893
|
}
|
|
@@ -8081,26 +8097,8 @@ var Embody = class _Embody {
|
|
|
8081
8097
|
getAUBalance(id) {
|
|
8082
8098
|
return this.core.get_au_balance(id);
|
|
8083
8099
|
}
|
|
8084
|
-
|
|
8085
|
-
return parse(this.core.
|
|
8086
|
-
}
|
|
8087
|
-
getSemanticPoseCatalog() {
|
|
8088
|
-
return parse(this.core.get_semantic_pose_catalog_json());
|
|
8089
|
-
}
|
|
8090
|
-
captureSemanticPose() {
|
|
8091
|
-
return parse(this.core.capture_semantic_pose_json());
|
|
8092
|
-
}
|
|
8093
|
-
validateSemanticPose(pose) {
|
|
8094
|
-
return parse(this.core.validate_semantic_pose_json(json2(pose)));
|
|
8095
|
-
}
|
|
8096
|
-
applySemanticPose(pose) {
|
|
8097
|
-
this.mutateLive(() => this.core.apply_semantic_pose_json(json2(pose)));
|
|
8098
|
-
}
|
|
8099
|
-
validateSemanticAnimation(animation, options = {}) {
|
|
8100
|
-
this.core.validate_semantic_animation_json(json2(animation), json2(options));
|
|
8101
|
-
}
|
|
8102
|
-
resetBodyControls() {
|
|
8103
|
-
this.mutateLive(() => this.core.reset_body_controls());
|
|
8100
|
+
getAUDescriptors() {
|
|
8101
|
+
return parse(this.core.get_au_descriptors_json());
|
|
8104
8102
|
}
|
|
8105
8103
|
setContinuum(negative, positive, value, balance = NaN) {
|
|
8106
8104
|
this.mutateLive(() => this.core.set_continuum(negative, positive, value, balance));
|
|
@@ -9961,6 +9959,6 @@ var collectMorphMeshes = (root) => {
|
|
|
9961
9959
|
return meshes;
|
|
9962
9960
|
};
|
|
9963
9961
|
|
|
9964
|
-
export { BLENDING_MODES, CHARACTER_SCENE_TYPES, CHARACTER_SCENE_TYPE_IDS, DPthreeCameraController as CameraController, CameraDOMControls, CameraDOMControls as Controls, DEFAULT_CHARACTER_LIGHTING_PRESETS, DEFAULT_CHARACTER_LIGHTING_PRESET_ID, DEFAULT_CHARACTER_LIGHTING_PRESET_IDS, DEFAULT_CHARACTER_LIGHTING_SETTINGS, DEFAULT_CHARACTER_SCENE_TYPE_ID, DEFAULT_MARKER_AUTO_HIDE_MS, DEFAULT_PREVIEW_AUTO_CLEAR_MS, DPthree, DPthree3DMarkers, DPthreeCameraController, DPthreeHTMLMarkers, DPthreeMarkers, Embody, DPthree3DMarkers as Markers3D, DPthreeHTMLMarkers as MarkersHTML, RUNTIME_ANNOTATION_REGION_PREFIX, RustAnnotationCameraCore, THREE_BLENDING_MODES, ThreeFrameApplier, ThreeModelInspector, ThreeNativePlaybackConnector, analyzeModel, applyAUBoneBindingUpdate, applyBilateralAxisBindingUpdate, applyBoneAxisBindingUpdate, applyCharacterModelTransform, bindModelReferencePose, boneResolutionProfile, buildBoneAuOptions, buildRegionDisplayOptions, captureModelReferencePose, classifyAuAsJointControl, collectMorphMeshes, computeHumanoidSkeletonTemplateRestBounds, createAnimationClipFromClipIR, createBilateralBoneAxisAu, createBoneAxisAu, createCharacterHost, createDefaultCharacterLighting, createDefaultCharacterScene, createDefaultCharacterSceneAsync, createDefaultCharacterSceneRuntime, createMarkerLifecycleRevealOptions, createMarkerVisibilityLifecycle, createRuntimeAnnotationPreviewLifecycle, createRustAnnotationCameraCore, createRustEmbodyHost, createRustEmbodyHostUnbound, createScenePlaybackFrame, createShadowPlane, createValidationSkeletonFromHumanoidTemplate, detectAnnotationLaterality, disposeCharacterModel, ensureBilateralBoneNodeKeys, ensureBoneNodeKey, extendCharacterConfigWithPreset, extendModelReferencePose, extractHumanoidSkeletonTemplateFromModel, extractModelData, extractProfileOverrides, filterCameraViewRegions, findNodeKeyForBone, formatAxisDirectionLabel, formatAxisLabel, fuzzyNameMatch, getAUBoneBindingState, getAxisFromChannel, getBilateralAxisBindingState,
|
|
9962
|
+
export { BLENDING_MODES, CHARACTER_SCENE_TYPES, CHARACTER_SCENE_TYPE_IDS, DPthreeCameraController as CameraController, CameraDOMControls, CameraDOMControls as Controls, DEFAULT_CHARACTER_LIGHTING_PRESETS, DEFAULT_CHARACTER_LIGHTING_PRESET_ID, DEFAULT_CHARACTER_LIGHTING_PRESET_IDS, DEFAULT_CHARACTER_LIGHTING_SETTINGS, DEFAULT_CHARACTER_SCENE_TYPE_ID, DEFAULT_MARKER_AUTO_HIDE_MS, DEFAULT_PREVIEW_AUTO_CLEAR_MS, DPthree, DPthree3DMarkers, DPthreeCameraController, DPthreeHTMLMarkers, DPthreeMarkers, Embody, DPthree3DMarkers as Markers3D, DPthreeHTMLMarkers as MarkersHTML, RUNTIME_ANNOTATION_REGION_PREFIX, RustAnnotationCameraCore, THREE_BLENDING_MODES, ThreeFrameApplier, ThreeModelInspector, ThreeNativePlaybackConnector, analyzeModel, applyAUBoneBindingUpdate, applyBilateralAxisBindingUpdate, applyBoneAxisBindingUpdate, applyCharacterModelTransform, bindModelReferencePose, boneResolutionProfile, buildBoneAuOptions, buildRegionDisplayOptions, captureModelReferencePose, classifyAuAsJointControl, collectMorphMeshes, computeHumanoidSkeletonTemplateRestBounds, createAnimationClipFromClipIR, createBilateralBoneAxisAu, createBoneAxisAu, createCharacterHost, createDefaultCharacterLighting, createDefaultCharacterScene, createDefaultCharacterSceneAsync, createDefaultCharacterSceneRuntime, createMarkerLifecycleRevealOptions, createMarkerVisibilityLifecycle, createRuntimeAnnotationPreviewLifecycle, createRustAnnotationCameraCore, createRustEmbodyHost, createRustEmbodyHostUnbound, createScenePlaybackFrame, createShadowPlane, createValidationSkeletonFromHumanoidTemplate, detectAnnotationLaterality, disposeCharacterModel, ensureBilateralBoneNodeKeys, ensureBoneNodeKey, extendCharacterConfigWithPreset, extendModelReferencePose, extractHumanoidSkeletonTemplateFromModel, extractModelData, extractProfileOverrides, filterCameraViewRegions, findNodeKeyForBone, formatAxisDirectionLabel, formatAxisLabel, fuzzyNameMatch, getAUBoneBindingState, getAxisFromChannel, getBilateralAxisBindingState, getBoneAxisBindingState, getDefaultAnnotationLaterality, getHumanoidSkeletonTemplate, getHumanoidSkeletonTemplateBoneNames, getHumanoidSpecification, getMeshNamesForAUProfile, getModelLocalOrbitAngle, getPreset, getRuntimeAUMeshSideOffset, getRuntimeAUMorphAnchorPoint, getRuntimeAnnotationSide, getSemanticHorizontalSign, getSemanticHorizontalSignForSide, getWorldDirectionForCameraAngle, hasLeftRightMorphs, inferChiralBoneNamePair, inferEyeControlFamily, inferEyeControlScope, inferRuntimeAnnotationPreviewSide, isJointControlAuInfo, isMaxDegreesOnlyAxisBindingUpdate, isMixedAU, isRuntimeAnnotationRegionName, loadCharacterModel, mergeCharacterRegionsByName, normalizeDefaultCharacterLightingSettings, normalizeHairColorAppearance, parseCharacterModel, passesMarkerCameraAngleGate, pickContinuumAnnotationAuId, renderScenePlayback, resolveAnnotationCharacterConfig, resolveBoneAxisChannel, resolveBoneNameForNodeKey, resolveBoneNames, resolveContinuumDisplayLabel, resolveFaceCenter, resolveHumanoidCharacterization, resolveMarkerAnchorRegion, resolveRegionCameraAngle, resolveRegionVisibilityCameraAngle, resolveVisemeProfile, serializeAnimationClips, setAUMorphTargets, setHumanoidRoleBinding, shouldProjectMarkerAnchorToSurface, shouldUseFaceCenterForMarkerAnchor, stripConfiguredBoneAffixes, supportsRustEmbodyPreset, toWorldDirection, validateHumanoidCharacterization, validateMappings };
|
|
9965
9963
|
//# sourceMappingURL=index.js.map
|
|
9966
9964
|
//# sourceMappingURL=index.js.map
|