s3m-three 0.3.0 → 0.3.1
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/README.md +1 -1
- package/dist/browser/s3m-three.iife.ext-three.js +163 -15
- package/dist/browser/s3m-three.iife.js +190 -42
- package/dist/core/AtlasAlpha.d.ts +31 -0
- package/dist/core/AtlasAlpha.d.ts.map +1 -0
- package/dist/core/AtlasAlpha.js +82 -0
- package/dist/core/AtlasAlpha.js.map +1 -0
- package/dist/core/AtlasPack.d.ts +57 -0
- package/dist/core/AtlasPack.d.ts.map +1 -0
- package/dist/core/AtlasPack.js +81 -0
- package/dist/core/AtlasPack.js.map +1 -0
- package/dist/core/AtlasUpgrade.d.ts +68 -0
- package/dist/core/AtlasUpgrade.d.ts.map +1 -0
- package/dist/core/AtlasUpgrade.js +154 -0
- package/dist/core/AtlasUpgrade.js.map +1 -0
- package/dist/core/DXTTextureDecode.d.ts.map +1 -1
- package/dist/core/DXTTextureDecode.js +28 -6
- package/dist/core/DXTTextureDecode.js.map +1 -1
- package/dist/core/Draco.d.ts +52 -0
- package/dist/core/Draco.d.ts.map +1 -0
- package/dist/core/Draco.js +323 -0
- package/dist/core/Draco.js.map +1 -0
- package/dist/core/MeshOpt.d.ts +14 -3
- package/dist/core/MeshOpt.d.ts.map +1 -1
- package/dist/core/MeshOpt.js +101 -18
- package/dist/core/MeshOpt.js.map +1 -1
- package/dist/core/S3M1Parser.d.ts +16 -0
- package/dist/core/S3M1Parser.d.ts.map +1 -0
- package/dist/core/S3M1Parser.js +367 -0
- package/dist/core/S3M1Parser.js.map +1 -0
- package/dist/core/S3MBParser.d.ts +43 -1
- package/dist/core/S3MBParser.d.ts.map +1 -1
- package/dist/core/S3MBParser.js +101 -23
- package/dist/core/S3MBParser.js.map +1 -1
- package/dist/core/S3MBlockParser.d.ts +209 -0
- package/dist/core/S3MBlockParser.d.ts.map +1 -0
- package/dist/core/S3MBlockParser.js +789 -0
- package/dist/core/S3MBlockParser.js.map +1 -0
- package/dist/core/TextureFormat.d.ts +0 -1
- package/dist/core/TextureFormat.d.ts.map +1 -1
- package/dist/core/TextureFormat.js +19 -2
- package/dist/core/TextureFormat.js.map +1 -1
- package/dist/core/types.d.ts +65 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/render/DatasetManager.d.ts.map +1 -1
- package/dist/render/DatasetManager.js +5 -3
- package/dist/render/DatasetManager.js.map +1 -1
- package/dist/render/GeometryBuilder.d.ts +2 -0
- package/dist/render/GeometryBuilder.d.ts.map +1 -1
- package/dist/render/GeometryBuilder.js +185 -16
- package/dist/render/GeometryBuilder.js.map +1 -1
- package/dist/render/GroundManager.d.ts +57 -1
- package/dist/render/GroundManager.d.ts.map +1 -1
- package/dist/render/GroundManager.js +149 -21
- package/dist/render/GroundManager.js.map +1 -1
- package/dist/render/Picker.d.ts.map +1 -1
- package/dist/render/Picker.js +12 -4
- package/dist/render/Picker.js.map +1 -1
- package/dist/render/PointCloudMaterial.d.ts +36 -0
- package/dist/render/PointCloudMaterial.d.ts.map +1 -0
- package/dist/render/PointCloudMaterial.js +159 -0
- package/dist/render/PointCloudMaterial.js.map +1 -0
- package/dist/render/S3MViewer.d.ts +19 -0
- package/dist/render/S3MViewer.d.ts.map +1 -1
- package/dist/render/S3MViewer.js +143 -22
- package/dist/render/S3MViewer.js.map +1 -1
- package/dist/render/StyleMaterial.d.ts +6 -0
- package/dist/render/StyleMaterial.d.ts.map +1 -1
- package/dist/render/StyleMaterial.js +125 -2
- package/dist/render/StyleMaterial.js.map +1 -1
- package/dist/render/TextureFactory.d.ts.map +1 -1
- package/dist/render/TextureFactory.js +64 -10
- package/dist/render/TextureFactory.js.map +1 -1
- package/dist/tileset/S3MTileset.d.ts +152 -1
- package/dist/tileset/S3MTileset.d.ts.map +1 -1
- package/dist/tileset/S3MTileset.js +669 -53
- package/dist/tileset/S3MTileset.js.map +1 -1
- package/dist/vendor/crunch_decoder.module.js +12 -18
- package/dist/vendor/draco_decoder.module.js +3178 -0
- package/docs/API.md +110 -9
- package/package.json +1 -1
- package/src/core/AtlasAlpha.ts +82 -0
- package/src/core/AtlasPack.ts +127 -0
- package/src/core/AtlasUpgrade.ts +182 -0
- package/src/core/DXTTextureDecode.ts +28 -6
- package/src/core/Draco.ts +409 -0
- package/src/core/MeshOpt.ts +124 -18
- package/src/core/S3M1Parser.ts +430 -0
- package/src/core/S3MBParser.ts +112 -21
- package/src/core/S3MBlockParser.ts +953 -0
- package/src/core/TextureFormat.ts +20 -2
- package/src/core/types.ts +63 -0
- package/src/index.ts +2 -1
- package/src/render/DatasetManager.ts +5 -5
- package/src/render/GeometryBuilder.ts +207 -15
- package/src/render/GroundManager.ts +174 -20
- package/src/render/Picker.ts +13 -4
- package/src/render/PointCloudMaterial.ts +174 -0
- package/src/render/S3MViewer.ts +140 -24
- package/src/render/StyleMaterial.ts +135 -2
- package/src/render/TextureFactory.ts +67 -11
- package/src/tileset/S3MTileset.ts +701 -58
- package/src/vendor/crunch_decoder.module.js +12 -18
- package/src/vendor/draco_decoder.module.d.ts +128 -0
- package/src/vendor/draco_decoder.module.js +3178 -0
|
@@ -2,8 +2,14 @@
|
|
|
2
2
|
// crunch / CRN 解码器(wasm 内联为 base64,无外部资源)
|
|
3
3
|
// 来源:SuperMap iClient3D S3M SDK · S3MTiles/ThirdParty/crunch.{js,wasm}
|
|
4
4
|
// 许可:Apache-2.0(与 s3m-spec 一致)
|
|
5
|
-
//
|
|
6
|
-
//
|
|
5
|
+
// 改动(相对官方 SDK 原件):
|
|
6
|
+
// 1. wasm 加载从「按 URL fetch」换成「内联字节」——在 wasmBinary 赋值处注入
|
|
7
|
+
// __s3mCrunchWasmBytes();
|
|
8
|
+
// 2. Node 分支的 read_ 原来用裸 require("fs"/"path"),ESM 里取不到(Node ESM 没有
|
|
9
|
+
// require),且 wasm 已内联、这条路径根本不会走 —— 改成直接抛错;
|
|
10
|
+
// 3. 删掉 `module["exports"] = Module`:本文件有 export default,在任何环境下都是
|
|
11
|
+
// ESM,裸 module 只会让打包器报 COMMONJS_VARIABLE_IN_ESM,实际是死代码。
|
|
12
|
+
// 其余原样保留。
|
|
7
13
|
// 用法:import 后等 Module.calledRun / onRuntimeInitialized,再调 _malloc / _crn_*。
|
|
8
14
|
// ---------------------------------------------------------------------------
|
|
9
15
|
|
|
@@ -521,32 +527,20 @@ if (typeof WebAssembly !== 'undefined') {
|
|
|
521
527
|
return scriptDirectory + path
|
|
522
528
|
}
|
|
523
529
|
var read_, readAsync, readBinary, setWindowTitle;
|
|
524
|
-
var nodeFS;
|
|
525
|
-
var nodePath;
|
|
526
530
|
if (ENVIRONMENT_IS_NODE) {
|
|
527
|
-
// wasm 已内联,不需要按路径读文件;Node ESM 下也没有 __dirname
|
|
531
|
+
// wasm 已内联,不需要按路径读文件;Node ESM 下也没有 __dirname、没有 require。
|
|
532
|
+
// 保留签名只为兼容调用点,真走到这里说明用法不对,直接抛。
|
|
528
533
|
scriptDirectory = typeof __dirname !== "undefined" ? __dirname + "/" : "";
|
|
529
534
|
read_ = function shell_read(filename, binary) {
|
|
530
|
-
|
|
531
|
-
if (!nodePath)nodePath = require("path");
|
|
532
|
-
filename = nodePath["normalize"](filename);
|
|
533
|
-
return nodeFS["readFileSync"](filename, binary ? null : "utf8")
|
|
535
|
+
throw new Error("crunch_decoder: wasm 已内联,不支持按路径读取(" + filename + ")")
|
|
534
536
|
};
|
|
535
537
|
readBinary = function readBinary(filename) {
|
|
536
|
-
|
|
537
|
-
if (!ret.buffer) {
|
|
538
|
-
ret = new Uint8Array(ret)
|
|
539
|
-
}
|
|
540
|
-
assert(ret.buffer);
|
|
541
|
-
return ret
|
|
538
|
+
return read_(filename, true)
|
|
542
539
|
};
|
|
543
540
|
if (process["argv"].length > 1) {
|
|
544
541
|
thisProgram = process["argv"][1].replace(/\\/g, "/")
|
|
545
542
|
}
|
|
546
543
|
arguments_ = process["argv"].slice(2);
|
|
547
|
-
if (typeof module !== "undefined") {
|
|
548
|
-
module["exports"] = Module
|
|
549
|
-
}
|
|
550
544
|
process["on"]("uncaughtException", function (ex) {
|
|
551
545
|
if (!(ex instanceof ExitStatus)) {
|
|
552
546
|
throw ex
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Draco 几何解码器(google/draco,wasm 内联)的类型声明
|
|
3
|
+
*
|
|
4
|
+
* 只声明 S3M 用到的部分。两个坑:
|
|
5
|
+
* 1. `draco.Decoder` 的属性取值接口只接受 embind 的 `Draco*Array`,
|
|
6
|
+
* 直接传 JS TypedArray 会被 embind 当成对象指针,解出来全是 0。
|
|
7
|
+
* 2. 解码产物是 embind 包装的 C++ 对象,用完要 `draco.destroy()`,
|
|
8
|
+
* 否则 wasm 堆只涨不降。
|
|
9
|
+
*
|
|
10
|
+
* draco 的枚举常量(POSITION=0 / NORMAL=1 / COLOR=2 / TEX_COORD=3 / GENERIC=4,
|
|
11
|
+
* DT_FLOAT32=9 / DT_UINT8=2 / DT_UINT16=4 / DT_UINT32=6,POINT_CLOUD=0 /
|
|
12
|
+
* TRIANGULAR_MESH=1)在模块实例上,本文件不重复导出——避免被当成
|
|
13
|
+
* 可从 .js 引入的值。
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export interface DracoAttributeTransformData {
|
|
17
|
+
transform_type(): number;
|
|
18
|
+
quantization_bits(): number;
|
|
19
|
+
/** 仅量化变换有效:第 index 个分量的最小值 */
|
|
20
|
+
min_value(index: number): number;
|
|
21
|
+
range(): number;
|
|
22
|
+
__destroy__(): void;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface DracoPointAttribute {
|
|
26
|
+
attribute_type(): number;
|
|
27
|
+
data_type(): number;
|
|
28
|
+
num_components(): number;
|
|
29
|
+
normalized(): boolean;
|
|
30
|
+
byte_stride(): number;
|
|
31
|
+
byte_offset(): number;
|
|
32
|
+
unique_id(): number;
|
|
33
|
+
size(): number;
|
|
34
|
+
GetAttributeTransformData(): DracoAttributeTransformData;
|
|
35
|
+
__destroy__(): void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface DracoPointCloud {
|
|
39
|
+
num_points(): number;
|
|
40
|
+
num_attributes(): number;
|
|
41
|
+
__destroy__(): void;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface DracoStatus {
|
|
45
|
+
ok(): boolean;
|
|
46
|
+
error_msg(): string;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export interface DracoDecoder {
|
|
50
|
+
/** 传入的是 draco 字节流开头(至少 5 字节的 "DRACO" magic) */
|
|
51
|
+
GetEncodedGeometryType(data: Uint8Array): number;
|
|
52
|
+
DecodeArrayToPointCloud(
|
|
53
|
+
data: Uint8Array,
|
|
54
|
+
byteLength: number,
|
|
55
|
+
out: DracoPointCloud
|
|
56
|
+
): DracoStatus;
|
|
57
|
+
/** 按属性在几何里的序号取 */
|
|
58
|
+
GetAttribute(pc: DracoPointCloud, index: number): DracoPointAttribute;
|
|
59
|
+
/** 按 unique_id 取;不存在时返回 null */
|
|
60
|
+
GetAttributeByUniqueId(pc: DracoPointCloud, uniqueId: number): DracoPointAttribute | null;
|
|
61
|
+
GetAttributeFloatForAllPoints(pc: DracoPointCloud, attr: DracoPointAttribute, out: DracoFloat32Array): boolean;
|
|
62
|
+
GetAttributeFloatArrayForAllPoints(
|
|
63
|
+
pc: DracoPointCloud,
|
|
64
|
+
attr: DracoPointAttribute,
|
|
65
|
+
out: DracoFloat32Array
|
|
66
|
+
): boolean;
|
|
67
|
+
GetAttributeInt8ForAllPoints(pc: DracoPointCloud, attr: DracoPointAttribute, out: DracoInt8Array): boolean;
|
|
68
|
+
GetAttributeUInt8ForAllPoints(pc: DracoPointCloud, attr: DracoPointAttribute, out: DracoUInt8Array): boolean;
|
|
69
|
+
GetAttributeInt16ForAllPoints(pc: DracoPointCloud, attr: DracoPointAttribute, out: DracoInt16Array): boolean;
|
|
70
|
+
GetAttributeUInt16ForAllPoints(pc: DracoPointCloud, attr: DracoPointAttribute, out: DracoUInt16Array): boolean;
|
|
71
|
+
GetAttributeInt32ForAllPoints(pc: DracoPointCloud, attr: DracoPointAttribute, out: DracoInt32Array): boolean;
|
|
72
|
+
GetAttributeUInt32ForAllPoints(pc: DracoPointCloud, attr: DracoPointAttribute, out: DracoUInt32Array): boolean;
|
|
73
|
+
__destroy__(): void;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** embind 的定长数组包装:取值必须逐个 GetValue */
|
|
77
|
+
export interface DracoFloat32Array {
|
|
78
|
+
size(): number;
|
|
79
|
+
GetValue(index: number): number;
|
|
80
|
+
__destroy__(): void;
|
|
81
|
+
}
|
|
82
|
+
export interface DracoInt8Array {
|
|
83
|
+
size(): number;
|
|
84
|
+
GetValue(index: number): number;
|
|
85
|
+
__destroy__(): void;
|
|
86
|
+
}
|
|
87
|
+
export interface DracoUInt8Array {
|
|
88
|
+
size(): number;
|
|
89
|
+
GetValue(index: number): number;
|
|
90
|
+
__destroy__(): void;
|
|
91
|
+
}
|
|
92
|
+
export interface DracoInt16Array {
|
|
93
|
+
size(): number;
|
|
94
|
+
GetValue(index: number): number;
|
|
95
|
+
__destroy__(): void;
|
|
96
|
+
}
|
|
97
|
+
export interface DracoUInt16Array {
|
|
98
|
+
size(): number;
|
|
99
|
+
GetValue(index: number): number;
|
|
100
|
+
__destroy__(): void;
|
|
101
|
+
}
|
|
102
|
+
export interface DracoInt32Array {
|
|
103
|
+
size(): number;
|
|
104
|
+
GetValue(index: number): number;
|
|
105
|
+
__destroy__(): void;
|
|
106
|
+
}
|
|
107
|
+
export interface DracoUInt32Array {
|
|
108
|
+
size(): number;
|
|
109
|
+
GetValue(index: number): number;
|
|
110
|
+
__destroy__(): void;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export interface DracoModule {
|
|
114
|
+
Decoder: new () => DracoDecoder;
|
|
115
|
+
PointCloud: new () => DracoPointCloud;
|
|
116
|
+
DracoFloat32Array: new () => DracoFloat32Array;
|
|
117
|
+
DracoInt8Array: new () => DracoInt8Array;
|
|
118
|
+
DracoUInt8Array: new () => DracoUInt8Array;
|
|
119
|
+
DracoInt16Array: new () => DracoInt16Array;
|
|
120
|
+
DracoUInt16Array: new () => DracoUInt16Array;
|
|
121
|
+
DracoInt32Array: new () => DracoInt32Array;
|
|
122
|
+
DracoUInt32Array: new () => DracoUInt32Array;
|
|
123
|
+
/** 释放 embind 对象占用的 wasm 堆 */
|
|
124
|
+
destroy(obj: unknown): void;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
declare function loadDracoModule(): Promise<DracoModule>;
|
|
128
|
+
export default loadDracoModule;
|