Чего я хочу добиться: прикрепить сферу к положению камеры (чтобы она всегда оставалась в центре экрана при перемещении устройства) и определять, когда она находится поверх других объектов AR - чтобы запускать другие действия / поведение на объектах AR.
Подход: я создал сферу и прикрепил ее к центру экрана, как показано ниже.
@IBOutlet var arView: ARView!
override func viewDidLoad() {
super.viewDidLoad()
let mesh = MeshResource.generateSphere(radius: 0.1)
let sphere = ModelEntity(mesh: mesh)
let anchor = AnchorEntity(.camera)
sphere.setParent(anchor)
arView.scene.addAnchor(anchor)
sphere.transform.translation.z = -0.75
}
Следующий шаг: проведите хит-тест или raycast in session(_:didUpdate:)
let results = arView.hitTest(CGPoint(x: 0.5, y: 0.5), query: .all, mask: .default)
//normalised center ; 2D position of the camera (our sphere) in the view’s coordinate system
Но благодаря такому подходу я постоянно получаю наземный самолет. Есть ли что-то, чего мне не хватает, или есть другой подход к достижению этого?
Примечание. На случай, если что-то не так, я создал свою базовую сцену, так как я хочу отслеживать изображение и добавлять контент поверх маркера изображения в Reality Composer, а использование .rcproject в Xcode также имеет включено свойство столкновения для всех наложенных элементов.
entity.generateCollisionShapes(recursive: true)
, а также включил Physics- ›Collision shape в Reality Composer. - person anahom   schedule 20.01.2021