@lovelace_lol/embody 0.0.14 → 0.0.15
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 +29 -0
- package/dist/index.js +80 -31
- package/dist/index.js.map +1 -1
- package/dist/three/authoring.d.ts +4 -0
- package/dist/three/authoringTypes.d.ts +7 -0
- package/dist/three/editor/morphVertexPreview.d.ts +3 -2
- package/dist/three.js +80 -31
- package/dist/three.js.map +1 -1
- package/dist/wasm/README.md +29 -0
- package/dist/wasm/embody_wasm.d.ts +62 -62
- package/dist/wasm/embody_wasm_bg.wasm +0 -0
- package/dist/wasm/embody_wasm_bg.wasm.d.ts +62 -62
- package/package.json +2 -2
|
@@ -10,6 +10,8 @@ export declare const extendCharacterConfigWithPreset: <T extends Types.ProfileRu
|
|
|
10
10
|
export declare const extractProfileOverrides: (config: Types.ProfileRuntimeConfig) => Partial<Types.Profile>;
|
|
11
11
|
export declare const mergeCharacterRegionsByName: (base?: Region[], override?: Region[]) => Region[];
|
|
12
12
|
export declare const getMeshNamesForAUProfile: (profile: Types.Profile, auId: number) => string[];
|
|
13
|
+
/** Resolve routing and legacy mesh aliases once for an editor inventory. */
|
|
14
|
+
export declare const resolveMorphMeshSelections: (profile: Partial<Pick<Types.Profile, "morphToMesh" | "visemeMeshCategory">>, categories: string[], availableNames: string[]) => Record<string, Types.MorphMeshSelection>;
|
|
13
15
|
export declare const getHumanoidSpecification: () => Types.HumanoidSpecification;
|
|
14
16
|
export declare const setAUMorphTargets: (profile: Types.Profile, auId: number, side: "left" | "right" | "center", targets: Types.MorphTargetRef[]) => Types.Profile;
|
|
15
17
|
export declare const setHumanoidRoleBinding: (profile: Types.Profile, role: Types.VRMHumanoidRole, boneName: string | null) => Types.Profile;
|
|
@@ -34,6 +36,8 @@ export declare const getBoneAxisBindingState: (profile: Types.Profile, boneName:
|
|
|
34
36
|
export declare const resolveBoneAxisChannel: (profile: Types.Profile, boneName: string, axis: Types.BoneAxisKey) => Types.RotationChannel;
|
|
35
37
|
export declare const getBilateralAxisBindingState: (profile: Types.Profile, boneName: string, axis: Types.BoneAxisKey) => Types.BilateralAxisBindingState | null;
|
|
36
38
|
export declare const getAUBoneBindingState: (profile: Types.Profile, auId: number) => Types.AUBoneBindingState;
|
|
39
|
+
/** Resolve a panel's bone links without repeatedly serializing its full character. */
|
|
40
|
+
export declare const getAUBoneBindingStates: (profile: Partial<Pick<Types.Profile, "auToBones" | "boneNodes" | "bonePrefix" | "boneSuffix" | "suffixPattern" | "compositeRotations" | "continuumPairs" | "humanoidCharacterization">>, auIds: readonly number[]) => Record<number, Types.AUBoneBindingState>;
|
|
37
41
|
export declare const inferEyeControlScope: (profile: Pick<Types.Profile, "auToBones">, binding: Pick<Types.BoneAxisBindingState, "nodeKey" | "negativeAuId" | "positiveAuId">) => Types.BoneControlScope | null;
|
|
38
42
|
export declare const inferEyeControlFamily: (binding: Pick<Types.BoneAxisBindingState, "nodeKey" | "axis">) => Types.BoneControlFamily | null;
|
|
39
43
|
export declare const applyBoneAxisBindingUpdate: (profile: Types.Profile, boneName: string, axis: Types.BoneAxisKey, update: Types.BoneAxisBindingUpdate) => Types.Profile;
|
|
@@ -18,6 +18,13 @@ export type BoneControlScope = 'Both Eyes' | 'Left Eye Only' | 'Right Eye Only';
|
|
|
18
18
|
export type HumanoidSkeletonTemplateVec3 = readonly [number, number, number];
|
|
19
19
|
export type HumanoidSkeletonTemplateBounds = readonly [number, number, number, number, number, number];
|
|
20
20
|
export type MorphTargetRef = string | number;
|
|
21
|
+
export interface MorphMeshSelection {
|
|
22
|
+
category: string;
|
|
23
|
+
/** Includes an explicit empty selection. */
|
|
24
|
+
hasSelection: boolean;
|
|
25
|
+
resolvedNames: string[];
|
|
26
|
+
unresolvedNames: string[];
|
|
27
|
+
}
|
|
21
28
|
export type MeshCategory = 'body' | 'eye' | 'eyeOcclusion' | 'tearLine' | 'teeth' | 'tongue' | 'hair' | 'eyebrow' | 'cornea' | 'eyelash';
|
|
22
29
|
export type BlendingMode = 'Normal' | 'Additive' | 'Subtractive' | 'Multiply' | 'None';
|
|
23
30
|
export interface MorphTargetsBySide {
|
|
@@ -15,7 +15,7 @@ export interface MorphVertexPreviewRenderData {
|
|
|
15
15
|
}
|
|
16
16
|
export declare function resolveMorphPreviewMeshes(root: THREE.Object3D, morphName: string, meshNames?: string[]): THREE.Mesh[];
|
|
17
17
|
export declare function buildMorphVertexPreviewSample(mesh: THREE.Mesh, morphName: string, options?: MorphVertexPreviewOptions): MorphVertexPreviewSample | null;
|
|
18
|
-
export declare function buildMorphVertexPreviewRenderData(meshes: THREE.Mesh[], morphName: string, cache: Map<string, MorphVertexPreviewSample>, options?: MorphVertexPreviewOptions): MorphVertexPreviewRenderData | null;
|
|
18
|
+
export declare function buildMorphVertexPreviewRenderData(meshes: THREE.Mesh[], morphName: string, cache: Map<string, MorphVertexPreviewSample>, options?: MorphVertexPreviewOptions, previous?: MorphVertexPreviewRenderData | null): MorphVertexPreviewRenderData | null;
|
|
19
19
|
/** Editor overlay sampled by the existing Three render loop, without a separate frame timer. */
|
|
20
20
|
export declare class MorphVertexPreview {
|
|
21
21
|
private readonly scene;
|
|
@@ -23,6 +23,7 @@ export declare class MorphVertexPreview {
|
|
|
23
23
|
private readonly cache;
|
|
24
24
|
private points;
|
|
25
25
|
private active;
|
|
26
|
+
private renderData;
|
|
26
27
|
private disposed;
|
|
27
28
|
private unbindRender;
|
|
28
29
|
constructor(scene: THREE.Scene, options?: MorphVertexPreviewOptions);
|
|
@@ -31,5 +32,5 @@ export declare class MorphVertexPreview {
|
|
|
31
32
|
dispose(): void;
|
|
32
33
|
private createPoints;
|
|
33
34
|
private update;
|
|
34
|
-
private
|
|
35
|
+
private updateGeometry;
|
|
35
36
|
}
|
package/dist/three.js
CHANGED
|
@@ -2266,6 +2266,7 @@ var extendCharacterConfigWithPreset = (config) => request2("profile.extendConfig
|
|
|
2266
2266
|
var extractProfileOverrides = (config) => request2("profile.extractOverrides", { config });
|
|
2267
2267
|
var mergeCharacterRegionsByName = (base, override) => request2("profile.mergeRegions", { base, override });
|
|
2268
2268
|
var getMeshNamesForAUProfile = (profile, auId) => request2("profile.getMeshNamesForAU", { profile, auId });
|
|
2269
|
+
var resolveMorphMeshSelections = (profile, categories, availableNames) => request2("profile.resolveMorphMeshSelections", { profile, categories, availableNames });
|
|
2269
2270
|
var getHumanoidSpecification = () => request2("humanoid.getSpecification");
|
|
2270
2271
|
var setAUMorphTargets = (profile, auId, side, targets) => request2("profile.setAUMorphTargets", { profile, auId, side, targets });
|
|
2271
2272
|
var setHumanoidRoleBinding = (profile, role, boneName) => request2("profile.setHumanoidRoleBinding", { profile, role, boneName });
|
|
@@ -2287,6 +2288,19 @@ var getBoneAxisBindingState = (profile, boneName, axis) => request2("bone.getAxi
|
|
|
2287
2288
|
var resolveBoneAxisChannel = (profile, boneName, axis) => request2("bone.resolveAxisChannel", { profile, boneName, axis });
|
|
2288
2289
|
var getBilateralAxisBindingState = (profile, boneName, axis) => request2("bone.getBilateralAxisState", { profile, boneName, axis });
|
|
2289
2290
|
var getAUBoneBindingState = (profile, auId) => request2("bone.getAUBindingState", { profile, auId });
|
|
2291
|
+
var getAUBoneBindingStates = (profile, auIds) => request2("bone.getAUBindingStates", {
|
|
2292
|
+
profile: {
|
|
2293
|
+
auToBones: profile.auToBones,
|
|
2294
|
+
boneNodes: profile.boneNodes,
|
|
2295
|
+
bonePrefix: profile.bonePrefix,
|
|
2296
|
+
boneSuffix: profile.boneSuffix,
|
|
2297
|
+
suffixPattern: profile.suffixPattern,
|
|
2298
|
+
compositeRotations: profile.compositeRotations,
|
|
2299
|
+
continuumPairs: profile.continuumPairs,
|
|
2300
|
+
humanoidCharacterization: profile.humanoidCharacterization
|
|
2301
|
+
},
|
|
2302
|
+
auIds
|
|
2303
|
+
});
|
|
2290
2304
|
var inferEyeControlScope = (profile, binding) => request2("bone.inferEyeScope", { profile, binding });
|
|
2291
2305
|
var inferEyeControlFamily = (binding) => request2("bone.inferEyeFamily", { binding });
|
|
2292
2306
|
var applyBoneAxisBindingUpdate = (profile, boneName, axis, update) => request2("bone.applyAxisUpdate", { profile, boneName, axis, update });
|
|
@@ -2483,16 +2497,18 @@ function withComponentTracks(clip) {
|
|
|
2483
2497
|
if (!Number.isInteger(width) || width < 1 || euler && width !== 3) throw new Error(`Invalid component track ${JSON.stringify(track.name)}.`);
|
|
2484
2498
|
expanded = true;
|
|
2485
2499
|
return Array.from({ length: width }, (_, component) => {
|
|
2486
|
-
const
|
|
2487
|
-
|
|
2488
|
-
|
|
2489
|
-
|
|
2500
|
+
const values = track.values.slice(0, track.times.length * parts);
|
|
2501
|
+
for (let sample = 0; sample < values.length; sample += 1) values[sample] = track.values[sample * width + component];
|
|
2502
|
+
const Track = track.constructor;
|
|
2503
|
+
const scalar = new Track(`${track.name}[${euler ? ["x", "y", "z"][component] : component}]`, track.times.slice(), values);
|
|
2504
|
+
scalar.createInterpolant = track.createInterpolant;
|
|
2490
2505
|
return scalar;
|
|
2491
2506
|
});
|
|
2492
2507
|
});
|
|
2493
2508
|
if (!expanded) return clip;
|
|
2494
|
-
const
|
|
2495
|
-
indexed
|
|
2509
|
+
const Clip = clip.constructor;
|
|
2510
|
+
const indexed = new Clip(clip.name, clip.duration, tracks, clip.blendMode);
|
|
2511
|
+
indexed.userData = JSON.parse(JSON.stringify(clip.userData));
|
|
2496
2512
|
return indexed;
|
|
2497
2513
|
}
|
|
2498
2514
|
function concreteTrackName(target, inspection) {
|
|
@@ -6581,7 +6597,7 @@ function getDeltaMagnitudeAtIndex(mesh, morphAttribute, index) {
|
|
|
6581
6597
|
return Math.hypot(dx, dy, dz);
|
|
6582
6598
|
}
|
|
6583
6599
|
function resolveMorphPreviewMeshes(root, morphName, meshNames) {
|
|
6584
|
-
const nameFilter = meshNames
|
|
6600
|
+
const nameFilter = meshNames ? new Set(meshNames) : null;
|
|
6585
6601
|
const meshes = [];
|
|
6586
6602
|
root.traverse((obj) => {
|
|
6587
6603
|
const mesh = obj;
|
|
@@ -6630,7 +6646,7 @@ function writePointColor(colors, offset, intensity2) {
|
|
|
6630
6646
|
colors[offset + 1] = COLOR_LOW.g + (COLOR_HIGH.g - COLOR_LOW.g) * intensity2;
|
|
6631
6647
|
colors[offset + 2] = COLOR_LOW.b + (COLOR_HIGH.b - COLOR_LOW.b) * intensity2;
|
|
6632
6648
|
}
|
|
6633
|
-
function buildMorphVertexPreviewRenderData(meshes, morphName, cache, options = {}) {
|
|
6649
|
+
function buildMorphVertexPreviewRenderData(meshes, morphName, cache, options = {}, previous = null) {
|
|
6634
6650
|
const threshold = options.threshold ?? DEFAULT_THRESHOLD;
|
|
6635
6651
|
const maxPoints = options.maxPoints ?? DEFAULT_MAX_POINTS;
|
|
6636
6652
|
const sampledMeshes = [];
|
|
@@ -6647,8 +6663,8 @@ function buildMorphVertexPreviewRenderData(meshes, morphName, cache, options = {
|
|
|
6647
6663
|
pointCount += sample.indices.length;
|
|
6648
6664
|
}
|
|
6649
6665
|
if (pointCount === 0) return null;
|
|
6650
|
-
const positions = new Float32Array(pointCount * 3);
|
|
6651
|
-
const colors = new Float32Array(pointCount * 3);
|
|
6666
|
+
const positions = previous?.positions.length === pointCount * 3 ? previous.positions : new Float32Array(pointCount * 3);
|
|
6667
|
+
const colors = previous?.colors.length === pointCount * 3 ? previous.colors : new Float32Array(pointCount * 3);
|
|
6652
6668
|
const vertex = new THREE10.Vector3();
|
|
6653
6669
|
let cursor = 0;
|
|
6654
6670
|
for (const { mesh, sample } of sampledMeshes) {
|
|
@@ -6705,6 +6721,7 @@ var MorphVertexPreview = class {
|
|
|
6705
6721
|
__publicField(this, "cache", /* @__PURE__ */ new Map());
|
|
6706
6722
|
__publicField(this, "points", null);
|
|
6707
6723
|
__publicField(this, "active", null);
|
|
6724
|
+
__publicField(this, "renderData", null);
|
|
6708
6725
|
__publicField(this, "disposed", false);
|
|
6709
6726
|
__publicField(this, "unbindRender", null);
|
|
6710
6727
|
}
|
|
@@ -6714,12 +6731,18 @@ var MorphVertexPreview = class {
|
|
|
6714
6731
|
this.hide();
|
|
6715
6732
|
return;
|
|
6716
6733
|
}
|
|
6734
|
+
if (this.active?.morphName !== morphName || this.active?.meshNames?.length !== meshNames?.length || meshNames?.some((name, index) => name !== this.active?.meshNames?.[index])) {
|
|
6735
|
+
this.cache.clear();
|
|
6736
|
+
this.renderData = null;
|
|
6737
|
+
}
|
|
6717
6738
|
this.active = { morphName, meshNames: meshNames?.slice() };
|
|
6718
6739
|
this.unbindRender ?? (this.unbindRender = bindPreviewRender(this.scene, () => this.update()));
|
|
6719
6740
|
this.update();
|
|
6720
6741
|
}
|
|
6721
6742
|
hide() {
|
|
6722
6743
|
this.active = null;
|
|
6744
|
+
this.cache.clear();
|
|
6745
|
+
this.renderData = null;
|
|
6723
6746
|
this.unbindRender?.();
|
|
6724
6747
|
this.unbindRender = null;
|
|
6725
6748
|
if (this.points) this.points.visible = false;
|
|
@@ -6757,26 +6780,31 @@ var MorphVertexPreview = class {
|
|
|
6757
6780
|
if (this.disposed || !this.active) return;
|
|
6758
6781
|
const { morphName, meshNames } = this.active;
|
|
6759
6782
|
const meshes = resolveMorphPreviewMeshes(this.scene, morphName, meshNames);
|
|
6760
|
-
const data = buildMorphVertexPreviewRenderData(meshes, morphName, this.cache, this.options);
|
|
6783
|
+
const data = buildMorphVertexPreviewRenderData(meshes, morphName, this.cache, this.options, this.renderData);
|
|
6784
|
+
this.renderData = data;
|
|
6761
6785
|
if (!data) {
|
|
6762
6786
|
if (this.points) this.points.visible = false;
|
|
6763
6787
|
return;
|
|
6764
6788
|
}
|
|
6765
6789
|
const points = this.points ?? this.createPoints();
|
|
6766
|
-
this.
|
|
6767
|
-
this.updateAttribute(points.geometry, "color", data.colors, data.pointCount);
|
|
6790
|
+
this.updateGeometry(points.geometry, data);
|
|
6768
6791
|
points.geometry.computeBoundingSphere();
|
|
6769
6792
|
points.material.size = data.pointCount > 6e3 ? 9e-3 : 0.012;
|
|
6770
6793
|
points.visible = true;
|
|
6771
6794
|
}
|
|
6772
|
-
|
|
6773
|
-
const
|
|
6774
|
-
|
|
6775
|
-
|
|
6795
|
+
updateGeometry(geometry, data) {
|
|
6796
|
+
const position = geometry.getAttribute("position");
|
|
6797
|
+
const color = geometry.getAttribute("color");
|
|
6798
|
+
if (!position || !color || position.count !== data.pointCount || color.count !== data.pointCount) {
|
|
6799
|
+
if (position || color) geometry.dispose();
|
|
6800
|
+
geometry.setAttribute("position", new THREE10.BufferAttribute(data.positions, 3));
|
|
6801
|
+
geometry.setAttribute("color", new THREE10.BufferAttribute(data.colors, 3));
|
|
6776
6802
|
return;
|
|
6777
6803
|
}
|
|
6778
|
-
|
|
6779
|
-
|
|
6804
|
+
if (position.array !== data.positions) position.array.set(data.positions);
|
|
6805
|
+
if (color.array !== data.colors) color.array.set(data.colors);
|
|
6806
|
+
position.needsUpdate = true;
|
|
6807
|
+
color.needsUpdate = true;
|
|
6780
6808
|
}
|
|
6781
6809
|
};
|
|
6782
6810
|
|
|
@@ -7032,6 +7060,16 @@ function serializeAnimationClips(model, clips, inspection) {
|
|
|
7032
7060
|
const meshIds = new Map(Array.from(inspection.meshBindings, ([id, mesh]) => [mesh, id]));
|
|
7033
7061
|
const boneIds = new Map(Array.from(inspection.boneBindings, ([id, bone]) => [bone, id]));
|
|
7034
7062
|
const objectIds = new Map(Array.from(inspection.objectBindings, ([id, object]) => [object, id]));
|
|
7063
|
+
const morphIds = /* @__PURE__ */ new Map();
|
|
7064
|
+
for (const [id, { mesh, index }] of inspection.morphBindings) {
|
|
7065
|
+
let indices = morphIds.get(mesh);
|
|
7066
|
+
if (!indices) {
|
|
7067
|
+
indices = /* @__PURE__ */ new Map();
|
|
7068
|
+
morphIds.set(mesh, indices);
|
|
7069
|
+
}
|
|
7070
|
+
if (!indices.has(index)) indices.set(index, id);
|
|
7071
|
+
}
|
|
7072
|
+
const destinations = /* @__PURE__ */ new Map();
|
|
7035
7073
|
return clips.map((clip) => {
|
|
7036
7074
|
const tracks = [];
|
|
7037
7075
|
const channelKinds = /* @__PURE__ */ new Map();
|
|
@@ -7043,7 +7081,11 @@ function serializeAnimationClips(model, clips, inspection) {
|
|
|
7043
7081
|
return id;
|
|
7044
7082
|
};
|
|
7045
7083
|
withComponentTracks(clip).tracks.forEach((track, index) => {
|
|
7046
|
-
|
|
7084
|
+
let found = destinations.get(track.name);
|
|
7085
|
+
if (found === void 0) {
|
|
7086
|
+
found = findTrackTarget(model, track);
|
|
7087
|
+
destinations.set(track.name, found);
|
|
7088
|
+
}
|
|
7047
7089
|
if (!found?.object) return;
|
|
7048
7090
|
const { parsed, object } = found;
|
|
7049
7091
|
let target = null;
|
|
@@ -7052,8 +7094,9 @@ function serializeAnimationClips(model, clips, inspection) {
|
|
|
7052
7094
|
const mesh = object;
|
|
7053
7095
|
const requested = parsed.propertyIndex;
|
|
7054
7096
|
const indexValue = typeof requested === "number" ? requested : Number.isFinite(Number(requested)) ? Number(requested) : mesh.morphTargetDictionary?.[String(requested)];
|
|
7055
|
-
|
|
7056
|
-
|
|
7097
|
+
if (indexValue === void 0) return;
|
|
7098
|
+
const morphTargetId = morphIds.get(mesh)?.get(indexValue);
|
|
7099
|
+
if (morphTargetId !== void 0) target = { kind: "morphTarget", meshId: meshIds.get(mesh), morphTargetId };
|
|
7057
7100
|
} else if (property === "visible" && object.isMesh) {
|
|
7058
7101
|
target = { kind: "meshVisibility", meshId: meshIds.get(object) };
|
|
7059
7102
|
} else {
|
|
@@ -7067,7 +7110,7 @@ function serializeAnimationClips(model, clips, inspection) {
|
|
|
7067
7110
|
const kind = target.kind === "morphTarget" ? "face" : target.kind === "boneTransform" ? "body" : "scene";
|
|
7068
7111
|
const cubic = !!track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline;
|
|
7069
7112
|
const size = track.getValueSize() / (cubic ? 3 : 1);
|
|
7070
|
-
if (!
|
|
7113
|
+
if (!track.values.every(Number.isFinite)) {
|
|
7071
7114
|
throw new Error(`Animation track ${JSON.stringify(track.name)} contains non-finite samples.`);
|
|
7072
7115
|
}
|
|
7073
7116
|
const values = cubic ? Array.from(track.times).flatMap((_, key) => Array.from(track.values.slice((key * 3 + 1) * size, (key * 3 + 2) * size))) : Array.from(track.values);
|
|
@@ -7321,13 +7364,19 @@ var ThreeFrameApplier = class {
|
|
|
7321
7364
|
applyMaterial(mesh, config) {
|
|
7322
7365
|
if (typeof config.renderOrder === "number") mesh.renderOrder = config.renderOrder;
|
|
7323
7366
|
for (const material of materials(mesh.material)) {
|
|
7324
|
-
|
|
7325
|
-
|
|
7326
|
-
|
|
7327
|
-
|
|
7328
|
-
|
|
7329
|
-
|
|
7330
|
-
|
|
7367
|
+
let changed = false;
|
|
7368
|
+
const assign = (key, value) => {
|
|
7369
|
+
if (material[key] === value) return;
|
|
7370
|
+
material[key] = value;
|
|
7371
|
+
changed = true;
|
|
7372
|
+
};
|
|
7373
|
+
if (typeof config.opacity === "number") assign("opacity", config.opacity);
|
|
7374
|
+
if (typeof config.transparent === "boolean") assign("transparent", config.transparent);
|
|
7375
|
+
else if (typeof config.opacity === "number" && config.opacity < 1) assign("transparent", true);
|
|
7376
|
+
if (typeof config.depthWrite === "boolean") assign("depthWrite", config.depthWrite);
|
|
7377
|
+
if (typeof config.depthTest === "boolean") assign("depthTest", config.depthTest);
|
|
7378
|
+
if (config.blending) assign("blending", THREE_BLENDING_MODES[config.blending]);
|
|
7379
|
+
if (changed) material.needsUpdate = true;
|
|
7331
7380
|
}
|
|
7332
7381
|
}
|
|
7333
7382
|
visitMesh(root, name, visit) {
|
|
@@ -7344,6 +7393,6 @@ var collectMorphMeshes = (root) => {
|
|
|
7344
7393
|
return meshes;
|
|
7345
7394
|
};
|
|
7346
7395
|
|
|
7347
|
-
export { BLENDING_MODES, CHARACTER_SCENE_TYPES, CHARACTER_SCENE_TYPE_IDS, ThreeAnnotationController 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, Embody, HtmlAnnotationMarkers, ThreeAnnotationMarkers as Markers3D, HtmlAnnotationMarkers as MarkersHTML, MorphVertexPreview, HtmlAnnotationMarkers as OverlayAnnotationMarkers, RUNTIME_ANNOTATION_REGION_PREFIX, RustAnnotationCameraCore, SkeletonOverlay, THREE_BLENDING_MODES, ThreeAnnotationController, ThreeAnnotationMarkers, ThreeAnnotations, ThreeFrameApplier, ThreeModelInspector, ThreeNativePlaybackConnector, analyzeModel, applyAUBoneBindingUpdate, applyBilateralAxisBindingUpdate, applyBoneAxisBindingUpdate, applyCharacterModelTransform, bindModelReferencePose, boneResolutionProfile, buildBoneAuOptions, buildMappedBoneInfo, buildMorphVertexPreviewRenderData, buildMorphVertexPreviewSample, buildRegionDisplayOptions, captureModelReferencePose, classifyAuAsJointControl, collectMorphMeshes, collectSkeletonBones, 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, findModelRoot, 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, resolveMorphPreviewMeshes, resolveRegionCameraAngle, resolveRegionVisibilityCameraAngle, resolveSkeletonOverlayStartBoneName, resolveVisemeProfile, serializeAnimationClips, setAUMorphTargets, setHumanoidRoleBinding, shouldProjectMarkerAnchorToSurface, shouldUseFaceCenterForMarkerAnchor, stripConfiguredBoneAffixes, supportsRustEmbodyPreset, toWorldDirection, validateHumanoidCharacterization, validateMappings };
|
|
7396
|
+
export { BLENDING_MODES, CHARACTER_SCENE_TYPES, CHARACTER_SCENE_TYPE_IDS, ThreeAnnotationController 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, Embody, HtmlAnnotationMarkers, ThreeAnnotationMarkers as Markers3D, HtmlAnnotationMarkers as MarkersHTML, MorphVertexPreview, HtmlAnnotationMarkers as OverlayAnnotationMarkers, RUNTIME_ANNOTATION_REGION_PREFIX, RustAnnotationCameraCore, SkeletonOverlay, THREE_BLENDING_MODES, ThreeAnnotationController, ThreeAnnotationMarkers, ThreeAnnotations, ThreeFrameApplier, ThreeModelInspector, ThreeNativePlaybackConnector, analyzeModel, applyAUBoneBindingUpdate, applyBilateralAxisBindingUpdate, applyBoneAxisBindingUpdate, applyCharacterModelTransform, bindModelReferencePose, boneResolutionProfile, buildBoneAuOptions, buildMappedBoneInfo, buildMorphVertexPreviewRenderData, buildMorphVertexPreviewSample, buildRegionDisplayOptions, captureModelReferencePose, classifyAuAsJointControl, collectMorphMeshes, collectSkeletonBones, 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, findModelRoot, findNodeKeyForBone, formatAxisDirectionLabel, formatAxisLabel, fuzzyNameMatch, getAUBoneBindingState, getAUBoneBindingStates, 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, resolveMorphMeshSelections, resolveMorphPreviewMeshes, resolveRegionCameraAngle, resolveRegionVisibilityCameraAngle, resolveSkeletonOverlayStartBoneName, resolveVisemeProfile, serializeAnimationClips, setAUMorphTargets, setHumanoidRoleBinding, shouldProjectMarkerAnchorToSurface, shouldUseFaceCenterForMarkerAnchor, stripConfiguredBoneAffixes, supportsRustEmbodyPreset, toWorldDirection, validateHumanoidCharacterization, validateMappings };
|
|
7348
7397
|
//# sourceMappingURL=three.js.map
|
|
7349
7398
|
//# sourceMappingURL=three.js.map
|