@realsee/five
Version:
Realsee Renderer SDK
210 lines (209 loc) • 6.93 kB
TypeScript
import * as THREE from "three";
import { type ViewLayer } from './view-layer';
import { type Work } from "../work";
import { type TextureOptions } from "../types/imageOptions";
import { type Intersection } from "./intersection";
import { type Camera } from "../core/camera";
import { Parameter, type ParameterValue } from './parameter';
import { type ModelScene } from './model-scene';
import { type Tile } from './tile3d/tile';
export interface Model {
dispatchEvent(event: {
type: 'error';
error: Error;
}): void;
dispatchEvent(event: {
type: 'load';
}): void;
dispatchEvent(event: {
type: 'dispose';
}): void;
dispatchEvent(event: {
type: 'changeShownFloor';
floorIndex: number | null;
}): void;
dispatchEvent(event: {
type: 'tileLoad';
tile: Tile;
}): void;
dispatchEvent(event: {
type: 'tileUnload';
tile: Tile;
}): void;
dispatchEvent(event: {
type: string;
[attachment: string]: any;
}): void;
addEventListener(type: 'error', listener: (event: THREE.Event & {
type: 'error';
error: Error;
}) => void): void;
addEventListener(type: 'load', listener: (event: THREE.Event & {
type: 'load';
}) => void): void;
addEventListener(type: 'dispose', listener: (event: THREE.Event & {
type: 'dispose';
}) => void): void;
addEventListener(type: 'changeShownFloor', listener: (event: THREE.Event & {
type: 'changeShownFloor';
floorIndex: number | null;
}) => void): void;
addEventListener(type: 'tileLoad', listener: (event: THREE.Event & {
type: 'tileLoad';
tile: Tile;
}) => void): void;
addEventListener(type: 'tileUnload', listener: (event: THREE.Event & {
type: 'tileUnload';
tile: Tile;
}) => void): void;
addEventListener(type: string, listener: (event: THREE.Event) => void): void;
removeEventListener(type: 'error', listener: (event: THREE.Event & {
type: 'error';
error: Error;
}) => void): void;
removeEventListener(type: 'load', listener: (event: THREE.Event & {
type: 'load';
}) => void): void;
removeEventListener(type: 'dispose', listener: (event: THREE.Event & {
type: 'dispose';
}) => void): void;
removeEventListener(type: 'changeShownFloor', listener: (event: THREE.Event & {
type: 'changeShownFloor';
floorIndex: number | null;
}) => void): void;
removeEventListener(type: 'tileLoad', listener: (event: THREE.Event & {
type: 'tileLoad';
tile: Tile;
}) => void): void;
removeEventListener(type: 'tileUnload', listener: (event: THREE.Event & {
type: 'tileUnload';
tile: Tile;
}) => void): void;
removeEventListener(type: string, listener: (event: THREE.Event) => void): void;
}
/**
* Five 模型
* @description
* 通过 work 数据加载, 适配 at3d、pbm、dome、domez 格式的文件
* 可以通过 jsonp 解析 base64 的 dataURL 内容,
* 需要满足 your/path/filename.at3d.json_xxxxxx,
* 通过 json_xxxxxx(<dataURL>) 方式返回。
*/
export declare class Model extends THREE.Object3D {
fiveId: string;
parent: ModelScene | null;
needsRender: boolean;
children: ViewLayer[];
add: (...object: ViewLayer[]) => this;
private disposed;
parameter: Parameter;
/** work */
work: Work;
/** 是否过期 */
outdated: boolean;
/** 是否自动细化 */
autoRefine: boolean;
/** 是否在加载元信息 */
metaPending: boolean;
/** 模型已经加载 */
loaded: boolean;
/** 模型是否已经细化 */
refined: boolean;
/** 模型细化进度 */
refineProgress: [number, number];
/** 初始化完成 */
initReady: Promise<Model>;
/** 初次加载完成 */
loadedReady: Promise<Model>;
/** 外接盒子的大小 */
boundingBox: THREE.Box3;
/** 所有楼层 */
floorLength: number;
constructor(fiveId: string, work: Work, options?: {
light?: boolean;
textureOptions?: TextureOptions;
});
/** 析构函数 一旦析构,则不能使用 */
dispose(): void;
/** 模型内容是否为空 */
get empty(): boolean;
/** 模型的不同图层 */
get viewLayers(): ViewLayer[];
/**
* 获取模型边界线
* @param sphere - 获取区域
* @param threshold - 面片间夹角阈值
* @returns 所有模型边界线
*/
getEdgesBySphere(sphere: THREE.Sphere, threshold?: number): THREE.Line3[];
/**
* 计算模型射线碰撞检测
* @param raycaster - THREE 射线对象
* @param target - 返回碰撞
* @returns 返回碰撞
*/
intersectRaycaster(raycaster: THREE.Raycaster, target?: Intersection[]): Intersection[];
update(renderer: THREE.WebGLRenderer, camera: Camera, modelScene: ModelScene): boolean;
localToEnu(vector: THREE.Vector3): THREE.Vector3;
enuToLocal(vector: THREE.Vector3): THREE.Vector3;
worldToEnu(vector: THREE.Vector3): THREE.Vector3;
enuToWorld(vector: THREE.Vector3): THREE.Vector3;
/**
* 当前显示的楼层
*/
get shownFloor(): number | null;
set shownFloor(floor: number | null);
/**
* 显示某楼层
* @example
* ```
* model.show() //显示全部楼层
* model.show(1) //显示第一楼层
* ```
*/
show(floor?: number | null): void;
/**
* @deprecated
* Use `.boundingBox` instead
*/
get bounding(): THREE.Box3;
/**
* @deprecated
* Use `.parameter.set` instead
*/
setMaterial(parameter: Partial<ParameterValue>): void;
/**
* @deprecated
* Use `.parameter.get` instead
*/
getMaterial(): ParameterValue;
/**
* @deprecated
* Use `.parameter.shownFloorIndex` `.parameter.set('brightness', brightness)` instead
*/
get shownFloorIndex(): ParameterValue['shownFloorIndex'];
set shownFloorIndex(floorIndex: ParameterValue['shownFloorIndex']);
/**
* @deprecated
* Use `.parameter.brightness` `.parameter.set('brightness', brightness)` instead
*/
get brightness(): ParameterValue['brightness'];
set brightness(brightness: ParameterValue['brightness']);
/**
* @deprecated
* Use `.parameter.clippers` `.parameter.set('clippers', clippers)` instead
*/
get clippers(): ParameterValue['clippers'];
set clippers(clippers: ParameterValue['clippers']);
/**
* @deprecated
* Use `.parameter.customShaders` `.parameter.set('customShaders', customShaders)` instead
*/
get customShaders(): ParameterValue['customShaders'];
set customShaders(customShaders: ParameterValue['customShaders']);
/**
* @deprecated
* Use `.parameter.reset('brightness')` instead
*/
resetBrightness(): void;
}