Options
All
  • Public
  • Public/Protected
  • All
Menu

如视 VR Web展示器

example
// 初始化构造函数
const five = new Five();
// 将绘制区域添加到页面上
five.appendTo(document.body);
// 加载 Work 数据
five.load({...});

Hierarchy

Index

Constructors

constructor

Properties

camera

camera: Camera

内部使用的 Camera

Optional currentMode

currentMode?: Mode

当前展示的模式

ident

ident: string

imageOptions

imageOptions: ImageOptions

全景图的配置参数

description

可以动态对配置在 work 数据中的全景图片在 runtime 做 url 调整。 平衡加载时间和图片质量

model

model: Model

当前加载的模型

needsRender

needsRender: boolean

是否需要渲染

description

如果初始化设置了 onlyRenderIfNeeds: true, 则会激活按需渲染 可以通过设置 five.needsRender = true 来告知,five 会在下一帧渲染画面。

Optional panoIndex

panoIndex?: number

当前点位序号

paused

paused: boolean

自动播放状态是否暂停

description

可以通过 five.play five.pause 方法播放或暂停

plugins

plugins: {}

插件暴露的方法

Type declaration

Optional renderer

renderer?: WebGLRenderer

当前使用的 THREE.WebGLRenderer。

description

如果初始化时传入了 renderer 则直接时该值 否则会通过 preserveDrawingBuffer backgroundColor backgroundAlpha antialias 创建一个 THREE.WebGLRenderer

scene

scene: Scene

内部使用的 THREE.Scene

scissor

scissor: Scissor

当前设置的 scissor

description

可通过初始化,或者 setScissor 方式设置 scissor 是将屏幕中的内容渲染到 renderer 的指定区域。 页面整体长宽均为 1。通过类似 css 的 left bottom width height 来确定区域。

example
scissor: { left: 0.75, bottom: 0, width: 0.25, height: 1 }

state

state: State

当前状态

description
five 设置了以下状态

- mode: Mode
- panoIndex: number
- longitude: number
- latitude: number
- fov: number
- offset: THREE.Vector3

可以通过 five.state 和 five.setState 来获取和设置。
通过 state 设置后,five 会通过合适的动画运动来达到设置的位置。
来迎合一些通过数据驱动的场景。

textureOptions

textureOptions: TextureOptions

模型贴图的配置参数

description

可以动态对配置在 work 数据中的模型贴图在 runtime 做 url 调整。 平衡加载时间和图片质量

videoTexture

videoTexture: VideoTexture

模型贴图的配置参数

description

可以动态对配置在 work 数据中的模型贴图在 runtime 做 url 调整。 平衡加载时间和图片质量

Static Line

Line: any = null
deprecated

请使用 import { Line } from "@realsee/five/line" 代替;

Static Mode

Mode: Mirror<Mode> = ...

Five 的显示模式,可以通过 five.changeMode five.setState 来切换

description
Panorama 全景图游走模式
Model 模型游走模式
Floorplan 模型查看模式
Topview 户型图模式
DepthPanorama 深度图游走模式
VRPanorama VR眼镜模式

Accessors

enableIOSEDR

  • get enableIOSEDR(): boolean
  • set enableIOSEDR(enable: boolean): void
  • 是否开启 IOS EDR 模式 需要客户端配合 并且开启 five.enablepostProcessing = true

    Returns boolean

  • 是否开启 IOS EDR 模式 需要客户端配合 并且开启 five.enablepostProcessing = true

    Parameters

    • enable: boolean

    Returns void

enablePostProcessing

  • get enablePostProcessing(): boolean
  • set enablePostProcessing(enable: boolean): void
  • Returns boolean

  • Parameters

    • enable: boolean

    Returns void

helperVisible

  • get helperVisible(): boolean
  • set helperVisible(visible: boolean): void
  • 帮助元素显示/隐藏

    Returns boolean

  • 帮助元素显示/隐藏

    Parameters

    • visible: boolean

    Returns void

work

  • 当前加载的 work 数据

    Returns Work

Methods

