soonspacejs
Version:
soonspacejs 2.x
1,284 lines (1,283 loc) • 39.3 kB
TypeScript
/**
____ ____ _
/ ___| ___ ___ _ __ / ___| _ __ __ _ ___ ___ (_)___
\___ \ / _ \ / _ \| '_ \\___ \| '_ \ / _` |/ __/ _ \ | / __|
___) | (_) | (_) | | | |___) | |_) | (_| | (_| __/_ | \__ \
|____/ \___/ \___/|_| |_|____/| .__/ \__,_|\___\___(_)/ |___/
|_| |__/
*/
import * as THREE from 'three';
import { Object3D, Vector3, Euler, Box3, AnimationClip, Light, Texture, Mesh, Skeleton } from 'three';
import type { Camera } from 'three';
import * as TWEEN from 'three/examples/jsm/libs/tween.module.js';
import * as shared from './Shared';
import Animation from './Animation';
import { PathAnimation, PathAnimationOptions } from './Animation/path-animation';
import { CreatePathAnimationOptions, CreatePathAnimationActionForCameraOptions, CreateBonePathAnimationOptions, AnimationPath } from './Animation/createPathAnimation';
import * as library from './Library';
import { BaseObject3D, Model, ModelInfo, Poi, PoiInfo, PoiNode, PoiNodeInfo, Topology, TopologyInfo, Group, GroupInfo, Canvas3D, Canvas3DInfo, PluginObject, PluginObjectInfo, DecalInfo, Decal, DecalGeometryInfo, PoiMeshInfo, PolygonPoiMeshInfo } from './Library';
import { ObjectsCache } from './Cache';
import Viewport from './Viewport';
import Controls from './Controls';
import Manager from './Manager';
import { BaseObjectInfo, ViewportOptions, SceneGlobalEvents, PluginsConstructor, IColor, Position, Rotation, OffsetPoint, ModelAnimationFindFunc, TopologyNodeInfo, FlyToViewpoint, FlyToOptions, FlyToObjOptions, SurroundOptions, LabelOptions, EdgeSelectOptions, StrokeSelectOptions, OpacitySelectOptions, HighlightSelectOptions, EmissiveSelectOptions, FogOptions, UserDataPropertyFindFunc, AmbientLightOptions, DirectionalLightOptions, HemisphereLightOptions, SpotLightOptions, PointLightOptions, CloneModelInfo, ClonePoiInfo, ShortestPathInfo, ShortestPathByMultipleStartPoints, ShortestPathByMultipleEndPoints, TopologyInfoForGml, GridHelperOptions, AxesHelperOptions, BoxHelperOptions, PlaneHelperOptions, GroundHelperOptions, DirectionalLightHelperOptions, HemisphereLightHelperOptions, SpotLightHelperOptions, PointLightHelperOptions, SignalsState, ControlsOptions, RectAreaLightOptions, RectAreaLightHelperOptions, SkyOptions, IColorSpace, ToneMappingOptions, SSAOOptions, BloomOptions, IVector3, EnvironmentOptions, PluginsConstructorWithOptions, TopologyPassableInfo, CameraViewpointData, CameraViewpointDataLegacy, CameraType } from './Interface';
import { BoxSpace, FindObjectsNearPosition, FindNearbyObjects, SetTextureOptions } from './tools';
import { ModelsBoundsTreeOptions } from './Viewport/Bvh';
import './three-patches';
export type InitOptions = ViewportOptions;
export type InitEvents = SceneGlobalEvents;
export interface SoonSpaceConstructor {
el?: string | HTMLElement;
options?: InitOptions;
events?: InitEvents;
}
export * from './Library';
export * from './Interface';
export * from './tools';
export * from './Constants';
import type { AnimationOperate, CreateChainSkeletalModelOptions, CreateCurveAnimationClipForBonesOptions } from '@three3d/animation';
export * from '@three3d/animation';
/**
* 文件请求头
*/
export { FileRequestHeaders, } from './Constants/headers';
declare class SoonSpace {
static readonly THREE: typeof THREE;
readonly THREE: typeof THREE;
static readonly TWEEN: typeof TWEEN;
readonly TWEEN: typeof TWEEN;
static readonly utils: typeof shared;
readonly utils: typeof shared;
static readonly animation: typeof Animation;
readonly animation: typeof Animation;
static readonly library: typeof library;
readonly library: typeof library;
static readonly ACTION: Readonly<{
readonly NONE: 0;
readonly ROTATE: 1;
readonly TRUCK: 2;
readonly OFFSET: 4;
readonly DOLLY: 8;
readonly ZOOM: 16;
readonly TOUCH_ROTATE: 32;
readonly TOUCH_TRUCK: 64;
readonly TOUCH_OFFSET: 128;
readonly TOUCH_DOLLY: 256;
readonly TOUCH_ZOOM: 512;
readonly TOUCH_DOLLY_TRUCK: 1024;
readonly TOUCH_DOLLY_OFFSET: 2048;
readonly TOUCH_DOLLY_ROTATE: 4096;
readonly TOUCH_ZOOM_TRUCK: 8192;
readonly TOUCH_ZOOM_OFFSET: 16384;
readonly TOUCH_ZOOM_ROTATE: 32768;
}>;
readonly version: string;
readonly options: InitOptions;
readonly domElement: HTMLElement | null;
readonly signals: SignalsState;
readonly objectsCache: ObjectsCache;
readonly viewport: Viewport;
readonly controls: Controls;
readonly manager: Manager;
readonly plugins: Record<string, any>;
constructor(params: SoonSpaceConstructor);
/******/
/******/
/******* Init methods */
/******/
/******/
private _init;
private _initEvents;
private _initDefaultSettings;
setHoverEnabled(enabled: boolean): void;
setLevelEnabled(enabled: boolean): void;
setScaleFixedEnabled(enabled: boolean): void;
setFileCacheEnabled(enabled: boolean): void;
/******/
/******/
/******* plugins methods */
/******/
/******/
/**
* 注册插件
* @param plugin
* @param name
*/
registerPlugin<TP>(plugin: PluginsConstructor<TP, this>, name: string): TP;
registerPlugin<TP, Options>(plugin: PluginsConstructorWithOptions<TP, this, Options>, name: string, options: Options): TP;
/**
* 获取已注册插件
* @param name
*/
getPlugin<TP>(name: string): TP | null;
/**
* 创建插件对象
* @param info
* @param {Object3D} object
*/
createPluginObject(info: PluginObjectInfo, object?: Object3D): PluginObject;
/**
* 向插件对象内添加子集
* @param id
* @param object
* @returns {PluginObject | null}
*/
addToPluginObject(id: PluginObjectInfo['id'], object: Object3D): PluginObject | null;
/**
* 根据 ID 获取插件对象
* @param id
*/
getPluginObjectById(id: PluginObjectInfo['id']): PluginObject | null;
/**
* 根据名称获取插件对象
* @param name
*/
getPluginObjectByName(name: string): PluginObject[];
/**
* 根据 ID 移除插件对象
* @param id
*/
removePluginObjectById(id: PluginObjectInfo['id']): boolean;
/******/
/******/
/******* Viewport methods */
/******/
/******/
setAutoInstancing(enabled: boolean): void;
/**
* 设置泛光
* @param bloom
*/
setBloom(options?: BloomOptions): void;
/**
* 环境光遮蔽
* @param options
*/
setSSAO(options?: SSAOOptions): void;
/**
* 设置场景的颜色空间
* @param colorSpace
*/
setColorSpace(colorSpace: IColorSpace): void;
/**
* 设置场景色调
* @param options
*/
setToneMapping(options?: ToneMappingOptions): void;
/**
* 设置背景色
* @param color
*/
setBackgroundColor(color: IColor): void;
/**
* 设置透明度背景色
* @param color
* @param alpha
*/
setBackgroundColorAlpha(color: IColor, alpha?: number): void;
/**
* 设置背景图
* @param imgUrl
*/
setBackgroundImage(imgUrl: string): Promise<void>;
/**
* 设置球形天空背景
* @param imgUrl
*/
setSphereSkyBackground(imgUrl: string): Promise<void>;
/**
* 设置天空背景
* @param dirPath
* @param fileNames
*/
setSkyBackground(dirPath: string, fileNames?: string[]): Promise<void>;
/**
* 设置场景环境
* @returns
*/
setEnvironment(options?: EnvironmentOptions): Promise<THREE.Texture>;
/**
* 播放模型动画
* @param model
* @param animation
*/
playModelAnimation(model: Model, animation: number | AnimationClip | ModelAnimationFindFunc): AnimationOperate | undefined;
/**
* 停止播放模型动画
* @param model
* @param animation
*/
stopModelAnimation(model: Model, animation: number | AnimationClip | ModelAnimationFindFunc): void;
/**
* 通过空间坐标点获取屏幕坐标点
* @param position
*/
getOffsetByPosition(position: Position): {
left: number;
top: number;
};
/**
* 通过屏幕坐标点获取空间坐标点
* @param offset
* @param z
*/
getPositionByOffset(offset: OffsetPoint, z?: number, scalar?: number): Vector3;
/**
* 手动渲染一次场景
* @param fn
*/
render(fn?: () => void): Promise<number>;
/**
* 清除事件信号监听
*/
clearSignals(): void;
/**
* 销毁场景
*/
dispose(): void;
/******/
/******/
/******* Viewport cameraManager methods */
/******/
/******/
/**
* 设置相机类型以及视角数据
*/
setCamera(cameraType: CameraType, viewpoint?: CameraViewpointData, enableTransition?: boolean): Promise<void>;
/**
* 获取当前相机视角数据
*/
getCameraViewpoint(): CameraViewpointData;
/**
* 设置相机视角数据
*/
setCameraViewpoint(data: CameraViewpointData | CameraViewpointDataLegacy, enableTransition?: boolean): Promise<void>;
/**
* 相机飞向
* @param position
* @param rotation
* @param options
*/
flyTo(position: Position, rotation?: FlyToViewpoint | Rotation | Euler, options?: FlyToOptions): Promise<void>;
/**
* 相机飞向包围盒
* @deprecated 请使用 flyToObj 替代
* @param bbox
* @param viewpoint
* @param options
*/
flyToBoundingBox(bbox: Box3, viewpoint?: FlyToViewpoint, options?: FlyToObjOptions): Promise<void>;
/**
* 相机飞向对象
* @param object
* @param viewpoint
* @param options
*/
flyToObj(object: Object3D | Box3, viewpoint?: FlyToViewpoint, options?: FlyToObjOptions): Promise<void>;
/**
* 相机飞向主场景
* @param viewpoint
* @param options
*/
flyMainViewpoint(viewpoint?: FlyToViewpoint, options?: FlyToObjOptions): Promise<void>;
/**
* 相机在目标点上环绕
* @param target
* @param options
*/
surroundOnTarget(target: Vector3 | Position, options?: SurroundOptions): Promise<void>;
/**
* 相机在对象上环绕
* @param object
* @param options
*/
surroundOnObject(object: Object3D, options?: SurroundOptions): Promise<void>;
/**
* 获取对象的标签位置坐标
* @param object
* @param options
*/
getObjectLabelPos(object: Box3 | Object3D, rotation?: FlyToViewpoint | Rotation | Euler, options?: LabelOptions): Vector3;
/******/
/******/
/******* Viewport Controls methods */
/******/
/******/
/**
* 设置控制器配置
* @param options
*/
setControlsOptions(options: ControlsOptions): void;
/******/
/******/
/******* Viewport Scener methods */
/******/
/******/
/**
* 添加对象(add)
* @param object
* @param parent
*/
addObject(object: Object3D, parent?: Object3D | null): void;
/**
* 添加对象(attach)
* @param object
* @param parent
*/
attachObject(object: Object3D, parent?: Object3D | null): void;
/**
* 移除对象
* @param object
*/
removeObject(object: Object3D): void;
/**
* 开启场景雾化
* @param options
*/
openSceneFog(options?: FogOptions): void;
/**
* 关闭场景雾化
*/
closeSceneFog(): void;
setSky(options: SkyOptions): import("three/examples/jsm/objects/Sky").Sky | undefined;
/**
* @deprecated use screenshot instead
* @returns
*/
getScreenshot(): Promise<Blob | null>;
/**
* 截屏
* @returns
*/
screenshot(): Promise<Blob | null>;
/**
* 轮廓显示模型
* @param object
* @param options
*/
edgeShow(object: Object3D | Object3D[], options?: EdgeSelectOptions): Promise<void>;
/**
* 取消轮廓显示模型
* @param objects
*/
unEdgeShow(objects?: Object3D | Object3D[]): Promise<void | void[]>;
/**
* 描边显示模型
* @param object
* @param options
*/
strokeShow(object: Object3D | Object3D[], options?: StrokeSelectOptions): Promise<void | void[]>;
/**
* 取消描边显示模型
* @param objects
*/
unStrokeShow(objects?: Object3D | Object3D[]): Promise<void | void[]>;
/**
* 透明显示模型
* @param object
* @param options
*/
opacityShow(object: Object3D | Object3D[], options?: OpacitySelectOptions): Promise<void | void[]>;
/**
* 取消透明显示模型
* @param objects
*/
unOpacityShow(objects?: Object3D | Object3D[]): Promise<void | void[]>;
/**
* 高亮显示模型
* @param object
* @param options
*/
highlightShow(object: Object3D | Object3D[], options?: HighlightSelectOptions): Promise<void | void[]>;
/**
* 取消高亮显示模型
* @param objects
*/
unHighlightShow(objects?: Object3D | Object3D[]): Promise<void | void[]>;
/**
* 自发光显示模型
* @param object
* @param options
*/
emissiveShow(object: Object3D | Object3D[], options?: EmissiveSelectOptions): Promise<void | void[]>;
/**
* 取消自发光显示模型
* @param objects
*/
unEmissiveShow(objects?: Object3D | Object3D[]): Promise<void | void[]>;
/******/
/******/
/******* Manager methods */
/******/
/******/
/**
* 清除除灯光外所有对象
*/
clearObject(): void;
/**
* 清除所有对象
*/
clear(): void;
/******/
/******/
/******* Light methods */
/******/
/******/
/**
* 创建环境关
* @param options
*/
createAmbientLight(options: AmbientLightOptions): THREE.AmbientLight;
/**
* 设置环境关
* @param options
*/
setAmbientLight(options: AmbientLightOptions): boolean;
/**
* 创建平行光
* @param options
*/
createDirectionalLight(options: DirectionalLightOptions): THREE.DirectionalLight;
/**
* 设置平行光
* @param options
*/
setDirectionalLight(options: DirectionalLightOptions): boolean;
/**
* 创建半球光
* @param options
*/
createHemisphereLight(options: HemisphereLightOptions): THREE.HemisphereLight;
/**
* 设置半球光
* @param options
*/
setHemisphereLight(options: HemisphereLightOptions): boolean;
/**
* 创建聚光灯
* @param options
*/
createSpotLight(options: SpotLightOptions): THREE.SpotLight;
/**
* 设置聚光灯
* @param options
*/
setSpotLight(options: SpotLightOptions): boolean;
/**
* 创建点光源
* @param options
*/
createPointLight(options: PointLightOptions): THREE.PointLight;
/**
* 设置点光源
* @param options
*/
setPointLight(options: PointLightOptions): boolean;
/**
* 创建矩形区域光源
* @param options
* @returns
*/
createRectAreaLight(options: RectAreaLightOptions): THREE.RectAreaLight;
/**
* 设置矩形区域光源
* @param options
* @returns
*/
setRectAreaLight(options: RectAreaLightOptions): boolean;
/**
* 根据 id 查询 Light 对象
* @param id
*/
getLightById<T extends Light>(id: BaseObjectInfo['id']): T | null;
/**
* 根据 id 移除 Light 对象
* @param id
*/
removeLightById(id: BaseObjectInfo['id']): boolean;
/**
* 获取所有 Light 对象
*/
getAllLight<T = Light>(): T[];
/**
* 清空 Light 对象
*/
clearLight(): void;
/**
* 显示所有光
*/
showAllLight(): void;
/**
* 隐藏所有光
*/
hideAllLight(): void;
/**
* 更新所有灯光阴影
* @returns
*/
updateAllShadow(): void;
/******/
/******/
/******* Object methods */
/******/
/******/
getObjectById<T extends Object3D = BaseObject3D>(id: BaseObjectInfo['id']): T | null;
getObjectByName<T extends Object3D = BaseObject3D>(name: string): T[];
getObjectByUserDataProperty<T extends Object3D = BaseObject3D>(property: string | UserDataPropertyFindFunc, value?: any): T[];
removeObjectById(id: BaseObjectInfo['id']): boolean;
/******/
/******/
/******* Group methods */
/******/
/******/
createGroup(groupInfo: GroupInfo, parent?: Object3D | null): Group;
getGroupById(id: GroupInfo['id']): Group | null;
getGroupByName(name: string): Group[];
getAllGroup(): Group[];
showAllGroup(): void;
hideAllGroup(): void;
removeGroupById(id: GroupInfo['id']): boolean;
/******/
/******* deprecated */
/******* Sbm methods */
/******/
/******/
loadSbm(sbmInfo: ModelInfo): Promise<Model | null>;
parseSbm(): void;
cloneSbm(model: Model, sbmInfo: CloneModelInfo, parent?: Object3D | null): Promise<Model>;
getSbmById(id: ModelInfo['id']): Model | null;
getSbmByName(name: string): Model[];
getSbmByUserDataProperty(propNameOrFindFunc: string | UserDataPropertyFindFunc, propValue?: any): Model[];
removeSbmById(id: ModelInfo['id']): boolean;
createGroupForSbm(groupInfo: GroupInfo): Group;
loadSbmToGroup(groupInfo: GroupInfo, sbmInfoList: ModelInfo[]): Promise<Group>;
addSbmForGroup(groupId: GroupInfo['id'], sbmInfoList: ModelInfo[]): Promise<Group | null>;
createSbmGroupFromXml(): void;
getSbmGroupById(id: GroupInfo['id']): Group | null;
getSbmGroupByName(name: string): Group[];
getAllSbmGroup(): Group[];
removeSbmGroupById(id: GroupInfo['id']): boolean;
clearSbm(): void;
getAllSbm(): Model[];
showAllSbm(): void;
hideAllSbm(): void;
getSbmModelMaps(): Map<string, library.Model>;
setSbmModelMaps(maps: Map<string, Model>): void;
/******/
/******/
/******* Model methods */
/******/
/******/
/**
* 设置 GLTF 模型的 DRACO 解压库路径
* @param path
*/
setModelDracoDecoderPath(path: string): void;
/**
* 设置 GLTF 模型的 KTX2 解压库路径
* @param path
*/
setModelKtx2DecoderPath(path: string): void;
/**
* 加载 Model 模型
* @param modelInfo
* @param parent
*/
loadModel(modelInfo: ModelInfo, parent?: Object3D | null): Promise<Model | null>;
/**
* 克隆 Model 模型
* @param model
* @param modelInfo
* @param parent
*/
cloneModel(model: Model, modelInfo: CloneModelInfo, parent?: Object3D | null): Promise<Model>;
/**
* 根据 id 查询 Model 模型
* @param id
*/
getModelById(id: ModelInfo['id']): Model | null;
/**
* 根据 name 查询 Model 模型
* @param name
*/
getModelByName(name: string): Model[];
/**
* 根据用户数据查询 Model 模型
* @param name
*/
getModelByUserDataProperty(propNameOrFindFunc: string | UserDataPropertyFindFunc, propValue?: any): Model[];
/**
* 根据 id 删除 Model 模型
* @param id
*/
removeModelById(id: ModelInfo['id']): boolean;
/**
* 为 Model 创建组
* @param groupInfo
*/
createGroupForModel(groupInfo: GroupInfo): Group;
/**
* 加载 Model 模型到组内
* @param groupInfo
* @param modelInfo
*/
loadModelToGroup(groupInfo: GroupInfo, modelInfo: ModelInfo[]): Promise<Group>;
/**
* 为已有的组添加 Model 模型
* @param groupId
* @param modelInfo
*/
addModelForGroup(groupId: GroupInfo['id'], modelInfo: ModelInfo[]): Promise<Group | null>;
/**
* 根据 id 查询 Model 模型组
* @param id
*/
getModelGroupById(id: GroupInfo['id']): Group | null;
/**
* 根据 name 查询 Model 模型组
* @param name
*/
getModelGroupByName(name: string): Group[];
/**
* 获取所有 Model 模型组
*/
getAllModelGroup(): Group[];
/**
* 根据 id 删除 Model 模型组
* @param id
*/
removeModelGroupById(id: GroupInfo['id']): boolean;
/**
* 清空 Model 模型
*/
clearModel(): void;
/**
* 获取所有 Model 模型
*/
getAllModel(): Model[];
/**
* 显示所有 Model 模型
*/
showAllModel(): void;
/**
* 隐藏所有 Model 模型
*/
hideAllModel(): void;
/**
* 计算 model bvh
*/
computeModelsBoundsTree(options?: ModelsBoundsTreeOptions): Promise<void>;
/**
* 清空本地模型缓存数据
*/
clearIdb(): Promise<void>;
/**
* 获取 Model 模型缓存
*/
getModelsMap(): Map<string, library.Model>;
/**
* 设置 Model 模型缓冲
*/
setModelsMap(map: Map<string, Model>): void;
/******/
/******/
/******* Poi methods */
/******/
/******/
/**
* 创建 Poi
* @param info
*/
createPoi(info: PoiInfo): Poi;
/**
* 克隆 Poi
* @param info
*/
clonePoi(poi: Poi, poiInfo: ClonePoiInfo, parent?: Object3D | null): Poi | void;
/**
* 根据 id 查询 Poi
* @param id
*/
getPoiById(id: PoiInfo['id']): Poi | null;
/**
* 根据 name 查询 Poi
* @param id
*/
getPoiByName(name: string): Poi[];
/**
* 根据用户数据查询 Poi
* @param name
*/
getPoiByUserDataProperty(propNameOrFindFunc: string | UserDataPropertyFindFunc, propValue?: any): Poi[];
/**
* 根据 id 删除 Poi
* @param id
*/
removePoiById(id: PoiInfo['id']): boolean;
/**
* 为 Poi 创建组
* @param groupInfo
*/
createGroupForPoi(groupInfo: GroupInfo): Group;
/**
* 创建 Poi 到组内
* @param groupInfo
* @param poiInfo
*/
createPoiToGroup(groupInfo: GroupInfo, poiInfo: PoiInfo[]): Group;
/**
* 为已有的组添加 Poi
* @param groupInfo
* @param poiInfo
*/
addPoiForGroup(groupId: GroupInfo['id'], poiInfo: PoiInfo[]): Group | null;
/**
* 根据 id 查询 Poi 组
* @param id
*/
getPoiGroupById(id: GroupInfo['id']): Group | null;
/**
* 根据 name 查询 Poi 组
* @param name
*/
getPoiGroupByName(name: string): Group[];
/**
* 获取所有 Poi 模型组
*/
getAllPoiGroup(): Group[];
/**
* 根据 id 删除 Poi 组
* @param id
*/
removePoiGroupById(id: GroupInfo['id']): boolean;
/**
* 清空 Poi
*/
clearPoi(): void;
/**
* 获取所有 Poi 模型
*/
getAllPoi(): Poi[];
/**
* 显示所有 Poi
*/
showAllPoi(): void;
/**
* 隐藏所有 Poi
*/
hideAllPoi(): void;
/******/
/******/
/******* PoiNode methods */
/******/
/******/
/**
* 创建 PoiNode
* @param info
*/
createPoiNode(info: PoiNodeInfo): PoiNode;
/**
* 根据 id 查询 PoiNode
* @param id
*/
getPoiNodeById(id: PoiNodeInfo['id']): PoiNode | null;
/**
* 根据 name 查询 PoiNode
* @param id
*/
getPoiNodeByName(name: string): PoiNode[];
/**
* 根据用户数据查询 PoiNode
* @param name
*/
getPoiNodeByUserDataProperty(propNameOrFindFunc: string | UserDataPropertyFindFunc, propValue?: any): PoiNode[];
/**
* 根据 id 删除 PoiNode
* @param id
*/
removePoiNodeById(id: PoiNodeInfo['id']): boolean;
/**
* 为 PoiNode 创建组
* @param groupInfo
*/
createGroupForPoiNode(groupInfo: GroupInfo): Group;
/**
* 创建 PoiNode 到组内
* @param groupInfo
* @param poiNodeInfo
*/
createPoiNodeToGroup(groupInfo: GroupInfo, poiNodeInfo: PoiNodeInfo[]): Group;
/**
* 为已有的组添加 PoiNode
* @param groupInfo
* @param poiNodeInfo
*/
addPoiNodeForGroup(groupId: GroupInfo['id'], poiNodeInfo: PoiNodeInfo[]): Group | null;
/**
* 根据 id 查询 PoiNode 组
* @param id
*/
getPoiNodeGroupById(id: GroupInfo['id']): Group | null;
/**
* 根据 name 查询 PoiNode 组
* @param name
*/
getPoiNodeGroupByName(name: string): Group[];
/**
* 获取所有 PoiNode 模型组
*/
getAllPoiNodeGroup(): Group[];
/**
* 根据 id 删除 PoiNode 组
* @param id
*/
removePoiNodeGroupById(id: GroupInfo['id']): boolean;
/**
* 清空 PoiNode
*/
clearPoiNode(): void;
/**
* 获取所有 PoiNode 模型
*/
getAllPoiNode(): PoiNode[];
/**
* 显示所有 PoiNode
*/
showAllPoiNode(): void;
/**
* 隐藏所有 PoiNode
*/
hideAllPoiNode(): void;
protected textureCache: Map<string, Texture>;
/**
* 创建 poi mesh
* @param options
* @returns
*/
createPoiMesh(options: PoiMeshInfo): library.PoiMesh;
/**
* 创建多边形 poi mesh
* @param options
* @returns
*/
createPolygonPoiMesh(options: PolygonPoiMeshInfo): library.PolygonPoiMesh;
/**
* 给 mesh 设置纹理贴图
* @param mesh - 需要设置的 Mesh 对象
* @param image - 图片 url ,或 图片元素、Canvas元素、Video 元素、null
* @param options - 选项
* @returns 返回设置的纹理对象
*/
setTexture(mesh: Mesh, image: string | HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | null, options?: SetTextureOptions): THREE.Texture | null;
/******/
/******/
/******* Canvas3D methods */
/******/
/******/
/**
* 创建 Canvas3D
* @param info
*/
createCanvas3D(info: Canvas3DInfo, parent?: Object3D | null): Canvas3D;
/**
* 根据 id 查询 Canvas3D
* @param id
*/
getCanvas3DById(id: Canvas3DInfo['id']): Canvas3D | null;
/**
* 根据 name 查询 Canvas3D
* @param id
*/
getCanvas3DByName(name: string): Canvas3D[];
/**
* 根据用户数据查询 Canvas3D
* @param name
*/
getCanvas3DByUserDataProperty(propNameOrFindFunc: string | UserDataPropertyFindFunc, propValue?: any): Canvas3D[];
/**
* 根据 id 删除 Canvas3D
* @param id
*/
removeCanvas3DById(id: Canvas3DInfo['id']): boolean;
/**
* 为 Canvas3D 创建组
* @param groupInfo
*/
createGroupForCanvas3D(groupInfo: GroupInfo): Group;
/**
* 创建 Canvas3D 到组内
* @param groupInfo
* @param canvasInfo
*/
createCanvas3DToGroup(groupInfo: GroupInfo, canvasInfo: Canvas3DInfo[]): Group;
/**
* 为已有的组添加 Canvas3D
* @param groupInfo
* @param canvasInfo
*/
addCanvas3DForGroup(groupId: GroupInfo['id'], canvasInfo: Canvas3DInfo[]): Group | null;
/**
* 根据 id 查询 Canvas3D 组
* @param id
*/
getCanvas3DGroupById(id: GroupInfo['id']): Group | null;
/**
* 根据 name 查询 Canvas3D 组
* @param name
*/
getCanvas3DGroupByName(name: string): Group[];
/**
* 获取所有 Canvas3D 模型组
*/
getAllCanvas3DGroup(): Group[];
/**
* 根据 id 删除 Canvas3D 组
* @param id
*/
removeCanvas3DGroupById(id: GroupInfo['id']): boolean;
/**
* 清空 Canvas3D
*/
clearCanvas3D(): void;
/**
* 获取所有 Canvas3D 模型
*/
getAllCanvas3D(): Canvas3D[];
/**
* 显示所有 Canvas3D
*/
showAllCanvas3D(): void;
/**
* 隐藏所有 Canvas3D
*/
hideAllCanvas3D(): void;
/******/
/******/
/******* Topology methods */
/******/
/******/
/**
* 获取最短路径
* @param topology
* @param info
*/
getShortestPath(topology: Topology, info: ShortestPathInfo): Topology | null;
/**
* 获取最短路径(worker)
* @param topology
* @param info
* @returns
*/
getShortestPathAsync(topology: Topology, info: ShortestPathInfo): Promise<Topology | null>;
/**
* 通过多个起点获取最短路径
* @param topology
* @param info
*/
getShortestPathByMultipleStartPoints(topology: Topology, info: ShortestPathByMultipleStartPoints): Topology | null;
/**
* 获取最短路径(worker)
* @param topology
* @param info
* @returns
*/
getShortestPathByMultipleStartPointsAsync(topology: Topology, info: ShortestPathByMultipleStartPoints): Promise<Topology | null>;
/**
* 通过多个终点获取最短路径
* @param topology
* @param info
*/
getShortestPathByMultipleEndPoints(topology: Topology, info: ShortestPathByMultipleEndPoints): Topology | null;
/**
* 通过多个终点获取最短路径(worker)
* @param topology
* @param info
* @returns
*/
getShortestPathByMultipleEndPointsAsync(topology: Topology, info: ShortestPathByMultipleEndPoints): Promise<Topology | null>;
/**
* 创建 Topology,从 gml 文件资源
* @param groupInfo
* @param gmlUrl
*/
createTopologyFromGml(topologyInfo: TopologyInfoForGml): Promise<Topology>;
/**
* 创建 Topology
* @param info
*/
createTopology(info: TopologyInfo): Topology;
/**
* 设置 Topoogy passable (only available for network)
* @param topology
* @param info
* @returns
*/
setTopologyPassable(topology: Topology, info: TopologyPassableInfo[]): void;
/**
* 重置 Topology nodes
* @param info
*/
resetTopologyNodes(topology: Topology, nodes: TopologyNodeInfo[]): Topology;
/**
* 根据 id 查询 Topology
* @param id
*/
getTopologyById(id: TopologyInfo['id']): Topology | null;
/**
* 根据 name 查询 Topology
* @param id
*/
getTopologyByName(name: string): Topology[];
/**
* 根据用户数据查询 Topology
* @param name
*/
getTopologyByUserDataProperty(propNameOrFindFunc: string | UserDataPropertyFindFunc, propValue?: any): Topology[];
/**
* 根据 id 删除 Topology
* @param id
*/
removeTopologyById(id: TopologyInfo['id']): boolean;
/**
* 为 Topology 创建组
* @param groupInfo
*/
createGroupForTopology(groupInfo: GroupInfo): Group;
/**
* 创建 Topology 到组内
* @param groupInfo
* @param topologyInfo
*/
createTopologyToGroup(groupInfo: GroupInfo, topologyInfo: TopologyInfo[]): Group;
/**
* 为已有的组添加 Topology
* @param groupInfo
* @param topologyInfo
*/
addTopologyForGroup(groupId: GroupInfo['id'], topologyInfo: TopologyInfo[]): Group | null;
/**
* 根据 id 查询 Topology 组
* @param id
*/
getTopologyGroupById(id: GroupInfo['id']): Group | null;
/**
* 根据 name 查询 Topology 组
* @param name
*/
getTopologyGroupByName(name: string): Group[];
/**
* 获取所有 Topology 模型组
*/
getAllTopologyGroup(): Group[];
/**
* 根据 id 删除 Topology 组
* @param id
*/
removeTopologyGroupById(id: GroupInfo['id']): boolean;
/**
* 清空 Topology
*/
clearTopology(): void;
/**
* 获取所有 Topology 模型
*/
getAllTopology(): Topology[];
/**
* 显示所有 Topology
*/
showAllTopology(): void;
/**
* 隐藏所有 Topology
*/
hideAllTopology(): void;
/******/
/******/
/******* Helper methods */
/******/
/******/
/**
* 添加网格辅助器
* @param options
*/
addGridHelper(options: GridHelperOptions): THREE.GridHelper;
/**
* 添加轴线辅助器
* @param options
*/
addAxesHelper(options: AxesHelperOptions): THREE.AxesHelper;
/**
* 添加包围盒辅助器
* @param options
*/
addBoxHelper(options: BoxHelperOptions): THREE.Box3Helper;
/**
* 添加面辅助器
* @param options
*/
addPlaneHelper(options: PlaneHelperOptions): library.BaseMesh<THREE.Material, THREE.Object3DEventMap>;
/**
* 创建地面
* @param options
*/
createGround(options: GroundHelperOptions): Promise<library.Ground>;
/**
* 添加地面辅助器
* @param options
*/
addGroundHelper(options: GroundHelperOptions): Promise<library.Ground>;
/**
* 添加平行光辅助器
* @param options
*/
addDirectionalLightHelper(options: DirectionalLightHelperOptions): THREE.DirectionalLightHelper;
/**
* 添加半球光辅助器
* @param options
*/
addHemisphereLightHelper(options: HemisphereLightHelperOptions): THREE.HemisphereLightHelper;
/**
* 添加聚光灯辅助器
* @param options
*/
addSpotLightHelper(options: SpotLightHelperOptions): THREE.SpotLightHelper;
/**
* 添加点光辅助器
* @param options
*/
addPointLightHelper(options: PointLightHelperOptions): THREE.PointLightHelper;
/**
* 添加矩形区域光辅助器
* @param options
* @returns
*/
addRectAreaLightHelper(options: RectAreaLightHelperOptions): import("three/examples/jsm/helpers/RectAreaLightHelper").RectAreaLightHelper;
/**
* 通过 ID 获取辅助器
* @param id
*/
getHelperById<Helper extends Object3D>(id: string): Helper | null;
/**
* 通过 ID 移除辅助器
* @param id
*/
removeHelperById(id: string): boolean;
/**
* 清空辅助器
*/
clearHelper(): void;
/**
* 显示所有辅助器
*/
showAllHelper(): void;
/**
* 隐藏所有辅助器
*/
hideAllHelper(): void;
/******/
/******/
/******* Decal methods */
/******/
/******/
createDecal(info: DecalInfo, parent?: Object3D | null): Promise<Decal>;
updateDecalGeometry(decal: Decal, info?: DecalGeometryInfo): Decal;
updateAllDecalGeometry(info?: DecalGeometryInfo): void;
/**
* 清空 Decal
*/
clearDecal(): void;
/**
* 获取所有 Decal
*/
getAllDecal(): Decal[];
/**
* 显示所有 Decal
*/
showAllDecal(): void;
/**
* 隐藏所有 Decal
*/
hideAllDecal(): void;
/**
* 创建用于 查找位置附近的 box 空间范围内的物体 的查找器
* @param boxSpace - 描述查找空间的信息对象
* @param objects - 所有需要被查找的对象
* @returns 用于查找的函数
*/
createFindObjectsInBoxNearPosition(boxSpace: BoxSpace, objects: Object3D[]): FindObjectsNearPosition;
/**
* 创建用于 查找位置附近的球形区域范围内的物体 的查找器
*
* @param radius - 描述查找半径
* @param objects - 所有需要被查找的对象
* @returns 用于查找的函数
*/
createFindObjectsInSphereNearPosition(radius: number, objects: Object3D[]): FindObjectsNearPosition;
/**
* 创建用于 查找路径附近的范围内的物体 的查找器
*
* @param points - 描述路径的点
* @param radius - 描述查找半径
* @returns 用于查找的函数
*/
createFindObjectsNearPath(points: Vector3[], radius: number): FindNearbyObjects;
/**
* 创建路径动画
* @param target - 被动画的目标对象
* @param points - 路径点列表
* @param options - 选项
* @returns
*/
createPathAnimation(target: Object3D, points: IVector3[], options?: PathAnimationOptions): PathAnimation;
/**
* 创建沿拓扑路径运动的动画
* @param target - 被动画的目标对象
* @param topology - 拓扑路径
* @param options - 选项
* @returns
*/
createTopologyAnimation(target: Object3D, topology: Topology, options?: PathAnimationOptions): PathAnimation;
/**
* 创建沿路径运动的动画 action
*
* @param target - 目标对象;需要让哪个目标沿着曲线路径运行
* @param path - 路径;可以是一组点,或者一个曲线 Curve,或者拓扑路径 Topology
* @param options
* @returns 返回 AnimationOperate,它是对 AnimationAction 的扩展
*/
createPathAnimationAction(target: Object3D, path: AnimationPath, options: CreatePathAnimationOptions): AnimationOperate;
/**
* 创建相机动画
* @deprecated 请使用巡检插件
* @param path
* @param options
* @returns
*/
createPathAnimationActionForCamera(path: AnimationPath, options?: CreatePathAnimationActionForCameraOptions & {
camera?: Camera;
}): void;
/**
* 创建骨骼路径动画
* @param options
* @returns
*/
createBonePathAnimation(model: Object3D, path: AnimationPath, options: CreateBonePathAnimationOptions): import("./Animation/createPathAnimation").BonePathAnimationInfo;
/**
* 为指定的 模型 创建其对应的链式骨骼模型
* @param model
* @param options
* @returns
*/
createChainSkeletalModel(model: Object3D, options: Omit<CreateChainSkeletalModelOptions, 'target'>): {
skeletalModel: THREE.Object3D<THREE.Event<string, unknown>>;
skeleton: THREE.Skeleton;
};
/**
* 创建骨骼沿曲线路径运动的动画
* @param model
* @param skeleton
* @param options
* @returns
*/
createPathAnimationForBones(model: Object3D, skeleton: Skeleton, options: Omit<CreateCurveAnimationClipForBonesOptions, 'target'>): AnimationOperate | undefined;
}
export default SoonSpace;