@lovelace_lol/embody 0.0.1
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/LICENSE +21 -0
- package/README.md +2411 -0
- package/dist/authoring/boneAuthoring.d.ts +132 -0
- package/dist/camera/annotationCameraAngles.d.ts +28 -0
- package/dist/camera/cameraRelativeGaze.d.ts +15 -0
- package/dist/camera/rustAnnotationCameraCore.d.ts +136 -0
- package/dist/cljs.cjs +362 -0
- package/dist/cljs.cjs.map +1 -0
- package/dist/cljs.d.ts +5 -0
- package/dist/cljs.js +359 -0
- package/dist/cljs.js.map +1 -0
- package/dist/core/TsClipCompiler.d.ts +51 -0
- package/dist/core/TsRuntimeCore.d.ts +40 -0
- package/dist/core/WasmRuntimeCore.d.ts +55 -0
- package/dist/core/compositeAxis.d.ts +4 -0
- package/dist/core/contracts/abi.d.ts +70 -0
- package/dist/core/contracts/clip.d.ts +44 -0
- package/dist/core/contracts/frame.d.ts +27 -0
- package/dist/core/contracts/host.d.ts +28 -0
- package/dist/core/contracts/ids.d.ts +15 -0
- package/dist/core/contracts/index.d.ts +10 -0
- package/dist/core/contracts/model.d.ts +31 -0
- package/dist/core/contracts/primitives.d.ts +17 -0
- package/dist/core/contracts/skeletonFit.d.ts +41 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/types.d.ts +472 -0
- package/dist/core.cjs +1065 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.js +1040 -0
- package/dist/core.js.map +1 -0
- package/dist/engines/three/Embody.d.ts +373 -0
- package/dist/engines/three/ThreeAnimationRuntime.d.ts +203 -0
- package/dist/engines/three/ThreeClipAdapter.d.ts +24 -0
- package/dist/engines/three/ThreeFrameApplier.d.ts +68 -0
- package/dist/engines/three/ThreeModelInspector.d.ts +54 -0
- package/dist/engines/three/bakedClipPartitioning.d.ts +16 -0
- package/dist/engines/three/balanceUtils.d.ts +3 -0
- package/dist/engines/three/characterHost.d.ts +80 -0
- package/dist/engines/three/characterScene.d.ts +98 -0
- package/dist/engines/three/hair/HairPhysicsController.d.ts +124 -0
- package/dist/engines/three/index.d.ts +20 -0
- package/dist/engines/three/modelLoader.d.ts +61 -0
- package/dist/engines/three/profileTestScene.d.ts +52 -0
- package/dist/engines/three/types.d.ts +20 -0
- package/dist/hair/appearance.d.ts +29 -0
- package/dist/index.cjs +15431 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +100 -0
- package/dist/index.js +15141 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/Animation.d.ts +315 -0
- package/dist/interfaces/EmbodyRuntime.d.ts +90 -0
- package/dist/interfaces/Hair.d.ts +181 -0
- package/dist/interfaces/HairPhysics.d.ts +90 -0
- package/dist/interfaces/index.d.ts +11 -0
- package/dist/mappings/extendPresetWithProfile.d.ts +17 -0
- package/dist/mappings/types.d.ts +309 -0
- package/dist/mappings/visemeSystem.d.ts +26 -0
- package/dist/physics/HairPhysics.d.ts +86 -0
- package/dist/physics/RustHairPhysics.d.ts +18 -0
- package/dist/physics/index.d.ts +6 -0
- package/dist/preset.cjs +2000 -0
- package/dist/preset.cjs.map +1 -0
- package/dist/preset.js +1997 -0
- package/dist/preset.js.map +1 -0
- package/dist/presets/bettaFish.d.ts +328 -0
- package/dist/presets/cc4.d.ts +145 -0
- package/dist/presets/index.d.ts +27 -0
- package/dist/profiles/resolveProfileConfig.d.ts +36 -0
- package/dist/profiles/types.d.ts +118 -0
- package/dist/regions/normalizeRegionTree.d.ts +6 -0
- package/dist/regions/regionMapping.d.ts +17 -0
- package/dist/regions/types.d.ts +122 -0
- package/dist/skeletonTemplates/humanoidSkeletonTemplates.d.ts +32 -0
- package/dist/test/setupWasm.d.ts +1 -0
- package/dist/three.cjs +10115 -0
- package/dist/three.cjs.map +1 -0
- package/dist/three.js +10086 -0
- package/dist/three.js.map +1 -0
- package/dist/validation/analyzeModel.d.ts +68 -0
- package/dist/validation/extractModelData.d.ts +90 -0
- package/dist/validation/generateMappingCorrections.d.ts +32 -0
- package/dist/validation/geometryHelpers.d.ts +66 -0
- package/dist/validation/types.d.ts +10 -0
- package/dist/validation/validateMappings.d.ts +77 -0
- package/dist/wasm/LICENSE +21 -0
- package/dist/wasm/README.md +72 -0
- package/dist/wasm/embody_wasm.d.ts +531 -0
- package/dist/wasm/embody_wasm.js +1635 -0
- package/dist/wasm/embody_wasm_bg.wasm +0 -0
- package/dist/wasm/embody_wasm_bg.wasm.d.ts +107 -0
- package/dist/wasm.cjs +302 -0
- package/dist/wasm.cjs.map +1 -0
- package/dist/wasm.d.ts +43 -0
- package/dist/wasm.js +268 -0
- package/dist/wasm.js.map +1 -0
- package/dist/wasmTypes.d.ts +121 -0
- package/package.json +99 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Three.js Engine Implementation
|
|
3
|
+
*/
|
|
4
|
+
export { Embody, buildFrameApplierBindings, collectMorphMeshes, } from './Embody';
|
|
5
|
+
export { ThreeAnimationRuntime, ThreeAnimationSystem, AnimationController, BakedAnimationController, } from './ThreeAnimationRuntime';
|
|
6
|
+
export type { ThreeAnimationSystemHost, ThreeAnimationSystemOptions, AnimationControllerHost, BakedAnimationHost, } from './ThreeAnimationRuntime';
|
|
7
|
+
export { ThreeModelInspector } from './ThreeModelInspector';
|
|
8
|
+
export type { ThreeAnimationClipDescriptor, ThreeAnimationTrackDescriptor, ThreeModelInspection, ThreeModelInspectionOptions, } from './ThreeModelInspector';
|
|
9
|
+
export { THREE_BLENDING_MODES, ThreeFrameApplier } from './ThreeFrameApplier';
|
|
10
|
+
export { ThreeClipAdapter } from './ThreeClipAdapter';
|
|
11
|
+
export type { ThreeFrameApplierBindings, ThreeMaterialConfig, ThreeMorphTargetBinding, ThreeResolvedMaterialConfig, } from './ThreeFrameApplier';
|
|
12
|
+
export type { ThreeClipAdapterBindings, ThreeClipMeshBinding, ThreeClipMorphTargetBinding, } from './ThreeClipAdapter';
|
|
13
|
+
export { HairPhysicsController } from './hair/HairPhysicsController';
|
|
14
|
+
export type { HairPhysicsHost } from './hair/HairPhysicsController';
|
|
15
|
+
export { createCharacterHost, } from './characterHost';
|
|
16
|
+
export type { CharacterHost, CharacterHostCharacterOptions, CharacterHostExternalScene, CharacterHostOptions, } from './characterHost';
|
|
17
|
+
export { CHARACTER_SCENE_TYPE_IDS, CHARACTER_SCENE_TYPES, createDefaultCharacterLighting, createDefaultCharacterScene, createShadowPlane, DEFAULT_CHARACTER_LIGHTING_PRESET_ID, DEFAULT_CHARACTER_LIGHTING_PRESET_IDS, DEFAULT_CHARACTER_LIGHTING_PRESETS, DEFAULT_CHARACTER_LIGHTING_SETTINGS, DEFAULT_CHARACTER_SCENE_TYPE_ID, normalizeDefaultCharacterLightingSettings, } from './characterScene';
|
|
18
|
+
export type { CharacterSceneTypeDefinition, CharacterSceneTypeId, DefaultCharacterLightingController, DefaultCharacterLightingPresetId, DefaultCharacterLightingSettings, DefaultCharacterScene, DefaultCharacterSceneOptions, } from './characterScene';
|
|
19
|
+
export { applyCharacterModelTransform, disposeCharacterModel, loadCharacterModel, parseCharacterModel, } from './modelLoader';
|
|
20
|
+
export type { CharacterModelLoadOptions, CharacterModelLoadResult, CharacterModelTransform, } from './modelLoader';
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Character model loader for Embody hosts.
|
|
3
|
+
*
|
|
4
|
+
* Loads GLB/GLTF (optional Draco) and FBX, collects morph meshes, and provides
|
|
5
|
+
* dispose helpers. App-specific asset routing (CDN aliases, HTML probing) stays
|
|
6
|
+
* outside Embody — pass a resolved URL or ArrayBuffer.
|
|
7
|
+
*/
|
|
8
|
+
import { type AnimationClip, type Mesh, type Object3D, type Scene } from 'three';
|
|
9
|
+
import { type GLTF } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
10
|
+
export interface CharacterModelLoadResult {
|
|
11
|
+
model: Object3D;
|
|
12
|
+
meshes: Mesh[];
|
|
13
|
+
animations: AnimationClip[];
|
|
14
|
+
gltf: GLTF | null;
|
|
15
|
+
}
|
|
16
|
+
export interface CharacterModelLoadOptions {
|
|
17
|
+
/** Load progress callback (0-100). */
|
|
18
|
+
onProgress?: (progress: number) => void;
|
|
19
|
+
/** Enable shadow casting on meshes. Default: true */
|
|
20
|
+
castShadows?: boolean;
|
|
21
|
+
/** Draco decoder base path. Default: '/draco-gltf/' */
|
|
22
|
+
dracoDecoderPath?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface CharacterModelTransform {
|
|
25
|
+
modelOffset?: {
|
|
26
|
+
x?: number;
|
|
27
|
+
y?: number;
|
|
28
|
+
z?: number;
|
|
29
|
+
};
|
|
30
|
+
modelRotation?: {
|
|
31
|
+
x?: number;
|
|
32
|
+
y?: number;
|
|
33
|
+
z?: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Positive finite uniform scale applied to the model root.
|
|
37
|
+
* Omit this field to preserve the scale authored in the model asset.
|
|
38
|
+
*/
|
|
39
|
+
modelScale?: number;
|
|
40
|
+
/** Lift model so its lowest point clears this Y value. */
|
|
41
|
+
modelGroundClearance?: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Apply optional placement transforms used by character profiles.
|
|
45
|
+
*/
|
|
46
|
+
export declare function applyCharacterModelTransform(model: Object3D, transform?: CharacterModelTransform): void;
|
|
47
|
+
/**
|
|
48
|
+
* Dispose a model graph and remove it from a scene when present.
|
|
49
|
+
*
|
|
50
|
+
* Handles any renderable object (Mesh, Points, Line, ...) and releases
|
|
51
|
+
* textures referenced by materials.
|
|
52
|
+
*/
|
|
53
|
+
export declare function disposeCharacterModel(scene: Scene | null, model: Object3D): void;
|
|
54
|
+
/**
|
|
55
|
+
* Load a character model from a URL (GLB/GLTF or FBX).
|
|
56
|
+
*/
|
|
57
|
+
export declare function loadCharacterModel(url: string, options?: CharacterModelLoadOptions): Promise<CharacterModelLoadResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Parse a character model from an already-fetched ArrayBuffer.
|
|
60
|
+
*/
|
|
61
|
+
export declare function parseCharacterModel(data: ArrayBuffer, resourcePath?: string, options?: CharacterModelLoadOptions): Promise<CharacterModelLoadResult>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { AnimationClip, BufferGeometry, Mesh, Object3D } from 'three';
|
|
2
|
+
import type { KeyframeTrack } from 'three';
|
|
3
|
+
import type { Profile } from '../../mappings/types';
|
|
4
|
+
import type { SnippetChannel } from '../../core/types';
|
|
5
|
+
import { Embody } from './Embody';
|
|
6
|
+
export declare const FACE_MORPHS: readonly ["BrowUp_L", "BrowUp_R", "BrowCenter", "Smile", "LookLeft", "LookRight", "RuntimeSmile"];
|
|
7
|
+
export declare const VISEME_MORPHS: readonly ["Mouth_Aah", "Mouth_Wide", "Shared_Mouth"];
|
|
8
|
+
export declare const HAIR_MORPHS: readonly ["L_Hair_Left", "L_Hair_Right", "L_Hair_Front", "Fluffy_Right", "Fluffy_Bottom_ALL", "Hairline_High_ALL", "Length_Short"];
|
|
9
|
+
export type ProfileTestScene = {
|
|
10
|
+
profile: Profile;
|
|
11
|
+
model: Object3D;
|
|
12
|
+
engine: Embody;
|
|
13
|
+
face: Mesh;
|
|
14
|
+
viseme: Mesh;
|
|
15
|
+
hair: Mesh;
|
|
16
|
+
head: Object3D;
|
|
17
|
+
jaw: Object3D;
|
|
18
|
+
body: Object3D;
|
|
19
|
+
camera: Object3D;
|
|
20
|
+
};
|
|
21
|
+
export declare function makeMorphGeometry(morphKeys?: readonly string[]): BufferGeometry;
|
|
22
|
+
export declare function makeMorphMesh(name: string, morphKeys?: readonly string[]): Mesh;
|
|
23
|
+
export declare function makeTestProfile(overrides?: Partial<Profile>): Profile;
|
|
24
|
+
export declare function makeProfileTestScene(profile?: Profile): ProfileTestScene;
|
|
25
|
+
export declare function makePolymerLipVocalChannels(): SnippetChannel[];
|
|
26
|
+
export declare function makePolymerJawVocalChannels(): SnippetChannel[];
|
|
27
|
+
export declare function makePolymerCombinedVocalChannels(): SnippetChannel[];
|
|
28
|
+
export declare function round(value: number, digits?: number): number;
|
|
29
|
+
export declare function snapshotMorphInfluences(mesh: Mesh): Record<string, number>;
|
|
30
|
+
export declare function snapshotBones(engine: Embody): Record<string, {
|
|
31
|
+
position: number[];
|
|
32
|
+
rotation: number[];
|
|
33
|
+
}>;
|
|
34
|
+
export declare function normalizeTrackName(trackName: string, scene: Pick<ProfileTestScene, 'face' | 'viseme' | 'hair' | 'head' | 'jaw' | 'body' | 'camera'>): string;
|
|
35
|
+
export declare function snapshotTrack(track: KeyframeTrack, scene: Pick<ProfileTestScene, 'face' | 'viseme' | 'hair' | 'head' | 'jaw' | 'body' | 'camera'>): {
|
|
36
|
+
name: string;
|
|
37
|
+
type: string;
|
|
38
|
+
times: number[];
|
|
39
|
+
values: number[];
|
|
40
|
+
};
|
|
41
|
+
export declare function snapshotClip(clip: AnimationClip, scene: Pick<ProfileTestScene, 'face' | 'viseme' | 'hair' | 'head' | 'jaw' | 'body' | 'camera'>): {
|
|
42
|
+
name: string;
|
|
43
|
+
duration: number;
|
|
44
|
+
trackCount: number;
|
|
45
|
+
tracks: {
|
|
46
|
+
name: string;
|
|
47
|
+
type: string;
|
|
48
|
+
times: number[];
|
|
49
|
+
values: number[];
|
|
50
|
+
}[];
|
|
51
|
+
};
|
|
52
|
+
export declare function makeMixedBakedClip(scene: Pick<ProfileTestScene, 'face' | 'head' | 'body' | 'camera'>): AnimationClip;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Object3D, Quaternion } from 'three';
|
|
2
|
+
/**
|
|
3
|
+
* Snapshot of a bone node's baseline transform.
|
|
4
|
+
*/
|
|
5
|
+
export interface NodeBase {
|
|
6
|
+
obj: Object3D;
|
|
7
|
+
basePos: {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
z: number;
|
|
11
|
+
};
|
|
12
|
+
baseQuat: Quaternion;
|
|
13
|
+
baseEuler: {
|
|
14
|
+
x: number;
|
|
15
|
+
y: number;
|
|
16
|
+
z: number;
|
|
17
|
+
order: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export type ResolvedBones = Partial<Record<string, NodeBase>>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hair / eyebrow material appearance helpers.
|
|
3
|
+
*
|
|
4
|
+
* These are runtime material controls owned by Embody — not Polymer agencies.
|
|
5
|
+
* Agencies govern character behavior; hair materials and physics stay here.
|
|
6
|
+
*/
|
|
7
|
+
export interface HairColorAppearance {
|
|
8
|
+
name?: string;
|
|
9
|
+
baseColor: string;
|
|
10
|
+
emissive: string;
|
|
11
|
+
emissiveIntensity: number;
|
|
12
|
+
}
|
|
13
|
+
export interface HairAppearanceState {
|
|
14
|
+
hairColor: Required<Pick<HairColorAppearance, 'baseColor' | 'emissive' | 'emissiveIntensity'>> & {
|
|
15
|
+
name?: string;
|
|
16
|
+
};
|
|
17
|
+
eyebrowColor: Required<Pick<HairColorAppearance, 'baseColor' | 'emissive' | 'emissiveIntensity'>> & {
|
|
18
|
+
name?: string;
|
|
19
|
+
};
|
|
20
|
+
showOutline: boolean;
|
|
21
|
+
outlineColor: string;
|
|
22
|
+
outlineOpacity: number;
|
|
23
|
+
}
|
|
24
|
+
export declare const HAIR_COLOR_PRESETS: Record<string, Required<HairColorAppearance>>;
|
|
25
|
+
export declare const DEFAULT_HAIR_COLOR_APPEARANCE: Required<HairColorAppearance>;
|
|
26
|
+
export declare function normalizeHairColorAppearance(value: HairColorAppearance | string | null | undefined, fallback?: Required<HairColorAppearance>): Required<HairColorAppearance>;
|
|
27
|
+
export declare function colorToCssHex(color: {
|
|
28
|
+
getHexString(): string;
|
|
29
|
+
} | undefined | null): string | null;
|