addExtraElement

  • addExtraElement(element: HTMLElement): () => void
  • 绑定一个额外 DOM 区域,接受触控/鼠标事件

    Parameters

    • element: HTMLElement

    Returns () => void

    解除该绑定

      • (): void
      • 绑定一个额外 DOM 区域,接受触控/鼠标事件

        Returns void

        解除该绑定

appendTo

  • appendTo(element: HTMLElement, size?: { height?: number; width?: number }): void
  • 将显示区域加载到页面 DOM 中

    description

    如果你是传入的 renderer. 则你需要自行来方式显示区域该方法并不生效

    Parameters

    • element: HTMLElement

      加载到页面的 DOM 元素

    • size: { height?: number; width?: number } = {}

      显示区域尺寸 默认铺满这个 DOM 元素

      • Optional height?: number
      • Optional width?: number

    Returns void

aroundScissor

  • aroundScissor(callback: () => void): void
  • Parameters

    • callback: () => void
        • (): void
        • Returns void

    Returns void

changeMode

  • changeMode<T>(mode: T, state?: Partial<Omit<State, "mode">>, duration?: number, userAction?: boolean, force?: boolean): Promise<void>
  • 切换模态

    Type parameters

    Parameters

    • mode: T

      切换到的模态

    • state: Partial<Omit<State, "mode">> = {}

      切换完成时的姿态

    • duration: number = ...

      模态切换动画用时

    • userAction: boolean = true

      是否时用户动作触发 默认 true

    • force: boolean = false

      必须重新初始化 controller

    Returns Promise<void>

dispose

  • dispose(): void
  • 析构 five 对象。

    description

    一旦调用了析构方法,则不能再使用当前 five 对象了。 你可以新建一个新的。

    Returns void

emit

  • emit<K>(name: K, ...data: Parameters<EventTypes[K]>): boolean
  • 触发事件

    Type parameters

    • K: "error" | "network" | "cameraDirectionUpdate" | "cameraUpdate" | "cameraPositionUpdate" | "panoSelected" | "moveToPano" | "moveToPanoCanceled" | "panoWillArrive" | "movingToPano" | "panoArrived" | "panoWillLoad" | "panoLoaded" | "panoLoadError" | "initAnimationEnded" | "initAnimationWillStart" | "wantsGesture" | "gesture" | "wantsTapGesture" | "tapGesture" | "wantsPressGesture" | "pressGesture" | "wantsPanGesture" | "wantsInteriaPan" | "panGesture" | "interiaPan" | "wantsPinchGesture" | "pinchGesture" | "wantsMouseWheel" | "mouseWheel" | "wantsShowIntersectionOnModel" | "intersectionOnModelUpdate" | "intersectionHidden" | "textureStartLoad" | "textureLoading" | "textureAbort" | "textureLoaded" | "textureError" | "willLoad" | "load" | "loaded" | "modelWillLoad" | "modelGeometryLoaded" | "modelMaterialLoaded" | "modelBvhLoaded" | "modelLoadError" | "modelLoaded" | "modelShownFloorChange" | "renderFrame" | "fps" | "stateChange" | "currentStateChange" | "setState" | "stateSynced" | "wantsMoveToPano" | "wantsToMoveToPano" | "wantsChangeMode" | "modeChange" | "helpersVisibleChange" | "dispose"

      预设的监听事件名称

    Parameters

    • name: K

      事件类型

    • Rest ...data: Parameters<EventTypes[K]>

      触发事件的数据

    Returns boolean

    canceled 是否被触发取消

exitFullscreen

  • exitFullscreen(): void
  • Returns void

getCameraLocal

  • getCameraLocal(): { lookAtVector: Vector3; phi: number; theta: number }
  • 获取当前相机的姿态(用于内部的 python 脚本截图)

    deprecated

    这是用于内部的 python 脚本截图

    Returns { lookAtVector: Vector3; phi: number; theta: number }

    • lookAtVector: Vector3
    • phi: number
    • theta: number

getCurrentState

  • Returns State

getDrawingBufferSize

  • getDrawingBufferSize(target: Vector2): Vector2
  • Parameters

    • target: Vector2

    Returns Vector2

