
Team xRのホルヘです。
みなさんは、自分の部屋の壁に、お気に入りのアニメポスターを何枚貼れるか考えたことがありますか? 私はあります!
ですが、実際に試したことはありません…。Appleの「Room Plan」を使えば、その答えを知る事が出来るかもしれません!
取得できる情報や使用感を調査しましたので、その結果をご報告したいと思います。

どんな機能?
Room Planは、iPhoneやiPadのカメラとLiDARスキャナーを使用して部屋の3D見取り図を作成できるAPIです。部屋の中で認識された各オブジェクトの3DデータをUSDZファイル形式で保存できます。また、検出された家具もそれぞれで分ける事が可能です。(机や椅子、ベッドやソファー、バスタブや便器など)




実装検証
今回はUnityで実装、検証を行いたいので、Unity Assets Storeに存在する「Room Plan for Unity Kit」のAssetsを利用します。Room Plan API の機能を簡単に実装し、操作できるようにするAssetsです。

部屋をスキャンすることで自動でサイズ情報やカテゴリー判別が出来るようになりました!どの程度の精度で検出が出来ているかのレベルも取得でました。
スキャン結果を保存して閲覧できる機能を実装し、カテゴリー別で色分けや、詳細情報を表示するテキストエリアも実装してみました。



詳細情報などを利用して、アニメポスターを何枚貼れるか? の答えを見つけました!
答えは…約78枚でした。78枚も貼れる!でも、それほどのポスターを私は持っていませんw

追加実装
アプリを上司に見せたら追加の要望を貰いましたw
オブジェクトそれぞれの距離を取得したいとのことでした。(物を移動する時に特定の場所が通れるのか事前判断できれば便利かも! というアイデア)
ユーザーがオブジェクトをタップすると赤いマーカーが表示され、再び別のオブジェクトをタッチすると、2番目のオブジェクトに触れた位置への直線が表示されます。この方法で、より直線的な線を引くことができ、2つの異なるオブジェクトの最も近い距離を測定することができるようになりました。



問題や不具合について
大きな部屋をスキャンした場合、壁のサイズに5~10㎝ の誤差が生じることがあります。また、異なる部屋をスキャンしながらモデルを結合すると、同じドアが異なるサイズで2回追加されることもあります。(スキャンする際の方向などが影響しているようです)
別の点として、Room Planは「階段」がある場所を検出できますが、それに関する詳細な情報を取得することは出来ません。そのため、階段の情報を取得するには、別の手段を考える必要があります。
AR Kitから直接Mesh情報を取得して測定する機能を検討中ですが、それについては次回お話ししたいと思います。


システムフレンドはXRの技術を利用し、楽しい「体験」を実現するための開発を行っています。ご相談や事例の紹介など弊社のエンジニアがフレンドリーに対応させていただきます。 お気軽にお問い合わせください。