@needle-tools/gltf-progressive 1.0.0-alpha.6 → 1.0.0-alpha.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/CHANGELOG.md +4 -0
- package/gltf-progressive.js +162 -166
- package/gltf-progressive.min.js +3 -3
- package/gltf-progressive.umd.cjs +3 -3
- package/lib/extension.js +0 -1
- package/lib/index.js +0 -1
- package/lib/loaders.js +0 -1
- package/lib/lods_manager.js +0 -1
- package/lib/plugins/index.js +0 -1
- package/lib/plugins/modelviewer.js +12 -4
- package/lib/plugins/plugin.js +0 -1
- package/lib/utils.js +0 -1
- package/package.json +1 -1
- package/lib/extension.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/loaders.js.map +0 -1
- package/lib/lods_manager.js.map +0 -1
- package/lib/plugins/index.js.map +0 -1
- package/lib/plugins/modelviewer.js.map +0 -1
- package/lib/plugins/plugin.js.map +0 -1
- package/lib/utils.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,10 @@ All notable changes to this package will be documented in this file.
|
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [1.0.0-alpha.7] - 2023-05-01
|
|
8
|
+
- fix: Handle modelviewer `src` set as property but not as attribute
|
|
9
|
+
- change: Remove sourcemap
|
|
10
|
+
|
|
7
11
|
## [1.0.0-alpha.6] - 2023-05-01
|
|
8
12
|
- fix: LOD mesh assignment for multi-material meshes (meshes with multiple primitives)
|
|
9
13
|
|
package/gltf-progressive.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
var
|
|
2
|
-
var ae = (l, e, t) => e in l ?
|
|
1
|
+
var oe = Object.defineProperty;
|
|
2
|
+
var ae = (l, e, t) => e in l ? oe(l, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[e] = t;
|
|
3
3
|
var u = (l, e, t) => (ae(l, typeof e != "symbol" ? e + "" : e, t), t);
|
|
4
|
-
import { Mesh as Y, BufferGeometry as
|
|
4
|
+
import { Mesh as Y, BufferGeometry as q, Material as le, RawShaderMaterial as ue, Texture as G, TextureLoader as ce, Matrix4 as Z, Frustum as fe, Sphere as de, Box3 as j, Vector3 as C } from "three";
|
|
5
5
|
import { GLTFLoader as ge } from "three/examples/jsm/loaders/GLTFLoader.js";
|
|
6
6
|
import { MeshoptDecoder as he } from "three/examples/jsm/libs/meshopt_decoder.module.js";
|
|
7
7
|
import { DRACOLoader as pe } from "three/examples/jsm/loaders/DRACOLoader.js";
|
|
8
8
|
import { KTX2Loader as ye } from "three/examples/jsm/loaders/KTX2Loader.js";
|
|
9
9
|
const Le = "https://www.gstatic.com/draco/versioned/decoders/1.4.1/", De = "https://www.gstatic.com/basis-universal/versioned/2021-04-15-ba1c3e4/";
|
|
10
|
-
let
|
|
10
|
+
let z, V, W;
|
|
11
11
|
function se(l) {
|
|
12
|
-
|
|
12
|
+
z || (z = new pe(), z.setDecoderPath(Le), z.setDecoderConfig({ type: "js" })), W || (W = new ye(), W.setTranscoderPath(De)), V || (V = he), l ? W.detectSupport(l) : console.warn("No renderer provided to detect ktx2 support - loading KTX2 textures will probably fail");
|
|
13
13
|
}
|
|
14
14
|
function ie(l) {
|
|
15
|
-
l.dracoLoader || l.setDRACOLoader(
|
|
15
|
+
l.dracoLoader || l.setDRACOLoader(z), l.ktx2Loader || l.setKTX2Loader(W), l.meshoptDecoder || l.setMeshoptDecoder(V);
|
|
16
16
|
}
|
|
17
17
|
function Q(l) {
|
|
18
18
|
const t = new URL(window.location.href).searchParams.get(l);
|
|
@@ -34,25 +34,25 @@ const H = new Array();
|
|
|
34
34
|
function ke(l) {
|
|
35
35
|
H.push(l);
|
|
36
36
|
}
|
|
37
|
-
const R = "NEEDLE_progressive", S = Q("debugprogressive"),
|
|
37
|
+
const R = "NEEDLE_progressive", S = Q("debugprogressive"), N = Symbol("needle-progressive-texture"), I = /* @__PURE__ */ new Map(), J = /* @__PURE__ */ new Set();
|
|
38
38
|
if (S) {
|
|
39
39
|
let l = function() {
|
|
40
|
-
e += 1, console.log("Toggle LOD level", e,
|
|
40
|
+
e += 1, console.log("Toggle LOD level", e, I), I.forEach((i, n) => {
|
|
41
41
|
for (const s of i.keys) {
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
44
|
-
const a =
|
|
45
|
-
|
|
46
|
-
} else if (
|
|
47
|
-
|
|
42
|
+
const o = n[s];
|
|
43
|
+
if (o.isBufferGeometry === !0) {
|
|
44
|
+
const a = v.getMeshLODInformation(o), g = a ? Math.min(e, a.lods.length) : 0;
|
|
45
|
+
n["DEBUG:LOD"] = e, v.assignMeshLOD(n, g), a && (t = Math.max(t, a.lods.length - 1));
|
|
46
|
+
} else if (n.isMaterial === !0) {
|
|
47
|
+
n["DEBUG:LOD"] = e, v.assignTextureLOD(n, e);
|
|
48
48
|
break;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}), e >= t && (e = -1);
|
|
52
52
|
}, e = -1, t = 2, r = !1;
|
|
53
53
|
window.addEventListener("keyup", (i) => {
|
|
54
|
-
i.key === "p" && l(), i.key === "w" && (r = !r, J && J.forEach((
|
|
55
|
-
|
|
54
|
+
i.key === "p" && l(), i.key === "w" && (r = !r, J && J.forEach((n) => {
|
|
55
|
+
n.name != "BackgroundCubeMaterial" && "wireframe" in n && (n.wireframe = r);
|
|
56
56
|
}));
|
|
57
57
|
});
|
|
58
58
|
}
|
|
@@ -60,11 +60,11 @@ function ee(l, e, t) {
|
|
|
60
60
|
var i;
|
|
61
61
|
if (!S)
|
|
62
62
|
return;
|
|
63
|
-
|
|
64
|
-
const r =
|
|
63
|
+
I.has(l) || I.set(l, { keys: [], sourceId: t });
|
|
64
|
+
const r = I.get(l);
|
|
65
65
|
((i = r == null ? void 0 : r.keys) == null ? void 0 : i.includes(e)) == !1 && r.keys.push(e);
|
|
66
66
|
}
|
|
67
|
-
const
|
|
67
|
+
const M = class {
|
|
68
68
|
constructor(e, t) {
|
|
69
69
|
u(this, "parser");
|
|
70
70
|
u(this, "url");
|
|
@@ -84,11 +84,11 @@ const v = class {
|
|
|
84
84
|
* @returns true if the LOD level is available (or if any LOD level is available if level is undefined)
|
|
85
85
|
*/
|
|
86
86
|
static hasLODLevelAvailable(e, t) {
|
|
87
|
-
var
|
|
87
|
+
var n;
|
|
88
88
|
if (e.isMaterial === !0) {
|
|
89
89
|
for (const s of Object.keys(e)) {
|
|
90
|
-
const
|
|
91
|
-
if (
|
|
90
|
+
const o = e[s];
|
|
91
|
+
if (o.isTexture && this.hasLODLevelAvailable(o, t))
|
|
92
92
|
return !0;
|
|
93
93
|
}
|
|
94
94
|
return !1;
|
|
@@ -98,7 +98,7 @@ const v = class {
|
|
|
98
98
|
return !0;
|
|
99
99
|
}
|
|
100
100
|
let r, i;
|
|
101
|
-
if (e.isMesh ? r = e.geometry : (e.isBufferGeometry || e.isTexture) && (r = e), r && (
|
|
101
|
+
if (e.isMesh ? r = e.geometry : (e.isBufferGeometry || e.isTexture) && (r = e), r && (n = r == null ? void 0 : r.userData) != null && n.LODS) {
|
|
102
102
|
const s = r.userData.LODS;
|
|
103
103
|
if (i = this.lodInfos.get(s.key), t === void 0)
|
|
104
104
|
return i != null;
|
|
@@ -126,18 +126,18 @@ const v = class {
|
|
|
126
126
|
if (!e)
|
|
127
127
|
return Promise.resolve(null);
|
|
128
128
|
if (e instanceof Y || e.isMesh === !0) {
|
|
129
|
-
const i = e.geometry,
|
|
130
|
-
if (!
|
|
129
|
+
const i = e.geometry, n = this.getAssignedLODInformation(i);
|
|
130
|
+
if (!n)
|
|
131
131
|
return Promise.resolve(null);
|
|
132
132
|
for (const s of H)
|
|
133
133
|
(r = s.onBeforeGetLODMesh) == null || r.call(s, e, t);
|
|
134
|
-
return e["LOD:requested level"] = t,
|
|
134
|
+
return e["LOD:requested level"] = t, M.getOrLoadLOD(i, t).then((s) => {
|
|
135
135
|
if (e["LOD:requested level"] === t) {
|
|
136
136
|
if (delete e["LOD:requested level"], Array.isArray(s)) {
|
|
137
|
-
const
|
|
138
|
-
s = s[
|
|
137
|
+
const o = n.index || 0;
|
|
138
|
+
s = s[o];
|
|
139
139
|
}
|
|
140
|
-
s && i != s && s instanceof
|
|
140
|
+
s && i != s && s instanceof q && (e.geometry = s, S && ee(e, "geometry", n.url));
|
|
141
141
|
}
|
|
142
142
|
return s;
|
|
143
143
|
}).catch((s) => (console.error("Error loading mesh LOD", e, s), null));
|
|
@@ -156,97 +156,97 @@ const v = class {
|
|
|
156
156
|
if (!e)
|
|
157
157
|
return Promise.resolve(null);
|
|
158
158
|
if (e instanceof le || e.isMaterial === !0) {
|
|
159
|
-
const r = e, i = [],
|
|
159
|
+
const r = e, i = [], n = new Array();
|
|
160
160
|
if (S && J.add(r), r instanceof ue)
|
|
161
161
|
for (const s of Object.keys(r.uniforms)) {
|
|
162
|
-
const
|
|
163
|
-
if ((
|
|
164
|
-
const a = this.assignTextureLODForSlot(
|
|
165
|
-
i.push(a),
|
|
162
|
+
const o = r.uniforms[s].value;
|
|
163
|
+
if ((o == null ? void 0 : o.isTexture) === !0) {
|
|
164
|
+
const a = this.assignTextureLODForSlot(o, t, r, s);
|
|
165
|
+
i.push(a), n.push(s);
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
168
|
else
|
|
169
169
|
for (const s of Object.keys(r)) {
|
|
170
|
-
const
|
|
171
|
-
if ((
|
|
172
|
-
const a = this.assignTextureLODForSlot(
|
|
173
|
-
i.push(a),
|
|
170
|
+
const o = r[s];
|
|
171
|
+
if ((o == null ? void 0 : o.isTexture) === !0) {
|
|
172
|
+
const a = this.assignTextureLODForSlot(o, t, r, s);
|
|
173
|
+
i.push(a), n.push(s);
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
176
|
return Promise.all(i).then((s) => {
|
|
177
|
-
const
|
|
177
|
+
const o = new Array();
|
|
178
178
|
for (let a = 0; a < s.length; a++) {
|
|
179
|
-
const g = s[a], f =
|
|
180
|
-
g && g.isTexture === !0 ?
|
|
179
|
+
const g = s[a], f = n[a];
|
|
180
|
+
g && g.isTexture === !0 ? o.push({ material: r, slot: f, texture: g, level: t }) : o.push({ material: r, slot: f, texture: null, level: t });
|
|
181
181
|
}
|
|
182
|
-
return
|
|
182
|
+
return o;
|
|
183
183
|
});
|
|
184
184
|
}
|
|
185
|
-
if (e instanceof
|
|
185
|
+
if (e instanceof G || e.isTexture === !0) {
|
|
186
186
|
const r = e;
|
|
187
187
|
return this.assignTextureLODForSlot(r, t, null, null);
|
|
188
188
|
}
|
|
189
189
|
return Promise.resolve(null);
|
|
190
190
|
}
|
|
191
191
|
static assignTextureLODForSlot(e, t, r, i) {
|
|
192
|
-
return (e == null ? void 0 : e.isTexture) !== !0 ? Promise.resolve(null) :
|
|
193
|
-
if (Array.isArray(
|
|
192
|
+
return (e == null ? void 0 : e.isTexture) !== !0 ? Promise.resolve(null) : M.getOrLoadLOD(e, t).then((n) => {
|
|
193
|
+
if (Array.isArray(n))
|
|
194
194
|
return null;
|
|
195
|
-
if ((
|
|
196
|
-
if (
|
|
195
|
+
if ((n == null ? void 0 : n.isTexture) === !0) {
|
|
196
|
+
if (n != e && (r && i && (r[i] = n), S && i && r)) {
|
|
197
197
|
const s = this.getAssignedLODInformation(e);
|
|
198
198
|
s && ee(r, i, s.url);
|
|
199
199
|
}
|
|
200
|
-
return
|
|
200
|
+
return n;
|
|
201
201
|
} else
|
|
202
202
|
S == "verbose" && console.warn("No LOD found for", e, t);
|
|
203
203
|
return null;
|
|
204
|
-
}).catch((
|
|
204
|
+
}).catch((n) => (console.error("Error loading LOD", e, n), null));
|
|
205
205
|
}
|
|
206
206
|
afterRoot(e) {
|
|
207
207
|
var t, r;
|
|
208
|
-
return S && console.log("AFTER", this.url, e), (t = this.parser.json.textures) == null || t.forEach((i,
|
|
208
|
+
return S && console.log("AFTER", this.url, e), (t = this.parser.json.textures) == null || t.forEach((i, n) => {
|
|
209
209
|
if (i != null && i.extensions) {
|
|
210
210
|
const s = i == null ? void 0 : i.extensions[R];
|
|
211
211
|
if (s) {
|
|
212
|
-
let
|
|
212
|
+
let o = !1;
|
|
213
213
|
for (const a of this.parser.associations.keys())
|
|
214
|
-
a.isTexture === !0 && this.parser.associations.get(a).textures ===
|
|
215
|
-
|
|
216
|
-
a &&
|
|
214
|
+
a.isTexture === !0 && this.parser.associations.get(a).textures === n && (o = !0, M.registerTexture(this.url, a, n, s));
|
|
215
|
+
o || this.parser.getDependency("texture", n).then((a) => {
|
|
216
|
+
a && M.registerTexture(this.url, a, n, s);
|
|
217
217
|
});
|
|
218
218
|
}
|
|
219
219
|
}
|
|
220
|
-
}), (r = this.parser.json.meshes) == null || r.forEach((i,
|
|
220
|
+
}), (r = this.parser.json.meshes) == null || r.forEach((i, n) => {
|
|
221
221
|
if (i != null && i.extensions) {
|
|
222
222
|
const s = i == null ? void 0 : i.extensions[R];
|
|
223
223
|
if (s && s.lods) {
|
|
224
|
-
for (const
|
|
225
|
-
if (
|
|
226
|
-
const a = this.parser.associations.get(
|
|
227
|
-
a.meshes ===
|
|
224
|
+
for (const o of this.parser.associations.keys())
|
|
225
|
+
if (o.isMesh) {
|
|
226
|
+
const a = this.parser.associations.get(o);
|
|
227
|
+
a.meshes === n && M.registerMesh(this.url, s.guid, o, s.lods.length, a.primitives, s);
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
}), null;
|
|
232
232
|
}
|
|
233
233
|
static async getOrLoadLOD(e, t) {
|
|
234
|
-
var
|
|
234
|
+
var o, a, g;
|
|
235
235
|
const r = S == "verbose", i = e.userData.LODS;
|
|
236
236
|
if (!i)
|
|
237
237
|
return null;
|
|
238
|
-
const
|
|
238
|
+
const n = i == null ? void 0 : i.key;
|
|
239
239
|
let s;
|
|
240
240
|
if (e.isTexture === !0) {
|
|
241
241
|
const f = e;
|
|
242
|
-
f.source && f.source[
|
|
242
|
+
f.source && f.source[N] && (s = f.source[N]);
|
|
243
243
|
}
|
|
244
|
-
if (s || (s =
|
|
244
|
+
if (s || (s = M.lodInfos.get(n)), s) {
|
|
245
245
|
if (t > 0) {
|
|
246
246
|
let d = !1;
|
|
247
247
|
const w = Array.isArray(s.lods);
|
|
248
248
|
if (w && t >= s.lods.length ? d = !0 : w || (d = !0), d)
|
|
249
|
-
return this.lowresCache.get(
|
|
249
|
+
return this.lowresCache.get(n);
|
|
250
250
|
}
|
|
251
251
|
const f = Array.isArray(s.lods) ? s.lods[t].path : s.lods;
|
|
252
252
|
if (!f)
|
|
@@ -258,20 +258,20 @@ const v = class {
|
|
|
258
258
|
const d = L + "_" + s.guid, w = this.previouslyLoaded.get(d);
|
|
259
259
|
if (w !== void 0) {
|
|
260
260
|
r && console.log(`LOD ${t} was already loading/loaded: ${d}`);
|
|
261
|
-
let m = await w.catch((
|
|
262
|
-
`,
|
|
263
|
-
if (m == null || (m instanceof
|
|
261
|
+
let m = await w.catch((E) => (console.error(`Error loading LOD ${t} from ${L}
|
|
262
|
+
`, E), null)), B = !1;
|
|
263
|
+
if (m == null || (m instanceof G && e instanceof G ? (o = m.image) != null && o.data || (a = m.source) != null && a.data ? m = this.copySettings(e, m) : (B = !0, this.previouslyLoaded.delete(d)) : m instanceof q && e instanceof q && ((g = m.attributes.position) != null && g.array || (B = !0, this.previouslyLoaded.delete(d)))), !B)
|
|
264
264
|
return m;
|
|
265
265
|
}
|
|
266
|
-
const D = s,
|
|
267
|
-
const
|
|
268
|
-
ie(
|
|
266
|
+
const D = s, b = new Promise(async (m, B) => {
|
|
267
|
+
const E = new ge();
|
|
268
|
+
ie(E), S && (await new Promise((p) => setTimeout(p, 1e3)), r && console.warn("Start loading (delayed) " + L, D.guid));
|
|
269
269
|
let y = L;
|
|
270
270
|
if (D && Array.isArray(D.lods)) {
|
|
271
271
|
const p = D.lods[t];
|
|
272
272
|
p.hash && (y += "?v=" + p.hash);
|
|
273
273
|
}
|
|
274
|
-
const h = await
|
|
274
|
+
const h = await E.loadAsync(y).catch((p) => (console.error(`Error loading LOD ${t} from ${L}
|
|
275
275
|
`, p), null));
|
|
276
276
|
if (!h)
|
|
277
277
|
return null;
|
|
@@ -292,7 +292,7 @@ const v = class {
|
|
|
292
292
|
}
|
|
293
293
|
if (p) {
|
|
294
294
|
let c = await T.getDependency("texture", x);
|
|
295
|
-
return r && console.log('change "' + e.name + '" → "' + c.name + '"', L, x, c, d), e instanceof
|
|
295
|
+
return r && console.log('change "' + e.name + '" → "' + c.name + '"', L, x, c, d), e instanceof G && (c = this.copySettings(e, c)), c && (c.guid = D.guid), m(c);
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
298
|
if (x = 0, h.parser.json.meshes) {
|
|
@@ -310,39 +310,39 @@ const v = class {
|
|
|
310
310
|
if (p) {
|
|
311
311
|
const c = await T.getDependency("mesh", x), O = D;
|
|
312
312
|
if (r && console.log(`Loaded Mesh "${c.name}"`, L, x, c, d), c.isMesh === !0) {
|
|
313
|
-
const
|
|
314
|
-
return
|
|
313
|
+
const P = c.geometry;
|
|
314
|
+
return M.assignLODInformation(i.url, P, n, t, void 0, O.density), m(P);
|
|
315
315
|
} else {
|
|
316
|
-
const
|
|
316
|
+
const P = new Array();
|
|
317
317
|
for (let _ = 0; _ < c.children.length; _++) {
|
|
318
|
-
const
|
|
319
|
-
if (
|
|
320
|
-
const $ =
|
|
321
|
-
|
|
318
|
+
const U = c.children[_];
|
|
319
|
+
if (U instanceof Y) {
|
|
320
|
+
const $ = U.geometry;
|
|
321
|
+
M.assignLODInformation(i.url, $, n, t, _, O.density), P.push($);
|
|
322
322
|
}
|
|
323
323
|
}
|
|
324
|
-
return m(
|
|
324
|
+
return m(P);
|
|
325
325
|
}
|
|
326
326
|
}
|
|
327
327
|
}
|
|
328
328
|
return m(null);
|
|
329
329
|
});
|
|
330
|
-
return this.previouslyLoaded.set(d,
|
|
331
|
-
} else if (e instanceof
|
|
330
|
+
return this.previouslyLoaded.set(d, b), await b;
|
|
331
|
+
} else if (e instanceof G) {
|
|
332
332
|
r && console.log("Load texture from uri: " + L);
|
|
333
333
|
const w = await new ce().loadAsync(L);
|
|
334
334
|
return w ? (w.guid = s.guid, w.flipY = !1, w.needsUpdate = !0, w.colorSpace = e.colorSpace, r && console.log(s, w)) : S && console.warn("failed loading", L), w;
|
|
335
335
|
}
|
|
336
336
|
} else
|
|
337
|
-
S && console.warn(`Can not load LOD ${t}: no LOD info found for "${
|
|
337
|
+
S && console.warn(`Can not load LOD ${t}: no LOD info found for "${n}" ${e.name}`, e.type);
|
|
338
338
|
return null;
|
|
339
339
|
}
|
|
340
|
-
static assignLODInformation(e, t, r, i,
|
|
340
|
+
static assignLODInformation(e, t, r, i, n, s) {
|
|
341
341
|
if (!t)
|
|
342
342
|
return;
|
|
343
343
|
t.userData || (t.userData = {});
|
|
344
|
-
const
|
|
345
|
-
t.userData.LODS =
|
|
344
|
+
const o = new xe(e, r, i, n, s);
|
|
345
|
+
t.userData.LODS = o, t.userData.LOD = i;
|
|
346
346
|
}
|
|
347
347
|
static getAssignedLODInformation(e) {
|
|
348
348
|
var t;
|
|
@@ -353,32 +353,32 @@ const v = class {
|
|
|
353
353
|
return r || (t = t.clone(), this._copiedTextures.set(e, t), t.offset = e.offset, t.repeat = e.repeat, t.colorSpace = e.colorSpace, t);
|
|
354
354
|
}
|
|
355
355
|
};
|
|
356
|
-
let
|
|
356
|
+
let v = M;
|
|
357
357
|
/**
|
|
358
358
|
* Register a texture with LOD information
|
|
359
359
|
*/
|
|
360
|
-
u(
|
|
361
|
-
S && console.log("> Progressive: register texture", r, t.name, t.uuid, t, i), t.source && (t.source[
|
|
362
|
-
const
|
|
363
|
-
|
|
360
|
+
u(v, "registerTexture", (e, t, r, i) => {
|
|
361
|
+
S && console.log("> Progressive: register texture", r, t.name, t.uuid, t, i), t.source && (t.source[N] = i);
|
|
362
|
+
const n = i.guid;
|
|
363
|
+
M.assignLODInformation(e, t, n, 0, 0, void 0), M.lodInfos.set(n, i), M.lowresCache.set(n, t);
|
|
364
364
|
}), /**
|
|
365
365
|
* Register a mesh with LOD information
|
|
366
366
|
*/
|
|
367
|
-
u(
|
|
367
|
+
u(v, "registerMesh", (e, t, r, i, n, s) => {
|
|
368
368
|
var g;
|
|
369
|
-
S && console.log("> Progressive: register mesh",
|
|
370
|
-
const
|
|
371
|
-
|
|
372
|
-
let a =
|
|
373
|
-
a ? a.push(r.geometry) : a = [r.geometry],
|
|
369
|
+
S && console.log("> Progressive: register mesh", n, r.name, s, r.uuid, r);
|
|
370
|
+
const o = r.geometry;
|
|
371
|
+
o.userData || (o.userData = {}), M.assignLODInformation(e, o, t, i, n, s.density), M.lodInfos.set(t, s);
|
|
372
|
+
let a = M.lowresCache.get(t);
|
|
373
|
+
a ? a.push(r.geometry) : a = [r.geometry], M.lowresCache.set(t, a);
|
|
374
374
|
for (const f of H)
|
|
375
375
|
(g = f.onRegisteredNewMesh) == null || g.call(f, r, s);
|
|
376
376
|
}), /** A map of key = asset uuid and value = LOD information */
|
|
377
|
-
u(
|
|
378
|
-
u(
|
|
379
|
-
u(
|
|
377
|
+
u(v, "lodInfos", /* @__PURE__ */ new Map()), /** cache of already loaded mesh lods */
|
|
378
|
+
u(v, "previouslyLoaded", /* @__PURE__ */ new Map()), /** this contains the geometry/textures that were originally loaded */
|
|
379
|
+
u(v, "lowresCache", /* @__PURE__ */ new Map()), u(v, "_copiedTextures", /* @__PURE__ */ new Map());
|
|
380
380
|
class xe {
|
|
381
|
-
constructor(e, t, r, i,
|
|
381
|
+
constructor(e, t, r, i, n) {
|
|
382
382
|
u(this, "url");
|
|
383
383
|
/** the key to lookup the LOD information */
|
|
384
384
|
u(this, "key");
|
|
@@ -387,10 +387,10 @@ class xe {
|
|
|
387
387
|
u(this, "index");
|
|
388
388
|
/** the mesh density */
|
|
389
389
|
u(this, "density");
|
|
390
|
-
this.url = e, this.key = t, this.level = r, i != null && (this.index = i),
|
|
390
|
+
this.url = e, this.key = t, this.level = r, i != null && (this.index = i), n != null && (this.density = n);
|
|
391
391
|
}
|
|
392
392
|
}
|
|
393
|
-
const te = Q("debugprogressive"), we = Q("noprogressive"),
|
|
393
|
+
const te = Q("debugprogressive"), we = Q("noprogressive"), A = class {
|
|
394
394
|
constructor(e) {
|
|
395
395
|
u(this, "renderer");
|
|
396
396
|
u(this, "projectionScreenMatrix", new Z());
|
|
@@ -429,9 +429,9 @@ const te = Q("debugprogressive"), we = Q("noprogressive"), P = class {
|
|
|
429
429
|
this._originalRender = this.renderer.render;
|
|
430
430
|
const t = this;
|
|
431
431
|
let r = 0;
|
|
432
|
-
se(this.renderer), this.renderer.render = function(i,
|
|
433
|
-
const s = r++,
|
|
434
|
-
t.onBeforeRender(i,
|
|
432
|
+
se(this.renderer), this.renderer.render = function(i, n) {
|
|
433
|
+
const s = r++, o = e++;
|
|
434
|
+
t.onBeforeRender(i, n, o, s), t._originalRender.call(this, i, n), t.onAfterRender(i, n, o, s), e--;
|
|
435
435
|
};
|
|
436
436
|
}
|
|
437
437
|
disable() {
|
|
@@ -443,10 +443,10 @@ const te = Q("debugprogressive"), we = Q("noprogressive"), P = class {
|
|
|
443
443
|
if (we || this.pause || this.updateInterval > 0 && i % this.updateInterval != 0)
|
|
444
444
|
return;
|
|
445
445
|
this.projectionScreenMatrix.multiplyMatrices(t.projectionMatrix, t.matrixWorldInverse), this.cameraFrustrum.setFromProjectionMatrix(this.projectionScreenMatrix, this.renderer.coordinateSystem);
|
|
446
|
-
const
|
|
447
|
-
for (const a of
|
|
446
|
+
const n = 1e5, o = this.renderer.renderLists.get(e, r).opaque;
|
|
447
|
+
for (const a of o) {
|
|
448
448
|
const g = a.object;
|
|
449
|
-
(g instanceof Y || g.isMesh) && this.updateLODs(e, t, g,
|
|
449
|
+
(g instanceof Y || g.isMesh) && this.updateLODs(e, t, g, n);
|
|
450
450
|
}
|
|
451
451
|
}
|
|
452
452
|
/** Update the LOD levels for the renderer. */
|
|
@@ -454,22 +454,22 @@ const te = Q("debugprogressive"), we = Q("noprogressive"), P = class {
|
|
|
454
454
|
var a, g;
|
|
455
455
|
for (const f of this.plugins)
|
|
456
456
|
(a = f.onBeforeUpdateLOD) == null || a.call(f, this.renderer, e, t, r);
|
|
457
|
-
let
|
|
458
|
-
|
|
459
|
-
let s = this.calculateLodLevel(t, r,
|
|
457
|
+
let n = r.userData.LOD_state;
|
|
458
|
+
n || (n = new Oe(), r.userData.LOD_state = n);
|
|
459
|
+
let s = this.calculateLodLevel(t, r, n, i);
|
|
460
460
|
s = Math.round(s), s >= 0 && this.loadProgressiveMeshes(r, s);
|
|
461
|
-
let
|
|
461
|
+
let o = 0;
|
|
462
462
|
if (r.material) {
|
|
463
463
|
const f = r["DEBUG:LOD"];
|
|
464
|
-
if (f != null && (
|
|
464
|
+
if (f != null && (o = f), Array.isArray(r.material))
|
|
465
465
|
for (const L of r.material)
|
|
466
|
-
this.loadProgressiveTextures(L,
|
|
466
|
+
this.loadProgressiveTextures(L, o);
|
|
467
467
|
else
|
|
468
|
-
this.loadProgressiveTextures(r.material,
|
|
468
|
+
this.loadProgressiveTextures(r.material, o);
|
|
469
469
|
}
|
|
470
470
|
for (const f of this.plugins)
|
|
471
471
|
(g = f.onAfterUpdatedLOD) == null || g.call(f, this.renderer, e, t, r, s);
|
|
472
|
-
|
|
472
|
+
n.lastLodLevel = s;
|
|
473
473
|
}
|
|
474
474
|
/** Load progressive textures for the given material
|
|
475
475
|
* @param material the material to load the textures for
|
|
@@ -477,7 +477,7 @@ const te = Q("debugprogressive"), we = Q("noprogressive"), P = class {
|
|
|
477
477
|
* @returns Promise with true if the LOD was loaded, false if not
|
|
478
478
|
*/
|
|
479
479
|
loadProgressiveTextures(e, t) {
|
|
480
|
-
return e && e.userData && e.userData.LOD !== t ? (e.userData.LOD = t,
|
|
480
|
+
return e && e.userData && e.userData.LOD !== t ? (e.userData.LOD = t, v.assignTextureLOD(e, t)) : Promise.resolve(null);
|
|
481
481
|
}
|
|
482
482
|
/** Load progressive meshes for the given mesh
|
|
483
483
|
* @param mesh the mesh to load the LOD for
|
|
@@ -491,20 +491,20 @@ const te = Q("debugprogressive"), we = Q("noprogressive"), P = class {
|
|
|
491
491
|
if (e.userData || (e.userData = {}), e.userData.LOD !== t) {
|
|
492
492
|
e.userData.LOD = t;
|
|
493
493
|
const r = e.geometry;
|
|
494
|
-
return
|
|
494
|
+
return v.assignMeshLOD(e, t).then((i) => (i && e.userData.LOD == t && r != e.geometry, i));
|
|
495
495
|
}
|
|
496
496
|
return Promise.resolve(null);
|
|
497
497
|
}
|
|
498
498
|
calculateLodLevel(e, t, r, i) {
|
|
499
|
-
var
|
|
499
|
+
var o;
|
|
500
500
|
if (!t)
|
|
501
501
|
return -1;
|
|
502
502
|
let s = 10 + 1;
|
|
503
503
|
if (e) {
|
|
504
504
|
if (te && t["DEBUG:LOD"] != null)
|
|
505
505
|
return t["DEBUG:LOD"];
|
|
506
|
-
const a =
|
|
507
|
-
if (!g || g.length <= 0 || !((
|
|
506
|
+
const a = v.getMeshLODInformation(t.geometry), g = a == null ? void 0 : a.lods;
|
|
507
|
+
if (!g || g.length <= 0 || !((o = this.cameraFrustrum) != null && o.intersectsObject(t)))
|
|
508
508
|
return 99;
|
|
509
509
|
const f = t.geometry.boundingBox;
|
|
510
510
|
if (f && e.isPerspectiveCamera) {
|
|
@@ -518,24 +518,24 @@ const te = Q("debugprogressive"), we = Q("noprogressive"), P = class {
|
|
|
518
518
|
if (this._tempBox.copy(f), this._tempBox.applyMatrix4(t.matrixWorld), this._tempBox.applyMatrix4(this.projectionScreenMatrix), this.renderer.xr.enabled && L.fov > 70) {
|
|
519
519
|
const y = this._tempBox.min, h = this._tempBox.max;
|
|
520
520
|
let T = y.x, x = y.y, p = h.x, c = h.y;
|
|
521
|
-
const O = 2,
|
|
522
|
-
T = (T - _) * O + _, x = (x -
|
|
523
|
-
const $ = T < 0 && p > 0 ? 0 : Math.min(Math.abs(y.x), Math.abs(h.x)),
|
|
524
|
-
r.lastCentrality = (
|
|
521
|
+
const O = 2, P = 1.5, _ = (y.x + h.x) * 0.5, U = (y.y + h.y) * 0.5;
|
|
522
|
+
T = (T - _) * O + _, x = (x - U) * O + U, p = (p - _) * O + _, c = (c - U) * O + U;
|
|
523
|
+
const $ = T < 0 && p > 0 ? 0 : Math.min(Math.abs(y.x), Math.abs(h.x)), ne = x < 0 && c > 0 ? 0 : Math.min(Math.abs(y.y), Math.abs(h.y)), X = Math.max($, ne);
|
|
524
|
+
r.lastCentrality = (P - X) * (P - X) * (P - X);
|
|
525
525
|
} else
|
|
526
526
|
r.lastCentrality = 1;
|
|
527
527
|
const d = this._tempBox.getSize(this._tempBoxSize);
|
|
528
528
|
d.multiplyScalar(0.5), screen.availHeight > 0 && d.multiplyScalar(this.renderer.domElement.clientHeight / screen.availHeight), d.x *= L.aspect;
|
|
529
529
|
const w = e.matrixWorldInverse, D = new j();
|
|
530
530
|
D.copy(f), D.applyMatrix4(t.matrixWorld), D.applyMatrix4(w);
|
|
531
|
-
const
|
|
532
|
-
if (Math.max(d.x, d.y) != 0 &&
|
|
531
|
+
const b = D.getSize(this._tempBox2Size), F = Math.max(b.x, b.y);
|
|
532
|
+
if (Math.max(d.x, d.y) != 0 && F != 0 && (d.z = b.z / Math.max(b.x, b.y) * Math.max(d.x, d.y)), r.lastScreenCoverage = Math.max(d.x, d.y, d.z), r.lastScreenspaceVolume.copy(d), r.lastScreenCoverage *= r.lastCentrality, te && A.debugDrawLine) {
|
|
533
533
|
const y = this.tempMatrix.copy(this.projectionScreenMatrix);
|
|
534
534
|
y.invert();
|
|
535
|
-
const h =
|
|
535
|
+
const h = A.corner0, T = A.corner1, x = A.corner2, p = A.corner3;
|
|
536
536
|
h.copy(this._tempBox.min), T.copy(this._tempBox.max), T.x = h.x, x.copy(this._tempBox.max), x.y = h.y, p.copy(this._tempBox.max);
|
|
537
537
|
const c = (h.z + p.z) * 0.5;
|
|
538
|
-
h.z = T.z = x.z = p.z = c, h.applyMatrix4(y), T.applyMatrix4(y), x.applyMatrix4(y), p.applyMatrix4(y),
|
|
538
|
+
h.z = T.z = x.z = p.z = c, h.applyMatrix4(y), T.applyMatrix4(y), x.applyMatrix4(y), p.applyMatrix4(y), A.debugDrawLine(h, T, 255), A.debugDrawLine(h, x, 255), A.debugDrawLine(T, p, 255), A.debugDrawLine(x, p, 255);
|
|
539
539
|
}
|
|
540
540
|
let B = 999;
|
|
541
541
|
if (g && r.lastScreenCoverage > 0) {
|
|
@@ -551,7 +551,7 @@ const te = Q("debugprogressive"), we = Q("noprogressive"), P = class {
|
|
|
551
551
|
return s;
|
|
552
552
|
}
|
|
553
553
|
};
|
|
554
|
-
let k =
|
|
554
|
+
let k = A;
|
|
555
555
|
/** Assign a function to draw debug lines for the LODs. This function will be called with the start and end position of the line and the color of the line when the `debugprogressive` query parameter is set.
|
|
556
556
|
*/
|
|
557
557
|
u(k, "debugDrawLine"), u(k, "corner0", new C()), u(k, "corner1", new C()), u(k, "corner2", new C()), u(k, "corner3", new C());
|
|
@@ -564,19 +564,19 @@ class Oe {
|
|
|
564
564
|
}
|
|
565
565
|
}
|
|
566
566
|
const re = Symbol("NEEDLE_mesh_lod"), K = Symbol("NEEDLE_texture_lod");
|
|
567
|
-
function
|
|
567
|
+
function Me(l) {
|
|
568
568
|
if (!l)
|
|
569
569
|
return null;
|
|
570
570
|
let e = null, t = null;
|
|
571
571
|
for (let r = l; r != null; r = Object.getPrototypeOf(r)) {
|
|
572
|
-
const i = Object.getOwnPropertySymbols(r),
|
|
573
|
-
!e &&
|
|
572
|
+
const i = Object.getOwnPropertySymbols(r), n = i.find((o) => o.toString() == "Symbol(renderer)"), s = i.find((o) => o.toString() == "Symbol(scene)");
|
|
573
|
+
!e && n != null && (e = l[n].threeRenderer), !t && s != null && (t = l[s]);
|
|
574
574
|
}
|
|
575
575
|
if (e) {
|
|
576
576
|
console.log("Adding Needle LODs to modelviewer");
|
|
577
577
|
const r = new k(e);
|
|
578
|
-
if (r.plugins.push(new
|
|
579
|
-
const i = t.camera || t.traverse((
|
|
578
|
+
if (r.plugins.push(new ve(l)), r.enable(), t) {
|
|
579
|
+
const i = t.camera || t.traverse((n) => n.type == "PerspectiveCamera")[0];
|
|
580
580
|
i && e.render(t, i);
|
|
581
581
|
}
|
|
582
582
|
return () => {
|
|
@@ -585,16 +585,18 @@ function ve(l) {
|
|
|
585
585
|
}
|
|
586
586
|
return null;
|
|
587
587
|
}
|
|
588
|
-
class
|
|
588
|
+
class ve {
|
|
589
589
|
constructor(e) {
|
|
590
590
|
u(this, "modelviewer");
|
|
591
|
+
u(this, "_didWarnAboutMissingUrl", !1);
|
|
591
592
|
this.modelviewer = e;
|
|
592
593
|
}
|
|
593
594
|
onBeforeUpdateLOD(e, t, r, i) {
|
|
594
595
|
this.tryParseMeshLOD(t, i), this.tryParseTextureLOD(t, i);
|
|
595
596
|
}
|
|
596
597
|
getUrl() {
|
|
597
|
-
|
|
598
|
+
let e = this.modelviewer.getAttribute("src");
|
|
599
|
+
return e || (e = this.modelviewer.src), e || (this._didWarnAboutMissingUrl || console.warn("No url found in modelviewer", this.modelviewer), this._didWarnAboutMissingUrl = !0), e;
|
|
598
600
|
}
|
|
599
601
|
tryGetCurrentGLTF(e) {
|
|
600
602
|
return e._currentGLTF;
|
|
@@ -604,66 +606,60 @@ class Me {
|
|
|
604
606
|
return;
|
|
605
607
|
t[K] = !0;
|
|
606
608
|
const r = this.tryGetCurrentGLTF(e), i = this.getUrl();
|
|
607
|
-
if (
|
|
608
|
-
|
|
609
|
-
return;
|
|
610
|
-
}
|
|
611
|
-
if (r && t.material) {
|
|
612
|
-
let o = function(n) {
|
|
609
|
+
if (i && r && t.material) {
|
|
610
|
+
let n = function(o) {
|
|
613
611
|
var g, f, L;
|
|
614
|
-
if (
|
|
612
|
+
if (o[K] == !0)
|
|
615
613
|
return;
|
|
616
|
-
|
|
617
|
-
const a = Object.keys(
|
|
614
|
+
o[K] = !0, o.userData && (o.userData.LOD = -1);
|
|
615
|
+
const a = Object.keys(o);
|
|
618
616
|
for (let d = 0; d < a.length; d++) {
|
|
619
|
-
const w = a[d], D =
|
|
617
|
+
const w = a[d], D = o[w];
|
|
620
618
|
if ((D == null ? void 0 : D.isTexture) === !0) {
|
|
621
|
-
const
|
|
622
|
-
if ((L =
|
|
623
|
-
const m =
|
|
624
|
-
m && i &&
|
|
619
|
+
const b = (f = (g = D.userData) == null ? void 0 : g.associations) == null ? void 0 : f.textures, F = r.parser.json.textures[b];
|
|
620
|
+
if ((L = F.extensions) != null && L[R]) {
|
|
621
|
+
const m = F.extensions[R];
|
|
622
|
+
m && i && v.registerTexture(i, D, m.lods.length, m);
|
|
625
623
|
}
|
|
626
624
|
}
|
|
627
625
|
}
|
|
628
626
|
};
|
|
629
627
|
const s = t.material;
|
|
630
628
|
if (Array.isArray(s))
|
|
631
|
-
for (const
|
|
632
|
-
o
|
|
629
|
+
for (const o of s)
|
|
630
|
+
n(o);
|
|
633
631
|
else
|
|
634
|
-
|
|
632
|
+
n(s);
|
|
635
633
|
}
|
|
636
634
|
}
|
|
637
635
|
tryParseMeshLOD(e, t) {
|
|
638
|
-
var
|
|
636
|
+
var n, s;
|
|
639
637
|
if (t[re] == !0)
|
|
640
638
|
return;
|
|
641
639
|
t[re] = !0;
|
|
642
640
|
const r = this.getUrl();
|
|
643
|
-
if (!r)
|
|
644
|
-
console.error("No url found in modelviewer");
|
|
641
|
+
if (!r)
|
|
645
642
|
return;
|
|
646
|
-
|
|
647
|
-
const i = (s = (o = t.userData) == null ? void 0 : o.gltfExtensions) == null ? void 0 : s[R];
|
|
643
|
+
const i = (s = (n = t.userData) == null ? void 0 : n.gltfExtensions) == null ? void 0 : s[R];
|
|
648
644
|
if (i && r) {
|
|
649
|
-
const
|
|
650
|
-
|
|
645
|
+
const o = t.uuid;
|
|
646
|
+
v.registerMesh(r, o, t, 0, i.lods.length, i);
|
|
651
647
|
}
|
|
652
648
|
}
|
|
653
649
|
}
|
|
654
650
|
function Be(l, e, t, r) {
|
|
655
|
-
se(e), ie(t), t.register((
|
|
651
|
+
se(e), ie(t), t.register((n) => new v(n, l));
|
|
656
652
|
const i = new k(e);
|
|
657
653
|
return (r == null ? void 0 : r.enableLODsManager) !== !1 && i.enable(), i;
|
|
658
654
|
}
|
|
659
655
|
document.addEventListener("DOMContentLoaded", () => {
|
|
660
|
-
|
|
656
|
+
Me(document.querySelector("model-viewer"));
|
|
661
657
|
});
|
|
662
658
|
export {
|
|
663
659
|
R as EXTENSION_NAME,
|
|
664
660
|
k as LODsManager,
|
|
665
|
-
|
|
666
|
-
|
|
661
|
+
v as NEEDLE_progressive,
|
|
662
|
+
Me as patchModelViewer,
|
|
667
663
|
ke as registerPlugin,
|
|
668
664
|
Be as useNeedleProgressive
|
|
669
665
|
};
|
package/gltf-progressive.min.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var se=Object.defineProperty,
|
|
2
|
-
`,p),null)),f=!1;if(m==null||(m instanceof C&&r instanceof C?(t=m.image)!=null&&t.data||(
|
|
3
|
-
`,
|
|
1
|
+
var se=Object.defineProperty,oe=(r,e,t)=>e in r?se(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,u=(r,e,t)=>(oe(r,typeof e!="symbol"?e+"":e,t),t);import{Mesh as F,BufferGeometry as N,Material as ne,RawShaderMaterial as ie,Texture as C,TextureLoader as ae,Matrix4 as K,Frustum as le,Sphere as ue,Box3 as Y,Vector3 as E}from"three";import{GLTFLoader as ce}from"three/examples/jsm/loaders/GLTFLoader.js";import{MeshoptDecoder as de}from"three/examples/jsm/libs/meshopt_decoder.module.js";import{DRACOLoader as he}from"three/examples/jsm/loaders/DRACOLoader.js";import{KTX2Loader as fe}from"three/examples/jsm/loaders/KTX2Loader.js";const ge="https://www.gstatic.com/draco/versioned/decoders/1.4.1/",pe="https://www.gstatic.com/basis-universal/versioned/2021-04-15-ba1c3e4/";let R,$,U;function J(r){R||(R=new he,R.setDecoderPath(ge),R.setDecoderConfig({type:"js"})),U||(U=new fe,U.setTranscoderPath(pe)),$||($=de),r?U.detectSupport(r):console.warn("No renderer provided to detect ktx2 support - loading KTX2 textures will probably fail")}function Q(r){r.dracoLoader||r.setDRACOLoader(R),r.ktx2Loader||r.setKTX2Loader(U),r.meshoptDecoder||r.setMeshoptDecoder($)}function q(r){const e=new URL(window.location.href).searchParams.get(r);return e==null||e==="0"||e==="false"?!1:e===""?!0:e}function me(r,e){if(e===void 0||e.startsWith("./")||e.startsWith("http")||r===void 0)return e;const t=r.lastIndexOf("/");if(t>=0){const o=r.substring(0,t+1);for(;o.endsWith("/")&&e.startsWith("/");)e=e.substring(1);return o+e}return e}const V=new Array;function ye(r){V.push(r)}const B="NEEDLE_progressive",D=q("debugprogressive"),X=Symbol("needle-progressive-texture"),W=new Map,H=new Set;if(D){let r=function(){e+=1,console.log("Toggle LOD level",e,W),W.forEach((n,s)=>{for(const a of n.keys){const i=s[a];if(i.isBufferGeometry===!0){const l=O.getMeshLODInformation(i),d=l?Math.min(e,l.lods.length):0;s["DEBUG:LOD"]=e,O.assignMeshLOD(s,d),l&&(t=Math.max(t,l.lods.length-1))}else if(s.isMaterial===!0){s["DEBUG:LOD"]=e,O.assignTextureLOD(s,e);break}}}),e>=t&&(e=-1)},e=-1,t=2,o=!1;window.addEventListener("keyup",n=>{n.key==="p"&&r(),n.key==="w"&&(o=!o,H&&H.forEach(s=>{s.name!="BackgroundCubeMaterial"&&"wireframe"in s&&(s.wireframe=o)}))})}function Z(r,e,t){var o;if(!D)return;W.has(r)||W.set(r,{keys:[],sourceId:t});const n=W.get(r);((o=n?.keys)==null?void 0:o.includes(e))==!1&&n.keys.push(e)}const L=class{constructor(r,e){u(this,"parser"),u(this,"url"),D&&console.log("Progressive extension registered for",e),this.parser=r,this.url=e}get name(){return B}static getMeshLODInformation(r){const e=this.getAssignedLODInformation(r);return e!=null&&e.key?this.lodInfos.get(e.key):null}static hasLODLevelAvailable(r,e){var t;if(r.isMaterial===!0){for(const s of Object.keys(r)){const a=r[s];if(a.isTexture&&this.hasLODLevelAvailable(a,e))return!0}return!1}else if(r.isGroup===!0){for(const s of r.children)if(s.isMesh===!0&&this.hasLODLevelAvailable(s,e))return!0}let o,n;if(r.isMesh?o=r.geometry:(r.isBufferGeometry||r.isTexture)&&(o=r),o&&(t=o?.userData)!=null&&t.LODS){const s=o.userData.LODS;if(n=this.lodInfos.get(s.key),e===void 0)return n!=null;if(n)return Array.isArray(n.lods)?e<n.lods.length:e===0}return!1}static assignMeshLOD(r,e){var t;if(!r)return Promise.resolve(null);if(r instanceof F||r.isMesh===!0){const o=r.geometry,n=this.getAssignedLODInformation(o);if(!n)return Promise.resolve(null);for(const s of V)(t=s.onBeforeGetLODMesh)==null||t.call(s,r,e);return r["LOD:requested level"]=e,L.getOrLoadLOD(o,e).then(s=>{if(r["LOD:requested level"]===e){if(delete r["LOD:requested level"],Array.isArray(s)){const a=n.index||0;s=s[a]}s&&o!=s&&s instanceof N&&(r.geometry=s,D&&Z(r,"geometry",n.url))}return s}).catch(s=>(console.error("Error loading mesh LOD",r,s),null))}else D&&console.error("Invalid call to assignMeshLOD: Request mesh LOD but the object is not a mesh",r);return Promise.resolve(null)}static assignTextureLOD(r,e=0){if(!r)return Promise.resolve(null);if(r instanceof ne||r.isMaterial===!0){const t=r,o=[],n=new Array;if(D&&H.add(t),t instanceof ie)for(const s of Object.keys(t.uniforms)){const a=t.uniforms[s].value;if(a?.isTexture===!0){const i=this.assignTextureLODForSlot(a,e,t,s);o.push(i),n.push(s)}}else for(const s of Object.keys(t)){const a=t[s];if(a?.isTexture===!0){const i=this.assignTextureLODForSlot(a,e,t,s);o.push(i),n.push(s)}}return Promise.all(o).then(s=>{const a=new Array;for(let i=0;i<s.length;i++){const l=s[i],d=n[i];l&&l.isTexture===!0?a.push({material:t,slot:d,texture:l,level:e}):a.push({material:t,slot:d,texture:null,level:e})}return a})}if(r instanceof C||r.isTexture===!0){const t=r;return this.assignTextureLODForSlot(t,e,null,null)}return Promise.resolve(null)}static assignTextureLODForSlot(r,e,t,o){return r?.isTexture!==!0?Promise.resolve(null):L.getOrLoadLOD(r,e).then(n=>{if(Array.isArray(n))return null;if(n?.isTexture===!0){if(n!=r&&(t&&o&&(t[o]=n),D&&o&&t)){const s=this.getAssignedLODInformation(r);s&&Z(t,o,s.url)}return n}else D=="verbose"&&console.warn("No LOD found for",r,e);return null}).catch(n=>(console.error("Error loading LOD",r,n),null))}afterRoot(r){var e,t;return D&&console.log("AFTER",this.url,r),(e=this.parser.json.textures)==null||e.forEach((o,n)=>{if(o!=null&&o.extensions){const s=o?.extensions[B];if(s){let a=!1;for(const i of this.parser.associations.keys())i.isTexture===!0&&this.parser.associations.get(i).textures===n&&(a=!0,L.registerTexture(this.url,i,n,s));a||this.parser.getDependency("texture",n).then(i=>{i&&L.registerTexture(this.url,i,n,s)})}}}),(t=this.parser.json.meshes)==null||t.forEach((o,n)=>{if(o!=null&&o.extensions){const s=o?.extensions[B];if(s&&s.lods){for(const a of this.parser.associations.keys())if(a.isMesh){const i=this.parser.associations.get(a);i.meshes===n&&L.registerMesh(this.url,s.guid,a,s.lods.length,i.primitives,s)}}}}),null}static async getOrLoadLOD(r,e){var t,o,n;const s=D=="verbose",a=r.userData.LODS;if(!a)return null;const i=a?.key;let l;if(r.isTexture===!0){const d=r;d.source&&d.source[X]&&(l=d.source[X])}if(l||(l=L.lodInfos.get(i)),l){if(e>0){let g=!1;const M=Array.isArray(l.lods);if(M&&e>=l.lods.length?g=!0:M||(g=!0),g)return this.lowresCache.get(i)}const d=Array.isArray(l.lods)?l.lods[e].path:l.lods;if(!d)return D&&!l["missing:uri"]&&(l["missing:uri"]=!0,console.warn("Missing uri for progressive asset for LOD "+e,l)),null;const c=me(a.url,d);if(c.endsWith(".glb")||c.endsWith(".gltf")){if(!l.guid)return console.warn("missing pointer for glb/gltf texture",l),null;const g=c+"_"+l.guid,M=this.previouslyLoaded.get(g);if(M!==void 0){s&&console.log(`LOD ${e} was already loading/loaded: ${g}`);let m=await M.catch(p=>(console.error(`Error loading LOD ${e} from ${c}
|
|
2
|
+
`,p),null)),f=!1;if(m==null||(m instanceof C&&r instanceof C?(t=m.image)!=null&&t.data||(o=m.source)!=null&&o.data?m=this.copySettings(r,m):(f=!0,this.previouslyLoaded.delete(g)):m instanceof N&&r instanceof N&&((n=m.attributes.position)!=null&&n.array||(f=!0,this.previouslyLoaded.delete(g)))),!f)return m}const y=l,P=new Promise(async(m,f)=>{const p=new ce;Q(p),D&&(await new Promise(v=>setTimeout(v,1e3)),s&&console.warn("Start loading (delayed) "+c,y.guid));let b=c;if(y&&Array.isArray(y.lods)){const v=y.lods[e];v.hash&&(b+="?v="+v.hash)}const x=await p.loadAsync(b).catch(v=>(console.error(`Error loading LOD ${e} from ${c}
|
|
3
|
+
`,v),null));if(!x)return null;const S=x.parser;s&&console.log("Loading finished "+c,y.guid);let _=0;if(x.parser.json.textures){let v=!1;for(const h of x.parser.json.textures){if(h!=null&&h.extensions){const w=h?.extensions[B];if(w!=null&&w.guid&&w.guid===y.guid){v=!0;break}}_++}if(v){let h=await S.getDependency("texture",_);return s&&console.log('change "'+r.name+'" \u2192 "'+h.name+'"',c,_,h,g),r instanceof C&&(h=this.copySettings(r,h)),h&&(h.guid=y.guid),m(h)}}if(_=0,x.parser.json.meshes){let v=!1;for(const h of x.parser.json.meshes){if(h!=null&&h.extensions){const w=h?.extensions[B];if(w!=null&&w.guid&&w.guid===y.guid){v=!0;break}}_++}if(v){const h=await S.getDependency("mesh",_),w=y;if(s&&console.log(`Loaded Mesh "${h.name}"`,c,_,h,g),h.isMesh===!0){const T=h.geometry;return L.assignLODInformation(a.url,T,i,e,void 0,w.density),m(T)}else{const T=new Array;for(let I=0;I<h.children.length;I++){const G=h.children[I];if(G instanceof F){const j=G.geometry;L.assignLODInformation(a.url,j,i,e,I,w.density),T.push(j)}}return m(T)}}}return m(null)});return this.previouslyLoaded.set(g,P),await P}else if(r instanceof C){s&&console.log("Load texture from uri: "+c);const g=await new ae().loadAsync(c);return g?(g.guid=l.guid,g.flipY=!1,g.needsUpdate=!0,g.colorSpace=r.colorSpace,s&&console.log(l,g)):D&&console.warn("failed loading",c),g}}else D&&console.warn(`Can not load LOD ${e}: no LOD info found for "${i}" ${r.name}`,r.type);return null}static assignLODInformation(r,e,t,o,n,s){if(!e)return;e.userData||(e.userData={});const a=new xe(r,t,o,n,s);e.userData.LODS=a,e.userData.LOD=o}static getAssignedLODInformation(r){var e;return((e=r?.userData)==null?void 0:e.LODS)||null}static copySettings(r,e){return this._copiedTextures.get(r)||(e=e.clone(),this._copiedTextures.set(r,e),e.offset=r.offset,e.repeat=r.repeat,e.colorSpace=r.colorSpace,e)}};let O=L;u(O,"registerTexture",(r,e,t,o)=>{D&&console.log("> Progressive: register texture",t,e.name,e.uuid,e,o),e.source&&(e.source[X]=o);const n=o.guid;L.assignLODInformation(r,e,n,0,0,void 0),L.lodInfos.set(n,o),L.lowresCache.set(n,e)}),u(O,"registerMesh",(r,e,t,o,n,s)=>{var a;D&&console.log("> Progressive: register mesh",n,t.name,s,t.uuid,t);const i=t.geometry;i.userData||(i.userData={}),L.assignLODInformation(r,i,e,o,n,s.density),L.lodInfos.set(e,s);let l=L.lowresCache.get(e);l?l.push(t.geometry):l=[t.geometry],L.lowresCache.set(e,l);for(const d of V)(a=d.onRegisteredNewMesh)==null||a.call(d,t,s)}),u(O,"lodInfos",new Map),u(O,"previouslyLoaded",new Map),u(O,"lowresCache",new Map),u(O,"_copiedTextures",new Map);class xe{constructor(e,t,o,n,s){u(this,"url"),u(this,"key"),u(this,"level"),u(this,"index"),u(this,"density"),this.url=e,this.key=t,this.level=o,n!=null&&(this.index=n),s!=null&&(this.density=s)}}const ee=q("debugprogressive"),ve=q("noprogressive"),A=class{constructor(r){u(this,"renderer"),u(this,"projectionScreenMatrix",new K),u(this,"cameraFrustrum",new le),u(this,"updateInterval",0),u(this,"pause",!1),u(this,"plugins",[]),u(this,"_originalRender"),u(this,"_sphere",new ue),u(this,"_tempBox",new Y),u(this,"tempMatrix",new K),u(this,"_tempWorldPosition",new E),u(this,"_tempBoxSize",new E),u(this,"_tempBox2Size",new E),this.renderer=r}static getObjectLODState(r){var e;return(e=r.userData)==null?void 0:e.LOD_state}enable(){if(this._originalRender)return;let r=0;this._originalRender=this.renderer.render;const e=this;let t=0;J(this.renderer),this.renderer.render=function(o,n){const s=t++,a=r++;e.onBeforeRender(o,n,a,s),e._originalRender.call(this,o,n),e.onAfterRender(o,n,a,s),r--}}disable(){this._originalRender&&(this.renderer.render=this._originalRender,this._originalRender=void 0)}onBeforeRender(r,e,t,o){}onAfterRender(r,e,t,o){if(ve||this.pause||this.updateInterval>0&&o%this.updateInterval!=0)return;this.projectionScreenMatrix.multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse),this.cameraFrustrum.setFromProjectionMatrix(this.projectionScreenMatrix,this.renderer.coordinateSystem);const n=1e5,s=this.renderer.renderLists.get(r,t).opaque;for(const a of s){const i=a.object;(i instanceof F||i.isMesh)&&this.updateLODs(r,e,i,n)}}updateLODs(r,e,t,o){var n,s;for(const d of this.plugins)(n=d.onBeforeUpdateLOD)==null||n.call(d,this.renderer,r,e,t);let a=t.userData.LOD_state;a||(a=new De,t.userData.LOD_state=a);let i=this.calculateLodLevel(e,t,a,o);i=Math.round(i),i>=0&&this.loadProgressiveMeshes(t,i);let l=0;if(t.material){const d=t["DEBUG:LOD"];if(d!=null&&(l=d),Array.isArray(t.material))for(const c of t.material)this.loadProgressiveTextures(c,l);else this.loadProgressiveTextures(t.material,l)}for(const d of this.plugins)(s=d.onAfterUpdatedLOD)==null||s.call(d,this.renderer,r,e,t,i);a.lastLodLevel=i}loadProgressiveTextures(r,e){return r&&r.userData&&r.userData.LOD!==e?(r.userData.LOD=e,O.assignTextureLOD(r,e)):Promise.resolve(null)}loadProgressiveMeshes(r,e){if(!r)return Promise.resolve(null);if(r.userData||(r.userData={}),r.userData.LOD!==e){r.userData.LOD=e;const t=r.geometry;return O.assignMeshLOD(r,e).then(o=>(o&&r.userData.LOD==e&&t!=r.geometry,o))}return Promise.resolve(null)}calculateLodLevel(r,e,t,o){var n;if(!e)return-1;let s=10+1;if(r){if(ee&&e["DEBUG:LOD"]!=null)return e["DEBUG:LOD"];const a=O.getMeshLODInformation(e.geometry),i=a?.lods;if(!i||i.length<=0||!((n=this.cameraFrustrum)!=null&&n.intersectsObject(e)))return 99;const l=e.geometry.boundingBox;if(l&&r.isPerspectiveCamera){const d=r;if(e.geometry.attributes.color&&e.geometry.attributes.color.count<100&&e.geometry.boundingSphere){this._sphere.copy(e.geometry.boundingSphere),this._sphere.applyMatrix4(e.matrixWorld);const f=r.getWorldPosition(this._tempWorldPosition);if(this._sphere.containsPoint(f))return 0}if(this._tempBox.copy(l),this._tempBox.applyMatrix4(e.matrixWorld),this._tempBox.applyMatrix4(this.projectionScreenMatrix),this.renderer.xr.enabled&&d.fov>70){const f=this._tempBox.min,p=this._tempBox.max;let b=f.x,x=f.y,S=p.x,_=p.y;const v=2,h=1.5,w=(f.x+p.x)*.5,T=(f.y+p.y)*.5;b=(b-w)*v+w,x=(x-T)*v+T,S=(S-w)*v+w,_=(_-T)*v+T;const I=b<0&&S>0?0:Math.min(Math.abs(f.x),Math.abs(p.x)),G=x<0&&_>0?0:Math.min(Math.abs(f.y),Math.abs(p.y)),j=Math.max(I,G);t.lastCentrality=(h-j)*(h-j)*(h-j)}else t.lastCentrality=1;const c=this._tempBox.getSize(this._tempBoxSize);c.multiplyScalar(.5),screen.availHeight>0&&c.multiplyScalar(this.renderer.domElement.clientHeight/screen.availHeight),c.x*=d.aspect;const g=r.matrixWorldInverse,M=new Y;M.copy(l),M.applyMatrix4(e.matrixWorld),M.applyMatrix4(g);const y=M.getSize(this._tempBox2Size),P=Math.max(y.x,y.y);if(Math.max(c.x,c.y)!=0&&P!=0&&(c.z=y.z/Math.max(y.x,y.y)*Math.max(c.x,c.y)),t.lastScreenCoverage=Math.max(c.x,c.y,c.z),t.lastScreenspaceVolume.copy(c),t.lastScreenCoverage*=t.lastCentrality,ee&&A.debugDrawLine){const f=this.tempMatrix.copy(this.projectionScreenMatrix);f.invert();const p=A.corner0,b=A.corner1,x=A.corner2,S=A.corner3;p.copy(this._tempBox.min),b.copy(this._tempBox.max),b.x=p.x,x.copy(this._tempBox.max),x.y=p.y,S.copy(this._tempBox.max);const _=(p.z+S.z)*.5;p.z=b.z=x.z=S.z=_,p.applyMatrix4(f),b.applyMatrix4(f),x.applyMatrix4(f),S.applyMatrix4(f),A.debugDrawLine(p,b,255),A.debugDrawLine(p,x,255),A.debugDrawLine(b,S,255),A.debugDrawLine(x,S,255)}let m=999;if(i&&t.lastScreenCoverage>0){for(let f=0;f<i.length;f++)if(i[f].density/t.lastScreenCoverage<o){m=f;break}}m<s&&(s=m)}}return s}};let k=A;u(k,"debugDrawLine"),u(k,"corner0",new E),u(k,"corner1",new E),u(k,"corner2",new E),u(k,"corner3",new E);class De{constructor(){u(this,"lastLodLevel",0),u(this,"lastScreenCoverage",0),u(this,"lastScreenspaceVolume",new E),u(this,"lastCentrality",0)}}const re=Symbol("NEEDLE_mesh_lod"),z=Symbol("NEEDLE_texture_lod");function te(r){if(!r)return null;let e=null,t=null;for(let o=r;o!=null;o=Object.getPrototypeOf(o)){const n=Object.getOwnPropertySymbols(o),s=n.find(i=>i.toString()=="Symbol(renderer)"),a=n.find(i=>i.toString()=="Symbol(scene)");!e&&s!=null&&(e=r[s].threeRenderer),!t&&a!=null&&(t=r[a])}if(e){console.log("Adding Needle LODs to modelviewer");const o=new k(e);if(o.plugins.push(new Le(r)),o.enable(),t){const n=t.camera||t.traverse(s=>s.type=="PerspectiveCamera")[0];n&&e.render(t,n)}return()=>{o.disable()}}return null}class Le{constructor(e){u(this,"modelviewer"),u(this,"_didWarnAboutMissingUrl",!1),this.modelviewer=e}onBeforeUpdateLOD(e,t,o,n){this.tryParseMeshLOD(t,n),this.tryParseTextureLOD(t,n)}getUrl(){let e=this.modelviewer.getAttribute("src");return e||(e=this.modelviewer.src),e||(this._didWarnAboutMissingUrl||console.warn("No url found in modelviewer",this.modelviewer),this._didWarnAboutMissingUrl=!0),e}tryGetCurrentGLTF(e){return e._currentGLTF}tryParseTextureLOD(e,t){if(t[z]==!0)return;t[z]=!0;const o=this.tryGetCurrentGLTF(e),n=this.getUrl();if(n&&o&&t.material){let s=function(i){var l,d,c;if(i[z]==!0)return;i[z]=!0,i.userData&&(i.userData.LOD=-1);const g=Object.keys(i);for(let M=0;M<g.length;M++){const y=g[M],P=i[y];if(P?.isTexture===!0){const m=(d=(l=P.userData)==null?void 0:l.associations)==null?void 0:d.textures,f=o.parser.json.textures[m];if((c=f.extensions)!=null&&c[B]){const p=f.extensions[B];p&&n&&O.registerTexture(n,P,p.lods.length,p)}}}};const a=t.material;if(Array.isArray(a))for(const i of a)s(i);else s(a)}}tryParseMeshLOD(e,t){var o,n;if(t[re]==!0)return;t[re]=!0;const s=this.getUrl();if(!s)return;const a=(n=(o=t.userData)==null?void 0:o.gltfExtensions)==null?void 0:n[B];if(a&&s){const i=t.uuid;O.registerMesh(s,i,t,0,a.lods.length,a)}}}function Oe(r,e,t,o){J(e),Q(t),t.register(s=>new O(s,r));const n=new k(e);return o?.enableLODsManager!==!1&&n.enable(),n}document.addEventListener("DOMContentLoaded",()=>{te(document.querySelector("model-viewer"))});export{B as EXTENSION_NAME,k as LODsManager,O as NEEDLE_progressive,te as patchModelViewer,ye as registerPlugin,Oe as useNeedleProgressive};
|
package/gltf-progressive.umd.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var re=Object.defineProperty;var se=(l,e,t)=>e in l?re(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var u=(l,e,t)=>(se(l,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("three"),ie=require("three/examples/jsm/loaders/GLTFLoader.js"),oe=require("three/examples/jsm/libs/meshopt_decoder.module.js"),ne=require("three/examples/jsm/loaders/DRACOLoader.js"),ae=require("three/examples/jsm/loaders/KTX2Loader.js"),le="https://www.gstatic.com/draco/versioned/decoders/1.4.1/",ue="https://www.gstatic.com/basis-universal/versioned/2021-04-15-ba1c3e4/";let z
|
|
2
|
-
`,F),null)),R=!1;if(m==null||(m instanceof h.Texture&&e instanceof h.Texture?(n=m.image)!=null&&n.data||(a=m.source)!=null&&a.data?m=this.copySettings(e,m):(R=!0,this.previouslyLoaded.delete(d)):m instanceof h.BufferGeometry&&e instanceof h.BufferGeometry&&((g=m.attributes.position)!=null&&g.array||(R=!0,this.previouslyLoaded.delete(d)))),!R)return m}const x=s,
|
|
3
|
-
`,y),null));if(!p)return null;const P=p.parser;r&&console.log("Loading finished "+D,x.guid);let O=0;if(p.parser.json.textures){let y=!1;for(const c of p.parser.json.textures){if(c!=null&&c.extensions){const v=c==null?void 0:c.extensions[k];if(v!=null&&v.guid&&v.guid===x.guid){y=!0;break}}O++}if(y){let c=await P.getDependency("texture",O);return r&&console.log('change "'+e.name+'" → "'+c.name+'"',D,O,c,d),e instanceof h.Texture&&(c=this.copySettings(e,c)),c&&(c.guid=x.guid),m(c)}}if(O=0,p.parser.json.meshes){let y=!1;for(const c of p.parser.json.meshes){if(c!=null&&c.extensions){const v=c==null?void 0:c.extensions[k];if(v!=null&&v.guid&&v.guid===x.guid){y=!0;break}}O++}if(y){const c=await P.getDependency("mesh",O),v=x;if(r&&console.log(`Loaded Mesh "${c.name}"`,D,O,c,d),c.isMesh===!0){const B=c.geometry;return S.assignLODInformation(i.url,B,o,t,void 0,v.density),m(B)}else{const B=new Array;for(let C=0;C<c.children.length;C++){const E=c.children[C];if(E instanceof h.Mesh){const N=E.geometry;S.assignLODInformation(i.url,N,o,t,C,v.density),B.push(N)}}return m(B)}}}return m(null)});return this.previouslyLoaded.set(d,b),await b}else if(e instanceof h.Texture){r&&console.log("Load texture from uri: "+D);const M=await new h.TextureLoader().loadAsync(D);return M?(M.guid=s.guid,M.flipY=!1,M.needsUpdate=!0,M.colorSpace=e.colorSpace,r&&console.log(s,M)):T&&console.warn("failed loading",D),M}}else T&&console.warn(`Can not load LOD ${t}: no LOD info found for "${o}" ${e.name}`,e.type);return null}static assignLODInformation(e,t,r,i,o,s){if(!t)return;t.userData||(t.userData={});const n=new de(e,r,i,o,s);t.userData.LODS=n,t.userData.LOD=i}static getAssignedLODInformation(e){var t;return((t=e==null?void 0:e.userData)==null?void 0:t.LODS)||null}static copySettings(e,t){const r=this._copiedTextures.get(e);return r||(t=t.clone(),this._copiedTextures.set(e,t),t.offset=e.offset,t.repeat=e.repeat,t.colorSpace=e.colorSpace,t)}};let w=S;u(w,"registerTexture",(e,t,r,i)=>{T&&console.log("> Progressive: register texture",r,t.name,t.uuid,t,i),t.source&&(t.source[V]=i);const o=i.guid;S.assignLODInformation(e,t,o,0,0,void 0),S.lodInfos.set(o,i),S.lowresCache.set(o,t)}),u(w,"registerMesh",(e,t,r,i,o,s)=>{var g;T&&console.log("> Progressive: register mesh",o,r.name,s,r.uuid,r);const n=r.geometry;n.userData||(n.userData={}),S.assignLODInformation(e,n,t,i,o,s.density),S.lodInfos.set(t,s);let a=S.lowresCache.get(t);a?a.push(r.geometry):a=[r.geometry],S.lowresCache.set(t,a);for(const f of X)(g=f.onRegisteredNewMesh)==null||g.call(f,r,s)}),u(w,"lodInfos",new Map),u(w,"previouslyLoaded",new Map),u(w,"lowresCache",new Map),u(w,"_copiedTextures",new Map);class de{constructor(e,t,r,i,o){u(this,"url");u(this,"key");u(this,"level");u(this,"index");u(this,"density");this.url=e,this.key=t,this.level=r,i!=null&&(this.index=i),o!=null&&(this.density=o)}}const J=Y("debugprogressive"),ge=Y("noprogressive"),A=class{constructor(e){u(this,"renderer");u(this,"projectionScreenMatrix",new h.Matrix4);u(this,"cameraFrustrum",new h.Frustum);u(this,"updateInterval",0);u(this,"pause",!1);u(this,"plugins",[]);u(this,"_originalRender");u(this,"_sphere",new h.Sphere);u(this,"_tempBox",new h.Box3);u(this,"tempMatrix",new h.Matrix4);u(this,"_tempWorldPosition",new h.Vector3);u(this,"_tempBoxSize",new h.Vector3);u(this,"_tempBox2Size",new h.Vector3);this.renderer=e}static getObjectLODState(e){var t;return(t=e.userData)==null?void 0:t.LOD_state}enable(){if(this._originalRender)return;let e=0;this._originalRender=this.renderer.render;const t=this;let r=0;Z(this.renderer),this.renderer.render=function(i,o){const s=r++,n=e++;t.onBeforeRender(i,o,n,s),t._originalRender.call(this,i,o),t.onAfterRender(i,o,n,s),e--}}disable(){this._originalRender&&(this.renderer.render=this._originalRender,this._originalRender=void 0)}onBeforeRender(e,t,r,i){}onAfterRender(e,t,r,i){if(ge||this.pause||this.updateInterval>0&&i%this.updateInterval!=0)return;this.projectionScreenMatrix.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this.cameraFrustrum.setFromProjectionMatrix(this.projectionScreenMatrix,this.renderer.coordinateSystem);const o=1e5,n=this.renderer.renderLists.get(e,r).opaque;for(const a of n){const g=a.object;(g instanceof h.Mesh||g.isMesh)&&this.updateLODs(e,t,g,o)}}updateLODs(e,t,r,i){var a,g;for(const f of this.plugins)(a=f.onBeforeUpdateLOD)==null||a.call(f,this.renderer,e,t,r);let o=r.userData.LOD_state;o||(o=new he,r.userData.LOD_state=o);let s=this.calculateLodLevel(t,r,o,i);s=Math.round(s),s>=0&&this.loadProgressiveMeshes(r,s);let n=0;if(r.material){const f=r["DEBUG:LOD"];if(f!=null&&(n=f),Array.isArray(r.material))for(const D of r.material)this.loadProgressiveTextures(D,n);else this.loadProgressiveTextures(r.material,n)}for(const f of this.plugins)(g=f.onAfterUpdatedLOD)==null||g.call(f,this.renderer,e,t,r,s);o.lastLodLevel=s}loadProgressiveTextures(e,t){return e&&e.userData&&e.userData.LOD!==t?(e.userData.LOD=t,w.assignTextureLOD(e,t)):Promise.resolve(null)}loadProgressiveMeshes(e,t){if(!e)return Promise.resolve(null);if(e.userData||(e.userData={}),e.userData.LOD!==t){e.userData.LOD=t;const r=e.geometry;return w.assignMeshLOD(e,t).then(i=>(i&&e.userData.LOD==t&&r!=e.geometry,i))}return Promise.resolve(null)}calculateLodLevel(e,t,r,i){var n;if(!t)return-1;let s=10+1;if(e){if(J&&t["DEBUG:LOD"]!=null)return t["DEBUG:LOD"];const a=w.getMeshLODInformation(t.geometry),g=a==null?void 0:a.lods;if(!g||g.length<=0||!((n=this.cameraFrustrum)!=null&&n.intersectsObject(t)))return 99;const f=t.geometry.boundingBox;if(f&&e.isPerspectiveCamera){const D=e;if(t.geometry.attributes.color&&t.geometry.attributes.color.count<100&&t.geometry.boundingSphere){this._sphere.copy(t.geometry.boundingSphere),this._sphere.applyMatrix4(t.matrixWorld);const L=e.getWorldPosition(this._tempWorldPosition);if(this._sphere.containsPoint(L))return 0}if(this._tempBox.copy(f),this._tempBox.applyMatrix4(t.matrixWorld),this._tempBox.applyMatrix4(this.projectionScreenMatrix),this.renderer.xr.enabled&&D.fov>70){const L=this._tempBox.min,p=this._tempBox.max;let P=L.x,O=L.y,y=p.x,c=p.y;const v=2,B=1.5,C=(L.x+p.x)*.5,E=(L.y+p.y)*.5;P=(P-C)*v+C,O=(O-E)*v+E,y=(y-C)*v+C,c=(c-E)*v+E;const N=P<0&&y>0?0:Math.min(Math.abs(L.x),Math.abs(p.x)),te=O<0&&c>0?0:Math.min(Math.abs(L.y),Math.abs(p.y)),q=Math.max(N,te);r.lastCentrality=(B-q)*(B-q)*(B-q)}else r.lastCentrality=1;const d=this._tempBox.getSize(this._tempBoxSize);d.multiplyScalar(.5),screen.availHeight>0&&d.multiplyScalar(this.renderer.domElement.clientHeight/screen.availHeight),d.x*=D.aspect;const M=e.matrixWorldInverse,x=new h.Box3;x.copy(f),x.applyMatrix4(t.matrixWorld),x.applyMatrix4(M);const b=x.getSize(this._tempBox2Size),G=Math.max(b.x,b.y);if(Math.max(d.x,d.y)!=0&&G!=0&&(d.z=b.z/Math.max(b.x,b.y)*Math.max(d.x,d.y)),r.lastScreenCoverage=Math.max(d.x,d.y,d.z),r.lastScreenspaceVolume.copy(d),r.lastScreenCoverage*=r.lastCentrality,J&&A.debugDrawLine){const L=this.tempMatrix.copy(this.projectionScreenMatrix);L.invert();const p=A.corner0,P=A.corner1,O=A.corner2,y=A.corner3;p.copy(this._tempBox.min),P.copy(this._tempBox.max),P.x=p.x,O.copy(this._tempBox.max),O.y=p.y,y.copy(this._tempBox.max);const c=(p.z+y.z)*.5;p.z=P.z=O.z=y.z=c,p.applyMatrix4(L),P.applyMatrix4(L),O.applyMatrix4(L),y.applyMatrix4(L),A.debugDrawLine(p,P,255),A.debugDrawLine(p,O,255),A.debugDrawLine(P,y,255),A.debugDrawLine(O,y,255)}let R=999;if(g&&r.lastScreenCoverage>0){for(let L=0;L<g.length;L++)if(g[L].density/r.lastScreenCoverage<i){R=L;break}}R<s&&(s=R)}}return s}};let _=A;u(_,"debugDrawLine"),u(_,"corner0",new h.Vector3),u(_,"corner1",new h.Vector3),u(_,"corner2",new h.Vector3),u(_,"corner3",new h.Vector3);class he{constructor(){u(this,"lastLodLevel",0);u(this,"lastScreenCoverage",0);u(this,"lastScreenspaceVolume",new h.Vector3);u(this,"lastCentrality",0)}}const Q=Symbol("NEEDLE_mesh_lod"),W=Symbol("NEEDLE_texture_lod");function ee(l){if(!l)return null;let e=null,t=null;for(let r=l;r!=null;r=Object.getPrototypeOf(r)){const i=Object.getOwnPropertySymbols(r),o=i.find(n=>n.toString()=="Symbol(renderer)"),s=i.find(n=>n.toString()=="Symbol(scene)");!e&&o!=null&&(e=l[o].threeRenderer),!t&&s!=null&&(t=l[s])}if(e){console.log("Adding Needle LODs to modelviewer");const r=new _(e);if(r.plugins.push(new pe(l)),r.enable(),t){const i=t.camera||t.traverse(o=>o.type=="PerspectiveCamera")[0];i&&e.render(t,i)}return()=>{r.disable()}}return null}class pe{constructor(e){u(this,"modelviewer");this.modelviewer=e}onBeforeUpdateLOD(e,t,r,i){this.tryParseMeshLOD(t,i),this.tryParseTextureLOD(t,i)}getUrl(){return this.modelviewer.getAttribute("src")}tryGetCurrentGLTF(e){return e._currentGLTF}tryParseTextureLOD(e,t){if(t[W]==!0)return;t[W]=!0;const r=this.tryGetCurrentGLTF(e),i=this.getUrl();if(!i){console.error("No url found in modelviewer");return}if(r&&t.material){let o=function(n){var g,f,D;if(n[W]==!0)return;n[W]=!0,n.userData&&(n.userData.LOD=-1);const a=Object.keys(n);for(let d=0;d<a.length;d++){const M=a[d],x=n[M];if((x==null?void 0:x.isTexture)===!0){const b=(f=(g=x.userData)==null?void 0:g.associations)==null?void 0:f.textures,G=r.parser.json.textures[b];if((D=G.extensions)!=null&&D[k]){const m=G.extensions[k];m&&i&&w.registerTexture(i,x,m.lods.length,m)}}}};const s=t.material;if(Array.isArray(s))for(const n of s)o(n);else o(s)}}tryParseMeshLOD(e,t){var o,s;if(t[Q]==!0)return;t[Q]=!0;const r=this.getUrl();if(!r){console.error("No url found in modelviewer");return}const i=(s=(o=t.userData)==null?void 0:o.gltfExtensions)==null?void 0:s[k];if(i&&r){const n=t.uuid;w.registerMesh(r,n,t,0,i.lods.length,i)}}}function ye(l,e,t,r){Z(e),j(t),t.register(o=>new w(o,l));const i=new _(e);return(r==null?void 0:r.enableLODsManager)!==!1&&i.enable(),i}document.addEventListener("DOMContentLoaded",()=>{ee(document.querySelector("model-viewer"))});exports.EXTENSION_NAME=k;exports.LODsManager=_;exports.NEEDLE_progressive=w;exports.patchModelViewer=ee;exports.registerPlugin=fe;exports.useNeedleProgressive=ye;
|
|
1
|
+
"use strict";var re=Object.defineProperty;var se=(l,e,t)=>e in l?re(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var u=(l,e,t)=>(se(l,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("three"),ie=require("three/examples/jsm/loaders/GLTFLoader.js"),oe=require("three/examples/jsm/libs/meshopt_decoder.module.js"),ne=require("three/examples/jsm/loaders/DRACOLoader.js"),ae=require("three/examples/jsm/loaders/KTX2Loader.js"),le="https://www.gstatic.com/draco/versioned/decoders/1.4.1/",ue="https://www.gstatic.com/basis-universal/versioned/2021-04-15-ba1c3e4/";let U,$,z;function Z(l){U||(U=new ne.DRACOLoader,U.setDecoderPath(le),U.setDecoderConfig({type:"js"})),z||(z=new ae.KTX2Loader,z.setTranscoderPath(ue)),$||($=oe.MeshoptDecoder),l?z.detectSupport(l):console.warn("No renderer provided to detect ktx2 support - loading KTX2 textures will probably fail")}function j(l){l.dracoLoader||l.setDRACOLoader(U),l.ktx2Loader||l.setKTX2Loader(z),l.meshoptDecoder||l.setMeshoptDecoder($)}function Y(l){const t=new URL(window.location.href).searchParams.get(l);return t==null||t==="0"||t==="false"?!1:t===""?!0:t}function ce(l,e){if(e===void 0||e.startsWith("./")||e.startsWith("http")||l===void 0)return e;const t=l.lastIndexOf("/");if(t>=0){const r=l.substring(0,t+1);for(;r.endsWith("/")&&e.startsWith("/");)e=e.substring(1);return r+e}return e}const X=new Array;function fe(l){X.push(l)}const k="NEEDLE_progressive",T=Y("debugprogressive"),V=Symbol("needle-progressive-texture"),I=new Map,K=new Set;if(T){let l=function(){e+=1,console.log("Toggle LOD level",e,I),I.forEach((i,o)=>{for(const s of i.keys){const n=o[s];if(n.isBufferGeometry===!0){const a=O.getMeshLODInformation(n),g=a?Math.min(e,a.lods.length):0;o["DEBUG:LOD"]=e,O.assignMeshLOD(o,g),a&&(t=Math.max(t,a.lods.length-1))}else if(o.isMaterial===!0){o["DEBUG:LOD"]=e,O.assignTextureLOD(o,e);break}}}),e>=t&&(e=-1)},e=-1,t=2,r=!1;window.addEventListener("keyup",i=>{i.key==="p"&&l(),i.key==="w"&&(r=!r,K&&K.forEach(o=>{o.name!="BackgroundCubeMaterial"&&"wireframe"in o&&(o.wireframe=r)}))})}function H(l,e,t){var i;if(!T)return;I.has(l)||I.set(l,{keys:[],sourceId:t});const r=I.get(l);((i=r==null?void 0:r.keys)==null?void 0:i.includes(e))==!1&&r.keys.push(e)}const S=class{constructor(e,t){u(this,"parser");u(this,"url");T&&console.log("Progressive extension registered for",t),this.parser=e,this.url=t}get name(){return k}static getMeshLODInformation(e){const t=this.getAssignedLODInformation(e);return t!=null&&t.key?this.lodInfos.get(t.key):null}static hasLODLevelAvailable(e,t){var o;if(e.isMaterial===!0){for(const s of Object.keys(e)){const n=e[s];if(n.isTexture&&this.hasLODLevelAvailable(n,t))return!0}return!1}else if(e.isGroup===!0){for(const s of e.children)if(s.isMesh===!0&&this.hasLODLevelAvailable(s,t))return!0}let r,i;if(e.isMesh?r=e.geometry:(e.isBufferGeometry||e.isTexture)&&(r=e),r&&(o=r==null?void 0:r.userData)!=null&&o.LODS){const s=r.userData.LODS;if(i=this.lodInfos.get(s.key),t===void 0)return i!=null;if(i)return Array.isArray(i.lods)?t<i.lods.length:t===0}return!1}static assignMeshLOD(e,t){var r;if(!e)return Promise.resolve(null);if(e instanceof h.Mesh||e.isMesh===!0){const i=e.geometry,o=this.getAssignedLODInformation(i);if(!o)return Promise.resolve(null);for(const s of X)(r=s.onBeforeGetLODMesh)==null||r.call(s,e,t);return e["LOD:requested level"]=t,S.getOrLoadLOD(i,t).then(s=>{if(e["LOD:requested level"]===t){if(delete e["LOD:requested level"],Array.isArray(s)){const n=o.index||0;s=s[n]}s&&i!=s&&s instanceof h.BufferGeometry&&(e.geometry=s,T&&H(e,"geometry",o.url))}return s}).catch(s=>(console.error("Error loading mesh LOD",e,s),null))}else T&&console.error("Invalid call to assignMeshLOD: Request mesh LOD but the object is not a mesh",e);return Promise.resolve(null)}static assignTextureLOD(e,t=0){if(!e)return Promise.resolve(null);if(e instanceof h.Material||e.isMaterial===!0){const r=e,i=[],o=new Array;if(T&&K.add(r),r instanceof h.RawShaderMaterial)for(const s of Object.keys(r.uniforms)){const n=r.uniforms[s].value;if((n==null?void 0:n.isTexture)===!0){const a=this.assignTextureLODForSlot(n,t,r,s);i.push(a),o.push(s)}}else for(const s of Object.keys(r)){const n=r[s];if((n==null?void 0:n.isTexture)===!0){const a=this.assignTextureLODForSlot(n,t,r,s);i.push(a),o.push(s)}}return Promise.all(i).then(s=>{const n=new Array;for(let a=0;a<s.length;a++){const g=s[a],f=o[a];g&&g.isTexture===!0?n.push({material:r,slot:f,texture:g,level:t}):n.push({material:r,slot:f,texture:null,level:t})}return n})}if(e instanceof h.Texture||e.isTexture===!0){const r=e;return this.assignTextureLODForSlot(r,t,null,null)}return Promise.resolve(null)}static assignTextureLODForSlot(e,t,r,i){return(e==null?void 0:e.isTexture)!==!0?Promise.resolve(null):S.getOrLoadLOD(e,t).then(o=>{if(Array.isArray(o))return null;if((o==null?void 0:o.isTexture)===!0){if(o!=e&&(r&&i&&(r[i]=o),T&&i&&r)){const s=this.getAssignedLODInformation(e);s&&H(r,i,s.url)}return o}else T=="verbose"&&console.warn("No LOD found for",e,t);return null}).catch(o=>(console.error("Error loading LOD",e,o),null))}afterRoot(e){var t,r;return T&&console.log("AFTER",this.url,e),(t=this.parser.json.textures)==null||t.forEach((i,o)=>{if(i!=null&&i.extensions){const s=i==null?void 0:i.extensions[k];if(s){let n=!1;for(const a of this.parser.associations.keys())a.isTexture===!0&&this.parser.associations.get(a).textures===o&&(n=!0,S.registerTexture(this.url,a,o,s));n||this.parser.getDependency("texture",o).then(a=>{a&&S.registerTexture(this.url,a,o,s)})}}}),(r=this.parser.json.meshes)==null||r.forEach((i,o)=>{if(i!=null&&i.extensions){const s=i==null?void 0:i.extensions[k];if(s&&s.lods){for(const n of this.parser.associations.keys())if(n.isMesh){const a=this.parser.associations.get(n);a.meshes===o&&S.registerMesh(this.url,s.guid,n,s.lods.length,a.primitives,s)}}}}),null}static async getOrLoadLOD(e,t){var n,a,g;const r=T=="verbose",i=e.userData.LODS;if(!i)return null;const o=i==null?void 0:i.key;let s;if(e.isTexture===!0){const f=e;f.source&&f.source[V]&&(s=f.source[V])}if(s||(s=S.lodInfos.get(o)),s){if(t>0){let d=!1;const M=Array.isArray(s.lods);if(M&&t>=s.lods.length?d=!0:M||(d=!0),d)return this.lowresCache.get(o)}const f=Array.isArray(s.lods)?s.lods[t].path:s.lods;if(!f)return T&&!s["missing:uri"]&&(s["missing:uri"]=!0,console.warn("Missing uri for progressive asset for LOD "+t,s)),null;const D=ce(i.url,f);if(D.endsWith(".glb")||D.endsWith(".gltf")){if(!s.guid)return console.warn("missing pointer for glb/gltf texture",s),null;const d=D+"_"+s.guid,M=this.previouslyLoaded.get(d);if(M!==void 0){r&&console.log(`LOD ${t} was already loading/loaded: ${d}`);let m=await M.catch(F=>(console.error(`Error loading LOD ${t} from ${D}
|
|
2
|
+
`,F),null)),R=!1;if(m==null||(m instanceof h.Texture&&e instanceof h.Texture?(n=m.image)!=null&&n.data||(a=m.source)!=null&&a.data?m=this.copySettings(e,m):(R=!0,this.previouslyLoaded.delete(d)):m instanceof h.BufferGeometry&&e instanceof h.BufferGeometry&&((g=m.attributes.position)!=null&&g.array||(R=!0,this.previouslyLoaded.delete(d)))),!R)return m}const x=s,P=new Promise(async(m,R)=>{const F=new ie.GLTFLoader;j(F),T&&(await new Promise(y=>setTimeout(y,1e3)),r&&console.warn("Start loading (delayed) "+D,x.guid));let L=D;if(x&&Array.isArray(x.lods)){const y=x.lods[t];y.hash&&(L+="?v="+y.hash)}const p=await F.loadAsync(L).catch(y=>(console.error(`Error loading LOD ${t} from ${D}
|
|
3
|
+
`,y),null));if(!p)return null;const A=p.parser;r&&console.log("Loading finished "+D,x.guid);let w=0;if(p.parser.json.textures){let y=!1;for(const c of p.parser.json.textures){if(c!=null&&c.extensions){const v=c==null?void 0:c.extensions[k];if(v!=null&&v.guid&&v.guid===x.guid){y=!0;break}}w++}if(y){let c=await A.getDependency("texture",w);return r&&console.log('change "'+e.name+'" → "'+c.name+'"',D,w,c,d),e instanceof h.Texture&&(c=this.copySettings(e,c)),c&&(c.guid=x.guid),m(c)}}if(w=0,p.parser.json.meshes){let y=!1;for(const c of p.parser.json.meshes){if(c!=null&&c.extensions){const v=c==null?void 0:c.extensions[k];if(v!=null&&v.guid&&v.guid===x.guid){y=!0;break}}w++}if(y){const c=await A.getDependency("mesh",w),v=x;if(r&&console.log(`Loaded Mesh "${c.name}"`,D,w,c,d),c.isMesh===!0){const B=c.geometry;return S.assignLODInformation(i.url,B,o,t,void 0,v.density),m(B)}else{const B=new Array;for(let C=0;C<c.children.length;C++){const E=c.children[C];if(E instanceof h.Mesh){const W=E.geometry;S.assignLODInformation(i.url,W,o,t,C,v.density),B.push(W)}}return m(B)}}}return m(null)});return this.previouslyLoaded.set(d,P),await P}else if(e instanceof h.Texture){r&&console.log("Load texture from uri: "+D);const M=await new h.TextureLoader().loadAsync(D);return M?(M.guid=s.guid,M.flipY=!1,M.needsUpdate=!0,M.colorSpace=e.colorSpace,r&&console.log(s,M)):T&&console.warn("failed loading",D),M}}else T&&console.warn(`Can not load LOD ${t}: no LOD info found for "${o}" ${e.name}`,e.type);return null}static assignLODInformation(e,t,r,i,o,s){if(!t)return;t.userData||(t.userData={});const n=new de(e,r,i,o,s);t.userData.LODS=n,t.userData.LOD=i}static getAssignedLODInformation(e){var t;return((t=e==null?void 0:e.userData)==null?void 0:t.LODS)||null}static copySettings(e,t){const r=this._copiedTextures.get(e);return r||(t=t.clone(),this._copiedTextures.set(e,t),t.offset=e.offset,t.repeat=e.repeat,t.colorSpace=e.colorSpace,t)}};let O=S;u(O,"registerTexture",(e,t,r,i)=>{T&&console.log("> Progressive: register texture",r,t.name,t.uuid,t,i),t.source&&(t.source[V]=i);const o=i.guid;S.assignLODInformation(e,t,o,0,0,void 0),S.lodInfos.set(o,i),S.lowresCache.set(o,t)}),u(O,"registerMesh",(e,t,r,i,o,s)=>{var g;T&&console.log("> Progressive: register mesh",o,r.name,s,r.uuid,r);const n=r.geometry;n.userData||(n.userData={}),S.assignLODInformation(e,n,t,i,o,s.density),S.lodInfos.set(t,s);let a=S.lowresCache.get(t);a?a.push(r.geometry):a=[r.geometry],S.lowresCache.set(t,a);for(const f of X)(g=f.onRegisteredNewMesh)==null||g.call(f,r,s)}),u(O,"lodInfos",new Map),u(O,"previouslyLoaded",new Map),u(O,"lowresCache",new Map),u(O,"_copiedTextures",new Map);class de{constructor(e,t,r,i,o){u(this,"url");u(this,"key");u(this,"level");u(this,"index");u(this,"density");this.url=e,this.key=t,this.level=r,i!=null&&(this.index=i),o!=null&&(this.density=o)}}const J=Y("debugprogressive"),ge=Y("noprogressive"),b=class{constructor(e){u(this,"renderer");u(this,"projectionScreenMatrix",new h.Matrix4);u(this,"cameraFrustrum",new h.Frustum);u(this,"updateInterval",0);u(this,"pause",!1);u(this,"plugins",[]);u(this,"_originalRender");u(this,"_sphere",new h.Sphere);u(this,"_tempBox",new h.Box3);u(this,"tempMatrix",new h.Matrix4);u(this,"_tempWorldPosition",new h.Vector3);u(this,"_tempBoxSize",new h.Vector3);u(this,"_tempBox2Size",new h.Vector3);this.renderer=e}static getObjectLODState(e){var t;return(t=e.userData)==null?void 0:t.LOD_state}enable(){if(this._originalRender)return;let e=0;this._originalRender=this.renderer.render;const t=this;let r=0;Z(this.renderer),this.renderer.render=function(i,o){const s=r++,n=e++;t.onBeforeRender(i,o,n,s),t._originalRender.call(this,i,o),t.onAfterRender(i,o,n,s),e--}}disable(){this._originalRender&&(this.renderer.render=this._originalRender,this._originalRender=void 0)}onBeforeRender(e,t,r,i){}onAfterRender(e,t,r,i){if(ge||this.pause||this.updateInterval>0&&i%this.updateInterval!=0)return;this.projectionScreenMatrix.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this.cameraFrustrum.setFromProjectionMatrix(this.projectionScreenMatrix,this.renderer.coordinateSystem);const o=1e5,n=this.renderer.renderLists.get(e,r).opaque;for(const a of n){const g=a.object;(g instanceof h.Mesh||g.isMesh)&&this.updateLODs(e,t,g,o)}}updateLODs(e,t,r,i){var a,g;for(const f of this.plugins)(a=f.onBeforeUpdateLOD)==null||a.call(f,this.renderer,e,t,r);let o=r.userData.LOD_state;o||(o=new he,r.userData.LOD_state=o);let s=this.calculateLodLevel(t,r,o,i);s=Math.round(s),s>=0&&this.loadProgressiveMeshes(r,s);let n=0;if(r.material){const f=r["DEBUG:LOD"];if(f!=null&&(n=f),Array.isArray(r.material))for(const D of r.material)this.loadProgressiveTextures(D,n);else this.loadProgressiveTextures(r.material,n)}for(const f of this.plugins)(g=f.onAfterUpdatedLOD)==null||g.call(f,this.renderer,e,t,r,s);o.lastLodLevel=s}loadProgressiveTextures(e,t){return e&&e.userData&&e.userData.LOD!==t?(e.userData.LOD=t,O.assignTextureLOD(e,t)):Promise.resolve(null)}loadProgressiveMeshes(e,t){if(!e)return Promise.resolve(null);if(e.userData||(e.userData={}),e.userData.LOD!==t){e.userData.LOD=t;const r=e.geometry;return O.assignMeshLOD(e,t).then(i=>(i&&e.userData.LOD==t&&r!=e.geometry,i))}return Promise.resolve(null)}calculateLodLevel(e,t,r,i){var n;if(!t)return-1;let s=10+1;if(e){if(J&&t["DEBUG:LOD"]!=null)return t["DEBUG:LOD"];const a=O.getMeshLODInformation(t.geometry),g=a==null?void 0:a.lods;if(!g||g.length<=0||!((n=this.cameraFrustrum)!=null&&n.intersectsObject(t)))return 99;const f=t.geometry.boundingBox;if(f&&e.isPerspectiveCamera){const D=e;if(t.geometry.attributes.color&&t.geometry.attributes.color.count<100&&t.geometry.boundingSphere){this._sphere.copy(t.geometry.boundingSphere),this._sphere.applyMatrix4(t.matrixWorld);const L=e.getWorldPosition(this._tempWorldPosition);if(this._sphere.containsPoint(L))return 0}if(this._tempBox.copy(f),this._tempBox.applyMatrix4(t.matrixWorld),this._tempBox.applyMatrix4(this.projectionScreenMatrix),this.renderer.xr.enabled&&D.fov>70){const L=this._tempBox.min,p=this._tempBox.max;let A=L.x,w=L.y,y=p.x,c=p.y;const v=2,B=1.5,C=(L.x+p.x)*.5,E=(L.y+p.y)*.5;A=(A-C)*v+C,w=(w-E)*v+E,y=(y-C)*v+C,c=(c-E)*v+E;const W=A<0&&y>0?0:Math.min(Math.abs(L.x),Math.abs(p.x)),te=w<0&&c>0?0:Math.min(Math.abs(L.y),Math.abs(p.y)),N=Math.max(W,te);r.lastCentrality=(B-N)*(B-N)*(B-N)}else r.lastCentrality=1;const d=this._tempBox.getSize(this._tempBoxSize);d.multiplyScalar(.5),screen.availHeight>0&&d.multiplyScalar(this.renderer.domElement.clientHeight/screen.availHeight),d.x*=D.aspect;const M=e.matrixWorldInverse,x=new h.Box3;x.copy(f),x.applyMatrix4(t.matrixWorld),x.applyMatrix4(M);const P=x.getSize(this._tempBox2Size),G=Math.max(P.x,P.y);if(Math.max(d.x,d.y)!=0&&G!=0&&(d.z=P.z/Math.max(P.x,P.y)*Math.max(d.x,d.y)),r.lastScreenCoverage=Math.max(d.x,d.y,d.z),r.lastScreenspaceVolume.copy(d),r.lastScreenCoverage*=r.lastCentrality,J&&b.debugDrawLine){const L=this.tempMatrix.copy(this.projectionScreenMatrix);L.invert();const p=b.corner0,A=b.corner1,w=b.corner2,y=b.corner3;p.copy(this._tempBox.min),A.copy(this._tempBox.max),A.x=p.x,w.copy(this._tempBox.max),w.y=p.y,y.copy(this._tempBox.max);const c=(p.z+y.z)*.5;p.z=A.z=w.z=y.z=c,p.applyMatrix4(L),A.applyMatrix4(L),w.applyMatrix4(L),y.applyMatrix4(L),b.debugDrawLine(p,A,255),b.debugDrawLine(p,w,255),b.debugDrawLine(A,y,255),b.debugDrawLine(w,y,255)}let R=999;if(g&&r.lastScreenCoverage>0){for(let L=0;L<g.length;L++)if(g[L].density/r.lastScreenCoverage<i){R=L;break}}R<s&&(s=R)}}return s}};let _=b;u(_,"debugDrawLine"),u(_,"corner0",new h.Vector3),u(_,"corner1",new h.Vector3),u(_,"corner2",new h.Vector3),u(_,"corner3",new h.Vector3);class he{constructor(){u(this,"lastLodLevel",0);u(this,"lastScreenCoverage",0);u(this,"lastScreenspaceVolume",new h.Vector3);u(this,"lastCentrality",0)}}const Q=Symbol("NEEDLE_mesh_lod"),q=Symbol("NEEDLE_texture_lod");function ee(l){if(!l)return null;let e=null,t=null;for(let r=l;r!=null;r=Object.getPrototypeOf(r)){const i=Object.getOwnPropertySymbols(r),o=i.find(n=>n.toString()=="Symbol(renderer)"),s=i.find(n=>n.toString()=="Symbol(scene)");!e&&o!=null&&(e=l[o].threeRenderer),!t&&s!=null&&(t=l[s])}if(e){console.log("Adding Needle LODs to modelviewer");const r=new _(e);if(r.plugins.push(new pe(l)),r.enable(),t){const i=t.camera||t.traverse(o=>o.type=="PerspectiveCamera")[0];i&&e.render(t,i)}return()=>{r.disable()}}return null}class pe{constructor(e){u(this,"modelviewer");u(this,"_didWarnAboutMissingUrl",!1);this.modelviewer=e}onBeforeUpdateLOD(e,t,r,i){this.tryParseMeshLOD(t,i),this.tryParseTextureLOD(t,i)}getUrl(){let e=this.modelviewer.getAttribute("src");return e||(e=this.modelviewer.src),e||(this._didWarnAboutMissingUrl||console.warn("No url found in modelviewer",this.modelviewer),this._didWarnAboutMissingUrl=!0),e}tryGetCurrentGLTF(e){return e._currentGLTF}tryParseTextureLOD(e,t){if(t[q]==!0)return;t[q]=!0;const r=this.tryGetCurrentGLTF(e),i=this.getUrl();if(i&&r&&t.material){let o=function(n){var g,f,D;if(n[q]==!0)return;n[q]=!0,n.userData&&(n.userData.LOD=-1);const a=Object.keys(n);for(let d=0;d<a.length;d++){const M=a[d],x=n[M];if((x==null?void 0:x.isTexture)===!0){const P=(f=(g=x.userData)==null?void 0:g.associations)==null?void 0:f.textures,G=r.parser.json.textures[P];if((D=G.extensions)!=null&&D[k]){const m=G.extensions[k];m&&i&&O.registerTexture(i,x,m.lods.length,m)}}}};const s=t.material;if(Array.isArray(s))for(const n of s)o(n);else o(s)}}tryParseMeshLOD(e,t){var o,s;if(t[Q]==!0)return;t[Q]=!0;const r=this.getUrl();if(!r)return;const i=(s=(o=t.userData)==null?void 0:o.gltfExtensions)==null?void 0:s[k];if(i&&r){const n=t.uuid;O.registerMesh(r,n,t,0,i.lods.length,i)}}}function ye(l,e,t,r){Z(e),j(t),t.register(o=>new O(o,l));const i=new _(e);return(r==null?void 0:r.enableLODsManager)!==!1&&i.enable(),i}document.addEventListener("DOMContentLoaded",()=>{ee(document.querySelector("model-viewer"))});exports.EXTENSION_NAME=k;exports.LODsManager=_;exports.NEEDLE_progressive=O;exports.patchModelViewer=ee;exports.registerPlugin=fe;exports.useNeedleProgressive=ye;
|
package/lib/extension.js
CHANGED
package/lib/index.js
CHANGED
package/lib/loaders.js
CHANGED
package/lib/lods_manager.js
CHANGED
package/lib/plugins/index.js
CHANGED
|
@@ -49,6 +49,7 @@ export function patchModelViewer(modelviewer) {
|
|
|
49
49
|
*/
|
|
50
50
|
class RegisterModelviewerDataPlugin {
|
|
51
51
|
modelviewer;
|
|
52
|
+
_didWarnAboutMissingUrl = false;
|
|
52
53
|
constructor(modelviewer) {
|
|
53
54
|
this.modelviewer = modelviewer;
|
|
54
55
|
}
|
|
@@ -57,7 +58,17 @@ class RegisterModelviewerDataPlugin {
|
|
|
57
58
|
this.tryParseTextureLOD(scene, object);
|
|
58
59
|
}
|
|
59
60
|
getUrl() {
|
|
60
|
-
|
|
61
|
+
let url = this.modelviewer.getAttribute("src");
|
|
62
|
+
// fallback in case the attribute is not set but the src property is
|
|
63
|
+
if (!url) {
|
|
64
|
+
url = this.modelviewer["src"];
|
|
65
|
+
}
|
|
66
|
+
if (!url) {
|
|
67
|
+
if (!this._didWarnAboutMissingUrl)
|
|
68
|
+
console.warn("No url found in modelviewer", this.modelviewer);
|
|
69
|
+
this._didWarnAboutMissingUrl = true;
|
|
70
|
+
}
|
|
71
|
+
return url;
|
|
61
72
|
}
|
|
62
73
|
tryGetCurrentGLTF(scene) {
|
|
63
74
|
return scene._currentGLTF;
|
|
@@ -69,7 +80,6 @@ class RegisterModelviewerDataPlugin {
|
|
|
69
80
|
const currentGLTF = this.tryGetCurrentGLTF(scene);
|
|
70
81
|
const url = this.getUrl();
|
|
71
82
|
if (!url) {
|
|
72
|
-
console.error("No url found in modelviewer");
|
|
73
83
|
return;
|
|
74
84
|
}
|
|
75
85
|
if (currentGLTF) {
|
|
@@ -112,7 +122,6 @@ class RegisterModelviewerDataPlugin {
|
|
|
112
122
|
object[$meshLODSymbol] = true;
|
|
113
123
|
const url = this.getUrl();
|
|
114
124
|
if (!url) {
|
|
115
|
-
console.error("No url found in modelviewer");
|
|
116
125
|
return;
|
|
117
126
|
}
|
|
118
127
|
// modelviewer has all the information we need in the userData (associations + gltfExtensions)
|
|
@@ -123,4 +132,3 @@ class RegisterModelviewerDataPlugin {
|
|
|
123
132
|
}
|
|
124
133
|
}
|
|
125
134
|
}
|
|
126
|
-
//# sourceMappingURL=modelviewer.js.map
|
package/lib/plugins/plugin.js
CHANGED
package/lib/utils.js
CHANGED
package/package.json
CHANGED
package/lib/extension.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/extension.ts"],"names":[],"mappings":"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"}
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,oBAAoB,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI/C,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAM/C,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,QAAuB,EAAE,MAAkB,EAAE,IAA+B;IAC1H,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxB,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,IAAI,EAAE,iBAAiB,KAAK,KAAK,EAAE,CAAC;QACpC,GAAG,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAID,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,0GAA0G;AAC1G,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC/C,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAgB,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC"}
|
package/lib/loaders.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loaders.js","sourceRoot":"","sources":["../../src/loaders.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAEtE,MAAM,8BAA8B,GAAG,yDAAyD,CAAC;AACjG,MAAM,gCAAgC,GAAG,uEAAuE,CAAC;AAGjH,IAAI,WAAwB,CAAC;AAC7B,IAAI,cAAqC,CAAC;AAC1C,IAAI,UAAsB,CAAC;AAG3B,MAAM,UAAU,aAAa,CAAC,QAAuB;IACjD,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QAChC,WAAW,CAAC,cAAc,CAAC,8BAA8B,CAAC,CAAC;QAC3D,WAAW,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,UAAU,CAAC,iBAAiB,CAAC,gCAAgC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,cAAc,GAAG,cAAc,CAAC;IACpC,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACX,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;;QAEG,OAAO,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;AAE/G,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAkB;IACrD,IAAI,CAAC,MAAM,CAAC,WAAW;QACnB,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,CAAE,MAAc,CAAC,UAAU;QAC3B,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,CAAE,MAAc,CAAC,cAAc;QAC/B,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;AACjD,CAAC"}
|
package/lib/lods_manager.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lods_manager.js","sourceRoot":"","sources":["../../src/lods_manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAA0B,OAAO,EAAY,OAAO,EAAE,IAAI,EAAsC,MAAM,EAAW,OAAO,EAAiB,MAAM,OAAO,CAAC;AACpK,OAAO,EAAE,kBAAkB,EAA2C,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,MAAM,uBAAuB,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAC7D,MAAM,0BAA0B,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IAEpB;OACG;IACH,MAAM,CAAC,aAAa,CAAmD;IAEvE,gBAAgB;IAChB,MAAM,CAAC,iBAAiB,CAAC,MAAgB;QACrC,OAAO,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;IACtC,CAAC;IAEQ,QAAQ,CAAgB;IACxB,sBAAsB,GAAG,IAAI,OAAO,EAAE,CAAC;IACvC,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;IAExC;;OAEG;IACH,cAAc,GAAW,CAAC,CAAC;IAC3B;;OAEG;IACH,KAAK,GAAY,KAAK,CAAC;IAEd,OAAO,GAAgC,EAAE,CAAC;IAEnD,YAAY,QAAuB;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEO,eAAe,CAA0C;IAEjE;;OAEG;IACH,MAAM;QACF,IAAI,IAAI,CAAC,eAAe;YAAE,OAAO;QACjC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,kCAAkC;QAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,UAAU,KAAY,EAAE,MAAc;YACzD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,eAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YACtD,KAAK,EAAE,CAAC;QACZ,CAAC,CAAC;IACN,CAAC;IACD,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QAClC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;IACrC,CAAC;IAGO,cAAc,CAAC,MAAa,EAAE,OAAe,EAAE,MAAc,EAAE,MAAc;IACrF,CAAC;IAEO,aAAa,CAAC,KAAY,EAAE,MAAc,EAAE,KAAa,EAAE,KAAa;QAE5E,IAAI,0BAA0B;YAAE,OAAO;QACvC,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC;YAAE,OAAO;QAExE,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACzG,MAAM,cAAc,GAAG,OAAO,CAAC;QAE/B,4DAA4D;QAE5D,sDAAsD;QACtD;;;;;;;UAOE;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAa,CAAC;YAEnC,IAAI,MAAM,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC;IACL,CAAC;IAED,8CAA8C;IACtC,UAAU,CAAC,KAAY,EAAE,MAAc,EAAE,MAAY,EAAE,cAAsB;QAEjF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,wDAAwD;QACxD,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAsB,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;QACtC,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;QAC1E,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1B,kCAAkC;QAClC,gEAAgE;QAEhE,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9C,CAAC;QAED,wJAAwJ;QACxJ,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA,4BAA4B;QAE/C,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,UAAU,IAAI,SAAS;gBAAE,UAAU,GAAG,UAAU,CAAC;YAErD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAChC,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;gBAClD,CAAC;YACL,CAAC;iBACI,CAAC;gBACF,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC9D,CAAC;QACL,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;QAC3E,CAAC;QAED,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC;IAC/B,CAAC;IAGD;;;;OAIG;IACK,uBAAuB,CAAC,QAAkB,EAAE,KAAa;QAC7D,IAAI,CAAC,QAAQ;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YACvD,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;YAC9B,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACK,qBAAqB,CAAC,IAAU,EAAE,KAAa;QACnD,IAAI,CAAC,IAAI;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;YAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;YACvC,OAAO,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC5D,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,KAAK,IAAI,gBAAgB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACzE,sBAAsB;oBACtB,4BAA4B;oBAE5B,sBAAsB;oBACtB,yCAAyC;oBACzC,gDAAgD;oBAChD,kCAAkC;oBAClC,2CAA2C;oBAC3C,QAAQ;oBACR,IAAI;gBACR,CAAC;gBACD,OAAO,GAAG,CAAC;YACf,CAAC,CAAC,CAAA;QACN,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,0CAA0C;IAEzB,OAAO,GAAG,IAAI,MAAM,EAAE,CAAC;IACvB,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;IAC3B,kBAAkB,GAAG,IAAI,OAAO,EAAE,CAAC;IACnC,YAAY,GAAG,IAAI,OAAO,EAAE,CAAC;IAC7B,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;IAEvC,MAAM,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC/B,MAAM,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC/B,MAAM,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC/B,MAAM,CAAC,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE/B,iBAAiB,CAAC,MAAc,EAAE,IAAU,EAAE,KAAgB,EAAE,cAAsB;QAC1F,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAErB,qDAAqD;QACrD,yCAAyC;QAEzC,oGAAoG;QACpG,yDAAyD;QACzD,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,IAAI,KAAK,GAAG,QAAQ,GAAG,CAAC,CAAC;QAEzB,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,uBAAuB,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC5D,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7B,CAAC;YAED,2HAA2H;YAC3H,MAAM,QAAQ,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzE,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,CAAC;YAE5B,2GAA2G;YAC3G,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACd,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,mCAAmC;gBACnC,iEAAiE;gBACjE,mDAAmD;gBACnD,iCAAiC;gBACjC,mDAAmD;gBACnD,4FAA4F;gBAC5F,IAAI;gBACJ,0CAA0C;gBAC1C,OAAO,EAAE,CAAC;YACd,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YACtC,IAAI,GAAG,IAAK,MAA4B,CAAC,mBAAmB,EAAE,CAAC;gBAC3D,MAAM,GAAG,GAAG,MAA2B,CAAC;gBAExC,mGAAmG;gBACnG,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC;oBAC/E,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;wBAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;wBAChD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;wBACtE,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;4BAC5C,OAAO,CAAC,CAAC;wBACb,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,2BAA2B;gBAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE7C,yFAAyF;gBACzF,8FAA8F;gBAC9F,wGAAwG;gBACxG,iFAAiF;gBACjF,mDAAmD;gBACnD,oFAAoF;gBACpF,uEAAuE;gBACvE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAExD,6FAA6F;gBAC7F,kDAAkD;gBAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;oBAC3C,kFAAkF;oBAClF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAE9B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;oBACjB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;oBACjB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;oBACjB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;oBAEjB,UAAU;oBACV,MAAM,iBAAiB,GAAG,GAAG,CAAC;oBAC9B,MAAM,WAAW,GAAG,GAAG,CAAC;oBACxB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oBACtC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oBACtC,IAAI,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,iBAAiB,GAAG,OAAO,CAAC;oBACtD,IAAI,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,iBAAiB,GAAG,OAAO,CAAC;oBACtD,IAAI,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,iBAAiB,GAAG,OAAO,CAAC;oBACtD,IAAI,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,iBAAiB,GAAG,OAAO,CAAC;oBAEtD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1F,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBAEtD,+EAA+E;oBAC/E,KAAK,CAAC,cAAc,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;gBAChH,CAAC;qBACI,CAAC;oBACF,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACzD,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,6DAA6D;gBAC1F,IAAI,MAAM,CAAC,WAAW,GAAG,CAAC;oBACtB,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,wCAAwC;gBAChI,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC;gBAExB,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;gBAC1C,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACpC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAElD,6DAA6D;gBAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;oBACtB,OAAO,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBAE/F,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrE,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1C,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,cAAc,CAAC;gBAEjD,uBAAuB;gBACvB,IAAI,uBAAuB,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;oBACvD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBAC9D,GAAG,CAAC,MAAM,EAAE,CAAC;oBAEb,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;oBACpC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;oBACpC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;oBACpC,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;oBAEpC,uEAAuE;oBACvE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAChC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAChC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;oBACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAChC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;oBACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAChC,yCAAyC;oBACzC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;oBACxC,0DAA0D;oBAC1D,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;oBAElD,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC1B,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC1B,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAC1B,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;oBAE1B,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACtD,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACtD,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;oBACtD,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC1D,CAAC;gBAED,IAAI,aAAa,GAAG,GAAG,CAAC;gBACxB,mDAAmD;gBACnD,IAAI,IAAI,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;oBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACnC,MAAM,mBAAmB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;wBAC5C,MAAM,gBAAgB,GAAG,mBAAmB,GAAG,KAAK,CAAC,kBAAkB,CAAC;wBACxE,IAAI,gBAAgB,GAAG,cAAc,EAAE,CAAC;4BACpC,aAAa,GAAG,CAAC,CAAC;4BAClB,MAAM;wBACV,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,MAAM,UAAU,GAAG,aAAa,GAAG,KAAK,CAAC;gBACzC,IAAI,UAAU,EAAE,CAAC;oBACb,KAAK,GAAG,aAAa,CAAC;gBAC1B,CAAC;YACL,CAAC;YACD,IAAI;QACR,CAAC;QAGD,qCAAqC;QACrC,2EAA2E;QAC3E,qCAAqC;QACrC,+IAA+I;QAC/I,wCAAwC;QACxC,QAAQ;QACR,IAAI;QAEJ,OAAO,KAAK,CAAC;IACjB,CAAC;;AAML,MAAM,SAAS;IACX,YAAY,GAAW,CAAC,CAAC;IACzB,kBAAkB,GAAW,CAAC,CAAC;IACtB,qBAAqB,GAAY,IAAI,OAAO,EAAE,CAAC;IACxD,cAAc,GAAW,CAAC,CAAC;CAC9B"}
|
package/lib/plugins/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAkC,MAAM,aAAa,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"modelviewer.js","sourceRoot":"","sources":["../../../src/plugins/modelviewer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/plugin.ts"],"names":[],"mappings":"AAoBA;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,KAAK,EAA6B,CAAC;AAE9D;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAiC;IAC5D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC"}
|
package/lib/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,QAAQ,CAAC,IAAY;IACjC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACtE,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA0B,EAAE,GAAW;IAC9D,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC;IACf,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACf,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC;IACf,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACf,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACjB,uCAAuC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC;QACpD,yCAAyC;QACzC,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7E,0BAA0B;QAC1B,MAAM,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC;QAC9B,2DAA2D;QAC3D,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC"}
|