私が達成したいこと:カメラの位置に球体を取り付け(デバイスが移動しても常に画面の中心に留まるように)、他の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
}
次のステップでは、ヒットテストまたはレイキャストを実行します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 の画像マーカーの上にコンテンツを追加したいので、基本的なシーンを作成しました。Xcode で .rcproject を使用すると、オーバーレイされたすべての衝突プロパティも有効になります。アイテム。