@visant/extrude3d 0.1.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.
@@ -0,0 +1,441 @@
1
+ export const materialPresets = {
2
+ default: { label: 'Default', metalness: 0.15, roughness: 0.35, opacity: 1, transparent: false },
3
+ plastic: { label: 'Plastic', metalness: 0, roughness: 0.3, opacity: 1, transparent: false },
4
+ metal: { label: 'Metal', metalness: 0.9, roughness: 0.2, opacity: 1, transparent: false },
5
+ glass: { label: 'Glass', metalness: 0.1, roughness: 0.05, opacity: 0.35, transparent: true },
6
+ rubber: { label: 'Rubber', metalness: 0, roughness: 0.9, opacity: 1, transparent: false },
7
+ chrome: {
8
+ label: 'Chrome',
9
+ metalness: 1,
10
+ roughness: 0.05,
11
+ opacity: 1,
12
+ transparent: false,
13
+ reflectivity: 1,
14
+ },
15
+ gold: {
16
+ label: 'Gold',
17
+ metalness: 1,
18
+ roughness: 0.1,
19
+ opacity: 1,
20
+ transparent: false,
21
+ reflectivity: 1,
22
+ },
23
+ clay: { label: 'Clay', metalness: 0, roughness: 1, opacity: 1, transparent: false },
24
+ emissive: {
25
+ label: 'Emissive',
26
+ metalness: 0,
27
+ roughness: 0.5,
28
+ opacity: 1,
29
+ transparent: false,
30
+ emissiveIntensity: 0.8,
31
+ },
32
+ holographic: {
33
+ label: 'Holo',
34
+ metalness: 0.8,
35
+ roughness: 0.1,
36
+ opacity: 0.7,
37
+ transparent: true,
38
+ clearcoat: 1,
39
+ },
40
+ brushedSteel: {
41
+ label: 'Brushed Steel',
42
+ metalness: 1,
43
+ roughness: 0.35,
44
+ opacity: 1,
45
+ transparent: false,
46
+ reflectivity: 1,
47
+ },
48
+ aluminum: {
49
+ label: 'Aluminum',
50
+ metalness: 0.9,
51
+ roughness: 0.25,
52
+ opacity: 1,
53
+ transparent: false,
54
+ clearcoat: 0.4,
55
+ clearcoatRoughness: 0.15,
56
+ iridescence: 0.3,
57
+ iridescenceIOR: 1.5,
58
+ },
59
+ copper: {
60
+ label: 'Copper',
61
+ metalness: 1,
62
+ roughness: 0.15,
63
+ opacity: 1,
64
+ transparent: false,
65
+ reflectivity: 1,
66
+ },
67
+ roseGold: {
68
+ label: 'Rose Gold',
69
+ metalness: 1,
70
+ roughness: 0.12,
71
+ opacity: 1,
72
+ transparent: false,
73
+ reflectivity: 1,
74
+ },
75
+ platinum: {
76
+ label: 'Platinum',
77
+ metalness: 1,
78
+ roughness: 0.08,
79
+ opacity: 1,
80
+ transparent: false,
81
+ reflectivity: 1,
82
+ },
83
+ ceramic: {
84
+ label: 'Ceramic',
85
+ metalness: 0,
86
+ roughness: 0.1,
87
+ opacity: 1,
88
+ transparent: false,
89
+ clearcoat: 0.8,
90
+ clearcoatRoughness: 0.05,
91
+ ior: 1.52,
92
+ reflectivity: 0.5,
93
+ },
94
+ marble: {
95
+ label: 'Marble',
96
+ metalness: 0,
97
+ roughness: 0.2,
98
+ opacity: 1,
99
+ transparent: false,
100
+ clearcoat: 0.3,
101
+ clearcoatRoughness: 0.1,
102
+ ior: 1.486,
103
+ reflectivity: 0.5,
104
+ },
105
+ concrete: {
106
+ label: 'Concrete',
107
+ metalness: 0,
108
+ roughness: 0.95,
109
+ opacity: 1,
110
+ transparent: false,
111
+ reflectivity: 0.35,
112
+ },
113
+ wood: {
114
+ label: 'Wood',
115
+ metalness: 0,
116
+ roughness: 0.35,
117
+ opacity: 1,
118
+ transparent: false,
119
+ clearcoat: 0.5,
120
+ clearcoatRoughness: 0.1,
121
+ ior: 1.516,
122
+ reflectivity: 0.5,
123
+ },
124
+ velvet: {
125
+ label: 'Velvet',
126
+ metalness: 0,
127
+ roughness: 0.9,
128
+ opacity: 1,
129
+ transparent: false,
130
+ sheen: 1,
131
+ sheenRoughness: 0.5,
132
+ sheenColor: '#ffffff',
133
+ reflectivity: 0.35,
134
+ },
135
+ leather: {
136
+ label: 'Leather',
137
+ metalness: 0,
138
+ roughness: 0.6,
139
+ opacity: 1,
140
+ transparent: false,
141
+ sheen: 0.3,
142
+ sheenRoughness: 0.8,
143
+ sheenColor: '#332211',
144
+ reflectivity: 0.4,
145
+ },
146
+ frostedGlass: {
147
+ label: 'Frosted Glass',
148
+ metalness: 0,
149
+ roughness: 0.4,
150
+ opacity: 0.6,
151
+ transparent: true,
152
+ transmission: 0.95,
153
+ thickness: 1,
154
+ ior: 1.5,
155
+ reflectivity: 0.5,
156
+ },
157
+ diamond: {
158
+ label: 'Diamond',
159
+ metalness: 0,
160
+ roughness: 0,
161
+ opacity: 0.5,
162
+ transparent: true,
163
+ transmission: 0.95,
164
+ thickness: 2,
165
+ ior: 2.418,
166
+ iridescence: 0.15,
167
+ iridescenceIOR: 1.8,
168
+ reflectivity: 1,
169
+ },
170
+ pearl: {
171
+ label: 'Pearl',
172
+ metalness: 0,
173
+ roughness: 0.2,
174
+ opacity: 1,
175
+ transparent: false,
176
+ clearcoat: 0.6,
177
+ clearcoatRoughness: 0.05,
178
+ sheen: 0.4,
179
+ sheenRoughness: 0.3,
180
+ sheenColor: '#ffeedd',
181
+ iridescence: 1,
182
+ iridescenceIOR: 1.34,
183
+ ior: 1.53,
184
+ reflectivity: 0.6,
185
+ },
186
+ carbonFiber: {
187
+ label: 'Carbon Fiber',
188
+ metalness: 0.1,
189
+ roughness: 0.35,
190
+ opacity: 1,
191
+ transparent: false,
192
+ clearcoat: 0.8,
193
+ clearcoatRoughness: 0.05,
194
+ reflectivity: 0.5,
195
+ },
196
+ carPaint: {
197
+ label: 'Car Paint',
198
+ metalness: 0,
199
+ roughness: 0.4,
200
+ opacity: 1,
201
+ transparent: false,
202
+ clearcoat: 1,
203
+ clearcoatRoughness: 0.1,
204
+ reflectivity: 0.5,
205
+ },
206
+ ice: {
207
+ label: 'Ice',
208
+ metalness: 0,
209
+ roughness: 0.15,
210
+ opacity: 0.7,
211
+ transparent: true,
212
+ transmission: 0.9,
213
+ thickness: 1.5,
214
+ ior: 1.31,
215
+ reflectivity: 0.5,
216
+ },
217
+ obsidian: {
218
+ label: 'Obsidian',
219
+ metalness: 0,
220
+ roughness: 0.05,
221
+ opacity: 1,
222
+ transparent: false,
223
+ reflectivity: 0.5,
224
+ },
225
+ wax: {
226
+ label: 'Wax',
227
+ metalness: 0,
228
+ roughness: 0.5,
229
+ opacity: 0.95,
230
+ transparent: false,
231
+ transmission: 0.3,
232
+ thickness: 2,
233
+ ior: 1.445,
234
+ reflectivity: 0.4,
235
+ },
236
+ mattePaint: {
237
+ label: 'Matte Paint',
238
+ metalness: 0,
239
+ roughness: 0.9,
240
+ opacity: 1,
241
+ transparent: false,
242
+ reflectivity: 0.5,
243
+ },
244
+ y2kGloss: {
245
+ label: 'Y2K Gloss',
246
+ metalness: 0.35,
247
+ roughness: 0.08,
248
+ opacity: 1,
249
+ transparent: false,
250
+ clearcoat: 1,
251
+ clearcoatRoughness: 0.03,
252
+ iridescence: 0.4,
253
+ iridescenceIOR: 1.6,
254
+ reflectivity: 0.85,
255
+ },
256
+ liquidChrome: {
257
+ label: 'Liquid Chrome',
258
+ metalness: 1,
259
+ roughness: 0.02,
260
+ opacity: 1,
261
+ transparent: false,
262
+ clearcoat: 0.6,
263
+ clearcoatRoughness: 0.01,
264
+ reflectivity: 1,
265
+ iridescence: 0.15,
266
+ iridescenceIOR: 1.8,
267
+ },
268
+ candyInflate: {
269
+ label: 'Candy Inflate',
270
+ metalness: 0,
271
+ roughness: 0.15,
272
+ opacity: 1,
273
+ transparent: false,
274
+ clearcoat: 1,
275
+ clearcoatRoughness: 0.05,
276
+ sheen: 0.3,
277
+ sheenRoughness: 0.2,
278
+ sheenColor: '#ffffff',
279
+ reflectivity: 0.7,
280
+ ior: 1.45,
281
+ },
282
+ soapBubble: {
283
+ label: 'Soap Bubble',
284
+ metalness: 0,
285
+ roughness: 0.02,
286
+ opacity: 0.15,
287
+ transparent: true,
288
+ transmission: 0.98,
289
+ thickness: 0.1,
290
+ ior: 1.33,
291
+ iridescence: 1,
292
+ iridescenceIOR: 1.3,
293
+ clearcoat: 1,
294
+ clearcoatRoughness: 0,
295
+ reflectivity: 0.8,
296
+ },
297
+ opal: {
298
+ label: 'Opal',
299
+ metalness: 0,
300
+ roughness: 0.12,
301
+ opacity: 1,
302
+ transparent: false,
303
+ clearcoat: 0.8,
304
+ clearcoatRoughness: 0.03,
305
+ sheen: 0.6,
306
+ sheenRoughness: 0.25,
307
+ sheenColor: '#c4b5fd',
308
+ iridescence: 1,
309
+ iridescenceIOR: 1.45,
310
+ ior: 1.45,
311
+ reflectivity: 0.65,
312
+ },
313
+ neonTube: {
314
+ label: 'Neon Tube',
315
+ metalness: 0,
316
+ roughness: 0.08,
317
+ opacity: 0.85,
318
+ transparent: true,
319
+ emissiveIntensity: 1.5,
320
+ clearcoat: 1,
321
+ clearcoatRoughness: 0.02,
322
+ ior: 1.5,
323
+ reflectivity: 0.6,
324
+ },
325
+ resin: {
326
+ label: 'Resin',
327
+ metalness: 0,
328
+ roughness: 0.05,
329
+ opacity: 1,
330
+ transparent: false,
331
+ transmission: 0.4,
332
+ thickness: 3,
333
+ ior: 1.52,
334
+ clearcoat: 0.6,
335
+ clearcoatRoughness: 0.04,
336
+ reflectivity: 0.55,
337
+ },
338
+ titanium: {
339
+ label: 'Titanium',
340
+ metalness: 0.75,
341
+ roughness: 0.22,
342
+ opacity: 1,
343
+ transparent: false,
344
+ clearcoat: 0.2,
345
+ clearcoatRoughness: 0.1,
346
+ reflectivity: 0.7,
347
+ },
348
+ };
349
+ /**
350
+ * Curated, ordered subset of materials surfaced in the Studio3D UI, grouped by
351
+ * category. Ordering and grouping are intentional and load-bearing for the UI.
352
+ */
353
+ export const MATERIAL_UI = [
354
+ // Basic
355
+ { id: 'default', category: 'basic' },
356
+ { id: 'plastic', category: 'basic' },
357
+ { id: 'clay', category: 'basic', color: '#e8ddd3' },
358
+ { id: 'emissive', category: 'basic' },
359
+ // Metals
360
+ { id: 'chrome', category: 'metals', color: '#cccccc' },
361
+ { id: 'brushedSteel', category: 'metals', color: '#c0c0c0' },
362
+ { id: 'gold', category: 'metals', color: '#ffd891' },
363
+ { id: 'roseGold', category: 'metals', color: '#e8a090' },
364
+ { id: 'copper', category: 'metals', color: '#f7bc9e' },
365
+ // Surfaces
366
+ { id: 'marble', category: 'surfaces', color: '#e8e0d8' },
367
+ { id: 'wood', category: 'surfaces', color: '#8b6a4a' },
368
+ { id: 'leather', category: 'surfaces', color: '#6b4226' },
369
+ { id: 'carbonFiber', category: 'surfaces', color: '#222222' },
370
+ { id: 'carPaint', category: 'surfaces' },
371
+ // Glass & Gem
372
+ { id: 'glass', category: 'glass' },
373
+ { id: 'frostedGlass', category: 'glass', label: 'Frosted' },
374
+ { id: 'diamond', category: 'glass', color: '#ffffff' },
375
+ // Special
376
+ { id: 'pearl', category: 'special', color: '#fef0e0' },
377
+ { id: 'obsidian', category: 'special', color: '#1a1a1a' },
378
+ { id: 'holographic', category: 'special' },
379
+ { id: 'y2kGloss', category: 'special', label: 'Y2K Gloss' },
380
+ { id: 'liquidChrome', category: 'metals', color: '#e0e0e0' },
381
+ { id: 'titanium', category: 'metals', color: '#8a8a8a' },
382
+ { id: 'candyInflate', category: 'special', label: 'Candy' },
383
+ { id: 'soapBubble', category: 'glass' },
384
+ { id: 'opal', category: 'special', color: '#e8dff5' },
385
+ { id: 'neonTube', category: 'special' },
386
+ { id: 'resin', category: 'glass' },
387
+ ];
388
+ /**
389
+ * Fully-resolved UI material list: every entry carries a concrete `label`
390
+ * (override or the PBR-derived default). This is the single list the Studio3D
391
+ * panels iterate over.
392
+ */
393
+ export const MATERIAL_LIB = MATERIAL_UI.map((entry) => ({
394
+ ...entry,
395
+ label: entry.label ?? materialPresets[entry.id].label,
396
+ }));
397
+ export function resolveMaterial(preset, overrides) {
398
+ const base = materialPresets[preset] ?? materialPresets.default;
399
+ const opacity = overrides.opacity ?? base.opacity;
400
+ return {
401
+ preset,
402
+ metalness: overrides.metalness ?? base.metalness,
403
+ roughness: overrides.roughness ?? base.roughness,
404
+ opacity,
405
+ transparent: base.transparent || opacity < 1,
406
+ wireframe: overrides.wireframe ?? false,
407
+ emissiveIntensity: overrides.emissiveIntensity ?? base.emissiveIntensity,
408
+ clearcoat: overrides.clearcoat ?? base.clearcoat,
409
+ clearcoatRoughness: overrides.clearcoatRoughness ?? base.clearcoatRoughness,
410
+ sheen: overrides.sheen ?? base.sheen,
411
+ sheenRoughness: overrides.sheenRoughness ?? base.sheenRoughness,
412
+ sheenColor: overrides.sheenColor ?? base.sheenColor,
413
+ transmission: overrides.transmission ?? base.transmission,
414
+ thickness: overrides.thickness ?? base.thickness,
415
+ ior: overrides.ior ?? base.ior,
416
+ iridescence: overrides.iridescence ?? base.iridescence,
417
+ iridescenceIOR: overrides.iridescenceIOR ?? base.iridescenceIOR,
418
+ reflectivity: overrides.reflectivity ?? base.reflectivity,
419
+ };
420
+ }
421
+ export function getSimpleMaterialProps(preset, color) {
422
+ const base = materialPresets[preset] ?? materialPresets.default;
423
+ const emissiveIntensity = base.emissiveIntensity || 0;
424
+ return {
425
+ color,
426
+ metalness: base.metalness,
427
+ roughness: base.roughness,
428
+ opacity: base.opacity,
429
+ transparent: base.transparent,
430
+ emissiveIntensity,
431
+ emissive: emissiveIntensity ? color : '#000000',
432
+ clearcoat: base.clearcoat || 0,
433
+ clearcoatRoughness: base.clearcoatRoughness || 0,
434
+ sheen: base.sheen || 0,
435
+ sheenRoughness: base.sheenRoughness || 0,
436
+ transmission: base.transmission || 0,
437
+ ior: base.ior || 1.5,
438
+ iridescence: base.iridescence || 0,
439
+ };
440
+ }
441
+ //# sourceMappingURL=materials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"materials.js","sourceRoot":"","sources":["../src/materials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Bevel inputs forwarded to {@link buildExtrudedGeometry}. These mirror the
3
+ * user-facing controls of the Studio3D engine (a 0–1 `smoothness` knob, plus
4
+ * optional bevel thickness/size scalars) — NOT raw three.js ExtrudeGeometry
5
+ * settings, which are derived internally from these + the SVG's flat bounds.
6
+ */
7
+ export interface BevelOptions {
8
+ bevelEnabled?: boolean;
9
+ bevelThickness?: number;
10
+ bevelSize?: number;
11
+ }
12
+ /** Options for {@link buildExtrudedGeometry}. */
13
+ export interface BuildExtrudedGeometryOptions extends BevelOptions {
14
+ /** Extrusion depth knob (engine units, 0–10ish). Scaled by the flat bounds. */
15
+ depth: number;
16
+ /** Smoothness 0–1 → drives bevel segments + curve subdivisions. */
17
+ smoothness: number;
18
+ /**
19
+ * Vertex budget shared across all shapes in the SVG. Bevel/curve segment
20
+ * counts are reduced when the estimate exceeds the per-shape share.
21
+ * @default 600000
22
+ */
23
+ vertexBudget?: number;
24
+ /**
25
+ * Crease angle (radians) below which adjacent face normals are averaged
26
+ * (smoothed). Above it edges stay sharp. `null`/`undefined` skips the
27
+ * crease-smoothing pass and uses three's `computeVertexNormals`.
28
+ * @default Math.PI / 6
29
+ */
30
+ creaseAngle?: number | null;
31
+ }
32
+ /** Result of {@link buildExtrudedGeometry}. */
33
+ export interface ExtrudedGeometryResult {
34
+ /** The merged, normal-smoothed, UV'd extruded geometry. */
35
+ geometry: import('three').BufferGeometry;
36
+ /** Bounding-box center of the geometry. */
37
+ center: import('three').Vector3;
38
+ /**
39
+ * Uniform scale that fits the geometry's largest dimension into a 4-unit box
40
+ * (`4 / maxDim`), matching the Studio3D engine's `baseScale`.
41
+ */
42
+ baseScale: number;
43
+ /** Number of shapes extracted from the SVG. */
44
+ shapeCount: number;
45
+ }
46
+ /**
47
+ * Structural subset of an opentype.js `Font` used by {@link textToSvg}. Declared
48
+ * here so the package never has to import (or depend on) `opentype.js` — callers
49
+ * pass whatever font object they already loaded.
50
+ */
51
+ export interface OpenTypeFontLike {
52
+ unitsPerEm?: number;
53
+ getPath(text: string, x: number, y: number, fontSize: number): OpenTypePathLike;
54
+ stringToGlyphs(text: string): OpenTypeGlyphLike[];
55
+ getKerningValue(left: OpenTypeGlyphLike, right: OpenTypeGlyphLike): number;
56
+ }
57
+ export interface OpenTypePathLike {
58
+ getBoundingBox(): {
59
+ x1: number;
60
+ y1: number;
61
+ x2: number;
62
+ y2: number;
63
+ };
64
+ toPathData(decimals?: number): string;
65
+ }
66
+ export interface OpenTypeGlyphLike {
67
+ advanceWidth?: number;
68
+ getPath(x: number, y: number, fontSize: number): OpenTypePathLike;
69
+ }
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iDAAiD;AACjD,MAAM,WAAW,4BAA6B,SAAQ,YAAY;IAChE,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,+CAA+C;AAC/C,MAAM,WAAW,sBAAsB;IACrC,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,OAAO,EAAE,cAAc,CAAC;IACzC,2CAA2C;IAC3C,MAAM,EAAE,OAAO,OAAO,EAAE,OAAO,CAAC;IAChC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAChF,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;IAClD,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAAC;CAC5E;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,IAAI;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC;CACnE"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@visant/extrude3d",
3
+ "version": "0.1.0",
4
+ "description": "SVG / text → extruded 3D geometry. Pure three.js: parse an SVG (or opentype glyphs) into shapes, extrude with bevel/curve/smoothness controls, smooth crease normals, triplanar UVs, center + scale — plus a PBR material-preset library and a dependency-free GLB serializer. No React, no R3F.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": "Visant Labs",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/pedrojaques99/visantlabs-os",
11
+ "directory": "packages/extrude3d"
12
+ },
13
+ "keywords": [
14
+ "three",
15
+ "threejs",
16
+ "svg",
17
+ "extrude",
18
+ "geometry",
19
+ "3d",
20
+ "glb",
21
+ "gltf",
22
+ "text-to-3d",
23
+ "opentype",
24
+ "pbr",
25
+ "materials"
26
+ ],
27
+ "sideEffects": false,
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js"
32
+ },
33
+ "./materials": {
34
+ "types": "./dist/materials.d.ts",
35
+ "import": "./dist/materials.js"
36
+ },
37
+ "./fonts": {
38
+ "types": "./dist/fonts.d.ts",
39
+ "import": "./dist/fonts.js"
40
+ },
41
+ "./glb": {
42
+ "types": "./dist/glb.d.ts",
43
+ "import": "./dist/glb.js"
44
+ }
45
+ },
46
+ "files": ["dist", "README.md"],
47
+ "scripts": {
48
+ "build": "tsc -p tsconfig.json",
49
+ "prepare": "tsc -p tsconfig.json",
50
+ "prepublishOnly": "npm run build"
51
+ },
52
+ "peerDependencies": {
53
+ "three": ">=0.160",
54
+ "opentype.js": ">=1"
55
+ },
56
+ "peerDependenciesMeta": {
57
+ "opentype.js": {
58
+ "optional": true
59
+ }
60
+ },
61
+ "devDependencies": {
62
+ "typescript": "~5.8.2"
63
+ }
64
+ }