soonspacejs 2.3.20 → 2.4.2

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 (42) hide show
  1. package/dist/index.esm.js +11 -19
  2. package/dist/index.js +11 -19
  3. package/package.json +14 -6
  4. package/types/Interface/animation.d.ts +4 -4
  5. package/types/Interface/base.d.ts +2 -1
  6. package/types/Interface/manager.d.ts +1 -1
  7. package/types/Interface/viewport.d.ts +31 -4
  8. package/types/Library/BaseObject3D.d.ts +2 -1
  9. package/types/Library/Model.d.ts +0 -2
  10. package/types/Library/Sbm.d.ts +0 -2
  11. package/types/Loader/DatLoader/DatLoader_DEPRECATED.d.ts +68 -0
  12. package/types/Loader/DatLoader/index.d.ts +59 -0
  13. package/types/Loader/DatLoader/pako_inflate.d.ts +2 -0
  14. package/types/Loader/DatLoader/parse-chunk/dracoCompress.d.ts +18 -0
  15. package/types/Loader/DatLoader/parse-chunk/gzipCompress.d.ts +1 -0
  16. package/types/Loader/DatLoader/parse-chunk/index.d.ts +11 -0
  17. package/types/Loader/DatLoader/parse-chunk/noCompress.d.ts +1 -0
  18. package/types/Loader/SbmLoader/SbkLoader.d.ts +1 -10
  19. package/types/Loader/SbmLoader/SbmLoader.d.ts +13 -9
  20. package/types/Loader/{utils → SbmLoader/utils}/generateSbm.d.ts +2 -2
  21. package/types/Manager/Canvas3DManage.d.ts +2 -2
  22. package/types/Manager/DefaultManage.d.ts +20 -11
  23. package/types/Manager/GroupManage.d.ts +7 -0
  24. package/types/Manager/HelperManage.d.ts +2 -2
  25. package/types/Manager/LightManage.d.ts +2 -1
  26. package/types/Manager/ModelManage.d.ts +27 -6
  27. package/types/Manager/PluginObjectManage.d.ts +3 -3
  28. package/types/Manager/PoiManage.d.ts +2 -2
  29. package/types/Manager/PoiNodeManage.d.ts +2 -2
  30. package/types/Manager/SbmManage.d.ts +2 -2
  31. package/types/Manager/TopologyManage.d.ts +2 -2
  32. package/types/Manager/index.d.ts +7 -5
  33. package/types/Shared/cloneDeep.d.ts +2 -0
  34. package/types/Shared/index.d.ts +6 -3
  35. package/types/Shared/material.d.ts +2 -0
  36. package/types/Shared/network.d.ts +1 -0
  37. package/types/Shared/path.d.ts +1 -0
  38. package/types/Viewport/EffectManager.d.ts +44 -0
  39. package/types/Viewport/RendererManager.d.ts +2 -26
  40. package/types/Viewport/index.d.ts +20 -9
  41. package/types/index.d.ts +18 -8
  42. package/types/Shared/sbmx.d.ts +0 -7