getElement

  • getElement(): HTMLCanvasElement
  • 获取显示用的画布(Canvas DOM节点)

    Returns HTMLCanvasElement

getLongitudeAndLatitude

  • getLongitudeAndLatitude(): Pick<Pose, "longitude" | "latitude">
  • 获取当前相机经纬度

    deprecated

    请使用使用 getPose

    Returns Pick<Pose, "longitude" | "latitude">

getOffset

  • getOffset(): Vector3
  • 获取当前相机位置

    deprecated

    请使用使用 getPose

    Returns Vector3

getPixels

  • getPixels(x: number, y: number, width: number, height: number, pixelRatio?: number): Uint8Array
  • 获取画面中的像素颜色

    Parameters

    • x: number

      获取像素区域的起始坐标 x

    • y: number

      获取像素区域的起始坐标 y

    • width: number

      获取像素区域的宽度

    • height: number

      获取像素区域的高度

    • pixelRatio: number = 1

      获取区域的像素比

    Returns Uint8Array

    rgba颜色平铺的 Uint8Array

getPose

  • 获取当前相机姿态, 可以使用 getCurrentState 代替

    Returns Pose

getRenderObjects

  • getRenderObjects(object?: Object3D): Object3D[]
  • 获取当前在屏幕视锥中的 mesh。

    Parameters

    • Optional object: Object3D

      如果传入则检查这个对象中的mesh,如果不传,则检查整个 scene

    Returns Object3D[]

getSize

  • getSize(target: Vector2): Vector2
  • Parameters

    • target: Vector2

    Returns Vector2

hasListener

  • hasListener(name: "error" | "network" | "cameraDirectionUpdate" | "cameraUpdate" | "cameraPositionUpdate" | "panoSelected" | "moveToPano" | "moveToPanoCanceled" | "panoWillArrive" | "movingToPano" | "panoArrived" | "panoWillLoad" | "panoLoaded" | "panoLoadError" | "initAnimationEnded" | "initAnimationWillStart" | "wantsGesture" | "gesture" | "wantsTapGesture" | "tapGesture" | "wantsPressGesture" | "pressGesture" | "wantsPanGesture" | "wantsInteriaPan" | "panGesture" | "interiaPan" | "wantsPinchGesture" | "pinchGesture" | "wantsMouseWheel" | "mouseWheel" | "wantsShowIntersectionOnModel" | "intersectionOnModelUpdate" | "intersectionHidden" | "textureStartLoad" | "textureLoading" | "textureAbort" | "textureLoaded" | "textureError" | "willLoad" | "load" | "loaded" | "modelWillLoad" | "modelGeometryLoaded" | "modelMaterialLoaded" | "modelBvhLoaded" | "modelLoadError" | "modelLoaded" | "modelShownFloorChange" | "renderFrame" | "fps" | "stateChange" | "currentStateChange" | "setState" | "stateSynced" | "wantsMoveToPano" | "wantsToMoveToPano" | "wantsChangeMode" | "modeChange" | "helpersVisibleChange" | "dispose"): boolean
  • 判断是否注册了事件

    Parameters

    • name: "error" | "network" | "cameraDirectionUpdate" | "cameraUpdate" | "cameraPositionUpdate" | "panoSelected" | "moveToPano" | "moveToPanoCanceled" | "panoWillArrive" | "movingToPano" | "panoArrived" | "panoWillLoad" | "panoLoaded" | "panoLoadError" | "initAnimationEnded" | "initAnimationWillStart" | "wantsGesture" | "gesture" | "wantsTapGesture" | "tapGesture" | "wantsPressGesture" | "pressGesture" | "wantsPanGesture" | "wantsInteriaPan" | "panGesture" | "interiaPan" | "wantsPinchGesture" | "pinchGesture" | "wantsMouseWheel" | "mouseWheel" | "wantsShowIntersectionOnModel" | "intersectionOnModelUpdate" | "intersectionHidden" | "textureStartLoad" | "textureLoading" | "textureAbort" | "textureLoaded" | "textureError" | "willLoad" | "load" | "loaded" | "modelWillLoad" | "modelGeometryLoaded" | "modelMaterialLoaded" | "modelBvhLoaded" | "modelLoadError" | "modelLoaded" | "modelShownFloorChange" | "renderFrame" | "fps" | "stateChange" | "currentStateChange" | "setState" | "stateSynced" | "wantsMoveToPano" | "wantsToMoveToPano" | "wantsChangeMode" | "modeChange" | "helpersVisibleChange" | "dispose"

      事件类型

    Returns boolean

