@realsee/five
Version:
Realsee Renderer SDK
177 lines (176 loc) • 6.36 kB
TypeScript
import * as THREE from "three";
import { ImageOptions, TextureOptions } from "../types/imageOptions";
import { Viewport } from "../types/viewport";
import { ControllerCustomInitTypes } from "./controllers";
import { FivePlugin, FivePluginInit } from "../types/plugin";
/** Five 初始化参数 */
interface FiveInitArgs {
/**
* 外部传入的 `THREE.WebGLRenderer`。
* @description
* 如果需要使用 `scissor` 分割画布功能,则必须使用外部传入 renderer,
* 并且设置为 `preserveDrawingBuffer: false`。
* 如果设置了 `renderer`, 则 `preserveDrawingBuffer`
* `backgroundColor` `backgroundAlpha` `antialias`
* 均不再生效。
*/
renderer?: THREE.WebGLRenderer;
/**
* 内部 `THREE.WebGLRenderer` 是否通过像素拷贝的方式绘制。
* @description
* 当你想做屏幕截图等要确定取得屏幕像素时,请设置为 `true`。
* 如果设置了参数 `renderer` 参数,则不生效,请对传入的 `renderer` 自行设置。
* @default `false`
*/
preserveDrawingBuffer?: boolean;
/**
* 输出画面的背景颜色。
* @description
* 通过数字类型传入。
* 如果设置了参数 `renderer` 参数,则不生效,请对传入的 `renderer` 自行设置。
* @default `0x181A1C`
* @example
* ```
* backgroundColor: 0xffffff // 白色
* backgroundColor: 0xff0000 // 红色
* ```
*/
backgroundColor?: number | THREE.Color;
/**
* 输出画面的背景透明度
* @description
* 通过数字类型传入。取值范围 [0-1]
* 如果设置了参数 `renderer` 参数,则不生效,请对传入的 `renderer` 自行设置。
* @default `1`
*/
backgroundAlpha?: number;
/**
* 是否开启 `THREE.WebGLRenderer` 的抗锯齿功能
* @description
* 这个抗锯齿功能是 `WEBGL` 自带的抗锯齿,并不是类似 fxaa taa 等后处理方式,比较吃性能。
* 如果设置了参数 `renderer` 参数,则不生效,请对传入的 `renderer` 自行设置。
* @default `false`
*/
antialias?: boolean;
/**
* 屏幕渲染区域
* @description
* 请确保设置了 `renderer` 参数,`viewport` 参数才可生效
* `viewport` 是将屏幕中的内容渲染到 `renderer` 的指定区域。
* 页面整体长宽均为 `1`。通过类似 css 的 `left` `bottom` `width` `height` 来确定区域。
* @example
* ```
* viewport: { left: 0.75, bottom: 0, width: 0.25, height: 1 }
* ```
*/
viewport?: Viewport;
/**
* 是否自动播放。
* @description
* 播放即把内存中计算的内容渲染到画面上。play则是进行每帧播放。
* 如果 `play: false` 则不自动播放。屏幕不显示。
* 你还可以通过 `five.play()` `five.pause()` 的方式来控制播放。
* @default `true`
*/
play?: boolean;
/**
* 全景图的配置参数
* @description
* 可以动态对配置在 `work` 数据中的全景图片在 runtime 做 url 调整。
* 平衡加载时间和图片质量
*/
imageOptions?: ImageOptions;
/**
* 模型贴图的配置参数
* @description
* 可以动态对配置在 `work` 数据中的模型贴图在 runtime 做 url 调整。
* 平衡加载时间和图片质量
*/
textureOptions?: TextureOptions;
/**
* 是否按需渲染
* @description
* 按需渲染时,如果页面中的渲染有 `needsRender: true` 属性。或者 `five.needsRender: true` 时
* 才会重新渲染屏幕,降低无用渲染产生的消耗。
* @default `true`
*/
onlyRenderIfNeeds?: boolean;
/**
* 最高 fps 限制
* @description
* 如果为 `false`, 则不限制。最好也就是屏幕刷新率,不会再高了。
* @default `false`
*/
maxFps?: number | false;
/**
* 外挂视频对象。
* @description
* 当点位中有视频元素,则会使用。如果不传入也会外部新建,
* 加入传入的原因是,视频自动播放在不同浏览器或者 webview 中有不同的特性。
* 给予更多外部操作的空间。
*/
videoInstance?: HTMLVideoElement;
/** 全景图游走模式下的特定参数 */
panorama?: ControllerCustomInitTypes["Panorama"];
/** 模型游走模式下的特定参数 */
model?: ControllerCustomInitTypes["Model"];
/** 模型查看模式下的特定参数 */
floorplan?: ControllerCustomInitTypes["Floorplan"];
/** 户型图模式下的特定参数 */
topview?: ControllerCustomInitTypes["Topview"];
/** 地图模式下的特定参数 */
mapview?: ControllerCustomInitTypes["Mapview"];
/** VR眼镜模式下的特定参数 */
vrPanorama?: ControllerCustomInitTypes["VRPanorama"];
/** XR眼镜模式下的特定参数 */
xrPanorama?: ControllerCustomInitTypes["XRPanorama"];
/**
* 模式间切换时的过度动画时间
* @description
* 单位毫秒
* @default `800`
*/
modeChangeDuration?: number;
/**
* 是否支持滚轮
*/
enableWheel?: boolean;
/**
* 插件定义
* @description
* 详见插件部分。
*/
plugins?: (FivePlugin<void> | FivePluginInit<FivePlugin<any, any>> | FivePluginInit<FivePlugin<void, any>>)[];
/**
* 是否展示 powered by 如视
*/
poweredByRealsee?: boolean;
/**
* 是否使用对数深度缓存。如果要在单个场景中处理巨大的比例差异,就有必要使用
*/
logarithmicDepthBuffer?: boolean;
/**
* 着色器精度. 可以是 "highp", "mediump" 或者 "lowp". 如果设备支持
*/
precision?: 'highp' | 'mediump' | 'lowp';
/**
* 性能参数
*/
powerPreference?: 'high-performance' | 'low-power' | 'default';
/**
* 是否使用webgl2渲染执行环境, 默认值 false
*/
webgl2?: boolean;
/**
* 请求代理
* @param url - 发起的请求
* @returns 返回的请求
*/
requestProxy?(url: string): string | Promise<string>;
/**
* @deprecated
* 无效
*/
enableLayeringRendering?: boolean;
}
export type { FiveInitArgs };