Reality Composer - Можно ли одновременно назначать вертикальные и горизонтальные привязки?

Недавно я узнал о RealityKit и наткнулся на Reality Composer. Однако кажется, что в приложении пользователь может иметь только один якорь за раз.

Мне было интересно, возможно ли вообще иметь в сцене два якоря, вертикальный и горизонтальный. Я пытаюсь обнаружить пол и стены, которые могут взаимодействовать с физическими телами и которые необходимы для правильной работы игры.

Мне не нужно знать положения или что-то еще о вертикальных якорях, мне просто нужно, чтобы они имели физические тела.

Допускает ли Reality Composer более одного якоря в сцене? Я знаю, что RealityKit позволяет это, но не знаю, могут ли сцены, созданные в Reality Composer.


person AlexH    schedule 21.11.2019    source источник


Ответы (1)


Reality Composer v1.5 в настоящее время не может позволить вам одновременно использовать два разных типа якорей. Вот пять типов якорей, которые вы можете использовать в RC (и только один якорь на одну сцену):

  • По горизонтали (а-ля ARPlaneAnchor)
  • Вертикальный (а-ля ARPlaneAnchor)
  • Изображение (а-ля ARImageAnchor)
  • Лицо (а-ля ARFaceAnchor)
  • Объект (а-ля ARObjectAnchor)

Но вы можете использовать два разных типа якорей одновременно в RealityKit.

В RealityKit есть три типа выравнивания:

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

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

Структура Alignment соответствует протоколу OptionSet, поэтому вы можете использовать 2 типа одновременно:

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)

Вы можете прочитать эту историю, чтобы узнать, как это выглядит в реальном коде.

person Andy Fedoroff    schedule 22.11.2019