s3m-three 0.4.18 → 0.4.19

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.
Files changed (130) hide show
  1. package/dist/browser/assets/s3mWorker-4iTAmWIu.js +1 -0
  2. package/dist/browser/s3m-three.iife.ext-three.js +406 -91
  3. package/dist/browser/s3m-three.iife.js +434 -119
  4. package/dist/core/GaussianSplat.d.ts +64 -0
  5. package/dist/core/GaussianSplat.d.ts.map +1 -0
  6. package/dist/core/GaussianSplat.js +139 -0
  7. package/dist/core/GaussianSplat.js.map +1 -0
  8. package/dist/core/S3M1Parser.d.ts +1 -1
  9. package/dist/core/S3M1Parser.d.ts.map +1 -1
  10. package/dist/core/S3M1Parser.js +320 -25
  11. package/dist/core/S3M1Parser.js.map +1 -1
  12. package/dist/core/S3MBParser.d.ts.map +1 -1
  13. package/dist/core/S3MBParser.js +13 -0
  14. package/dist/core/S3MBParser.js.map +1 -1
  15. package/dist/core/S3MBlockParser.d.ts.map +1 -1
  16. package/dist/core/S3MBlockParser.js +56 -14
  17. package/dist/core/S3MBlockParser.js.map +1 -1
  18. package/dist/core/SplatLod.d.ts +36 -0
  19. package/dist/core/SplatLod.d.ts.map +1 -0
  20. package/dist/core/SplatLod.js +54 -0
  21. package/dist/core/SplatLod.js.map +1 -0
  22. package/dist/core/SplatProjection.d.ts +75 -0
  23. package/dist/core/SplatProjection.d.ts.map +1 -0
  24. package/dist/core/SplatProjection.js +162 -0
  25. package/dist/core/SplatProjection.js.map +1 -0
  26. package/dist/core/SplatSort.d.ts +13 -0
  27. package/dist/core/SplatSort.d.ts.map +1 -0
  28. package/dist/core/SplatSort.js +14 -0
  29. package/dist/core/SplatSort.js.map +1 -0
  30. package/dist/core/TexCoordZ.d.ts +94 -0
  31. package/dist/core/TexCoordZ.d.ts.map +1 -0
  32. package/dist/core/TexCoordZ.js +125 -0
  33. package/dist/core/TexCoordZ.js.map +1 -0
  34. package/dist/core/TextureDecode.d.ts +19 -0
  35. package/dist/core/TextureDecode.d.ts.map +1 -1
  36. package/dist/core/TextureDecode.js +53 -11
  37. package/dist/core/TextureDecode.js.map +1 -1
  38. package/dist/core/TileGeometry.d.ts +29 -0
  39. package/dist/core/TileGeometry.d.ts.map +1 -1
  40. package/dist/core/TileGeometry.js +130 -14
  41. package/dist/core/TileGeometry.js.map +1 -1
  42. package/dist/core/degradations.d.ts +37 -0
  43. package/dist/core/degradations.d.ts.map +1 -0
  44. package/dist/core/degradations.js +32 -0
  45. package/dist/core/degradations.js.map +1 -0
  46. package/dist/core/types.d.ts +36 -0
  47. package/dist/core/types.d.ts.map +1 -1
  48. package/dist/index.d.ts +7 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +4 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/render/DatasetManager.d.ts +11 -0
  53. package/dist/render/DatasetManager.d.ts.map +1 -1
  54. package/dist/render/DatasetManager.js +2 -0
  55. package/dist/render/DatasetManager.js.map +1 -1
  56. package/dist/render/FeatureStyleManager.d.ts.map +1 -1
  57. package/dist/render/FeatureStyleManager.js +7 -5
  58. package/dist/render/FeatureStyleManager.js.map +1 -1
  59. package/dist/render/GeometryBuilder.d.ts +24 -0
  60. package/dist/render/GeometryBuilder.d.ts.map +1 -1
  61. package/dist/render/GeometryBuilder.js +196 -5
  62. package/dist/render/GeometryBuilder.js.map +1 -1
  63. package/dist/render/Picker.d.ts.map +1 -1
  64. package/dist/render/Picker.js +19 -5
  65. package/dist/render/Picker.js.map +1 -1
  66. package/dist/render/S3MViewer.d.ts +69 -0
  67. package/dist/render/S3MViewer.d.ts.map +1 -1
  68. package/dist/render/S3MViewer.js +222 -12
  69. package/dist/render/S3MViewer.js.map +1 -1
  70. package/dist/render/SplatMaterial.d.ts +103 -0
  71. package/dist/render/SplatMaterial.d.ts.map +1 -0
  72. package/dist/render/SplatMaterial.js +388 -0
  73. package/dist/render/SplatMaterial.js.map +1 -0
  74. package/dist/render/SplatSorter.d.ts +14 -0
  75. package/dist/render/SplatSorter.d.ts.map +1 -0
  76. package/dist/render/SplatSorter.js +59 -0
  77. package/dist/render/SplatSorter.js.map +1 -0
  78. package/dist/render/StyleMaterial.d.ts +48 -0
  79. package/dist/render/StyleMaterial.d.ts.map +1 -1
  80. package/dist/render/StyleMaterial.js +292 -69
  81. package/dist/render/StyleMaterial.js.map +1 -1
  82. package/dist/render/TextureFactory.d.ts +10 -0
  83. package/dist/render/TextureFactory.d.ts.map +1 -1
  84. package/dist/render/TextureFactory.js +35 -5
  85. package/dist/render/TextureFactory.js.map +1 -1
  86. package/dist/render/lightingPreset.d.ts +53 -0
  87. package/dist/render/lightingPreset.d.ts.map +1 -0
  88. package/dist/render/lightingPreset.js +36 -0
  89. package/dist/render/lightingPreset.js.map +1 -0
  90. package/dist/render/materialAlpha.d.ts +51 -0
  91. package/dist/render/materialAlpha.d.ts.map +1 -0
  92. package/dist/render/materialAlpha.js +68 -0
  93. package/dist/render/materialAlpha.js.map +1 -0
  94. package/dist/tileset/S3MTileset.d.ts +42 -0
  95. package/dist/tileset/S3MTileset.d.ts.map +1 -1
  96. package/dist/tileset/S3MTileset.js +52 -1
  97. package/dist/tileset/S3MTileset.js.map +1 -1
  98. package/dist/vendor/browser-node-stub.js +10 -0
  99. package/dist/worker/s3mWorker.js +1166 -979
  100. package/dist/worker/s3mWorker.js.map +1 -1
  101. package/docs/API.md +55 -1
  102. package/docs/FORMAT-NOTES.md +338 -0
  103. package/package.json +1 -1
  104. package/src/core/GaussianSplat.ts +175 -0
  105. package/src/core/S3M1Parser.ts +330 -24
  106. package/src/core/S3MBParser.ts +18 -0
  107. package/src/core/S3MBlockParser.ts +56 -11
  108. package/src/core/SplatLod.ts +83 -0
  109. package/src/core/SplatProjection.ts +231 -0
  110. package/src/core/SplatSort.ts +30 -0
  111. package/src/core/TexCoordZ.ts +160 -0
  112. package/src/core/TextureDecode.ts +63 -11
  113. package/src/core/TileGeometry.ts +138 -14
  114. package/src/core/degradations.ts +74 -0
  115. package/src/core/types.ts +32 -0
  116. package/src/index.ts +8 -1
  117. package/src/render/DatasetManager.ts +10 -0
  118. package/src/render/FeatureStyleManager.ts +7 -5
  119. package/src/render/GeometryBuilder.ts +239 -6
  120. package/src/render/Picker.ts +21 -5
  121. package/src/render/S3MViewer.ts +255 -11
  122. package/src/render/SplatMaterial.ts +433 -0
  123. package/src/render/SplatSorter.ts +59 -0
  124. package/src/render/StyleMaterial.ts +339 -69
  125. package/src/render/TextureFactory.ts +39 -5
  126. package/src/render/lightingPreset.ts +76 -0
  127. package/src/render/materialAlpha.ts +75 -0
  128. package/src/tileset/S3MTileset.ts +78 -1
  129. package/src/vendor/browser-node-stub.js +10 -0
  130. package/dist/browser/assets/s3mWorker-BjPOUgjg.js +0 -1
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * 结构(root / L16 / L17 / L18 四块真实瓦片交叉标定,链尾全部精确闭合):
8
8
  * ```
9
- * byte[4] 's3m\0' + zlib
9
+ * byte[4] 's3m' + 版本字节(0 = 老导出,1 = iServer 2025 起)+ zlib
10
10
  * 解压后:
11
11
  * uint32 xmlSize; byte[] XML; <补齐 4 字节对齐>
12
12
  * uint32 geoSize; 几何流
@@ -15,8 +15,9 @@
15
15
  *
16
16
  * 几何流: uint32 meshCount,然后每块网格
17
17
  * uint32 geoName; uint32 7; uint32 772; uint32 V; uint32 0
18
- * V × 16B 顶点 (x, y, z, w),实测 w 恒等于 z
19
- * uint32[6] 数组头 [0,0,0,kind=1,count=V,flag=2]
18
+ * V × 16B 顶点 (x, y, z, w),实测 w 恒等于 z ← 版本 0
19
+ * V × 12B 顶点 (x, y, z) ← 版本 1(部分数据)
20
+ * uint32[6] 数组头 [0,0,0,kind=1,count=V,flag=2] ← 版本 0
20
21
  * V × 8B UV (u, v)
21
22
  * uint32[3] 索引头 [1, indexCount, 0x00040100]
22
23
  * indexCount × uint16 // indexCount 恒为 3 的倍数,值域最大 V-1
@@ -28,16 +29,58 @@
28
29
  * byte[size] // 实测 format=14、0.5B/px,即 DXT1
29
30
  * ```