@@ -0,0 +1,11 @@
1
+ import { noCompressWorker } from './noCompress';
2
+ import { gzipCompressWorker } from './gzipCompress';
3
+ export { noCompressWorker, gzipCompressWorker, };
4
+ declare global {
5
+ interface Window {
6
+ parseChunkWorker: any;
7
+ noCompressWorker: any;
8
+ gzipCompressWorker: any;
9
+ }
10
+ }
11
+ export declare const parseChunkWorker: () => void;
@@ -0,0 +1 @@
1
+ export declare const noCompressWorker: () => void;
@@ -6,22 +6,13 @@ declare class SbkLoader {
6
6
  materials: Map<string, any>;
7
7
  sbmInfo: SbmInfo | null;
8
8
  constructor();
9
- /**
10
- * 加载模型
11
- * @param sbmInfo 模型信息
12
- * @param onProgress 模型加载进度回填函数
13
- */
14
- load(sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm | {
15
- sbm: Sbm;
16
- caches: SbmCache;
17
- }>;
18
9
  /**
19
10
  * 解析模型
20
11
  * @param buffer 模型二进制原数据
21
12
  * @param sbmInfo 模型信息
22
13
  * @param onProgress 模型加载进度回填函数
23
14
  */
24
- parseBuffer(buffer: ArrayBuffer, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm | {
15
+ parseBuffer(buffer: ArrayBuffer, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<{
25
16
  sbm: Sbm;
26
17
  caches: SbmCache;
27
18
  }>;
@@ -1,35 +1,39 @@
1
1
  import { Sbm, SbmInfo } from '../../Library';
2
2
  import { ModelLoadingProgress, ModelLoadingProgressCallback } from '../../Interface';
3
+ import { SbmCache } from '../../Interface/sbmCache';
3
4
  declare class SbmLoader {
4
5
  materials: Map<string, any>;
5
6
  sbmInfo: SbmInfo | null;
6
7
  isLE: boolean;
7
8
  constructor();
8
- /**
9
- * 加载模型
10
- * @param sbmInfo 模型信息
11
- * @param onProgress 模型加载进度回填函数
12
- */
13
- load(sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
14
9
  /**
15
10
  * 解析模型
16
11
  * @param buffer 模型二进制原数据
17
12
  * @param sbmInfo 模型信息
18
13
  * @param onProgress 模型加载进度回填函数
19
14
  */
20
- parseBuffer(buffer: ArrayBuffer, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
15
+ parseBuffer(buffer: ArrayBuffer, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<{
16
+ sbm: Sbm;
17
+ caches: SbmCache;
18
+ }>;
21
19
  /**
22
20
  * @param dataView
23
21
  * @param offset
24
22
  * @param onProgress
25
23
  */
26
- _parseV2(dataView: DataView, offset: number, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
24
+ _parseV2(dataView: DataView, offset: number, onProgress?: ModelLoadingProgressCallback): Promise<{
25
+ sbm: Sbm;
26
+ caches: SbmCache;
27
+ }>;
27
28
  /**
28
29
  * @param dataView
29
30
  * @param offset
30
31
  * @param onProgress
31
32
  */
32
- _parseV3(dataView: DataView, offset: number, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
33
+ _parseV3(dataView: DataView, offset: number, onProgress?: ModelLoadingProgressCallback): Promise<{
34
+ sbm: Sbm;
35
+ caches: SbmCache;
36
+ }>;
33
37
  /**
34
38
  * 获取材质贴图路径
35
39
  * @param modelUrl 模型资源路径
@@ -1,4 +1,4 @@
1
- import { Texture, MeshPhongMaterial } from 'three';
1
+ import { Texture, MeshStandardMaterial } from 'three';
2
2
  /**
3
3
  * 生成 sbm 纹理
4
4
  * @param url
@@ -10,4 +10,4 @@ export declare const generateSbmTexture: (textureUrl: string) => Texture;
10
10
  * @param arr
11
11
  * @param texture
12
12
  */
13
- export declare const generateSbmMaterial: (materialId: string, arr: number[], texture: Texture | null) => MeshPhongMaterial;
13
+ export declare const generateSbmMaterial: (materialId: string, arr: number[], texture: Texture | null) => MeshStandardMaterial;
@@ -1,8 +1,8 @@
1
1
  import DefaultManage from './DefaultManage';
2
2
  import Viewport from '../Viewport';
3
- import { Group, GroupInfo, Canvas3D, Canvas3DInfo } from '../Library';
3
+ import { Group, GroupInfo, Canvas3D, Canvas3DInfo, SceneManage } from '../Library';
4
4
  declare class Canvas3DManage extends DefaultManage {
5
- constructor(viewport: Viewport);
5
+ constructor(viewport: Viewport, scene: SceneManage);
6
6
  create(info: Canvas3DInfo): Canvas3D;
7
7
  createToGroup(groupInfo: GroupInfo, poiInfo: Canvas3DInfo[]): Group;
8
8
  addForGroup(groupId: GroupInfo['id'], poiInfo: Canvas3DInfo[]): Group | null;
@@ -1,22 +1,31 @@
1
+ import { Object3D } from 'three';
1
2
  import Viewport from '../Viewport';
2
- import { SceneManage, BaseObject3D, Group, GroupInfo } from '../Library';
3
+ import { Group, GroupInfo, SceneManage, BaseObject3D } from '../Library';
3
4
  import { UserDataPropertyFindFunc } from '../Interface';
4
5
  declare type findPropKey = 'name' | 'sid';
6
+ declare type ManageCache = {
7
+ objects: Map<BaseObject3D['sid'], Object3D>;
8
+ };
5
9
  declare class DefaultManage {
6
10
  readonly type: string;
7
11
  readonly scene: SceneManage;
8
12
  readonly viewport: Viewport;
9
- constructor(type: string, viewport: Viewport);
10
- update(): void;
11
- getById<T>(id: BaseObject3D['sid'], type?: string): T | null;
12
- getByName<T>(name: string, type?: string): T[];
13
- getByUserDataProperty<T = BaseObject3D>(propNameOrFindFunc: string | UserDataPropertyFindFunc, propValue?: any): T[];
13
+ readonly cache: ManageCache;
14
+ constructor(type: string, viewport: Viewport, scene: SceneManage);
15
+ /**
16
+ * cache
17
+ */
18
+ getObjectsCache<T extends Object3D>(sid: BaseObject3D['sid']): T;
19
+ setObjectsCache<T extends Object3D>(objects: T): void;
20
+ removeObjectsCache(sid: BaseObject3D['sid']): void;
21
+ /***
22
+ * group
23
+ */
24
+ createGroup(groupInfo: GroupInfo, parent?: Object3D | null): Group;
25
+ getById<T extends Object3D>(id: BaseObject3D['sid'], type?: string): T | null;
26
+ getByName<T extends BaseObject3D>(name: string, type?: string): T[];
27
+ getByUserDataProperty<T extends Object3D = BaseObject3D>(propNameOrFindFunc: string | UserDataPropertyFindFunc, propValue?: any): T[];
14
28
  removeById(id: BaseObject3D['sid']): boolean;
15
- createGroup(groupInfo: GroupInfo): Group;
16
- getGroupById<T = Group>(id: string | number): T | null;
17
- getGroupByName<T = Group>(name: string): T[];
18
- getAllGroup(): Group[];
19
- removeGroupById(id: BaseObject3D['sid']): boolean;
20
29
  clear(): void;
21
30
  getAll<T = BaseObject3D>(): T[];
22
31
  hideAll(): void;
@@ -0,0 +1,7 @@
1
+ import { SceneManage } from '../Library';
2
+ import Viewport from '../Viewport';
3
+ import DefaultManage from './DefaultManage';
4
+ declare class GroupManage extends DefaultManage {
5
+ constructor(viewport: Viewport, scene: SceneManage);
6
+ }
7
+ export default GroupManage;
@@ -3,9 +3,9 @@ import DefaultManage from './DefaultManage';
3
3
  import { GridHelper, AxesHelper, Box3Helper, DirectionalLightHelper, HemisphereLightHelper, SpotLightHelper, PointLightHelper } from 'three';
4
4
  import { RectAreaLightHelper } from 'three/examples/jsm/helpers/RectAreaLightHelper.js';
5
5
  import { GridHelperOptions, AxesHelperOptions, BoxHelperOptions, PlaneHelperOptions, GroundHelperOptions, DirectionalLightHelperOptions, HemisphereLightHelperOptions, SpotLightHelperOptions, PointLightHelperOptions, RectAreaLightHelperOptions } from '../Interface';
6
- import { BaseMesh, Ground } from '../Library';
6
+ import { BaseMesh, Ground, SceneManage } from '../Library';
7
7
  declare class HelperManage extends DefaultManage {
8
- constructor(viewport: Viewport);
8
+ constructor(viewport: Viewport, scene: SceneManage);
9
9
  addGridHelper(options: GridHelperOptions): GridHelper;
10
10
  addAxesHelper(options: AxesHelperOptions): AxesHelper;
11
11
  addBoxHelper(options: BoxHelperOptions): Box3Helper;
@@ -2,8 +2,9 @@ import { AmbientLight, DirectionalLight, HemisphereLight, SpotLight, PointLight,
2
2
  import DefaultManage from './DefaultManage';
3
3
  import Viewport from '../Viewport';
4
4
  import { AmbientLightOptions, DirectionalLightOptions, HemisphereLightOptions, SpotLightOptions, PointLightOptions, RectAreaLightOptions } from '../Interface';
5
+ import { SceneManage } from '../Library';
5
6
  declare class LightManage extends DefaultManage {
6
- constructor(viewport: Viewport);
7
+ constructor(viewport: Viewport, scene: SceneManage);
7
8
  createAmbientLight(options: AmbientLightOptions): AmbientLight;
8
9
  setAmbientLight(options: AmbientLightOptions): boolean;
9
10
  createDirectionalLight(options: DirectionalLightOptions): DirectionalLight;
@@ -1,20 +1,42 @@
1
+ import { LoadingManager } from 'three';
1
2
  import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js';
2
3
  import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
3
4
  import * as localforage from 'localforage';
5
+ import { DatLoader } from '../Loader/DatLoader';
4
6
  import DefaultManage from './DefaultManage';
5
- import { BaseObject3D, Group, GroupInfo, Model, ModelInfo } from '../Library';
7
+ import { BaseObject3D, Group, GroupInfo, Model, ModelInfo, SceneManage } from '../Library';
6
8
  import { CloneModelInfo } from '../Interface';
7
9
  import Viewport from '../Viewport';
8
10
  declare class ModelManage extends DefaultManage {
9
11
  readonly viewport: Viewport;
10
12
  modelMaps: Map<string, Model>;
11
13
  store: typeof localforage;
14
+ loadingManager: LoadingManager;
15
+ datLoader: DatLoader;
16
+ gltfLoader: GLTFLoader;
17
+ fbxLoader: FBXLoader;
12
18
  dracoDecoderPath: string | null;
13
- gltfLoader: GLTFLoader | null;
14
- fbxLoader: FBXLoader | null;
15
- constructor(viewport: Viewport);
19
+ constructor(viewport: Viewport, scene: SceneManage);
20
+ private _initLoadingManager;
21
+ private _setModelMpas;
22
+ private _parseSbmx;
23
+ private _parseDat;
24
+ private _parseGltf;
25
+ private _parseFbx;
26
+ /**
27
+ * 设置 draco path
28
+ * @param path
29
+ */
16
30
  setDracoDecoderPath(path: string): void;
17
31
  load(modelInfo: ModelInfo): Promise<Model>;
32
+ _loadItem(modelInfo: ModelInfo, parent?: BaseObject3D | null): Promise<Model>;
33
+ /**
34
+ * model 解析
35
+ * @param format
36
+ * @param buffer
37
+ * @param modelInfo
38
+ * @returns
39
+ */
18
40
  parse(format: string, buffer: ArrayBuffer, modelInfo: ModelInfo): Promise<Model>;
19
41
  clone(model: Model, info: CloneModelInfo, parent?: BaseObject3D | null): Promise<Model>;
20
42
  loadToGroup(groupInfo: GroupInfo, modelInfo: ModelInfo[]): Promise<Group>;
@@ -23,13 +45,12 @@ declare class ModelManage extends DefaultManage {
23
45
  * 清空本地模型缓存数据
24
46
  */
25
47
  clearIdb(): Promise<void>;
26
- _loadItem(modelInfo: ModelInfo, parent?: BaseObject3D | null): Promise<Model>;
48
+ dispose(): void;
27
49
  /**
28
50
  * 远程请求 model
29
51
  * @param modelInfo
30
52
  * @returns
31
53
  */
32
54
  _fetchBuffer(modelInfo: ModelInfo): Promise<ArrayBuffer>;
33
- private _copyMaterial;
34
55
  }
35
56
  export default ModelManage;
@@ -1,9 +1,9 @@
1
+ import { Object3D } from 'three';
1
2
  import DefaultManage from './DefaultManage';
2
- import { PluginObject, PluginObjectInfo } from '../Library';
3
+ import { PluginObject, PluginObjectInfo, SceneManage } from '../Library';
3
4
  import Viewport from '../Viewport';
4
- import { Object3D } from 'three';
5
5
  declare class PluginManage extends DefaultManage {
6
- constructor(viewport: Viewport);
6
+ constructor(viewport: Viewport, scene: SceneManage);
7
7
  createObject(info: PluginObjectInfo, object?: Object3D): PluginObject;
8
8
  addToObject(id: PluginObjectInfo['id'], object: Object3D): PluginObject | null;
9
9
  }
@@ -1,11 +1,11 @@
1
1
  import DefaultManage from './DefaultManage';
2
2
  import { SpriteMaterial } from 'three';
3
- import { Poi, PoiInfo, Group, GroupInfo, BaseObject3D } from '../Library';
3
+ import { Poi, PoiInfo, Group, GroupInfo, BaseObject3D, SceneManage } from '../Library';
4
4
  import { ClonePoiInfo } from '../Interface';
5
5
  import Viewport from '../Viewport';
6
6
  declare class PoiManage extends DefaultManage {
7
7
  materials: Map<string, SpriteMaterial>;
8
- constructor(viewport: Viewport);
8
+ constructor(viewport: Viewport, scene: SceneManage);
9
9
  create(info: PoiInfo): Poi;
10
10
  clone(poi: Poi, poiInfo: ClonePoiInfo, parent?: BaseObject3D | null): Poi | void;
11
11
  createToGroup(groupInfo: GroupInfo, poiInfo: PoiInfo[]): Group;
@@ -1,8 +1,8 @@
1
1
  import DefaultManage from './DefaultManage';
2
2
  import Viewport from '../Viewport';
3
- import { PoiNode, PoiNodeInfo, Group, GroupInfo } from '../Library';
3
+ import { PoiNode, PoiNodeInfo, Group, GroupInfo, SceneManage } from '../Library';
4
4
  declare class PoiNodeManage extends DefaultManage {
5
- constructor(viewport: Viewport);
5
+ constructor(viewport: Viewport, scene: SceneManage);
6
6
  create(info: PoiNodeInfo): PoiNode;
7
7
  createToGroup(groupInfo: GroupInfo, poiNodeInfo: PoiNodeInfo[]): Group;
8
8
  addForGroup(groupId: GroupInfo['id'], poiNodeInfo: PoiNodeInfo[]): Group | null;
@@ -1,14 +1,14 @@
1
1
  import * as localforage from 'localforage';
2
2
  import DefaultManage from './DefaultManage';
3
3
  import Viewport from '../Viewport';
4
- import { BaseObject3D, Group, GroupInfo, Sbm, SbmInfo } from '../Library';
4
+ import { BaseObject3D, Group, GroupInfo, Sbm, SbmInfo, SceneManage } from '../Library';
5
5
  import { CloneSbmInfo, ModelLoadingProgressCallback, GroupProgressCallback } from '../Interface';
6
6
  import { SbmCache } from '../Interface/sbmCache';
7
7
  declare class SbmManage extends DefaultManage {
8
8
  readonly viewport: Viewport;
9
9
  modelMaps: Map<string, Sbm>;
10
10
  store: typeof localforage;
11
- constructor(viewport: Viewport);
11
+ constructor(viewport: Viewport, scene: SceneManage);
12
12
  load(sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
13
13
  parse(data: ArrayBuffer | SbmCache, sbmInfo: SbmInfo, onProgress?: ModelLoadingProgressCallback): Promise<Sbm>;
14
14
  clone(model: Sbm, sbmInfo: CloneSbmInfo, parent?: BaseObject3D | null): Promise<Sbm>;
@@ -1,11 +1,11 @@
1
1
  import DefaultManage from './DefaultManage';
2
- import { Group, GroupInfo, Topology, TopologyInfo } from '../Library';
2
+ import { Group, GroupInfo, SceneManage, Topology, TopologyInfo } from '../Library';
3
3
  import { TopologyInfoForGml, ShortestPathInfo, ShortestPathByMultipleStartPoints, ShortestPathByMultipleEndPoints, TopologyNodeInfo } from '../Interface';
4
4
  import Viewport from '../Viewport';
5
5
  import { Dijkstras } from '../Math/dijkstra';
6
6
  declare class TopologyManage extends DefaultManage {
7
7
  dijkstra: Dijkstras;
8
- constructor(viewport: Viewport);
8
+ constructor(viewport: Viewport, scene: SceneManage);
9
9
  createFromGml(topologyInfoForGml: TopologyInfoForGml): Promise<Topology>;
10
10
  create(topologyInfo: TopologyInfo): Topology;
11
11
  resetNodes(topology: Topology, nodes: TopologyNodeInfo[]): Topology;
@@ -1,5 +1,5 @@
1
1
  import Viewport from '../Viewport';
2
- import DefaultManage from './DefaultManage';
2
+ import { SceneManage } from '../Library';
3
3
  import LightManage from './LightManage';
4
4
  import SbmManage from './SbmManage';
5
5
  import ModelManage from './ModelManage';
@@ -9,8 +9,10 @@ import Canvas3DManage from './Canvas3DManage';
9
9
  import TopologyManage from './TopologyManage';
10
10
  import HelperManage from './HelperManage';
11
11
  import PluginObjectManage from './PluginObjectManage';
12
+ import GroupManage from './GroupManage';
12
13
  interface ManagerStore {
13
- LightManager: LightManage;
14
+ groupManager: GroupManage;
15
+ lightManager: LightManage;
14
16
  sbmManager: SbmManage;
15
17
  modelManager: ModelManage;
16
18
  poiManager: PoiManage;
@@ -19,17 +21,17 @@ interface ManagerStore {
19
21
  topologyManager: TopologyManage;
20
22
  helperManager: HelperManage;
21
23
  pluginObjectManager: PluginObjectManage;
22
- [x: string]: DefaultManage;
23
24
  }
24
25
  declare class Manager {
25
26
  readonly viewport: Viewport;
26
- needUpdate: boolean;
27
+ readonly scene: SceneManage;
27
28
  readonly store: ManagerStore;
28
- readonly postUpdate: Map<string, () => void>;
29
29
  constructor(viewport: Viewport);
30
+ levelUpdate(): void;
30
31
  update(): void;
31
32
  clearObject(): void;
32
33
  clear(): void;
34
+ dispose(): void;
33
35
  }
34
36
  export { ManagerStore, };
35
37
  export default Manager;
@@ -0,0 +1,2 @@
1
+ declare function cloneDeep<T = any>(val: T): T;
2
+ export { cloneDeep, };
@@ -9,15 +9,18 @@ declare const isArray: (arg: any) => arg is any[];
9
9
  declare const isObject: <T = Record<any, any>>(val: unknown) => val is T;
10
10
  declare const isFunction: (val: unknown) => val is () => void;
11
11
  declare const isPromise: <T = any>(val: unknown) => val is Promise<T>;
12
- declare const typeJudge: (val: any) => string;
12
+ declare const getValueType: (val: any) => string;
13
13
  declare const sleep: (time: number) => Promise<void>;
14
14
  declare const getAsciiString: (buf: ArrayBufferLike, offset: number, len: number) => string;
15
15
  export * from './log';
16
16
  export * from './viewport';
17
17
  export * from './MinHeap';
18
18
  export * from './map';
19
- export * from './sbmx';
19
+ export * from './path';
20
+ export * from './cloneDeep';
21
+ export * from './material';
22
+ export * from './network';
20
23
  export { hasOwn, };
21
24
  export { isString, isBoolean, isNumber, isNull, isSymbol, };
22
25
  export { isDate, isArray, isObject, isFunction, isPromise, };
23
- export { typeJudge, sleep, getAsciiString, };
26
+ export { getValueType, sleep, getAsciiString, };
@@ -0,0 +1,2 @@
1
+ import { Mesh } from 'three';
2
+ export declare const cloneMaterials: (mesh: Mesh) => import("three").Material | import("three").Material[];
@@ -0,0 +1 @@
1
+ export declare const fetchFile: (url: string) => Promise<Response>;
@@ -0,0 +1 @@
1
+ export declare const parseFilePath: (url: string) => string;
@@ -0,0 +1,44 @@
1
+ import { Camera, Scene, WebGLRenderer } from 'three';
2
+ import { EffectComposer, Pass, Effect } from 'postprocessing';
3
+ export interface EffectState<T = Effect> {
4
+ enabled: boolean;
5
+ effect: T;
6
+ }
7
+ declare class EffectManager {
8
+ readonly renderer: WebGLRenderer;
9
+ readonly scene: Scene;
10
+ readonly camera: Camera;
11
+ static CONSTANTS: {
12
+ renderPass: string;
13
+ normalPass: string;
14
+ depthDownsamplingPass: string;
15
+ effectPass: string;
16
+ smaaEffect: string;
17
+ ssaoEffect: string;
18
+ outlineEffect: string;
19
+ };
20
+ effectComposer: EffectComposer;
21
+ passesMap: Map<string, Pass>;
22
+ effectsMap: Map<string, EffectState>;
23
+ constructor(renderer: WebGLRenderer, scene: Scene, camera: Camera);
24
+ /**
25
+ * 更新 Effect pass
26
+ */
27
+ updateEffectPass(): void;
28
+ /**
29
+ * 更新 camera
30
+ * @param camera
31
+ */
32
+ updateCamera(camera: Camera): void;
33
+ private _initEffectComposer;
34
+ private _initPasses;
35
+ private _initRenderPass;
36
+ private _initNormalPass;
37
+ private _initDownSamplingPass;
38
+ private _initEffectPass;
39
+ private _initEffects;
40
+ private _initSMAAEffect;
41
+ private _initSSAOEffect;
42
+ private _initOutlineEffect;
43
+ }
44
+ export default EffectManager;
@@ -1,35 +1,16 @@
1
- import { Scene, WebGLRenderer, Camera, Vector2 } from 'three';
2
- import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
3
- import { Pass } from 'three/examples/jsm/postprocessing/Pass.js';
4
- import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass.js';
5
- import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass.js';
6
- import { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass.js';
7
- import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass.js';
1
+ import { WebGLRenderer, Vector2 } from 'three';
8
2
  import { CSS2DRenderer, CSS2DHalfRenderer, CSS3DRenderer } from '../Renderer';
9
3
  import { InternalOptions, ViewportOptions } from '../Interface';
10
- export interface PassObj {
11
- renderPass: RenderPass;
12
- outlinePass: OutlinePass;
13
- unrealBloomPass: UnrealBloomPass;
14
- sobelPass: ShaderPass;
15
- gammaCorrectionPass: ShaderPass;
16
- }
17
4
  declare class RendererManager {
18
- scene: Scene;
19
5
  options: ViewportOptions;
20
6
  internalOptions: InternalOptions;
21
- effectComposer: EffectComposer | null;
22
7
  renderer: WebGLRenderer;
23
8
  container: HTMLElement;
24
9
  interactiveContainer: HTMLElement;
25
10
  rendererCSS2D: CSS2DRenderer;
26
11
  rendererCSS3D: CSS3DRenderer;
27
12
  rendererCSS2DHalf: CSS2DHalfRenderer;
28
- constructor(scene: Scene, options: ViewportOptions);
29
- initEffectComposer(): EffectComposer;
30
- initAllPass(camera: Camera): PassObj;
31
- addPass(effectPass: Pass): void;
32
- isIncludesPass(effectPass: Pass): boolean;
13
+ constructor(options: ViewportOptions);
33
14
  setInternalState(name: keyof InternalOptions, state: boolean): void;
34
15
  getWidth(): number;
35
16
  getHeight(): number;
@@ -41,10 +22,5 @@ declare class RendererManager {
41
22
  _initRenderCSS3D(): CSS3DRenderer;
42
23
  _initRenderCSS2DHalf(): CSS2DHalfRenderer;
43
24
  _initInteractiveContainer(): HTMLElement;
44
- _initRenderPass(camera: Camera): RenderPass;
45
- _initOutlinePass(camera: Camera): OutlinePass;
46
- _initUnrealBloomPass(): UnrealBloomPass;
47
- _initSobelPass(): ShaderPass;
48
- _initGammaCorrectionPass(): ShaderPass;
49
25
  }
50
26
  export default RendererManager;
@@ -1,18 +1,22 @@
1
- import { Scene, PerspectiveCamera, WebGLRenderer, PMREMGenerator, Vector3, AnimationMixer, Intersection, Object3D, AnimationAction, AnimationClip } from 'three';
2
- import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js';
1
+ import { Clock, Scene, PerspectiveCamera, WebGLRenderer, PMREMGenerator, Vector3, AnimationMixer, Intersection, Object3D, AnimationAction, AnimationClip } from 'three';
2
+ import { EffectComposer } from 'postprocessing';
3
3
  import Stats from 'three/examples/jsm/libs/stats.module.js';
4
4
  import { Sky } from 'three/examples/jsm/objects/Sky.js';
5
5
  import Scener from './Scener';
6
6
  import { CSS2DRenderer, CSS2DHalfRenderer, CSS3DRenderer } from '../Renderer';
7
- import RendererManager, { PassObj } from './RendererManager';
7
+ import RendererManager from './RendererManager';
8
8
  import CameraManager from './CameraManager';
9
+ import EffectManager from './EffectManager';
9
10
  import { FullFreeControls } from '../Controls';
10
11
  import { Model } from '../Library';
11
- import { ColorSpace, SkyOptions, IColor, OffsetPoint, SceneEventType, Position, ViewportOptions, ViewportState, ModelAnimationFindFunc, SignalsState, BloomOptions, SobelOptions } from '../Interface';
12
+ import { ColorSpace, SkyOptions, IColor, OffsetPoint, SceneEventType, Position, ViewportOptions, ViewportState, ModelAnimationFindFunc, SignalsState, ToneMappingOptions, SSAOOptions } from '../Interface';
12
13
  import Info from './Info';
13
14
  import { ViewHelper } from './ViewHelper';
14
- export declare const innerRenderState: Record<string, boolean>;
15
+ export declare const innerRenderState: {
16
+ needsUpdate: boolean;
17
+ };
15
18
  declare class Viewport {
19
+ clock: Clock;
16
20
  options: ViewportOptions;
17
21
  state: ViewportState;
18
22
  signals: SignalsState;
@@ -32,8 +36,8 @@ declare class Viewport {
32
36
  cameraManager: CameraManager;
33
37
  camera: PerspectiveCamera;
34
38
  controls: FullFreeControls;
39
+ effectManager: EffectManager;
35
40
  effectComposer: EffectComposer;
36
- passObj: PassObj;
37
41
  mixer: AnimationMixer;
38
42
  /**
39
43
  * render 前回调
@@ -51,12 +55,17 @@ declare class Viewport {
51
55
  _initInfo(): void;
52
56
  _initStats(): void;
53
57
  _initViewHelper(): void;
54
- setSobel(options?: SobelOptions): void;
58
+ /**
59
+ ***************************** post-processing ***************************
60
+ */
61
+ setSobel(): void;
62
+ setBloom(): void;
63
+ setSSAO(options: SSAOOptions): void;
55
64
  /**
56
65
  ***************************** renderer ***************************
57
66
  */
58
- setBloom(options?: BloomOptions): void;
59
67
  setColorSpace(colorSpace: ColorSpace): void;
68
+ setToneMapping(options?: ToneMappingOptions): void;
60
69
  /**
61
70
  ***************************** background ***************************
62
71
  */
@@ -80,6 +89,9 @@ declare class Viewport {
80
89
  */
81
90
  render(fn?: () => void): Promise<void>;
82
91
  trigerRender(count?: number): void;
92
+ /**
93
+ * effect passes
94
+ */
83
95
  _passesObserver(): void;
84
96
  /**
85
97
  * 每帧都会被执行
@@ -106,6 +118,5 @@ declare class Viewport {
106
118
  * @param {MouseEvent | TouchEvent} event 鼠标事件对象 或 触摸事件对象
107
119
  */
108
120
  _triggerSceneEventInAllObject(eventType: SceneEventType, event: MouseEvent | TouchEvent): void;
109
- _getManagerScene(type: string): Object3D | undefined;
110
121
  }
111
122
  export default Viewport;