initBasisLoader

  • initBasisLoader(transcoderResourcePath?: string): void
  • 初始化 initBasisLoader

    description

    同初始化的 initBasisLoader 参数。用于初始化 basisLoader。 basisLoader 只会初始化一次,一旦初始化则不会再修改。

    example
    // 使用默认解析器
    five.initialBasisLoader();

    // 使用指定解析器
    // 会调用这个目录下的 basis_transcoder.js basis_transcoder.wasm 文件作为解析器
    five.initialBasisLoader("https://vrlab-public.ljcdn.com/release/static/image/release/five/basis/");

    Parameters

    • Optional transcoderResourcePath: string

      basis 解析器路径 如果不设置,使用默认解析器 basis 解析器。 可以传入解析器的 resourcePath, 则使用指定的解析器

    Returns void

load

  • load(inputWork: any, state?: "inherit" | "initial" | Partial<Omit<State, "offset">>, duration?: number, userAction?: boolean): Promise<void>
  • 加载 Work 数据

    Parameters

    • inputWork: any

      Work 数据

    • Optional state: "inherit" | "initial" | Partial<Omit<State, "offset">>

      初始化姿态

      • "inherit" 使用当前姿态
      • "initial" 使用 Work 数据中的 initial 姿态
      • State 自定义姿态
    • Optional duration: number

      切换时间

    • userAction: boolean = true

    Returns Promise<void>

moveToPano

  • moveToPano(panoIndex: number, options?: MovePanoOptions, userAction?: boolean): void
  • 转化到 Panorama 模态,并移动到对应序号的观察点。

    Parameters

    • panoIndex: number

      观察点序号

    • options: MovePanoOptions = {}

      移动点位参数

    • userAction: boolean = true

      是否用户触犯

    Returns void

off

  • off<K>(name?: K, callback?: (...args: Parameters<EventTypes[K]>) => ReturnType<EventTypes[K]>): void
  • 解除事件

    如果 name 不传的话解除对应所有事件 如果 name, callback 不传的话解除所有name的所有事件

    Type parameters

    • K: "error" | "network" | "cameraDirectionUpdate" | "cameraUpdate" | "cameraPositionUpdate" | "panoSelected" | "moveToPano" | "moveToPanoCanceled" | "panoWillArrive" | "movingToPano" | "panoArrived" | "panoWillLoad" | "panoLoaded" | "panoLoadError" | "initAnimationEnded" | "initAnimationWillStart" | "wantsGesture" | "gesture" | "wantsTapGesture" | "tapGesture" | "wantsPressGesture" | "pressGesture" | "wantsPanGesture" | "wantsInteriaPan" | "panGesture" | "interiaPan" | "wantsPinchGesture" | "pinchGesture" | "wantsMouseWheel" | "mouseWheel" | "wantsShowIntersectionOnModel" | "intersectionOnModelUpdate" | "intersectionHidden" | "textureStartLoad" | "textureLoading" | "textureAbort" | "textureLoaded" | "textureError" | "willLoad" | "load" | "loaded" | "modelWillLoad" | "modelGeometryLoaded" | "modelMaterialLoaded" | "modelBvhLoaded" | "modelLoadError" | "modelLoaded" | "modelShownFloorChange" | "renderFrame" | "fps" | "stateChange" | "currentStateChange" | "setState" | "stateSynced" | "wantsMoveToPano" | "wantsToMoveToPano" | "wantsChangeMode" | "modeChange" | "helpersVisibleChange" | "dispose"

      预设的监听事件名称

    Parameters

    Returns void

