three-low-poly 0.9.12 → 0.9.13

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,1360 @@
1
+ import { BoxGeometry } from 'three';
2
+ import { BufferGeometry } from 'three';
3
+ import { Color } from 'three';
4
+ import { DataTexture } from 'three';
5
+ import { Group } from 'three';
6
+ import { InstancedMesh } from 'three';
7
+ import { Material } from 'three';
8
+ import { Mesh } from 'three';
9
+ import { ShaderMaterial } from 'three';
10
+ import { Shape } from 'three';
11
+ import { SphereGeometry } from 'three';
12
+ import { Uniform } from 'three';
13
+ import { Vector2 } from 'three';
14
+ import { Vector3 } from 'three';
15
+
16
+ /**
17
+ * Utility function to add noise-based vertex displacement to an existing Three.js material.
18
+ * @param {Material} material - The material to mutate, e.g., MeshStandardMaterial.
19
+ * @param {Object} options - Options for noise modification.
20
+ * @param {number} [options.time=0.0] - The time value for the noise function.
21
+ * @param {number} [options.intensity=1.0] - The intensity of the displacement.
22
+ * @param {Vector3} [options.direction=new Vector3(1, 1, 1)] - The direction of displacement.
23
+ * @param {number} [options.scale=10.0] - The scale of the noise effect.
24
+ */
25
+ export declare function addNoiseDisplacement<T extends Material>(material: T, { time, intensity, direction, scale }?: NoiseDisplacementOptions): void;
26
+
27
+ /**
28
+ * Utility function to add water-like vertex displacement to an existing Three.js material.
29
+ * @param {Material} material - The material to mutate, e.g., MeshStandardMaterial.
30
+ * @param {Object} options - Options for water wave modification.
31
+ * @param {number} [options.time=0.0] - The time value for the wave function.
32
+ * @param {number} [options.waveFrequency=0.2] - The frequency of the water waves.
33
+ * @param {number} [options.waveAmplitude=0.5] - The amplitude of the water waves.
34
+ */
35
+ export declare function addWaterDisplacement<T extends Material>(material: T, { time, waveFrequency, waveAmplitude }?: {
36
+ time?: number | undefined;
37
+ waveFrequency?: number | undefined;
38
+ waveAmplitude?: number | undefined;
39
+ }): void;
40
+
41
+ /**
42
+ * Atmospheric scattering shader.
43
+ *
44
+ * Based on "A Practical Analytic Model for Daylight"
45
+ * aka The Preetham Model, the de facto standard analytic skydome model
46
+ * https://www.researchgate.net/publication/220720443_A_Practical_Analytic_Model_for_Daylight
47
+ *
48
+ * First implemented by Simon Wallner
49
+ * http://simonwallner.at/project/atmospheric-scattering/
50
+ *
51
+ * Improved by Martin Upitis
52
+ * http://blenderartists.org/forum/showthread.php?245954-preethams-sky-impementation-HDR
53
+ *
54
+ * Three.js integration by zz85 http://twitter.com/blurspline
55
+ *
56
+ * Example:
57
+ * ```
58
+ * const geometry = new BoxGeometry(1, 1, 1);
59
+ *
60
+ * const material = new ShaderMaterial({
61
+ * uniforms: atmosphericShader.uniforms,
62
+ * vertexShader: atmosphericShader.vertexShader,
63
+ * fragmentShader: atmosphericShader.fragmentShader,
64
+ * depthWrite: false,
65
+ * side: BackSide,
66
+ * }) as ShaderMaterial & { uniforms: AtmosphericShaderUniforms };
67
+ *
68
+ * const theta = MathUtils.degToRad(89);
69
+ * const phi = MathUtils.degToRad(180);
70
+ * const sun = new Vector3().setFromSphericalCoords(1, theta, phi);
71
+ *
72
+ * material.uniforms.sunPosition.value = sun;
73
+ *
74
+ * const mesh = new Mesh(geometry, material);
75
+ * mesh.scale.setScalar(450000);
76
+ * ```
77
+ */
78
+ export declare const atmosphericShader: {
79
+ uniforms: {
80
+ turbidity: {
81
+ value: number;
82
+ };
83
+ rayleigh: {
84
+ value: number;
85
+ };
86
+ mieCoefficient: {
87
+ value: number;
88
+ };
89
+ mieDirectionalG: {
90
+ value: number;
91
+ };
92
+ sunPosition: {
93
+ value: Vector3;
94
+ };
95
+ up: {
96
+ value: Vector3;
97
+ };
98
+ };
99
+ vertexShader: string;
100
+ fragmentShader: string;
101
+ };
102
+
103
+ export declare interface AtmosphericShaderUniforms {
104
+ turbidity: Uniform<number>;
105
+ rayleigh: Uniform<number>;
106
+ mieCoefficient: Uniform<number>;
107
+ mieDirectionalG: Uniform<number>;
108
+ sunPosition: Uniform<Vector3>;
109
+ up: Uniform<Vector3>;
110
+ }
111
+
112
+ /**
113
+ * Atmospheric scattering skybox.
114
+ *
115
+ * Elevation (theta, θ): Angle measured above or below the horizon (from the xy-plane towards the zenith or nadir).
116
+ * Azimuth (phi, φ): Angle measured around the horizon from a reference direction (e.g., north, east).
117
+ */
118
+ export declare class AtmosphericSkybox extends Mesh {
119
+ geometry: BoxGeometry;
120
+ material: ShaderMaterial & {
121
+ uniforms: AtmosphericShaderUniforms;
122
+ };
123
+ constructor();
124
+ /**
125
+ * Set the sun position.
126
+ *
127
+ * Elevation (theta, θ)
128
+ * - Angle measured above or below the horizon (from the xy-plane towards the zenith or nadir).
129
+ * - Ranges from 0 to π/2 radians (or 0 to 90 degrees).
130
+ * - This is the vertical angle in the xy-plane.
131
+ *
132
+ * Azimuth (phi, φ)
133
+ * - Angle measured around the horizon from a reference direction (e.g., north, east).
134
+ * - Ranges from 0 to 2π radians (or 0 to 360 degrees).
135
+ * - This is the horizontal angle in the xy-plane.
136
+ */
137
+ sunPosition(theta: number, phi: number): void;
138
+ }
139
+
140
+ export declare class Beaker extends Group {
141
+ constructor();
142
+ }
143
+
144
+ export declare class BeakerGeometry extends BufferGeometry {
145
+ constructor();
146
+ }
147
+
148
+ export declare class BifurcatedStaircaseGeometry extends BufferGeometry {
149
+ constructor(stepWidth?: number, stepHeight?: number, stepDepth?: number, numStepsCentral?: number, numStepsBranch?: number, branchAngle?: number);
150
+ }
151
+
152
+ export declare class Bone extends Mesh {
153
+ constructor();
154
+ }
155
+
156
+ /**
157
+ * Bone Geometry, a simple bone shape
158
+ * @extends BufferGeometry
159
+ *
160
+ * @example
161
+ * // Create a bone
162
+ * const boneGeometry = new BoneGeometry();
163
+ * const boneMaterial = new MeshStandardMaterial({ color: 0xffffff });
164
+ * const bone = new Mesh(boneGeometry, boneMaterial);
165
+ * scene.add(bone);
166
+ */
167
+ export declare class BoneGeometry extends BufferGeometry {
168
+ constructor(radiusTop?: number, radiusBottom?: number, height?: number, radialSegments?: number);
169
+ }
170
+
171
+ export declare class Book extends Mesh {
172
+ constructor({ width, height, depth, coverThickness, pageIndent, coverColor, pageColor, }?: {
173
+ width?: number | undefined;
174
+ height?: number | undefined;
175
+ depth?: number | undefined;
176
+ coverThickness?: number | undefined;
177
+ pageIndent?: number | undefined;
178
+ coverColor?: number | undefined;
179
+ pageColor?: number | undefined;
180
+ });
181
+ }
182
+
183
+ export declare class BookGeometry extends BufferGeometry {
184
+ constructor(width?: number, height?: number, depth?: number, coverThickness?: number, pageIndent?: number);
185
+ }
186
+
187
+ export declare class Bookshelf extends Mesh {
188
+ constructor({ width, //
189
+ height, depth, shelves, frameThickness, open, }?: {
190
+ width?: number | undefined;
191
+ height?: number | undefined;
192
+ depth?: number | undefined;
193
+ shelves?: number | undefined;
194
+ frameThickness?: number | undefined;
195
+ open?: boolean | undefined;
196
+ });
197
+ }
198
+
199
+ export declare class BookshelfGeometry extends BufferGeometry {
200
+ constructor({ width, //
201
+ height, depth, shelves, frameThickness, open, }?: {
202
+ width?: number | undefined;
203
+ height?: number | undefined;
204
+ depth?: number | undefined;
205
+ shelves?: number | undefined;
206
+ frameThickness?: number | undefined;
207
+ open?: boolean | undefined;
208
+ });
209
+ }
210
+
211
+ export declare class Bottle extends Group {
212
+ constructor();
213
+ }
214
+
215
+ /**
216
+ * Bubbling class creates a group of small, semi-transparent bubbles that
217
+ * rise upwards in a loop, mimicking bubbling inside a flask.
218
+ */
219
+ export declare class Bubbling extends Group {
220
+ private bubbles;
221
+ private bubbleCount;
222
+ constructor();
223
+ /**
224
+ * Updates bubble positions, moving them upward and resetting them
225
+ * to the bottom if they reach the top.
226
+ */
227
+ private updateBubbles;
228
+ /**
229
+ * Animates the bubbles by updating their positions in a loop.
230
+ */
231
+ private animateBubbles;
232
+ }
233
+
234
+ export declare class BunsenBurner extends Group {
235
+ constructor();
236
+ }
237
+
238
+ export declare class Burst extends Mesh {
239
+ constructor(sides?: number, innerRadius?: number, outerRadius?: number, depth?: number);
240
+ }
241
+
242
+ export declare class BurstShape extends Shape {
243
+ constructor(sides?: number, innerRadius?: number, outerRadius?: number);
244
+ }
245
+
246
+ export declare class Candle extends Group {
247
+ private candle;
248
+ private flame;
249
+ private candleLight;
250
+ private height;
251
+ private radius;
252
+ constructor(height?: number, radius?: number);
253
+ animateFlicker(): void;
254
+ }
255
+
256
+ /**
257
+ * Calculate the height of a spherical cap.
258
+ * h = R * (1 - cos(thetaLength))
259
+ */
260
+ export declare const capHeightFromRadius: (radius: number, thetaLength: number) => number;
261
+
262
+ /**
263
+ * Calculate the width of a spherical cap.
264
+ * w = 2 * R * sin(thetaLength)
265
+ */
266
+ export declare const capWidthFromRadius: (radius: number, thetaLength: number) => number;
267
+
268
+ /**
269
+ * Convert Cartesian coordinates to spherical coordinates.
270
+ * @param {number} x - The x-coordinate.
271
+ * @param {number} y - The y-coordinate.
272
+ * @param {number} z - The z-coordinate.
273
+ * @returns {{radius: number, theta: number, phi: number}} The spherical coordinates.
274
+ */
275
+ export declare const cartesianToSpherical: (x: number, y: number, z: number) => {
276
+ radius: number;
277
+ theta: number;
278
+ phi: number;
279
+ };
280
+
281
+ export declare function centerGroup<T extends Group>(group: T): void;
282
+
283
+ export declare function centerGroupAtTarget<T extends Group>(group: T, target?: Vector3): void;
284
+
285
+ export declare function centerInstancedMesh<T extends InstancedMesh>(mesh: T): void;
286
+
287
+ /**
288
+ * Centers the given mesh at the origin (0, 0, 0) of the scene by adjusting its position.
289
+ * The mesh is moved so that its bounding box center is placed at the origin.
290
+ */
291
+ export declare function centerMesh<T extends Mesh>(mesh: T): void;
292
+
293
+ /**
294
+ * Centers the geometry of the given mesh at the local origin (0, 0, 0) by modifying the geometry vertices.
295
+ * This method moves the geometry itself so that its center is at the local origin,
296
+ * without affecting the position, rotation, or scale of the mesh.
297
+ */
298
+ export declare function centerMeshGeometry<T extends Mesh>(mesh: T): void;
299
+
300
+ /**
301
+ * Create a checkerboard texture
302
+ *
303
+ * Example:
304
+ * ```
305
+ * const material = new MeshStandardMaterial();
306
+ * material.map = createCheckerboardTexture(8);
307
+ * ```
308
+ */
309
+ export declare const checkerboardTexture: (size: number) => DataTexture;
310
+
311
+ export declare const circularEaseIn: (t: number) => number;
312
+
313
+ export declare const circularEaseInOut: (t: number) => number;
314
+
315
+ export declare const circularEaseOut: (t: number) => number;
316
+
317
+ export declare const concave: (t: number) => number;
318
+
319
+ export declare const convex: (t: number) => number;
320
+
321
+ /**
322
+ * Function to create cubic Bezier curve points
323
+ *
324
+ * Example:
325
+ * ```
326
+ * const points = [
327
+ * ...ParametricCurveUtils.createCubicCurvePoints(
328
+ * new THREE.Vector2(0.5, 2), // Start of the cubic curve
329
+ * new THREE.Vector2(1.5, 3), // First control point (outward curve)
330
+ * new THREE.Vector2(1.5, 4), // Second control point (outward curve)
331
+ * new THREE.Vector2(0.5, 5), // End of the curve
332
+ * 24, // Resolution of the quadratic curve
333
+ * ),
334
+ * ]
335
+ * ```
336
+ */
337
+ export declare const createCubicCurvePoints: (start: Vector2, control1: Vector2, control2: Vector2, end: Vector2, segments?: number) => Vector2[];
338
+
339
+ /**
340
+ * Function to create damped curve points
341
+ *
342
+ * Example:
343
+ * ```
344
+ * const points = [
345
+ * ...ParametricCurveUtils.createDampedCurvePoints(
346
+ * new THREE.Vector2(0.5, 2), // Start of the damped curve
347
+ * new THREE.Vector2(1.5, 5), // End of the damped curve
348
+ * 5, // Damping factor
349
+ * 24, // Resolution of the damped curve
350
+ * ),
351
+ * ]
352
+ * ```
353
+ */
354
+ export declare const createDampedCurvePoints: (start: Vector2, end: Vector2, damping: number, segments?: number) => Vector2[];
355
+
356
+ /**
357
+ * Function to create exponential curve points
358
+ *
359
+ * Example:
360
+ * ```
361
+ * const points = [
362
+ * ...ParametricCurveUtils.createExponentialCurvePoints(
363
+ * new THREE.Vector2(0.5, 2), // Start of the exponential curve
364
+ * new THREE.Vector2(1.5, 5), // End of the exponential curve
365
+ * 0.5, // Base of the exponential function
366
+ * 2, // Exponential factor
367
+ * 24 // Resolution of the exponential curve
368
+ * ),
369
+ * ]
370
+ * ```
371
+ */
372
+ export declare const createExponentialCurvePoints: (start: Vector2, end: Vector2, base: number, factor: number, segments?: number) => Vector2[];
373
+
374
+ /**
375
+ * Function to create logarithmic curve points
376
+ *
377
+ * Example:
378
+ * ```
379
+ * const points = [
380
+ * ...ParametricCurveUtils.createLogarithmicCurvePoints(
381
+ * new THREE.Vector2(0.5, 2), // Start of the logarithmic curve
382
+ * new THREE.Vector2(1.5, 5), // End of the logarithmic curve
383
+ * 0.5, // Base of the logarithmic function
384
+ * 10, // Logarithmic factor
385
+ * 24, // Resolution of the logarithmic curve
386
+ * ),
387
+ * ]
388
+ * ```
389
+ */
390
+ export declare const createLogarithmicCurvePoints: (start: Vector2, end: Vector2, base: number, factor: number, segments?: number) => Vector2[];
391
+
392
+ /**
393
+ * Function to create parabolic curve points
394
+ *
395
+ * Example:
396
+ * ```
397
+ * const points = [
398
+ * ...ParametricCurveUtils.createParabolicCurvePoints(
399
+ * new THREE.Vector2(0.5, 2), // Start point
400
+ * new THREE.Vector2(0.5, 5), // End point
401
+ * 1, // Coefficient for t^2 (controls curvature)
402
+ * 0, // Coefficient for t (linear component)
403
+ * 0, // Constant term (vertical offset)
404
+ * 24, // Resolution
405
+ * ),
406
+ * ]
407
+ * ```
408
+ */
409
+ export declare const createParabolicCurvePoints: (start: Vector2, end: Vector2, a: number, b: number, c: number, segments?: number) => Vector2[];
410
+
411
+ /**
412
+ * Function to create quadratic Bezier curve points
413
+ *
414
+ * Example:
415
+ * ```
416
+ * const points = [
417
+ * ...ParametricCurveUtils.createQuadraticCurvePoints(
418
+ * new THREE.Vector2(0.5, 2), // Start of the quadratic curve
419
+ * new THREE.Vector2(1.5, 5), // Control point (outward curve)
420
+ * new THREE.Vector2(0.5, 5), // End of the curve
421
+ * 24, // Resolution of the quadratic curve
422
+ * ),
423
+ * ]
424
+ * ```
425
+ */
426
+ export declare const createQuadraticCurvePoints: (start: Vector2, control: Vector2, end: Vector2, segments?: number) => Vector2[];
427
+
428
+ /**
429
+ * Function to create sigmoid curve points
430
+ *
431
+ * Example:
432
+ * ```
433
+ * const points = [
434
+ * ...ParametricCurveUtils.createSigmoidCurvePoints(
435
+ * new THREE.Vector2(0.5, 2), // Start of the sigmoid curve
436
+ * new THREE.Vector2(1.5, 5), // End of the sigmoid curve
437
+ * 20, // Sigmoid steepness factor
438
+ * 24, // Resolution of the sigmoid curve
439
+ * ),
440
+ * ]
441
+ */
442
+ export declare const createSigmoidCurvePoints: (start: Vector2, end: Vector2, a: number, segments?: number) => Vector2[];
443
+
444
+ export declare class CrossHeadstone extends Mesh {
445
+ constructor({ width, height, depth, material, }?: CrossHeadstoneOptions);
446
+ }
447
+
448
+ export declare class CrossHeadstoneGeometry extends BufferGeometry {
449
+ constructor(width?: number, height?: number, depth?: number);
450
+ }
451
+
452
+ declare interface CrossHeadstoneOptions {
453
+ width?: number;
454
+ height?: number;
455
+ depth?: number;
456
+ material?: Material;
457
+ }
458
+
459
+ export declare const cubicCurve: (t: number, p0: number, p1: number, p2: number, p3: number) => number;
460
+
461
+ export declare const cubicEaseIn: (t: number) => number;
462
+
463
+ export declare const cubicEaseInOut: (t: number) => number;
464
+
465
+ export declare const cubicEaseOut: (t: number) => number;
466
+
467
+ export declare const dampedCurve: (t: number, damping?: number) => number;
468
+
469
+ export declare class DaySkybox extends Mesh {
470
+ geometry: BoxGeometry;
471
+ material: ShaderMaterial & {
472
+ uniforms: DaySkyUniforms;
473
+ };
474
+ constructor(size?: number);
475
+ }
476
+
477
+ /**
478
+ * Shader for a day skybox.
479
+ *
480
+ * Example:
481
+ * ```
482
+ * this.material = new ShaderMaterial({
483
+ * uniforms: daySkyShader.uniforms,
484
+ * vertexShader: daySkyShader.vertexShader,
485
+ * fragmentShader: daySkyShader.fragmentShader,
486
+ * side: BackSide,
487
+ * }) as ShaderMaterial & { uniforms: DaySkyUniforms };
488
+ * ```
489
+ */
490
+ export declare const daySkyShader: {
491
+ uniforms: {
492
+ topColor: {
493
+ value: Color;
494
+ };
495
+ bottomColor: {
496
+ value: Color;
497
+ };
498
+ };
499
+ vertexShader: string;
500
+ fragmentShader: string;
501
+ };
502
+
503
+ export declare interface DaySkyUniforms {
504
+ topColor: Uniform<Color>;
505
+ bottomColor: Uniform<Color>;
506
+ }
507
+
508
+ export declare class Desk extends Group {
509
+ constructor();
510
+ }
511
+
512
+ export declare class DioramaGeometry extends BufferGeometry {
513
+ constructor(width?: number, height?: number, depth?: number, wallThickness?: number);
514
+ }
515
+
516
+ /**
517
+ * Examples
518
+ *
519
+ * Moving an Object Along a Direction
520
+ * ```
521
+ * const speed = 1; // Movement speed
522
+ * const direction = Direction.FORWARD; // Choose a direction
523
+ *
524
+ * object.position.add(direction.clone().multiplyScalar(speed * deltaTime));
525
+ * ```
526
+ *
527
+ * Snapping Positions to a Direction
528
+ * ```
529
+ * const targetPosition = new Vector3(5, 0, 3);
530
+ * const snapDirection = Direction.UP; // Align upwards
531
+ *
532
+ * object.position.copy(targetPosition.clone().add(snapDirection.clone().multiplyScalar(10)));
533
+ * ```
534
+ *
535
+ * Rotating or Orienting an Object
536
+ * ```
537
+ * const targetDirection = Direction.XY; // Diagonal upward
538
+ * object.lookAt(object.position.clone().add(targetDirection));
539
+ * ```
540
+ *
541
+ * Procedural Geometry
542
+ * ```
543
+ * const vertex = new Vector3(0, 0, 0);
544
+ * const direction = Direction.XZ; // Diagonal direction on XZ plane
545
+ *
546
+ * const offset = direction.clone().multiplyScalar(5);
547
+ * vertex.add(offset); // Move vertex in direction
548
+ * geometry.vertices.push(vertex);
549
+ * ```
550
+ *
551
+ * Animating Along a Direction
552
+ * ```
553
+ * const distance = 10; // Total distance to travel
554
+ * const duration = 2; // Animation duration in seconds
555
+ * const startPosition = object.position.clone();
556
+ * const targetPosition = startPosition.clone().add(Direction.BACKWARD.clone().multiplyScalar(distance));
557
+ *
558
+ * let elapsed = 0;
559
+ * function animate(deltaTime) {
560
+ * elapsed += deltaTime;
561
+ * const t = Math.min(elapsed / duration, 1); // Normalize time to [0, 1]
562
+ * object.position.lerpVectors(startPosition, targetPosition, t);
563
+ * }
564
+ * ```
565
+ *
566
+ * Shader Uniforms
567
+ * ```
568
+ * material.uniforms.uDirection.value = Direction.FORWARD; // Use as light or flow direction
569
+ * ```
570
+ *
571
+ * Particle Systems
572
+ * ```
573
+ * particles.forEach(particle => {
574
+ * particle.velocity.add(Direction.FORWARD.clone().multiplyScalar(0.1));
575
+ * });
576
+ * ```
577
+ *
578
+ * Directional Raycasting
579
+ * ```
580
+ * const rayOrigin = new Vector3(0, 0, 0);
581
+ * const rayDirection = Direction.FORWARD;
582
+ * const raycaster = new THREE.Raycaster(rayOrigin, rayDirection);
583
+ *
584
+ * // Find intersected objects
585
+ * const intersects = raycaster.intersectObjects(scene.children);
586
+ * ```
587
+ *
588
+ * Physics Forces
589
+ * ```
590
+ * const forceDirection = Direction.UP; // Push upwards
591
+ * const forceMagnitude = 50;
592
+ *
593
+ * rigidBody.applyForce(forceDirection.clone().multiplyScalar(forceMagnitude));
594
+ * ```
595
+ */
596
+ export declare const Direction: {
597
+ UP: Vector3;
598
+ DOWN: Vector3;
599
+ LEFT: Vector3;
600
+ RIGHT: Vector3;
601
+ FORWARD: Vector3;
602
+ BACKWARD: Vector3;
603
+ X: Vector3;
604
+ Y: Vector3;
605
+ Z: Vector3;
606
+ XY: Vector3;
607
+ XZ: Vector3;
608
+ YZ: Vector3;
609
+ XYZ: Vector3;
610
+ };
611
+
612
+ /**
613
+ * Moves vertices within a specified radius around a target position along a given direction
614
+ */
615
+ export declare const displacementBrush: <T extends BufferGeometry>(geometry: T, position: Vector3, radius: number, strength: number, direction?: Vector3, falloffFn?: (distance: number, radius: number) => number) => void;
616
+
617
+ /**
618
+ * Easing functions for interpolating values over time.
619
+ */
620
+ export declare const Easing: {
621
+ SINE_EASE_IN: (t: number) => number;
622
+ SINE_EASE_OUT: (t: number) => number;
623
+ SINE_EASE_IN_OUT: (t: number) => number;
624
+ QUADRATIC_EASE_IN: (t: number) => number;
625
+ QUADRATIC_EASE_OUT: (t: number) => number;
626
+ QUADRATIC_EASE_IN_OUT: (t: number) => number;
627
+ CUBIC_EASE_IN: (t: number) => number;
628
+ CUBIC_EASE_OUT: (t: number) => number;
629
+ CUBIC_EASE_IN_OUT: (t: number) => number;
630
+ QUARTIC_EASE_IN: (t: number) => number;
631
+ QUARTIC_EASE_OUT: (t: number) => number;
632
+ QUARTIC_EASE_IN_OUT: (t: number) => number;
633
+ QUINTIC_EASE_IN: (t: number) => number;
634
+ QUINTIC_EASE_OUT: (t: number) => number;
635
+ QUINTIC_EASE_IN_OUT: (t: number) => number;
636
+ EXPONENTIAL_EASE_IN: (t: number) => number;
637
+ EXPONENTIAL_EASE_OUT: (t: number) => number;
638
+ EXPONENTIAL_EASE_IN_OUT: (t: number) => number;
639
+ CIRCULAR_EASE_IN: (t: number) => number;
640
+ CIRCULAR_EASE_OUT: (t: number) => number;
641
+ CIRCULAR_EASE_IN_OUT: (t: number) => number;
642
+ LINEAR: (t: number) => number;
643
+ SMOOTHSTEP: (t: number) => number;
644
+ CONCAVE: (t: number) => number;
645
+ CONVEX: (t: number) => number;
646
+ LOGARITHMIC: (t: number) => number;
647
+ SQUARE_ROOT: (t: number) => number;
648
+ INVERSE: (t: number) => number;
649
+ GAUSSIAN: (t: number) => number;
650
+ };
651
+
652
+ export declare class ElectricPanel extends Group {
653
+ constructor();
654
+ }
655
+
656
+ export declare class ErlenmeyerFlask extends Mesh {
657
+ constructor({ flaskRadius, //
658
+ neckRadius, height, neckHeight, radialSegments, }?: {
659
+ flaskRadius?: number | undefined;
660
+ neckRadius?: number | undefined;
661
+ height?: number | undefined;
662
+ neckHeight?: number | undefined;
663
+ radialSegments?: number | undefined;
664
+ });
665
+ }
666
+
667
+ export declare class ErlenmeyerFlaskGeometry extends BufferGeometry {
668
+ constructor({ flaskRadius, //
669
+ neckRadius, height, neckHeight, radialSegments, }?: {
670
+ flaskRadius?: number | undefined;
671
+ neckRadius?: number | undefined;
672
+ height?: number | undefined;
673
+ neckHeight?: number | undefined;
674
+ radialSegments?: number | undefined;
675
+ });
676
+ }
677
+
678
+ export declare const exponentialCurve: (t: number, base?: number, factor?: number) => number;
679
+
680
+ export declare const exponentialEaseIn: (t: number) => number;
681
+
682
+ export declare const exponentialEaseInOut: (t: number) => number;
683
+
684
+ export declare const exponentialEaseOut: (t: number) => number;
685
+
686
+ export declare const fadeShader: {
687
+ uniforms: {
688
+ tDiffuse: {
689
+ value: null;
690
+ };
691
+ opacity: {
692
+ value: number;
693
+ };
694
+ };
695
+ vertexShader: string;
696
+ fragmentShader: string;
697
+ };
698
+
699
+ export declare const Falloff: {
700
+ LINEAR: (distance: number, radius: number) => number;
701
+ QUADRATIC: (distance: number, radius: number) => number;
702
+ SQUARE_ROOT: (distance: number, radius: number) => number;
703
+ LOGARITHMIC: (distance: number, radius: number) => number;
704
+ SINE: (distance: number, radius: number) => number;
705
+ EXPONENTIAL: (distance: number, radius: number) => number;
706
+ CUBIC: (distance: number, radius: number) => number;
707
+ GAUSSIAN: (distance: number, radius: number) => number;
708
+ INVERSE: (distance: number, radius: number) => number;
709
+ SMOOTHSTEP: (distance: number, radius: number) => number;
710
+ };
711
+
712
+ export declare class FenceColumn extends Mesh {
713
+ constructor({ height }?: {
714
+ height?: number | undefined;
715
+ });
716
+ }
717
+
718
+ /**
719
+ * Fence Column Geometry, a stone slab fence column shape
720
+ */
721
+ export declare class FenceColumnGeometry extends BufferGeometry {
722
+ constructor({ height }?: {
723
+ height?: number | undefined;
724
+ });
725
+ }
726
+
727
+ export declare class Flask extends Group {
728
+ constructor();
729
+ }
730
+
731
+ /**
732
+ * Flattens vertices to a given plane defined by a target height or normal direction.
733
+ */
734
+ export declare const flattenBrush: <T extends BufferGeometry>(geometry: T, position: Vector3, radius: number, targetHeight: number, strength: number, direction?: Vector3, falloffFn?: (distance: number, radius: number) => number) => void;
735
+
736
+ export declare const gaussian: (t: number) => number;
737
+
738
+ export declare class Gear extends Mesh {
739
+ constructor(sides?: number, innerRadius?: number, outerRadius?: number, holeSides?: number, holeRadius?: number, depth?: number);
740
+ }
741
+
742
+ export declare class GearShape extends Shape {
743
+ constructor(sides?: number, innerRadius?: number, outerRadius?: number, holeSides?: number, holeRadius?: number);
744
+ }
745
+
746
+ export declare class Heart extends Mesh {
747
+ constructor(size?: number, width?: number, height?: number, tipDepth?: number, depth?: number);
748
+ }
749
+
750
+ export declare class HeartShape extends Shape {
751
+ constructor(size?: number, width?: number, height?: number, tipDepth?: number);
752
+ }
753
+
754
+ export declare class Hill extends Mesh {
755
+ constructor({ radius, //
756
+ height, widthSegments, heightSegments, phiStart, phiLength, }?: {
757
+ radius?: number | undefined;
758
+ height?: number | undefined;
759
+ widthSegments?: number | undefined;
760
+ heightSegments?: number | undefined;
761
+ phiStart?: number | undefined;
762
+ phiLength?: number | undefined;
763
+ });
764
+ }
765
+
766
+ export declare class HillGeometry extends BufferGeometry {
767
+ constructor({ radius, //
768
+ height, widthSegments, heightSegments, phiStart, phiLength, }?: {
769
+ radius?: number | undefined;
770
+ height?: number | undefined;
771
+ widthSegments?: number | undefined;
772
+ heightSegments?: number | undefined;
773
+ phiStart?: number | undefined;
774
+ phiLength?: number | undefined;
775
+ });
776
+ }
777
+
778
+ /**
779
+ * Generates an array of interpolated 2D points using an easing function.
780
+ * @param curveFunction - The easing function to apply to the normalized value.
781
+ * @param startRadius - The starting radius for interpolation.
782
+ * @param endRadius - The ending radius for interpolation.
783
+ * @param startHeight - The starting height for interpolation.
784
+ * @param endHeight - The ending height for interpolation.
785
+ * @param segments - The number of segments for interpolation (default is 20).
786
+ * @param min - The minimum value of the normalization range (default is 0).
787
+ * @param max - The maximum value of the normalization range (default is 1).
788
+ * @returns An array of `Vector2` points representing the interpolated curve.
789
+ */
790
+ export declare function interpolateCurve(curveFunction: (t: number) => number, startRadius: number, endRadius: number, startHeight: number, endHeight: number, segments?: number, min?: number, max?: number): Vector2[];
791
+
792
+ export declare const inverse: (t: number) => number;
793
+
794
+ export declare class Lantern extends Group {
795
+ constructor(height?: number, baseWidth?: number);
796
+ }
797
+
798
+ export declare class LeverPanel extends Group {
799
+ constructor();
800
+ }
801
+
802
+ export declare const linear: (t: number) => number;
803
+
804
+ export declare const logarithmic: (t: number) => number;
805
+
806
+ export declare const logarithmicCurve: (t: number, base?: number, factor?: number) => number;
807
+
808
+ /**
809
+ * Generates a random number skewed towards the maximum value.
810
+ *
811
+ * @param {number} [exponent=0.5] - Controls the skew of the distribution.
812
+ * A smaller value (e.g., 0.3) skews the values towards the max.
813
+ * A larger value (e.g., 0.8) creates a more even distribution.
814
+ * @param {number} [min=0] - Minimum value of the range.
815
+ * @param {number} [max=1] - Maximum value of the range.
816
+ * @returns {number} A random number between `min` and `max`, skewed towards `max`.
817
+ */
818
+ export declare function logarithmicRandomMax(exponent?: number, min?: number, max?: number): number;
819
+
820
+ /**
821
+ * Generates a random number skewed towards the minimum value.
822
+ *
823
+ * @param {number} [exponent=0.5] - Controls the skew of the distribution.
824
+ * A smaller value (e.g., 0.3) skews the values towards the min.
825
+ * A larger value (e.g., 0.8) creates a more even distribution.
826
+ * @param {number} [min=0] - Minimum value of the range.
827
+ * @param {number} [max=1] - Maximum value of the range.
828
+ * @returns {number} A random number between `min` and `max`, skewed towards `min`.
829
+ */
830
+ export declare function logarithmicRandomMin(exponent?: number, min?: number, max?: number): number;
831
+
832
+ export declare class LShapedStaircaseGeometry extends BufferGeometry {
833
+ constructor(stepWidth?: number, stepHeight?: number, stepDepth?: number, numStepsPerFlight?: number, landingDepth?: number);
834
+ }
835
+
836
+ export declare class Mausoleum extends Group {
837
+ constructor();
838
+ }
839
+
840
+ export declare class Microscope extends Group {
841
+ constructor();
842
+ }
843
+
844
+ export declare class Moon extends Group {
845
+ constructor();
846
+ }
847
+
848
+ export declare class MortarAndPestle extends Group {
849
+ constructor();
850
+ }
851
+
852
+ export declare class MortarGeometry extends BufferGeometry {
853
+ constructor();
854
+ }
855
+
856
+ export declare class MossyRocks extends Group {
857
+ constructor();
858
+ }
859
+
860
+ /**
861
+ * Mound-like mesh with a flat top.
862
+ *
863
+ * To create a radius based on a desired width:
864
+ * ```
865
+ * const mound = new Mound({
866
+ * radius: radiusFromCapWidth(5, Math.PI / 10),
867
+ * }
868
+ * ```
869
+ *
870
+ * To create a radius based on a desired height:
871
+ * ```
872
+ * const mound = new Mound({
873
+ * radius: radiusFromCapHeight(5, Math.PI / 10),
874
+ * }
875
+ * ```
876
+ */
877
+ export declare class Mound extends Mesh {
878
+ constructor({ radius, //
879
+ widthSegments, heightSegments, phiStart, phiLength, thetaLength, }?: {
880
+ radius?: number | undefined;
881
+ widthSegments?: number | undefined;
882
+ heightSegments?: number | undefined;
883
+ phiStart?: number | undefined;
884
+ phiLength?: number | undefined;
885
+ thetaLength?: number | undefined;
886
+ });
887
+ }
888
+
889
+ /**
890
+ * Mound-like geometry with a flat top.
891
+ *
892
+ * To create a radius based on a desired width:
893
+ * ```
894
+ * const moundGeometry = new MoundGeometry({
895
+ * radius: radiusFromCapWidth(5, Math.PI / 10),
896
+ * }
897
+ * ```
898
+ *
899
+ * To create a radius based on a desired height:
900
+ * ```
901
+ * const moundGeometry = new MoundGeometry({
902
+ * radius: radiusFromCapHeight(5, Math.PI / 10),
903
+ * }
904
+ * ```
905
+ */
906
+ export declare class MoundGeometry extends BufferGeometry {
907
+ constructor({ radius, //
908
+ widthSegments, heightSegments, phiStart, phiLength, thetaLength, }?: {
909
+ radius?: number | undefined;
910
+ widthSegments?: number | undefined;
911
+ heightSegments?: number | undefined;
912
+ phiStart?: number | undefined;
913
+ phiLength?: number | undefined;
914
+ thetaLength?: number | undefined;
915
+ });
916
+ }
917
+
918
+ export declare class NightSkybox extends Mesh {
919
+ geometry: SphereGeometry;
920
+ material: ShaderMaterial & {
921
+ uniforms: NightSkyUniforms;
922
+ };
923
+ constructor(size?: number);
924
+ }
925
+
926
+ /**
927
+ * Shader for a night skybox.
928
+ *
929
+ * Example:
930
+ * ```
931
+ * this.material = new ShaderMaterial({
932
+ * vertexShader: nightSkyShader.vertexShader,
933
+ * fragmentShader: nightSkyShader.fragmentShader,
934
+ * uniforms: nightSkyShader.uniforms,
935
+ * side: BackSide,
936
+ * }) as ShaderMaterial & { uniforms: NightSkyUniforms };
937
+ * ```
938
+ */
939
+ export declare const nightSkyShader: {
940
+ uniforms: {
941
+ topColor: {
942
+ value: Color;
943
+ };
944
+ bottomColor: {
945
+ value: Color;
946
+ };
947
+ offset: {
948
+ value: number;
949
+ };
950
+ exponent: {
951
+ value: number;
952
+ };
953
+ };
954
+ vertexShader: string;
955
+ fragmentShader: string;
956
+ };
957
+
958
+ export declare interface NightSkyUniforms {
959
+ topColor: Uniform<Color>;
960
+ bottomColor: Uniform<Color>;
961
+ offset: Uniform<number>;
962
+ exponent: Uniform<number>;
963
+ }
964
+
965
+ /**
966
+ * Adds random noise to the vertices within the specified radius to create a more rugged or natural look.
967
+ */
968
+ export declare const noiseBrush: <T extends BufferGeometry>(geometry: T, position: Vector3, radius: number, strength: number, direction?: Vector3, falloffFn?: (distance: number, radius: number) => number) => void;
969
+
970
+ declare interface NoiseDisplacementOptions {
971
+ time?: number;
972
+ intensity?: number;
973
+ direction?: Vector3;
974
+ scale?: number;
975
+ }
976
+
977
+ export declare class ObeliskHeadstone extends Mesh {
978
+ constructor({ totalHeight, baseWidth }?: ObeliskHeadstoneOptions);
979
+ }
980
+
981
+ export declare class ObeliskHeadstoneGeometry extends BufferGeometry {
982
+ constructor(totalHeight?: number, baseWidth?: number);
983
+ }
984
+
985
+ declare interface ObeliskHeadstoneOptions {
986
+ baseWidth?: number;
987
+ totalHeight?: number;
988
+ }
989
+
990
+ export declare const parabolicCurve: (t: number, a?: number, b?: number, c?: number) => number;
991
+
992
+ export declare const ParametricCurve: {
993
+ CUBIC: (t: number, p0: number, p1: number, p2: number, p3: number) => number;
994
+ DAMPED: (t: number, damping?: number) => number;
995
+ EXPONENTIAL: (t: number, base?: number, factor?: number) => number;
996
+ LOGARITHMIC: (t: number, base?: number, factor?: number) => number;
997
+ PARABOLIC: (t: number, a?: number, b?: number, c?: number) => number;
998
+ QUADRATIC: (t: number, p0: number, p1: number, p2: number) => number;
999
+ SIGMOID: (t: number, a?: number) => number;
1000
+ SINUSOIDAL: (t: number) => number;
1001
+ };
1002
+
1003
+ export declare const ParametricCurveUtils: {
1004
+ createCubicCurvePoints: (start: Vector2, control1: Vector2, control2: Vector2, end: Vector2, segments?: number) => Vector2[];
1005
+ createDampedCurvePoints: (start: Vector2, end: Vector2, damping: number, segments?: number) => Vector2[];
1006
+ createExponentialCurvePoints: (start: Vector2, end: Vector2, base: number, factor: number, segments?: number) => Vector2[];
1007
+ createLogarithmicCurvePoints: (start: Vector2, end: Vector2, base: number, factor: number, segments?: number) => Vector2[];
1008
+ createParabolicCurvePoints: (start: Vector2, end: Vector2, a: number, b: number, c: number, segments?: number) => Vector2[];
1009
+ createQuadraticCurvePoints: (start: Vector2, control: Vector2, end: Vector2, segments?: number) => Vector2[];
1010
+ createSigmoidCurvePoints: (start: Vector2, end: Vector2, a: number, segments?: number) => Vector2[];
1011
+ };
1012
+
1013
+ export declare const quadraticCurve: (t: number, p0: number, p1: number, p2: number) => number;
1014
+
1015
+ export declare const quadraticEaseIn: (t: number) => number;
1016
+
1017
+ export declare const quadraticEaseInOut: (t: number) => number;
1018
+
1019
+ export declare const quadraticEaseOut: (t: number) => number;
1020
+
1021
+ export declare const quarticEaseIn: (t: number) => number;
1022
+
1023
+ export declare const quarticEaseInOut: (t: number) => number;
1024
+
1025
+ export declare const quarticEaseOut: (t: number) => number;
1026
+
1027
+ export declare const quinticEaseIn: (t: number) => number;
1028
+
1029
+ export declare const quinticEaseInOut: (t: number) => number;
1030
+
1031
+ export declare const quinticEaseOut: (t: number) => number;
1032
+
1033
+ /**
1034
+ * Calculate the radius to achieve a spherical cap height.
1035
+ * R = r / (1 - cos(thetaLength))
1036
+ */
1037
+ export declare const radiusFromCapHeight: (height: number, thetaLength: number) => number;
1038
+
1039
+ /**
1040
+ * Calculate the radius to achieve a spherical cap width.
1041
+ * R = w / (2 * sin(thetaLength))
1042
+ */
1043
+ export declare const radiusFromCapWidth: (width: number, thetaLength: number) => number;
1044
+
1045
+ /**
1046
+ * Generates a random number between `min` and `max`.
1047
+ */
1048
+ export declare function randomFloat(min?: number, max?: number): number;
1049
+
1050
+ /**
1051
+ * Generates a random integer between `min` and `max`.
1052
+ */
1053
+ export declare function randomInteger(min?: number, max?: number): number;
1054
+
1055
+ export declare function randomTransformVertices<T extends BufferGeometry>(geometry: T, direction?: Vector3, minScale?: number, maxScale?: number): T;
1056
+
1057
+ export declare class Rock extends Mesh {
1058
+ constructor(radius?: number, widthSegments?: number, heightSegments?: number);
1059
+ }
1060
+
1061
+ export declare class RockGeometry extends BufferGeometry {
1062
+ constructor(radius?: number, widthSegments?: number, heightSegments?: number);
1063
+ }
1064
+
1065
+ export declare class Rocks extends Group {
1066
+ constructor();
1067
+ }
1068
+
1069
+ export declare class RoundedHeadstone extends Mesh {
1070
+ constructor(width?: number, height?: number, depth?: number, radius?: number);
1071
+ }
1072
+
1073
+ export declare class RoundedHeadstoneGeometry extends BufferGeometry {
1074
+ constructor(width?: number, height?: number, depth?: number, radius?: number);
1075
+ }
1076
+
1077
+ /**
1078
+ * Creates a row of books with a given count.
1079
+ */
1080
+ export declare function rowOfBooksByCount<T extends Material>({ coverMaterial, pagesMaterial, count, scaleXMin, scaleXMax, scaleYMin, scaleYMax, scaleZMin, scaleZMax, }: RowOfBooksOptions<T>): InstancedMesh;
1081
+
1082
+ /**
1083
+ * Creates a row of books with a total length.
1084
+ */
1085
+ export declare function rowOfBooksByLength<T extends Material>({ coverMaterial, pagesMaterial, length, scaleXMin, scaleXMax, scaleYMin, scaleYMax, scaleZMin, scaleZMax, }: RowOfBooksOptions<T>): InstancedMesh;
1086
+
1087
+ /**
1088
+ * Creates a row of books from the scales array of Vector3.
1089
+ */
1090
+ export declare function rowOfBooksByScales<T extends Material>({ coverMaterial, pagesMaterial, scales, }: RowOfBooksByScalesOptions<T>): InstancedMesh;
1091
+
1092
+ declare interface RowOfBooksByScalesOptions<T extends Material = Material> {
1093
+ coverMaterial: T;
1094
+ pagesMaterial: T;
1095
+ scales: Vector3[];
1096
+ }
1097
+
1098
+ declare interface RowOfBooksOptions<T extends Material = Material> {
1099
+ coverMaterial: T;
1100
+ pagesMaterial: T;
1101
+ count?: number;
1102
+ length?: number;
1103
+ scaleXMin?: number;
1104
+ scaleXMax?: number;
1105
+ scaleYMin?: number;
1106
+ scaleYMax?: number;
1107
+ scaleZMin?: number;
1108
+ scaleZMax?: number;
1109
+ }
1110
+
1111
+ export declare const sigmoidCurve: (t: number, a?: number) => number;
1112
+
1113
+ export declare class SimpleLeafGeometry extends BufferGeometry {
1114
+ constructor(size?: number);
1115
+ }
1116
+
1117
+ export declare const sineEaseIn: (t: number) => number;
1118
+
1119
+ export declare const sineEaseInOut: (t: number) => number;
1120
+
1121
+ export declare const sineEaseOut: (t: number) => number;
1122
+
1123
+ /**
1124
+ * Smooths out the vertices by averaging their positions with neighboring vertices within a given radius.
1125
+ */
1126
+ export declare const smoothBrush: <T extends BufferGeometry>(geometry: T, position: Vector3, radius: number, strength: number) => void;
1127
+
1128
+ export declare const smoothstep: (t: number) => number;
1129
+
1130
+ /**
1131
+ * Convert spherical coordinates to Cartesian coordinates.
1132
+ * @param {number} radius - The radius of the sphere.
1133
+ * @param {number} theta - The azimuthal angle in radians (from the x-axis in the x-y plane).
1134
+ * @param {number} phi - The polar angle in radians (from the positive z-axis).
1135
+ * @returns {{x: number, y: number, z: number}} The Cartesian coordinates.
1136
+ */
1137
+ export declare const sphericalToCartesian: (radius: number, theta: number, phi: number) => {
1138
+ x: number;
1139
+ y: number;
1140
+ z: number;
1141
+ };
1142
+
1143
+ /**
1144
+ * Creates spikes or depressions centered on the target position, pushing vertices away or pulling them towards the center.
1145
+ */
1146
+ export declare const spikeBrush: <T extends BufferGeometry>(geometry: T, position: Vector3, radius: number, strength: number, inward?: boolean, falloffFn?: (distance: number, radius: number) => number) => void;
1147
+
1148
+ export declare class SpiralStaircaseGeometry extends BufferGeometry {
1149
+ constructor(stepWidth?: number, stepDepth?: number, stepHeight?: number, numSteps?: number, radius?: number, angleIncrement?: number);
1150
+ }
1151
+
1152
+ export declare class SpiralTube extends Group {
1153
+ constructor();
1154
+ }
1155
+
1156
+ export declare class SquareHeadstone extends Mesh {
1157
+ constructor(width?: number, height?: number, depth?: number);
1158
+ }
1159
+
1160
+ export declare class SquareHeadstoneGeometry extends BufferGeometry {
1161
+ constructor(width?: number, height?: number, depth?: number);
1162
+ }
1163
+
1164
+ export declare const squareRoot: (t: number) => number;
1165
+
1166
+ export declare class StaircaseGeometry extends BufferGeometry {
1167
+ constructor(width?: number, stepHeight?: number, stepDepth?: number, numSteps?: number);
1168
+ }
1169
+
1170
+ export declare class Stand extends Mesh {
1171
+ constructor({ radius, //
1172
+ height, count, thickness, radialSegments, }?: {
1173
+ radius?: number | undefined;
1174
+ height?: number | undefined;
1175
+ count?: number | undefined;
1176
+ thickness?: number | undefined;
1177
+ radialSegments?: number | undefined;
1178
+ });
1179
+ }
1180
+
1181
+ export declare class StandGeometry extends BufferGeometry {
1182
+ constructor({ radius, //
1183
+ height, count, thickness, radialSegments, }?: {
1184
+ radius?: number | undefined;
1185
+ height?: number | undefined;
1186
+ count?: number | undefined;
1187
+ thickness?: number | undefined;
1188
+ radialSegments?: number | undefined;
1189
+ });
1190
+ }
1191
+
1192
+ export declare class Star extends Mesh {
1193
+ constructor(points?: number, innerRadius?: number, outerRadius?: number, depth?: number);
1194
+ }
1195
+
1196
+ export declare class StarShape extends Shape {
1197
+ constructor(points?: number, innerRadius?: number, outerRadius?: number);
1198
+ }
1199
+
1200
+ export declare class TeslaCoil extends Group {
1201
+ constructor();
1202
+ }
1203
+
1204
+ export declare class TestTube extends Group {
1205
+ constructor(radiusTop?: number, radiusBottom?: number, height?: number, segments?: number);
1206
+ }
1207
+
1208
+ export declare class TestTubeGeometry extends BufferGeometry {
1209
+ constructor(radiusTop?: number, radiusBottom?: number, height?: number, segments?: number, openEnded?: boolean);
1210
+ }
1211
+
1212
+ export declare class TestTubeRack extends Group {
1213
+ constructor(count?: number, colors?: number[]);
1214
+ }
1215
+
1216
+ /**
1217
+ * @example
1218
+ * const tree = new Tree({
1219
+ * trunkRadiusTop: 0.25,
1220
+ * trunkRadiusBottom: 0.4,
1221
+ * trunkHeight: 2.5,
1222
+ * trunkSegments: 14,
1223
+ * trunkColor: 0x8b4513,
1224
+ * leafSize: 0.8,
1225
+ * leafCount: 6,
1226
+ * leafDetail: 0,
1227
+ * leafSpreadRadius: 1.5,
1228
+ * leafColor: 0x228b22,
1229
+ * });
1230
+ */
1231
+ export declare class Tree extends Mesh {
1232
+ constructor({ trunkRadiusTop, trunkRadiusBottom, trunkHeight, trunkSegments, trunkColor, leafSize, leafCount, leafDetail, leafSpreadRadius, leafColor, }?: {
1233
+ trunkRadiusTop?: number | undefined;
1234
+ trunkRadiusBottom?: number | undefined;
1235
+ trunkHeight?: number | undefined;
1236
+ trunkSegments?: number | undefined;
1237
+ trunkColor?: number | undefined;
1238
+ leafSize?: number | undefined;
1239
+ leafCount?: number | undefined;
1240
+ leafDetail?: number | undefined;
1241
+ leafSpreadRadius?: number | undefined;
1242
+ leafColor?: number | undefined;
1243
+ });
1244
+ }
1245
+
1246
+ /**
1247
+ * Tree geometry, consisting of a trunk and leaves.
1248
+ *
1249
+ * Group order:
1250
+ * - Trunk Material
1251
+ * - Leaf Material
1252
+ */
1253
+ export declare class TreeGeometry extends BufferGeometry {
1254
+ constructor({ trunkRadiusTop, trunkRadiusBottom, trunkHeight, trunkSegments, leafSize, leafCount, leafDetail, leafSpreadRadius, }?: {
1255
+ trunkRadiusTop?: number | undefined;
1256
+ trunkRadiusBottom?: number | undefined;
1257
+ trunkHeight?: number | undefined;
1258
+ trunkSegments?: number | undefined;
1259
+ leafSize?: number | undefined;
1260
+ leafCount?: number | undefined;
1261
+ leafDetail?: number | undefined;
1262
+ leafSpreadRadius?: number | undefined;
1263
+ });
1264
+ }
1265
+
1266
+ /**
1267
+ * Applies a twisting force to the vertices, rotating them around the direction defined by the target position.
1268
+ */
1269
+ export declare const twistBrush: <T extends BufferGeometry>(geometry: T, position: Vector3, radius: number, strength: number, direction?: Vector3, falloffFn?: (distance: number, radius: number) => number) => void;
1270
+
1271
+ /**
1272
+ * Updates the time uniform of the material's shader to animate the noise effect.
1273
+ * @param {Material} material - The material to update.
1274
+ * @param {number} deltaTime - The time increment to add.
1275
+ */
1276
+ export declare function updateNoiseDisplacementTime<T extends Material>(material: T, deltaTime: number): void;
1277
+
1278
+ /**
1279
+ * Updates the time uniform of the material's shader to animate the water effect.
1280
+ * @param {Material} material - The material to update.
1281
+ * @param {number} deltaTime - The time increment to add.
1282
+ */
1283
+ export declare function updateWaterDisplacementTime<T extends Material>(material: T, deltaTime: number): void;
1284
+
1285
+ export declare class WineBottle extends Mesh {
1286
+ constructor();
1287
+ }
1288
+
1289
+ export declare class WineBottleGeometry extends BufferGeometry {
1290
+ constructor({ radius, neckRadius, height, neckHeight, segments }?: {
1291
+ radius?: number | undefined;
1292
+ neckRadius?: number | undefined;
1293
+ height?: number | undefined;
1294
+ neckHeight?: number | undefined;
1295
+ segments?: number | undefined;
1296
+ });
1297
+ }
1298
+
1299
+ export declare class WroughtIronBar extends Mesh {
1300
+ constructor({ barHeight, //
1301
+ barRadius, spikeHeight, spikeRadius, spikeScaleZ, radialSegments, }?: {
1302
+ barHeight?: number | undefined;
1303
+ barRadius?: number | undefined;
1304
+ spikeHeight?: number | undefined;
1305
+ spikeRadius?: number | undefined;
1306
+ spikeScaleZ?: number | undefined;
1307
+ radialSegments?: number | undefined;
1308
+ });
1309
+ }
1310
+
1311
+ /**
1312
+ * Wrought Iron Bar Geometry, a simple wrought iron bar shape
1313
+ */
1314
+ export declare class WroughtIronBarGeometry extends BufferGeometry {
1315
+ constructor({ barHeight, //
1316
+ barRadius, spikeHeight, spikeRadius, spikeScaleZ, radialSegments, }?: {
1317
+ barHeight?: number | undefined;
1318
+ barRadius?: number | undefined;
1319
+ spikeHeight?: number | undefined;
1320
+ spikeRadius?: number | undefined;
1321
+ spikeScaleZ?: number | undefined;
1322
+ radialSegments?: number | undefined;
1323
+ });
1324
+ }
1325
+
1326
+ export declare class WroughtIronFence extends Mesh {
1327
+ constructor({ count, //
1328
+ spacing, barHeight, barRadius, spikeHeight, spikeRadius, spikeScaleZ, railHeight, railDepth, railOffset, radialSegments, }?: {
1329
+ count?: number | undefined;
1330
+ spacing?: number | undefined;
1331
+ barHeight?: number | undefined;
1332
+ barRadius?: number | undefined;
1333
+ spikeHeight?: number | undefined;
1334
+ spikeRadius?: number | undefined;
1335
+ spikeScaleZ?: number | undefined;
1336
+ railHeight?: number | undefined;
1337
+ railDepth?: number | undefined;
1338
+ railOffset?: number | undefined;
1339
+ radialSegments?: number | undefined;
1340
+ });
1341
+ }
1342
+
1343
+ export declare class WroughtIronFenceGeometry extends BufferGeometry {
1344
+ constructor({ count, //
1345
+ spacing, barHeight, barRadius, spikeHeight, spikeRadius, spikeScaleZ, railHeight, railDepth, railOffset, radialSegments, }?: {
1346
+ count?: number | undefined;
1347
+ spacing?: number | undefined;
1348
+ barHeight?: number | undefined;
1349
+ barRadius?: number | undefined;
1350
+ spikeHeight?: number | undefined;
1351
+ spikeRadius?: number | undefined;
1352
+ spikeScaleZ?: number | undefined;
1353
+ railHeight?: number | undefined;
1354
+ railDepth?: number | undefined;
1355
+ railOffset?: number | undefined;
1356
+ radialSegments?: number | undefined;
1357
+ });
1358
+ }
1359
+
1360
+ export { }