s3m-three 0.4.26 → 0.4.27

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 (71) hide show
  1. package/dist/browser/assets/{s3mWorker-DHOVIrAU.js → s3mWorker-BfSBNvF5.js} +1 -1
  2. package/dist/browser/s3m-three.iife.ext-three.js +52 -40
  3. package/dist/browser/s3m-three.iife.js +52 -40
  4. package/dist/core/BakeMercator.d.ts +54 -0
  5. package/dist/core/BakeMercator.d.ts.map +1 -0
  6. package/dist/core/BakeMercator.js +65 -0
  7. package/dist/core/BakeMercator.js.map +1 -0
  8. package/dist/core/TileGeometry.d.ts +7 -0
  9. package/dist/core/TileGeometry.d.ts.map +1 -1
  10. package/dist/core/TileGeometry.js +20 -0
  11. package/dist/core/TileGeometry.js.map +1 -1
  12. package/dist/index.d.ts +4 -3
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +2 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/render/DatasetManager.d.ts +27 -0
  17. package/dist/render/DatasetManager.d.ts.map +1 -1
  18. package/dist/render/DatasetManager.js +18 -4
  19. package/dist/render/DatasetManager.js.map +1 -1
  20. package/dist/render/GeoAdapter.d.ts +49 -24
  21. package/dist/render/GeoAdapter.d.ts.map +1 -1
  22. package/dist/render/GeoAdapter.js +96 -8
  23. package/dist/render/GeoAdapter.js.map +1 -1
  24. package/dist/render/GeometryBuilder.d.ts +17 -0
  25. package/dist/render/GeometryBuilder.d.ts.map +1 -1
  26. package/dist/render/GeometryBuilder.js +31 -2
  27. package/dist/render/GeometryBuilder.js.map +1 -1
  28. package/dist/render/S3MViewer.d.ts +72 -2
  29. package/dist/render/S3MViewer.d.ts.map +1 -1
  30. package/dist/render/S3MViewer.js +269 -9
  31. package/dist/render/S3MViewer.js.map +1 -1
  32. package/dist/render/StyleMaterial.d.ts +5 -0
  33. package/dist/render/StyleMaterial.d.ts.map +1 -1
  34. package/dist/render/StyleMaterial.js +21 -0
  35. package/dist/render/StyleMaterial.js.map +1 -1
  36. package/dist/render/tilePlacement.d.ts +84 -0
  37. package/dist/render/tilePlacement.d.ts.map +1 -0
  38. package/dist/render/tilePlacement.js +71 -0
  39. package/dist/render/tilePlacement.js.map +1 -0
  40. package/dist/render/viewer/EdgeDecorator.d.ts +1 -0
  41. package/dist/render/viewer/EdgeDecorator.d.ts.map +1 -1
  42. package/dist/render/viewer/EdgeDecorator.js +3 -0
  43. package/dist/render/viewer/EdgeDecorator.js.map +1 -1
  44. package/dist/render/viewer/PickService.d.ts +13 -0
  45. package/dist/render/viewer/PickService.d.ts.map +1 -1
  46. package/dist/render/viewer/PickService.js +24 -15
  47. package/dist/render/viewer/PickService.js.map +1 -1
  48. package/dist/render/viewer/types.d.ts +53 -0
  49. package/dist/render/viewer/types.d.ts.map +1 -1
  50. package/dist/render/viewer/types.js.map +1 -1
  51. package/dist/tileset/S3MTileset.d.ts +43 -1
  52. package/dist/tileset/S3MTileset.d.ts.map +1 -1
  53. package/dist/tileset/S3MTileset.js +202 -2
  54. package/dist/tileset/S3MTileset.js.map +1 -1
  55. package/dist/worker/s3mWorker.js +115 -62
  56. package/dist/worker/s3mWorker.js.map +1 -1
  57. package/docs/API.md +18 -0
  58. package/package.json +1 -1
  59. package/src/core/BakeMercator.ts +96 -0
  60. package/src/core/TileGeometry.ts +26 -0
  61. package/src/index.ts +11 -1
  62. package/src/render/DatasetManager.ts +43 -5
  63. package/src/render/GeoAdapter.ts +139 -11
  64. package/src/render/GeometryBuilder.ts +53 -2
  65. package/src/render/S3MViewer.ts +306 -13
  66. package/src/render/StyleMaterial.ts +26 -0
  67. package/src/render/tilePlacement.ts +121 -0
  68. package/src/render/viewer/EdgeDecorator.ts +3 -0
  69. package/src/render/viewer/PickService.ts +44 -16
  70. package/src/render/viewer/types.ts +51 -0
  71. package/src/tileset/S3MTileset.ts +226 -3
