@realsee/five
Version:
Realsee Renderer SDK
173 lines (172 loc) • 5.28 kB
TypeScript
import * as THREE from 'three';
import { Parameter, ParameterValue } from './parameter';
import { Model } from './model';
import { type ViewLayer } from './view-layer';
import { type ParameterTilesetValue } from './parameter';
import { type TextureOptions } from "../types/imageOptions";
import { type Works } from '../work';
import { type Camera } from '../core/camera';
import { type Intersection } from './intersection';
import { type BoundingVolume, type BoundingVolumeJson } from '../utils/volume';
import { BoundingMesh } from "../meshes/boundingMesh";
export interface ModelOptions {
/** 模型是否感光 */
light?: boolean;
/** 模型 3d-tile 参数 */
"3d-tiles"?: (Partial<ParameterTilesetValue> & {
viewerRequestVolume?: BoundingVolume | BoundingVolumeJson;
showLayers?: boolean | string[];
}) | ((viewLayer: ViewLayer, model: Model) => void | (Partial<ParameterTilesetValue> & {
viewerRequestVolume?: BoundingVolume | BoundingVolumeJson;
showLayers?: boolean | string[];
}));
/**
* 模型贴图的配置参数
* @description
* 可以动态对配置在 `work` 数据中的模型贴图在 runtime 做 url 调整。
* 平衡加载时间和图片质量
*/
textureOptions?: TextureOptions;
/** 强制显示模型,不等待加载完 */
forceReplaceImmediately?: boolean;
}
export type Models = Model[] & {
/**
* @deprecated
* use `modelScene.autoRefine` instead
*/
autoUpdate: boolean;
/**
* @deprecated
* use `modelScene.boundingBox` instead
*/
bounding: THREE.Box3;
/**
* @deprecated
* use `modelScene.loaded` instead
*/
loaded: boolean;
/**
* @deprecated
* use `modelScene.refined` instead
*/
refined: boolean;
/**
* @deprecated
* use `modelScene.refineProgress` instead
*/
refineProgress: [number, number];
/**
* @deprecated
* use `modelScene.parameter.cacheCameras` `modelScene.parameter.set('cacheCameras', cacheCameras)` instead
*/
cacheCameras: readonly (THREE.PerspectiveCamera | Camera)[];
/**
* @deprecated
* use `modelScene.intersectRaycaster` instead
*/
intersectRaycaster(raycaster: THREE.Raycaster): Intersection[];
/**
* @deprecated
* Use `.parameter.set` instead
*/
setMaterial(values: Partial<ParameterValue>): void;
/**
* @deprecated
* Use `.parameter.get` instead
*/
getMaterial(): ParameterValue;
/**
* @deprecated
* Use `.parameter.reset('brightness')` instead
*/
resetBrightness(): void;
};
export interface ModelScene {
dispatchEvent(event: {
type: 'model.create';
model: Model;
}): void;
dispatchEvent(event: {
type: 'model.dispose';
model: Model;
}): void;
dispatchEvent(event: {
type: string;
[attachment: string]: any;
}): void;
addEventListener(type: 'model.create', listener: (event: THREE.Event & {
type: 'model.create';
model: Model;
}) => void): void;
addEventListener(type: 'model.dispose', listener: (event: THREE.Event & {
type: 'model.dispose';
model: Model;
}) => void): void;
addEventListener(type: string, listener: (event: THREE.Event) => void): void;
removeEventListener(type: 'model.create', listener: (event: THREE.Event & {
type: 'model.create';
model: Model;
}) => void): void;
removeEventListener(type: 'model.dispose', listener: (event: THREE.Event & {
type: 'model.dispose';
model: Model;
}) => void): void;
removeEventListener(type: string, listener: (event: THREE.Event) => void): void;
}
export declare class ModelScene extends THREE.Scene {
fiveId: string;
needsRender: boolean;
/** 自动细化 */
autoRefine: boolean;
/** 包围盒 */
boundingBox: THREE.Box3;
/** 包围盒 Mesh */
boundingMesh: BoundingMesh;
/** 加载完成 */
loaded: boolean;
/** 细化完成 */
refined: boolean;
/** 细化进度 */
refineProgress: [number, number];
/** 参数 */
parameter: Parameter;
/** 模型列表 */
readonly models: Models;
private readonly shownModels;
private updateModelMap;
constructor(options: {
fiveId: string;
});
setModels(works: Works, options: ModelOptions): Model[];
get empty(): boolean;
/**
* 计算模型射线碰撞检测
* @param raycaster - THREE 射线对象
* @param target - 返回碰撞点
* @returns 返回碰撞点
*/
intersectRaycaster(raycaster: THREE.Raycaster, target?: Intersection[]): Intersection[];
update(renderer: THREE.WebGLRenderer, camera: Camera): boolean;
/**
* @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.reset('brightness')` instead
*/
resetBrightness(): void;
dispose(): void;
}