import { Pose, PanoId, Pano } from "@realsee/five"; /** * Five 命令集合 */ interface FiveActionVueCallbacks { /** * 移动相机。(不触发点位移动) * @description * 如果动画中途被打断(用户触发行为,或者调用 setState, load, changeMode)的等 * 会 Promise.reject。运动完成则 Promise.resolve * @param pose - 相机目标位置 * @param duration - 动画触发的时常 * @returns Promise 是否移动成功 */ updateCamera(pose: Pose, duration: number): Promise; /** * 获取画面中的像素颜色 * @param x - 获取像素区域的起始坐标 x * @param y - 获取像素区域的起始坐标 y * @param width - 获取像素区域的宽度 * @param height - 获取像素区域的高度 * @param pixelRatio - 获取区域的像素比 * @param flipY - 是否Y轴翻转 * @param buffer - 存储数组 * @returns rgba颜色平铺的 Uint8Array */ getPixels(x: number, y: number, width: number, height: number, pixelRatio?: number, flipY?: boolean, buffer?: T): T; /** * 获取画面中的像素颜色 * @param options - 参数 * @returns */ getPixels(options: { /** 获取像素区域的起始坐标 x */ x: number; /** 获取像素区域的起始坐标 y */ y: number; /** 获取像素区域的宽度 */ width: number; /** 获取像素区域的高度 */ height: number; /** 获取区域的像素比 */ pixelRatio?: number; helperVisible?: boolean; skipPanorama?: boolean; /** 是否Y轴翻转 */ flipY?: boolean; /** 存储数组 */ buffer?: T; }): T; /** * 强制渲染 * @description * 调用 `render()` 和 `needsRender()` 均可在按需渲染时,使得画面渲染一次 * 区别在于: * - `needsRender()` 为在下帧渲染画面 * - `render()` 在当前帧渲染画面 * 推荐使用 `needsRender()`, 可以更加流畅。但是如果需要截图等同步操作,可以使用 `render()` * * @param callback - 渲染完成回调 */ render(callback?: () => void): void; /** * 下一帧渲染 * @description * 调用 `render()` 和 `needsRender()` 均可在按需渲染时,使得画面渲染一次 * 区别在于: * - `needsRender()` 为在下帧渲染画面 * - `render()` 在当前帧渲染画面 * 推荐使用 `needsRender()`, 可以更加流畅。但是如果需要截图等同步操作,可以使用 `render()` */ needsRender(): void; /** * 预加载点位图片资源 * @param pano - 观察点 * @param callback - 加载完成回调, 并传递加载用时。 * @returns 加载完成的 Promise 参数同 callback */ preloadPano(pano: Pano | PanoId | number, callback?: (costs: number) => void): Promise; /** * 计算三维空间的点对应到屏幕的二维坐标 * @description * 调用 `project2d()` 和 `useFiveProject2d()` 均可用于计算三维空间的点对应到屏幕的二维坐标 * 区别在于: * - `project2d()` 只计算一次,入参改变或 cameraUpdate 时 不会更新值 * - `useFiveProject2d()` 通过 watch 监听入参和 cameraUpdate 变化,自动更新返回值 */ project2d(vector3: THREE.Vector3, testModel?: boolean | undefined): THREE.Vector2 | null; } /** * Five Vue Hooks: 使用 Five 的命令 * * @function updateCamera * ``` * 移动相机。(不触发点位移动) * 如果动画中途被打断(用户触发行为,或者调用 setState, load, changeMode)的等 * 会 Promise.reject。运动完成则 Promise.resolve * * // params pose - 相机目标位置 * // params duration - 动画触发的时常 * // params Promise - 是否移动成功 * updateCamera(pose: Pose, duration: number): Promise * ``` * * @function initBasisLoader * ``` * 初始化 initBasisLoader * 同初始化的 initBasisLoader 参数。用于初始化 basisLoader。 * basisLoader 只会初始化一次,一旦初始化则不会再修改。 * * // param transcoderResourcePath * // 如果不设置,使用默认解析器 basis 解析器。 * // 可以传入解析器的 `resourcePath`, 则使用指定的解析器 * initBasisLoader(transcoderResourcePath?: string): void, * ``` * * @function 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, * ``` * * @function render * ``` * 强制渲染 * 调用 render() 和 needsRender() 均可在按需渲染时,使得画面渲染一次 * 区别在于: * - needsRender() 为在下帧渲染画面 * - render() 在当前帧渲染画面 * 推荐使用 needsRender(), 可以更加流畅。但是如果需要截图等同步操作,可以使用 render() * * // param callback 渲染完成回调 * render(callback?: () => void): void, * ``` * * @function needsRender * ``` * 下一帧渲染 * 调用 render() 和 needsRender() 均可在按需渲染时,使得画面渲染一次 * 区别在于: * - needsRender() 为在下帧渲染画面 * - render() 在当前帧渲染画面 * 推荐使用 needsRender(), 可以更加流畅。但是如果需要截图等同步操作,可以使用 render() * needsRender(): void, * ``` * * @function preloadPano * ``` * 预加载点位图片资源 * // param panoId - 观察点 * // param callback - 加载完成回调, 并传递加载用时。 * // returns 加载完成的 Promise 参数同 callback * preloadPano(panoId: WorkPanoId, callback?: (costs: number) => void): Promise * ``` * * @function project2d * ``` * 计算三维空间的点对应到屏幕的二维坐标 * 调用 `project2d()` 和 `useFiveProject2d()` 均可用于计算三维空间的点对应到屏幕的二维坐标 * 区别在于: * - `project2d()` 只计算一次,入参改变或 cameraUpdate 时 不会更新值 * - `useFiveProject2d()` 通过 watch 监听入参和 cameraUpdate 变化,自动更新返回值 * project2d(vector3: THREE.Vector3, testModel?: boolean ): THREE.Vector2 * ``` * * @example * ``` * const { updateCamera, initBasisLoader, getPixels, render, needsRender, preloadPano, project2d } = useFiveAction(); * ``` */ declare function useFiveAction(): FiveActionVueCallbacks; export { useFiveAction, FiveActionVueCallbacks };