私は Swift を初めて使用します。アプリ インターフェイス用の RealityKit と、これらのビュー コントローラーの 1 つにラップされた SwiftUI 構造体を使用して AR アプリをプログラミングしているので、カスタム AR インターフェイスを作成できます。(それが適切な方法かどうかはわかりませんが、前述したように、独学で今までなんとかできていました)。
とにかく、目的は、ユーザーが指定した緯度と経度に従って AR オブジェクトを配置することです (まだその部分は行っていませんが、手動の値でテストしています)。それを達成するための良いアプローチは、ARGeoTrackingConfiguration()
(から私が読んだもの)しかし、私のデバイス(iPhone 7)にはA12 Bionicチップがないため、使用できないため、で実装しようとしていますARWorldTrackingConfiguration()
が、これまでのところ、 self.raycast(...).first?.worldTransform.translation で画面上のタッチの位置を取得しようとすると、「内部」保護レベルが原因で「翻訳」にアクセスできません。
extension ARView {
@objc func handleTap(_ sender: UITapGestureRecognizer? = nil) {
guard let touchInView = sender?.location(in: self) else {
print("Failed on touch")
return
}
let results = self.raycast(from: touchInView,
allowing: .estimatedPlane,
alignment: .horizontal)
print(results)
if let firstResult = results.first {
let anchor = ARGeoAnchor(name: "pinus_pinaster.usdz",
coordinate: firstResult.worldTransform.translation)
self.session.add(anchor: anchor)
} else {
print("Object placement failed - coudn't find surface")
}
}
}
この問題を解決する方法についての説明はありますか (例がいいでしょう)?
また、ARKit 開発に関する一般的なアドバイスはありますか? ARGeoTrackingConfiguration() を使用せずに、これらの機能を備えたアプリを実装することは可能でしょうか?