Don*_*Lee 4 augmented-reality ios swift arkit realitykit
我正在尝试了解和使用ARKit。但是有一件事我无法完全理解。
苹果关于ARAnchor说:
现实世界中的位置和方向,可用于在AR场景中放置对象。
但这还不够。所以我的问题是:
ARAnchor什么? ARAnchor的特征点只是一部分? 只是说 ARAnchor是一个看不见的空对象,可以在世界空间中保存3D内容(在锚点位置)。可以将ARAnchor其视为3D对象的局部轴。每个3D对象都有一个枢轴点,对不对?因此,此枢轴点必须满足ARAnchor。
如 Apple文档所述:
ARAnchor是现实世界中的位置和方向,可用于在AR Scene中放置对象。在会话中添加锚点有助于ARKit优化该锚点周围区域的世界跟踪准确性,从而使虚拟对象看起来相对于真实世界保持原位。如果虚拟对象移动,请从旧位置移除相应的锚,然后在新位置添加一个。
ARAnchor是ARKit框架中存在的所有其他类型锚的父类,因此所有这些子类均继承自ARAnchor该类。
这是带有平面锚的可视表示的图像。但请记住:默认情况下,您看不到检测到的飞机或其ARPlaneAnchor。
在ARKit 3.0中,您可以ARAnchors使用不同的场景添加到场景中:
ARPlaneAnchor
planeDetection实例属性为ON,则ARKit可以将ARPlaneAnchors添加到会话中。ARImageAnchor
detectionImages实例属性。在ARKit 2.0中,您最多可以跟踪多达25张图像,在ARKit 3.0中,分别最多可以跟踪100张图像。但是,在两种情况下,最多只能同时显示4张图像。ARBodyAnchor
ARBodyTrackingConfiguration()。您将在Root Joint3D Skeleton中获得ARBodyAnchor 。ARFace锚
ARObjectAnchor
AREnvironmentProbeAnchor
ARParticipantAnchor
true为isCollaborationEnabled实例属性和Multipeer Connectivity框架使用值。还有其他常规方法可以在AR会话中创建锚点:
命中测试法
射线投射法
特征点
ARCamera的转型
任何世界立场
下面是代码片段,如何在renderer方法内实现锚点:
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
guard let planeAnchor = anchor as? ARPlaneAnchor else { return }
let grid = Grid(anchor: planeAnchor)
node.addChildNode(grid)
}
Run Code Online (Sandbox Code Playgroud)
自2019年RealityKit发布以来,您可以使用其新类
AnchorEntity。使用AnchorEntity类作为实体层次结构的根点,并将其添加到Scene实例的anchors集合中。这使ARKit可以将锚实体及其所有层次后代放置到现实世界中。
AnchorEntity 内部存储三个组件:
为了找出两者之间的区别
ARAnchor,AnchorEntity请看这篇文章。
| 归档时间: |
|
| 查看次数: |
949 次 |
| 最近记录: |