import { CanvasTexture, Matrix4, Group, Mesh, PerspectiveCamera, Scene, WebGLRenderer } from 'three'; import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'; import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'; declare class Bim { assetsIP: string; serverIP: string; appkey: string; container: HTMLElement; tree: Group; camera: PerspectiveCamera; scene: Scene; renderer: WebGLRenderer; orbit: OrbitControls; loader: GLTFLoader; aniKey: number; labelGroup: Mesh[]; floorGroup: Group[]; deviceGroup: Group[]; componentGroup: Group; constructor(selector: string, { near, far, antialias, withFloor }?: { near?: number | undefined; far?: number | undefined; antialias?: boolean | undefined; withFloor?: boolean | undefined; }); static pxToSpace: number; static rate: number; /** * @description 室内场景渲染的核心函数,负责每一帧的渲染。 * @param time 帧循环的时间戳 */ private loop; /** * @description 获取资源模型地址 */ private getAssetsIP; /** * @description 反查场景项 * @param sceneId 场景id * @param paramCode 反查场景项需要提供的 属性 字段 * @param paramValue 反场场景项需要提供的 属性值 字段 * @returns */ getSceneItemByIdentityParameter(sceneId: number | string, paramCode: string, paramValue: string): Promise; /** * @description 根据场景id获取场景信息 * @param sceneId 场景id * @returns */ /** * 根据id获取场景项详情 * @param sceneItemId 场景项id * @returns */ getSceneItemById(sceneItemId: number): Promise; getSceneInfo(sceneId: number | string): Promise; /** * @description 渲染场景信息 * @param sceneTree getSceneInfo接口的返回值,整个场景的场景信息,树状结构 */ renderSceneTree(sceneTree: any[]): Promise; /** * 计算Mesh矩阵 * @param position * @param offsetVert * @param hori * @param vert * @param scale * @returns */ getMatrix(position: { x: number; y: number; z: number; }, offsetVert: number, hori: number, vert: number, scale: number): Matrix4; /** * @description 递归渲染场景项 * @param sceneTree 场景信息 * @param group 场景项需要添加到的分组 */ private renderIterator; static getTextTexture(text: string, color: string, bgColor: string, fontSize: number): { texture: CanvasTexture; measure: TextMetrics; }; /** * @description 清空场景 */ clearTree(): void; /** * @description 加载室内地板 */ private loadFloor; /** * 加载灯光 */ private loadLights; /** * 初始化分组 */ private loadGroup; /** * @description 初始化场景 * @param selector 场景容器的选择器 * @param near 近平面数值 * @param far 远平面数值 * @param antialias 是否开启抗锯齿 */ private initScene; /** * 窗口尺寸变化 */ private onResize; /** * @description 初始化模型加载器 * @returns */ private initLoader; /** * 销毁场景 */ destroy(): void; /** * @description 计算楼层景深展开时各楼层的偏移量 * @param floors 楼层数组 * @returns */ private caculateOffsetsDepth; /** * 计算楼层水平展开时各楼层的偏移量 * @param floors 楼层数组 * @returns */ private caculateOffsetsHorizontal; /** * @description 计算楼层垂直展开时各楼层的偏移量 * @param floors 楼层数组 * @param interval * @returns */ private caculateOffsetsVertical; /** * @description 按指定方式展开楼层 * @param type 楼层展开方式 * @param param1 楼层展开的间隔 */ unfold(type?: string, { interval }?: { interval?: number | undefined; }): void; /** * @description 还原展开的楼层 * @returns */ fold(): void; /** * @description 设置相机飞行参数 * @param param0 相机飞行参数 */ setCameraFlyTo({ position, target, duration }?: { position?: { x: number; y: number; z: number; } | undefined; target?: { x: number; y: number; z: number; } | undefined; duration?: number | undefined; }): void; /** * @description 聚焦到指定楼层 * @param layer 楼层层数 * @param duration 飞行时间 */ focusOnTheFloor(layer: number, duration?: number): void; /** * @description 是否设置了appkey和serverIP */ private checkConfig; /** * @description 响应拦截器 * @param data 响应数据 * @returns */ private responseInterceptor; } declare class StateManager { collection: Group[]; sceneItems: any[]; oldMaterials: any; type: string; constructor(bim: Bim); /** * @description 设置需要进行状态管理的场景项 * @param sceneItems 场景项数组 */ setSceneItems(sceneItems: any[]): void; /** * @description 设置场景项的状态 * @param type 状态类型 * @param param1 状态参数 */ setState(type: string, { color }?: { color?: string | undefined; }): void; /** * @description 改变场景项的颜色 * @param color 颜色参数 */ private changeColor; /** * @description 还原场景项的状态 */ resetState(): void; } export { Bim, StateManager };