ARKit基礎

今年こそARKitを使いこなしていきたいと思っているのですが、UIKitほどまだ仲良くなれていない感じがするので、今更ながらARKitの基本的な使い方や作法をまとめていきたいと思います。

平面検出して3Dオブジェクトを置く

ARKitの最もベーシックな機能の一つである平面検出。
ARKit登場後は、現実世界の平面に3Dオブジェクトを置くデモが多数投稿されましたね。

今回は、最低限のコードで平面検出 + 3Dオブジェクト配置を実装していきます。

  • ARSCNViewの設定(水平面を検出する設定)
  • 3Dオブジェクト取り込み用のメソッドの準備(今回はdaeファイル)
  • ARSCNViewDelegateのメソッドで3Dオブジェクトを配置

ARSCNViewの設定

3Dオブジェクト取り込み用のメソッド

dae形式のファイルを取り込み
こちらの3Dモデルを利用させていただきました。

Beer Bottle

ARSCNViewDelegateのメソッドで配置

平面を新たに検知した際に、呼ばれるrenderer(_:didAdd:for:)で、検知したNodeに3DオブジェクトのNodeを追加

結果

シャドーやライトを調整しないとあまりリアリティが出ないですね。
あと、特徴量の少ない真っ白な床とかは、うまく検出できません。
アプリ化する際には、インストラクションをうまく作らないとユーザにストレスを与えてしまいそうです。