2

私が達成したいこと:カメラの位置に球体を取り付け(デバイスが移動しても常に画面の中心に留まるように)、他の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 を使用すると、オーバーレイされたすべての衝突プロパティも有効になります。アイテム。

4

1 に答える 1