NyARToolkit for Unityの導入
NYARtoolkitとは
ARToolkitをベースに開発された拡張現実ライブラリが**NyARToolkit**です. ゲーム開発環境である**Unity**で利用可能な**NyARToolkit for Unity**の導入方法を紹介します. ここでは,**Unity**のバージョンは**5.3.5**,**NyARToolkit for Unity** **のバージョンは**5.0.8**を対象とします. また,NyARToolkitのライセンスは**LGPLv3**となっています(商用ライセンスもあるようです). このライセンスは,「著作権の表示」を条件に,商用利用や配布が認められています(詳細はWikipediaを参照).
プロジェクトの作成
Unityで新しいプロジェクトを作成します. ここでは,プロジェクト名を「ARPictureBook」としています. また,ゲーム環境は「3D」を選択しておきます.
次に,「NyARToolkit for Unity」のパッケージをインストールします. パッケージは下記URLからダウンロードできます.
https://github.com/nyatla/NyARToolkitUnity/releases
ツールバーから[Assets]-[Import package]-[Custom package]をクリックして, ダウンロードしたパッケージを選択します. ファイルの読込み後に,ダイアログが表示されたら, 全てのファイルにチェックを入れた状態でimportをクリックしましょう.
ファイルの取り込みが終わると,プロジェクトのAssetsには6つのフォルダが展開されます. Assetとは,ゲームを構成する最小の構成単位のことです. 例えば,シーン,キャラクター,画像ファイル,音楽ファイルなどもAssetです. ここでは,sampleフォルダに含まれるSimpleLiteを試しに実行してみましょう.
SimpleLiteを実行する前に下記の準備が必要です. ウェブカメラは標準的なモノであれば問題ないと思われます. また,マーカーはパッケージに付属しているMarkerHiro.pngを利用しますが, NyARToolkit用のマーカーは,tarotaroorg氏が公開している オンラインのツールを利用して,自由に作成することも可能です.
- ウェブカメラ(CMS-V30SETBKを使用)
- マーカーが印刷された紙(resourceフォルダに含まれるMarkerHiro.pngを印刷します)
準備が整ったら,画面上部にある再生ボタンをクリックします. すると,ゲーム画面にカメラ映像が映し出されます. このカメラにマーカーを印刷した紙を映すと,マーカー上に赤色の立方体(Cube)表示されることを確認してください. これが,拡張現実と呼ばれる技術です.
フォルダのコピー
Assetsフォルダに新規フォルダを作成し,SimpleLiteのフォルダに含まれる2つのファイルをコピーします(ARCameraBehaviorはC#のスクリプト,simpleLiteはシーンと呼ばれるファイルです). ここでは,C#スクリプトをARPictureCamera,シーンをARPictureSceneにファイル名を変更しておきます. 次に,ARPictureSceneをダブルクリックし,HierarchyのCameraをクリックします. シーンに関連付けられたコンポーネントが表示されているので, ARCameraBehaviorを削除(Remove Component)します. さらに,Add Componentをクリックし,コピーしたARPictureCameraを選択しておきます. これで,ARPictureCameraに記述したスクリプトが,ARPictureSceneに関連付けられます.
しかし,このままではARPictureCameraがエラーとなり実行できません. これは,変更したファイル名とスクリプトのクラス名が一致しないことが原因です. そこで,ARPictureCameraのソースコードを表示し, クラス宣言部にあるクラス名を,ARCameraBehaviorからARPictureCameraに修正し,エラーを取り除きましょう. 最後に,再生ボタンをクリックして,SimpleLiteと同様の実行結果になることを確認してください.
public class ARPictureCamera: MonoBehaviour
NyIDマーカー
NyARToolkitでは,JPGやPNGなどの一般的な画像以外にも,**NyIDマーカー**と呼ばれるマーカーを利用することができます. NyIDマーカーはMODEL2とMODEL3の2種類有りますが,ここではMODEL2の1番のマーカーを利用してみます.
ARPictureCameraをクリックして,ソースコードを表示します. デフォルトでは,Resroucesフォルダに含まれる"MarkerHiro.png"を,検出するマーカーとして設定しています. ソースコードを確認すると,**addARMaker()**メソッドの引数として"MarkerHiro"が設定されていることが分かります.
mid=this._ms.addARMarker((Texture2D)(Resources.Load("MarkerHiro", typeof(Texture2D))),16,25,80);
そこで,上記のコードをコメントアウトし,下記のコードに置き換えます. NyIDマーカーを利用するには,addNyIdMarker()メソッドを利用して, 引数にマーカーの番号と,マーカーの物理サイズをmm単位で指定します. ここでは,マーカーの番号は1,マーカーの物理サイズは**80[mm]**としています. 再生ボタンをクリックして,SimpleLiteと同様の実行結果になることを確認してください.
mid = this._ms.addNyIdMarker(1, 80);
球体(Sphere)オブジェクトの表示
デフォルトでは,マーカーが検出されると**赤色の立方体(Cube)**が表示されます. これを,**青色の球体(Sphere)**に変更してみましょう. Hierarchyで,[Create]-[3D Object]-[Sphere]を選択すると,新しいSphereオブジェクトが作成されます. このSphereオブジェクトをドラッグして,MarkerObjectの直下に配置します. このとき,デフォルトで設定されている,Cubeオブジェクトは削除しておきます. 再生ボタンをクリックすると,球体がマーカー上に表示されることを確認してください.
次に,球体に色や質感を与えてみましょう. Assetsフォルダで,[Create]-[Material]を選択し,新規にマテリアルを作成します. このマテリアルの名前をBlueに変更しておきます. また,InspectorからAlbedoを選択し,マテリアルの色を青系に変えましょう(Albedoは太陽光を反射する割合のことだそうです).
次に,SphereオブジェクトのMaterialsをクリックして,作成したBlueを選択しておきます. 再生ボタンをクリックすると,青色の球体がマーカー上に表示されることを確認してください.
UnityにNyARToolkitを導入する方法の説明は以上です. 次回はテクスチャを利用した画像の表示や,3Dオブジェクトの表示に挑戦してみます.