UNPKG

soonspacejs

Version:
1,284 lines (1,283 loc) 39.3 kB
/** ____ ____ _ / ___| ___ ___ _ __ / ___| _ __ __ _ ___ ___ (_)___ \___ \ / _ \ / _ \| '_ \\___ \| '_ \ / _` |/ __/ _ \ | / __| ___) | (_) | (_) | | | |___) | |_) | (_| | (_| __/_ | \__ \ |____/ \___/ \___/|_| |_|____/| .__/ \__,_|\___\___(_)/ |___/ |_| |__/ */ 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;