本文译自官方文档 ARFrame
,不足之处,请纠正。
视频图像和位置的追踪是 AR 会话的部分。
一、简介
运行 AR 会话从设备相机中持续捕捉视频的帧。每一帧的图片,ARKit 会将硬件设备的动作监听数据和图像一起进行分析,从而计算出设备在真实世界的位置。ARKit 将传递跟踪信息和成像参数的形成 ARFrame 对象。
二、API
1. 得到视频帧
-
capturedImage
缓冲区图像帧 -
timestamp
时间戳。视频帧被捕捉的时间。
2. 检查场景的参数
-
camera
相机的做位置、方向和相片的参数去捕捉视频帧。 -
lightEstimate
灯光自适应 -
- displayTransformWithViewportSize:orientation:
?????相机窗口的的坐标变换(可用于相机横竖屏的旋转适配)
Returns an affine transform for converting between normalized image coordinates and a coordinate space appropriate for rendering the camera image onscreen.
3. 跟踪和发现对象
-
anchors
返回当前相机捕捉到的锚点数据(当一个 3D 虚拟模型加入到 ARKit 中时,锚点值得就是这个模型在 AR 中的位置) -
- hitTest:types:
根据2D坐标点搜索3D模型,这个方法通常用于,当我们在手机屏幕点击某一个点的时候,可以捕捉到这一个点所在的3D模型的位置,至于为什么是一个数组非常好理解。手机屏幕一个是长方形,这是一个二维空间。而相机捕捉到的是一个由这个二维空间射出去的长方体,我们点击屏幕一个点可以理解为在这个长方体的边缘射出一条线,这一条线上可能会有多个3D物体模型
point:2D坐标点(手机屏幕某一点)
ARHitTestResultType:捕捉类型 点还是面
(NSArray<ARHitTestResult *> *):追踪结果数组
4. 调试场景侦测
-
rawFeaturePoints
特征点(应该是捕捉平地或者人脸的,比较苹果有自带的人脸识别功能) -
ARPointCloud
ARPointCloud:点状渲染云,主要用于渲染场景
@interface ARPointCloud : NSObject <NSCopying>
/**
点的数量
*/
@property (nonatomic, readonly) NSUInteger count;
/**
每一个点的位置的集合(结构体带*表示的是结构体数组)
*/
@property (nonatomic, readonly) const vector_float3 *points;
@end
网友评论