@@ -73,7 +73,22 @@ export interface LightOptions {
73
73
  /** 太阳/光源仰角(度,0~90),默认 50 */
74
74
  altitude?: number;
75
75
  }
76
+ /**
77
+ * 本层绘制前如何处理宿主已有的深度缓冲。
78
+ * - `'scene'` 保留(默认)。地形能遮挡本层几何,适用于建筑、管线等离散对象。
79
+ * - `'clear'` 先清深度再画,本层只与自己做深度测试。适用于贴地地面类数据(倾斜摄影、大范围 DEM 化模型等),消除共面 z-fighting。
80
+ * - `'auto'` 按数据集类型推断:有 ground 覆盖 / OSGB 倾斜摄影 / 地面类网格 → `'clear'`,否则 `'scene'`。
81
+ */
82
+ export type DepthMode = 'scene' | 'clear' | 'auto';
76
83
  export interface S3MViewerOptions {
84
+ /**
85
+ * 本层绘制前如何处理宿主已有的深度缓冲。
86
+ * - `'scene'` 保留(默认)。地形能遮挡本层几何,适用于建筑、管线等离散对象。
87
+ * - `'clear'` 先清深度再画,本层只与自己做深度测试。适用于贴地地面类数据。
88
+ * - `'auto'` 按数据集类型推断:有 ground 覆盖 / OSGB 倾斜摄影 / 地面类网格 → `'clear'`,否则 `'scene'`。
89
+ * 默认 `'scene'`,与改动前行为逐字一致。
90
+ */
91
+ depthMode?: DepthMode;
77
92
  /**
78
93
  * 光照预设:
79
94
  * - `'default'`(默认):现有 PBR 打光,亮部线性总量 ≈ 2.55;
@@ -133,6 +148,34 @@ export interface S3MViewerOptions {
133
148
  * 所以默认不启用,由接入方按设备档位自行决定。运行时可用 `setLodPixelRatioCap()` 调整。
134
149
  */
135
150
  lodPixelRatioCap?: number;
151
+ /**
152
+ * 瓦片级放置(默认 `true`)。
153
+ *
154
+ * 开启后每块瓦片用自己的中心纬度算 `meterInMercator`,几何绕自身中心缩放,
155
+ * 修正「全场景共用一个切平面」在大范围下的尺度误差。
156
+ *
157
+ * 误差量级(北纬 40°,距场景锚点的距离 → 相对尺度的偏差):
158
+ * `5 km → 0.065%`、`20 km → 0.26%(约 26 m)`、`200 km → 2.8%(约 2.8 km)`。
159
+ * 城市级(几公里)随手开无妨;多数据集相距几十公里、或单个数据集跨 20 km 以上时
160
+ * 必须开,否则远处的模型会整体偏大/偏小。
161
+ *
162
+ * 代价与遗留:
163
+ * - 每块瓦片的 `Object3D` 走 `matrixAutoUpdate = false`,多一次矩阵乘;
164
+ * - 场景 ENU 仍是**一个平面**,所以只是把误差按瓦片重新分摊(瓦片跨 2 km 时
165
+ * 剩余约 0.5 m),彻底消除要逐顶点烘焙墨卡托;
166
+ * - 拾取 / 量算的 `lngLat ↔ 场景 ENU` 换算仍用场景锚点的常量 s,在本模式下
167
+ * 保持修复前的误差量级(几何与反解不再自洽,但都不比之前差)。
168
+ *
169
+ * 见 `render/tilePlacement.ts` 的文件头。
170
+ */
171
+ perTilePlacement?: boolean;
172
+ /**
173
+ * 是否对瓦片逐顶点烘焙精确 Web 墨卡托偏移(消除全球大尺度下的视差游动/呼吸效应)。
174
+ * - undefined(默认):自动判定。当瓦片集根节点包围球半径 > 25 km 时自动启用,<= 25 km 时保持关闭(逐字节保持原有 ENU 顶点缓冲不变)。
175
+ * - true:强制开启。
176
+ * - false:强制关闭。
177
+ */
178
+ bakeMercator?: boolean;
136
179
  /**
137
180
  * 每个数据集驻留三角形总数的软上限(默认不限制)。
138
181
  * 见 `S3MTilesetOptions.maxTriangles`:瓦片数管不住的场景(精模、大面片)用这条刹车。
@@ -236,6 +279,16 @@ export interface S3MViewerOptions {
236
279
  * 编译着色器、卡一帧。预热在首帧之后异步做,期间跳一两帧渲染,肉眼不可见。
237
280
  */
238
281
  prewarmShading?: boolean;
282
+ /**
283
+ * LOD 细化过渡策略:
284
+ * - 'binary'(默认):整节点二值切换
285
+ * - 'incremental':增量细化(primary / fallback 双列表 + LEQUAL 深度推移)
286
+ */
287
+ lodTransition?: 'binary' | 'incremental';
288
+ fallbackOffset?: {
289
+ factor?: number;
290
+ units?: number;
291
+ };
239
292
  }
