three-low-poly 0.9.5 → 0.9.7
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/index.cjs.js +57 -5
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +1648 -696
- package/dist/index.es.js.map +1 -1
- package/dist/index.iife.js +57 -5
- package/dist/index.iife.js.map +1 -1
- package/dist/index.umd.js +57 -5
- package/dist/index.umd.js.map +1 -1
- package/package.json +2 -2
package/dist/index.es.js
CHANGED
|
@@ -1,18 +1,137 @@
|
|
|
1
|
-
import { Group as
|
|
2
|
-
import { mergeGeometries as
|
|
3
|
-
import { Sky as
|
|
4
|
-
|
|
1
|
+
import { Vector3 as M, MathUtils as D, Quaternion as ce, Group as S, SphereGeometry as T, MeshStandardMaterial as w, Mesh as h, BufferGeometry as b, Float32BufferAttribute as U, BufferAttribute as Y, BoxGeometry as g, ConeGeometry as z, CylinderGeometry as v, Vector2 as I, LatheGeometry as Z, CircleGeometry as ie, DodecahedronGeometry as Q, ShaderMaterial as j, Shape as _, ExtrudeGeometry as L, MeshBasicMaterial as le, PointLight as oe, TorusGeometry as se, MeshPhysicalMaterial as K, DoubleSide as q, CatmullRomCurve3 as me, TubeGeometry as ue, LineBasicMaterial as fe, Line as he, Path as de, Color as $, BackSide as ne, DataTexture as pe, RGBAFormat as we, UnsignedByteType as ye, RepeatWrapping as W, NearestFilter as xe } from "three";
|
|
2
|
+
import { mergeGeometries as A, mergeVertices as Me } from "three/addons/utils/BufferGeometryUtils.js";
|
|
3
|
+
import { Sky as ve } from "three/addons/objects/Sky.js";
|
|
4
|
+
import { EffectComposer as ge } from "three/addons/postprocessing/EffectComposer.js";
|
|
5
|
+
import { RenderPass as ee } from "three/addons/postprocessing/RenderPass.js";
|
|
6
|
+
import { ShaderPass as Se } from "three/addons/postprocessing/ShaderPass.js";
|
|
7
|
+
const C = {
|
|
8
|
+
UP: new M(0, 1, 0),
|
|
9
|
+
DOWN: new M(0, -1, 0),
|
|
10
|
+
LEFT: new M(-1, 0, 0),
|
|
11
|
+
RIGHT: new M(1, 0, 0),
|
|
12
|
+
FORWARD: new M(0, 0, 1),
|
|
13
|
+
BACKWARD: new M(0, 0, -1),
|
|
14
|
+
X: new M(1, 0, 0),
|
|
15
|
+
Y: new M(0, 1, 0),
|
|
16
|
+
Z: new M(0, 0, 1),
|
|
17
|
+
XY: new M(1, 1, 0).normalize(),
|
|
18
|
+
XZ: new M(1, 0, 1).normalize(),
|
|
19
|
+
YZ: new M(0, 1, 1).normalize(),
|
|
20
|
+
XYZ: new M(1, 1, 1).normalize()
|
|
21
|
+
}, O = {
|
|
22
|
+
LINEAR: (l, e) => 1 - l / e,
|
|
23
|
+
QUADRATIC: (l, e) => Math.pow(1 - l / e, 2),
|
|
24
|
+
SQUARE_ROOT: (l, e) => Math.pow(1 - l / e, 0.5),
|
|
25
|
+
LOGARITHMIC: (l, e) => Math.log(1 + (e - l)) / Math.log(1 + e),
|
|
26
|
+
SINE: (l, e) => Math.cos(l / e * Math.PI / 2),
|
|
27
|
+
EXPONENTIAL: (l, e) => Math.exp(-l / e),
|
|
28
|
+
CUBIC: (l, e) => Math.pow(1 - l / e, 3),
|
|
29
|
+
GAUSSIAN: (l, e) => Math.exp(-Math.pow(l, 2) / (2 * Math.pow(e / 3, 2))),
|
|
30
|
+
INVERSE: (l, e) => e / (e + l),
|
|
31
|
+
SMOOTHSTEP: (l, e) => {
|
|
32
|
+
const t = Math.max(0, Math.min(1, 1 - l / e));
|
|
33
|
+
return t * t * (3 - 2 * t);
|
|
34
|
+
}
|
|
35
|
+
}, De = (l, e, t, o, r = C.UP, i = O.LINEAR) => {
|
|
36
|
+
const s = l.attributes.position;
|
|
37
|
+
for (let n = 0; n < s.count; n++) {
|
|
38
|
+
const c = new M();
|
|
39
|
+
c.fromBufferAttribute(s, n);
|
|
40
|
+
const a = c.distanceTo(e);
|
|
41
|
+
if (a < t) {
|
|
42
|
+
const u = i(a, t) * o;
|
|
43
|
+
c.add(r.clone().multiplyScalar(u)), s.setXYZ(n, c.x, c.y, c.z);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
s.needsUpdate = !0;
|
|
47
|
+
}, He = (l, e, t, o, r, i = C.UP, s = O.LINEAR) => {
|
|
48
|
+
const n = l.attributes.position;
|
|
49
|
+
for (let c = 0; c < n.count; c++) {
|
|
50
|
+
const a = new M();
|
|
51
|
+
a.fromBufferAttribute(n, c);
|
|
52
|
+
const m = a.distanceTo(e);
|
|
53
|
+
if (m < t) {
|
|
54
|
+
const f = s(m, t) * r, p = a.dot(i.normalize()), d = o - p;
|
|
55
|
+
a.add(i.clone().multiplyScalar(d * f)), n.setXYZ(c, a.x, a.y, a.z);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
n.needsUpdate = !0;
|
|
59
|
+
}, Re = (l, e, t, o, r = C.UP, i = O.LINEAR) => {
|
|
60
|
+
const s = l.attributes.position;
|
|
61
|
+
for (let n = 0; n < s.count; n++) {
|
|
62
|
+
const c = new M();
|
|
63
|
+
c.fromBufferAttribute(s, n);
|
|
64
|
+
const a = c.distanceTo(e);
|
|
65
|
+
if (a < t) {
|
|
66
|
+
const m = i(a, t), u = o * m, f = r.clone().normalize();
|
|
67
|
+
f.x !== 0 && (c.x += D.randFloatSpread(u) * f.x), f.y !== 0 && (c.y += D.randFloatSpread(u) * f.y), f.z !== 0 && (c.z += D.randFloatSpread(u) * f.z), s.setXYZ(n, c.x, c.y, c.z);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
s.needsUpdate = !0;
|
|
71
|
+
}, Qe = (l, e, t, o) => {
|
|
72
|
+
const r = l.attributes.position, i = new M();
|
|
73
|
+
for (let s = 0; s < r.count; s++) {
|
|
74
|
+
const n = new M();
|
|
75
|
+
if (n.fromBufferAttribute(r, s), n.distanceTo(e) < t) {
|
|
76
|
+
let a = new M(), m = 0;
|
|
77
|
+
for (let u = 0; u < r.count; u++)
|
|
78
|
+
i.fromBufferAttribute(r, u), i.distanceTo(n) < t && (a.add(i), m++);
|
|
79
|
+
m > 0 && (a.divideScalar(m), n.lerp(a, o), r.setXYZ(s, n.x, n.y, n.z));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
r.needsUpdate = !0;
|
|
83
|
+
}, je = (l, e, t, o, r = !1, i = O.LINEAR) => {
|
|
84
|
+
const s = l.attributes.position;
|
|
85
|
+
for (let n = 0; n < s.count; n++) {
|
|
86
|
+
const c = new M();
|
|
87
|
+
c.fromBufferAttribute(s, n);
|
|
88
|
+
const a = c.distanceTo(e);
|
|
89
|
+
if (a < t) {
|
|
90
|
+
const u = i(a, t) * o * (r ? -1 : 1), f = c.clone().sub(e).normalize();
|
|
91
|
+
c.add(f.multiplyScalar(u)), s.setXYZ(n, c.x, c.y, c.z);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
s.needsUpdate = !0;
|
|
95
|
+
}, Ke = (l, e, t, o, r = C.UP, i = O.LINEAR) => {
|
|
96
|
+
const s = l.attributes.position, n = new ce();
|
|
97
|
+
for (let c = 0; c < s.count; c++) {
|
|
98
|
+
const a = new M();
|
|
99
|
+
a.fromBufferAttribute(s, c);
|
|
100
|
+
const m = a.distanceTo(e);
|
|
101
|
+
if (m < t) {
|
|
102
|
+
const f = i(m, t) * o;
|
|
103
|
+
n.setFromAxisAngle(r, f), a.sub(e).applyQuaternion(n).add(e), s.setXYZ(c, a.x, a.y, a.z);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
s.needsUpdate = !0;
|
|
107
|
+
}, Je = {
|
|
108
|
+
LINEAR: (l) => l,
|
|
109
|
+
QUADRATIC_EASE_IN: (l) => l * l,
|
|
110
|
+
QUADRATIC_EASE_OUT: (l) => 1 - Math.pow(1 - l, 2),
|
|
111
|
+
SQUARE_ROOT_EASING: (l) => Math.sqrt(l),
|
|
112
|
+
LOGARITHMIC_EASING: (l) => Math.log(1 + l) / Math.log(2),
|
|
113
|
+
SINE_EASE_IN: (l) => 1 - Math.cos(l * Math.PI / 2),
|
|
114
|
+
SINE_EASE_OUT: (l) => Math.sin(l * Math.PI / 2),
|
|
115
|
+
EXPONENTIAL_EASE_IN: (l) => Math.pow(2, 10 * (l - 1)),
|
|
116
|
+
EXPONENTIAL_EASE_OUT: (l) => 1 - Math.pow(2, -10 * l),
|
|
117
|
+
CUBIC_EASE_IN: (l) => l * l * l,
|
|
118
|
+
CUBIC_EASE_OUT: (l) => 1 - Math.pow(1 - l, 3),
|
|
119
|
+
GAUSSIAN_EASING: (l) => Math.exp(-Math.pow(l - 0.5, 2) / (2 * 0.1)),
|
|
120
|
+
INVERSE_EASING: (l) => 1 / (1 + l),
|
|
121
|
+
SMOOTHSTEP_EASING: (l) => l * l * (3 - 2 * l)
|
|
122
|
+
};
|
|
123
|
+
class $e extends S {
|
|
5
124
|
constructor() {
|
|
6
125
|
super();
|
|
7
|
-
const e = [],
|
|
126
|
+
const e = [], t = 20, o = new T(0.1, 6, 6), r = new w({
|
|
8
127
|
color: 16777215,
|
|
9
128
|
transparent: !0,
|
|
10
129
|
opacity: 0.6,
|
|
11
130
|
roughness: 0.3,
|
|
12
131
|
metalness: 0.3
|
|
13
132
|
});
|
|
14
|
-
for (let
|
|
15
|
-
const c = new
|
|
133
|
+
for (let n = 0; n < t; n++) {
|
|
134
|
+
const c = new h(o, r);
|
|
16
135
|
c.position.set(
|
|
17
136
|
(Math.random() - 0.5) * 1.5,
|
|
18
137
|
// Random x position within flask
|
|
@@ -22,97 +141,97 @@ class Se extends g {
|
|
|
22
141
|
// Random z position within flask
|
|
23
142
|
), e.push(c), this.add(c);
|
|
24
143
|
}
|
|
25
|
-
function
|
|
26
|
-
e.forEach((
|
|
27
|
-
|
|
144
|
+
function i() {
|
|
145
|
+
e.forEach((n) => {
|
|
146
|
+
n.position.y += 0.02, n.position.y > 3 && (n.position.y = 0, n.position.x = (Math.random() - 0.5) * 1.5, n.position.z = (Math.random() - 0.5) * 1.5);
|
|
28
147
|
});
|
|
29
148
|
}
|
|
30
|
-
function
|
|
31
|
-
requestAnimationFrame(
|
|
149
|
+
function s() {
|
|
150
|
+
requestAnimationFrame(s), i();
|
|
32
151
|
}
|
|
33
|
-
|
|
152
|
+
s();
|
|
34
153
|
}
|
|
35
154
|
}
|
|
36
|
-
class
|
|
37
|
-
constructor(e = 2,
|
|
155
|
+
class We extends b {
|
|
156
|
+
constructor(e = 2, t = 0.3, o = 0.6, r = 5, i = 5, s = Math.PI / 4) {
|
|
38
157
|
super();
|
|
39
|
-
const
|
|
40
|
-
for (let p = 0; p <
|
|
41
|
-
const
|
|
42
|
-
|
|
158
|
+
const n = [], c = [];
|
|
159
|
+
for (let p = 0; p < r; p++) {
|
|
160
|
+
const d = p * t, x = d + t, y = p * o, P = y + o;
|
|
161
|
+
n.push(
|
|
43
162
|
// Vertical riser
|
|
44
163
|
-e / 2,
|
|
45
|
-
|
|
46
|
-
|
|
164
|
+
d,
|
|
165
|
+
y,
|
|
47
166
|
// Bottom-left
|
|
48
167
|
e / 2,
|
|
49
|
-
|
|
50
|
-
|
|
168
|
+
d,
|
|
169
|
+
y,
|
|
51
170
|
// Bottom-right
|
|
52
171
|
e / 2,
|
|
53
|
-
|
|
54
|
-
|
|
172
|
+
x,
|
|
173
|
+
y,
|
|
55
174
|
// Top-right
|
|
56
175
|
-e / 2,
|
|
57
|
-
|
|
58
|
-
|
|
176
|
+
x,
|
|
177
|
+
y,
|
|
59
178
|
// Top-left
|
|
60
179
|
// Horizontal tread
|
|
61
180
|
-e / 2,
|
|
62
|
-
|
|
63
|
-
|
|
181
|
+
x,
|
|
182
|
+
y,
|
|
64
183
|
// Top-left
|
|
65
184
|
e / 2,
|
|
66
|
-
|
|
67
|
-
|
|
185
|
+
x,
|
|
186
|
+
y,
|
|
68
187
|
// Top-right
|
|
69
188
|
e / 2,
|
|
70
|
-
|
|
189
|
+
x,
|
|
71
190
|
P,
|
|
72
191
|
// Back-right
|
|
73
192
|
-e / 2,
|
|
74
|
-
|
|
193
|
+
x,
|
|
75
194
|
P
|
|
76
195
|
// Back-left
|
|
77
196
|
);
|
|
78
|
-
const
|
|
197
|
+
const G = p * 8;
|
|
79
198
|
c.push(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
199
|
+
G,
|
|
200
|
+
G + 1,
|
|
201
|
+
G + 2,
|
|
202
|
+
G,
|
|
203
|
+
G + 2,
|
|
204
|
+
G + 3
|
|
86
205
|
), c.push(
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
206
|
+
G + 4,
|
|
207
|
+
G + 5,
|
|
208
|
+
G + 6,
|
|
209
|
+
G + 4,
|
|
210
|
+
G + 6,
|
|
211
|
+
G + 7
|
|
93
212
|
);
|
|
94
213
|
}
|
|
95
|
-
const
|
|
96
|
-
|
|
214
|
+
const a = r * t, m = r * o, u = e * 2;
|
|
215
|
+
n.push(
|
|
97
216
|
// Landing platform (4 vertices)
|
|
98
217
|
-u / 2,
|
|
99
|
-
|
|
100
|
-
|
|
218
|
+
a,
|
|
219
|
+
m,
|
|
101
220
|
// Bottom-left
|
|
102
221
|
u / 2,
|
|
103
|
-
|
|
104
|
-
|
|
222
|
+
a,
|
|
223
|
+
m,
|
|
105
224
|
// Bottom-right
|
|
106
225
|
u / 2,
|
|
107
|
-
|
|
108
|
-
|
|
226
|
+
a,
|
|
227
|
+
m + o,
|
|
109
228
|
// Top-right
|
|
110
229
|
-u / 2,
|
|
111
|
-
|
|
112
|
-
|
|
230
|
+
a,
|
|
231
|
+
m + o
|
|
113
232
|
// Top-left
|
|
114
233
|
);
|
|
115
|
-
const f =
|
|
234
|
+
const f = r * 8;
|
|
116
235
|
c.push(
|
|
117
236
|
f,
|
|
118
237
|
f + 1,
|
|
@@ -124,46 +243,46 @@ class Pe extends b {
|
|
|
124
243
|
// Second triangle for landing
|
|
125
244
|
);
|
|
126
245
|
for (let p = 0; p < 2; p++) {
|
|
127
|
-
const
|
|
128
|
-
for (let
|
|
129
|
-
const
|
|
130
|
-
|
|
246
|
+
const d = p === 0 ? 1 : -1;
|
|
247
|
+
for (let x = 0; x < i; x++) {
|
|
248
|
+
const y = a + x * t, P = y + t, G = d * (u / 4), F = m + o, V = x * o * Math.cos(s), B = x * o * Math.sin(s), E = G + d * V - e / 2 * Math.cos(s), X = G + d * V + e / 2 * Math.cos(s), N = F + B, ae = E + d * o * Math.cos(s), re = X + d * o * Math.cos(s), J = N + o * Math.sin(s);
|
|
249
|
+
n.push(
|
|
131
250
|
// Vertical riser
|
|
132
251
|
E,
|
|
133
|
-
|
|
134
|
-
|
|
252
|
+
y,
|
|
253
|
+
N,
|
|
135
254
|
// Bottom-left
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
255
|
+
X,
|
|
256
|
+
y,
|
|
257
|
+
N,
|
|
139
258
|
// Bottom-right
|
|
140
|
-
|
|
259
|
+
X,
|
|
141
260
|
P,
|
|
142
|
-
|
|
261
|
+
N,
|
|
143
262
|
// Top-right
|
|
144
263
|
E,
|
|
145
264
|
P,
|
|
146
|
-
|
|
265
|
+
N,
|
|
147
266
|
// Top-left
|
|
148
267
|
// Horizontal tread
|
|
149
268
|
E,
|
|
150
269
|
P,
|
|
151
|
-
|
|
270
|
+
N,
|
|
152
271
|
// Top-left
|
|
153
|
-
|
|
272
|
+
X,
|
|
154
273
|
P,
|
|
155
|
-
|
|
274
|
+
N,
|
|
156
275
|
// Top-right
|
|
157
|
-
|
|
276
|
+
re,
|
|
158
277
|
P,
|
|
159
|
-
|
|
278
|
+
J,
|
|
160
279
|
// Back-right
|
|
161
|
-
|
|
280
|
+
ae,
|
|
162
281
|
P,
|
|
163
|
-
|
|
282
|
+
J
|
|
164
283
|
// Back-left
|
|
165
284
|
);
|
|
166
|
-
const k = f + 4 + p *
|
|
285
|
+
const k = f + 4 + p * i * 8 + x * 8;
|
|
167
286
|
c.push(
|
|
168
287
|
k,
|
|
169
288
|
k + 1,
|
|
@@ -181,65 +300,65 @@ class Pe extends b {
|
|
|
181
300
|
);
|
|
182
301
|
}
|
|
183
302
|
}
|
|
184
|
-
this.setIndex(c), this.setAttribute("position", new
|
|
303
|
+
this.setIndex(c), this.setAttribute("position", new U(n, 3)), this.computeVertexNormals();
|
|
185
304
|
}
|
|
186
305
|
}
|
|
187
|
-
class
|
|
188
|
-
constructor(e = 5,
|
|
306
|
+
class et extends b {
|
|
307
|
+
constructor(e = 5, t = 3, o = 5, r = 0.2) {
|
|
189
308
|
super();
|
|
190
|
-
const
|
|
309
|
+
const i = [
|
|
191
310
|
// Floor vertices
|
|
192
311
|
-e / 2,
|
|
193
312
|
0,
|
|
194
|
-
-
|
|
313
|
+
-o / 2,
|
|
195
314
|
// 0
|
|
196
315
|
e / 2,
|
|
197
316
|
0,
|
|
198
|
-
-
|
|
317
|
+
-o / 2,
|
|
199
318
|
// 1
|
|
200
319
|
e / 2,
|
|
201
320
|
0,
|
|
202
|
-
|
|
321
|
+
o / 2,
|
|
203
322
|
// 2
|
|
204
323
|
-e / 2,
|
|
205
324
|
0,
|
|
206
|
-
|
|
325
|
+
o / 2,
|
|
207
326
|
// 3
|
|
208
327
|
// Back wall vertices
|
|
209
328
|
-e / 2,
|
|
210
329
|
0,
|
|
211
|
-
-
|
|
330
|
+
-o / 2,
|
|
212
331
|
// 4
|
|
213
332
|
e / 2,
|
|
214
333
|
0,
|
|
215
|
-
-
|
|
334
|
+
-o / 2,
|
|
216
335
|
// 5
|
|
217
336
|
e / 2,
|
|
218
|
-
|
|
219
|
-
-
|
|
337
|
+
t,
|
|
338
|
+
-o / 2,
|
|
220
339
|
// 6
|
|
221
340
|
-e / 2,
|
|
222
|
-
|
|
223
|
-
-
|
|
341
|
+
t,
|
|
342
|
+
-o / 2,
|
|
224
343
|
// 7
|
|
225
344
|
// Left wall vertices
|
|
226
345
|
-e / 2,
|
|
227
346
|
0,
|
|
228
|
-
-
|
|
347
|
+
-o / 2,
|
|
229
348
|
// 8
|
|
230
349
|
-e / 2,
|
|
231
350
|
0,
|
|
232
|
-
|
|
351
|
+
o / 2,
|
|
233
352
|
// 9
|
|
234
353
|
-e / 2,
|
|
235
|
-
|
|
236
|
-
|
|
354
|
+
t,
|
|
355
|
+
o / 2,
|
|
237
356
|
// 10
|
|
238
357
|
-e / 2,
|
|
239
|
-
|
|
240
|
-
-
|
|
358
|
+
t,
|
|
359
|
+
-o / 2
|
|
241
360
|
// 11
|
|
242
|
-
],
|
|
361
|
+
], s = [
|
|
243
362
|
// Floor
|
|
244
363
|
0,
|
|
245
364
|
1,
|
|
@@ -262,269 +381,269 @@ class ke extends b {
|
|
|
262
381
|
10,
|
|
263
382
|
11
|
|
264
383
|
];
|
|
265
|
-
this.setIndex(
|
|
384
|
+
this.setIndex(s), this.setAttribute("position", new U(i, 3)), this.computeVertexNormals();
|
|
266
385
|
}
|
|
267
386
|
}
|
|
268
|
-
class
|
|
269
|
-
constructor(e = 2,
|
|
387
|
+
class tt extends b {
|
|
388
|
+
constructor(e = 2, t = 0.3, o = 0.5, r = 5, i = 2) {
|
|
270
389
|
super();
|
|
271
|
-
const
|
|
272
|
-
for (let u = 0; u <
|
|
273
|
-
const f = u *
|
|
274
|
-
|
|
390
|
+
const s = [], n = [];
|
|
391
|
+
for (let u = 0; u < r; u++) {
|
|
392
|
+
const f = u * t, p = f + t, d = u * o, x = d + o;
|
|
393
|
+
s.push(
|
|
275
394
|
// Vertical riser
|
|
276
395
|
-e / 2,
|
|
277
396
|
f,
|
|
278
|
-
|
|
397
|
+
d,
|
|
279
398
|
// Bottom-left
|
|
280
399
|
e / 2,
|
|
281
400
|
f,
|
|
282
|
-
|
|
401
|
+
d,
|
|
283
402
|
// Bottom-right
|
|
284
403
|
e / 2,
|
|
285
404
|
p,
|
|
286
|
-
|
|
405
|
+
d,
|
|
287
406
|
// Top-right
|
|
288
407
|
-e / 2,
|
|
289
408
|
p,
|
|
290
|
-
|
|
409
|
+
d,
|
|
291
410
|
// Top-left
|
|
292
411
|
// Horizontal tread
|
|
293
412
|
-e / 2,
|
|
294
413
|
p,
|
|
295
|
-
|
|
414
|
+
d,
|
|
296
415
|
// Top-left
|
|
297
416
|
e / 2,
|
|
298
417
|
p,
|
|
299
|
-
|
|
418
|
+
d,
|
|
300
419
|
// Top-right
|
|
301
420
|
e / 2,
|
|
302
421
|
p,
|
|
303
|
-
|
|
422
|
+
x,
|
|
304
423
|
// Back-right
|
|
305
424
|
-e / 2,
|
|
306
425
|
p,
|
|
307
|
-
|
|
426
|
+
x
|
|
308
427
|
// Back-left
|
|
309
428
|
);
|
|
310
|
-
const
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
),
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
429
|
+
const y = u * 8;
|
|
430
|
+
n.push(
|
|
431
|
+
y,
|
|
432
|
+
y + 1,
|
|
433
|
+
y + 2,
|
|
434
|
+
y,
|
|
435
|
+
y + 2,
|
|
436
|
+
y + 3
|
|
437
|
+
), n.push(
|
|
438
|
+
y + 4,
|
|
439
|
+
y + 5,
|
|
440
|
+
y + 6,
|
|
441
|
+
y + 4,
|
|
442
|
+
y + 6,
|
|
443
|
+
y + 7
|
|
325
444
|
);
|
|
326
445
|
}
|
|
327
|
-
const c =
|
|
328
|
-
|
|
446
|
+
const c = r * t, a = r * o;
|
|
447
|
+
s.push(
|
|
329
448
|
// Landing platform (4 vertices)
|
|
330
449
|
-e / 2,
|
|
331
450
|
c,
|
|
332
|
-
|
|
451
|
+
a,
|
|
333
452
|
// Bottom-left
|
|
334
453
|
e / 2,
|
|
335
454
|
c,
|
|
336
|
-
|
|
455
|
+
a,
|
|
337
456
|
// Bottom-right
|
|
338
457
|
e / 2,
|
|
339
458
|
c,
|
|
340
|
-
|
|
459
|
+
a + i,
|
|
341
460
|
// Top-right
|
|
342
461
|
-e / 2,
|
|
343
462
|
c,
|
|
344
|
-
|
|
463
|
+
a + i
|
|
345
464
|
// Top-left
|
|
346
465
|
);
|
|
347
|
-
const
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
466
|
+
const m = r * 8;
|
|
467
|
+
n.push(
|
|
468
|
+
m,
|
|
469
|
+
m + 1,
|
|
470
|
+
m + 2,
|
|
352
471
|
// First triangle for landing
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
472
|
+
m,
|
|
473
|
+
m + 2,
|
|
474
|
+
m + 3
|
|
356
475
|
// Second triangle for landing
|
|
357
476
|
);
|
|
358
|
-
for (let u = 0; u <
|
|
359
|
-
const f = c + u *
|
|
360
|
-
|
|
477
|
+
for (let u = 0; u < r; u++) {
|
|
478
|
+
const f = c + u * t, p = f + t, d = -e / 2 - u * o, x = d - o;
|
|
479
|
+
s.push(
|
|
361
480
|
// Vertical riser
|
|
362
|
-
|
|
481
|
+
d,
|
|
363
482
|
f,
|
|
364
|
-
|
|
483
|
+
a + i,
|
|
365
484
|
// Bottom-left
|
|
366
|
-
|
|
485
|
+
d,
|
|
367
486
|
f,
|
|
368
|
-
|
|
487
|
+
a + i - e,
|
|
369
488
|
// Bottom-right
|
|
370
|
-
|
|
489
|
+
d,
|
|
371
490
|
p,
|
|
372
|
-
|
|
491
|
+
a + i - e,
|
|
373
492
|
// Top-right
|
|
374
|
-
|
|
493
|
+
d,
|
|
375
494
|
p,
|
|
376
|
-
|
|
495
|
+
a + i,
|
|
377
496
|
// Top-left
|
|
378
497
|
// Horizontal tread
|
|
379
|
-
|
|
498
|
+
d,
|
|
380
499
|
p,
|
|
381
|
-
|
|
500
|
+
a + i,
|
|
382
501
|
// Top-left
|
|
383
|
-
|
|
502
|
+
d,
|
|
384
503
|
p,
|
|
385
|
-
|
|
504
|
+
a + i - e,
|
|
386
505
|
// Top-right
|
|
387
|
-
|
|
506
|
+
x,
|
|
388
507
|
p,
|
|
389
|
-
|
|
508
|
+
a + i - e,
|
|
390
509
|
// Back-right
|
|
391
|
-
|
|
510
|
+
x,
|
|
392
511
|
p,
|
|
393
|
-
|
|
512
|
+
a + i
|
|
394
513
|
// Back-left
|
|
395
514
|
);
|
|
396
|
-
const
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
),
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
515
|
+
const y = m + 4 + u * 8;
|
|
516
|
+
n.push(
|
|
517
|
+
y,
|
|
518
|
+
y + 1,
|
|
519
|
+
y + 2,
|
|
520
|
+
y,
|
|
521
|
+
y + 2,
|
|
522
|
+
y + 3
|
|
523
|
+
), n.push(
|
|
524
|
+
y + 4,
|
|
525
|
+
y + 5,
|
|
526
|
+
y + 6,
|
|
527
|
+
y + 4,
|
|
528
|
+
y + 6,
|
|
529
|
+
y + 7
|
|
411
530
|
);
|
|
412
531
|
}
|
|
413
|
-
this.setIndex(
|
|
532
|
+
this.setIndex(n), this.setAttribute("position", new U(s, 3)), this.computeVertexNormals();
|
|
414
533
|
}
|
|
415
534
|
}
|
|
416
|
-
class
|
|
417
|
-
constructor(e = 1,
|
|
535
|
+
class ot extends b {
|
|
536
|
+
constructor(e = 1, t = 0.4, o = 0.2, r = 20, i = 2, s = Math.PI / 8) {
|
|
418
537
|
super();
|
|
419
|
-
const
|
|
420
|
-
let
|
|
421
|
-
for (let
|
|
422
|
-
const u =
|
|
423
|
-
|
|
538
|
+
const n = [], c = [];
|
|
539
|
+
let a = 0;
|
|
540
|
+
for (let m = 0; m < r; m++) {
|
|
541
|
+
const u = i * Math.cos(a), f = i * Math.sin(a), p = m * o, d = p + o;
|
|
542
|
+
n.push(
|
|
424
543
|
// Front face (vertical riser)
|
|
425
|
-
u - e / 2 * Math.cos(
|
|
544
|
+
u - e / 2 * Math.cos(a),
|
|
426
545
|
p,
|
|
427
|
-
f - e / 2 * Math.sin(
|
|
546
|
+
f - e / 2 * Math.sin(a),
|
|
428
547
|
// Bottom-left
|
|
429
|
-
u + e / 2 * Math.cos(
|
|
548
|
+
u + e / 2 * Math.cos(a),
|
|
430
549
|
p,
|
|
431
|
-
f + e / 2 * Math.sin(
|
|
550
|
+
f + e / 2 * Math.sin(a),
|
|
432
551
|
// Bottom-right
|
|
433
|
-
u + e / 2 * Math.cos(
|
|
434
|
-
|
|
435
|
-
f + e / 2 * Math.sin(
|
|
552
|
+
u + e / 2 * Math.cos(a),
|
|
553
|
+
d,
|
|
554
|
+
f + e / 2 * Math.sin(a),
|
|
436
555
|
// Top-right
|
|
437
|
-
u - e / 2 * Math.cos(
|
|
438
|
-
|
|
439
|
-
f - e / 2 * Math.sin(
|
|
556
|
+
u - e / 2 * Math.cos(a),
|
|
557
|
+
d,
|
|
558
|
+
f - e / 2 * Math.sin(a)
|
|
440
559
|
// Top-left
|
|
441
|
-
),
|
|
560
|
+
), n.push(
|
|
442
561
|
// Top face (horizontal tread)
|
|
443
|
-
u - e / 2 * Math.cos(
|
|
444
|
-
|
|
445
|
-
f - e / 2 * Math.sin(
|
|
562
|
+
u - e / 2 * Math.cos(a),
|
|
563
|
+
d,
|
|
564
|
+
f - e / 2 * Math.sin(a),
|
|
446
565
|
// Top-left-front
|
|
447
|
-
u + e / 2 * Math.cos(
|
|
448
|
-
|
|
449
|
-
f + e / 2 * Math.sin(
|
|
566
|
+
u + e / 2 * Math.cos(a),
|
|
567
|
+
d,
|
|
568
|
+
f + e / 2 * Math.sin(a),
|
|
450
569
|
// Top-right-front
|
|
451
|
-
u + e / 2 * Math.cos(
|
|
452
|
-
|
|
453
|
-
f + e / 2 * Math.sin(
|
|
570
|
+
u + e / 2 * Math.cos(a) - t * Math.sin(a),
|
|
571
|
+
d,
|
|
572
|
+
f + e / 2 * Math.sin(a) + t * Math.cos(a),
|
|
454
573
|
// Back-right
|
|
455
|
-
u - e / 2 * Math.cos(
|
|
456
|
-
|
|
457
|
-
f - e / 2 * Math.sin(
|
|
574
|
+
u - e / 2 * Math.cos(a) - t * Math.sin(a),
|
|
575
|
+
d,
|
|
576
|
+
f - e / 2 * Math.sin(a) + t * Math.cos(a)
|
|
458
577
|
// Back-left
|
|
459
578
|
);
|
|
460
|
-
const
|
|
579
|
+
const x = m * 8;
|
|
461
580
|
c.push(
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
581
|
+
x,
|
|
582
|
+
x + 1,
|
|
583
|
+
x + 2,
|
|
465
584
|
// First triangle for riser
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
585
|
+
x,
|
|
586
|
+
x + 2,
|
|
587
|
+
x + 3
|
|
469
588
|
// Second triangle for riser
|
|
470
589
|
), c.push(
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
590
|
+
x + 4,
|
|
591
|
+
x + 5,
|
|
592
|
+
x + 6,
|
|
474
593
|
// First triangle for tread
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
594
|
+
x + 4,
|
|
595
|
+
x + 6,
|
|
596
|
+
x + 7
|
|
478
597
|
// Second triangle for tread
|
|
479
|
-
),
|
|
598
|
+
), a += s;
|
|
480
599
|
}
|
|
481
|
-
this.setIndex(c), this.setAttribute("position", new
|
|
600
|
+
this.setIndex(c), this.setAttribute("position", new U(n, 3)), this.computeVertexNormals();
|
|
482
601
|
}
|
|
483
602
|
}
|
|
484
|
-
class
|
|
485
|
-
constructor(e = 2,
|
|
603
|
+
class st extends b {
|
|
604
|
+
constructor(e = 2, t = 0.3, o = 0.5, r = 10) {
|
|
486
605
|
super();
|
|
487
|
-
const
|
|
488
|
-
for (let
|
|
489
|
-
const c =
|
|
490
|
-
|
|
606
|
+
const i = [], s = [];
|
|
607
|
+
for (let n = 0; n < r; n++) {
|
|
608
|
+
const c = n * t, a = c + t, m = n * o, u = m + o;
|
|
609
|
+
i.push(
|
|
491
610
|
// Bottom face of riser (front face)
|
|
492
611
|
-e / 2,
|
|
493
612
|
c,
|
|
494
|
-
|
|
613
|
+
m,
|
|
495
614
|
// 0: Bottom-left-front
|
|
496
615
|
e / 2,
|
|
497
616
|
c,
|
|
498
|
-
|
|
617
|
+
m,
|
|
499
618
|
// 1: Bottom-right-front
|
|
500
619
|
e / 2,
|
|
501
|
-
|
|
502
|
-
|
|
620
|
+
a,
|
|
621
|
+
m,
|
|
503
622
|
// 2: Top-right-front
|
|
504
623
|
-e / 2,
|
|
505
|
-
|
|
506
|
-
|
|
624
|
+
a,
|
|
625
|
+
m,
|
|
507
626
|
// 3: Top-left-front
|
|
508
627
|
// Top face of tread (horizontal step)
|
|
509
628
|
-e / 2,
|
|
510
|
-
|
|
511
|
-
|
|
629
|
+
a,
|
|
630
|
+
m,
|
|
512
631
|
// 4: Top-left-front (repeated)
|
|
513
632
|
e / 2,
|
|
514
|
-
|
|
515
|
-
|
|
633
|
+
a,
|
|
634
|
+
m,
|
|
516
635
|
// 5: Top-right-front (repeated)
|
|
517
636
|
e / 2,
|
|
518
|
-
|
|
637
|
+
a,
|
|
519
638
|
u,
|
|
520
639
|
// 6: Top-right-back
|
|
521
640
|
-e / 2,
|
|
522
|
-
|
|
641
|
+
a,
|
|
523
642
|
u
|
|
524
643
|
// 7: Top-left-back
|
|
525
644
|
);
|
|
526
|
-
const f =
|
|
527
|
-
|
|
645
|
+
const f = n * 8;
|
|
646
|
+
s.push(
|
|
528
647
|
f,
|
|
529
648
|
f + 1,
|
|
530
649
|
f + 2,
|
|
@@ -533,7 +652,7 @@ class Be extends b {
|
|
|
533
652
|
f + 2,
|
|
534
653
|
f + 3
|
|
535
654
|
// Second triangle for riser
|
|
536
|
-
),
|
|
655
|
+
), s.push(
|
|
537
656
|
f + 4,
|
|
538
657
|
f + 6,
|
|
539
658
|
f + 5,
|
|
@@ -544,77 +663,676 @@ class Be extends b {
|
|
|
544
663
|
// Second triangle for tread
|
|
545
664
|
);
|
|
546
665
|
}
|
|
547
|
-
this.setIndex(
|
|
666
|
+
this.setIndex(s), this.setAttribute("position", new U(i, 3)), this.computeVertexNormals();
|
|
548
667
|
}
|
|
549
668
|
}
|
|
550
|
-
class
|
|
551
|
-
constructor(e =
|
|
669
|
+
class be extends b {
|
|
670
|
+
constructor(e = 1, t = 1.5, o = 0.5, r = 0.05, i = 0.05) {
|
|
552
671
|
super();
|
|
553
|
-
const s =
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
672
|
+
const s = e, n = t, c = o, a = r, m = i, u = [
|
|
673
|
+
// Front cover
|
|
674
|
+
0,
|
|
675
|
+
0,
|
|
676
|
+
0,
|
|
677
|
+
s,
|
|
678
|
+
0,
|
|
679
|
+
0,
|
|
680
|
+
s,
|
|
681
|
+
n,
|
|
682
|
+
0,
|
|
683
|
+
0,
|
|
684
|
+
n,
|
|
685
|
+
0,
|
|
686
|
+
// Back cover
|
|
687
|
+
s,
|
|
688
|
+
0,
|
|
689
|
+
-c,
|
|
690
|
+
0,
|
|
691
|
+
0,
|
|
692
|
+
-c,
|
|
693
|
+
0,
|
|
694
|
+
n,
|
|
695
|
+
-c,
|
|
696
|
+
s,
|
|
697
|
+
n,
|
|
698
|
+
-c,
|
|
699
|
+
// Spine
|
|
700
|
+
0,
|
|
701
|
+
0,
|
|
702
|
+
-c,
|
|
703
|
+
0,
|
|
704
|
+
0,
|
|
705
|
+
0,
|
|
706
|
+
0,
|
|
707
|
+
n,
|
|
708
|
+
0,
|
|
709
|
+
0,
|
|
710
|
+
n,
|
|
711
|
+
-c,
|
|
712
|
+
// Inside front cover
|
|
713
|
+
s,
|
|
714
|
+
0,
|
|
715
|
+
-a,
|
|
716
|
+
a,
|
|
717
|
+
0,
|
|
718
|
+
-a,
|
|
719
|
+
a,
|
|
720
|
+
n,
|
|
721
|
+
-a,
|
|
722
|
+
s,
|
|
723
|
+
n,
|
|
724
|
+
-a,
|
|
725
|
+
// Inside back cover
|
|
726
|
+
a,
|
|
727
|
+
0,
|
|
728
|
+
-c + a,
|
|
729
|
+
s,
|
|
730
|
+
0,
|
|
731
|
+
-c + a,
|
|
732
|
+
s,
|
|
733
|
+
n,
|
|
734
|
+
-c + a,
|
|
735
|
+
a,
|
|
736
|
+
n,
|
|
737
|
+
-c + a,
|
|
738
|
+
// Inside spine
|
|
739
|
+
a,
|
|
740
|
+
0,
|
|
741
|
+
-a,
|
|
742
|
+
a,
|
|
743
|
+
0,
|
|
744
|
+
-c + a,
|
|
745
|
+
a,
|
|
746
|
+
n,
|
|
747
|
+
-c + a,
|
|
748
|
+
a,
|
|
749
|
+
n,
|
|
750
|
+
-a,
|
|
751
|
+
// Front cover top
|
|
752
|
+
0,
|
|
753
|
+
n,
|
|
754
|
+
0,
|
|
755
|
+
s,
|
|
756
|
+
n,
|
|
757
|
+
0,
|
|
758
|
+
s,
|
|
759
|
+
n,
|
|
760
|
+
-a,
|
|
761
|
+
a,
|
|
762
|
+
n,
|
|
763
|
+
-a,
|
|
764
|
+
// Back cover top
|
|
765
|
+
0,
|
|
766
|
+
n,
|
|
767
|
+
-c,
|
|
768
|
+
a,
|
|
769
|
+
n,
|
|
770
|
+
-c + a,
|
|
771
|
+
s,
|
|
772
|
+
n,
|
|
773
|
+
-c + a,
|
|
774
|
+
s,
|
|
775
|
+
n,
|
|
776
|
+
-c,
|
|
777
|
+
// Spine cover top
|
|
778
|
+
0,
|
|
779
|
+
n,
|
|
780
|
+
0,
|
|
781
|
+
a,
|
|
782
|
+
n,
|
|
783
|
+
-a,
|
|
784
|
+
a,
|
|
785
|
+
n,
|
|
786
|
+
-c + a,
|
|
787
|
+
0,
|
|
788
|
+
n,
|
|
789
|
+
-c,
|
|
790
|
+
// Front cover bottom
|
|
791
|
+
0,
|
|
792
|
+
0,
|
|
793
|
+
0,
|
|
794
|
+
a,
|
|
795
|
+
0,
|
|
796
|
+
-a,
|
|
797
|
+
s,
|
|
798
|
+
0,
|
|
799
|
+
-a,
|
|
800
|
+
s,
|
|
801
|
+
0,
|
|
802
|
+
0,
|
|
803
|
+
// Back cover bottom
|
|
804
|
+
0,
|
|
805
|
+
0,
|
|
806
|
+
-c,
|
|
807
|
+
s,
|
|
808
|
+
0,
|
|
809
|
+
-c,
|
|
810
|
+
s,
|
|
811
|
+
0,
|
|
812
|
+
-c + a,
|
|
813
|
+
a,
|
|
814
|
+
0,
|
|
815
|
+
-c + a,
|
|
816
|
+
// Spine cover bottom
|
|
817
|
+
0,
|
|
818
|
+
0,
|
|
819
|
+
0,
|
|
820
|
+
0,
|
|
821
|
+
0,
|
|
822
|
+
-c,
|
|
823
|
+
a,
|
|
824
|
+
0,
|
|
825
|
+
-c + a,
|
|
826
|
+
a,
|
|
827
|
+
0,
|
|
828
|
+
-a,
|
|
829
|
+
// Front cover edge
|
|
830
|
+
s,
|
|
831
|
+
0,
|
|
832
|
+
0,
|
|
833
|
+
s,
|
|
834
|
+
0,
|
|
835
|
+
-a,
|
|
836
|
+
s,
|
|
837
|
+
n,
|
|
838
|
+
-a,
|
|
839
|
+
s,
|
|
840
|
+
n,
|
|
841
|
+
0,
|
|
842
|
+
// Back cover edge
|
|
843
|
+
s,
|
|
844
|
+
0,
|
|
845
|
+
-c,
|
|
846
|
+
s,
|
|
847
|
+
n,
|
|
848
|
+
-c,
|
|
849
|
+
s,
|
|
850
|
+
n,
|
|
851
|
+
-c + a,
|
|
852
|
+
s,
|
|
853
|
+
0,
|
|
854
|
+
-c + a
|
|
855
|
+
], f = [
|
|
856
|
+
0,
|
|
857
|
+
0,
|
|
858
|
+
1,
|
|
859
|
+
0,
|
|
860
|
+
0,
|
|
861
|
+
1,
|
|
862
|
+
0,
|
|
863
|
+
0,
|
|
864
|
+
1,
|
|
865
|
+
0,
|
|
866
|
+
0,
|
|
867
|
+
1,
|
|
868
|
+
// Front cover
|
|
869
|
+
0,
|
|
870
|
+
0,
|
|
871
|
+
-1,
|
|
872
|
+
0,
|
|
873
|
+
0,
|
|
874
|
+
-1,
|
|
875
|
+
0,
|
|
876
|
+
0,
|
|
877
|
+
-1,
|
|
878
|
+
0,
|
|
879
|
+
0,
|
|
880
|
+
-1,
|
|
881
|
+
// Back cover
|
|
882
|
+
-1,
|
|
883
|
+
0,
|
|
884
|
+
0,
|
|
885
|
+
-1,
|
|
886
|
+
0,
|
|
887
|
+
0,
|
|
888
|
+
-1,
|
|
889
|
+
0,
|
|
890
|
+
0,
|
|
891
|
+
-1,
|
|
892
|
+
0,
|
|
893
|
+
0,
|
|
894
|
+
// Spine
|
|
895
|
+
0,
|
|
896
|
+
0,
|
|
897
|
+
-1,
|
|
898
|
+
0,
|
|
899
|
+
0,
|
|
900
|
+
-1,
|
|
901
|
+
0,
|
|
902
|
+
0,
|
|
903
|
+
-1,
|
|
904
|
+
0,
|
|
905
|
+
0,
|
|
906
|
+
-1,
|
|
907
|
+
// Inside front cover
|
|
908
|
+
0,
|
|
909
|
+
0,
|
|
910
|
+
1,
|
|
911
|
+
0,
|
|
912
|
+
0,
|
|
913
|
+
1,
|
|
914
|
+
0,
|
|
915
|
+
0,
|
|
916
|
+
1,
|
|
917
|
+
0,
|
|
918
|
+
0,
|
|
919
|
+
1,
|
|
920
|
+
// Inside back cover
|
|
921
|
+
1,
|
|
922
|
+
0,
|
|
923
|
+
0,
|
|
924
|
+
1,
|
|
925
|
+
0,
|
|
926
|
+
0,
|
|
927
|
+
1,
|
|
928
|
+
0,
|
|
929
|
+
0,
|
|
930
|
+
1,
|
|
931
|
+
0,
|
|
932
|
+
0,
|
|
933
|
+
// Inside spine
|
|
934
|
+
0,
|
|
935
|
+
1,
|
|
936
|
+
0,
|
|
937
|
+
0,
|
|
938
|
+
1,
|
|
939
|
+
0,
|
|
940
|
+
0,
|
|
941
|
+
1,
|
|
942
|
+
0,
|
|
943
|
+
0,
|
|
944
|
+
1,
|
|
945
|
+
0,
|
|
946
|
+
// Front cover top
|
|
947
|
+
0,
|
|
948
|
+
1,
|
|
949
|
+
0,
|
|
950
|
+
0,
|
|
951
|
+
1,
|
|
952
|
+
0,
|
|
953
|
+
0,
|
|
954
|
+
1,
|
|
955
|
+
0,
|
|
956
|
+
0,
|
|
957
|
+
1,
|
|
958
|
+
0,
|
|
959
|
+
// Back cover top
|
|
960
|
+
0,
|
|
961
|
+
1,
|
|
962
|
+
0,
|
|
963
|
+
0,
|
|
964
|
+
1,
|
|
965
|
+
0,
|
|
966
|
+
0,
|
|
967
|
+
1,
|
|
968
|
+
0,
|
|
969
|
+
0,
|
|
970
|
+
1,
|
|
971
|
+
0,
|
|
972
|
+
// Spine cover top
|
|
973
|
+
0,
|
|
974
|
+
-1,
|
|
975
|
+
0,
|
|
976
|
+
0,
|
|
977
|
+
-1,
|
|
978
|
+
0,
|
|
979
|
+
0,
|
|
980
|
+
-1,
|
|
981
|
+
0,
|
|
982
|
+
0,
|
|
983
|
+
-1,
|
|
984
|
+
0,
|
|
985
|
+
// Front cover bottom
|
|
986
|
+
0,
|
|
987
|
+
-1,
|
|
988
|
+
0,
|
|
989
|
+
0,
|
|
990
|
+
-1,
|
|
991
|
+
0,
|
|
992
|
+
0,
|
|
993
|
+
-1,
|
|
994
|
+
0,
|
|
995
|
+
0,
|
|
996
|
+
-1,
|
|
997
|
+
0,
|
|
998
|
+
// Back cover bottom
|
|
999
|
+
0,
|
|
1000
|
+
-1,
|
|
1001
|
+
0,
|
|
1002
|
+
0,
|
|
1003
|
+
-1,
|
|
1004
|
+
0,
|
|
1005
|
+
0,
|
|
1006
|
+
-1,
|
|
1007
|
+
0,
|
|
1008
|
+
0,
|
|
1009
|
+
-1,
|
|
1010
|
+
0,
|
|
1011
|
+
// Spine cover bottom
|
|
1012
|
+
1,
|
|
1013
|
+
0,
|
|
1014
|
+
0,
|
|
1015
|
+
1,
|
|
1016
|
+
0,
|
|
1017
|
+
0,
|
|
1018
|
+
1,
|
|
1019
|
+
0,
|
|
1020
|
+
0,
|
|
1021
|
+
1,
|
|
1022
|
+
0,
|
|
1023
|
+
0,
|
|
1024
|
+
// Front cover edge
|
|
1025
|
+
1,
|
|
1026
|
+
0,
|
|
1027
|
+
0,
|
|
1028
|
+
1,
|
|
1029
|
+
0,
|
|
1030
|
+
0,
|
|
1031
|
+
1,
|
|
1032
|
+
0,
|
|
1033
|
+
0,
|
|
1034
|
+
1,
|
|
1035
|
+
0,
|
|
1036
|
+
0
|
|
1037
|
+
// Back cover edge
|
|
1038
|
+
], p = e / (e * 2 + o), d = (e + o) / (e * 2 + o), x = [
|
|
1039
|
+
d,
|
|
1040
|
+
0,
|
|
1041
|
+
1,
|
|
1042
|
+
0,
|
|
1043
|
+
1,
|
|
1044
|
+
1,
|
|
1045
|
+
d,
|
|
1046
|
+
1,
|
|
1047
|
+
// Front cover
|
|
1048
|
+
0,
|
|
1049
|
+
0,
|
|
1050
|
+
p,
|
|
1051
|
+
0,
|
|
1052
|
+
p,
|
|
1053
|
+
1,
|
|
1054
|
+
0,
|
|
1055
|
+
1,
|
|
1056
|
+
// Back cover
|
|
1057
|
+
p,
|
|
1058
|
+
0,
|
|
1059
|
+
d,
|
|
1060
|
+
0,
|
|
1061
|
+
d,
|
|
1062
|
+
1,
|
|
1063
|
+
p,
|
|
1064
|
+
1,
|
|
1065
|
+
// Spine
|
|
1066
|
+
1,
|
|
1067
|
+
0,
|
|
1068
|
+
d,
|
|
1069
|
+
0,
|
|
1070
|
+
d,
|
|
1071
|
+
1,
|
|
1072
|
+
1,
|
|
1073
|
+
1,
|
|
1074
|
+
// Inside front cover
|
|
1075
|
+
p,
|
|
1076
|
+
0,
|
|
1077
|
+
0,
|
|
1078
|
+
0,
|
|
1079
|
+
0,
|
|
1080
|
+
1,
|
|
1081
|
+
p,
|
|
1082
|
+
1,
|
|
1083
|
+
// Inside back cover
|
|
1084
|
+
d,
|
|
1085
|
+
0,
|
|
1086
|
+
p,
|
|
1087
|
+
0,
|
|
1088
|
+
p,
|
|
1089
|
+
1,
|
|
1090
|
+
d,
|
|
1091
|
+
1,
|
|
1092
|
+
// Inside spine
|
|
1093
|
+
d,
|
|
1094
|
+
0,
|
|
1095
|
+
1,
|
|
1096
|
+
0,
|
|
1097
|
+
1,
|
|
1098
|
+
1,
|
|
1099
|
+
d,
|
|
1100
|
+
1,
|
|
1101
|
+
// Front cover top
|
|
1102
|
+
0,
|
|
1103
|
+
0,
|
|
1104
|
+
1,
|
|
1105
|
+
0,
|
|
1106
|
+
1,
|
|
1107
|
+
1,
|
|
1108
|
+
0,
|
|
1109
|
+
1,
|
|
1110
|
+
// Back cover top
|
|
1111
|
+
0,
|
|
1112
|
+
0,
|
|
1113
|
+
1,
|
|
1114
|
+
0,
|
|
1115
|
+
1,
|
|
1116
|
+
1,
|
|
1117
|
+
0,
|
|
1118
|
+
1,
|
|
1119
|
+
// Spine cover top
|
|
1120
|
+
0,
|
|
1121
|
+
0,
|
|
1122
|
+
1,
|
|
1123
|
+
0,
|
|
1124
|
+
1,
|
|
1125
|
+
1,
|
|
1126
|
+
0,
|
|
1127
|
+
1,
|
|
1128
|
+
// Front cover bottom
|
|
1129
|
+
0,
|
|
1130
|
+
0,
|
|
1131
|
+
1,
|
|
1132
|
+
0,
|
|
1133
|
+
1,
|
|
1134
|
+
1,
|
|
1135
|
+
0,
|
|
1136
|
+
1,
|
|
1137
|
+
// Back cover bottom
|
|
1138
|
+
0,
|
|
1139
|
+
0,
|
|
1140
|
+
1,
|
|
1141
|
+
0,
|
|
1142
|
+
1,
|
|
1143
|
+
1,
|
|
1144
|
+
0,
|
|
1145
|
+
1,
|
|
1146
|
+
// Spine cover bottom
|
|
1147
|
+
0,
|
|
1148
|
+
0,
|
|
1149
|
+
1,
|
|
1150
|
+
0,
|
|
1151
|
+
1,
|
|
1152
|
+
1,
|
|
1153
|
+
0,
|
|
1154
|
+
1,
|
|
1155
|
+
// Front cover edge
|
|
1156
|
+
0,
|
|
1157
|
+
0,
|
|
1158
|
+
1,
|
|
1159
|
+
0,
|
|
1160
|
+
1,
|
|
1161
|
+
1,
|
|
1162
|
+
0,
|
|
1163
|
+
1
|
|
1164
|
+
// Back cover edge
|
|
1165
|
+
], y = [
|
|
1166
|
+
0,
|
|
1167
|
+
1,
|
|
1168
|
+
2,
|
|
1169
|
+
0,
|
|
1170
|
+
2,
|
|
1171
|
+
3,
|
|
1172
|
+
// Front cover face
|
|
1173
|
+
4,
|
|
1174
|
+
5,
|
|
1175
|
+
6,
|
|
1176
|
+
4,
|
|
1177
|
+
6,
|
|
1178
|
+
7,
|
|
1179
|
+
// Back cover face
|
|
1180
|
+
8,
|
|
1181
|
+
9,
|
|
1182
|
+
10,
|
|
1183
|
+
8,
|
|
1184
|
+
10,
|
|
1185
|
+
11,
|
|
1186
|
+
// Spine face
|
|
1187
|
+
12,
|
|
1188
|
+
13,
|
|
1189
|
+
14,
|
|
1190
|
+
12,
|
|
1191
|
+
14,
|
|
1192
|
+
15,
|
|
1193
|
+
// Inside front cover
|
|
1194
|
+
16,
|
|
1195
|
+
17,
|
|
1196
|
+
18,
|
|
1197
|
+
16,
|
|
1198
|
+
18,
|
|
1199
|
+
19,
|
|
1200
|
+
// Inside back cover
|
|
1201
|
+
20,
|
|
1202
|
+
21,
|
|
1203
|
+
22,
|
|
1204
|
+
20,
|
|
1205
|
+
22,
|
|
1206
|
+
23,
|
|
1207
|
+
// Inside spine
|
|
1208
|
+
24,
|
|
1209
|
+
25,
|
|
1210
|
+
26,
|
|
1211
|
+
24,
|
|
1212
|
+
26,
|
|
1213
|
+
27,
|
|
1214
|
+
// Front cover top
|
|
1215
|
+
28,
|
|
1216
|
+
29,
|
|
1217
|
+
30,
|
|
1218
|
+
28,
|
|
1219
|
+
30,
|
|
1220
|
+
31,
|
|
1221
|
+
// Back cover top
|
|
1222
|
+
32,
|
|
1223
|
+
33,
|
|
1224
|
+
34,
|
|
1225
|
+
32,
|
|
1226
|
+
34,
|
|
1227
|
+
35,
|
|
1228
|
+
// Spine cover top
|
|
1229
|
+
36,
|
|
1230
|
+
37,
|
|
1231
|
+
38,
|
|
1232
|
+
36,
|
|
1233
|
+
38,
|
|
1234
|
+
39,
|
|
1235
|
+
// Front cover bottom
|
|
1236
|
+
40,
|
|
1237
|
+
41,
|
|
1238
|
+
42,
|
|
1239
|
+
40,
|
|
1240
|
+
42,
|
|
1241
|
+
43,
|
|
1242
|
+
// Back cover bottom
|
|
1243
|
+
44,
|
|
1244
|
+
45,
|
|
1245
|
+
46,
|
|
1246
|
+
44,
|
|
1247
|
+
46,
|
|
1248
|
+
47,
|
|
1249
|
+
// Spine cover bottom
|
|
1250
|
+
48,
|
|
1251
|
+
49,
|
|
1252
|
+
50,
|
|
1253
|
+
48,
|
|
1254
|
+
50,
|
|
1255
|
+
51,
|
|
1256
|
+
// Front cover edge
|
|
1257
|
+
52,
|
|
1258
|
+
53,
|
|
1259
|
+
54,
|
|
1260
|
+
52,
|
|
1261
|
+
54,
|
|
1262
|
+
55
|
|
1263
|
+
// Back cover edge
|
|
1264
|
+
], P = new Float32Array(u), G = new Float32Array(f), F = new Float32Array(x), V = new Uint16Array(y), B = new b();
|
|
1265
|
+
B.setAttribute("position", new Y(P, 3)), B.setAttribute("normal", new Y(G, 3)), B.setAttribute("uv", new Y(F, 2)), B.setIndex(new Y(V, 1));
|
|
1266
|
+
const E = new g(e - a - m, n - m * 2, c - a * 2);
|
|
1267
|
+
E.translate((e - a - m) / 2 + a, n / 2, -c / 2), this.copy(A([B, E], !0));
|
|
557
1268
|
}
|
|
558
1269
|
}
|
|
559
|
-
class
|
|
560
|
-
constructor(e = 1.
|
|
1270
|
+
class Ge extends b {
|
|
1271
|
+
constructor(e = 0.4, t = 1.2, o = 0.2) {
|
|
561
1272
|
super();
|
|
562
|
-
const
|
|
563
|
-
|
|
564
|
-
const
|
|
565
|
-
|
|
566
|
-
const i = new x(o * 0.8, s, o * 0.8);
|
|
567
|
-
i.translate(0, a + s / 2, 0), a += s;
|
|
568
|
-
const l = new x(o * 0.6, r, o * 0.6);
|
|
569
|
-
l.translate(0, a + r / 2, 0), a += r;
|
|
570
|
-
const u = new x(o * 0.4, n, o * 0.4);
|
|
571
|
-
u.translate(0, a + n / 2, 0), a += n;
|
|
572
|
-
const f = new L(o * 0.4 / Math.sqrt(2), 0.1, 4, 1, !1, Math.PI / 4);
|
|
573
|
-
f.translate(0, a + 0.1 / 2, 0), this.copy(
|
|
574
|
-
I([c, i, l, u, f], !1)
|
|
575
|
-
);
|
|
1273
|
+
const r = t * 0.6, i = new g(e / 2, r, o);
|
|
1274
|
+
i.translate(0, r / 2, 0);
|
|
1275
|
+
const s = e * 1.5, n = new g(s, e / 4, o);
|
|
1276
|
+
n.translate(0, r * 0.75, 0), this.copy(A([i, n], !1)), this.computeVertexNormals();
|
|
576
1277
|
}
|
|
577
1278
|
}
|
|
578
|
-
class
|
|
579
|
-
constructor(e =
|
|
1279
|
+
class Ie extends b {
|
|
1280
|
+
constructor(e = 1.75, t = 0.75) {
|
|
580
1281
|
super();
|
|
581
|
-
const
|
|
582
|
-
|
|
583
|
-
const
|
|
584
|
-
|
|
1282
|
+
const o = e * 0.05, r = e * 0.15, i = e * 0.15, s = e * 0.75;
|
|
1283
|
+
let n = 0;
|
|
1284
|
+
const c = new g(t, o, t);
|
|
1285
|
+
c.translate(0, n + o / 2, 0), n += o;
|
|
1286
|
+
const a = new g(t * 0.8, r, t * 0.8);
|
|
1287
|
+
a.translate(0, n + r / 2, 0), n += r;
|
|
1288
|
+
const m = new g(t * 0.6, i, t * 0.6);
|
|
1289
|
+
m.translate(0, n + i / 2, 0), n += i;
|
|
1290
|
+
const u = new g(t * 0.4, s, t * 0.4);
|
|
1291
|
+
u.translate(0, n + s / 2, 0), n += s;
|
|
1292
|
+
const f = new z(t * 0.4 / Math.sqrt(2), 0.1, 4, 1, !1, Math.PI / 4);
|
|
1293
|
+
f.translate(0, n + 0.1 / 2, 0), this.copy(A([c, a, m, u, f], !1)), this.computeVertexNormals();
|
|
585
1294
|
}
|
|
586
1295
|
}
|
|
587
|
-
class
|
|
588
|
-
constructor(e = 0.
|
|
1296
|
+
class Pe extends b {
|
|
1297
|
+
constructor(e = 0.6, t = 1, o = 0.2, r = 0.6) {
|
|
589
1298
|
super();
|
|
590
|
-
const s = new
|
|
591
|
-
s.translate(0,
|
|
1299
|
+
const i = t - r / 2, s = new g(e, i, o);
|
|
1300
|
+
s.translate(0, i / 2, 0);
|
|
1301
|
+
const n = new v(r / 2, r / 2, o, 16, 1, !1, 0, Math.PI);
|
|
1302
|
+
n.rotateY(Math.PI / 2), n.rotateX(Math.PI / 2), n.translate(0, i, 0), this.copy(A([s, n], !1)), this.computeVertexNormals();
|
|
592
1303
|
}
|
|
593
1304
|
}
|
|
594
1305
|
class Ae extends b {
|
|
1306
|
+
constructor(e = 0.5, t = 0.8, o = 0.15) {
|
|
1307
|
+
super();
|
|
1308
|
+
const r = new g(e, t, o);
|
|
1309
|
+
r.translate(0, t / 2, 0), this.copy(r);
|
|
1310
|
+
}
|
|
1311
|
+
}
|
|
1312
|
+
class nt extends b {
|
|
595
1313
|
constructor(e = 2.25) {
|
|
596
1314
|
super();
|
|
597
|
-
const
|
|
598
|
-
|
|
599
|
-
const
|
|
600
|
-
|
|
601
|
-
const
|
|
602
|
-
|
|
1315
|
+
const t = new g(1.2, 0.5, 1.2);
|
|
1316
|
+
t.translate(0, 0.25, 0);
|
|
1317
|
+
const o = new g(1, e, 1);
|
|
1318
|
+
o.translate(0, 0.5 + e / 2, 0);
|
|
1319
|
+
const r = new g(1.4, 0.3, 1.4);
|
|
1320
|
+
r.translate(0, 0.5 + e + 0.15, 0), this.copy(A([t, o, r], !1));
|
|
603
1321
|
}
|
|
604
1322
|
}
|
|
605
|
-
class
|
|
606
|
-
constructor(e = 2,
|
|
1323
|
+
class at extends b {
|
|
1324
|
+
constructor(e = 2, t = 0.05, o = 0.3) {
|
|
607
1325
|
super();
|
|
608
|
-
const
|
|
609
|
-
|
|
610
|
-
const
|
|
611
|
-
|
|
1326
|
+
const r = new v(t, t, e, 8);
|
|
1327
|
+
r.translate(0, e / 2, 0);
|
|
1328
|
+
const i = new z(t * 1.5, o, 8);
|
|
1329
|
+
i.translate(0, e + o / 2, 0), this.copy(A([r, i], !1));
|
|
612
1330
|
}
|
|
613
1331
|
}
|
|
614
|
-
class
|
|
1332
|
+
class rt extends b {
|
|
615
1333
|
constructor(e = 0.1) {
|
|
616
1334
|
super();
|
|
617
|
-
const
|
|
1335
|
+
const t = [], o = [], r = [
|
|
618
1336
|
[0, 1],
|
|
619
1337
|
// Top point
|
|
620
1338
|
[0.5, 0.75],
|
|
@@ -632,73 +1350,115 @@ class Ve extends b {
|
|
|
632
1350
|
[-0.5, 0.75]
|
|
633
1351
|
// Left upper middle
|
|
634
1352
|
];
|
|
635
|
-
for (let
|
|
636
|
-
const [
|
|
637
|
-
|
|
1353
|
+
for (let s = 0; s < r.length; s++) {
|
|
1354
|
+
const [n, c] = r[s];
|
|
1355
|
+
t.push(n * e, c * e, 0);
|
|
638
1356
|
}
|
|
639
|
-
for (let
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
const
|
|
643
|
-
this.setAttribute("position",
|
|
1357
|
+
for (let s = 1; s < r.length - 1; s++)
|
|
1358
|
+
o.push(0, s, s + 1);
|
|
1359
|
+
o.push(0, r.length - 1, 1);
|
|
1360
|
+
const i = new U(t, 3);
|
|
1361
|
+
this.setAttribute("position", i), this.setIndex(o), this.computeVertexNormals();
|
|
644
1362
|
}
|
|
645
1363
|
}
|
|
646
|
-
|
|
647
|
-
|
|
1364
|
+
function ke(l, e = C.XYZ, t = 0.5, o = 2) {
|
|
1365
|
+
l.deleteAttribute("uv"), l.deleteAttribute("normal"), l = Me(l), l.computeVertexNormals();
|
|
1366
|
+
const r = l.getAttribute("position");
|
|
1367
|
+
for (let i = 0; i < r.count; i++) {
|
|
1368
|
+
const s = new M().fromBufferAttribute(r, i), n = Math.random() * (o - t) + t, c = e.clone().multiplyScalar(n);
|
|
1369
|
+
s.add(c), r.setXYZ(i, s.x, s.y, s.z);
|
|
1370
|
+
}
|
|
1371
|
+
return r.needsUpdate = !0, l.computeVertexNormals(), l;
|
|
1372
|
+
}
|
|
1373
|
+
class Te extends b {
|
|
1374
|
+
constructor(e = 1, t = 4, o = 4) {
|
|
1375
|
+
super();
|
|
1376
|
+
const r = new T(e, t, o);
|
|
1377
|
+
this.copy(ke(r, C.XYZ, 0.5, 1)), this.computeVertexNormals(), this.center();
|
|
1378
|
+
}
|
|
1379
|
+
}
|
|
1380
|
+
class ct extends b {
|
|
1381
|
+
constructor(e = 0.1, t = 0.1, o = 0.4, r = 8) {
|
|
648
1382
|
super();
|
|
649
|
-
const
|
|
650
|
-
|
|
651
|
-
const
|
|
652
|
-
|
|
1383
|
+
const i = new v(e * 0.6, t * 0.6, o, r);
|
|
1384
|
+
i.translate(0, 0, 0);
|
|
1385
|
+
const s = new T(e, r, r), n = s.clone(), c = s.clone(), a = s.clone(), m = s.clone();
|
|
1386
|
+
n.translate(0, o / 2 + e * 0.6, -e * 0.6), c.translate(0, o / 2 + e * 0.6, e * 0.6), a.translate(0, -o / 2 - t * 0.6, -t * 0.6), m.translate(0, -o / 2 - t * 0.6, t * 0.6), this.copy(A([i, n, c, a, m], !1));
|
|
653
1387
|
}
|
|
654
1388
|
}
|
|
655
|
-
class
|
|
1389
|
+
class Be extends b {
|
|
656
1390
|
constructor() {
|
|
657
1391
|
super();
|
|
658
|
-
const e = new T(1, 16, 16),
|
|
659
|
-
|
|
1392
|
+
const e = new T(1, 16, 16), t = new v(0.2, 0.2, 2, 16, 1, !0);
|
|
1393
|
+
t.translate(0, 1.5, 0), t.rotateX(Math.PI / 2), this.copy(A([e, t], !1));
|
|
660
1394
|
}
|
|
661
1395
|
}
|
|
662
|
-
class
|
|
1396
|
+
class Ee extends b {
|
|
663
1397
|
constructor() {
|
|
664
1398
|
super();
|
|
665
1399
|
const e = [
|
|
666
|
-
new
|
|
1400
|
+
new I(1, 0),
|
|
667
1401
|
// Bottom of the bowl
|
|
668
|
-
new
|
|
1402
|
+
new I(1.2, 0.5),
|
|
669
1403
|
// Slight flare at the base
|
|
670
|
-
new
|
|
1404
|
+
new I(1.4, 1.5),
|
|
671
1405
|
// Outer wall
|
|
672
|
-
new
|
|
1406
|
+
new I(1.3, 1.8),
|
|
673
1407
|
// Flared edge
|
|
674
|
-
new
|
|
1408
|
+
new I(0.8, 1.8)
|
|
675
1409
|
// Lip of the bowl
|
|
676
|
-
],
|
|
677
|
-
|
|
1410
|
+
], t = new Z(e, 12), o = new ie(1, 12);
|
|
1411
|
+
o.rotateX(-Math.PI / 2), o.translate(0, 0, 0), this.copy(A([t, o], !1));
|
|
678
1412
|
}
|
|
679
1413
|
}
|
|
680
|
-
class
|
|
681
|
-
constructor(e = 0.2,
|
|
1414
|
+
class R extends b {
|
|
1415
|
+
constructor(e = 0.2, t = 0.2, o = 3, r = 32, i = !0) {
|
|
682
1416
|
super();
|
|
683
|
-
const
|
|
684
|
-
|
|
1417
|
+
const s = new v(e, t, o, r, 1, i), n = new T(t, r, r / 2, 0, Math.PI * 2, Math.PI / 2, Math.PI / 2);
|
|
1418
|
+
n.translate(0, -(o / 2), 0), this.copy(A([s, n], !1));
|
|
685
1419
|
}
|
|
686
1420
|
}
|
|
687
|
-
class
|
|
688
|
-
constructor({ radius: e = 0.5, neckRadius:
|
|
1421
|
+
class Ne extends b {
|
|
1422
|
+
constructor({ radius: e = 0.5, neckRadius: t = 0.2, height: o = 3, neckHeight: r = 1, segments: i = 16 } = {}) {
|
|
689
1423
|
super();
|
|
690
|
-
const
|
|
691
|
-
|
|
692
|
-
const c = 0.3,
|
|
693
|
-
|
|
694
|
-
const
|
|
695
|
-
|
|
1424
|
+
const s = o - r, n = new v(e, e, s, i);
|
|
1425
|
+
n.translate(0, s / 2, 0);
|
|
1426
|
+
const c = 0.3, a = new v(t, e, c, i);
|
|
1427
|
+
a.translate(0, s + c / 2, 0);
|
|
1428
|
+
const m = new v(t, t, r, i);
|
|
1429
|
+
m.translate(0, s + c + r / 2, 0), this.copy(A([n, a, m], !1));
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
class Ce extends b {
|
|
1433
|
+
constructor({
|
|
1434
|
+
trunkRadiusTop: e = 0.25,
|
|
1435
|
+
trunkRadiusBottom: t = 0.4,
|
|
1436
|
+
trunkHeight: o = 2.5,
|
|
1437
|
+
trunkSegments: r = 14,
|
|
1438
|
+
leafSize: i = 0.8,
|
|
1439
|
+
leafCount: s = 6,
|
|
1440
|
+
leafDetail: n = 0,
|
|
1441
|
+
leafSpreadRadius: c = 1.5
|
|
1442
|
+
} = {}) {
|
|
1443
|
+
super();
|
|
1444
|
+
const a = new v(e, t, o, r);
|
|
1445
|
+
a.translate(0, o / 2, 0);
|
|
1446
|
+
const m = [];
|
|
1447
|
+
for (let u = 0; u < s; u++) {
|
|
1448
|
+
const f = new Q(i, n);
|
|
1449
|
+
f.translate(
|
|
1450
|
+
(Math.random() - 0.5) * c,
|
|
1451
|
+
(Math.random() - 0.5) * i + o,
|
|
1452
|
+
(Math.random() - 0.5) * c
|
|
1453
|
+
), m.push(f);
|
|
1454
|
+
}
|
|
1455
|
+
this.copy(A([a.toNonIndexed(), A(m, !1)], !0)), this.computeVertexNormals();
|
|
696
1456
|
}
|
|
697
1457
|
}
|
|
698
|
-
class
|
|
1458
|
+
class it extends S {
|
|
699
1459
|
constructor() {
|
|
700
1460
|
super();
|
|
701
|
-
const e = new T(5, 32, 32),
|
|
1461
|
+
const e = new T(5, 32, 32), t = new j({
|
|
702
1462
|
uniforms: {
|
|
703
1463
|
time: { value: 0 }
|
|
704
1464
|
},
|
|
@@ -741,46 +1501,82 @@ class Ue extends g {
|
|
|
741
1501
|
gl_FragColor = vec4(color, 1.0);
|
|
742
1502
|
}
|
|
743
1503
|
`
|
|
744
|
-
}),
|
|
745
|
-
this.add(
|
|
1504
|
+
}), o = new h(e, t);
|
|
1505
|
+
this.add(o);
|
|
746
1506
|
}
|
|
747
1507
|
}
|
|
748
|
-
class
|
|
1508
|
+
class lt extends h {
|
|
1509
|
+
constructor({
|
|
1510
|
+
width: e = 1,
|
|
1511
|
+
height: t = 1.5,
|
|
1512
|
+
depth: o = 0.5,
|
|
1513
|
+
coverThickness: r = 0.05,
|
|
1514
|
+
pageIndent: i = 0.05,
|
|
1515
|
+
coverColor: s = 9109504,
|
|
1516
|
+
pageColor: n = 16777215
|
|
1517
|
+
} = {}) {
|
|
1518
|
+
super(), this.geometry = new be(e, t, o, r, i), this.material = [
|
|
1519
|
+
new w({ color: s, metalness: 0.1, roughness: 0.7, flatShading: !0 }),
|
|
1520
|
+
new w({ color: n, flatShading: !0 })
|
|
1521
|
+
];
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
class mt extends h {
|
|
1525
|
+
constructor(e = 0.4, t = 1.2, o = 0.2) {
|
|
1526
|
+
super(), this.geometry = new Ge(e, t, o), this.material = new w({ color: 7829367, roughness: 0.8 });
|
|
1527
|
+
}
|
|
1528
|
+
}
|
|
1529
|
+
class ut extends S {
|
|
749
1530
|
constructor() {
|
|
750
1531
|
super();
|
|
751
|
-
const e = new
|
|
752
|
-
|
|
753
|
-
const
|
|
754
|
-
|
|
755
|
-
const
|
|
756
|
-
|
|
757
|
-
const
|
|
1532
|
+
const e = new g(5, 1, 5), t = new w({ color: 8421504, flatShading: !0 }), o = new h(e, t);
|
|
1533
|
+
o.position.set(0, 0.5, 0), this.add(o);
|
|
1534
|
+
const r = new g(4, 3, 4), i = new w({ color: 6908265, flatShading: !0 }), s = new h(r, i);
|
|
1535
|
+
s.position.set(0, 2.5, 0), this.add(s);
|
|
1536
|
+
const n = new z(3.5, 2, 4), c = new w({ color: 5263440, flatShading: !0 }), a = new h(n, c);
|
|
1537
|
+
a.rotation.y = Math.PI / 4, a.position.set(0, 5, 0), this.add(a);
|
|
1538
|
+
const m = new v(0.2, 0.2, 3.5, 16), u = new w({ color: 6908265, flatShading: !0 });
|
|
758
1539
|
[
|
|
759
1540
|
[-1.8, 2.3, -2.2],
|
|
760
1541
|
[1.8, 2.3, -2.2],
|
|
761
1542
|
[-1.8, 2.3, 2.2],
|
|
762
1543
|
[1.8, 2.3, 2.2]
|
|
763
|
-
].forEach((
|
|
764
|
-
const
|
|
765
|
-
|
|
1544
|
+
].forEach((G) => {
|
|
1545
|
+
const F = new h(m, u);
|
|
1546
|
+
F.position.set(...G), this.add(F);
|
|
766
1547
|
});
|
|
767
|
-
const p = new
|
|
1548
|
+
const p = new _();
|
|
768
1549
|
p.moveTo(-1, 0), p.lineTo(-1, 2), p.absarc(0, 2, 1, Math.PI, 0, !0), p.lineTo(1, 0);
|
|
769
|
-
const
|
|
1550
|
+
const d = {
|
|
770
1551
|
depth: 0.5,
|
|
771
1552
|
bevelEnabled: !1
|
|
772
|
-
},
|
|
1553
|
+
}, x = new L(p, d), y = new w({ color: 4210752, flatShading: !0 }), P = new h(x, y);
|
|
773
1554
|
P.position.set(0, 0.5, 1.7), this.add(P);
|
|
774
1555
|
}
|
|
775
1556
|
}
|
|
776
|
-
class
|
|
1557
|
+
class ft extends h {
|
|
1558
|
+
constructor(e = 1.75, t = 0.75) {
|
|
1559
|
+
super(), this.geometry = new Ie(e, t), this.material = new w({ color: 7829367, roughness: 0.8 });
|
|
1560
|
+
}
|
|
1561
|
+
}
|
|
1562
|
+
class ht extends h {
|
|
1563
|
+
constructor(e = 0.6, t = 1, o = 0.2, r = 0.6) {
|
|
1564
|
+
super(), this.geometry = new Pe(e, t, o, r), this.material = new w({ color: 7829367, roughness: 0.8 });
|
|
1565
|
+
}
|
|
1566
|
+
}
|
|
1567
|
+
class dt extends h {
|
|
1568
|
+
constructor(e = 0.5, t = 0.8, o = 0.15) {
|
|
1569
|
+
super(), this.geometry = new Ae(e, t, o), this.material = new w({ color: 7829367, roughness: 0.8 });
|
|
1570
|
+
}
|
|
1571
|
+
}
|
|
1572
|
+
class pt extends S {
|
|
777
1573
|
constructor() {
|
|
778
1574
|
super();
|
|
779
|
-
const e = new
|
|
780
|
-
|
|
781
|
-
const
|
|
782
|
-
|
|
783
|
-
const
|
|
1575
|
+
const e = new g(5, 0.3, 3), t = new w({ color: 9132587 }), o = new h(e, t);
|
|
1576
|
+
o.position.set(0, 3.15, 0);
|
|
1577
|
+
const r = [];
|
|
1578
|
+
r.push(new I(0.2, 0)), r.push(new I(0.25, 0.5)), r.push(new I(0.15, 1.5)), r.push(new I(0.3, 3));
|
|
1579
|
+
const i = new Z(r, 32), s = new w({ color: 4929057 });
|
|
784
1580
|
[
|
|
785
1581
|
[2.2, 0, 1.2],
|
|
786
1582
|
// Adjust Y to 0 so legs start at ground level
|
|
@@ -788,20 +1584,20 @@ class _e extends g {
|
|
|
788
1584
|
[2.2, 0, -1.2],
|
|
789
1585
|
[-2.2, 0, -1.2]
|
|
790
1586
|
].forEach((c) => {
|
|
791
|
-
const
|
|
792
|
-
|
|
793
|
-
}), this.add(
|
|
1587
|
+
const a = new h(i, s);
|
|
1588
|
+
a.position.set(...c), this.add(a);
|
|
1589
|
+
}), this.add(o);
|
|
794
1590
|
}
|
|
795
1591
|
}
|
|
796
|
-
class
|
|
797
|
-
constructor(e = 1,
|
|
798
|
-
super(), this.height = e, this.radius =
|
|
1592
|
+
class wt extends S {
|
|
1593
|
+
constructor(e = 1, t = 0.2) {
|
|
1594
|
+
super(), this.height = e, this.radius = t, this.createCandle(), this.animateFlicker();
|
|
799
1595
|
}
|
|
800
1596
|
createCandle() {
|
|
801
|
-
const e = new v(this.radius, this.radius, this.height, 32),
|
|
802
|
-
this.candle = new
|
|
803
|
-
const
|
|
804
|
-
this.flame = new
|
|
1597
|
+
const e = new v(this.radius, this.radius, this.height, 32), t = new w({ color: 16777215 });
|
|
1598
|
+
this.candle = new h(e, t), this.candle.position.set(0, this.height / 2, 0), this.add(this.candle);
|
|
1599
|
+
const o = new T(0.05, 16, 16), r = new le({ color: 16753920 });
|
|
1600
|
+
this.flame = new h(o, r), this.flame.position.set(0, this.height + 0.05, 0), this.add(this.flame), this.candleLight = new oe(16753920, 1, 5), this.candleLight.position.set(0, this.height + 0.05, 0), this.candleLight.castShadow = !0, this.add(this.candleLight);
|
|
805
1601
|
}
|
|
806
1602
|
animateFlicker() {
|
|
807
1603
|
const e = () => {
|
|
@@ -810,47 +1606,52 @@ class je extends g {
|
|
|
810
1606
|
e();
|
|
811
1607
|
}
|
|
812
1608
|
}
|
|
813
|
-
class
|
|
814
|
-
constructor(e = 1.3,
|
|
1609
|
+
class yt extends S {
|
|
1610
|
+
constructor(e = 1.3, t = 0.5) {
|
|
815
1611
|
super();
|
|
816
|
-
const
|
|
817
|
-
|
|
818
|
-
const
|
|
1612
|
+
const o = new v(t, t, 0.2, 16), r = new w({ color: 9127187, flatShading: !0 }), i = new h(o, r);
|
|
1613
|
+
i.position.set(0, 0, 0), this.add(i);
|
|
1614
|
+
const s = new v(t * 0.9, t * 0.9, e), n = new w({ color: 16766720, flatShading: !0, transparent: !0, opacity: 0.6 }), c = new h(s, n);
|
|
819
1615
|
c.position.set(0, e / 2 + 0.1, 0), this.add(c);
|
|
820
|
-
const
|
|
1616
|
+
const a = new z(t * 1.1, 0.5, 8), m = new w({ color: 9127187, flatShading: !0 }), u = new h(a, m);
|
|
821
1617
|
u.position.set(0, e + 0.35, 0), this.add(u);
|
|
822
|
-
const f = new
|
|
823
|
-
|
|
824
|
-
const
|
|
825
|
-
|
|
1618
|
+
const f = new se(t * 0.8, 0.05, 8, 16), p = new w({ color: 9127187, flatShading: !0 }), d = new h(f, p);
|
|
1619
|
+
d.position.set(0, e + 0.85, 0), this.add(d);
|
|
1620
|
+
const x = new oe(16755200, 1.5, 15);
|
|
1621
|
+
x.position.set(0, e / 2 + 0.1, 0), x.castShadow = !0, this.add(x);
|
|
826
1622
|
}
|
|
827
1623
|
}
|
|
828
|
-
class
|
|
1624
|
+
class xt extends S {
|
|
829
1625
|
constructor() {
|
|
830
1626
|
super();
|
|
831
|
-
const e = new
|
|
832
|
-
for (let
|
|
833
|
-
const
|
|
834
|
-
|
|
835
|
-
const
|
|
836
|
-
|
|
1627
|
+
const e = new Q(1, 0), t = new w({ color: 8421504, flatShading: !0 }), o = new w({ color: 4950843, flatShading: !0, opacity: 0.8, transparent: !0 });
|
|
1628
|
+
for (let r = 0; r < 5; r++) {
|
|
1629
|
+
const i = new h(e, t);
|
|
1630
|
+
i.scale.set(0.8 + Math.random() * 0.4, 0.8 + Math.random() * 0.4, 0.8 + Math.random() * 0.4), i.rotation.set(Math.random() * Math.PI, Math.random() * Math.PI, Math.random() * Math.PI), i.position.set((Math.random() - 0.5) * 4, 0, (Math.random() - 0.5) * 4), this.add(i);
|
|
1631
|
+
const s = new h(e, o);
|
|
1632
|
+
s.scale.set(i.scale.x * 0.9, i.scale.y * 0.5, i.scale.z * 0.9), s.rotation.copy(i.rotation), s.position.copy(i.position), s.position.y += 0.3, this.add(s);
|
|
837
1633
|
}
|
|
838
1634
|
}
|
|
839
1635
|
}
|
|
840
|
-
class
|
|
1636
|
+
class Mt extends h {
|
|
1637
|
+
constructor(e = 1, t = 4, o = 4) {
|
|
1638
|
+
super(), this.geometry = new Te(e, t, o), this.material = new w({ color: 8421504, flatShading: !0 });
|
|
1639
|
+
}
|
|
1640
|
+
}
|
|
1641
|
+
class vt extends S {
|
|
841
1642
|
constructor() {
|
|
842
1643
|
super();
|
|
843
|
-
const e = new
|
|
844
|
-
for (let
|
|
845
|
-
const
|
|
846
|
-
|
|
1644
|
+
const e = new Q(1, 0), t = new w({ color: 8421504, flatShading: !0 });
|
|
1645
|
+
for (let o = 0; o < 5; o++) {
|
|
1646
|
+
const r = new h(e, t);
|
|
1647
|
+
r.scale.set(0.8 + Math.random() * 0.4, 0.8 + Math.random() * 0.4, 0.8 + Math.random() * 0.4), r.rotation.set(Math.random() * Math.PI, Math.random() * Math.PI, Math.random() * Math.PI), r.position.set((Math.random() - 0.5) * 4, 0, (Math.random() - 0.5) * 4), this.add(r);
|
|
847
1648
|
}
|
|
848
1649
|
}
|
|
849
1650
|
}
|
|
850
|
-
class
|
|
1651
|
+
class gt extends S {
|
|
851
1652
|
constructor() {
|
|
852
1653
|
super();
|
|
853
|
-
const e = new
|
|
1654
|
+
const e = new Be(), t = new K({
|
|
854
1655
|
color: 8965375,
|
|
855
1656
|
transparent: !0,
|
|
856
1657
|
opacity: 0.4,
|
|
@@ -858,309 +1659,298 @@ class Xe extends g {
|
|
|
858
1659
|
metalness: 0.1,
|
|
859
1660
|
reflectivity: 0.8,
|
|
860
1661
|
transmission: 0.9,
|
|
861
|
-
side:
|
|
862
|
-
}),
|
|
863
|
-
|
|
1662
|
+
side: q
|
|
1663
|
+
}), o = new h(e, t);
|
|
1664
|
+
o.rotation.x = -Math.PI / 2, this.add(o);
|
|
864
1665
|
}
|
|
865
1666
|
}
|
|
866
|
-
class
|
|
867
|
-
constructor() {
|
|
868
|
-
super();
|
|
869
|
-
const e = new x(1.6, 0.05, 2.1), o = new y({ color: 9109504 }), t = new m(e, o), s = new m(e, o);
|
|
870
|
-
t.position.set(0, 0.125, 0), s.position.set(0, -0.125, 0);
|
|
871
|
-
const r = new x(1.55, 0.2, 2), n = new y({ color: 16777215 }), a = new m(r, n);
|
|
872
|
-
a.position.set(-0.025, 0, 0);
|
|
873
|
-
const c = new x(0.05, 0.25, 2.1), i = new y({ color: 4915200 }), l = new m(c, i);
|
|
874
|
-
l.position.set(-0.8, 0, 0), this.add(t), this.add(s), this.add(a), this.add(l);
|
|
875
|
-
}
|
|
876
|
-
}
|
|
877
|
-
class Je extends g {
|
|
1667
|
+
class St extends S {
|
|
878
1668
|
constructor() {
|
|
879
1669
|
super();
|
|
880
1670
|
const e = [
|
|
881
|
-
new
|
|
1671
|
+
new I(0, 0),
|
|
882
1672
|
// Bottom
|
|
883
|
-
new
|
|
1673
|
+
new I(0.8, 0),
|
|
884
1674
|
// Base
|
|
885
|
-
new
|
|
1675
|
+
new I(1, 1.5),
|
|
886
1676
|
// Rounded body
|
|
887
|
-
new
|
|
1677
|
+
new I(0.5, 2.2),
|
|
888
1678
|
// Neck
|
|
889
|
-
new
|
|
1679
|
+
new I(0.6, 2.5)
|
|
890
1680
|
// Mouth
|
|
891
|
-
],
|
|
1681
|
+
], t = new Z(e, 10), o = new v(0.3, 0.4, 0.2, 8), r = new w({
|
|
892
1682
|
color: 8965375,
|
|
893
1683
|
transparent: !0,
|
|
894
1684
|
opacity: 0.5,
|
|
895
1685
|
roughness: 0.1,
|
|
896
1686
|
metalness: 0.3
|
|
897
|
-
}),
|
|
1687
|
+
}), i = new w({
|
|
898
1688
|
color: 16724838,
|
|
899
1689
|
// Vibrant potion color
|
|
900
1690
|
transparent: !0,
|
|
901
1691
|
opacity: 0.6
|
|
902
|
-
}),
|
|
1692
|
+
}), s = new w({
|
|
903
1693
|
color: 9127187,
|
|
904
1694
|
roughness: 1
|
|
905
|
-
}),
|
|
906
|
-
c.scale.set(0.8, 0.8, 0.8), c.position.y = 0.1,
|
|
907
|
-
const
|
|
908
|
-
|
|
1695
|
+
}), n = new h(t, r), c = new h(t, i), a = new h(o, s);
|
|
1696
|
+
c.scale.set(0.8, 0.8, 0.8), c.position.y = 0.1, a.position.y = 2.5;
|
|
1697
|
+
const m = new S();
|
|
1698
|
+
m.add(n, c, a), this.add(m);
|
|
909
1699
|
}
|
|
910
1700
|
}
|
|
911
|
-
class
|
|
1701
|
+
class bt extends S {
|
|
912
1702
|
constructor() {
|
|
913
1703
|
super();
|
|
914
|
-
const e = new v(0.3, 0.4, 0.1, 16),
|
|
1704
|
+
const e = new v(0.3, 0.4, 0.1, 16), t = new w({
|
|
915
1705
|
color: 3355443,
|
|
916
1706
|
roughness: 0.6,
|
|
917
1707
|
metalness: 0.3
|
|
918
|
-
}),
|
|
919
|
-
|
|
920
|
-
const
|
|
1708
|
+
}), o = new h(e, t);
|
|
1709
|
+
o.position.y = 0.05;
|
|
1710
|
+
const r = new v(0.1, 0.1, 0.7, 16), i = new w({
|
|
921
1711
|
color: 5592405,
|
|
922
1712
|
roughness: 0.5,
|
|
923
1713
|
metalness: 0.4
|
|
924
|
-
}),
|
|
925
|
-
|
|
926
|
-
const
|
|
1714
|
+
}), s = new h(r, i);
|
|
1715
|
+
s.position.y = 0.4;
|
|
1716
|
+
const n = new z(0.075, 0.2, 16), c = new w({
|
|
927
1717
|
color: 16733440,
|
|
928
1718
|
emissive: 16733440,
|
|
929
1719
|
emissiveIntensity: 0.6,
|
|
930
1720
|
transparent: !0,
|
|
931
1721
|
opacity: 0.8
|
|
932
|
-
}),
|
|
933
|
-
|
|
1722
|
+
}), a = new h(n, c);
|
|
1723
|
+
a.position.y = 0.8, this.add(o, s, a);
|
|
934
1724
|
}
|
|
935
1725
|
}
|
|
936
|
-
class
|
|
1726
|
+
class Gt extends S {
|
|
937
1727
|
constructor() {
|
|
938
1728
|
super();
|
|
939
|
-
const e = new
|
|
1729
|
+
const e = new g(3, 4, 0.1), t = new w({
|
|
940
1730
|
color: 3026478,
|
|
941
1731
|
roughness: 0.8,
|
|
942
1732
|
metalness: 0.6
|
|
943
|
-
}),
|
|
1733
|
+
}), o = new g(0.2, 0.5, 0.2), r = new w({
|
|
944
1734
|
color: 11184810,
|
|
945
1735
|
roughness: 0.5,
|
|
946
1736
|
metalness: 0.7
|
|
947
|
-
}),
|
|
1737
|
+
}), i = new v(0.3, 0.3, 0.1, 16), s = new w({
|
|
948
1738
|
color: 5592405,
|
|
949
1739
|
roughness: 0.7,
|
|
950
1740
|
metalness: 0.5
|
|
951
|
-
}),
|
|
952
|
-
for (let
|
|
953
|
-
const P = new
|
|
954
|
-
P.position.set(
|
|
1741
|
+
}), n = new h(e, t);
|
|
1742
|
+
for (let y = -1; y <= 1; y++) {
|
|
1743
|
+
const P = new h(o, r);
|
|
1744
|
+
P.position.set(y, 1.5, 0.1), n.add(P);
|
|
955
1745
|
}
|
|
956
|
-
const c = new
|
|
957
|
-
c.rotation.x = Math.PI / 2, c.position.set(0, 0.5, 0.15),
|
|
958
|
-
const
|
|
1746
|
+
const c = new h(i, s);
|
|
1747
|
+
c.rotation.x = Math.PI / 2, c.position.set(0, 0.5, 0.15), n.add(c);
|
|
1748
|
+
const a = new T(0.15, 8, 8), m = new w({
|
|
959
1749
|
color: 16711680,
|
|
960
1750
|
emissive: 16711680,
|
|
961
1751
|
emissiveIntensity: 0.5
|
|
962
|
-
}), u = new
|
|
963
|
-
u.position.set(0, -1, 0.1),
|
|
964
|
-
let f = 0.015, p = 0.8,
|
|
965
|
-
function
|
|
966
|
-
requestAnimationFrame(
|
|
967
|
-
const
|
|
968
|
-
u.material.emissiveIntensity =
|
|
1752
|
+
}), u = new h(a, m);
|
|
1753
|
+
u.position.set(0, -1, 0.1), n.add(u), this.add(n);
|
|
1754
|
+
let f = 0.015, p = 0.8, d = 0.2;
|
|
1755
|
+
function x() {
|
|
1756
|
+
requestAnimationFrame(x);
|
|
1757
|
+
const y = d + Math.abs(Math.sin(Date.now() * f)) * (p - d);
|
|
1758
|
+
u.material.emissiveIntensity = y;
|
|
969
1759
|
}
|
|
970
|
-
|
|
1760
|
+
x();
|
|
971
1761
|
}
|
|
972
1762
|
}
|
|
973
|
-
class
|
|
1763
|
+
class It extends S {
|
|
974
1764
|
constructor() {
|
|
975
1765
|
super();
|
|
976
1766
|
const e = [
|
|
977
|
-
new
|
|
1767
|
+
new I(0, 0),
|
|
978
1768
|
// Bottom of the flask
|
|
979
|
-
new
|
|
1769
|
+
new I(1.2, 0),
|
|
980
1770
|
// Base
|
|
981
|
-
new
|
|
1771
|
+
new I(1.5, 1.5),
|
|
982
1772
|
// Mid-body
|
|
983
|
-
new
|
|
1773
|
+
new I(1, 3),
|
|
984
1774
|
// Narrow neck
|
|
985
|
-
new
|
|
1775
|
+
new I(0.6, 3.5)
|
|
986
1776
|
// Mouth of the flask
|
|
987
|
-
],
|
|
1777
|
+
], t = new Z(e, 12), o = new v(0.6, 0.7, 0.3, 8), r = new w({
|
|
988
1778
|
color: 8965290,
|
|
989
1779
|
transparent: !0,
|
|
990
1780
|
opacity: 0.4,
|
|
991
1781
|
roughness: 0.1,
|
|
992
1782
|
metalness: 0.5
|
|
993
|
-
}),
|
|
1783
|
+
}), i = new w({
|
|
994
1784
|
color: 9127187,
|
|
995
1785
|
roughness: 1
|
|
996
|
-
}),
|
|
997
|
-
|
|
1786
|
+
}), s = new h(t, r), n = new h(o, i);
|
|
1787
|
+
n.position.y = 3.5, this.add(s, n);
|
|
998
1788
|
}
|
|
999
1789
|
}
|
|
1000
|
-
class
|
|
1790
|
+
class Pt extends S {
|
|
1001
1791
|
constructor() {
|
|
1002
1792
|
super();
|
|
1003
|
-
const e = new
|
|
1793
|
+
const e = new g(2, 3, 0.1), t = new w({
|
|
1004
1794
|
color: 3355443,
|
|
1005
1795
|
roughness: 0.8,
|
|
1006
1796
|
metalness: 0.5
|
|
1007
|
-
}),
|
|
1797
|
+
}), o = new h(e, t), r = new v(0.1, 0.1, 0.2, 8), i = new v(0.05, 0.05, 1, 8), s = new w({
|
|
1008
1798
|
color: 11184810,
|
|
1009
1799
|
roughness: 0.5,
|
|
1010
1800
|
metalness: 0.7
|
|
1011
1801
|
});
|
|
1012
|
-
for (let
|
|
1013
|
-
const c = new
|
|
1014
|
-
c.position.set(
|
|
1015
|
-
const
|
|
1016
|
-
|
|
1802
|
+
for (let n = -0.5; n <= 0.5; n += 0.5) {
|
|
1803
|
+
const c = new h(r, s);
|
|
1804
|
+
c.position.set(n, 1, 0.1);
|
|
1805
|
+
const a = new h(i, s);
|
|
1806
|
+
a.position.y = 0.5, c.add(a), this.add(c);
|
|
1017
1807
|
}
|
|
1018
|
-
this.add(
|
|
1808
|
+
this.add(o);
|
|
1019
1809
|
}
|
|
1020
1810
|
}
|
|
1021
|
-
class
|
|
1811
|
+
class At extends S {
|
|
1022
1812
|
constructor() {
|
|
1023
1813
|
super();
|
|
1024
|
-
const e = new
|
|
1814
|
+
const e = new g(1, 0.2, 0.5), t = new w({
|
|
1025
1815
|
color: 4473924,
|
|
1026
1816
|
roughness: 0.6,
|
|
1027
1817
|
metalness: 0.3
|
|
1028
|
-
}),
|
|
1029
|
-
|
|
1030
|
-
const
|
|
1031
|
-
|
|
1032
|
-
const
|
|
1818
|
+
}), o = new h(e, t);
|
|
1819
|
+
o.position.y = 0.1;
|
|
1820
|
+
const r = new g(0.2, 1, 0.2), i = new h(r, t);
|
|
1821
|
+
i.position.set(0, 0.6, -0.2);
|
|
1822
|
+
const s = new v(0.1, 0.1, 0.4, 8), n = new w({
|
|
1033
1823
|
color: 3355443,
|
|
1034
1824
|
roughness: 0.5,
|
|
1035
1825
|
metalness: 0.6
|
|
1036
|
-
}), c = new
|
|
1826
|
+
}), c = new h(s, n);
|
|
1037
1827
|
c.position.set(0, 1.1, -0.35), c.rotation.x = -Math.PI / 4;
|
|
1038
|
-
const
|
|
1828
|
+
const a = new g(0.6, 0.1, 0.6), m = new w({
|
|
1039
1829
|
color: 5592405,
|
|
1040
1830
|
roughness: 0.8,
|
|
1041
1831
|
metalness: 0.2
|
|
1042
|
-
}), u = new
|
|
1043
|
-
u.position.set(0, 0.6, 0), this.add(
|
|
1832
|
+
}), u = new h(a, m);
|
|
1833
|
+
u.position.set(0, 0.6, 0), this.add(o, i, c, u);
|
|
1044
1834
|
}
|
|
1045
1835
|
}
|
|
1046
|
-
class
|
|
1836
|
+
class kt extends S {
|
|
1047
1837
|
constructor() {
|
|
1048
1838
|
super();
|
|
1049
|
-
const e = new
|
|
1050
|
-
|
|
1051
|
-
const
|
|
1839
|
+
const e = new Ee(), t = new v(0.2, 0.3, 1.5, 8);
|
|
1840
|
+
t.translate(0, 0.75, 0);
|
|
1841
|
+
const o = new w({
|
|
1052
1842
|
color: 6045747,
|
|
1053
1843
|
// Dark earthy tone
|
|
1054
1844
|
roughness: 1,
|
|
1055
1845
|
metalness: 0,
|
|
1056
|
-
side:
|
|
1846
|
+
side: q
|
|
1057
1847
|
// Render inside and outside
|
|
1058
|
-
}),
|
|
1848
|
+
}), r = new w({
|
|
1059
1849
|
color: 9132587,
|
|
1060
1850
|
// Slightly lighter earthy color
|
|
1061
1851
|
roughness: 0.8,
|
|
1062
1852
|
metalness: 0.1
|
|
1063
|
-
}),
|
|
1064
|
-
|
|
1853
|
+
}), i = new h(e, o), s = new h(t, r);
|
|
1854
|
+
s.position.set(0.3, 1.3, 0), s.rotation.z = Math.PI / 4, this.add(i, s);
|
|
1065
1855
|
}
|
|
1066
1856
|
}
|
|
1067
|
-
class
|
|
1857
|
+
class Tt extends S {
|
|
1068
1858
|
constructor() {
|
|
1069
1859
|
super();
|
|
1070
|
-
const e = 100,
|
|
1071
|
-
Array.from({ length: e }, (
|
|
1072
|
-
const u =
|
|
1073
|
-
return new
|
|
1860
|
+
const e = 100, t = 0.05, o = new me(
|
|
1861
|
+
Array.from({ length: e }, (a, m) => {
|
|
1862
|
+
const u = m * 0.2;
|
|
1863
|
+
return new M(
|
|
1074
1864
|
Math.cos(u) * 0.4,
|
|
1075
|
-
|
|
1865
|
+
m * t,
|
|
1076
1866
|
// Gradual height increase
|
|
1077
1867
|
Math.sin(u) * 0.4
|
|
1078
1868
|
);
|
|
1079
1869
|
})
|
|
1080
|
-
),
|
|
1870
|
+
), r = new ue(o, 200, 0.1, 8, !1), i = new w({
|
|
1081
1871
|
color: 8965375,
|
|
1082
1872
|
transparent: !0,
|
|
1083
1873
|
opacity: 0.3,
|
|
1084
1874
|
roughness: 0.1,
|
|
1085
1875
|
metalness: 0.2,
|
|
1086
1876
|
emissive: 8965375
|
|
1087
|
-
}),
|
|
1088
|
-
this.add(
|
|
1089
|
-
function
|
|
1090
|
-
|
|
1877
|
+
}), s = new h(r, i);
|
|
1878
|
+
this.add(s);
|
|
1879
|
+
function n() {
|
|
1880
|
+
i.emissiveIntensity = 0.2 + Math.sin(Date.now() * 5e-3) * 0.1;
|
|
1091
1881
|
}
|
|
1092
1882
|
function c() {
|
|
1093
|
-
requestAnimationFrame(c),
|
|
1883
|
+
requestAnimationFrame(c), n();
|
|
1094
1884
|
}
|
|
1095
1885
|
c();
|
|
1096
1886
|
}
|
|
1097
1887
|
}
|
|
1098
|
-
class
|
|
1888
|
+
class Bt extends S {
|
|
1099
1889
|
constructor() {
|
|
1100
1890
|
super();
|
|
1101
|
-
const e = new
|
|
1891
|
+
const e = new se(0.3, 0.03, 8, 16), t = new w({
|
|
1102
1892
|
color: 8947848,
|
|
1103
1893
|
roughness: 0.7,
|
|
1104
1894
|
metalness: 0.3
|
|
1105
|
-
}),
|
|
1106
|
-
|
|
1107
|
-
const
|
|
1895
|
+
}), o = new h(e, t);
|
|
1896
|
+
o.rotation.x = Math.PI / 2, o.position.y = 0.4;
|
|
1897
|
+
const r = new v(0.02, 0.02, 0.4, 8), i = new w({
|
|
1108
1898
|
color: 6710886,
|
|
1109
1899
|
roughness: 0.8,
|
|
1110
1900
|
metalness: 0.3
|
|
1111
|
-
}),
|
|
1112
|
-
for (let
|
|
1113
|
-
const c =
|
|
1114
|
-
|
|
1901
|
+
}), s = [];
|
|
1902
|
+
for (let n = 0; n < 3; n++) {
|
|
1903
|
+
const c = n / 3 * Math.PI * 2, a = new h(r, i);
|
|
1904
|
+
a.position.set(Math.cos(c) * 0.25, 0.2, Math.sin(c) * 0.25), s.push(a);
|
|
1115
1905
|
}
|
|
1116
|
-
this.add(
|
|
1906
|
+
this.add(o, ...s);
|
|
1117
1907
|
}
|
|
1118
1908
|
}
|
|
1119
|
-
class
|
|
1909
|
+
class Et extends S {
|
|
1120
1910
|
constructor() {
|
|
1121
1911
|
super();
|
|
1122
|
-
const e = new v(0.5, 0.6, 0.3, 16),
|
|
1912
|
+
const e = new v(0.5, 0.6, 0.3, 16), t = new w({
|
|
1123
1913
|
color: 3355443,
|
|
1124
1914
|
roughness: 0.6,
|
|
1125
1915
|
metalness: 0.5
|
|
1126
|
-
}),
|
|
1127
|
-
|
|
1128
|
-
const
|
|
1916
|
+
}), o = new h(e, t);
|
|
1917
|
+
o.position.y = 0.15;
|
|
1918
|
+
const r = new v(0.15, 0.15, 2, 12, 1, !0), i = new w({
|
|
1129
1919
|
color: 16737792,
|
|
1130
1920
|
roughness: 0.5,
|
|
1131
1921
|
metalness: 0.8,
|
|
1132
|
-
side:
|
|
1133
|
-
}),
|
|
1134
|
-
|
|
1135
|
-
const
|
|
1136
|
-
c.position.y = 2.4, this.add(
|
|
1137
|
-
const
|
|
1922
|
+
side: q
|
|
1923
|
+
}), s = new h(r, i);
|
|
1924
|
+
s.position.y = 1.3;
|
|
1925
|
+
const n = new T(0.3, 16, 16), c = new h(n, i);
|
|
1926
|
+
c.position.y = 2.4, this.add(o, s, c);
|
|
1927
|
+
const a = [];
|
|
1138
1928
|
for (let f = 0; f < 5; f++) {
|
|
1139
|
-
const p = new
|
|
1140
|
-
new
|
|
1141
|
-
new
|
|
1142
|
-
],
|
|
1143
|
-
this.add(
|
|
1929
|
+
const p = new fe({ color: 10079487 }), d = [
|
|
1930
|
+
new M(0, 2.4, 0),
|
|
1931
|
+
new M((Math.random() - 0.5) * 1.5, Math.random() * 2.4, (Math.random() - 0.5) * 1.5)
|
|
1932
|
+
], x = new b().setFromPoints(d), y = new he(x, p);
|
|
1933
|
+
this.add(y), a.push(y);
|
|
1144
1934
|
}
|
|
1145
|
-
function
|
|
1146
|
-
|
|
1935
|
+
function m() {
|
|
1936
|
+
a.forEach((f) => {
|
|
1147
1937
|
const p = [
|
|
1148
|
-
new
|
|
1149
|
-
new
|
|
1938
|
+
new M(0, 2.4, 0),
|
|
1939
|
+
new M((Math.random() - 0.5) * 1.5, Math.random() * 2.4, (Math.random() - 0.5) * 1.5)
|
|
1150
1940
|
];
|
|
1151
1941
|
f.geometry.setFromPoints(p);
|
|
1152
1942
|
});
|
|
1153
1943
|
}
|
|
1154
1944
|
function u() {
|
|
1155
|
-
requestAnimationFrame(u),
|
|
1945
|
+
requestAnimationFrame(u), m();
|
|
1156
1946
|
}
|
|
1157
1947
|
u();
|
|
1158
1948
|
}
|
|
1159
1949
|
}
|
|
1160
|
-
class
|
|
1161
|
-
constructor(e = 0.2,
|
|
1950
|
+
class Nt extends S {
|
|
1951
|
+
constructor(e = 0.2, t = 0.2, o = 3, r = 32) {
|
|
1162
1952
|
super();
|
|
1163
|
-
const
|
|
1953
|
+
const i = new R(e, t, o, r), s = new K({
|
|
1164
1954
|
color: 8965375,
|
|
1165
1955
|
transparent: !0,
|
|
1166
1956
|
opacity: 0.4,
|
|
@@ -1169,48 +1959,48 @@ class st extends g {
|
|
|
1169
1959
|
reflectivity: 0.8,
|
|
1170
1960
|
transmission: 0.9,
|
|
1171
1961
|
// For glass effect
|
|
1172
|
-
side:
|
|
1173
|
-
}),
|
|
1174
|
-
this.add(
|
|
1962
|
+
side: q
|
|
1963
|
+
}), n = new h(i, s);
|
|
1964
|
+
this.add(n);
|
|
1175
1965
|
}
|
|
1176
1966
|
}
|
|
1177
|
-
class
|
|
1178
|
-
constructor(e = 3,
|
|
1967
|
+
class Ct extends S {
|
|
1968
|
+
constructor(e = 3, t = [65450, 16711850, 11141375]) {
|
|
1179
1969
|
super();
|
|
1180
|
-
const
|
|
1970
|
+
const o = new g(3, 0.2, 1), r = new w({
|
|
1181
1971
|
color: 9127187,
|
|
1182
1972
|
// Wooden color or change to metallic tone
|
|
1183
1973
|
roughness: 0.7,
|
|
1184
1974
|
metalness: 0.3
|
|
1185
|
-
}),
|
|
1186
|
-
|
|
1187
|
-
const
|
|
1975
|
+
}), i = new h(o, r);
|
|
1976
|
+
i.position.y = 0.5;
|
|
1977
|
+
const s = new R(0.1, 0.1, 1, 16), n = new w({
|
|
1188
1978
|
color: 11184810,
|
|
1189
1979
|
transparent: !0,
|
|
1190
1980
|
opacity: 0.4,
|
|
1191
1981
|
roughness: 0.1,
|
|
1192
1982
|
metalness: 0.5,
|
|
1193
|
-
side:
|
|
1983
|
+
side: q
|
|
1194
1984
|
});
|
|
1195
1985
|
for (let c = 0; c < e; c++) {
|
|
1196
|
-
const
|
|
1197
|
-
|
|
1198
|
-
const u = new
|
|
1986
|
+
const a = new h(s, n), m = (c - (e - 1) / 2) * 0.8;
|
|
1987
|
+
a.position.set(m, 1, 0);
|
|
1988
|
+
const u = new R(0.099, 0.099, 0.5, 16, !1), f = t[c % t.length], p = new w({
|
|
1199
1989
|
color: f,
|
|
1200
1990
|
emissive: f,
|
|
1201
1991
|
emissiveIntensity: 0.5,
|
|
1202
1992
|
transparent: !0,
|
|
1203
1993
|
opacity: 0.6
|
|
1204
|
-
}),
|
|
1205
|
-
|
|
1994
|
+
}), d = new h(u, p);
|
|
1995
|
+
d.position.set(0, -0.25, 0), a.add(d), i.add(a);
|
|
1206
1996
|
}
|
|
1207
|
-
this.add(
|
|
1997
|
+
this.add(i);
|
|
1208
1998
|
}
|
|
1209
1999
|
}
|
|
1210
|
-
class
|
|
2000
|
+
class Ft extends h {
|
|
1211
2001
|
constructor() {
|
|
1212
2002
|
super();
|
|
1213
|
-
const e = new
|
|
2003
|
+
const e = new Ne(), t = new K({
|
|
1214
2004
|
color: 5597999,
|
|
1215
2005
|
roughness: 0.1,
|
|
1216
2006
|
transmission: 0.9,
|
|
@@ -1220,30 +2010,30 @@ class at extends m {
|
|
|
1220
2010
|
clearcoat: 1,
|
|
1221
2011
|
clearcoatRoughness: 0.1
|
|
1222
2012
|
});
|
|
1223
|
-
this.geometry = e, this.material =
|
|
2013
|
+
this.geometry = e, this.material = t;
|
|
1224
2014
|
}
|
|
1225
2015
|
}
|
|
1226
|
-
class
|
|
1227
|
-
constructor(e = 5,
|
|
2016
|
+
class Fe extends _ {
|
|
2017
|
+
constructor(e = 5, t = 0.5, o = 1) {
|
|
1228
2018
|
super();
|
|
1229
|
-
const
|
|
1230
|
-
this.moveTo(Math.cos(0) *
|
|
1231
|
-
for (let
|
|
1232
|
-
let c = Math.cos(
|
|
1233
|
-
this.quadraticCurveTo(c,
|
|
2019
|
+
const r = Math.PI * 2 / e, i = r / 2, s = r / 4;
|
|
2020
|
+
this.moveTo(Math.cos(0) * o, -Math.sin(0) * o);
|
|
2021
|
+
for (let n = 1; n <= e; ++n) {
|
|
2022
|
+
let c = Math.cos(r * n - s * 3) * (t / Math.cos(s)), a = -Math.sin(r * n - s * 3) * (t / Math.cos(s)), m = Math.cos(r * n - i) * t, u = -Math.sin(r * n - i) * t;
|
|
2023
|
+
this.quadraticCurveTo(c, a, m, u), c = Math.cos(r * n - s) * (t / Math.cos(s)), a = -Math.sin(r * n - s) * (t / Math.cos(s)), m = Math.cos(r * n) * o, u = -Math.sin(r * n) * o, this.quadraticCurveTo(c, a, m, u);
|
|
1234
2024
|
}
|
|
1235
2025
|
this.closePath();
|
|
1236
2026
|
}
|
|
1237
2027
|
}
|
|
1238
|
-
class
|
|
1239
|
-
constructor(e = 5,
|
|
2028
|
+
class Ut extends h {
|
|
2029
|
+
constructor(e = 5, t = 0.5, o = 1, r = 0.25) {
|
|
1240
2030
|
super();
|
|
1241
|
-
const
|
|
1242
|
-
depth:
|
|
1243
|
-
bevelEnabled:
|
|
2031
|
+
const i = new Fe(e, t, o), s = new L(i, {
|
|
2032
|
+
depth: r,
|
|
2033
|
+
bevelEnabled: r > 0,
|
|
1244
2034
|
bevelThickness: 0,
|
|
1245
2035
|
bevelSize: 0
|
|
1246
|
-
}),
|
|
2036
|
+
}), n = new w({
|
|
1247
2037
|
color: 16776960,
|
|
1248
2038
|
emissive: 16766720,
|
|
1249
2039
|
emissiveIntensity: 0.25,
|
|
@@ -1251,76 +2041,76 @@ class rt extends m {
|
|
|
1251
2041
|
roughness: 0.3,
|
|
1252
2042
|
flatShading: !0
|
|
1253
2043
|
});
|
|
1254
|
-
|
|
2044
|
+
s.center(), this.geometry = s, this.material = n;
|
|
1255
2045
|
}
|
|
1256
2046
|
}
|
|
1257
|
-
class
|
|
1258
|
-
constructor(e = 5,
|
|
2047
|
+
class Ue extends _ {
|
|
2048
|
+
constructor(e = 5, t = 0.5, o = 1, r = 5, i = 0.25) {
|
|
1259
2049
|
super();
|
|
1260
|
-
const
|
|
1261
|
-
this.moveTo(Math.cos(0) *
|
|
2050
|
+
const s = Math.PI * 2 / e, n = s / 4;
|
|
2051
|
+
this.moveTo(Math.cos(0) * o, -Math.sin(0) * o);
|
|
1262
2052
|
for (let c = 1; c <= e; ++c)
|
|
1263
|
-
this.lineTo(Math.cos(
|
|
1264
|
-
if (this.closePath(),
|
|
1265
|
-
const c = new
|
|
1266
|
-
c.moveTo(Math.cos(0) *
|
|
1267
|
-
for (let
|
|
1268
|
-
c.lineTo(Math.cos(
|
|
1269
|
-
c.lineTo(Math.cos(0) *
|
|
2053
|
+
this.lineTo(Math.cos(s * c - n * 3) * t, -Math.sin(s * c - n * 3) * t), this.lineTo(Math.cos(s * c - n * 2) * t, -Math.sin(s * c - n * 2) * t), this.lineTo(Math.cos(s * c - n) * o, -Math.sin(s * c - n) * o), this.lineTo(Math.cos(s * c) * o, -Math.sin(s * c) * o);
|
|
2054
|
+
if (this.closePath(), i > 0 && r > 2) {
|
|
2055
|
+
const c = new de(), a = Math.PI * 2 / r;
|
|
2056
|
+
c.moveTo(Math.cos(0) * i, -Math.sin(0) * i);
|
|
2057
|
+
for (let m = 1; m < r; ++m)
|
|
2058
|
+
c.lineTo(Math.cos(a * m) * i, -Math.sin(a * m) * i);
|
|
2059
|
+
c.lineTo(Math.cos(0) * i, -Math.sin(0) * i), this.holes.push(c);
|
|
1270
2060
|
}
|
|
1271
2061
|
}
|
|
1272
2062
|
}
|
|
1273
|
-
class
|
|
1274
|
-
constructor(e = 5,
|
|
2063
|
+
class zt extends h {
|
|
2064
|
+
constructor(e = 5, t = 0.5, o = 1, r = 5, i = 0.25, s = 0.25) {
|
|
1275
2065
|
super();
|
|
1276
|
-
const
|
|
1277
|
-
depth:
|
|
1278
|
-
bevelEnabled:
|
|
2066
|
+
const n = new Ue(e, t, o, r, i), c = new L(n, {
|
|
2067
|
+
depth: s,
|
|
2068
|
+
bevelEnabled: s > 0,
|
|
1279
2069
|
bevelThickness: 0,
|
|
1280
2070
|
bevelSize: 0
|
|
1281
|
-
}),
|
|
2071
|
+
}), a = new w({
|
|
1282
2072
|
color: 11184810,
|
|
1283
2073
|
metalness: 0.8,
|
|
1284
2074
|
roughness: 0.2,
|
|
1285
2075
|
reflectivity: 0.5
|
|
1286
2076
|
});
|
|
1287
|
-
c.center(), this.geometry = c, this.material =
|
|
2077
|
+
c.center(), this.geometry = c, this.material = a;
|
|
1288
2078
|
}
|
|
1289
2079
|
}
|
|
1290
|
-
class
|
|
1291
|
-
constructor(e = 1,
|
|
1292
|
-
super(), this.moveTo(0,
|
|
1293
|
-
-
|
|
1294
|
-
|
|
2080
|
+
class ze extends _ {
|
|
2081
|
+
constructor(e = 1, t = 2.1, o = 1.4, r = 1.6) {
|
|
2082
|
+
super(), this.moveTo(0, o * e / 3), this.bezierCurveTo(
|
|
2083
|
+
-t * 0.375 * e,
|
|
2084
|
+
o * e,
|
|
1295
2085
|
// Control point 1 for the left lobe
|
|
1296
|
-
-
|
|
1297
|
-
|
|
2086
|
+
-t * e,
|
|
2087
|
+
o * e / 3,
|
|
1298
2088
|
// Control point 2 for the left side of the heart
|
|
1299
2089
|
0,
|
|
1300
|
-
-
|
|
2090
|
+
-r * e
|
|
1301
2091
|
// Bottom tip of the heart, controlled by `tipDepth`
|
|
1302
2092
|
), this.bezierCurveTo(
|
|
1303
|
-
o * e,
|
|
1304
|
-
t * e / 3,
|
|
1305
|
-
// Control point 3 for the right side of the heart
|
|
1306
|
-
o * 0.375 * e,
|
|
1307
2093
|
t * e,
|
|
2094
|
+
o * e / 3,
|
|
2095
|
+
// Control point 3 for the right side of the heart
|
|
2096
|
+
t * 0.375 * e,
|
|
2097
|
+
o * e,
|
|
1308
2098
|
// Control point 4 for the right lobe
|
|
1309
2099
|
0,
|
|
1310
|
-
|
|
2100
|
+
o * e / 3
|
|
1311
2101
|
// Close shape at the top middle
|
|
1312
2102
|
);
|
|
1313
2103
|
}
|
|
1314
2104
|
}
|
|
1315
|
-
class
|
|
1316
|
-
constructor(e = 1,
|
|
2105
|
+
class _t extends h {
|
|
2106
|
+
constructor(e = 1, t = 1, o = 1, r = 10, i = 0.25) {
|
|
1317
2107
|
super();
|
|
1318
|
-
const
|
|
1319
|
-
depth:
|
|
1320
|
-
bevelEnabled:
|
|
2108
|
+
const s = new ze(e, t, o, r), n = new L(s, {
|
|
2109
|
+
depth: i,
|
|
2110
|
+
bevelEnabled: i > 0,
|
|
1321
2111
|
bevelThickness: 0,
|
|
1322
2112
|
bevelSize: 0
|
|
1323
|
-
}), c = new
|
|
2113
|
+
}), c = new w({
|
|
1324
2114
|
color: 12986408,
|
|
1325
2115
|
emissive: 12981270,
|
|
1326
2116
|
emissiveIntensity: 0.25,
|
|
@@ -1328,28 +2118,28 @@ class it extends m {
|
|
|
1328
2118
|
roughness: 0.3,
|
|
1329
2119
|
flatShading: !0
|
|
1330
2120
|
});
|
|
1331
|
-
|
|
2121
|
+
n.center(), this.geometry = n, this.material = c;
|
|
1332
2122
|
}
|
|
1333
2123
|
}
|
|
1334
|
-
class
|
|
1335
|
-
constructor(e = 5,
|
|
2124
|
+
class _e extends _ {
|
|
2125
|
+
constructor(e = 5, t = 0.5, o = 1) {
|
|
1336
2126
|
super();
|
|
1337
|
-
const
|
|
1338
|
-
this.moveTo(Math.cos(0) *
|
|
1339
|
-
for (let
|
|
1340
|
-
this.lineTo(Math.cos(
|
|
2127
|
+
const r = Math.PI * 2 / e, i = r / 2;
|
|
2128
|
+
this.moveTo(Math.cos(0) * o, Math.sin(0) * o);
|
|
2129
|
+
for (let s = 1; s <= e; ++s)
|
|
2130
|
+
this.lineTo(Math.cos(r * s - i) * t, Math.sin(r * s - i) * t), this.lineTo(Math.cos(r * s) * o, Math.sin(r * s) * o);
|
|
1341
2131
|
this.closePath();
|
|
1342
2132
|
}
|
|
1343
2133
|
}
|
|
1344
|
-
class
|
|
1345
|
-
constructor(e = 5,
|
|
2134
|
+
class Lt extends h {
|
|
2135
|
+
constructor(e = 5, t = 0.5, o = 1, r = 0.25) {
|
|
1346
2136
|
super();
|
|
1347
|
-
const
|
|
1348
|
-
depth:
|
|
1349
|
-
bevelEnabled:
|
|
2137
|
+
const i = new _e(e, t, o), s = new L(i, {
|
|
2138
|
+
depth: r,
|
|
2139
|
+
bevelEnabled: r > 0,
|
|
1350
2140
|
bevelThickness: 0,
|
|
1351
2141
|
bevelSize: 0
|
|
1352
|
-
}),
|
|
2142
|
+
}), n = new w({
|
|
1353
2143
|
color: 16776960,
|
|
1354
2144
|
emissive: 16766720,
|
|
1355
2145
|
emissiveIntensity: 0.25,
|
|
@@ -1357,10 +2147,123 @@ class lt extends m {
|
|
|
1357
2147
|
roughness: 0.3,
|
|
1358
2148
|
flatShading: !0
|
|
1359
2149
|
});
|
|
1360
|
-
|
|
2150
|
+
s.center(), this.geometry = s, this.material = n;
|
|
2151
|
+
}
|
|
2152
|
+
}
|
|
2153
|
+
class qt extends h {
|
|
2154
|
+
constructor({
|
|
2155
|
+
trunkRadiusTop: e = 0.25,
|
|
2156
|
+
trunkRadiusBottom: t = 0.4,
|
|
2157
|
+
trunkHeight: o = 2.5,
|
|
2158
|
+
trunkSegments: r = 14,
|
|
2159
|
+
trunkColor: i = 9127187,
|
|
2160
|
+
leafSize: s = 0.8,
|
|
2161
|
+
leafCount: n = 6,
|
|
2162
|
+
leafDetail: c = 0,
|
|
2163
|
+
leafSpreadRadius: a = 1.5,
|
|
2164
|
+
leafColor: m = 2263842
|
|
2165
|
+
} = {}) {
|
|
2166
|
+
super();
|
|
2167
|
+
const u = new Ce({
|
|
2168
|
+
trunkRadiusTop: e,
|
|
2169
|
+
trunkRadiusBottom: t,
|
|
2170
|
+
trunkHeight: o,
|
|
2171
|
+
trunkSegments: r,
|
|
2172
|
+
trunkColor: i,
|
|
2173
|
+
leafSize: s,
|
|
2174
|
+
leafCount: n,
|
|
2175
|
+
leafDetail: c,
|
|
2176
|
+
leafSpreadRadius: a,
|
|
2177
|
+
leafColor: m
|
|
2178
|
+
}), f = new w({
|
|
2179
|
+
color: i,
|
|
2180
|
+
roughness: 0.9,
|
|
2181
|
+
metalness: 0,
|
|
2182
|
+
flatShading: !0
|
|
2183
|
+
}), p = new w({
|
|
2184
|
+
color: m,
|
|
2185
|
+
roughness: 0.8,
|
|
2186
|
+
metalness: 0,
|
|
2187
|
+
flatShading: !0
|
|
2188
|
+
});
|
|
2189
|
+
this.geometry = u, this.material = [f, p];
|
|
1361
2190
|
}
|
|
1362
2191
|
}
|
|
1363
|
-
|
|
2192
|
+
function Ot(l, { time: e = 0, waveFrequency: t = 0.2, waveAmplitude: o = 0.5 } = {}) {
|
|
2193
|
+
l.onBeforeCompile = (r) => {
|
|
2194
|
+
r.uniforms.time = { value: e }, r.uniforms.waveFrequency = { value: t }, r.uniforms.waveAmplitude = { value: o }, r.vertexShader = `
|
|
2195
|
+
uniform float time;
|
|
2196
|
+
uniform float waveFrequency;
|
|
2197
|
+
uniform float waveAmplitude;
|
|
2198
|
+
|
|
2199
|
+
vec3 waterDisplacement(vec3 position, vec3 normal) {
|
|
2200
|
+
vec3 displaced = position;
|
|
2201
|
+
|
|
2202
|
+
// Displace along the normal direction instead of local y-axis
|
|
2203
|
+
displaced += normal * (sin(position.x * waveFrequency + time) * waveAmplitude);
|
|
2204
|
+
displaced += normal * (cos(position.z * waveFrequency + time) * waveAmplitude);
|
|
2205
|
+
|
|
2206
|
+
return displaced;
|
|
2207
|
+
}
|
|
2208
|
+
` + r.vertexShader, r.vertexShader = r.vertexShader.replace(
|
|
2209
|
+
"#include <begin_vertex>",
|
|
2210
|
+
`
|
|
2211
|
+
vec3 transformed = waterDisplacement(position, normal);
|
|
2212
|
+
`
|
|
2213
|
+
), l.userData.shader = r;
|
|
2214
|
+
};
|
|
2215
|
+
}
|
|
2216
|
+
function Vt(l, e) {
|
|
2217
|
+
l.userData.shader && (l.userData.shader.uniforms.time.value += e);
|
|
2218
|
+
}
|
|
2219
|
+
function Xt(l, { time: e = 0, intensity: t = 1, direction: o = C.XYZ, scale: r = 10 } = {}) {
|
|
2220
|
+
l.onBeforeCompile = (i) => {
|
|
2221
|
+
i.uniforms.time = { value: e }, i.uniforms.direction = { value: o }, i.uniforms.intensity = { value: t }, i.uniforms.scale = { value: r }, i.vertexShader = `
|
|
2222
|
+
uniform float time;
|
|
2223
|
+
uniform vec3 direction;
|
|
2224
|
+
uniform float intensity;
|
|
2225
|
+
uniform float scale;
|
|
2226
|
+
|
|
2227
|
+
float mod289(float x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
|
|
2228
|
+
vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }
|
|
2229
|
+
vec4 perm(vec4 x) { return mod289(((x * 34.0) + 1.0) * x); }
|
|
2230
|
+
|
|
2231
|
+
float noise(vec3 p) {
|
|
2232
|
+
vec3 a = floor(p);
|
|
2233
|
+
vec3 d = p - a;
|
|
2234
|
+
d = d * d * (3.0 - 2.0 * d);
|
|
2235
|
+
|
|
2236
|
+
vec4 b = a.xxyy + vec4(0.0, 1.0, 0.0, 1.0);
|
|
2237
|
+
vec4 k1 = perm(b.xyxy);
|
|
2238
|
+
vec4 k2 = perm(k1.xyxy + b.zzww);
|
|
2239
|
+
|
|
2240
|
+
vec4 c = k2 + a.zzzz;
|
|
2241
|
+
vec4 k3 = perm(c);
|
|
2242
|
+
vec4 k4 = perm(c + 1.0);
|
|
2243
|
+
|
|
2244
|
+
vec4 o1 = fract(k3 * (1.0 / 41.0));
|
|
2245
|
+
vec4 o2 = fract(k4 * (1.0 / 41.0));
|
|
2246
|
+
|
|
2247
|
+
vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);
|
|
2248
|
+
vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);
|
|
2249
|
+
|
|
2250
|
+
return o4.y * d.y + o4.x * (1.0 - d.y);
|
|
2251
|
+
}
|
|
2252
|
+
` + i.vertexShader, i.vertexShader = i.vertexShader.replace(
|
|
2253
|
+
"#include <begin_vertex>",
|
|
2254
|
+
`
|
|
2255
|
+
vec3 transformed = vec3(position);
|
|
2256
|
+
float n = noise(transformed * scale + time);
|
|
2257
|
+
transformed += normalize(direction) * n * intensity;
|
|
2258
|
+
vec3 transformedNormal = normal;
|
|
2259
|
+
`
|
|
2260
|
+
), l.userData.shader = i;
|
|
2261
|
+
};
|
|
2262
|
+
}
|
|
2263
|
+
function Yt(l, e) {
|
|
2264
|
+
l.userData.shader && (l.userData.shader.uniforms.time.value += e);
|
|
2265
|
+
}
|
|
2266
|
+
const te = {
|
|
1364
2267
|
uniforms: {},
|
|
1365
2268
|
vertexShader: `
|
|
1366
2269
|
varying vec3 vPosition;
|
|
@@ -1378,7 +2281,7 @@ const K = {
|
|
|
1378
2281
|
gl_FragColor = vec4(mix(bottomColor, topColor, y), 1.0);
|
|
1379
2282
|
}
|
|
1380
2283
|
`
|
|
1381
|
-
},
|
|
2284
|
+
}, Le = {
|
|
1382
2285
|
uniforms: {
|
|
1383
2286
|
tDiffuse: { value: null },
|
|
1384
2287
|
opacity: { value: 1 }
|
|
@@ -1399,10 +2302,10 @@ const K = {
|
|
|
1399
2302
|
gl_FragColor = opacity * texel;
|
|
1400
2303
|
}
|
|
1401
2304
|
`
|
|
1402
|
-
},
|
|
2305
|
+
}, H = {
|
|
1403
2306
|
uniforms: {
|
|
1404
|
-
topColor: { value: new
|
|
1405
|
-
bottomColor: { value: new
|
|
2307
|
+
topColor: { value: new $(51) },
|
|
2308
|
+
bottomColor: { value: new $(17) },
|
|
1406
2309
|
offset: { value: 33 },
|
|
1407
2310
|
exponent: { value: 0.6 }
|
|
1408
2311
|
},
|
|
@@ -1426,102 +2329,151 @@ const K = {
|
|
|
1426
2329
|
}
|
|
1427
2330
|
`
|
|
1428
2331
|
};
|
|
1429
|
-
class
|
|
2332
|
+
class Zt extends h {
|
|
1430
2333
|
constructor(e = 1e3) {
|
|
1431
|
-
super(), this.geometry = new
|
|
1432
|
-
vertexShader:
|
|
1433
|
-
fragmentShader:
|
|
1434
|
-
side:
|
|
2334
|
+
super(), this.geometry = new g(e, e, e), this.material = new j({
|
|
2335
|
+
vertexShader: te.vertexShader,
|
|
2336
|
+
fragmentShader: te.fragmentShader,
|
|
2337
|
+
side: ne
|
|
1435
2338
|
});
|
|
1436
2339
|
}
|
|
1437
2340
|
}
|
|
1438
|
-
class
|
|
2341
|
+
class Dt extends h {
|
|
1439
2342
|
constructor(e = 1e3) {
|
|
1440
|
-
super(), this.geometry = new T(e, 32, 15), this.material = new
|
|
1441
|
-
vertexShader:
|
|
1442
|
-
fragmentShader:
|
|
1443
|
-
uniforms:
|
|
1444
|
-
side:
|
|
2343
|
+
super(), this.geometry = new T(e, 32, 15), this.material = new j({
|
|
2344
|
+
vertexShader: H.vertexShader,
|
|
2345
|
+
fragmentShader: H.fragmentShader,
|
|
2346
|
+
uniforms: H.uniforms,
|
|
2347
|
+
side: ne
|
|
1445
2348
|
});
|
|
1446
2349
|
}
|
|
1447
2350
|
}
|
|
1448
|
-
class
|
|
1449
|
-
constructor(e = Math.PI * 0.49,
|
|
2351
|
+
class Ht extends h {
|
|
2352
|
+
constructor(e = Math.PI * 0.49, t = 2 * Math.PI * 0.25, o = 10, r = 2, i = 5e-3, s = 0.8) {
|
|
1450
2353
|
super();
|
|
1451
|
-
const
|
|
1452
|
-
|
|
1453
|
-
const c =
|
|
1454
|
-
c.turbidity.value =
|
|
2354
|
+
const n = new ve();
|
|
2355
|
+
n.scale.setScalar(45e4), this.add(n);
|
|
2356
|
+
const c = n.material.uniforms;
|
|
2357
|
+
c.turbidity.value = o, c.rayleigh.value = r, c.mieCoefficient.value = i, c.mieDirectionalG.value = s, this.skyUniforms = c, this.sunPosition(e, t);
|
|
1455
2358
|
}
|
|
1456
|
-
sunPosition(e,
|
|
1457
|
-
const
|
|
1458
|
-
|
|
2359
|
+
sunPosition(e, t) {
|
|
2360
|
+
const o = new M(), r = this.skyUniforms;
|
|
2361
|
+
o.setFromSphericalCoords(1, e, t), r.sunPosition.value.copy(o);
|
|
1459
2362
|
}
|
|
1460
2363
|
}
|
|
1461
|
-
const
|
|
1462
|
-
const e = new Uint8Array(4 *
|
|
1463
|
-
for (let
|
|
1464
|
-
const
|
|
1465
|
-
e[
|
|
2364
|
+
const Rt = (l) => {
|
|
2365
|
+
const e = new Uint8Array(4 * l * l);
|
|
2366
|
+
for (let o = 0; o < l * l; o++) {
|
|
2367
|
+
const r = o * 4, i = (o % l ^ Math.floor(o / l)) & 1 ? 255 : 0;
|
|
2368
|
+
e[r] = i, e[r + 1] = i, e[r + 2] = i, e[r + 3] = 255;
|
|
1466
2369
|
}
|
|
1467
|
-
const
|
|
1468
|
-
return
|
|
2370
|
+
const t = new pe(e, l, l, we, ye);
|
|
2371
|
+
return t.wrapS = W, t.wrapT = W, t.minFilter = xe, t.needsUpdate = !0, t;
|
|
1469
2372
|
};
|
|
2373
|
+
class Qt {
|
|
2374
|
+
static dispose(e) {
|
|
2375
|
+
e == null || e.traverse((t) => {
|
|
2376
|
+
t.geometry && t.geometry.dispose(), t.material && (Array.isArray(t.material) ? t.material.forEach((o) => o.dispose()) : t.material.dispose());
|
|
2377
|
+
});
|
|
2378
|
+
}
|
|
2379
|
+
static fadeBetween(e, t, o, r, i = 1) {
|
|
2380
|
+
const s = new ge(e), n = new ee(o, t);
|
|
2381
|
+
s.addPass(n);
|
|
2382
|
+
const c = new Se(Le);
|
|
2383
|
+
c.uniforms.opacity.value = 1, s.addPass(c);
|
|
2384
|
+
let a = null;
|
|
2385
|
+
function m(f) {
|
|
2386
|
+
a || (a = f);
|
|
2387
|
+
const d = (f - a) / 1e3 / i;
|
|
2388
|
+
c.uniforms.opacity.value = Math.max(1 - d, 0), d < 1 ? (s.render(), requestAnimationFrame(m)) : (s.passes[0] = new ee(r, t), a = null, requestAnimationFrame(u));
|
|
2389
|
+
}
|
|
2390
|
+
function u(f) {
|
|
2391
|
+
a || (a = f);
|
|
2392
|
+
const d = (f - a) / 1e3 / i;
|
|
2393
|
+
c.uniforms.opacity.value = Math.min(d, 1), d < 1 && (s.render(), requestAnimationFrame(u));
|
|
2394
|
+
}
|
|
2395
|
+
requestAnimationFrame(m);
|
|
2396
|
+
}
|
|
2397
|
+
}
|
|
1470
2398
|
export {
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
2399
|
+
gt as Beaker,
|
|
2400
|
+
Be as BeakerGeometry,
|
|
2401
|
+
We as BifurcatedStaircaseGeometry,
|
|
2402
|
+
ct as BoneGeometry,
|
|
2403
|
+
lt as Book,
|
|
2404
|
+
be as BookGeometry,
|
|
2405
|
+
St as Bottle,
|
|
2406
|
+
$e as Bubbling,
|
|
2407
|
+
bt as BunsenBurner,
|
|
2408
|
+
Ut as Burst,
|
|
2409
|
+
Fe as BurstShape,
|
|
2410
|
+
wt as Candle,
|
|
2411
|
+
mt as CrossHeadstone,
|
|
2412
|
+
Ge as CrossHeadstoneGeometry,
|
|
2413
|
+
Zt as DaySkybox,
|
|
2414
|
+
pt as Desk,
|
|
2415
|
+
et as DioramaGeometry,
|
|
2416
|
+
C as Direction,
|
|
2417
|
+
Je as Easing,
|
|
2418
|
+
Gt as ElectricPanel,
|
|
2419
|
+
O as Falloff,
|
|
2420
|
+
nt as FenceColumn,
|
|
2421
|
+
It as Flask,
|
|
2422
|
+
zt as Gear,
|
|
2423
|
+
Ue as GearShape,
|
|
2424
|
+
_t as Heart,
|
|
2425
|
+
ze as HeartShape,
|
|
2426
|
+
tt as LShapedStaircaseGeometry,
|
|
2427
|
+
yt as Lantern,
|
|
2428
|
+
Pt as LeverPanel,
|
|
2429
|
+
ut as Mausoleum,
|
|
2430
|
+
At as Microscope,
|
|
2431
|
+
it as Moon,
|
|
2432
|
+
kt as MortarAndPestle,
|
|
2433
|
+
Ee as MortarGeometry,
|
|
2434
|
+
xt as MossyRocks,
|
|
2435
|
+
Dt as NightSkybox,
|
|
2436
|
+
ft as ObeliskHeadstone,
|
|
2437
|
+
Ie as ObeliskHeadstoneGeometry,
|
|
2438
|
+
Mt as Rock,
|
|
2439
|
+
Te as RockGeometry,
|
|
2440
|
+
vt as Rocks,
|
|
2441
|
+
ht as RoundedHeadstone,
|
|
2442
|
+
Pe as RoundedHeadstoneGeometry,
|
|
2443
|
+
Qt as SceneUtils,
|
|
2444
|
+
rt as SimpleLeafGeometry,
|
|
2445
|
+
ot as SpiralStaircaseGeometry,
|
|
2446
|
+
Tt as SpiralTube,
|
|
2447
|
+
dt as SquareHeadstone,
|
|
2448
|
+
Ae as SquareHeadstoneGeometry,
|
|
2449
|
+
st as StaircaseGeometry,
|
|
2450
|
+
Bt as Stand,
|
|
2451
|
+
Lt as Star,
|
|
2452
|
+
_e as StarShape,
|
|
2453
|
+
Et as TeslaCoil,
|
|
2454
|
+
Nt as TestTube,
|
|
2455
|
+
R as TestTubeGeometry,
|
|
2456
|
+
Ct as TestTubeRack,
|
|
2457
|
+
qt as Tree,
|
|
2458
|
+
Ce as TreeGeometry,
|
|
2459
|
+
Ht as TwilightSkybox,
|
|
2460
|
+
Ft as WineBottle,
|
|
2461
|
+
Ne as WineBottleGeometry,
|
|
2462
|
+
at as WroughtIronBarGeometry,
|
|
2463
|
+
Xt as addNoiseDisplacement,
|
|
2464
|
+
Ot as addWaterDisplacement,
|
|
2465
|
+
Rt as checkerboardTexture,
|
|
2466
|
+
te as daySkyShader,
|
|
2467
|
+
De as displacementBrush,
|
|
2468
|
+
Le as fadeShader,
|
|
2469
|
+
He as flattenBrush,
|
|
2470
|
+
H as nightSkyShader,
|
|
2471
|
+
Re as noiseBrush,
|
|
2472
|
+
ke as randomTransformVertices,
|
|
2473
|
+
Qe as smoothBrush,
|
|
2474
|
+
je as spikeBrush,
|
|
2475
|
+
Ke as twistBrush,
|
|
2476
|
+
Yt as updateNoiseDisplacementTime,
|
|
2477
|
+
Vt as updateWaterDisplacementTime
|
|
1526
2478
|
};
|
|
1527
2479
|
//# sourceMappingURL=index.es.js.map
|