s3m-three 0.3.13 → 0.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/assets/{s3mWorker-DLsGBSaV.js → s3mWorker-BjPOUgjg.js} +1 -1
- package/dist/browser/s3m-three.iife.ext-three.js +21 -21
- package/dist/browser/s3m-three.iife.js +21 -21
- package/dist/core/TextureDecode.d.ts +9 -0
- package/dist/core/TextureDecode.d.ts.map +1 -1
- package/dist/core/TextureDecode.js +66 -0
- package/dist/core/TextureDecode.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/render/DatasetManager.d.ts +3 -1
- package/dist/render/DatasetManager.d.ts.map +1 -1
- package/dist/render/DatasetManager.js +2 -1
- package/dist/render/DatasetManager.js.map +1 -1
- package/dist/render/OrthoProjection.d.ts +22 -0
- package/dist/render/OrthoProjection.d.ts.map +1 -1
- package/dist/render/OrthoProjection.js +60 -0
- package/dist/render/OrthoProjection.js.map +1 -1
- package/dist/render/S3MViewer.d.ts +70 -0
- package/dist/render/S3MViewer.d.ts.map +1 -1
- package/dist/render/S3MViewer.js +100 -5
- package/dist/render/S3MViewer.js.map +1 -1
- package/dist/render/TextureFactory.d.ts +3 -2
- package/dist/render/TextureFactory.d.ts.map +1 -1
- package/dist/render/TextureFactory.js +26 -6
- package/dist/render/TextureFactory.js.map +1 -1
- package/dist/tileset/S3MTileset.d.ts +26 -1
- package/dist/tileset/S3MTileset.d.ts.map +1 -1
- package/dist/tileset/S3MTileset.js +29 -2
- package/dist/tileset/S3MTileset.js.map +1 -1
- package/dist/worker/S3MWorkerClient.d.ts +6 -3
- package/dist/worker/S3MWorkerClient.d.ts.map +1 -1
- package/dist/worker/S3MWorkerClient.js +8 -5
- package/dist/worker/S3MWorkerClient.js.map +1 -1
- package/dist/worker/s3mWorker.js +123 -71
- package/dist/worker/s3mWorker.js.map +1 -1
- package/docs/API.md +61 -0
- package/package.json +1 -1
- package/src/core/TextureDecode.ts +87 -0
- package/src/index.ts +2 -1
- package/src/render/DatasetManager.ts +5 -1
- package/src/render/OrthoProjection.ts +58 -0
- package/src/render/S3MViewer.ts +134 -7
- package/src/render/TextureFactory.ts +35 -8
- package/src/tileset/S3MTileset.ts +41 -2
- package/src/worker/S3MWorkerClient.ts +9 -5
- package/src/worker/s3mWorker.ts +2 -2
package/dist/worker/s3mWorker.js
CHANGED
|
@@ -3010,37 +3010,86 @@ function pn(e) {
|
|
|
3010
3010
|
}
|
|
3011
3011
|
// src/core/TextureDecode.ts
|
|
3012
3012
|
function mn(e, t, n) {
|
|
3013
|
+
let r = Math.max(1, t >> 1), i = Math.max(1, n >> 1), a = new Uint8Array(r * i * 4), o = t * 4;
|
|
3014
|
+
for (let t = 0; t < i; t++) {
|
|
3015
|
+
let n = t * 2 * o, i = n + o, s = t * r * 4;
|
|
3016
|
+
for (let t = 0; t < r; t++) {
|
|
3017
|
+
let r = n + t * 8, o = i + t * 8;
|
|
3018
|
+
a[s++] = e[r] + e[r + 4] + e[o] + e[o + 4] >> 2, a[s++] = e[r + 1] + e[r + 5] + e[o + 1] + e[o + 5] >> 2, a[s++] = e[r + 2] + e[r + 6] + e[o + 2] + e[o + 6] >> 2, a[s++] = e[r + 3] + e[r + 7] + e[o + 3] + e[o + 7] >> 2;
|
|
3019
|
+
}
|
|
3020
|
+
}
|
|
3021
|
+
return {
|
|
3022
|
+
rgba: a,
|
|
3023
|
+
width: r,
|
|
3024
|
+
height: i
|
|
3025
|
+
};
|
|
3026
|
+
}
|
|
3027
|
+
async function hn(e, t) {
|
|
3028
|
+
if (!t || !Number.isFinite(t) || t < 1) return e;
|
|
3029
|
+
let n = Math.max(e.width, e.height);
|
|
3030
|
+
if (n <= t || e.blocks) return e;
|
|
3031
|
+
if (e.bitmap) {
|
|
3032
|
+
let r = t / n, i = Math.max(1, Math.round(e.width * r)), a = Math.max(1, Math.round(e.height * r)), o = await createImageBitmap(e.bitmap, {
|
|
3033
|
+
resizeWidth: i,
|
|
3034
|
+
resizeHeight: a,
|
|
3035
|
+
resizeQuality: "high"
|
|
3036
|
+
});
|
|
3037
|
+
return e.bitmap.close?.(), {
|
|
3038
|
+
...e,
|
|
3039
|
+
width: i,
|
|
3040
|
+
height: a,
|
|
3041
|
+
bitmap: o
|
|
3042
|
+
};
|
|
3043
|
+
}
|
|
3044
|
+
let r = e.rgba;
|
|
3045
|
+
if (!r) return e;
|
|
3046
|
+
let i = e.width, a = e.height;
|
|
3047
|
+
for (; Math.max(i, a) > t && i >= 2 && a >= 2;) {
|
|
3048
|
+
let e = mn(r, i, a);
|
|
3049
|
+
r = e.rgba, i = e.width, a = e.height;
|
|
3050
|
+
}
|
|
3051
|
+
return {
|
|
3052
|
+
...e,
|
|
3053
|
+
width: i,
|
|
3054
|
+
height: a,
|
|
3055
|
+
rgba: r
|
|
3056
|
+
};
|
|
3057
|
+
}
|
|
3058
|
+
function gn(e, t, n) {
|
|
3013
3059
|
let r = t * 4, i = new Uint8Array(r);
|
|
3014
3060
|
for (let t = 0; t < n >> 1; t++) {
|
|
3015
3061
|
let a = t * r, o = (n - 1 - t) * r;
|
|
3016
3062
|
i.set(e.subarray(a, a + r)), e.copyWithin(a, o, o + r), e.set(i, o);
|
|
3017
3063
|
}
|
|
3018
3064
|
}
|
|
3019
|
-
function
|
|
3065
|
+
function _n(e) {
|
|
3020
3066
|
return e === Z.DXT3 || e === Z.DXT4 || e === Z.DXT5 || e === Z.ARGB || e === Z.ABGR || e === Z.BGRA || e === Z.RGBA;
|
|
3021
3067
|
}
|
|
3022
|
-
function
|
|
3068
|
+
function vn(e) {
|
|
3023
3069
|
let { width: t, height: n, pixelFormat: r, data: i } = e, a = new Uint8Array(t * n * 4);
|
|
3024
|
-
return ht.decode(a, t, n, i, r), e.flipY &&
|
|
3070
|
+
return ht.decode(a, t, n, i, r), e.flipY && gn(a, t, n), {
|
|
3025
3071
|
rgba: a,
|
|
3026
|
-
hasAlpha:
|
|
3072
|
+
hasAlpha: _n(r)
|
|
3027
3073
|
};
|
|
3028
3074
|
}
|
|
3029
|
-
function
|
|
3075
|
+
function yn(e) {
|
|
3030
3076
|
let { width: t, height: n, pixelFormat: r, data: i } = e, a = new Uint8Array(t * n * 4), o = r === Z.RGBA || r === Z.BGRA || r === Z.ARGB || r === Z.ABGR, s = r === Z.BGR || r === Z.BGRA, c = r === Z.ARGB || r === Z.ABGR, l = o ? 4 : 3;
|
|
3031
3077
|
for (let e = 0, r = 0, u = 0; e < t * n; e++, r += l, u += 4) {
|
|
3032
3078
|
let e = c ? r + 1 : r;
|
|
3033
3079
|
a[u] = s ? i[e + 2] : i[e], a[u + 1] = i[e + 1], a[u + 2] = s ? i[e] : i[e + 2], a[u + 3] = o ? i[c ? r : r + 3] : 255;
|
|
3034
3080
|
}
|
|
3035
|
-
return e.flipY &&
|
|
3081
|
+
return e.flipY && gn(a, t, n), {
|
|
3036
3082
|
rgba: a,
|
|
3037
|
-
hasAlpha:
|
|
3083
|
+
hasAlpha: _n(r)
|
|
3038
3084
|
};
|
|
3039
3085
|
}
|
|
3040
|
-
function
|
|
3086
|
+
function bn(e, t, n) {
|
|
3041
3087
|
return (e + 3 >> 2) * (t + 3 >> 2) * (n === "dxt1" ? 8 : 16);
|
|
3042
3088
|
}
|
|
3043
|
-
async function
|
|
3089
|
+
async function xn(e, t = {}) {
|
|
3090
|
+
return hn(await Sn(e, t), t.maxSize);
|
|
3091
|
+
}
|
|
3092
|
+
async function Sn(e, t = {}) {
|
|
3044
3093
|
let n = {
|
|
3045
3094
|
kind: "unsupported(0/0)",
|
|
3046
3095
|
width: 0,
|
|
@@ -3050,7 +3099,7 @@ async function yn(e, t = {}) {
|
|
|
3050
3099
|
hasAlpha: !1
|
|
3051
3100
|
};
|
|
3052
3101
|
if (!e || !e.width || !e.height) return n;
|
|
3053
|
-
let r = dn(e.compressType ?? 0, e.pixelFormat), i = t.compressed === !0 && !e.flipY, a = (e, t, n, r) => e.byteLength ===
|
|
3102
|
+
let r = dn(e.compressType ?? 0, e.pixelFormat), i = t.compressed === !0 && !e.flipY, a = (e, t, n, r) => e.byteLength === bn(t, n, r);
|
|
3054
3103
|
if (r === "crn") try {
|
|
3055
3104
|
let t = await sn(e.data), n = t.dxtFormat === 1 ? Z.DXT1 : Z.DXT5, r = t.dxtFormat === 1 ? "dxt1" : "dxt5";
|
|
3056
3105
|
if (i && a(t.data, t.width, t.height, r)) return {
|
|
@@ -3063,7 +3112,7 @@ async function yn(e, t = {}) {
|
|
|
3063
3112
|
blocks: t.data,
|
|
3064
3113
|
blockFormat: r
|
|
3065
3114
|
};
|
|
3066
|
-
let o =
|
|
3115
|
+
let o = vn({
|
|
3067
3116
|
width: t.width,
|
|
3068
3117
|
height: t.height,
|
|
3069
3118
|
pixelFormat: n,
|
|
@@ -3100,7 +3149,7 @@ async function yn(e, t = {}) {
|
|
|
3100
3149
|
blocks: e.data,
|
|
3101
3150
|
blockFormat: r
|
|
3102
3151
|
};
|
|
3103
|
-
let n =
|
|
3152
|
+
let n = vn({
|
|
3104
3153
|
...e,
|
|
3105
3154
|
pixelFormat: t
|
|
3106
3155
|
});
|
|
@@ -3125,7 +3174,7 @@ async function yn(e, t = {}) {
|
|
|
3125
3174
|
};
|
|
3126
3175
|
}
|
|
3127
3176
|
if (r === "raw") {
|
|
3128
|
-
let t =
|
|
3177
|
+
let t = yn(e);
|
|
3129
3178
|
return {
|
|
3130
3179
|
kind: r,
|
|
3131
3180
|
width: e.width,
|
|
@@ -3140,10 +3189,10 @@ async function yn(e, t = {}) {
|
|
|
3140
3189
|
kind: `unsupported(${e.compressType}/${e.pixelFormat})`
|
|
3141
3190
|
};
|
|
3142
3191
|
}
|
|
3143
|
-
function
|
|
3192
|
+
function Cn(e) {
|
|
3144
3193
|
return e === "u8" ? 1 : e === "u16" ? 2 : 4;
|
|
3145
3194
|
}
|
|
3146
|
-
function
|
|
3195
|
+
function wn(e, t) {
|
|
3147
3196
|
switch (e) {
|
|
3148
3197
|
case "u8": return new Uint8Array(t);
|
|
3149
3198
|
case "u16": return new Uint16Array(t);
|
|
@@ -3151,7 +3200,7 @@ function xn(e, t) {
|
|
|
3151
3200
|
default: return new Float32Array(t);
|
|
3152
3201
|
}
|
|
3153
3202
|
}
|
|
3154
|
-
function
|
|
3203
|
+
function Tn(e, t) {
|
|
3155
3204
|
switch (e) {
|
|
3156
3205
|
case "u8": return new Uint8Array(t);
|
|
3157
3206
|
case "u16": return new Uint16Array(t);
|
|
@@ -3159,14 +3208,14 @@ function Sn(e, t) {
|
|
|
3159
3208
|
default: return new Float32Array(t);
|
|
3160
3209
|
}
|
|
3161
3210
|
}
|
|
3162
|
-
function
|
|
3163
|
-
let { data: t, stride: n, offsetInBytes: r, dtype: i = "f32" } = e, a = e.components ?? e.comp ?? 3, o =
|
|
3211
|
+
function En(e) {
|
|
3212
|
+
let { data: t, stride: n, offsetInBytes: r, dtype: i = "f32" } = e, a = e.components ?? e.comp ?? 3, o = Cn(i), s = a * o, c = n ?? s, l = r ?? 0, u = i === "u8";
|
|
3164
3213
|
if (c === s && l === 0) return {
|
|
3165
|
-
array:
|
|
3214
|
+
array: wn(i, t.buffer.slice(t.byteOffset, t.byteOffset + t.byteLength)),
|
|
3166
3215
|
components: a,
|
|
3167
3216
|
normalized: u
|
|
3168
3217
|
};
|
|
3169
|
-
let d = Math.floor(t.byteLength / c), f =
|
|
3218
|
+
let d = Math.floor(t.byteLength / c), f = Tn(i, d * a), p = new DataView(t.buffer, t.byteOffset, t.byteLength);
|
|
3170
3219
|
for (let e = 0; e < d; e++) {
|
|
3171
3220
|
let t = e * c + l;
|
|
3172
3221
|
for (let n = 0; n < a; n++) {
|
|
@@ -3180,7 +3229,7 @@ function Cn(e) {
|
|
|
3180
3229
|
normalized: u
|
|
3181
3230
|
};
|
|
3182
3231
|
}
|
|
3183
|
-
function
|
|
3232
|
+
function Dn(e, t) {
|
|
3184
3233
|
let n = new Float32Array(t * 3);
|
|
3185
3234
|
if (!e) return n.fill(1), n;
|
|
3186
3235
|
let r = e.data, i = e.components ?? 4, a = e.dtype === "u8" ? 1 / 255 : 1;
|
|
@@ -3190,7 +3239,7 @@ function wn(e, t) {
|
|
|
3190
3239
|
}
|
|
3191
3240
|
return n;
|
|
3192
3241
|
}
|
|
3193
|
-
function
|
|
3242
|
+
function On(e) {
|
|
3194
3243
|
let { indices: t, indexType: n, indexCount: r } = e;
|
|
3195
3244
|
if (!t || r === 0) return null;
|
|
3196
3245
|
let i = Math.floor(t.byteLength / r), a = i === 4 || i !== 2 && (n === 1 || n === 3), o = r * (a ? 4 : 2);
|
|
@@ -3198,7 +3247,7 @@ function Tn(e) {
|
|
|
3198
3247
|
let s = t.buffer.slice(t.byteOffset, t.byteOffset + o);
|
|
3199
3248
|
return a ? new Uint32Array(s) : new Uint16Array(s);
|
|
3200
3249
|
}
|
|
3201
|
-
function
|
|
3250
|
+
function kn(e, t, n) {
|
|
3202
3251
|
let r = new Float32Array(n * 3), i = (t, n, i) => {
|
|
3203
3252
|
let a = e[t * 3], o = e[t * 3 + 1], s = e[t * 3 + 2], c = e[n * 3], l = e[n * 3 + 1], u = e[n * 3 + 2], d = e[i * 3], f = e[i * 3 + 1], p = e[i * 3 + 2], m = c - a, h = l - o, g = u - s, _ = d - a, v = f - o, y = p - s, b = h * y - g * v, x = g * _ - m * y, S = m * v - h * _;
|
|
3204
3253
|
for (let e of [
|
|
@@ -3215,7 +3264,7 @@ function En(e, t, n) {
|
|
|
3215
3264
|
}
|
|
3216
3265
|
return r;
|
|
3217
3266
|
}
|
|
3218
|
-
function
|
|
3267
|
+
function An(e, t) {
|
|
3219
3268
|
let n = [
|
|
3220
3269
|
Infinity,
|
|
3221
3270
|
Infinity,
|
|
@@ -3245,21 +3294,21 @@ function Dn(e, t) {
|
|
|
3245
3294
|
sphereRadius: Math.sqrt(a)
|
|
3246
3295
|
};
|
|
3247
3296
|
}
|
|
3248
|
-
var
|
|
3297
|
+
var jn = [
|
|
3249
3298
|
13,
|
|
3250
3299
|
2,
|
|
3251
3300
|
3
|
|
3252
|
-
],
|
|
3253
|
-
function
|
|
3254
|
-
return
|
|
3301
|
+
], Mn = 1;
|
|
3302
|
+
function Nn(e) {
|
|
3303
|
+
return jn.includes(e);
|
|
3255
3304
|
}
|
|
3256
|
-
function
|
|
3305
|
+
function Pn(e) {
|
|
3257
3306
|
return !e || e[0] === 1 && e[1] === 0 && e[2] === 0 && e[3] === 0 && e[4] === 0 && e[5] === 1 && e[6] === 0 && e[7] === 0 && e[8] === 0 && e[9] === 0 && e[10] === 1 && e[11] === 0 && e[12] === 0 && e[13] === 0 && e[14] === 0 && e[15] === 1;
|
|
3258
3307
|
}
|
|
3259
|
-
function
|
|
3308
|
+
function Fn(e, t, n, r, i) {
|
|
3260
3309
|
i[0] = e[0] * t + e[4] * n + e[8] * r + e[12], i[1] = e[1] * t + e[5] * n + e[9] * r + e[13], i[2] = e[2] * t + e[6] * n + e[10] * r + e[14];
|
|
3261
3310
|
}
|
|
3262
|
-
function
|
|
3311
|
+
function In(e) {
|
|
3263
3312
|
let t = e[0], n = e[4], r = e[8], i = e[1], a = e[5], o = e[9], s = e[2], c = e[6], l = e[10], u = a * l - o * c, d = -(i * l - o * s), f = i * c - a * s, p = -(n * l - r * c), m = t * l - r * s, h = -(t * c - n * s), g = n * o - r * a, _ = -(t * o - r * i), v = t * a - n * i, y = t * u + n * d + r * f || 1e-12, b = [
|
|
3264
3313
|
u / y,
|
|
3265
3314
|
d / y,
|
|
@@ -3273,12 +3322,12 @@ function Nn(e) {
|
|
|
3273
3322
|
], x = /* @__PURE__ */ new Float32Array(9);
|
|
3274
3323
|
return x[0] = b[0], x[1] = b[3], x[2] = b[6], x[3] = b[1], x[4] = b[4], x[5] = b[7], x[6] = b[2], x[7] = b[5], x[8] = b[8], x;
|
|
3275
3324
|
}
|
|
3276
|
-
function
|
|
3325
|
+
function Ln(e, t, n, r, i) {
|
|
3277
3326
|
i[0] = e[0] * t + e[3] * n + e[6] * r, i[1] = e[1] * t + e[4] * n + e[7] * r, i[2] = e[2] * t + e[5] * n + e[8] * r;
|
|
3278
3327
|
let a = Math.hypot(i[0], i[1], i[2]) || 1;
|
|
3279
3328
|
i[0] /= a, i[1] /= a, i[2] /= a;
|
|
3280
3329
|
}
|
|
3281
|
-
function
|
|
3330
|
+
function Rn(e) {
|
|
3282
3331
|
let t = 0, n = 0, r = !1, i = !1, a = !1, o = !1;
|
|
3283
3332
|
for (let s of e) t += s.vertexCount, n += s.index ? s.indexCount : s.vertexCount, s.attrs.normal && (r = !0), s.attrs.uv && (i = !0), s.attrs.uv1 && (a = !0), s.attrs.aAtlasRect && (o = !0);
|
|
3284
3333
|
let s = {
|
|
@@ -3323,10 +3372,10 @@ function Fn(e) {
|
|
|
3323
3372
|
0
|
|
3324
3373
|
], v = 0, y = 0;
|
|
3325
3374
|
for (let t of e) {
|
|
3326
|
-
let { attrs: e } = t, n = t.vertexCount, r =
|
|
3375
|
+
let { attrs: e } = t, n = t.vertexCount, r = Pn(t.matrix) ? null : t.matrix, i = r && c ? In(r) : null, a = e.position.array, o = e.normal?.array, b = e.uv?.array, x = e.uv1?.array, S = e.aColor.array, C = e.aBatchId.array, w = s.array, T = c?.array, ee = l?.array, te = u?.array, E = d.array, ne = f.array;
|
|
3327
3376
|
for (let e = 0; e < n; e++) {
|
|
3328
3377
|
let t = v + e;
|
|
3329
|
-
r ? (
|
|
3378
|
+
r ? (Fn(r, a[e * 3], a[e * 3 + 1], a[e * 3 + 2], _), w[t * 3] = _[0], w[t * 3 + 1] = _[1], w[t * 3 + 2] = _[2]) : (w[t * 3] = a[e * 3], w[t * 3 + 1] = a[e * 3 + 1], w[t * 3 + 2] = a[e * 3 + 2]), T && (o && i ? (Ln(i, o[e * 3], o[e * 3 + 1], o[e * 3 + 2], _), T[t * 3] = _[0], T[t * 3 + 1] = _[1], T[t * 3 + 2] = _[2]) : o && (T[t * 3] = o[e * 3], T[t * 3 + 1] = o[e * 3 + 1], T[t * 3 + 2] = o[e * 3 + 2])), ee && b && (ee[t * 2] = b[e * 2], ee[t * 2 + 1] = b[e * 2 + 1]), te && x && (te[t * 2] = x[e * 2], te[t * 2 + 1] = x[e * 2 + 1]), S ? (E[t * 3] = S[e * 3], E[t * 3 + 1] = S[e * 3 + 1], E[t * 3 + 2] = S[e * 3 + 2]) : (E[t * 3] = 1, E[t * 3 + 1] = 1, E[t * 3 + 2] = 1), ne[t] = C ? C[e] : -1;
|
|
3330
3379
|
}
|
|
3331
3380
|
if (p) {
|
|
3332
3381
|
let t = e.aAtlasRect?.array, r = e.aAtlasRect1?.array, i = e.aSecUv?.array, a = p.array, o = m.array, s = h.array;
|
|
@@ -3345,7 +3394,7 @@ function Fn(e) {
|
|
|
3345
3394
|
}
|
|
3346
3395
|
v += n;
|
|
3347
3396
|
}
|
|
3348
|
-
let b =
|
|
3397
|
+
let b = An(s.array, t);
|
|
3349
3398
|
return {
|
|
3350
3399
|
skeletonName: e[0].name,
|
|
3351
3400
|
geoNames: e.map((e) => e.name),
|
|
@@ -3370,11 +3419,11 @@ function Fn(e) {
|
|
|
3370
3419
|
batchedFrom: e.length
|
|
3371
3420
|
};
|
|
3372
3421
|
}
|
|
3373
|
-
function
|
|
3422
|
+
function zn(e, t, n, r) {
|
|
3374
3423
|
let i = t.vertexPackage, a = i.vertexAttributes.find((e) => e.semantic === "position");
|
|
3375
3424
|
if (!a) return r.push(`${e} 无 position`), null;
|
|
3376
3425
|
let o = i.verticesCount || 0, s = {
|
|
3377
|
-
position:
|
|
3426
|
+
position: En(a),
|
|
3378
3427
|
aColor: {
|
|
3379
3428
|
array: /* @__PURE__ */ new Float32Array(),
|
|
3380
3429
|
components: 3,
|
|
@@ -3386,13 +3435,13 @@ function In(e, t, n, r) {
|
|
|
3386
3435
|
normalized: !1
|
|
3387
3436
|
}
|
|
3388
3437
|
}, c = null, l = null, u = null, d = null, f = null;
|
|
3389
|
-
for (let e of i.vertexAttributes) e.divisor === void 0 && e.semantic !== "position" && (e.semantic === "color" ? c = e : e.semantic === "batchId" ? l = e : e.semantic === "normal" ? u =
|
|
3438
|
+
for (let e of i.vertexAttributes) e.divisor === void 0 && e.semantic !== "position" && (e.semantic === "color" ? c = e : e.semantic === "batchId" ? l = e : e.semantic === "normal" ? u = En(e) : e.semantic === "uv" ? d = En(e) : e.semantic === "uv2" && (f = En(e)));
|
|
3390
3439
|
s.aColor = {
|
|
3391
|
-
array:
|
|
3440
|
+
array: Dn(c, o),
|
|
3392
3441
|
components: 3,
|
|
3393
3442
|
normalized: !1
|
|
3394
3443
|
}, s.aBatchId = l ? {
|
|
3395
|
-
array:
|
|
3444
|
+
array: En(l).array,
|
|
3396
3445
|
components: 1,
|
|
3397
3446
|
normalized: !1
|
|
3398
3447
|
} : {
|
|
@@ -3427,7 +3476,7 @@ function In(e, t, n, r) {
|
|
|
3427
3476
|
indexCount: 0,
|
|
3428
3477
|
indexType: 0,
|
|
3429
3478
|
useIndex: 0,
|
|
3430
|
-
primitiveType:
|
|
3479
|
+
primitiveType: Mn,
|
|
3431
3480
|
indices: null,
|
|
3432
3481
|
passNames: []
|
|
3433
3482
|
}]), {
|
|
@@ -3436,10 +3485,10 @@ function In(e, t, n, r) {
|
|
|
3436
3485
|
instanced: i.instanceIndex !== -1 && (i.instanceMode === 16 || i.instanceMode === 17)
|
|
3437
3486
|
};
|
|
3438
3487
|
}
|
|
3439
|
-
function
|
|
3440
|
-
let o = n.vertexPackage.verticesCount || 0, s =
|
|
3441
|
-
return !
|
|
3442
|
-
array:
|
|
3488
|
+
function Bn(e, t, n, r, i, a) {
|
|
3489
|
+
let o = n.vertexPackage.verticesCount || 0, s = On(i), c = { ...r.attrs };
|
|
3490
|
+
return !Nn(i.primitiveType) && i.primitiveType !== Mn && !c.normal && (c.normal = {
|
|
3491
|
+
array: kn(c.position.array, s, o),
|
|
3443
3492
|
components: 3,
|
|
3444
3493
|
normalized: !1
|
|
3445
3494
|
}), {
|
|
@@ -3452,10 +3501,10 @@ function Ln(e, t, n, r, i, a) {
|
|
|
3452
3501
|
indexCount: i.indexCount || 0,
|
|
3453
3502
|
attributes: c,
|
|
3454
3503
|
index: s,
|
|
3455
|
-
bounds:
|
|
3504
|
+
bounds: An(c.position.array, o)
|
|
3456
3505
|
};
|
|
3457
3506
|
}
|
|
3458
|
-
function
|
|
3507
|
+
function Vn(e, t = {}) {
|
|
3459
3508
|
let n = t.batching !== !1, r = [], i = {
|
|
3460
3509
|
vertices: 0,
|
|
3461
3510
|
instanced: 0,
|
|
@@ -3463,19 +3512,19 @@ function Rn(e, t = {}) {
|
|
|
3463
3512
|
skipped: r
|
|
3464
3513
|
}, a = /* @__PURE__ */ new Map();
|
|
3465
3514
|
for (let [t, n] of Object.entries(e.geoPackage ?? {})) {
|
|
3466
|
-
let o =
|
|
3515
|
+
let o = zn(t, n, e, r);
|
|
3467
3516
|
o && (a.set(t, o), i.vertices += n.vertexPackage.verticesCount || 0);
|
|
3468
3517
|
}
|
|
3469
3518
|
let o = [], s = /* @__PURE__ */ new Map(), c = 0, l = (e) => {
|
|
3470
|
-
|
|
3519
|
+
Nn(e.primitiveType) && i.edgeLines++, o.push(e);
|
|
3471
3520
|
}, u = (e) => {
|
|
3472
3521
|
let t = e.passNames[0] ?? "__default__", n = s.get(t);
|
|
3473
3522
|
n || (n = [], s.set(t, n)), n.push(e);
|
|
3474
3523
|
}, d = (e, t, r, a, o) => {
|
|
3475
3524
|
let s = r.packs[a], d = r.instanced && !!t.vertexPackage.instanceBuffer && (t.vertexPackage.instanceCount ?? 0) > 0;
|
|
3476
|
-
|
|
3525
|
+
Nn(s.primitiveType) || d ? (d && i.instanced++, l(Bn(e, e, t, r, s, o)), c++) : n && s.primitiveType === 4 ? (u({
|
|
3477
3526
|
attrs: r.attrs,
|
|
3478
|
-
index:
|
|
3527
|
+
index: On(s),
|
|
3479
3528
|
vertexCount: t.vertexPackage.verticesCount || 0,
|
|
3480
3529
|
indexCount: s.indexCount || 0,
|
|
3481
3530
|
name: e,
|
|
@@ -3483,7 +3532,7 @@ function Rn(e, t = {}) {
|
|
|
3483
3532
|
matrix: o,
|
|
3484
3533
|
passNames: s.passNames ?? [],
|
|
3485
3534
|
primitiveType: s.primitiveType
|
|
3486
|
-
}), c++) : (l(
|
|
3535
|
+
}), c++) : (l(Bn(e, e, t, r, s, o)), c++);
|
|
3487
3536
|
};
|
|
3488
3537
|
for (let t of e.groupNode?.pageLods ?? []) for (let n of t.geodes ?? []) {
|
|
3489
3538
|
let t = n.matrix && n.matrix.length === 16 ? n.matrix : null;
|
|
@@ -3500,7 +3549,7 @@ function Rn(e, t = {}) {
|
|
|
3500
3549
|
}
|
|
3501
3550
|
if (s.size > 0) for (let [, e] of s) if (i.originalMeshes = (i.originalMeshes ?? 0) + e.length, e.length === 1) {
|
|
3502
3551
|
let t = e[0];
|
|
3503
|
-
l(
|
|
3552
|
+
l(Bn(t.name, t.name, t.geo, {
|
|
3504
3553
|
attrs: t.attrs,
|
|
3505
3554
|
packs: [],
|
|
3506
3555
|
instanced: !1
|
|
@@ -3512,17 +3561,17 @@ function Rn(e, t = {}) {
|
|
|
3512
3561
|
indices: t.index ? new Uint8Array(t.index.buffer, t.index.byteOffset, t.index.byteLength) : null,
|
|
3513
3562
|
passNames: t.passNames
|
|
3514
3563
|
}, t.matrix));
|
|
3515
|
-
} else l(
|
|
3564
|
+
} else l(Rn(e));
|
|
3516
3565
|
return {
|
|
3517
3566
|
primitives: o,
|
|
3518
3567
|
stats: i
|
|
3519
3568
|
};
|
|
3520
3569
|
}
|
|
3521
3570
|
// src/worker/transferables.ts
|
|
3522
|
-
var
|
|
3523
|
-
function
|
|
3571
|
+
var Hn = 12;
|
|
3572
|
+
function Un(e) {
|
|
3524
3573
|
let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = (e, i) => {
|
|
3525
|
-
if (e == null || i >
|
|
3574
|
+
if (e == null || i > Hn) return;
|
|
3526
3575
|
if (ArrayBuffer.isView(e)) {
|
|
3527
3576
|
let n = e.buffer;
|
|
3528
3577
|
n instanceof ArrayBuffer && t.add(n);
|
|
@@ -3544,40 +3593,43 @@ function Bn(e) {
|
|
|
3544
3593
|
return r(e, 0), [...t];
|
|
3545
3594
|
}
|
|
3546
3595
|
// src/worker/s3mWorker.ts
|
|
3547
|
-
var
|
|
3548
|
-
function
|
|
3549
|
-
let t =
|
|
3596
|
+
var Wn = self;
|
|
3597
|
+
function Gn(e) {
|
|
3598
|
+
let t = Un(e);
|
|
3550
3599
|
return e.bitmap && t.push(e.bitmap), t;
|
|
3551
3600
|
}
|
|
3552
|
-
|
|
3601
|
+
Wn.onmessage = async (e) => {
|
|
3553
3602
|
let t = e.data, { id: n } = t;
|
|
3554
3603
|
try {
|
|
3555
3604
|
if (t.type === "parse") {
|
|
3556
3605
|
let e = await nt(t.buffer);
|
|
3557
3606
|
if (t.assemble) {
|
|
3558
|
-
let r =
|
|
3559
|
-
|
|
3607
|
+
let r = Vn(e, { batching: t.batching });
|
|
3608
|
+
Wn.postMessage({
|
|
3560
3609
|
id: n,
|
|
3561
3610
|
ok: !0,
|
|
3562
3611
|
tile: e,
|
|
3563
3612
|
geometry: r
|
|
3564
|
-
}, [...
|
|
3565
|
-
} else
|
|
3613
|
+
}, [...Un(e), ...Un(r)]);
|
|
3614
|
+
} else Wn.postMessage({
|
|
3566
3615
|
id: n,
|
|
3567
3616
|
ok: !0,
|
|
3568
3617
|
tile: e
|
|
3569
|
-
},
|
|
3618
|
+
}, Un(e));
|
|
3570
3619
|
} else {
|
|
3571
|
-
let e = await
|
|
3572
|
-
|
|
3620
|
+
let e = await xn(t.tex, {
|
|
3621
|
+
compressed: t.compressed,
|
|
3622
|
+
maxSize: t.maxSize
|
|
3623
|
+
});
|
|
3624
|
+
Wn.postMessage({
|
|
3573
3625
|
id: n,
|
|
3574
3626
|
ok: !0,
|
|
3575
3627
|
data: e
|
|
3576
|
-
},
|
|
3628
|
+
}, Gn(e));
|
|
3577
3629
|
}
|
|
3578
3630
|
} catch (e) {
|
|
3579
3631
|
let t = e?.permanent === !0, r = String(e?.message ?? e);
|
|
3580
|
-
|
|
3632
|
+
Wn.postMessage({
|
|
3581
3633
|
id: n,
|
|
3582
3634
|
ok: !1,
|
|
3583
3635
|
message: r,
|