@lovelace_lol/embody 0.0.7 → 0.0.9

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.
Files changed (134) hide show
  1. package/README.md +541 -2394
  2. package/dist/index.d.ts +2 -100
  3. package/dist/index.js +9197 -13851
  4. package/dist/index.js.map +1 -1
  5. package/dist/three/annotations/DOMControls.d.ts +73 -0
  6. package/dist/three/annotations/DPthree.d.ts +113 -0
  7. package/dist/three/annotations/DPthree3DMarkers.d.ts +319 -0
  8. package/dist/three/annotations/DPthreeCameraController.d.ts +415 -0
  9. package/dist/three/annotations/DPthreeHTMLMarkers.d.ts +131 -0
  10. package/dist/three/annotations/DPthreeMarkers.d.ts +52 -0
  11. package/dist/three/annotations/adapter.d.ts +157 -0
  12. package/dist/three/annotations/animationFrameTaskScheduler.d.ts +18 -0
  13. package/dist/three/annotations/annotationAnchorModel.d.ts +16 -0
  14. package/dist/three/annotations/annotationCameraCore.d.ts +5 -0
  15. package/dist/three/annotations/boneResolutionProfile.d.ts +7 -0
  16. package/dist/three/annotations/index.d.ts +20 -0
  17. package/dist/three/annotations/loadFrame.d.ts +2 -0
  18. package/dist/three/annotations/markerSurfaceRaycast.d.ts +11 -0
  19. package/dist/three/annotations/markerVisibilityLifecycle.d.ts +21 -0
  20. package/dist/three/annotations/modelRenderPreparation.d.ts +6 -0
  21. package/dist/three/annotations/runtimeAnnotationPreview.d.ts +15 -0
  22. package/dist/three/annotations/runtimeAnnotationPreviewSide.d.ts +10 -0
  23. package/dist/three/annotations/runtimeAnnotationSidePreview.d.ts +5 -0
  24. package/dist/three/annotations/types.d.ts +262 -0
  25. package/dist/three/authoring.d.ts +95 -0
  26. package/dist/three/authoringTypes.d.ts +576 -0
  27. package/dist/three/character.d.ts +243 -0
  28. package/dist/three/characterHost.d.ts +48 -0
  29. package/dist/three/clipBindings.d.ts +6 -0
  30. package/dist/three/index.d.ts +171 -0
  31. package/dist/three/model.d.ts +31 -0
  32. package/dist/three/modelSkinning.d.ts +3 -0
  33. package/dist/three/nativePlayback.d.ts +121 -0
  34. package/dist/three/playbackRendering.d.ts +14 -0
  35. package/dist/three/reference-pose.d.ts +73 -0
  36. package/dist/three/scene.d.ts +253 -0
  37. package/dist/three/sceneRenderingBinding.d.ts +22 -0
  38. package/dist/three.js +9252 -8844
  39. package/dist/three.js.map +1 -1
  40. package/dist/wasm/README.md +551 -62
  41. package/dist/wasm/auto.d.ts +1 -0
  42. package/dist/wasm/compatibility.d.ts +14 -0
  43. package/dist/wasm/embody_wasm.d.ts +352 -71
  44. package/dist/wasm/embody_wasm.js +1266 -37
  45. package/dist/wasm/embody_wasm_bg.wasm +0 -0
  46. package/dist/wasm/embody_wasm_bg.wasm.d.ts +113 -54
  47. package/dist/wasm/index.d.ts +131 -0
  48. package/dist/wasm.d.ts +1 -43
  49. package/dist/wasm.js +1100 -239
  50. package/dist/wasm.js.map +1 -1
  51. package/package.json +35 -39
  52. package/service-worker/character-asset-service-worker.js +295 -0
  53. package/dist/authoring/boneAuthoring.d.ts +0 -132
  54. package/dist/camera/annotationCameraAngles.d.ts +0 -28
  55. package/dist/camera/cameraRelativeGaze.d.ts +0 -15
  56. package/dist/camera/rustAnnotationCameraCore.d.ts +0 -136
  57. package/dist/cljs.cjs +0 -362
  58. package/dist/cljs.cjs.map +0 -1
  59. package/dist/cljs.d.ts +0 -5
  60. package/dist/cljs.js +0 -359
  61. package/dist/cljs.js.map +0 -1
  62. package/dist/core/TsClipCompiler.d.ts +0 -51
  63. package/dist/core/WasmRuntimeCore.d.ts +0 -41
  64. package/dist/core/compositeAxis.d.ts +0 -4
  65. package/dist/core/contracts/abi.d.ts +0 -70
  66. package/dist/core/contracts/clip.d.ts +0 -44
  67. package/dist/core/contracts/frame.d.ts +0 -27
  68. package/dist/core/contracts/host.d.ts +0 -28
  69. package/dist/core/contracts/ids.d.ts +0 -15
  70. package/dist/core/contracts/index.d.ts +0 -10
  71. package/dist/core/contracts/model.d.ts +0 -31
  72. package/dist/core/contracts/primitives.d.ts +0 -17
  73. package/dist/core/contracts/skeletonFit.d.ts +0 -41
  74. package/dist/core/index.d.ts +0 -6
  75. package/dist/core/types.d.ts +0 -472
  76. package/dist/core.cjs +0 -343
  77. package/dist/core.cjs.map +0 -1
  78. package/dist/core.js +0 -323
  79. package/dist/core.js.map +0 -1
  80. package/dist/engines/three/Embody.d.ts +0 -372
  81. package/dist/engines/three/ThreeAnimationRuntime.d.ts +0 -203
  82. package/dist/engines/three/ThreeClipAdapter.d.ts +0 -24
  83. package/dist/engines/three/ThreeFrameApplier.d.ts +0 -68
  84. package/dist/engines/three/ThreeModelInspector.d.ts +0 -54
  85. package/dist/engines/three/bakedClipPartitioning.d.ts +0 -16
  86. package/dist/engines/three/balanceUtils.d.ts +0 -3
  87. package/dist/engines/three/characterHost.d.ts +0 -80
  88. package/dist/engines/three/characterScene.d.ts +0 -98
  89. package/dist/engines/three/hair/HairPhysicsController.d.ts +0 -124
  90. package/dist/engines/three/index.d.ts +0 -20
  91. package/dist/engines/three/modelLoader.d.ts +0 -61
  92. package/dist/engines/three/profileTestScene.d.ts +0 -52
  93. package/dist/engines/three/types.d.ts +0 -20
  94. package/dist/hair/appearance.d.ts +0 -29
  95. package/dist/index.cjs +0 -14871
  96. package/dist/index.cjs.map +0 -1
  97. package/dist/interfaces/Animation.d.ts +0 -315
  98. package/dist/interfaces/EmbodyRuntime.d.ts +0 -90
  99. package/dist/interfaces/Hair.d.ts +0 -181
  100. package/dist/interfaces/HairPhysics.d.ts +0 -90
  101. package/dist/interfaces/index.d.ts +0 -11
  102. package/dist/mappings/extendPresetWithProfile.d.ts +0 -17
  103. package/dist/mappings/types.d.ts +0 -309
  104. package/dist/mappings/visemeSystem.d.ts +0 -26
  105. package/dist/physics/HairPhysics.d.ts +0 -86
  106. package/dist/physics/RustHairPhysics.d.ts +0 -18
  107. package/dist/physics/index.d.ts +0 -6
  108. package/dist/preset.cjs +0 -2005
  109. package/dist/preset.cjs.map +0 -1
  110. package/dist/preset.js +0 -2003
  111. package/dist/preset.js.map +0 -1
  112. package/dist/presets/bettaFish.d.ts +0 -328
  113. package/dist/presets/cc4.d.ts +0 -145
  114. package/dist/presets/index.d.ts +0 -30
  115. package/dist/presets/registry.d.ts +0 -57
  116. package/dist/profiles/resolveProfileConfig.d.ts +0 -36
  117. package/dist/profiles/rustResolvedProfile.d.ts +0 -31
  118. package/dist/profiles/types.d.ts +0 -118
  119. package/dist/regions/normalizeRegionTree.d.ts +0 -6
  120. package/dist/regions/regionMapping.d.ts +0 -17
  121. package/dist/regions/types.d.ts +0 -122
  122. package/dist/skeletonTemplates/humanoidSkeletonTemplates.d.ts +0 -32
  123. package/dist/test/setupWasm.d.ts +0 -1
  124. package/dist/three.cjs +0 -9550
  125. package/dist/three.cjs.map +0 -1
  126. package/dist/validation/analyzeModel.d.ts +0 -68
  127. package/dist/validation/extractModelData.d.ts +0 -90
  128. package/dist/validation/generateMappingCorrections.d.ts +0 -32
  129. package/dist/validation/geometryHelpers.d.ts +0 -66
  130. package/dist/validation/types.d.ts +0 -10
  131. package/dist/validation/validateMappings.d.ts +0 -77
  132. package/dist/wasm.cjs +0 -302
  133. package/dist/wasm.cjs.map +0 -1
  134. package/dist/wasmTypes.d.ts +0 -123