30
31
  *
32
+ * **版本 0 与版本 1 的几何流布局不同**(2026-10-28 用 SuperMap Online 的
33
+ * `3D-tishuju`(体数据)与 `3D-Histogram`(柱状图)两组真实瓦片标定):
34
+ * - 版本 0:顶点恒 vec4(16B),顶点块之后一定是上面那套 UV 头。
35
+ * - 版本 1:顶点有 vec3(12B) / vec4(16B) 两种;顶点块之后是若干「属性块」,
36
+ * 块头里带 count=V,但块数(3~4)与行宽逐网格不同,UV / 法线 / 颜色的顺序
37
+ * 没有稳定规律可循(同一文件里 4 个网格的记录长度都不一样)。
38
+ * 所以版本 1 只取顶点与索引,中间那一段属性块整段跳过 —— 实测这两类数据的
39
+ * 材质都没有纹理(texSize 只有 count=0),跳过不影响画面。
40
+ * 索引段带固定标记 `[1, indexCount, 0x00040100]`,跳过就靠它定位。
41
+ *
42
+ * 版本 1 的顶点还可能是**归一化模板**(柱状图:x/z 落在 [-0.5,0.5]、y 落在 [0,1],
43
+ * 即一根菱形截面柱),真实位置与尺寸只写在记录尾的 `[1][8][minx…maxz]` 量化盒里。
44
+ * 不展开的话所有柱子都叠在原点 1 米见方 —— 画面上等于「什么都没加载出来」。
45
+ * 展开后每块网格的包围盒与 XML 的 BoundingSphere 完全重合(4/4,误差 0.00m)。
46
+ *
47
+ * ★ 柱状图真正的几何是**实例化**的(对应规范里 VertexDataPackage 的 InstanceInfo /
48
+ * InstanceObject):瓦片里只有一份「单位盒模板」,每根柱是一条 20 float 记录:
49
+ * [0..11] 3×4 行主序仿射矩阵(缩放≈45 / 平移=柱底中心)
50
+ * [12..15] RGBA —— 官方截图里黄/绿/红的来源
51
+ * [16..19] 预留(值与权重之类,本库暂不用)
52
+ * 实测一块 250×50m 的瓦片里 11 条记录、缩放 45×45×38~44,柱间距 50m,与官方渲染一致。
53
+ * 实例数组紧贴记录尾的量化盒([1][8]+6 float),从盒往前按 80 字节回溯就能整段取到;
54
+ * 块头到实例数组之间还夹着长度不定的零区,所以**不能**正向扫固定偏移。
55
+ *
56
+ * ★ S3M 1.x 容器**没有 pickInfo 段**,而拾取链路(Picker → _instanceFeature)全靠
57
+ * pickInfo.instanceIds 把实例序号翻译成 SMID,缺了它就是「看得见、点不中」。
58
+ * 所以实例化网格会合成一份:控制位 = 实例序号,SMID = geoName × 1e6 + 序号。
59
+ * 非实例化网格不需要(拾取退化成「整块网格」,本来就能选中)。
60
+ *
31
61
  * 几何里**没有法线数组**,交给 GeometryBuilder 在绑定索引后 computeVertexNormals()。
