Function useFiveAction

  • Five Vue Hooks: 使用 Five 的命令

    Returns FiveActionVueCallbacks

    updateCamera

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

    // params pose - 相机目标位置
    // params duration - 动画触发的时常
    // params Promise - 是否移动成功
    updateCamera(pose: Pose, duration: number): Promise<void>

    initBasisLoader

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

    // param transcoderResourcePath
    // 如果不设置,使用默认解析器 basis 解析器。
    // 可以传入解析器的 `resourcePath`, 则使用指定的解析器
    initBasisLoader(transcoderResourcePath?: string): void,

    getPixels

    获取画面中的像素颜色
    // param x - 获取像素区域的起始坐标 x
    // param y - 获取像素区域的起始坐标 y
    // param width - 获取像素区域的宽度
    // param height - 获取像素区域的高度
    // param pixelRatio - 获取区域的像素比
    // returns rgba颜色平铺的 Uint8Array
    getPixels(x: number, y: number, width: number, height: number, pixelRatio?: number): Uint8Array,

    render

    强制渲染
    调用 render() needsRender() 均可在按需渲染时使得画面渲染一次
    区别在于
    - needsRender() 为在下帧渲染画面
    - render() 在当前帧渲染画面
    推荐使用 needsRender(), 可以更加流畅但是如果需要截图等同步操作可以使用 render()

    // param callback 渲染完成回调
    render(callback?: () => void): void,

    needsRender

    下一帧渲染
    调用 render() needsRender() 均可在按需渲染时使得画面渲染一次
    区别在于
    - needsRender() 为在下帧渲染画面
    - render() 在当前帧渲染画面
    推荐使用 needsRender(), 可以更加流畅但是如果需要截图等同步操作可以使用 render()
    needsRender(): void,

    preloadPano

    预加载点位图片资源
    // param panoId - 观察点
    // param callback - 加载完成回调, 并传递加载用时。
    // returns 加载完成的 Promise 参数同 callback
    preloadPano(panoId: WorkPanoId, callback?: (costs: number) => void): Promise<number>

    project2d

    计算三维空间的点对应到屏幕的二维坐标
    调用 `project2d()` `useFiveProject2d()` 均可用于计算三维空间的点对应到屏幕的二维坐标
    区别在于
    - `project2d()` 只计算一次入参改变或 cameraUpdate 不会更新值
    - `useFiveProject2d()` 通过 watch 监听入参和 cameraUpdate 变化自动更新返回值
    project2d(vector3: THREE.Vector3, testModel?: boolean ): THREE.Vector2
    const { updateCamera, initBasisLoader, getPixels, render, needsRender, preloadPano, project2d } = useFiveAction();