Reality Composer – 是否可以同时分配垂直和水平锚点?

Reality Composer – Is it possible to assign vertical and horizontal anchors simultaneously?

最近在学习RealityKit,接触到了Reality Composer。但是,在应用程序中,用户似乎一次只能拥有一个锚点。

我想知道是否可以在一个场景中有两个锚点,一个垂直的和一个水平的。我正在尝试检测可以与物理实体交互的地板和墙壁,并且需要两者才能使游戏正常运行。

我不需要知道垂直锚点的位置或任何信息,我只需要它们有物理体。

Reality Composer 是否允许在一个场景中使用多个锚点?我知道 RealityKit 允许这样做,但我不知道在 Reality Composer 中创建的场景是否可以。

Reality Composer v1.5 目前无法同时使用两种不同类型的锚点。以下是您可以在 RC 中使用的五种类型的锚点(每个场景只能使用一个锚点):

  • 水平(ARPlaneAnchor)
  • 垂直(类似于 ARPlaneAnchor)
  • 图片(ARImageAnchor)
  • 人脸(ARFaceAnchor)
  • 对象(ARObjectAnchor)

但是在RealityKit中你可以同时使用两种不同类型的Anchor

在 RealityKit 中有三种对齐方式:

AnchoringComponent.Target.Alignment.horizontal
AnchoringComponent.Target.Alignment.vertical

/* Entity can be anchored to surfaces of Any alignment */
AnchoringComponent.Target.Alignment.any       

An Alignment struct conforms to OptionSet protocol, so you can use 2 types simultaneously:

let anchor = AnchorEntity(plane: [.horizontal, .vertical],
                  minimumBounds: [0.2, 0.2])

或者您可以通过 AnchoringComponent:

进行设置
anchor.anchoring = AnchoringComponent(.plane(.any, 
                             classification: .any, 
                              minimumBounds: [0.1, 0.1]))

或者您可以使用 reanchor() 实例方法:

let houseScene = try! Experience.loadHouseScene()

houseScene.reanchor(.plane(.any, classification: .any, 
                                  minimumBounds: [0.1, 0.1]), 
                       preservingWorldTransform: false)

您可以阅读 this story 以了解它在实际代码中的样子。