240
293
  export interface PickableRef {
241
294
  datasetId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/render/viewer/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/render/viewer/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/render/viewer/types.ts"],"names":[],"mappings":";AA0SA,2EAA2E"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/render/viewer/types.ts"],"names":[],"mappings":";AA6VA,2EAA2E"}
@@ -121,11 +121,23 @@ export type BuildTileFn = (tile: ParsedTile, options: {
121
121
  colorPipeline?: 'linear' | 'direct';
122
122
  /** 纹理创建参数(透传给 buildTileObjects → createTexture) */
123
123
  textureOptions?: TextureCreateOptions;
124
+ bakeMercator?: boolean;
125
+ tileAnchor?: {
126
+ lon: number;
127
+ lat: number;
128
+ height?: number;
129
+ };
130
+ tileCenter?: {
131
+ x: number;
132
+ y: number;
133
+ z?: number;
134
+ };
124
135
  }) => Promise<{
125
136
  group: Group;
126
137
  stats: Partial<Stats>;
127
138
  }>;
128
139
  export interface S3MTilesetOptions {
140
+ bakeMercator?: boolean;
129
141
  configUrl: string;
130
142
  maxTiles?: number;
131
143
  maxConcurrent?: number;
@@ -209,6 +221,21 @@ export interface S3MTilesetOptions {
209
221
  * 'silent' —— 只记录到 `stats.degradations`,由 UI 自己决定怎么提示。
210
222
  */
211
223
  unsupported?: UnsupportedPolicy;
224
+ /**
225
+ * LOD 细化过渡策略:
226
+ * - 'binary'(默认):整节点二值切换。所有子瓦片全部就绪或失败后,父瓦片整块隐藏、子瓦片整块接替。
227
+ * - 'incremental':增量细化(primary / fallback 双列表 + LEQUAL 深度推移)。
228
+ * 子瓦片就绪一个显示一个,未就绪区域由父级(fallback)兜底填充,消除整块跳变与慢 child 阻塞。
229
+ */
230
+ lodTransition?: 'binary' | 'incremental';
231
+ /**
232
+ * 增量细化模式下 fallback 兜底瓦片的材质深度偏移系数。
233
+ * 默认 { factor: 1, units: 2 },通过向远处推移深度配合 gl.LEQUAL 消除共面 z-fighting。
234
+ */
235
+ fallbackOffset?: {
236
+ factor?: number;
237
+ units?: number;
238
+ };
212
239
  }
213
240
  /** 估算单个纹理占用的显存字节数 */
214
241
  export declare function estimateTextureBytes(tex: any): number;
@@ -264,6 +291,13 @@ export declare class S3MTileset {
264
291
  */
265
292
  maxMemory: number;
266
293
  lodRangeScale: number;
294
+ lodTransition: 'binary' | 'incremental';
295
+ fallbackOffset: {
296
+ factor: number;
297
+ units: number;
298
+ };
299
+ readonly primaryNodes: Set<string>;
300
+ readonly fallbackNodes: Set<string>;
267
301
  /** 数据集配置声明的高度范围(米),若配置未声明则返回 null */
268
302
  get heightRange(): {
269
303
  min: number;
@@ -289,8 +323,11 @@ export declare class S3MTileset {
289
323
  /** 请求量的硬上限(软上限 maxTiles 的超额余量),见构造函数注释 */
290
324
  hardCap: number;
291
325
  /** 本数据集是 S3M 1.x(SuperMapCache,.s3m):子瓦地址规则与 3.x 不同 */
292
- private isS3MV1;
326
+ isS3MV1: boolean;
293
327
  private _buildTile;
328
+ private _bakeMercator?;
329
+ rootRadius?: number;
330
+ shouldBakeMercator(radius?: number): boolean;
294
331
  private readonly _polygonOffset;
295
332
  private _materialQuality;
296
333
  private _colorPipeline;
@@ -475,6 +512,11 @@ export declare class S3MTileset {
475
512
  */
476
513
  update(camEnu: [number, number, number], fovRad: number, screenHeight: number): boolean;
477
514
  private _updateNodeVisibility;
515
+ getLodTransition(): 'binary' | 'incremental';
516
+ setLodTransition(mode: 'binary' | 'incremental'): void;
517
+ private _applyNodeFallbackPolygonOffset;
518
+ private _restoreNodePolygonOffset;
519
+ private _updateVisibilityIncremental;
478
520
  dispose(): void;
479
521
  }
480
522
  //# sourceMappingURL=S3MTileset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"S3MTileset.d.ts","sourceRoot":"","sources":["../../src/tileset/S3MTileset.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAa,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAatE,OAAO,KAAK,EAEV,kBAAkB,EAInB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAgC5C;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASnD;AAMD,kBAAkB;AAClB,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAS5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAiB7F;AAED,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+DrE;AAED,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAKnG;AAuBD,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE;QAAE,MAAM,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,kCAAkC;IAClC,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClF;AAED,yCAAyC;AACzC,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE;IACP,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,yDAAyD;IACzD,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,oEAAoE;IACpE,aAAa,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,sEAAsE;IACtE,eAAe,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IACpC,kEAAkE;IAClE,aAAa,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,mDAAmD;IACnD,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC,KACE,OAAO,CAAC;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;CAAE,CAAC,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,oDAAoD;IACpD,aAAa,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD;;;OAGG;IACH,eAAe,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;IACpC,+DAA+D;IAC/D,aAAa,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACpC,wDAAwD;IACxD,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IAClC,6CAA6C;IAC7C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACzC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,qBAAqB;AACrB,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAqBrD;AAED,yBAAyB;AACzB,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAqB5D;AAED,qBAAa,UAAU;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAQ;IAC9C;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAA4B;IACnD,MAAM,EAAE,MAAM,CAAiC;IAE/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAM;IACjC,QAAQ,CAAC,KAAK,wBAA+B;IAC7C,QAAQ,CAAC,MAAM,cAAqB;IACpC,QAAQ,CAAC,YAAY,uBAA8B;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,QAAQ,CAAC,OAAO,cAAqB;IACrC,4DAA4D;IAC5D,QAAQ,EAAE,OAAO,CAAC;IAClB,mDAAmD;IACnD,QAAQ,CAAC,aAAa,yCAAgD;IACtE,uDAAuD;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;IACnE,oDAAoD;IACpD,QAAQ,CAAC,kBAAkB,yCAAgD;IAC3E;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,2CAAkD;IAC3E,gDAAgD;IAChD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;IACjE,4BAA4B;IAC5B,QAAQ,CAAC,aAAa,cAAqB;IAC3C,uCAAuC;IACvC,QAAQ,CAAC,mBAAmB,sBAA6B;IAGzD,QAAQ,CAAC,KAAK,EAAE,KAAK,CAanB;IAEF,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IAEtB,qCAAqC;IACrC,IAAI,WAAW,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAMrD;IAED,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAC1D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,yCAAyC;IACzC,QAAQ,CAAC,YAAY,EAAE,cAAc,GAAG,SAAS,CAAC;IAClD,4DAA4D;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoB;IACjD,wCAAwC;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA6B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,MAAM,CAAK;IACnB,kCAAkC;IAClC,OAAO,CAAC,kBAAkB,CAAS;IACnC,0CAA0C;IAC1C,OAAO,SAAM;IACb,uDAAuD;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgD;IAC/E,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,gEAAgE;IAChE,OAAO,CAAC,aAAa,CAAqC;IAAE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACjG,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAK;gBAER,OAAO,EAAE,iBAAiB;IAoChC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8D3B,OAAO,CAAC,QAAQ;IAiBhB;;;;;;;;;;;OAWG;IACH,6BAA6B;IAC7B,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI;IAW9D,sBAAsB;IACtB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,IAAI;IAiCtC,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI;IAQlE,aAAa;IACb,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,GAAG,SAAS;IAInE,8BAA8B;IAC9B,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,IAAI,GAAG,IAAI;IAQrE,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,EAAE,GAAG,IAAI,GAAG,SAAS;IAIrE,OAAO,CAAC,SAAS;IA4CjB,yCAAyC;IACzC,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;IACH,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC;;;;OAIG;IACH,kBAAkB,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI;IAI1D;;;OAGG;IACH,gBAAgB,CAAC,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,cAAc,CAAC,EAAE,oBAAoB,CAAA;KAAE,GAAG,IAAI;IAKzG;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,qBAAqB;IAQ7B;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAkBnB;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;IAyBnB,mCAAmC;IACnC,WAAW,IAAI,MAAM;IAQrB,OAAO,CAAC,KAAK;IAWb;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAqCtB,OAAO,CAAC,QAAQ;YAOF,QAAQ;IAQtB;;;;OAIG;YACW,iBAAiB;IAoB/B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;YACW,oBAAoB;IAuJlC,mDAAmD;IACnD,OAAO,CAAC,gBAAgB;IASxB;;;;;;OAMG;YACW,cAAc;IAiB5B,gDAAgD;YAClC,cAAc;IAc5B;;;;;;OAMG;YACW,gBAAgB;IAI9B;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;YASX,KAAK;IA6JnB;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO;IA8JvF,OAAO,CAAC,qBAAqB;IAuD7B,OAAO,IAAI,IAAI;CAiBhB"}
1
+ {"version":3,"file":"S3MTileset.d.ts","sourceRoot":"","sources":["../../src/tileset/S3MTileset.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ import { authFetch } from '../core/AuthFetch.js';
13
13
  import { getSharedS3MWorker, WorkerDeadError } from '../worker/S3MWorkerClient.js';
14
14
  import { composeLeafAtlas, expandTexblockRequestNames, parseS3MBlockGroups, parseTexblockSegments, rebuildBlockTextureState, unpackBlockTextures, } from '../core/S3MBlockParser.js';
15
15
  import { evaluateAtlasUpgrade } from '../core/AtlasUpgrade.js';
16
+ import { AUTO_BAKE_RADIUS_THRESHOLD } from '../core/BakeMercator.js';
16
17
  function dirOf(url) {
17
18
  return url.slice(0, url.lastIndexOf('/') + 1);
18
19
  }
@@ -345,6 +346,10 @@ export class S3MTileset {
345
346
  */
346
347
  maxMemory;
347
348
  lodRangeScale;
349
+ lodTransition;
350
+ fallbackOffset;
351
+ primaryNodes = new Set();
352
+ fallbackNodes = new Set();
348
353
  /** 数据集配置声明的高度范围(米),若配置未声明则返回 null */
349
354
  get heightRange() {
350
355
  const hr = this.config?.heightRange;
@@ -375,6 +380,14 @@ export class S3MTileset {
375
380
  /** 本数据集是 S3M 1.x(SuperMapCache,.s3m):子瓦地址规则与 3.x 不同 */
376
381
  isS3MV1 = false;
377
382
  _buildTile;
383
+ _bakeMercator;
384
+ rootRadius;
385
+ shouldBakeMercator(radius) {
386
+ if (this._bakeMercator !== undefined)
387
+ return this._bakeMercator;
388
+ const r = radius ?? this.rootRadius ?? 0;
389
+ return r > AUTO_BAKE_RADIUS_THRESHOLD;
390
+ }
378
391
  _polygonOffset;
379
392
  _materialQuality;
380
393
  _colorPipeline;
@@ -388,6 +401,11 @@ export class S3MTileset {
388
401
  constructor(options) {
389
402
  this.configUrl = options.configUrl;
390
403
  this.lodRangeScale = options.lodRangeScale ?? 3.0;
404
+ this.lodTransition = options.lodTransition ?? 'binary';
405
+ this.fallbackOffset = {
406
+ factor: options.fallbackOffset?.factor ?? 1,
407
+ units: options.fallbackOffset?.units ?? 2,
408
+ };
391
409
  this._onTile = options.onTile ?? (() => { });
392
410
  this._onTileRemoved = options.onTileRemoved ?? (() => { });
393
411
  this._onError = options.onError ?? ((e) => console.warn(e));
@@ -397,6 +415,7 @@ export class S3MTileset {
397
415
  this._unsupported = options.unsupported ?? 'warn';
398
416
  // 渲染层可注入:Node 环境下不需要 three,也能跑 URL / 解析链路
399
417
  this._buildTile = options.buildTile ?? null;
418
+ this._bakeMercator = options.bakeMercator;
400
419
  this._polygonOffset = options.polygonOffset;
401
420
  this._materialQuality = options.materialQuality;
402
421
  this._colorPipeline = options.colorPipeline;
@@ -724,6 +743,9 @@ export class S3MTileset {
724
743
  continue;
725
744
  // 正在显示且没有可见子瓦接手 → 踢了就是洞
726
745
  if (!allowUncovered && node.group.visible) {
746
+ if (this.lodTransition === 'incremental') {
747
+ continue;
748
+ }
727
749
  const covered = childUrls.some((u) => {
728
750
  const c = this.nodes.get(u);
729
751
  return !!c && c.group.visible;
@@ -1170,6 +1192,11 @@ export class S3MTileset {
1170
1192
  }
1171
1193
  // 解析成功但能力不完整的(目前只有 3DGS),在花力气建几何之前先决定处置
1172
1194
  this._noteDegradations(tile);
1195
+ const lodForBake = this._pickLod(tile);
1196
+ if (this.rootRadius === undefined && lodForBake?.boundingSphere?.radius) {
1197
+ this.rootRadius = lodForBake.boundingSphere.radius;
1198
+ }
1199
+ const shouldBake = this.shouldBakeMercator(lodForBake?.boundingSphere?.radius);
1173
1200
  const build = await this._builder();
1174
1201
  const buildRes = await build(tile, {
1175
1202
  textureCache: this.textureCache,
@@ -1179,6 +1206,9 @@ export class S3MTileset {
1179
1206
  materialQuality: this._materialQuality,
1180
1207
  colorPipeline: this._colorPipeline,
1181
1208
  textureOptions: this._textureOptions,
1209
+ bakeMercator: shouldBake,
1210
+ tileAnchor: this.anchor,
1211
+ tileCenter: lodForBake?.boundingSphere?.center,
1182
1212
  });
1183
1213
  const { group, stats } = buildRes;
1184
1214
  const texKeys = buildRes.textureKeys ?? group.userData?.textureKeys ?? Object.keys(tile.textures ?? {});
@@ -1380,11 +1410,24 @@ export class S3MTileset {
1380
1410
  if (!p || !this.nodes.has(p))
1381
1411
  roots.add(url);
1382
1412
  }
1383
- for (const rootUrl of roots) {
1384
- if (this._updateNodeVisibility(rootUrl, true, visited)) {
1413
+ if (this.lodTransition === 'incremental') {
1414
+ if (this._updateVisibilityIncremental(roots, visited)) {
1385
1415
  hasChanges = true;
1386
1416
  }
1387
1417
  }
1418
+ else {
1419
+ for (const rootUrl of roots) {
1420
+ if (this._updateNodeVisibility(rootUrl, true, visited)) {
1421
+ hasChanges = true;
1422
+ }
1423
+ }
1424
+ this.primaryNodes.clear();
1425
+ for (const [url, node] of this.nodes) {
1426
+ if (node.group.visible)
1427
+ this.primaryNodes.add(url);
1428
+ }
1429
+ this.fallbackNodes.clear();
1430
+ }
1388
1431
  // 防御:若有任何未被 root 树访问到的游离瓦片,全部隐藏
1389
1432
  for (const [url, node] of this.nodes) {
1390
1433
  if (!visited.has(url)) {
@@ -1392,6 +1435,9 @@ export class S3MTileset {
1392
1435
  node.group.visible = false;
1393
1436
  hasChanges = true;
1394
1437
  }
1438
+ if (this.lodTransition === 'incremental') {
1439
+ this._restoreNodePolygonOffset(node);
1440
+ }
1395
1441
  }
1396
1442
  }
1397
1443
  // 显示职责已经分配完毕,现在才裁预算(make-before-break):
@@ -1479,6 +1525,160 @@ export class S3MTileset {
1479
1525
  }
1480
1526
  return changed;
1481
1527
  }
1528
+ getLodTransition() {
1529
+ return this.lodTransition;
1530
+ }
1531
+ setLodTransition(mode) {
1532
+ if (this.lodTransition === mode)
1533
+ return;
1534
+ this.lodTransition = mode;
1535
+ if (mode === 'binary') {
1536
+ for (const node of this.nodes.values()) {
1537
+ this._restoreNodePolygonOffset(node);
1538
+ }
1539
+ this.fallbackNodes.clear();
1540
+ }
1541
+ }
1542
+ _applyNodeFallbackPolygonOffset(node, depth) {
1543
+ const factor = this.fallbackOffset.factor;
1544
+ const units = Math.max(2, (10 - Math.min(depth, 8)) * this.fallbackOffset.units);
1545
+ let changed = false;
1546
+ node.group.traverse((obj) => {
1547
+ const target = obj;
1548
+ if ((target.isMesh || target.isPoints || target.isLine) && target.material) {
1549
+ const materials = Array.isArray(target.material) ? target.material : [target.material];
1550
+ for (const mat of materials) {
1551
+ if (!mat)
1552
+ continue;
1553
+ if (!mat.userData)
1554
+ mat.userData = {};
1555
+ if (!mat.userData._basePolygonOffset) {
1556
+ mat.userData._basePolygonOffset = {
1557
+ polygonOffset: mat.polygonOffset === true,
1558
+ factor: mat.polygonOffsetFactor ?? 0,
1559
+ units: mat.polygonOffsetUnits ?? 0,
1560
+ };
1561
+ }
1562
+ const base = mat.userData._basePolygonOffset;
1563
+ const targetFactor = base.factor + factor;
1564
+ const targetUnits = base.units + units;
1565
+ if (mat.polygonOffset !== true ||
1566
+ mat.polygonOffsetFactor !== targetFactor ||
1567
+ mat.polygonOffsetUnits !== targetUnits) {
1568
+ mat.polygonOffset = true;
1569
+ mat.polygonOffsetFactor = targetFactor;
1570
+ mat.polygonOffsetUnits = targetUnits;
1571
+ changed = true;
1572
+ }
1573
+ }
1574
+ }
1575
+ });
1576
+ return changed;
1577
+ }
1578
+ _restoreNodePolygonOffset(node) {
1579
+ let changed = false;
1580
+ node.group.traverse((obj) => {
1581
+ const target = obj;
1582
+ if ((target.isMesh || target.isPoints || target.isLine) && target.material) {
1583
+ const materials = Array.isArray(target.material) ? target.material : [target.material];
1584
+ for (const mat of materials) {
1585
+ if (mat?.userData?._basePolygonOffset) {
1586
+ const base = mat.userData._basePolygonOffset;
1587
+ if (mat.polygonOffset !== base.polygonOffset ||
1588
+ mat.polygonOffsetFactor !== base.factor ||
1589
+ mat.polygonOffsetUnits !== base.units) {
1590
+ mat.polygonOffset = base.polygonOffset;
1591
+ mat.polygonOffsetFactor = base.factor;
1592
+ mat.polygonOffsetUnits = base.units;
1593
+ changed = true;
1594
+ }
1595
+ }
1596
+ }
1597
+ }
1598
+ });
1599
+ return changed;
1600
+ }
1601
+ _updateVisibilityIncremental(roots, visited) {
1602
+ const nextPrimary = new Set();
1603
+ const nextFallback = new Set();
1604
+ const nodeDepths = new Map();
1605
+ const traverse = (url, depth) => {
1606
+ if (visited.has(url))
1607
+ return;
1608
+ visited.add(url);
1609
+ nodeDepths.set(url, depth);
1610
+ const node = this.nodes.get(url);
1611
+ if (!node)
1612
+ return;
1613
+ const childUrls = node.childUrls ?? (node.childUrl ? [node.childUrl] : []);
1614
+ const hasChildren = childUrls.length > 0;
1615
+ const readyChildren = childUrls.filter((cUrl) => this.nodes.has(cUrl));
1616
+ const missingChildren = childUrls.filter((cUrl) => !this.nodes.has(cUrl) && !this.failed.has(cUrl));
1617
+ const canRefine = !!node.needRefine && hasChildren && readyChildren.length > 0;
1618
+ if (canRefine) {
1619
+ if (missingChildren.length > 0) {
1620
+ nextFallback.add(url);
1621
+ }
1622
+ for (const cUrl of readyChildren) {
1623
+ traverse(cUrl, depth + 1);
1624
+ }
1625
+ }
1626
+ else {
1627
+ nextPrimary.add(url);
1628
+ }
1629
+ };
1630
+ for (const rootUrl of roots) {
1631
+ traverse(rootUrl, 0);
1632
+ }
1633
+ let changed = false;
1634
+ for (const [url, node] of this.nodes) {
1635
+ if (!visited.has(url))
1636
+ continue;
1637
+ if (nextPrimary.has(url)) {
1638
+ if (!node.group.visible) {
1639
+ node.group.visible = true;
1640
+ changed = true;
1641
+ }
1642
+ const depth = nodeDepths.get(url) ?? 0;
1643
+ const targetOrder = 100 + depth;
1644
+ if (node.group.renderOrder !== targetOrder) {
1645
+ node.group.renderOrder = targetOrder;
1646
+ changed = true;
1647
+ }
1648
+ if (this._restoreNodePolygonOffset(node))
1649
+ changed = true;
1650
+ }
1651
+ else if (nextFallback.has(url)) {
1652
+ if (!node.group.visible) {
1653
+ node.group.visible = true;
1654
+ changed = true;
1655
+ }
1656
+ const depth = nodeDepths.get(url) ?? 0;
1657
+ const targetOrder = depth;
1658
+ if (node.group.renderOrder !== targetOrder) {
1659
+ node.group.renderOrder = targetOrder;
1660
+ changed = true;
1661
+ }
1662
+ if (this._applyNodeFallbackPolygonOffset(node, depth))
1663
+ changed = true;
1664
+ }
1665
+ else {
1666
+ if (node.group.visible) {
1667
+ node.group.visible = false;
1668
+ changed = true;
1669
+ }
1670
+ if (this._restoreNodePolygonOffset(node))
1671
+ changed = true;
1672
+ }
1673
+ }
1674
+ this.primaryNodes.clear();
1675
+ for (const u of nextPrimary)
1676
+ this.primaryNodes.add(u);
1677
+ this.fallbackNodes.clear();
1678
+ for (const u of nextFallback)
1679
+ this.fallbackNodes.add(u);
1680
+ return changed;
1681
+ }
1482
1682
  dispose() {
1483
1683
  this._workerClient?.dispose();
1484
1684
  for (const node of this.nodes.values()) {