Проблемы с RealityKit и ARKit
Я хочу создать демонстрационное приложение в ARKit, и у меня есть несколько вопросов о том, что в настоящее время возможно с бета-версией (Apple называет этот RealityKit или ARKit 3.0).
Демо-приложение, которое я пытаюсь создать, должно сделать следующее:
идентифицировать объект или изображение в реальной среде и создать там привязку
сделать виртуальную модель привязанной к якору
иметь виртуальную модель с окклюзией
заставить виртуальную модель двигаться вместе с привязанным изображением / объектом
Я пытался адаптировать некоторый код из более ранних версий (ARKit 2.0, который использует SceneKit), но некоторые функции, такие как окклюзия людей, не являются частью ARKit 2.0.
Поскольку Apple итеративно работает над своей бета-версией, многие функции, рекламируемые на их сайте и на WWDC 2019, по-видимому, исчезли из документации для RealityKit (окклюзия людей, отслеживание тела, отслеживание мира).
Насколько я понимаю, пункты (1) и (2) возможны с ARKit 2.0. Пункт (3) рекламируется как можно скорее с бета-версией, но я не вижу почти никакой документации.
Возможно ли это сделать в последней бете? Если да, то какой подход лучше? Если нет, есть ли обходные пути, такие как смешивание старого и нового API или что-то еще?
1 ответ
Все проблемы, которые вы упомянули здесь, возможны в ARKit
/ RealityKit
пара
Но давайте на первом месте.
- Определите объект или изображение в реальной среде и создайте там якорь.
Вы можете определить 3D objects
или же Images
используя следующие конфиги в ARKit:
let configuration = ARWorldTrackingConfiguration()
guard let obj = ARReferenceObject.referenceObjects(inGroupNamed: "Resources",
bundle: nil)
else {
return
}
configuration.detectionObjects = obj // Allows you create ARObjectAnchor
sceneView.session.run(configuration)
а также:
let config = ARWorldTrackingConfiguration()
guard let img = ARReferenceImage.referenceImages(inGroupNamed: "Resources",
bundle: nil)
else {
return
}
config.detectionImages = img // Allows you create ARImageAnchor
config.maximumNumberOfTrackedImages = 3
sceneView.session.run(config)
- Визуализируйте виртуальную модель, прикрепленную к якору.
На данный момент у ARKit есть четыре компаньона, которые помогают вам рендерить 2D и 3D графику:
- RealityKit (3D-движок)
- SceneKit (3D-движок)
- Металл (3D двигатель)
- SpriteKit (2D движок)
- Имейте виртуальную модель, представленную с окклюзией.
В модуле RealityKit все материалы являются структурами, которые соответствуют протоколу материалов. На данный момент существует 3 вида (структуры) материалов:
- OcclusionMaterial (невидимый материал, который скрывает объекты, отображаемые за ним)
- SimpleMaterial (основной материал, который можно применять к сеткам)
- UnlitMaterial (простой материал, который не реагирует на свет в сцене)
Посмотрите на ЭТОТ ПОСТ, чтобы узнать, как программно назначать материалы в RealityKit.
- Пусть виртуальная модель движется вместе с привязанным изображением / объектом.
Четвертый пункт также возможен.
PS Пожалуйста, примите во внимание: если вы хотите выполнить этот план, используя ARKit 3.0
/ RealityKit
фреймворки вам нужны Xcode 11, macOS 10.15 и iOS 13.