@realsee/five
Version:
Realsee Renderer SDK
207 lines (206 loc) • 5.95 kB
TypeScript
import * as THREE from "three";
import type { Mode } from "../application/mode";
import type { TilesetHeader } from "../model/tile3d/header";
import type { WorkObserverProto } from './workObserverProto';
import type { LooseWork, LoosePanoWork } from "./looseWorkType";
import { CubeFace } from "../types/cube";
import type { PanoId } from "../utils/pano";
import type { Histogram } from "../texture/histogram";
/** 全景视频贴片 */
export interface WorkVideo {
work: Work;
/** 视频源 url */
source: string;
/** 视频源变化矩阵 */
matrix: THREE.Matrix4;
/** 视频源长宽尺寸 */
size: THREE.Vector2;
}
export interface WorkCubeImage extends Record<CubeFace, string> {
work: Work;
histogram?: Histogram;
}
export interface WorkTile extends WorkCubeImage {
/** 层级 */
level: number;
/** 尺寸 */
size: number;
/** 缩放比例 */
scale: number;
}
/** 全景图 */
export interface WorkImage extends WorkCubeImage {
/** 分辨率表 */
sizeList: readonly number[];
/** 瓦片信息 */
tiles: readonly WorkTile[];
/** 点位视频 */
video?: WorkVideo;
}
/** 初始化位姿参数 */
export interface WorkInitial {
work: Work;
/** 模态 */
mode?: Mode;
/** 点位序号 */
panoIndex?: number;
/** 相机水平角 */
longitude?: number;
/** 相机俯仰角 */
latitude?: number;
/** 相机可视角度(垂直)*/
fov?: number;
/** 相机观察点位置 [x, y, z] */
offset?: THREE.Vector3;
/** 相机距离观察点距离 */
distance?: number;
}
/** 每个点位的数据 */
export interface WorkObserver extends WorkObserverProto {
/** work */
work: Work;
/** 序号 */
index: number;
/** 序号 */
panoIndex: number;
/**
* 序号
* @example
* `${workCode}[${panoIndex}]`
*/
panoId: PanoId;
/** 点位所在楼层 */
floorIndex: number;
/** 点位 derived_id */
derivedId: number | string;
/** 点位 derived_id_str */
derivedIdStr: string;
/** 点位是否激活可用 */
active: boolean;
/** 点位是否可加载 */
loadable: boolean;
/** 点位全景图 */
images: WorkImage;
/**
* @deprecated
* 可以看到的相关点位序号
* 数据和 accessibleNodes 一致,使用 accessibleNodes
*/
visibleNodes: readonly number[];
/** 可以连通的相关点位序号 */
accessibleNodes: readonly number[];
/** 点位和模型的地面坐标 */
standingPosition: THREE.Vector3;
/** 点位和模型的观察点坐标 */
position: THREE.Vector3;
/** 点位和模型的旋转对齐关系四元数 */
quaternion: THREE.Quaternion;
/** 点位和模型的旋转对齐关系矩阵 */
matrix: THREE.Matrix4;
}
export interface WorkModelLayer {
/** work */
work: Work;
/** 模型类型 point_cloud | mesh | gaussian_splatting */
type: 'point_cloud' | 'mesh' | 'gaussian_splatting';
/** 模型名称 */
name: string;
/** 指定上方向 */
upAxis: string;
/** 如果 tileset.json 地址 */
tileset: string;
}
/** 模型数据 */
export interface WorkModel {
/** work */
work: Work;
/** 模型文件地址 at3d / domez */
file?: string;
/** 模型贴图文件地址 */
textures?: readonly string[];
/** 模型贴图文件地址的父目录 */
textureBase?: string;
/** 指定上方向,对于 obj, ply 等定义不明确的需要指定上方向 */
upAxis?: string;
/** 模型的地理坐标数据 */
coordinate?: NonNullable<TilesetHeader['rootMeta']>['coordinate'];
/** 3d tile */
layers: readonly WorkModelLayer[];
}
export interface Work {
/** 数据签发人 */
issuer: string;
/** 编号 */
workCode: string;
/** 内部项目 id */
projectId?: string;
/** 允许访问的安全域名 */
allowHosts: readonly string[];
/** 过期时间 */
expire: Date;
/** 名称 */
name: string;
/** 根地址 */
baseURL: string;
/** 初始化参数 */
initial: WorkInitial;
/** 相对位姿 */
transform: THREE.Matrix4;
/** 模型参数 */
model?: WorkModel;
/** 全景点位信息 */
observers: readonly WorkObserver[];
}
export declare class Work {
jsonp: boolean;
shortPath: boolean;
observerBox: THREE.Box3;
/**
* 控制参数
* @deprecated 通过 work.transform 替换
*/
options: {
/**
* 位姿修正
* @deprecated 通过 work.transform 替换
*/
transform: THREE.Matrix4;
};
/**
* 原始数据
* @deprecated 通过 work.toJSON 替换
*/
raw: {
works: string[];
};
/**
* 解析 Work 数据
* @param obj - work 数据,从如数开发者平台获取
* @param options - 配置参数, 可以在此二次设置 baseURL 等参数
* @returns - 签署过的 Work 数据结构
*/
static parse: typeof parseWork;
constructor(obj: Work | LoosePanoWork | LooseWork | (Work | LooseWork)[] | any, options: ParseOptions);
getURL(source: string): string;
verifyURL(source: string): boolean;
toJSON(): any;
}
export type ParseOptions = {
/** 位姿 */
transform?: THREE.Matrix4 | number[];
/** 重置 WorkCode */
workCode?: string | ((input: any) => string);
/** 重写资源前缀 */
baseURL?: string;
/** 资源地址使用短地址 */
shortPath?: boolean;
/** 资源使用 jsonp 方式发布 */
jsonp?: boolean;
};
/**
* 解析 Work 数据
* @param obj - work 数据,从如数开发者平台获取
* @param options - 配置参数, 可以在此二次设置 baseURL 等参数
* @returns - 签署过的 Work 数据结构
*/
export declare function parseWork(obj: Work | LoosePanoWork | LooseWork | string | any, options?: ParseOptions): Work;