32
62
  */
33
63
  import { BinaryReader } from './BinaryReader.js';
34
- /** S3M 1.x 魔数:ASCII "s3m" + 结尾 0 */
64
+ /**
65
+ * S3M 1.x 魔数:ASCII "s3m" + 1 字节版本号。
66
+ *
67
+ * 第 4 字节**不是常量 0**:老导出写 0x00,iServer 2025 写 0x01。原先逐字比对
68
+ * `s3m\0`,版本 1 的瓦片就落到 2.x/3.x 分支,4 字节魔数被当 float32 版本号
69
+ * (≈1.4e-38),紧跟的 zlib 头被当压缩长度,最终抛
70
+ * `RangeError: Invalid typed array length: 1424349816` —— 完全看不出根因。
71
+ * 版本 2 起结构可能再变,宁可让它在 2.x 分支明确报错,也不要猜着解。
72
+ */
35
73
  const S3M_V1_MAGIC = 0x006d3373;
36
- /** 是不是 S3M 1.x 容器 */
74
+ const S3M_V1_MAGIC_MASK = 0x00ffffff;
75
+ const S3M_V1_MAX_VERSION = 1;
76
+ /** 是不是 S3M 1.x 容器(版本字节 0 或 1) */
37
77
  export function isS3M1Buffer(buffer) {
38
78
  if (buffer.byteLength < 8)
39
79
  return false;
40
- return new DataView(buffer, 0, 8).getUint32(0, true) === S3M_V1_MAGIC;
80
+ const v = new DataView(buffer, 0, 8).getUint32(0, true);
81
+ if ((v & S3M_V1_MAGIC_MASK) !== S3M_V1_MAGIC)
82
+ return false;
83
+ return v >>> 24 <= S3M_V1_MAX_VERSION;
41
84
  }