on

  • on<K>(name: K, callback: (...args: Parameters<EventTypes[K]>) => ReturnType<EventTypes[K]>, once?: boolean): () => void
  • 注册事件

    Type parameters

    • K: "error" | "network" | "cameraDirectionUpdate" | "cameraUpdate" | "cameraPositionUpdate" | "panoSelected" | "moveToPano" | "moveToPanoCanceled" | "panoWillArrive" | "movingToPano" | "panoArrived" | "panoWillLoad" | "panoLoaded" | "panoLoadError" | "initAnimationEnded" | "initAnimationWillStart" | "wantsGesture" | "gesture" | "wantsTapGesture" | "tapGesture" | "wantsPressGesture" | "pressGesture" | "wantsPanGesture" | "wantsInteriaPan" | "panGesture" | "interiaPan" | "wantsPinchGesture" | "pinchGesture" | "wantsMouseWheel" | "mouseWheel" | "wantsShowIntersectionOnModel" | "intersectionOnModelUpdate" | "intersectionHidden" | "textureStartLoad" | "textureLoading" | "textureAbort" | "textureLoaded" | "textureError" | "willLoad" | "load" | "loaded" | "modelWillLoad" | "modelGeometryLoaded" | "modelMaterialLoaded" | "modelBvhLoaded" | "modelLoadError" | "modelLoaded" | "modelShownFloorChange" | "renderFrame" | "fps" | "stateChange" | "currentStateChange" | "setState" | "stateSynced" | "wantsMoveToPano" | "wantsToMoveToPano" | "wantsChangeMode" | "modeChange" | "helpersVisibleChange" | "dispose"

      预设的监听事件名称

    Parameters

    • name: K

      事件类型

    • callback: (...args: Parameters<EventTypes[K]>) => ReturnType<EventTypes[K]>

      事件回调函数

    • Optional once: boolean

      是否只执行一次

    Returns () => void

    解除事件

      • (): void
      • 注册事件

        Returns void

        解除事件

once

  • once<K>(name: K, callback: (...args: Parameters<EventTypes[K]>) => ReturnType<EventTypes[K]>): () => void
  • 注册事件(是否只执行一次)

    Type parameters

    • K: "error" | "network" | "cameraDirectionUpdate" | "cameraUpdate" | "cameraPositionUpdate" | "panoSelected" | "moveToPano" | "moveToPanoCanceled" | "panoWillArrive" | "movingToPano" | "panoArrived" | "panoWillLoad" | "panoLoaded" | "panoLoadError" | "initAnimationEnded" | "initAnimationWillStart" | "wantsGesture" | "gesture" | "wantsTapGesture" | "tapGesture" | "wantsPressGesture" | "pressGesture" | "wantsPanGesture" | "wantsInteriaPan" | "panGesture" | "interiaPan" | "wantsPinchGesture" | "pinchGesture" | "wantsMouseWheel" | "mouseWheel" | "wantsShowIntersectionOnModel" | "intersectionOnModelUpdate" | "intersectionHidden" | "textureStartLoad" | "textureLoading" | "textureAbort" | "textureLoaded" | "textureError" | "willLoad" | "load" | "loaded" | "modelWillLoad" | "modelGeometryLoaded" | "modelMaterialLoaded" | "modelBvhLoaded" | "modelLoadError" | "modelLoaded" | "modelShownFloorChange" | "renderFrame" | "fps" | "stateChange" | "currentStateChange" | "setState" | "stateSynced" | "wantsMoveToPano" | "wantsToMoveToPano" | "wantsChangeMode" | "modeChange" | "helpersVisibleChange" | "dispose"

      预设的监听事件名称

    Parameters

    Returns () => void

    解除事件

      • (): void
      • 注册事件(是否只执行一次)

        Returns void

        解除事件

pause

  • pause(): void
  • 但停自动播放

    Returns void

play

  • play(): void
  • Returns void

preloadPano

  • preloadPano(panoIndex: number, callback?: (costs: number) => void): Promise<number>
  • 预加载点位图片资源

    Parameters

    • panoIndex: number

      观察点序号

    • callback: (costs: number) => void = noop

      加载完成回调, 并传递加载用时。

        • (costs: number): void
        • Parameters

          • costs: number

          Returns void

    Returns Promise<number>

    加载完成的 Promise 参数同 callback

