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();
Five Vue Hooks: 使用 Five 的命令