42
85
  async function defaultInflate(bytes) {
43
86
  const DS = globalThis.DecompressionStream;
@@ -130,11 +173,175 @@ function parseXmlMaterials(xml) {
130
173
  }
131
174
  return out;
132
175
  }
176
+ /** 索引头的第 3 个 dword,全版本固定 */
177
+ const INDEX_HEADER_MARK = 0x00040100;
178
+ /**
179
+ * v1 里每个实例记录固定 20 个 float(80 字节):
180
+ * [0..11] 3×4 行主序仿射矩阵(第 4 行隐式 0,0,0,1)
181
+ * [12..15] RGBA —— 实测就是柱子的配色,官方截图里那些黄/绿/红
182
+ * [16..19] 预留(值/权重之类,本库暂时不用)
183
+ * 取前 16 个交给 GeometryBuilder,正好对上它认的 stride=16(矩阵 + 颜色)。
184
+ */
185
+ const V1_INSTANCE_FLOATS = 20;
186
+ const V1_INSTANCE_BYTES = V1_INSTANCE_FLOATS * 4;
187
+ /**
188
+ * 合成 SMID 时给每个 geoName 留的实例位宽。
189
+ *
190
+ * geoName 是 uint32 哈希,乘 1e6 后最大约 4.29e15,仍在 Number 安全整数范围内
191
+ * (9.007e15),所以「geoName × 1e6 + 实例序号」可以当作全局唯一键。
192
+ * S3M 1.x 容器不带单体化信息,SMID 只能这样合成——它只用于本库内部的拾取/描边,
193
+ * 和 iServer 侧的 SMID 没有对应关系。
194
+ */
195
+ const S3M1_SMID_STRIDE = 1_000_000;
196
+ /**
197
+ * 解析实例化数组。
198
+ *
199
+ * 地块级数据(柱状图)不是「一堆柱子的顶点」,而是**一份模板几何 + N 个变换矩阵**:
200
+ * 顶点是单位盒(x/z ∈ [-0.5,0.5]、y ∈ [0,1]),真实位置/尺寸/颜色全在实例矩阵里。
201
+ * 块内布局(实测 5 个网格交叉验证,N 全是整数):
202
+ * [V][2] 块头 | V×8 字节(恒 0) | [1][20] 头 | N×80 实例 | [1][8] + 6 float 量化盒
203
+ */
204
+ function readInstances(view, from, to) {
205
+ // 实例数组紧贴量化盒([1][8] + 6 float)。从它往前按 80 字节回溯,
206
+ // 一旦遇到不像矩阵的记录就停 —— 块头到实例数组之间还夹着长度不定的零区,
207
+ // 正向扫「[1][20] 头」只在单实例的网格上成立(多实例的网格压根没这个头)。
208
+ let aabb = -1;
209
+ for (let p = to - 12; p >= from; p -= 4) {
210
+ if (view.getUint32(p, true) === 1 && view.getUint32(p + 4, true) === 8) {
211
+ aabb = p;
212
+ break;
213
+ }
214
+ }
215
+ if (aabb < 0)
216
+ return null;
217
+ const ok = (o) => {
218
+ const m00 = view.getFloat32(o, true);
219
+ const m11 = view.getFloat32(o + 20, true);
220
+ const m22 = view.getFloat32(o + 40, true);
221
+ const tx = view.getFloat32(o + 12, true);
222
+ const ty = view.getFloat32(o + 28, true);
223
+ const tz = view.getFloat32(o + 44, true);
224
+ if (![m00, m11, m22, tx, ty, tz].every(Number.isFinite))
225
+ return false;
226
+ if (Math.abs(tx) > 1e7 || Math.abs(ty) > 1e7 || Math.abs(tz) > 1e7)
227
+ return false;
228
+ // 缩放不能全是 0:零填充区被这条挡掉
229
+ if (m00 === 0 && m11 === 0 && m22 === 0)
230
+ return false;
231
+ for (let k = 12; k < 16; k++) {
232
+ const c = view.getFloat32(o + k * 4, true);
233
+ if (!Number.isFinite(c) || Math.abs(c) > 1e3)
234
+ return false;
235
+ }
236
+ return true;
237
+ };
238
+ let start = aabb;
239
+ while (start - V1_INSTANCE_BYTES >= from && ok(start - V1_INSTANCE_BYTES)) {
240
+ start -= V1_INSTANCE_BYTES;
241
+ }
242
+ const count = (aabb - start) / V1_INSTANCE_BYTES;
243
+ if (count <= 0 || count > 1_000_000)
244
+ return null;
245
+ const out = new Float32Array(count * 16);
246
+ for (let i = 0; i < count; i++) {
247
+ const o = start + i * V1_INSTANCE_BYTES;
248
+ for (let k = 0; k < 16; k++)
249
+ out[i * 16 + k] = view.getFloat32(o + k * 4, true);
250
+ }
251
+ return { count, floats: out };
252
+ }
253
+ /**
254
+ * 从 `from` 起找索引头 `[1, indexCount, 0x00040100]`,返回相对偏移,找不到返回 -1。
255
+ *
256
+ * 只在「顶点块之后那段不是版本 0 的 UV 头」时用得到:版本 1 的属性块布局没有
257
+ * 稳定规律,与其猜行宽,不如直接跳到结构最稳定的索引段。
258
+ */
259
+ function findIndexHeader(view, from) {
260
+ const limit = view.byteLength - 12;
261
+ for (let p = from; p <= limit; p += 4) {
262
+ if (view.getUint32(p, true) !== 1)
263
+ continue;
264
+ const count = view.getUint32(p + 4, true);
265
+ if (count === 0 || count % 3 !== 0)
266
+ continue;
267
+ if (view.getUint32(p + 8, true) !== INDEX_HEADER_MARK)
268
+ continue;
269
+ return p;
270
+ }
271
+ return -1;
272
+ }
273
+ /**
274
+ * 从 `to - 12` 往前找量化盒 `[1][8][minx,miny,minz,maxx,maxy,maxz]`,返回 6 个 float。
275
+ *
276
+ * 版本 1 的柱状图(`3D-Histogram`)把顶点压进单位盒(x/z 落在 [-0.5,0.5]、y 落在 [0,1],
277
+ * 就是「一根菱形截面的柱」的模板),真实位置与尺寸只存在记录尾部这个盒里。不反量化的
278
+ * 话所有柱子都叠在原点、边长 1 米,看起来就是「什么都加载不出来」。
279
+ *
280
+ * 反过来从索引头往前扫:同一个记录里可能还有别的 `[1][8]`(实测 mesh1 就有一个诱饵),
281
+ * 越靠后越可能是真正的那个。盒本身要求每轴 min < max,这是排除诱饵的硬条件。
282
+ */
283
+ function findQuantBox(view, from, to) {
284
+ for (let p = to - 12; p >= from; p -= 4) {
285
+ if (view.getUint32(p, true) !== 1 || view.getUint32(p + 4, true) !== 8)
286
+ continue;
287
+ if (p + 32 > view.byteLength)
288
+ continue;
289
+ const f = new Float32Array(6);
290
+ let ok = true;
291
+ for (let i = 0; i < 6; i++) {
292
+ const v = view.getFloat32(p + 8 + i * 4, true);
293
+ if (!Number.isFinite(v) || Math.abs(v) > 1e7) {
294
+ ok = false;
295
+ break;
296
+ }
297
+ f[i] = v;
298
+ }
299
+ if (!ok)
300
+ continue;
301
+ if (!(f[0] < f[3] && f[1] < f[4] && f[2] < f[5]))
302
+ continue;
303
+ return f;
304
+ }
305
+ return null;
306
+ }
307
+ /**
308
+ * 顶点落在 [-1, 1] 里就认为它是「归一化模板」,按盒逐轴拉伸回去。
309
+ *
310
+ * 逐轴用自己的包围盒做映射(而不是假设 [0,1] 或 [-0.5,0.5]):实测柱状图 x、z 是
311
+ * [-0.5,0.5]、y 是 [0,1],硬编码任一约定都会把柱子摆错。
312
+ */
313
+ function applyQuantBox(position, box) {
314
+ const min = [Infinity, Infinity, Infinity];
315
+ const max = [-Infinity, -Infinity, -Infinity];
316
+ for (let i = 0; i < position.length; i += 3) {
317
+ for (let a = 0; a < 3; a++) {
318
+ const v = position[i + a];
319
+ if (v < min[a])
320
+ min[a] = v;
321
+ if (v > max[a])
322
+ max[a] = v;
323
+ }
324
+ }
325
+ for (let a = 0; a < 3; a++) {
326
+ if (!(Math.abs(min[a]) <= 1.001 && Math.abs(max[a]) <= 1.001))
327
+ return false;
328
+ }
329
+ for (let a = 0; a < 3; a++) {
330
+ const span = max[a] - min[a];
331
+ const scale = (box[a + 3] - box[a]) / (span > 1e-6 ? span : 1);
332
+ const base = box[a] - (span > 1e-6 ? min[a] * scale : (box[a + 3] - box[a]) / 2);
333
+ for (let i = a; i < position.length; i += 3)
334
+ position[i] = base + position[i] * scale;
335
+ }
336
+ return true;
337
+ }
133
338
  function readGeometry(br, geoSize) {
134
339
  const meshCount = br.u32();
135
340
  if (meshCount > 4096)
136
341
  throw new Error(`[s3m] S3M 1.x 网格数异常:${meshCount}`);
137
342
  const out = [];
343
+ let skippedAttrs = 0;
344
+ let quantized = 0;
138
345
  for (let m = 0; m < meshCount; m++) {
139
346
  const geoName = String(br.u32());
140
347
  const seven = br.u32();
@@ -144,31 +351,69 @@ function readGeometry(br, geoSize) {
144
351
  if (!(V > 0 && V <= 8_000_000)) {
145
352
  throw new Error(`[s3m] S3M 1.x 顶点数异常:网格 ${geoName} V=${V}(字段 7=${seven} 772=${seven72})`);
146
353
  }
147
- // 顶点 (x, y, z, w);w 实测恒等于 z
354
+ // 顶点:版本 0 是 vec4(x,y,z,w),w 实测恒等于 z;版本 1 有一半数据是 vec3。
355
+ // 先认版本 0 的 UV 头(不传参时走的还是这条老路,判据一字未改),认不出才用
356
+ // 「顶点块之后那块的头 dword 等于 V」去定行宽。
357
+ const posStart = br.offset;
358
+ const u32At = (off) => off + 4 <= br.view.byteLength ? br.view.getUint32(off, true) : -1;
359
+ const v0UvAt16 = u32At(posStart + V * 16 + 12) === 1 && u32At(posStart + V * 16 + 16) === V;
360
+ const stride = v0UvAt16
361
+ ? 16
362
+ : u32At(posStart + V * 16) === V
363
+ ? 16
364
+ : 12;
148
365
  const position = new Float32Array(V * 3);
149
366
  for (let i = 0; i < V; i++) {
150
367
  const x = br.f32();
151
368
  const y = br.f32();
152
369
  const z = br.f32();
153
- br.f32(); // w == z
370
+ if (stride === 16)
371
+ br.f32(); // w
154
372
  position[i * 3] = x;
155
373
  position[i * 3 + 1] = y;
156
374
  position[i * 3 + 2] = z;
157
375
  }
158
- // UV 数组头 [0,0,0,kind=1,count=V,flag=2]
159
- br.u32();
160
- br.u32();
161
- br.u32();
162
- const uvKind = br.u32();
163
- const uvCount = br.u32();
164
- br.u32(); // flag
165
- if (uvKind !== 1 || uvCount !== V) {
166
- throw new Error(`[s3m] S3M 1.x UV 头不符:网格 ${geoName} kind=${uvKind} count=${uvCount} 期望 1/${V}`);
167
- }
168
376
  const uv = new Float32Array(V * 2);
169
- for (let i = 0; i < V; i++) {
170
- uv[i * 2] = br.f32();
171
- uv[i * 2 + 1] = br.f32();
377
+ let instances;
378
+ if (v0UvAt16) {
379
+ // 版本 0:UV 数组头 [0,0,0,kind=1,count=V,flag=2]
380
+ br.u32();
381
+ br.u32();
382
+ br.u32();
383
+ const uvKind = br.u32();
384
+ const uvCount = br.u32();
385
+ br.u32(); // flag
386
+ if (uvKind !== 1 || uvCount !== V) {
387
+ throw new Error(`[s3m] S3M 1.x UV 头不符:网格 ${geoName} kind=${uvKind} count=${uvCount} 期望 1/${V}`);
388
+ }
389
+ for (let i = 0; i < V; i++) {
390
+ uv[i * 2] = br.f32();
391
+ uv[i * 2 + 1] = br.f32();
392
+ }
393
+ }
394
+ else {
395
+ // 版本 1:顶点块之后是若干属性块(UV / 法线 / 颜色混排,行宽逐网格不同),
396
+ // 整段跳过,靠索引头的固定标记落位。这两类数据没有纹理,跳过不影响画面。
397
+ const at = findIndexHeader(br.view, br.offset);
398
+ if (at < 0) {
399
+ throw new Error(`[s3m] S3M 1.x 属性段无法定位索引头:网格 ${geoName}(偏移 ${br.offset}/${geoSize})`);
400
+ }
401
+ if (at !== br.offset) {
402
+ skippedAttrs++;
403
+ // 优先认实例化:柱状图是真·实例化的(一份模板 + N 个变换矩阵),
404
+ // 顶点本来就该保持单位盒,靠矩阵摆位/缩放/上色。
405
+ const inst = readInstances(br.view, br.offset, at);
406
+ if (inst) {
407
+ instances = inst.floats;
408
+ }
409
+ else {
410
+ // 没有实例矩阵时,顶点是归一化模板,用记录尾的量化盒展开兜底
411
+ const box = findQuantBox(br.view, br.offset, at);
412
+ if (box)
413
+ quantized += applyQuantBox(position, box) ? 1 : 0;
414
+ }
415
+ br.offset = at;
416
+ }
172
417
  }
173
418
  // 索引头 [1, indexCount, 0x00040100]
174
419
  const idxKind = br.u32();
@@ -188,9 +433,18 @@ function readGeometry(br, geoSize) {
188
433
  if (one !== 1) {
189
434
  throw new Error(`[s3m] S3M 1.x 记录尾标记异常:网格 ${geoName} 期望 1 实得 ${one}`);
190
435
  }
191
- out.push({ geoName, vertexCount: V, position, uv, indexCount, indices, materialId });
436
+ out.push({
437
+ geoName,
438
+ vertexCount: V,
439
+ position,
440
+ uv,
441
+ indexCount,
442
+ indices,
443
+ materialId,
444
+ ...(instances ? { instances } : {}),
445
+ });
192
446
  }
193
- return out;
447
+ return { meshes: out, skippedAttrs, quantized };
194
448
  }
195
449
  /**
196
450
  * 按「字节/像素」反推 S3MPixelFormat。
@@ -254,6 +508,9 @@ function readTextures(br, texSize) {
254
508
  return out;
255
509
  }
256
510
  /* ------------------------------------------------------------------ 入口 */
511
+ /** 版本 1 布局的提示只打一次:几百块瓦片各喊一句会把控制台刷爆 */
512
+ let warnedV1Attrs = false;
513
+ let warnedQuantBox = false;
257
514
  export async function parseS3M1(arrayBuffer, options = {}) {
258
515
  const inflate = options.inflate ?? defaultInflate;
259
516
  const r = new BinaryReader(arrayBuffer);
@@ -269,7 +526,16 @@ export async function parseS3M1(arrayBuffer, options = {}) {
269
526
  br.offset = align4(br.offset);
270
527
  const geoSize = br.u32();
271
528
  const geoStart = br.offset;
272
- const meshes = readGeometry(new BinaryReader(br.buffer, br.base + geoStart, geoSize), geoSize);
529
+ const { meshes, skippedAttrs, quantized } = readGeometry(new BinaryReader(br.buffer, br.base + geoStart, geoSize), geoSize);
530
+ if (quantized && !warnedQuantBox) {
531
+ warnedQuantBox = true;
532
+ console.warn(`[s3m] S3M 1.x(版本 1 布局):顶点是归一化模板,已按记录尾的量化盒展开到真实尺寸/位置(本进程只提示一次)。`);
533
+ }
534
+ if (skippedAttrs && !warnedV1Attrs) {
535
+ warnedV1Attrs = true;
536
+ console.warn(`[s3m] S3M 1.x(版本 1 布局):UV/法线/颜色属性块已跳过,几何与索引正常。` +
537
+ `若该数据集带纹理,贴图会取到同一像素(本进程只提示一次)。`);
538
+ }
273
539
  br.offset = geoStart + geoSize;
274
540
  const smallSize = br.u32();
275
541
  br.skip(smallSize);
@@ -303,6 +569,30 @@ export async function parseS3M1(arrayBuffer, options = {}) {
303
569
  instanceMode: 0,
304
570
  instanceIndex: -1,
305
571
  };
572
+ let pickInfo;
573
+ if (mesh.instances && mesh.instances.length >= 16) {
574
+ // stride 16 = 3×4 行主序矩阵 + RGBA,正是 GeometryBuilder 认的布局:
575
+ // 它会 setMatrixAt(i) 并拿 [12..14] 当实例颜色(柱状图的黄/绿/红就来自这里)
576
+ const count = mesh.instances.length / 16;
577
+ vp.instanceCount = count;
578
+ vp.instanceMode = 16;
579
+ vp.instanceIndex = 0;
580
+ vp.instanceBuffer = new Uint8Array(mesh.instances.buffer, mesh.instances.byteOffset, mesh.instances.byteLength);
581
+ // S3M 1.x 容器里**没有 pickInfo 段**,而拾取链路(Picker → _instanceFeature)
582
+ // 完全靠 pickInfo.instanceIds 把「实例序号」翻译成 SMID;缺了它就一路返回 null,
583
+ // 表现就是「模型能看见、但怎么点都选不中」。这里按实例合成一份:
584
+ // 控制位 = 实例序号(写进 aInstanceBatchId,状态纹理按它索引)
585
+ // SMID = geoName × 1e6 + 实例序号(哈希值本身 32 位,跨瓦片不重复)
586
+ const ids = new Float32Array(count);
587
+ const instPick = {};
588
+ const smidBase = Number(mesh.geoName) * S3M1_SMID_STRIDE;
589
+ for (let i = 0; i < count; i++) {
590
+ ids[i] = i;
591
+ instPick[smidBase + i] = { batchId: i, instanceIds: [i] };
592
+ }
593
+ vp.instanceBatchIds = ids;
594
+ pickInfo = instPick;
595
+ }
306
596
  const pack = {
307
597
  indexCount: mesh.indexCount,
308
598
  indexType: 0, // 0 = UNSIGNED_SHORT
@@ -311,7 +601,12 @@ export async function parseS3M1(arrayBuffer, options = {}) {
311
601
  indices: new Uint8Array(mesh.indices.buffer, mesh.indices.byteOffset, mesh.indices.byteLength),
312
602
  passNames: [mesh.materialId],
313
603
  };
314
- geoPackage[name] = { name, vertexPackage: vp, indexPackages: [pack] };
604
+ geoPackage[name] = {
605
+ name,
606
+ vertexPackage: vp,
607
+ indexPackages: [pack],
608
+ ...(pickInfo ? { pickInfo } : {}),
609
+ };
315
610
  }
316
611
  // pageLods 与网格必须按 GeoName 绑定,不能按出现顺序:
317
612
  // 实测 L18 的 XML 列出 [2690529118, 1463699937, 451097586, 4063742103],
@@ -1 +1 @@
1
- {"version":3,"file":"S3M1Parser.js","sourceRoot":"","sources":["../../src/core/S3M1Parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"S3M1Parser.js","sourceRoot":"","sources":["../../src/core/S3M1Parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"S3MBParser.d.ts","sourceRoot":"","sources":["../../src/core/S3MBParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,KAAK,EAGV,eAAe,EAEf,SAAS,EAGT,UAAU,EAIV,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,WAAW;;;;CAAyC,CAAC;AAElE,eAAO,MAAM,SAAS;;;;;CAAgE,CAAC;AACvF,eAAO,MAAM,WAAW;;;;CAAiD,CAAC;AAa1E,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AAE/E,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mBAAmB;IACnB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACtE;AA8ED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAMjF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAG1E;AAyOD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,CAAC,EAAE,YAAY,EACf,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAsE1C;AAED,wBAAsB,cAAc,CAClC,CAAC,EAAE,YAAY,EACf,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAe1C;AAuCD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,YAAY,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC3C,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAShC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,YAAY,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC3C,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwDzB;AAID;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,SAAS,QAAQ;gBACd,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4DzG;AAED,YAAY,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"S3MBParser.d.ts","sourceRoot":"","sources":["../../src/core/S3MBParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,OAAO,KAAK,EAGV,eAAe,EAEf,SAAS,EAGT,UAAU,EAIV,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,WAAW;;;;CAAyC,CAAC;AAElE,eAAO,MAAM,SAAS;;;;;CAAgE,CAAC;AACvF,eAAO,MAAM,WAAW;;;;CAAiD,CAAC;AAa1E,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AAE/E,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,mBAAmB;IACnB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACtE;AA8ED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAMjF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAG1E;AAyOD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,CAAC,EAAE,YAAY,EACf,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAsE1C;AAED,wBAAsB,cAAc,CAClC,CAAC,EAAE,YAAY,EACf,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAe1C;AAuCD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,CAAC,EAAE,YAAY,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC3C,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAShC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,YAAY,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,EAC3C,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAwDzB;AAID;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,SAAS,QAAQ;gBACd,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CA6EzG;AAED,YAAY,EAAE,eAAe,EAAE,CAAC"}
@@ -564,6 +564,18 @@ export async function parseS3MB(arrayBuffer, options = {}) {
564
564
  const s = t.string();
565
565
  extensions = s ? JSON.parse(s) : undefined;
566
566
  }
567
+ // 3DGS:泼溅参数(gsScale / gsRotation)的量化格式已经标定(见 core/GaussianSplat.ts),
568
+ // 正常数据会被渲染成各向异性的高斯片,**这不再是降级**。
569
+ // 只有「数据声称自己是 3DGS、但骨架里根本没有这两条流」时才退回点渲染 ——
570
+ // 那种情况没有任何东西可以补,只能如实上报,而不是画一堆点让人猜。
571
+ const degradations = [];
572
+ const gs = extensions
573
+ ?.GaussianSplatting;
574
+ if (gs?.isGaussianSplatting) {
575
+ const hasSplatStreams = Object.values(geoPackage).some((e) => e.vertexPackage.vertexAttributes.some((a) => a.semantic === 'gsScale' || a.semantic === 'gsRotation'));
576
+ if (!hasSplatStreams)
577
+ degradations.push('gaussian-splatting-points');
578
+ }
567
579
  return {
568
580
  version,
569
581
  compressedType,
@@ -574,6 +586,7 @@ export async function parseS3MB(arrayBuffer, options = {}) {
574
586
  materials,
575
587
  pickInfo,
576
588
  extensions,
589
+ ...(degradations.length > 0 ? { degradations } : {}),
577
590
  bytesRead: t.offset,
578
591
  bytesTotal: t.view.byteLength,
579
592
  };