project2d

  • project2d(vector: Vector3, testModel?: boolean): Vector2
  • 计算三维坐标对应到屏幕的二维坐标

    description

    如果三维坐标不在屏幕中,则返回 null

    Parameters

    • vector: Vector3

      三维坐标

    • testModel: boolean = false

      是否计算模型遮挡

    Returns Vector2

    二维坐标 或者 null

ready

  • ready(): Promise<void>
  • Returns Promise<void>

refresh

  • refresh(size?: { height?: number; width?: number }, pixelRatio?: number): void
  • 设置显示区域尺寸

    description

    如果你是传入的 renderer. 则你需要自行来设置显示区域尺寸,该方法并不生效

    Parameters

    • size: { height?: number; width?: number } = {}

      显示区域尺寸 默认铺满这个 DOM 元素

      • Optional height?: number
      • Optional width?: number
    • Optional pixelRatio: number

      像素比 默认继承之前的设置

    Returns void

removeExtraElement

  • removeExtraElement(element: HTMLElement): void
  • 解除绑定的一个额外 DOM 区域

    Parameters

    • element: HTMLElement

    Returns void

render

  • render(callback?: () => void, updateObjectResolution?: boolean): WebGLRenderTarget
  • 强制渲染

    description

    调用 five.render() 和设置 five.needsRender = true 均可在按需渲染时,使得画面渲染一次 区别在于:

    • five.needsRender = true 为在下帧渲染画面
    • five.render() 在当前帧渲染画面 推荐使用 five.needsRender = true, 可以更加流畅。但是如果需要截图等同步操作,可以使用 five.render()

    Parameters

    • Optional callback: () => void

      渲染完成回调

        • (): void
        • Returns void

    • updateObjectResolution: boolean = false

    Returns WebGLRenderTarget

requestFullscreen

  • requestFullscreen(): void
  • Returns void

setScissor

  • 设置 scissor

    example
    five.setScissor({ left: 0.75, bottom: 0, width: 0.25, height: 1 })
    

    Parameters

    • scissor: Scissor

      指定区域 scissor 是将屏幕中的内容渲染到 renderer 的指定区域。 请确保在 five 初始化时传入 renderer 对象 页面整体长宽均为 1。通过类似 css 的 left bottom width height 来确定区域。

    Returns void

setState

  • setState(state: Partial<State>, immediately?: boolean, userAction?: boolean): void
  • 设置 State

    description
    five 设置了以下状态
    
    - mode: Mode
    - panoIndex: number
    - longitude: number
    - latitude: number
    - fov: number
    - offset: THREE.Vector3
    
    可以通过 five.state 和 five.setState 来获取和设置。
    通过 state 设置后,five 会通过合适的动画运动来达到设置的位置。
    来迎合一些通过数据驱动的场景。
    

    Parameters

    • state: Partial<State>

      目标状态

    • immediately: boolean = false

      是否马上转换,马上转换会尽快达到目标状态,尽量减少中间状态,更少动画。

    • userAction: boolean = true

      是否是用户触发的动作

    Returns void

updateCamera

  • updateCamera(pose: Partial<Omit<Pose, "offset">>, duration: number, userAction?: boolean): Promise<void>
  • 移动相机。(不触发点位移动)

    description

    如果动画中途被打断(用户触发行为,或者调用 setState, load, changeMode)的等 会 Promise.reject。运动完成则 Promise.resolve

    Parameters

    • pose: Partial<Omit<Pose, "offset">>

      相机目标位置

    • duration: number

      动画触发的时常

    • userAction: boolean = true

      是否用户触发

    Returns Promise<void>

    Promise 是否移动成功

updateConfiguration

  • updateConfiguration(args: Pick<FiveInitArgs, "panorama" | "model" | "floorplan" | "topview" | "depthPanorama" | "vrPanorama" | "imageOptions">): void
  • Parameters

    • args: Pick<FiveInitArgs, "panorama" | "model" | "floorplan" | "topview" | "depthPanorama" | "vrPanorama" | "imageOptions">

    Returns void

updateTime

  • updateTime(time: number, deltaTime: number): void
  • Parameters

    • time: number
    • deltaTime: number

    Returns void