十四、<ARKit> ARHitTestResult
2017-07-04 本文已影响117人
Dosun
本文译自官方文档 ARHitTestResult
,不足之处,请纠正。
ARHitTestResult:点击回调结果,这个类主要用于虚拟增强现实技术(AR技术)中现实世界与3D场景中虚拟物体的交互。 比如我们在相机中移动。拖拽3D虚拟物体,都可以通过这个类来获取ARKit所捕捉的结果。
在设备的相机视图 AR 会话中,可以通过检测点得到真实世界表面的信息。
一、简介
如果你使用 SceneKit 或 SpriteKit 展示 AR时,你可以使用下面的一个方法,在摄像机视图中指定一个点坐标,去搜索摄像机图像真实的内容。
-
ARSCNView
hitTest:types:
-
ARSKView
hitTest:types:
或者,你可以使用 ARFrame
hitTest:types:
搜索摄像机图像真实的内容。因为 ARFrame 是一个独立的视图,对于这个方法,你可以传入一个特定的点在标准图片中,该图片的左上角坐标是(0,0),而其右下角是(1,1)。上面方法的返回值都是 ARHitTestResult 数组。
二、API
1. 标识结果
-
type
捕捉类型 -
ARHitTestResultType
捕捉类型 点还是面
//捕捉类型枚举
typedef NS_OPTIONS(NSUInteger, ARHitTestResultType) {
/** 点.没有相配对的锚点 */
ARHitTestResultTypeFeaturePoint = (1 << 0),
/** 水平面 y为0.没有相配对的锚点,而且其方向与重力方向垂直,意思是 x/z 形成的平面 */
ARHitTestResultTypeEstimatedHorizontalPlane = (1 << 1),
/** 已存在的平面锚点,但是平面没有 size. */
ARHitTestResultTypeExistingPlane = (1 << 3),
/** 已存在的锚点和平面 size. */
ARHitTestResultTypeExistingPlaneUsingExtent = (1 << 4),
} NS_SWIFT_NAME(ARHitTestResult.ResultType);
-
anchor
锚点(3D虚拟物体,在虚拟世界有一个位置,这个位置参数是 SceneKit 中的 SCNVector3 :三维矢量),而锚点 anchor 是这个物体在AR现实场景中的位置,是一个4x4的矩阵。
2、检查地理结果
-
distance
3D虚拟物体与相机的距离(单位:米) -
worldTransform
侦测表面上的位置和方向与世界坐标相关(世界坐标指的是相机为场景原点的坐标)。 -
localTransform
本地坐标矩阵(世界坐标指的是相机为场景原点的坐标,而每一个3D物体自身有一个场景,本地坐标就是相对于这个场景的坐标)类似于 frame 和bounds 的区别