XRFrame
从 基础库 1.12.0 开始支持
平面模式的帧对象。调用 XRSession#getFrame 返回。
通过该对象你可以获取到当前帧的视图变换矩阵,点云,环境光强度等信息。
代码示例
1 | function update() { |
getViewMatrix()
获取当前帧三维相机(三维渲染中的相机概念,非手机上的物理相机)的视图变换矩阵,在需要绘制人脸画面上绘制三维模型的时候会有用。一般和 getProjectionMatrix 一起使用
返回一个 4x4 长度的 Float32Array。你可以将该矩阵数据应用到像 THREE.js 这样的 3D 库的相机对象中。
THREE.js 的代码示例:
1 | // 获得视图变换矩阵 |
getProjectionMatrix()
获取当前帧三维相机(三维渲染中的相机概念,非手机上的物理相机)的投影变换矩阵。
返回一个 4x4 长度的 Float32Array。你可以将该矩阵数据应用到像 THREE.js 这样的 3D 库的相机对象中。
getLightEstimate()
获取当前帧检测到的环境光色调和环境光强度。可以将这个值应用到游戏引擎的环境光实例中,使得三维渲染的虚拟场景的整体光照跟现实场景更加符合。
返回对象的参数:
参数 | 类型 | 描述 |
---|---|---|
ambientColor | Float32Array | 环境光色调的 RGB 值,每一个通道取值范围是 0 - 1 |
ambientIntensity | number | 环境光的强度,取值 0 - 1 |
使用示例:
1 | // 创建 THREE.js 环境光实例 |
getPointCloud()
获取从当前帧检测到的画面中特征点的点云数据。可以将这些特征点在画面中表现出来,可视化的给用户实时的检测反馈。
返回对象的参数:
参数 | 类型 | 描述 |
---|---|---|
points | Float32Array | 包含点云中所有点(x, y, z)坐标的数组 |
使用示例:
1 | // 使用 THREE.js 的点云 |
hitTest()
传入屏幕坐标,求交得到屏幕坐标对应的空间中的三维坐标。
参数值:
参数 | 类型 | 默认值 | 是否必填 | 描述 |
---|---|---|---|---|
x | number | 是 | 屏幕的 x 坐标,取值范围 0 - 1,0 为最左侧,1 为最右侧 | |
y | number | 是 | 屏幕的 y 坐标,取值范围 0 - 1,0 为最上侧,1 为最下侧 |
返回值:
返回所有交点的数组列表,数组中每一项包含了表示交点位置的poseMatrix
属性和距离的distance
属性,根据distance
从近到远排序。
其中每一项的属性:
参数 | 类型 | 描述 |
---|---|---|
poseMatrix | Float32Array | 交点的4x4变换矩阵 |
distance | number | 交点距离相机的距离 |
使用示例:
1 | let frame = xrSession.getFrame(); |