manim-web 0.17.0 → 0.19.0
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/dist/MTLLoader-C4f4JmoY.js +169 -0
- package/dist/MTLLoader-CuV0f5vX.js +169 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/integrations/react.js +17 -17
- package/dist/integrations/vue.js +16 -16
- package/dist/manim-web.browser.js +1474 -1092
- package/dist/mobjects/svg/SVGMobject.d.ts.map +1 -1
- package/dist/mobjects/svg/index.d.ts +1 -0
- package/dist/mobjects/svg/index.d.ts.map +1 -1
- package/dist/mobjects/svg/svgFill.d.ts +11 -0
- package/dist/mobjects/svg/svgFill.d.ts.map +1 -1
- package/dist/mobjects/svg/svgImage.d.ts.map +1 -1
- package/dist/mobjects/svg/svgPatterns.d.ts +90 -0
- package/dist/mobjects/svg/svgPatterns.d.ts.map +1 -0
- package/dist/mobjects/svg/svgText.d.ts.map +1 -1
- package/dist/mobjects/table/Table.d.ts +67 -130
- package/dist/mobjects/table/Table.d.ts.map +1 -1
- package/dist/mobjects/table/TableVariants.d.ts +132 -0
- package/dist/mobjects/table/TableVariants.d.ts.map +1 -0
- package/dist/mobjects/table/index.d.ts +2 -1
- package/dist/mobjects/table/index.d.ts.map +1 -1
- package/dist/mobjects/three-d/InstancedMobject.d.ts +130 -0
- package/dist/mobjects/three-d/InstancedMobject.d.ts.map +1 -0
- package/dist/mobjects/three-d/ModelMobject.d.ts +19 -1
- package/dist/mobjects/three-d/ModelMobject.d.ts.map +1 -1
- package/dist/mobjects/three-d/index.d.ts +1 -0
- package/dist/mobjects/three-d/index.d.ts.map +1 -1
- package/dist/mobjects/three-d/objMaterials.d.ts +54 -0
- package/dist/mobjects/three-d/objMaterials.d.ts.map +1 -0
- package/dist/{src-BDtZsFr6.js → src-B3jkHw_D.js} +1450 -1068
- package/package.json +1 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Mobject, Vector3Tuple } from '../../core/Mobject';
|
|
2
|
+
import { Mobject3D } from './Mobject3D';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
/**
|
|
5
|
+
* A single instance of the shared template geometry.
|
|
6
|
+
*
|
|
7
|
+
* `position` is required. `rotation` is a Euler tuple in radians (`XYZ` order).
|
|
8
|
+
* `scale` is a uniform factor or a per-axis tuple. `color` is a CSS color string
|
|
9
|
+
* applied to this instance only; omit it to keep the material color.
|
|
10
|
+
*/
|
|
11
|
+
export interface InstanceTransform {
|
|
12
|
+
/** Instance position [x, y, z]. */
|
|
13
|
+
position: Vector3Tuple;
|
|
14
|
+
/** Euler rotation [x, y, z] in radians (XYZ order). Default: no rotation. */
|
|
15
|
+
rotation?: Vector3Tuple;
|
|
16
|
+
/** Uniform scale, or per-axis [x, y, z] scale. Default: 1. */
|
|
17
|
+
scale?: number | Vector3Tuple;
|
|
18
|
+
/** Per-instance CSS color. Default: inherit the material color. */
|
|
19
|
+
color?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Options for creating an {@link InstancedMobject}.
|
|
23
|
+
*
|
|
24
|
+
* Provide a template as either an explicit `geometry` + `material`, or a
|
|
25
|
+
* `template` mobject to derive both from. If none is given, a unit box with a
|
|
26
|
+
* standard material is used.
|
|
27
|
+
*/
|
|
28
|
+
export interface InstancedMobjectOptions {
|
|
29
|
+
/** Geometry shared by every instance. Cloned on {@link InstancedMobject.copy}. */
|
|
30
|
+
geometry?: THREE.BufferGeometry;
|
|
31
|
+
/** Material shared by every instance. Cloned on {@link InstancedMobject.copy}. */
|
|
32
|
+
material?: THREE.Material;
|
|
33
|
+
/** Template mobject to derive geometry and material from (cloned, not kept). */
|
|
34
|
+
template?: Mobject;
|
|
35
|
+
/** Per-instance transforms. Default: empty (no instances). */
|
|
36
|
+
instances?: InstanceTransform[];
|
|
37
|
+
/** Base material color as a CSS color string. Default: '#ffffff'. */
|
|
38
|
+
color?: string;
|
|
39
|
+
/** Material opacity from 0 to 1. Default: 1. */
|
|
40
|
+
opacity?: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* InstancedMobject - renders many copies of one template via `THREE.InstancedMesh`.
|
|
44
|
+
*
|
|
45
|
+
* This is a safe, opt-in mobject for large scenes. It draws `count` copies of a
|
|
46
|
+
* single geometry + material in ONE draw call, instead of one mesh per copy.
|
|
47
|
+
* It does not change the default render path: scenes that do not use it are
|
|
48
|
+
* unaffected.
|
|
49
|
+
*
|
|
50
|
+
* Each instance has its own transform (position, optional rotation and scale)
|
|
51
|
+
* and an optional per-instance color. Use {@link setInstances} to replace the
|
|
52
|
+
* whole set, or {@link setInstanceTransform} / {@link setInstanceColor} to
|
|
53
|
+
* update one instance in place.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const dots = new InstancedMobject({
|
|
58
|
+
* geometry: new THREE.SphereGeometry(0.1, 16, 16),
|
|
59
|
+
* material: new THREE.MeshStandardMaterial(),
|
|
60
|
+
* instances: [
|
|
61
|
+
* { position: [0, 0, 0], color: '#ff0000' },
|
|
62
|
+
* { position: [1, 0, 0], scale: 2 },
|
|
63
|
+
* ],
|
|
64
|
+
* });
|
|
65
|
+
* scene.add(dots);
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare class InstancedMobject extends Mobject3D {
|
|
69
|
+
private _geometry;
|
|
70
|
+
private _material;
|
|
71
|
+
private _instances;
|
|
72
|
+
/** The single InstancedMesh; null until the Three.js object is built. */
|
|
73
|
+
private _mesh;
|
|
74
|
+
constructor(options?: InstancedMobjectOptions);
|
|
75
|
+
/**
|
|
76
|
+
* Resolve the shared geometry and material from the options.
|
|
77
|
+
* Order: explicit geometry/material, then a template mobject, then a default
|
|
78
|
+
* unit box. A geometry or material derived from a template is cloned so the
|
|
79
|
+
* template is never mutated or disposed by this mobject.
|
|
80
|
+
*/
|
|
81
|
+
private static _resolveTemplate;
|
|
82
|
+
/** Find the first Mesh in a Three.js subtree, or null if there is none. */
|
|
83
|
+
private static _findMesh;
|
|
84
|
+
/** Deep-copy one instance transform so callers cannot alias our state. */
|
|
85
|
+
private static _cloneTransform;
|
|
86
|
+
/**
|
|
87
|
+
* Build the InstancedMesh with `count = instances.length` and fill its matrix
|
|
88
|
+
* and color buffers. Wrapped in a Group so a later count change can swap the
|
|
89
|
+
* mesh without touching the scene-graph parent.
|
|
90
|
+
*/
|
|
91
|
+
protected _createThreeObject(): THREE.Object3D;
|
|
92
|
+
/** Create a fresh InstancedMesh for the current instances and populate it. */
|
|
93
|
+
private _buildMesh;
|
|
94
|
+
/** Write every instance matrix (and color, when present) into `mesh`. */
|
|
95
|
+
private _writeAllInstances;
|
|
96
|
+
/** Compose a transform matrix for one instance into `out`. */
|
|
97
|
+
private static _composeMatrix;
|
|
98
|
+
/** Sync base material color and opacity onto the shared material. */
|
|
99
|
+
protected _syncMaterialToThree(): void;
|
|
100
|
+
/**
|
|
101
|
+
* Replace all instances. Reuses the existing mesh when the count is unchanged;
|
|
102
|
+
* otherwise rebuilds the InstancedMesh (its count is fixed at construction).
|
|
103
|
+
*/
|
|
104
|
+
setInstances(instances: InstanceTransform[]): this;
|
|
105
|
+
/** Update one instance transform in place and flag the matrix buffer. */
|
|
106
|
+
setInstanceTransform(index: number, transform: Partial<InstanceTransform>): this;
|
|
107
|
+
/** Update one instance color in place and flag the color buffer. */
|
|
108
|
+
setInstanceColor(index: number, color: string): this;
|
|
109
|
+
private _assertIndex;
|
|
110
|
+
/** Number of instances this mobject draws. */
|
|
111
|
+
getInstanceCount(): number;
|
|
112
|
+
/** The single backing InstancedMesh, building the Three.js object if needed. */
|
|
113
|
+
getInstancedMesh(): THREE.InstancedMesh;
|
|
114
|
+
/** The transform of instance `index` as a Matrix4 (reads back from the mesh). */
|
|
115
|
+
getInstanceMatrix(index: number, out?: THREE.Matrix4): THREE.Matrix4;
|
|
116
|
+
/** The shared geometry used by every instance. */
|
|
117
|
+
getGeometry(): THREE.BufferGeometry;
|
|
118
|
+
/** The shared material used by every instance. */
|
|
119
|
+
getMaterial(): THREE.Material;
|
|
120
|
+
/**
|
|
121
|
+
* An instance cloud is empty only when it has no instances. The base
|
|
122
|
+
* {@link Mobject.getCenter} / {@link Mobject.getBounds} then skip the bounding
|
|
123
|
+
* box, which would be empty and throw.
|
|
124
|
+
*/
|
|
125
|
+
isEmpty(): boolean;
|
|
126
|
+
/** Dispose the InstancedMesh buffers, geometry, and material. No leaks. */
|
|
127
|
+
dispose(): void;
|
|
128
|
+
copy(): InstancedMobject;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=InstancedMobject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InstancedMobject.d.ts","sourceRoot":"","sources":["../../../src/mobjects/three-d/InstancedMobject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,QAAQ,EAAE,YAAY,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAC9B,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC;IAChC,kFAAkF;IAClF,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC1B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,UAAU,CAAsB;IACxC,yEAAyE;IACzE,OAAO,CAAC,KAAK,CAAoC;gBAErC,OAAO,GAAE,uBAA4B;IAsBjD;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAiC/B,2EAA2E;IAC3E,OAAO,CAAC,MAAM,CAAC,SAAS;IAQxB,0EAA0E;IAC1E,OAAO,CAAC,MAAM,CAAC,eAAe;IAQ9B;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,IAAI,KAAK,CAAC,QAAQ;IAO9C,8EAA8E;IAC9E,OAAO,CAAC,UAAU;IAMlB,yEAAyE;IACzE,OAAO,CAAC,kBAAkB;IAe1B,8DAA8D;IAC9D,OAAO,CAAC,MAAM,CAAC,cAAc;IAW7B,qEAAqE;cAClD,oBAAoB,IAAI,IAAI;IAQ/C;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,IAAI;IAgBlD,yEAAyE;IACzE,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAiBhF,oEAAoE;IACpE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWpD,OAAO,CAAC,YAAY;IAQpB,8CAA8C;IAC9C,gBAAgB,IAAI,MAAM;IAI1B,gFAAgF;IAChF,gBAAgB,IAAI,KAAK,CAAC,aAAa;IAQvC,iFAAiF;IACjF,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,KAAK,CAAC,OAA6B,GAAG,KAAK,CAAC,OAAO;IAMzF,kDAAkD;IAClD,WAAW,IAAI,KAAK,CAAC,cAAc;IAInC,kDAAkD;IAClD,WAAW,IAAI,KAAK,CAAC,QAAQ;IAI7B;;;;OAIG;IACM,OAAO,IAAI,OAAO;IAI3B,2EAA2E;IAClE,OAAO,IAAI,IAAI;IAOf,IAAI,IAAI,gBAAgB;CAWlC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Vector3Tuple } from '../../core/Mobject';
|
|
2
2
|
import { Mobject3D } from './Mobject3D';
|
|
3
|
+
import { MtlLoader } from './objMaterials';
|
|
3
4
|
/**
|
|
4
5
|
* ModelMobject - import an external 3D model (glTF / .glb / .obj) as a mobject.
|
|
5
6
|
*
|
|
@@ -56,12 +57,25 @@ export interface ModelMobjectOptions {
|
|
|
56
57
|
center?: boolean;
|
|
57
58
|
/** Convenience fill color applied to every mesh material. */
|
|
58
59
|
color?: string;
|
|
59
|
-
/** Replace every mesh material with this one. Wins over `color
|
|
60
|
+
/** Replace every mesh material with this one. Wins over `color` and MTL. */
|
|
60
61
|
materialOverride?: THREE.Material;
|
|
62
|
+
/**
|
|
63
|
+
* For .obj only: explicit companion .mtl URL. Its materials and texture maps
|
|
64
|
+
* apply to the meshes. `materialOverride` and `color` still win over them.
|
|
65
|
+
* Ignored for glTF, which embeds its materials natively.
|
|
66
|
+
*/
|
|
67
|
+
mtlUrl?: string;
|
|
68
|
+
/**
|
|
69
|
+
* For .obj only: auto-derive the .mtl URL from the .obj URL and load it.
|
|
70
|
+
* `mtlUrl` takes priority when both are set. Default: false.
|
|
71
|
+
*/
|
|
72
|
+
loadMaterials?: boolean;
|
|
61
73
|
/** Progress callback forwarded to the loader. */
|
|
62
74
|
onProgress?: (event: ProgressEvent) => void;
|
|
63
75
|
/** Inject a loader directly (bypasses the factory and the network). */
|
|
64
76
|
loader?: ModelLoader;
|
|
77
|
+
/** Inject an MTLLoader directly (bypasses the factory and the network). */
|
|
78
|
+
mtlLoader?: MtlLoader;
|
|
65
79
|
/**
|
|
66
80
|
* When false, a load failure resolves to an empty ModelMobject whose
|
|
67
81
|
* {@link ModelMobject.getLoadError} holds the error instead of rejecting.
|
|
@@ -96,6 +110,10 @@ export declare class ModelMobject extends Mobject3D {
|
|
|
96
110
|
* The loader is chosen from the extension: `.glb` / `.gltf` -> GLTFLoader,
|
|
97
111
|
* `.obj` -> OBJLoader. Inject a loader with the `loader` option (or
|
|
98
112
|
* `setModelLoaderFactory`) to avoid the network, e.g. in tests.
|
|
113
|
+
*
|
|
114
|
+
* For `.obj`, set `mtlUrl` (or `loadMaterials: true` to derive the .mtl URL)
|
|
115
|
+
* to load the companion .mtl and apply its materials and texture maps before
|
|
116
|
+
* the OBJ parse. `materialOverride` and `color` still win over them.
|
|
99
117
|
*/
|
|
100
118
|
static fromUrl(url: string, options?: ModelMobjectOptions): Promise<ModelMobject>;
|
|
101
119
|
/** Offset the center group so the model's bounding box sits at the origin. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelMobject.d.ts","sourceRoot":"","sources":["../../../src/mobjects/three-d/ModelMobject.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ModelMobject.d.ts","sourceRoot":"","sources":["../../../src/mobjects/three-d/ModelMobject.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,4 +20,5 @@ export { Prism, Dot3D, ThreeDVMobject, type PrismOptions, type Dot3DOptions, typ
|
|
|
20
20
|
export { ConvexHull3D, type ConvexHull3DOptions } from './ConvexHull3D';
|
|
21
21
|
export { marchingCubes, type MarchingCubesOptions, type MarchingCubesResult, type ScalarField3D, } from './marchingCubes';
|
|
22
22
|
export { ImplicitSurface, type ImplicitSurfaceOptions } from './ImplicitSurface';
|
|
23
|
+
export { InstancedMobject, type InstancedMobjectOptions, type InstanceTransform, } from './InstancedMobject';
|
|
23
24
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mobjects/three-d/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EACL,KAAK,EACL,KAAK,EACL,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mobjects/three-d/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,EACZ,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,wBAAwB,GAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,eAAe,EACf,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EACL,KAAK,EACL,KAAK,EACL,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGxE,OAAO,EACL,aAAa,EACb,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGjF,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ModelLoader } from './ModelMobject';
|
|
2
|
+
/** A preloaded MTL material set. Three.js MaterialCreator satisfies it. */
|
|
3
|
+
export interface MtlMaterials {
|
|
4
|
+
preload(): void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The minimal MTLLoader contract ModelMobject needs. Three.js MTLLoader
|
|
8
|
+
* satisfies it structurally. Tests implement it with a stub.
|
|
9
|
+
*/
|
|
10
|
+
export interface MtlLoader {
|
|
11
|
+
setPath(path: string): MtlLoader;
|
|
12
|
+
setResourcePath(path: string): MtlLoader;
|
|
13
|
+
loadAsync(url: string, onProgress?: (event: ProgressEvent) => void): Promise<MtlMaterials>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The OBJLoader subset that accepts materials. OBJLoader.setMaterials applies
|
|
17
|
+
* the given materials to the meshes it then parses.
|
|
18
|
+
*/
|
|
19
|
+
export interface ObjMaterialSink {
|
|
20
|
+
setMaterials(materials: MtlMaterials): void;
|
|
21
|
+
}
|
|
22
|
+
/** Builds an MTLLoader. The DI seam set by `setMtlLoaderFactory`. */
|
|
23
|
+
export type MtlLoaderFactory = () => MtlLoader | Promise<MtlLoader>;
|
|
24
|
+
/** The options that drive OBJ material loading. A subset of ModelMobjectOptions. */
|
|
25
|
+
export interface ObjMaterialOptions {
|
|
26
|
+
/** Explicit companion .mtl URL. Takes priority over `loadMaterials`. */
|
|
27
|
+
mtlUrl?: string;
|
|
28
|
+
/** Auto-derive the .mtl URL from the .obj URL and load it. Default: false. */
|
|
29
|
+
loadMaterials?: boolean;
|
|
30
|
+
/** Inject an MTLLoader directly (bypasses the factory and the network). */
|
|
31
|
+
mtlLoader?: MtlLoader;
|
|
32
|
+
/** Progress callback forwarded to the MTLLoader. */
|
|
33
|
+
onProgress?: (event: ProgressEvent) => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Inject an MTLLoader factory, replacing the lazy-loaded Three.js MTLLoader.
|
|
37
|
+
* Pass `null` to restore the default. Tests use this to avoid any real loader.
|
|
38
|
+
*/
|
|
39
|
+
export declare function setMtlLoaderFactory(factory: MtlLoaderFactory | null): void;
|
|
40
|
+
/** The directory part of a URL, with its trailing slash; ignores query and fragment. */
|
|
41
|
+
export declare function deriveBasePath(url: string): string;
|
|
42
|
+
/** The companion .mtl URL for an .obj URL (same name, .mtl extension). */
|
|
43
|
+
export declare function deriveMtlUrl(objUrl: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Load the companion .mtl and hand its materials to the OBJ loader before it
|
|
46
|
+
* parses. Call this on the resolved OBJ loader before `loadAsync`.
|
|
47
|
+
*
|
|
48
|
+
* It is a no-op when neither `mtlUrl` nor `loadMaterials` is set (so an OBJ
|
|
49
|
+
* loads exactly as before), and when the loader cannot accept materials. The
|
|
50
|
+
* MTLLoader base path and resource path come from the .mtl URL, so texture maps
|
|
51
|
+
* named in the .mtl load from the same directory.
|
|
52
|
+
*/
|
|
53
|
+
export declare function applyObjMaterials(loader: ModelLoader, objUrl: string, options: ObjMaterialOptions): Promise<void>;
|
|
54
|
+
//# sourceMappingURL=objMaterials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"objMaterials.d.ts","sourceRoot":"","sources":["../../../src/mobjects/three-d/objMaterials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,2EAA2E;AAC3E,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5F;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7C;AAED,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEpE,oFAAoF;AACpF,MAAM,WAAW,kBAAkB;IACjC,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,oDAAoD;IACpD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC7C;AAKD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAE1E;AAeD,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIlD;AASD,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGnD;AAcD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAWf"}
|