向AnchorEntity(.camera)
添加子对象时,看起来好像子对象在我的摄像头后面生成(意思是我只能在转过身的时候看到我的孩子)。我也试过直接给我的锚添加一个网格,但不幸的是ARKit / RealityKit不能在你在里面的时候渲染网格(因为它是以摄像头为中心的,理论上总是这样。然而,它也可能总是位于屏幕后面(用户所在的地方),而我永远看不到它)。
此外,奇怪的是,尽管将平移变换设置为(0,0,0),子实体也不随相机AnchorEntity移动。
我的两个问题是:
1..camera锚实际上是位于实体iPad /摄像头所在的位置,还是位于更靠后的位置(可能是用户通常持有iPad的位置)?
1.如何让AnchorEntity(.camera)的子实体随着iPad /相机在真实的空间中的移动而移动?
1条答案
按热度按时间nwsw7zdq1#
问题I.
.camera
锚实际上是位于实体iPad / iPhone摄像头所在的位置,还是位于更靠后的位置(可能是用户通常握持iPad / iPhone的位置)?第一个问题的答案
在RealityKit和ARKit框架中,ARCamera和其他实体(节点)一样有一个**
pivot point
,它位于透镜和相机机身的连接点(在卡口**水平)。这个枢轴可以连接AnchorEntity(.camera)
。换句话说,虚拟相机和现实世界相机的枢轴点大约在同一个地方。因此,如果将RealityKit的AnchorEntity附加到摄像机的枢轴上,则将其放置到摄像机卡口所在的坐标上,并且该AnchorEntity(.camera)将被自动跟踪,而无需实现
session(_:didUpdate:)
方法。但是,如果将ARKit的ARAnchor连接到摄像机的枢轴,则必须实现
session(_:didUpdate:)
方法,以便不断更新每个ARFrame的锚点位置和方向。**问题II.**如何让
AnchorEntity(.camera)
的子实体随着iPad /相机在真实的空间中的移动而移动?第二个问题的答案
如果要以
RealityKit
s为单位以60 fps的速度不断更新模型的位置(当ARCamera移动和旋转时),则需要使用以下方法:或者你可以在session(_:didUpdate:)委托方法中使用ARKit的
.currentFrame
示例属性: