
今回はNrealのサンプルで用意されているイメージトラッキングを拡張していきます.
実機が無いので相変わらずエミュレータで開発を行います…
準備
前回記事で使用したTrackingImageEmulatorをベースにオリジナルのマーカ,オブジェクトの追加を行っていきます.
まずは,TrackingImageEmulatorをコピーして新しいシーンを作成してください.僕はmyImageTrackingという名前で保存しました.何もいじってなければ以下のような構成になっています.
ここで重要になるのは以下の3つのオブジェクトです.
- NRTrackableImageTarget:マーカとなるオブジェクト.イメージトラッキングを行う本体
- TrackableFoundTest: 検出された画像と表示するCGオブジェクトを紐づけるオブジェクト.
- CubeCenter: 表示するCGオブジェクト
この3つのオブジェクトは常にセットとなり,表示するオブジェクトの数だけこのセットが必要になります.
マーカーの追加
1. イメージデータベースの作成
マーカーとして使用する画像は予め登録しておく必要があります.
まずはサンプルとして用意されているデータベースTrackingImageDatabaseを確認します.
このファイルはAssets>NRSDK>Demos>TrackingImage>Imagesの中にあります.

このデータベースの中にはあらかじめ3つの画像が登録されていますが,現在のVer.1.1.1ではすでに作成されたデータベースに新たにマーカーを追加することはできません.追加は出来ませんが,左端のX
を押すことで削除することはできます.
また,width=0.4という数字は現実空間のマーカーのサイズになります.つまり,実機で動かすときには40cmx40cmのマーカーを用意する必要があります.同様にして今回のようなエミュレータ上の実装でも,このサイズに合わせてマーカーオブジェクトを作成する必要があります.
まず初めにデータベースに任意のマーカーを追加するには,Imagesフォルダの中に新たにマーカーにしたい画像を追加してください.
その後,イメージデータベースに登録したい画像を選択
し,右クリック→Create→NRInternal→TrackingImageDatabaseを選択します.
このイメージデータベースの名前をmyTrackingImageDatabase
として保存しておきます.
2. Session Configに設定
今まで使用していたデータベースを新たに作成したデータベースに置き換えます.
Assets->NRSDKフォルダ内にあるNRKernalSessionConfigのTracking Image DatabaseをmyTrackingImageDatabaseに置き換えます.
これで新しいマーカの登録は完了です.
NRTrackableImageTarget内のNRTrackableImageBehaviourのImage Targetの項目を新たに追加したマーカに変更することで,新しく追加したマーカの上に白いキューブが表示されます.


CGモデルの変更
デフォルトではマーカの上に白いキューブが表示されますが,このままでは味気ないので表示する3Dモデルを変更します.
1. 3Dモデルの用意
白いキューブじゃなければ何でも良いんですが,3Dモデルを用意します.良く使うのはユニティちゃんあたりだと思いますが,今回は自分のお気に入りのSimplistic Low Poly Natureを使用しました.
2. シーンに追加
表示したい3Dオブジェクトをシーンに追加します.今回は蝶々のモデルButterflyを追加しました.
ついでに白いキューブ(CubeCenter)を非アクティブにしておきます.
3. TrackFoundTestを変更
マーカーとCGオブジェクトを結びつけるTrackableFoundTestを開き,ObjをButterflyに変更します.
これだけで,表示するオブジェクトを変えることが出来ます.

マーカオブジェクトの追加
冒頭の画像のように複数のマーカを認識させます.マーカを増やすには最初に説明した
NRTrackableImageTarget, TrackableFoundTest, 3Dモデルの3点セットを増やす必要があります.
1. NRTrackableImageTargetの追加・変更
Assets->NRSDK->Emulatr->PrefabsからNRTrackableImageTargetをNRTrackableImageTarget2としてシーンに追加します.この時,マテリアルが前からシーンにあるNRTrackableImageTargetと共通の場合,互いにマテリアルを変更し合ってしまうので適当なマテリアルに変更しておきます.また,ImageTargetをお好みのものに変更します.
2.TrackableFoundTestの追加
同様にしてTrackableFoundTestをコピーし,TrackableFoundTest2を作成します.TrackableFoundTest2内のObserverをNRTrackableImageTarget2に,Objをその上に追加したい3Dモデルに変更します.
シーン内は以下のような構成になっています.
これで同じシーン内に複数のマーカー,3Dモデルのセットを表示することが出来ました.
