s3m-three 0.3.5 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/assets/s3mWorker-D7AV6O30.js +1 -0
- package/dist/browser/s3m-three.iife.ext-three.js +26 -20
- package/dist/browser/s3m-three.iife.js +26 -20
- package/dist/core/TextureDecode.d.ts +39 -0
- package/dist/core/TextureDecode.d.ts.map +1 -0
- package/dist/core/TextureDecode.js +174 -0
- package/dist/core/TextureDecode.js.map +1 -0
- package/dist/core/TextureFormat.d.ts +22 -2
- package/dist/core/TextureFormat.d.ts.map +1 -1
- package/dist/core/TextureFormat.js +22 -2
- package/dist/core/TextureFormat.js.map +1 -1
- package/dist/core/TileGeometry.d.ts +92 -0
- package/dist/core/TileGeometry.d.ts.map +1 -0
- package/dist/core/TileGeometry.js +607 -0
- package/dist/core/TileGeometry.js.map +1 -0
- package/dist/render/DatasetManager.d.ts +2 -0
- package/dist/render/DatasetManager.d.ts.map +1 -1
- package/dist/render/DatasetManager.js +1 -0
- package/dist/render/DatasetManager.js.map +1 -1
- package/dist/render/FeatureStyleManager.d.ts +4 -2
- package/dist/render/FeatureStyleManager.d.ts.map +1 -1
- package/dist/render/FeatureStyleManager.js +33 -1
- package/dist/render/FeatureStyleManager.js.map +1 -1
- package/dist/render/GeometryBuilder.d.ts +8 -10
- package/dist/render/GeometryBuilder.d.ts.map +1 -1
- package/dist/render/GeometryBuilder.js +77 -555
- package/dist/render/GeometryBuilder.js.map +1 -1
- package/dist/render/S3MViewer.d.ts +4 -0
- package/dist/render/S3MViewer.d.ts.map +1 -1
- package/dist/render/S3MViewer.js +13 -2
- package/dist/render/S3MViewer.js.map +1 -1
- package/dist/render/StyleMaterial.d.ts.map +1 -1
- package/dist/render/StyleMaterial.js +6 -0
- package/dist/render/StyleMaterial.js.map +1 -1
- package/dist/render/TextureFactory.d.ts +9 -19
- package/dist/render/TextureFactory.d.ts.map +1 -1
- package/dist/render/TextureFactory.js +62 -115
- package/dist/render/TextureFactory.js.map +1 -1
- package/dist/tileset/S3MTileset.d.ts +21 -0
- package/dist/tileset/S3MTileset.d.ts.map +1 -1
- package/dist/tileset/S3MTileset.js +41 -2
- package/dist/tileset/S3MTileset.js.map +1 -1
- package/dist/worker/S3MWorkerClient.d.ts +48 -0
- package/dist/worker/S3MWorkerClient.d.ts.map +1 -0
- package/dist/worker/S3MWorkerClient.js +124 -0
- package/dist/worker/S3MWorkerClient.js.map +1 -0
- package/dist/worker/s3mWorker.d.ts +2 -0
- package/dist/worker/s3mWorker.d.ts.map +1 -0
- package/dist/worker/s3mWorker.js +56 -0
- package/dist/worker/s3mWorker.js.map +1 -0
- package/dist/worker/transferables.d.ts +14 -0
- package/dist/worker/transferables.d.ts.map +1 -0
- package/dist/worker/transferables.js +61 -0
- package/dist/worker/transferables.js.map +1 -0
- package/docs/API.md +6 -0
- package/package.json +1 -1
- package/src/core/TextureDecode.ts +224 -0
- package/src/core/TextureFormat.ts +23 -2
- package/src/core/TileGeometry.ts +745 -0
- package/src/render/DatasetManager.ts +3 -0
- package/src/render/FeatureStyleManager.ts +31 -2
- package/src/render/GeometryBuilder.ts +91 -617
- package/src/render/S3MViewer.ts +18 -4
- package/src/render/StyleMaterial.ts +6 -0
- package/src/render/TextureFactory.ts +78 -123
- package/src/tileset/S3MTileset.ts +55 -3
- package/src/worker/S3MWorkerClient.ts +159 -0
- package/src/worker/s3mWorker.ts +76 -0
- package/src/worker/transferables.ts +58 -0
|
@@ -31,6 +31,8 @@ export interface S3MDatasetOptions {
|
|
|
31
31
|
align?: DatasetAlignment;
|
|
32
32
|
/** 垂直高度偏移(米),在 align 对齐基准上的额外偏移,正数抬升,负数下降,默认 0 */
|
|
33
33
|
heightOffset?: number;
|
|
34
|
+
/** 是否用 Web Worker 解析经典 .s3mb 瓦片(默认开,崩溃自动降级主线程),见 S3MTilesetOptions.useWorker */
|
|
35
|
+
useWorker?: boolean;
|
|
34
36
|
/**
|
|
35
37
|
* 是否对该数据集生成几何棱线(CPU 端 EdgesGeometry)。
|
|
36
38
|
* - 不填:跟随全局 `style.edges`
|
|
@@ -194,6 +196,7 @@ export class DatasetManager {
|
|
|
194
196
|
maxConcurrent: maxConcurrent,
|
|
195
197
|
lodRangeScale: ds.lodRangeScale ?? defaultLodRangeScale,
|
|
196
198
|
buildTile: buildTile ?? null,
|
|
199
|
+
useWorker: ds.useWorker,
|
|
197
200
|
uniforms: uniforms,
|
|
198
201
|
onTile: (node) => {
|
|
199
202
|
callbacks.onTile(node, entry);
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
* 2. 专题图分析(按业务字段分段着色、连续插值着色、字段过滤、高度拉伸)
|
|
7
7
|
* 3. 2 行状态纹理(uBatchTex)的烘焙与 GPU 上传:
|
|
8
8
|
* - Row 0: [R, G, B, elevation / hidden]
|
|
9
|
-
* - Row 1: [translationX, translationY, translationZ,
|
|
9
|
+
* - Row 1: [translationX, translationY, translationZ, opacity]
|
|
10
|
+
* 约定:alpha 0 = 无单体透明覆盖(shader 不乘),(0,1) 开区间为实际透明度,
|
|
11
|
+
* opacity <= 0 等价 hidden(走 Row 0 的 -1 隐藏位)
|
|
10
12
|
* 4. 批次冲突审计(auditBatches)
|
|
11
13
|
*/
|
|
12
14
|
import * as THREE from 'three';
|
|
@@ -26,7 +28,7 @@ export interface FeatureStyle {
|
|
|
26
28
|
elevation?: number;
|
|
27
29
|
/** 自定义单体三维平移偏移量 [dx, dy, dz](米) */
|
|
28
30
|
translation?: [number, number, number];
|
|
29
|
-
/** 自定义单体透明度(0~1
|
|
31
|
+
/** 自定义单体透明度(0~1,batch 粒度;<= 0 等价 hidden,1 / 不传 = 不覆盖) */
|
|
30
32
|
opacity?: number;
|
|
31
33
|
/** 是否隐藏该单体 */
|
|
32
34
|
hidden?: boolean;
|
|
@@ -562,6 +564,8 @@ export class FeatureStyleManager {
|
|
|
562
564
|
if (mat.userData.uBatchTexActive) {
|
|
563
565
|
mat.userData.uBatchTexActive.value = 0;
|
|
564
566
|
}
|
|
567
|
+
// 单体淡化清除后,把材质 transparent 还原成全局透明度语义
|
|
568
|
+
if (mat.transparent && mat.opacity >= 0.999) mat.transparent = false;
|
|
565
569
|
return;
|
|
566
570
|
}
|
|
567
571
|
|
|
@@ -569,6 +573,7 @@ export class FeatureStyleManager {
|
|
|
569
573
|
if (mat.userData.uBatchTexActive) {
|
|
570
574
|
mat.userData.uBatchTexActive.value = 0;
|
|
571
575
|
}
|
|
576
|
+
if (mat.transparent && mat.opacity >= 0.999) mat.transparent = false;
|
|
572
577
|
return;
|
|
573
578
|
}
|
|
574
579
|
|
|
@@ -611,6 +616,7 @@ export class FeatureStyleManager {
|
|
|
611
616
|
const colorOfBatch = new Map<number, string>();
|
|
612
617
|
const elevOfBatch = new Map<number, number>();
|
|
613
618
|
const translationOfBatch = new Map<number, [number, number, number]>();
|
|
619
|
+
const opacityOfBatch = new Map<number, number>();
|
|
614
620
|
const ownersOfBatch = new Map<number, number>();
|
|
615
621
|
|
|
616
622
|
for (const [smidStr, entry] of Object.entries(pickInfo)) {
|
|
@@ -661,6 +667,16 @@ export class FeatureStyleManager {
|
|
|
661
667
|
continue;
|
|
662
668
|
}
|
|
663
669
|
|
|
670
|
+
// 单体独立透明度:<= 0 等价 hidden;(0,1) 写入状态纹理第 2 行 alpha;>= 1 不覆盖
|
|
671
|
+
const fade = st?.opacity;
|
|
672
|
+
if (fade != null) {
|
|
673
|
+
if (fade <= 0) {
|
|
674
|
+
hiddenBatches.add(bId);
|
|
675
|
+
continue;
|
|
676
|
+
}
|
|
677
|
+
if (fade < 1 && !opacityOfBatch.has(bId)) opacityOfBatch.set(bId, fade);
|
|
678
|
+
}
|
|
679
|
+
|
|
664
680
|
const col = st?.color ?? this.thematicColors.get(smid);
|
|
665
681
|
if (col && !colorOfBatch.has(bId)) colorOfBatch.set(bId, col);
|
|
666
682
|
|
|
@@ -704,6 +720,19 @@ export class FeatureStyleManager {
|
|
|
704
720
|
hasActive = true;
|
|
705
721
|
}
|
|
706
722
|
|
|
723
|
+
// 单体独立透明度写在第 2 行 alpha:shader 里 0 = 无覆盖,不会误伤未设置的单体
|
|
724
|
+
let hasFade = false;
|
|
725
|
+
for (const [bId, fade] of opacityOfBatch) {
|
|
726
|
+
if (hiddenBatches.has(bId)) continue;
|
|
727
|
+
data[(w + bId) * 4 + 3] = fade;
|
|
728
|
+
hasActive = true;
|
|
729
|
+
hasFade = true;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
// 有淡化单体时整块材质要开混合才有透明效果;清除后还原为全局透明度语义
|
|
733
|
+
if (hasFade && !mat.transparent) mat.transparent = true;
|
|
734
|
+
else if (!hasFade && mat.transparent && mat.opacity >= 0.999) mat.transparent = false;
|
|
735
|
+
|
|
707
736
|
let conflicts = 0;
|
|
708
737
|
for (const [bId, owners] of ownersOfBatch) {
|
|
709
738
|
if (owners < 2) continue;
|