Simple Ray-Casting
, как и Hit-Testing
, помогает найти трехмерное положение на реальной поверхности, проецируя воображаемый луч из точки экрана на обнаруженную плоскость. В документации Apple (2019) есть следующее определение ray-casting:
Приведение лучей - предпочтительный метод для поиска позиций на поверхностях в реальной среде, но функции проверки попадания остаются в наличии для совместимости. Используя отслеживаемую трансляцию лучей, ARKit и RealityKit продолжают улучшать результаты, чтобы повысить точность позиционирования виртуального контента, который вы размещаете с помощью лучевой трансляции.
Когда пользователь хочет поместить виртуальный контент на обнаруженную поверхность, неплохо иметь подсказку для этого. Многие приложения AR рисуют фокусный круг или квадрат, которые дают пользователю визуальное подтверждение формы и выравнивания поверхностей, о которых известно ARKit. Итак, чтобы узнать, где разместить круг фокусировки или квадрат в реальном мире, вы можете использовать ARRaycastQuery
, чтобы спросить ARKit, где какие-либо поверхности существуют в реальном мире.
Вот пример, где вы могли увидеть, как реализовать методы преобразования лучей makeRaycastQuery()
и raycast()
:
import UIKit
import RealityKit
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
let model = try! Entity.loadModel(named: "usdzModel")
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.raycasting()
}
fileprivate func raycasting() {
guard let query = arView.makeRaycastQuery(from: arView.center,
allowing: .estimatedPlane,
alignment: .horizontal)
else { return }
guard let result = arView.session.raycast(query).first
else { return }
let raycastAnchor = AnchorEntity(raycastResult: result)
raycastAnchor.addChild(model)
arView.scene.anchors.append(raycastAnchor)
}
}
Если вы хотите узнать, как использовать Convex-Ray-Casting
в RealityKit, прочтите ЭТО ЗАПИСЬ.
Если вы хотите узнать, как использовать Hit-Testing
в RealityKit, прочтите ЭТО ЗАПИСЬ.
person
Andy Fedoroff
schedule
05.06.2019