如视 Five SDK
    Preparing search index...

    Class Five

    如视 VR Web展示器

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

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    backgroundAlpha: number

    背景透明度

    backgroundColor: Color

    背景颜色

    camera: Camera

    内部使用的 Camera

    currentMode: Mode

    当前展示的模式

    enableLayeringRendering: boolean
    ident: string
    imageOptions: ImageOptions

    全景图的配置参数

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

    modelScene: ModelScene

    内部模型部分使用的 THREE.Scene

    modelSceneNeedsRender: boolean

    模型是否需要更新渲染

    可以设置modelNeedsRender为true,通知five进行模型渲染的更新

    needsRender: boolean

    是否需要渲染

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

    onlyRenderIfNeeds: boolean

    是否按需渲染

    pano: Pano

    当前点位序号

    paused: boolean

    自动播放状态是否暂停

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

    plugins: { [key: string]: any }

    插件暴露的方法

    poweredByRealsee: boolean

    是否显示 Powered By Realsee

    renderer?: WebGLRenderer

    当前使用的 THREE.WebGLRenderer。

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

    scene: Scene

    非模型部分使用的 THREE.Scene

    state: State

    当前状态

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

    模型贴图的配置参数

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

    videoTexture: VideoTexture

    模型贴图的配置参数

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

    viewport: Viewport

    当前设置的 viewport

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

    viewport: { left: 0.75, bottom: 0, width: 0.25, height: 1 }
    
    xrCustomObjectsScene: Scene

    供外部放置需要在xr场景下产生遮挡的物体们

    Mode: {
        Floorplan: "Floorplan";
        Mapview: "Mapview";
        Model: "Model";
        Panorama: "Panorama";
        Topview: "Topview";
        VRPanorama: "VRPanorama";
        XRPanorama: "XRPanorama";
    } = ...

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

    Panorama 全景图游走模式
    Model 模型游走模式
    Floorplan 模型查看模式
    Topview 户型图模式
    VRPanorama VR眼镜模式
    XRPanorama VR硬件模式
    

    Accessors

    • get enableEDL(): boolean

      Returns boolean

      use five.effect instead

    • set enableEDL(enable: boolean): void

      Parameters

      • enable: boolean

      Returns void

    • get enableHQ(): boolean

      Returns boolean

      use five.effect instead

    • set enableHQ(enable: boolean): void

      Parameters

      • enable: boolean

      Returns void

    • get enableIOSEDR(): boolean

      Returns boolean

      use five.effect instead

    • set enableIOSEDR(enable: boolean): void

      Parameters

      • enable: boolean

      Returns void

    • get enablePostProcessing(): boolean

      Returns boolean

      use five.effect instead

    • set enablePostProcessing(enable: boolean): void

      Parameters

      • enable: boolean

      Returns void

    • get helperVisible(): boolean

      帮助元素显示/隐藏

      Returns boolean

    • set helperVisible(visible: boolean): void

      Parameters

      • visible: boolean

      Returns void

    • get internalLightsEnabled(): boolean

      Returns boolean

    • set internalLightsEnabled(value: boolean): void

      Parameters

      • value: boolean

      Returns void

    • get model(): Model

      Returns Model

    • get models(): Models

      Returns Models

    • get panoIndex(): number

      Returns number

    • get renderEffect(): "default" | "edl" | "hq" | "luminance"

      Returns "default" | "edl" | "hq" | "luminance"

    • set renderEffect(value: "default" | "edl" | "hq" | "luminance"): void

      Parameters

      • value: "default" | "edl" | "hq" | "luminance"

      Returns void

    • get scissor(): Viewport

      Returns Viewport

      use Viewport instead.

    • get work(): Work

      Returns Work

    • get works(): Works

      当前加载的 work 数据

      Returns Works

    • get dracoPath(): string

      Returns string

    • set dracoPath(path: string): void

      Parameters

      • path: string

      Returns void

    • get ktx2Path(): string

      Returns string

    • set ktx2Path(path: string): void

      Parameters

      • path: string

      Returns void

    • get useNativeImageBitmap(): boolean

      Returns boolean

    • set useNativeImageBitmap(enable: boolean): void

      Parameters

      • enable: boolean

      Returns void

    • get version(): string

      Returns string

    Methods

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

      Parameters

      • element: HTMLElement

      Returns () => void

      解除该绑定

    • 将显示区域加载到页面 DOM 中

      Parameters

      • element: HTMLElement

        加载到页面的 DOM 元素

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

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

      Returns void

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

    • 切换模态

      Type Parameters

      Parameters

      • mode: T

        切换到的模态

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

        切换完成时的姿态

      • Optionaloptions: number | { duration?: number; effect?: MovePanoEffect }

        模态切换动画用时

      • userAction: boolean = true

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

      • force: boolean = false

        必须重新初始化 controller

      Returns Promise<void>

    • 析构 five 对象。

      Returns void

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

    • 触发事件

      Type Parameters

      • K extends
            | "dispose"
            | "error"
            | "render"
            | "gesture.pan"
            | "gesture.tap"
            | "gesture.dbltap"
            | "gesture.press"
            | "gesture.pinch"
            | "gesture.mousewheel"
            | "gesture.mousemove"
            | "gesture.momentum"
            | "initAnimation.start"
            | "initAnimation.end"
            | "camera.update"
            | "intersect.update"
            | "pano.select"
            | "pano.request"
            | "pano.moveTo"
            | "pano.moving"
            | "pano.arrived"
            | "pano.cancel"
            | "pano.error"
            | "pano.texture.load"
            | "pano.texture.progress"
            | "pano.texture.success"
            | "pano.texture.error"
            | "pano.texture.abort"
            | "xr.session.end"
            | "xr.session.start"
            | "xr.gesture.tap"
            | "xr.gesture.press"
            | "xr.gesture.buttonUp"
            | "xr.gesture.buttonDown"
            | "xr.controller.update"
            | (keyof LegacyEventType)
            | "works.request"
            | "works.load"
            | "works.ready"
            | "state.set"
            | "state.change"
            | "state.synced"
            | "currentState.change"
            | "model.request"
            | "model.load"
            | "model.error"
            | "model.changeShownFloor"
            | "models.load"
            | "models.refined"
            | "render.prepare"
            | "mode.change.request"
            | "mode.change"
            | "helpers.visible"
            | "network.resource"
            | "fps"

        预设的监听事件名称

      Parameters

      • name: K

        事件类型

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

        触发事件的数据

      Returns boolean

      canceled 是否被触发取消

    • 退出全屏

      Returns void

    • 获取当前相机的姿态(用于内部的 python 脚本截图)

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

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

    • Returns State

    • Parameters

      • target: Vector2

      Returns Vector2

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

      Returns HTMLCanvasElement

    • 获取当前相机经纬度

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

      请使用使用 getPose

    • 获取当前相机位置

      Returns Vector3

      请使用使用 getPose

    • 获取画面中的像素颜色

      Type Parameters

      • T extends Uint8Array<ArrayBufferLike> | Uint8ClampedArray<ArrayBufferLike> = Uint8Array<ArrayBufferLike>

      Parameters

      • x: number

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

      • y: number

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

      • width: number

        获取像素区域的宽度

      • height: number

        获取像素区域的高度

      • OptionalpixelRatio: number

        获取区域的像素比

      • OptionalflipY: boolean

        是否Y轴翻转

      • Optionalbuffer: T

        存储数组

      Returns T

      rgba颜色平铺的 Uint8Array

    • 获取画面中的像素颜色

      Type Parameters

      • T extends Uint8Array<ArrayBufferLike> | Uint8ClampedArray<ArrayBufferLike> = Uint8Array<ArrayBufferLike>

      Parameters

      • options: {
            buffer?: T;
            flipY?: boolean;
            height: number;
            helperVisible?: boolean;
            pixelRatio?: number;
            skipPanorama?: boolean;
            width: number;
            x: number;
            y: number;
        }

        参数

        • Optionalbuffer?: T

          存储数组

        • OptionalflipY?: boolean

          是否Y轴翻转

        • height: number

          获取像素区域的高度

        • OptionalhelperVisible?: boolean
        • OptionalpixelRatio?: number

          获取区域的像素比

        • OptionalskipPanorama?: boolean
        • width: number

          获取像素区域的宽度

        • x: number

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

        • y: number

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

      Returns T

    • Returns Pose

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

    • Parameters

      • target: Vector2

      Returns Vector2

    • 判断是否注册了事件

      Parameters

      • name:
            | "dispose"
            | "error"
            | "render"
            | "gesture.pan"
            | "gesture.tap"
            | "gesture.dbltap"
            | "gesture.press"
            | "gesture.pinch"
            | "gesture.mousewheel"
            | "gesture.mousemove"
            | "gesture.momentum"
            | "initAnimation.start"
            | "initAnimation.end"
            | "camera.update"
            | "intersect.update"
            | "pano.select"
            | "pano.request"
            | "pano.moveTo"
            | "pano.moving"
            | "pano.arrived"
            | "pano.cancel"
            | "pano.error"
            | "pano.texture.load"
            | "pano.texture.progress"
            | "pano.texture.success"
            | "pano.texture.error"
            | "pano.texture.abort"
            | "xr.session.end"
            | "xr.session.start"
            | "xr.gesture.tap"
            | "xr.gesture.press"
            | "xr.gesture.buttonUp"
            | "xr.gesture.buttonDown"
            | "xr.controller.update"
            | (keyof LegacyEventType)
            | "works.request"
            | "works.load"
            | "works.ready"
            | "state.set"
            | "state.change"
            | "state.synced"
            | "currentState.change"
            | "model.request"
            | "model.load"
            | "model.error"
            | "model.changeShownFloor"
            | "models.load"
            | "models.refined"
            | "render.prepare"
            | "mode.change.request"
            | "mode.change"
            | "helpers.visible"
            | "network.resource"
            | "fps"

        事件类型

      Returns boolean

    • 加载 Work 数据

      Parameters

      • inputWork:
            | string
            | string[]
            | LooseWork
            | Work
            | Work[]
            | LooseWork[]
            | LooseWorkWithExtrinsics[]
            | Promise<
                LooseWork
                | Work
                | Work[]
                | LooseWork[]
                | LooseWorkWithExtrinsics[],
            >

        Work 数据

      • Optionalstate: "initial" | Partial<State> | "inherit"

        初始化姿态

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

        切换时间, 切换效果

      • userAction: boolean = true

      Returns Promise<void>

    • 转化到 Panorama 模态,并移动到对应序号的观察点。

      Parameters

      • pano: number | Pano | `${string}[${number}]`

        观察点序号

      • options: MovePanoOptions = {}

        移动点位参数

      • userAction: boolean = true

        是否用户触犯

      Returns Promise<void>

    • 解除事件

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

      Type Parameters

      • K extends
            | "dispose"
            | "error"
            | "render"
            | "gesture.pan"
            | "gesture.tap"
            | "gesture.dbltap"
            | "gesture.press"
            | "gesture.pinch"
            | "gesture.mousewheel"
            | "gesture.mousemove"
            | "gesture.momentum"
            | "initAnimation.start"
            | "initAnimation.end"
            | "camera.update"
            | "intersect.update"
            | "pano.select"
            | "pano.request"
            | "pano.moveTo"
            | "pano.moving"
            | "pano.arrived"
            | "pano.cancel"
            | "pano.error"
            | "pano.texture.load"
            | "pano.texture.progress"
            | "pano.texture.success"
            | "pano.texture.error"
            | "pano.texture.abort"
            | "xr.session.end"
            | "xr.session.start"
            | "xr.gesture.tap"
            | "xr.gesture.press"
            | "xr.gesture.buttonUp"
            | "xr.gesture.buttonDown"
            | "xr.controller.update"
            | (keyof LegacyEventType)
            | "works.request"
            | "works.load"
            | "works.ready"
            | "state.set"
            | "state.change"
            | "state.synced"
            | "currentState.change"
            | "model.request"
            | "model.load"
            | "model.error"
            | "model.changeShownFloor"
            | "models.load"
            | "models.refined"
            | "render.prepare"
            | "mode.change.request"
            | "mode.change"
            | "helpers.visible"
            | "network.resource"
            | "fps"

        预设的监听事件名称

      Parameters

      • Optionalname: K

        事件类型

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

        事件回调函数

      Returns void

    • 注册事件

      Type Parameters

      • K extends
            | "dispose"
            | "error"
            | "render"
            | "gesture.pan"
            | "gesture.tap"
            | "gesture.dbltap"
            | "gesture.press"
            | "gesture.pinch"
            | "gesture.mousewheel"
            | "gesture.mousemove"
            | "gesture.momentum"
            | "initAnimation.start"
            | "initAnimation.end"
            | "camera.update"
            | "intersect.update"
            | "pano.select"
            | "pano.request"
            | "pano.moveTo"
            | "pano.moving"
            | "pano.arrived"
            | "pano.cancel"
            | "pano.error"
            | "pano.texture.load"
            | "pano.texture.progress"
            | "pano.texture.success"
            | "pano.texture.error"
            | "pano.texture.abort"
            | "xr.session.end"
            | "xr.session.start"
            | "xr.gesture.tap"
            | "xr.gesture.press"
            | "xr.gesture.buttonUp"
            | "xr.gesture.buttonDown"
            | "xr.controller.update"
            | (keyof LegacyEventType)
            | "works.request"
            | "works.load"
            | "works.ready"
            | "state.set"
            | "state.change"
            | "state.synced"
            | "currentState.change"
            | "model.request"
            | "model.load"
            | "model.error"
            | "model.changeShownFloor"
            | "models.load"
            | "models.refined"
            | "render.prepare"
            | "mode.change.request"
            | "mode.change"
            | "helpers.visible"
            | "network.resource"
            | "fps"

        预设的监听事件名称

      Parameters

      • name: K

        事件类型

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

        事件回调函数

      • Optionalonce: boolean

        是否只执行一次

      Returns () => void

      解除事件

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

      Type Parameters

      • K extends
            | "dispose"
            | "error"
            | "render"
            | "gesture.pan"
            | "gesture.tap"
            | "gesture.dbltap"
            | "gesture.press"
            | "gesture.pinch"
            | "gesture.mousewheel"
            | "gesture.mousemove"
            | "gesture.momentum"
            | "initAnimation.start"
            | "initAnimation.end"
            | "camera.update"
            | "intersect.update"
            | "pano.select"
            | "pano.request"
            | "pano.moveTo"
            | "pano.moving"
            | "pano.arrived"
            | "pano.cancel"
            | "pano.error"
            | "pano.texture.load"
            | "pano.texture.progress"
            | "pano.texture.success"
            | "pano.texture.error"
            | "pano.texture.abort"
            | "xr.session.end"
            | "xr.session.start"
            | "xr.gesture.tap"
            | "xr.gesture.press"
            | "xr.gesture.buttonUp"
            | "xr.gesture.buttonDown"
            | "xr.controller.update"
            | (keyof LegacyEventType)
            | "works.request"
            | "works.load"
            | "works.ready"
            | "state.set"
            | "state.change"
            | "state.synced"
            | "currentState.change"
            | "model.request"
            | "model.load"
            | "model.error"
            | "model.changeShownFloor"
            | "models.load"
            | "models.refined"
            | "render.prepare"
            | "mode.change.request"
            | "mode.change"
            | "helpers.visible"
            | "network.resource"
            | "fps"

        预设的监听事件名称

      Parameters

      Returns () => void

      解除事件

    • 暂停自动播放

      Returns void

    • Returns void

    • 预加载点位图片资源

      Parameters

      • pano: number | Pano | `${string}[${number}]`

        观察点序号

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

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

      Returns Promise<number>

      加载完成的 Promise 参数同 callback

    • 计算三维坐标对应到屏幕的二维坐标

      Parameters

      • vector: Vector3

        三维坐标

      • testModel: boolean = false

        是否计算模型遮挡

      Returns Vector2

      二维坐标 或者 null

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

    • 当前页面静态

      Parameters

      • args: { tile?: boolean } = {}

      Returns Promise<void>

    • 设置显示区域尺寸

      Parameters

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

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

      • OptionalpixelRatio: number

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

      Returns void

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

    • 解除绑定的一个额外 DOM 区域

      Parameters

      • element: HTMLElement

      Returns void

    • 强制渲染

      Parameters

      • Optionalcallback: () => void

        渲染完成回调

      Returns void

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

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

      Returns void

    • Returns Promise<void>

    • Returns Promise<void>

    • Parameters

      Returns void

      use setViewport instead.

    • 设置 State

      Parameters

      • state: Partial<State>

        目标状态

      • immediately: boolean = false

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

      • userAction: boolean = true

        是否是用户触发的动作

      Returns void

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

      Parameters

      • viewport: Viewport

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

      Returns void

      five.setViewport({ left: 0.75, bottom: 0, width: 0.25, height: 1 })
      
    • 移动相机。(不触发点位移动)

      Parameters

      • pose: Partial<Pose>

        相机目标位置

      • duration: number

        动画触发的时常

      • userAction: boolean = true

        是否用户触发

      Returns Promise<void>

      Promise 是否移动成功

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

    • 通过帧动画移动相机。(不触发点位移动)

      Parameters

      • keyframes: { key?: string; progress: number; value: Pose }[]

        动画帧

      • duration: number

        动画触发的时常

      • userAction: boolean = true

        是否用户触发

      Returns Promise<void>

      Promise 是否移动成功

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

    • Parameters

      • args: Pick<
            FiveInitArgs,
            | "panorama"
            | "model"
            | "floorplan"
            | "topview"
            | "mapview"
            | "vrPanorama"
            | "imageOptions"
            | "textureOptions",
        >
      • refresh: boolean = true

      Returns void

    • Parameters

      • time: number
      • deltaTime: number
      • ...args: any[]

      Returns void

    • 等待事件

      Type Parameters

      • K extends
            | "dispose"
            | "error"
            | "render"
            | "gesture.pan"
            | "gesture.tap"
            | "gesture.dbltap"
            | "gesture.press"
            | "gesture.pinch"
            | "gesture.mousewheel"
            | "gesture.mousemove"
            | "gesture.momentum"
            | "initAnimation.start"
            | "initAnimation.end"
            | "camera.update"
            | "intersect.update"
            | "pano.select"
            | "pano.request"
            | "pano.moveTo"
            | "pano.moving"
            | "pano.arrived"
            | "pano.cancel"
            | "pano.error"
            | "pano.texture.load"
            | "pano.texture.progress"
            | "pano.texture.success"
            | "pano.texture.error"
            | "pano.texture.abort"
            | "xr.session.end"
            | "xr.session.start"
            | "xr.gesture.tap"
            | "xr.gesture.press"
            | "xr.gesture.buttonUp"
            | "xr.gesture.buttonDown"
            | "xr.controller.update"
            | (keyof LegacyEventType)
            | "works.request"
            | "works.load"
            | "works.ready"
            | "state.set"
            | "state.change"
            | "state.synced"
            | "currentState.change"
            | "model.request"
            | "model.load"
            | "model.error"
            | "model.changeShownFloor"
            | "models.load"
            | "models.refined"
            | "render.prepare"
            | "mode.change.request"
            | "mode.change"
            | "helpers.visible"
            | "network.resource"
            | "fps"

        预设的监听事件名称

      Parameters

      • name: K

        事件类型

      • Optionalfilter: (...args: Parameters<EventTypes[K]>) => boolean | void

        事件类型

      Returns Promise<Parameters<EventTypes[K]>>

      触发事件的数据