s3m-three 0.4.21 → 0.4.23
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/s3m-three.iife.ext-three.js +35 -35
- package/dist/browser/s3m-three.iife.js +30 -30
- package/dist/render/DatasetManager.d.ts +30 -0
- package/dist/render/DatasetManager.d.ts.map +1 -1
- package/dist/render/DatasetManager.js +41 -0
- package/dist/render/DatasetManager.js.map +1 -1
- package/dist/render/GeometryBuilder.d.ts +18 -0
- package/dist/render/GeometryBuilder.d.ts.map +1 -1
- package/dist/render/GeometryBuilder.js +4 -1
- package/dist/render/GeometryBuilder.js.map +1 -1
- package/dist/render/S3MViewer.d.ts +68 -11
- package/dist/render/S3MViewer.d.ts.map +1 -1
- package/dist/render/S3MViewer.js +181 -19
- package/dist/render/S3MViewer.js.map +1 -1
- package/dist/render/StyleMaterial.d.ts +23 -2
- package/dist/render/StyleMaterial.d.ts.map +1 -1
- package/dist/render/StyleMaterial.js +35 -5
- package/dist/render/StyleMaterial.js.map +1 -1
- package/dist/render/TextureFactory.d.ts +23 -1
- package/dist/render/TextureFactory.d.ts.map +1 -1
- package/dist/render/TextureFactory.js +32 -8
- package/dist/render/TextureFactory.js.map +1 -1
- package/dist/render/viewer/LightRig.d.ts +21 -7
- package/dist/render/viewer/LightRig.d.ts.map +1 -1
- package/dist/render/viewer/LightRig.js +11 -13
- package/dist/render/viewer/LightRig.js.map +1 -1
- package/dist/render/viewer/types.d.ts +16 -2
- package/dist/render/viewer/types.d.ts.map +1 -1
- package/dist/render/viewer/types.js.map +1 -1
- package/dist/tileset/S3MTileset.d.ts +33 -0
- package/dist/tileset/S3MTileset.d.ts.map +1 -1
- package/dist/tileset/S3MTileset.js +27 -0
- package/dist/tileset/S3MTileset.js.map +1 -1
- package/docs/API.md +26 -5
- package/package.json +1 -1
- package/src/render/DatasetManager.ts +47 -0
- package/src/render/GeometryBuilder.ts +22 -1
- package/src/render/S3MViewer.ts +192 -19
- package/src/render/StyleMaterial.ts +48 -6
- package/src/render/TextureFactory.ts +50 -8
- package/src/render/viewer/LightRig.ts +23 -13
- package/src/render/viewer/types.ts +16 -2
- package/src/tileset/S3MTileset.ts +43 -0
|
@@ -32,6 +32,7 @@ import type {
|
|
|
32
32
|
} from '../core/S3MBlockParser.js';
|
|
33
33
|
import type { Anchor, ParsedTile, Stats, StyleUniforms } from '../core/types.js';
|
|
34
34
|
import type { TileGeometryData } from '../core/TileGeometry.js';
|
|
35
|
+
import type { TextureCreateOptions } from '../render/TextureFactory.js';
|
|
35
36
|
import type { Group, Texture } from 'three';
|
|
36
37
|
|
|
37
38
|
function dirOf(url: string): string {
|
|
@@ -246,6 +247,12 @@ export type BuildTileFn = (
|
|
|
246
247
|
assembled?: TileGeometryData;
|
|
247
248
|
/** 深度偏移配置(透传给 buildTileObjects),见 BuildTileOptions.polygonOffset */
|
|
248
249
|
polygonOffset?: { factor: number; units: number };
|
|
250
|
+
/** 光照模型档位(透传给 buildTileObjects),见 BuildTileOptions.materialQuality */
|
|
251
|
+
materialQuality?: 'pbr' | 'lambert';
|
|
252
|
+
/** 颜色管线(透传给 buildTileObjects),见 BuildTileOptions.colorPipeline */
|
|
253
|
+
colorPipeline?: 'linear' | 'direct';
|
|
254
|
+
/** 纹理创建参数(透传给 buildTileObjects → createTexture) */
|
|
255
|
+
textureOptions?: TextureCreateOptions;
|
|
249
256
|
}
|
|
250
257
|
) => Promise<{ group: Group; stats: Partial<Stats> }>;
|
|
251
258
|
|
|
@@ -258,6 +265,15 @@ export interface S3MTilesetOptions {
|
|
|
258
265
|
buildTile?: BuildTileFn | null;
|
|
259
266
|
/** 三角面材质深度偏移(共面摩尔纹 / 重合面归属),透传给 buildTileObjects */
|
|
260
267
|
polygonOffset?: { factor: number; units: number };
|
|
268
|
+
/**
|
|
269
|
+
* 光照模型档位,透传给 buildTileObjects。不传 = 读模块级默认。
|
|
270
|
+
* 由 DatasetManager 从图层 / 数据集设置带下来。
|
|
271
|
+
*/
|
|
272
|
+
materialQuality?: 'pbr' | 'lambert';
|
|
273
|
+
/** 颜色管线,透传给 buildTileObjects。不传 = 读模块级默认。由图层的渲染 profile 带下来 */
|
|
274
|
+
colorPipeline?: 'linear' | 'direct';
|
|
275
|
+
/** 纹理创建参数(sRGB 解码 / 尺寸上限 / 各向异性上限),透传给 createTexture */
|
|
276
|
+
textureOptions?: TextureCreateOptions;
|
|
261
277
|
/**
|
|
262
278
|
* 是否用 Web Worker 解析经典 `.s3mb` 瓦片(默认开)。
|
|
263
279
|
*
|
|
@@ -471,6 +487,9 @@ export class S3MTileset {
|
|
|
471
487
|
private isS3MV1 = false;
|
|
472
488
|
private _buildTile: BuildTileFn | null;
|
|
473
489
|
private readonly _polygonOffset: { factor: number; units: number } | undefined;
|
|
490
|
+
private _materialQuality: 'pbr' | 'lambert' | undefined;
|
|
491
|
+
private _colorPipeline: 'linear' | 'direct' | undefined;
|
|
492
|
+
private _textureOptions: TextureCreateOptions | undefined;
|
|
474
493
|
private readonly _uniforms: StyleUniforms | null;
|
|
475
494
|
/** 经典 .s3mb 的 Worker 解析客户端;undefined = 尚未尝试创建,null = 不可用/已降级 */
|
|
476
495
|
private _workerClient: S3MWorkerClient | null | undefined; private readonly _useWorker: boolean;
|
|
@@ -491,6 +510,9 @@ export class S3MTileset {
|
|
|
491
510
|
// 渲染层可注入:Node 环境下不需要 three,也能跑 URL / 解析链路
|
|
492
511
|
this._buildTile = options.buildTile ?? null;
|
|
493
512
|
this._polygonOffset = options.polygonOffset;
|
|
513
|
+
this._materialQuality = options.materialQuality;
|
|
514
|
+
this._colorPipeline = options.colorPipeline;
|
|
515
|
+
this._textureOptions = options.textureOptions;
|
|
494
516
|
// 着色器共享 uniform,由 S3MLayer 持有并传进来
|
|
495
517
|
this._uniforms = options.uniforms ?? null;
|
|
496
518
|
this._useWorker = options.useWorker !== false;
|
|
@@ -722,6 +744,24 @@ export class S3MTileset {
|
|
|
722
744
|
this.maxMemory = Number.isFinite(bytes) && bytes > 0 ? bytes : Infinity;
|
|
723
745
|
}
|
|
724
746
|
|
|
747
|
+
/**
|
|
748
|
+
* 运行时改本数据集的光照模型档位。只影响**之后**构建的瓦片材质;
|
|
749
|
+
* 场上已有材质由 `S3MViewer.setMaterialQuality` 原位重建。
|
|
750
|
+
* `undefined` = 跟随模块级默认。
|
|
751
|
+
*/
|
|
752
|
+
setMaterialQuality(q: 'pbr' | 'lambert' | undefined): void {
|
|
753
|
+
this._materialQuality = q;
|
|
754
|
+
}
|
|
755
|
+
|
|
756
|
+
/**
|
|
757
|
+
* 运行时改本数据集的渲染 profile(颜色管线 / 纹理参数)。
|
|
758
|
+
* 只影响**之后**构建的瓦片材质与纹理;场上已有的由 `S3MViewer` 统一重建 / 重传。
|
|
759
|
+
*/
|
|
760
|
+
setRenderProfile(p: { colorPipeline?: 'linear' | 'direct'; textureOptions?: TextureCreateOptions }): void {
|
|
761
|
+
if (p.colorPipeline !== undefined) this._colorPipeline = p.colorPipeline;
|
|
762
|
+
if (p.textureOptions !== undefined) this._textureOptions = p.textureOptions;
|
|
763
|
+
}
|
|
764
|
+
|
|
725
765
|
/**
|
|
726
766
|
* 当前数据集驻留的显存与内存总字节数(几何缓冲精确大小 + 纹理显存估计)
|
|
727
767
|
*/
|
|
@@ -1245,6 +1285,9 @@ export class S3MTileset {
|
|
|
1245
1285
|
uniforms: this._uniforms,
|
|
1246
1286
|
assembled,
|
|
1247
1287
|
polygonOffset: this._polygonOffset,
|
|
1288
|
+
materialQuality: this._materialQuality,
|
|
1289
|
+
colorPipeline: this._colorPipeline,
|
|
1290
|
+
textureOptions: this._textureOptions,
|
|
1248
1291
|
});
|
|
1249
1292
|
const { group, stats } = buildRes;
|
|
1250
1293
|
const texKeys = (buildRes as any).textureKeys ?? (group.userData?.textureKeys as string[] | undefined) ?? Object.keys(tile.textures ?? {});
|