@@ -0,0 +1,73 @@
1
+ import type { Object3D } from 'three';
2
+ type ReferenceVector3 = Readonly<{
3
+ x: number;
4
+ y: number;
5
+ z: number;
6
+ }>;
7
+ type ReferenceQuaternion = Readonly<{
8
+ x: number;
9
+ y: number;
10
+ z: number;
11
+ w: number;
12
+ }>;
13
+ export type ThreeReferencePoseNode = Readonly<{
14
+ /** Child-index path relative to the captured model. The model itself has path ''. */
15
+ path: string;
16
+ parentPath: string | null;
17
+ name: string;
18
+ type: string;
19
+ isBone: boolean;
20
+ rotationOrder: Object3D['rotation']['order'];
21
+ /** Authored Euler values for automatic TRS, including rotations beyond one turn. */
22
+ rotationEuler?: ReferenceVector3;
23
+ childCount: number;
24
+ /** For manual matrices, this is a decomposition; matrices remain authoritative for shear. */
25
+ transform: Readonly<{
26
+ position: ReferenceVector3;
27
+ rotation: ReferenceQuaternion;
28
+ scale: ReferenceVector3;
29
+ }>;
30
+ /** Column-major local and world matrices, including shear and non-bone ancestors. */
31
+ localMatrix: readonly number[];
32
+ worldMatrix: readonly number[];
33
+ worldPosition: ReferenceVector3;
34
+ /** Optional morph baseline captured independently from later live influences. */
35
+ morphInfluences?: readonly number[];
36
+ }>;
37
+ export type ThreeModelReferencePose = Readonly<{
38
+ version: 1;
39
+ /** Captured transform above the model root; identity for an unparented model. */
40
+ parentWorldMatrix: readonly number[];
41
+ nodes: readonly ThreeReferencePoseNode[];
42
+ }>;
43
+ /**
44
+ * Explicitly capture the authored reference pose before starting animation.
45
+ * This does not infer a skin bind pose or animation frame zero: it snapshots the
46
+ * transforms supplied by the caller, without updating or otherwise mutating the scene.
47
+ * World matrices are calculated from the full ancestor chain's local transforms,
48
+ * not potentially stale matrixWorld values. All returned data is deeply frozen and
49
+ * JSON-serializable; no object, UUID, or live transform references are retained.
50
+ * Existing morph influences are copied as an optional baseline. Non-finite data
51
+ * or manual matrices with a zero-length basis axis/non-finite TRS decomposition throw.
52
+ */
53
+ export declare function captureModelReferencePose(model: Object3D): ThreeModelReferencePose;
54
+ /**
55
+ * Explicitly extend a reference after appending children, such as a generated
56
+ * skeleton. Existing structural paths, names, kinds and child order must match;
57
+ * removing or inserting before an existing child is incompatible. Existing
58
+ * captured data remains unchanged except child counts. Newly appended subtrees
59
+ * use their current local transforms beneath the CAPTURED parent world matrix,
60
+ * so playback and later scene placement never become the old rig's reference.
61
+ * Returns a new deeply frozen snapshot without mutating the model or previous
62
+ * data. Identical sibling swaps cannot be distinguished by structural identity.
63
+ */
64
+ export declare function extendModelReferencePose(model: Object3D, previous: ThreeModelReferencePose): ThreeModelReferencePose;
65
+ /**
66
+ * Resolve captured data against an identically structured model, including a fresh
67
+ * clone/load with new UUIDs. Names, types, bone flags, and child ordering must match;
68
+ * duplicate names are distinguished by structural path, never name lookup.
69
+ * Current transforms and the model's external scene parent are deliberately ignored.
70
+ * An incompatible hierarchy throws before a binding map is returned.
71
+ */
72
+ export declare function bindModelReferencePose(model: Object3D, referencePose: ThreeModelReferencePose): ReadonlyMap<Object3D, ThreeReferencePoseNode>;
73
+ export {};
@@ -0,0 +1,253 @@
1
+ import { Mesh, PerspectiveCamera, PlaneGeometry, Scene, ShadowMaterial, WebGLRenderer } from 'three';
2
+ import type { ColorRepresentation, Texture } from 'three';
3
+ import type { WebGPURenderer } from 'three/webgpu';
4
+ export type DefaultCharacterLightingSettings = {
5
+ envMapEnabled: boolean;
6
+ environmentIntensity: number;
7
+ environmentBlur: number;
8
+ exposure: number;
9
+ ambientIntensity: number;
10
+ keyIntensity: number;
11
+ fillIntensity: number;
12
+ rimIntensity: number;
13
+ shadowOpacity: number;
14
+ };
15
+ export declare const DEFAULT_CHARACTER_LIGHTING_PRESETS: {
16
+ readonly cleanStudio: {
17
+ readonly id: "cleanStudio";
18
+ readonly label: "Soft Studio";
19
+ readonly settings: {
20
+ readonly envMapEnabled: true;
21
+ readonly environmentIntensity: 0.24;
22
+ readonly environmentBlur: 0.04;
23
+ readonly exposure: 1.08;
24
+ readonly ambientIntensity: 0.32;
25
+ readonly keyIntensity: 0.52;
26
+ readonly fillIntensity: 0.18;
27
+ readonly rimIntensity: 0.08;
28
+ readonly shadowOpacity: 0.22;
29
+ };
30
+ };
31
+ readonly softFill: {
32
+ readonly id: "softFill";
33
+ readonly label: "Soft Fill";
34
+ readonly settings: {
35
+ readonly envMapEnabled: true;
36
+ readonly environmentIntensity: 0.3;
37
+ readonly environmentBlur: 0.04;
38
+ readonly exposure: 1.1;
39
+ readonly ambientIntensity: 0.38;
40
+ readonly keyIntensity: 0.44;
41
+ readonly fillIntensity: 0.24;
42
+ readonly rimIntensity: 0.1;
43
+ readonly shadowOpacity: 0.18;
44
+ };
45
+ };
46
+ readonly inspection: {
47
+ readonly id: "inspection";
48
+ readonly label: "Inspection";
49
+ readonly settings: {
50
+ readonly envMapEnabled: true;
51
+ readonly environmentIntensity: 0.45;
52
+ readonly environmentBlur: 0.035;
53
+ readonly exposure: 1.18;
54
+ readonly ambientIntensity: 0.48;
55
+ readonly keyIntensity: 0.58;
56
+ readonly fillIntensity: 0.32;
57
+ readonly rimIntensity: 0.14;
58
+ readonly shadowOpacity: 0.12;
59
+ };
60
+ };
61
+ readonly contrast: {
62
+ readonly id: "contrast";
63
+ readonly label: "Contrast";
64
+ readonly settings: {
65
+ readonly envMapEnabled: true;
66
+ readonly environmentIntensity: 0.2;
67
+ readonly environmentBlur: 0.035;
68
+ readonly exposure: 1.08;
69
+ readonly ambientIntensity: 0.25;
70
+ readonly keyIntensity: 0.7;
71
+ readonly fillIntensity: 0.12;
72
+ readonly rimIntensity: 0.22;
73
+ readonly shadowOpacity: 0.28;
74
+ };
75
+ };
76
+ };
77
+ export type DefaultCharacterLightingPresetId = keyof typeof DEFAULT_CHARACTER_LIGHTING_PRESETS;
78
+ export declare const DEFAULT_CHARACTER_LIGHTING_PRESET_ID: DefaultCharacterLightingPresetId;
79
+ export declare const DEFAULT_CHARACTER_LIGHTING_PRESET_IDS: DefaultCharacterLightingPresetId[];
80
+ export declare const DEFAULT_CHARACTER_LIGHTING_SETTINGS: DefaultCharacterLightingSettings;
81
+ export declare const CHARACTER_SCENE_TYPES: {
82
+ readonly studio: {
83
+ readonly id: "studio";
84
+ readonly label: "Studio";
85
+ readonly description: "Transparent background, soft studio lighting, ground shadow.";
86
+ readonly background: null;
87
+ readonly lightingPreset: "cleanStudio";
88
+ readonly shadowPlane: true;
89
+ };
90
+ readonly showcase: {
91
+ readonly id: "showcase";
92
+ readonly label: "Showcase";
93
+ readonly description: "Dark backdrop with contrasty key/rim lighting for presentation shots.";
94
+ readonly background: 1053206;
95
+ readonly lightingPreset: "contrast";
96
+ readonly shadowPlane: true;
97
+ };
98
+ readonly inspection: {
99
+ readonly id: "inspection";
100
+ readonly label: "Inspection";
101
+ readonly description: "Bright, even lighting on a light backdrop for close-up review.";
102
+ readonly background: 15264493;
103
+ readonly lightingPreset: "inspection";
104
+ readonly shadowPlane: true;
105
+ };
106
+ readonly void: {
107
+ readonly id: "void";
108
+ readonly label: "Void";
109
+ readonly description: "Transparent background, soft fill lighting, no ground shadow.";
110
+ readonly background: null;
111
+ readonly lightingPreset: "softFill";
112
+ readonly shadowPlane: false;
113
+ };
114
+ };
115
+ export type CharacterSceneTypeId = keyof typeof CHARACTER_SCENE_TYPES;
116
+ export declare const CHARACTER_SCENE_TYPE_IDS: CharacterSceneTypeId[];
117
+ export declare const DEFAULT_CHARACTER_SCENE_TYPE_ID: CharacterSceneTypeId;
118
+ export type DefaultCharacterSceneOptions = {
119
+ type?: CharacterSceneTypeId;
120
+ background?: ColorRepresentation | null;
121
+ cameraFov?: number;
122
+ pixelRatioCap?: number;
123
+ shadows?: boolean;
124
+ lightingPreset?: DefaultCharacterLightingPresetId;
125
+ lighting?: Partial<DefaultCharacterLightingSettings>;
126
+ shadowPlane?: boolean;
127
+ manageResize?: boolean;
128
+ };
129
+ export type DefaultCharacterSceneAsyncOptions = DefaultCharacterSceneOptions & {
130
+ /** Auto (default) tries native WebGPU initialization, then falls back to WebGL. */
131
+ renderer?: CharacterSceneRendererPreference;
132
+ /** Persistent settings take precedence over the legacy renderer option. */
133
+ rendering?: Partial<CharacterSceneRenderingSettings>;
134
+ /** Cancels construction, not ownership of a successfully returned scene. */
135
+ signal?: AbortSignal;
136
+ /** Compatibility notification; rendering snapshots also expose device loss. */
137
+ onDeviceLost?: (error: Error) => void;
138
+ };
139
+ export type CharacterSceneRenderer = WebGLRenderer | WebGPURenderer;
140
+ export type CharacterSceneBackend = 'webgl' | 'webgpu';
141
+ export type CharacterSceneRendererPreference = 'auto' | CharacterSceneBackend;
142
+ type CharacterScene<R extends CharacterSceneRenderer> = {
143
+ container: HTMLElement;
144
+ scene: Scene;
145
+ renderer: R;
146
+ camera: PerspectiveCamera;
147
+ lighting: ReturnType<typeof createDefaultCharacterLighting>;
148
+ shadowPlane: ReturnType<typeof createShadowPlane> | null;
149
+ sceneType: CharacterSceneTypeId;
150
+ ownsScene: true;
151
+ resize: () => void;
152
+ dispose: () => void;
153
+ };
154
+ export type DefaultCharacterScene = CharacterScene<WebGLRenderer>;
155
+ export type CharacterSceneRenderingSettings = {
156
+ preference: CharacterSceneRendererPreference;
157
+ };
158
+ export type CharacterSceneRenderingStatus = 'initializing' | 'switching' | 'ready' | 'error' | 'lost' | 'disposed';
159
+ export type CharacterSceneRenderingSnapshot = {
160
+ readonly settings: CharacterSceneRenderingSettings;
161
+ readonly status: CharacterSceneRenderingStatus;
162
+ readonly error: Error | null;
163
+ } & ({
164
+ readonly backend: 'webgl';
165
+ readonly renderer: WebGLRenderer;
166
+ } | {
167
+ readonly backend: 'webgpu';
168
+ readonly renderer: WebGPURenderer;
169
+ } | {
170
+ readonly backend: null;
171
+ readonly renderer: null;
172
+ });
173
+ export type CharacterSceneRendererLease = {
174
+ readonly renderer: CharacterSceneRenderer;
175
+ release(): void;
176
+ };
177
+ export interface CharacterSceneRenderingController {
178
+ getSettings(): CharacterSceneRenderingSettings;
179
+ getSnapshot(): CharacterSceneRenderingSnapshot;
180
+ setSettings(patch: Partial<CharacterSceneRenderingSettings>): Promise<CharacterSceneRenderingSnapshot>;
181
+ subscribe(listener: (snapshot: CharacterSceneRenderingSnapshot) => void): () => void;
182
+ /** Borrow for capture/readback; release in finally. Unavailable during switching/loss. */
183
+ acquireRenderer(): CharacterSceneRendererLease;
184
+ /** Drain borrowed work, then synchronously detach/free caller-owned resources, even after loss/disposal. */
185
+ releaseSceneResources(release: () => void): Promise<void>;
186
+ }
187
+ export type DefaultCharacterSceneRuntimeOptions = DefaultCharacterSceneAsyncOptions;
188
+ export type DefaultCharacterSceneRuntime = Omit<CharacterScene<CharacterSceneRenderer>, 'renderer' | 'dispose'> & {
189
+ readonly renderer: CharacterSceneRenderer | null;
190
+ readonly backend: CharacterSceneBackend | null;
191
+ dispose(): Promise<void>;
192
+ readonly rendering: CharacterSceneRenderingController;
193
+ readonly ready: Promise<CharacterSceneRenderingSnapshot>;
194
+ };
195
+ export type ReadyDefaultCharacterScene = ((Omit<DefaultCharacterScene, 'dispose'> & {
196
+ readonly backend: 'webgl';
197
+ }) | (Omit<CharacterScene<WebGPURenderer>, 'dispose'> & {
198
+ readonly backend: 'webgpu';
199
+ })) & {
200
+ readonly rendering: CharacterSceneRenderingController;
201
+ dispose(): Promise<void>;
202
+ };
203
+ export declare const normalizeDefaultCharacterLightingSettings: (value: unknown) => DefaultCharacterLightingSettings | null;
204
+ export declare function createShadowPlane(scene: Scene, options?: {
205
+ size?: number;
206
+ opacity?: number;
207
+ yPosition?: number;
208
+ }): Mesh<PlaneGeometry, ShadowMaterial, import("three").Object3DEventMap>;
209
+ export declare function createDefaultCharacterLighting(scene: Scene, renderer: WebGLRenderer, initial?: Partial<DefaultCharacterLightingSettings>): {
210
+ getSettings: () => {
211
+ envMapEnabled: boolean;
212
+ environmentIntensity: number;
213
+ environmentBlur: number;
214
+ exposure: number;
215
+ ambientIntensity: number;
216
+ keyIntensity: number;
217
+ fillIntensity: number;
218
+ rimIntensity: number;
219
+ shadowOpacity: number;
220
+ };
221
+ getEnvironmentTexture: () => Texture | null;
222
+ setSettings: (patch: Partial<DefaultCharacterLightingSettings>) => {
223
+ envMapEnabled: boolean;
224
+ environmentIntensity: number;
225
+ environmentBlur: number;
226
+ exposure: number;
227
+ ambientIntensity: number;
228
+ keyIntensity: number;
229
+ fillIntensity: number;
230
+ rimIntensity: number;
231
+ shadowOpacity: number;
232
+ };
233
+ setPreset: (id: DefaultCharacterLightingPresetId) => {
234
+ envMapEnabled: boolean;
235
+ environmentIntensity: number;
236
+ environmentBlur: number;
237
+ exposure: number;
238
+ ambientIntensity: number;
239
+ keyIntensity: number;
240
+ fillIntensity: number;
241
+ rimIntensity: number;
242
+ shadowOpacity: number;
243
+ };
244
+ subscribe: (listener: (value: DefaultCharacterLightingSettings) => void) => () => void;
245
+ dispose: () => void;
246
+ };
247
+ /** The existing synchronous WebGL path; it does not wait for shader compilation. */
248
+ export declare function createDefaultCharacterScene(container: HTMLElement, options?: DefaultCharacterSceneOptions): DefaultCharacterScene;
249
+ /** Stable scene ownership, including a recoverable initial renderer failure. */
250
+ export declare function createDefaultCharacterSceneRuntime(container: HTMLElement, options?: DefaultCharacterSceneRuntimeOptions): DefaultCharacterSceneRuntime;
251
+ /** Compatibility factory: failure releases all owned resources. Use the runtime factory for initial retry. */
252
+ export declare function createDefaultCharacterSceneAsync(container: HTMLElement, options?: DefaultCharacterSceneAsyncOptions): Promise<ReadyDefaultCharacterScene>;
253
+ export {};
@@ -0,0 +1,22 @@
1
+ import type { PerspectiveCamera, Scene } from 'three';
2
+ import type { CharacterSceneRenderer, CharacterSceneRenderingController } from './scene';
3
+ /** Adapter-private binding. Applications pass config.rendering to the camera controller. */
4
+ export type SceneRenderingBinding = {
5
+ suspend(): Promise<void>;
6
+ prepare(renderer: CharacterSceneRenderer): Promise<void>;
7
+ commit(renderer: CharacterSceneRenderer): Promise<void>;
8
+ onError(error: unknown): void;
9
+ };
10
+ type Owner = {
11
+ scene: Scene;
12
+ camera: PerspectiveCamera;
13
+ binding: SceneRenderingBinding | null;
14
+ disposed: boolean;
15
+ drain: Promise<void> | null;
16
+ settled: () => Promise<unknown> | null;
17
+ reportFailure: (error: unknown, renderer?: CharacterSceneRenderer | null) => void;
18
+ };
19
+ export declare function registerSceneRendering(controller: CharacterSceneRenderingController, scene: Scene, camera: PerspectiveCamera, settled: () => Promise<unknown> | null, reportFailure: (error: unknown, renderer?: CharacterSceneRenderer | null) => void): Owner;
20
+ export declare function bindSceneRendering(controller: CharacterSceneRenderingController, scene: Scene, camera: PerspectiveCamera, binding: SceneRenderingBinding): () => Promise<undefined> | null;
21
+ export declare function reportSceneRenderingFailure(controller: CharacterSceneRenderingController, error: unknown, renderer?: CharacterSceneRenderer | null): void;
22
+ export {};