おもちゃラボ

Unityで遊びを作ってます

【AR Foundation】ぬいぐるみをマーカーにしてARを作る

ARKit2.0からは2次元の画像マーカーだけでなく、3次元の物体(例えばぬいぐるみとか、玩具とか)をマーカーに出来るようになりました。ただ、物体マーカーは2次元マーカーのように動かしてもARモデルは追従しないので注意が必要です。

f:id:nn_hokuson:20190625191641j:plain

物体をマーカーにする流れ

  1. マーカーにしたい物体を360度撮影して、物体のもつ特徴点データを抽出
  2. 作成した特徴点データをReferenceObjectLibraryに登録
  3. ReferenceObjectLibraryとARで表示したいモデルをARTrackedObjectManagerに登録

f:id:nn_hokuson:20201111131955p:plain:w650

このように書くと、多少複雑そうに見えますが、やっていることは画像マーカーを使用したときと同じことをしています。

nn-hokuson.hatenablog.com

一点違うのが❶の特徴点データを検出する部分です。ここはプログラマが手作業でやる必要があります。まずはその方法から見ていきましょう。

特徴点データを抽出する

3Dの特徴点データを取り出すには専用のアプリが用意されています。といっても、自分でビルドする必要があります(笑)

まずは次のサイトからARKit Scannerのプロジェクトをダウンロードしてください。

developer.apple.com

ダウンロードできたらビルドして、アプリを起動します。起動したらまずはマーカーにしたい物体を囲むように黄色い枠を広げます。枠のサイズはドラッグやピンチで変更できます。

f:id:nn_hokuson:20190616222022j:plain:w250

次に物体を360度(といっても底面はありませんが)から撮影します。うまく撮影できると、画面上のScanのパーセンテージが上昇し、ボックスの表面が黄色く変化します。

f:id:nn_hokuson:20190616222122j:plain:w250 f:id:nn_hokuson:20190616222416j:plain:w250

すべての面が撮影できたら「Share」ボタンを押して、特徴点データをPCに転送します(転送にはAirDropが便利!)。ファイル名は「Scan-xxxx.arobject」みたいになっていると思います。

f:id:nn_hokuson:20190616222529j:plain:w250

ここでは名前をyadon.arobjectに変更しておきました。

Unityプロジェクトの作成と下準備

次にUnityでの作業に移ります。AR Foundationを使ったプロジェクトの作り方と、その準備についてはこちらの記事に詳しく説明しています。

nn-hokuson.hatenablog.com

ここでは、ヒエラルキーウインドウにAR SessionとAR Session Originオブジェクトを配置し終えたところからスタートします。

f:id:nn_hokuson:20201112202225p:plain

特徴点データを読み込む

AR Foundationのセットアップができたら、先程転送した特徴点データをプロジェクトウィンドウにドラッグ&ドロップして追加しておきます。

f:id:nn_hokuson:20201112202235p:plain

ARマーカーのライブラリを作成する

AR Foundationで物体マーカーを使ったARを作る場合、まずはARマーカーのライブラリを作成します。ライブラリを作成するにはプロジェクトウィンドウで右クリック→Create→XR→Reference Object Libraryを選択してください。

f:id:nn_hokuson:20201112202305p:plain:w400

次に、作成したObject Libraryに先程の特徴点データを登録します。作成したReference Object Libraryを選択して、インスペクタから「Add Object」のボタンをクリックします。

f:id:nn_hokuson:20201112202257p:plain

新しくARの物体マーカーを登録する画面が表示されるので、先程の特徴点ファイルをドラッグ&ドロップします。また、Name欄には任意の名前を入力しておきます。

f:id:nn_hokuson:20201112202317p:plain

AR Tracked Object Managerの設定

ARマーカーライブラリの作成ができたので、次はこのライブラリをTracked Object Managerに登録します。Tracked Object Managerでは

  • ARマーカーライブラリの登録
  • ARマーカーが検出されたときに表示するARモデルの登録

を行います。

まずはヒエラルキーウインドウでAR Session Originを選択して、インスペクタのAdd Componentから「AR Tracked Object Manager」をアタッチします。

f:id:nn_hokuson:20201112202338p:plain

次にSerialized Libraryの欄に、作成したReferenceObjectLibraryをドラッグ&ドロップします。Tracked Object PrefabにARマーカーが検出されたときに表示するARモデルを設定します。

f:id:nn_hokuson:20201112202352p:plain

これでAR Tracked Object Managerの設定は終わりです。最後にAR Foundationの各種設定を次の記事を参考にして行い、実行してみてください。

nn-hokuson.hatenablog.com

物体ARマーカーの上に指定したARモデルが表示されれば成功です!

まとめ

この記事では、AR Foundationを使って物体をARマーカーにする方法を紹介しました。AR Foundationではマーカーを使ったARの他にも色々と面白い機能がありますので、こちらも今後、紹介していきたいと思います。