Unityを用いたARアプリは何度かVuforiaで作っていたので、どちらかというとVuforiaが好きなのですが、残念ながら現状のVuforiaではロケーションベースのARアプリが作成出来ないため、metaioというARライブラリを使用して、簡単なロケーションベースARアプリケーションを作成してみたいと思います。
ちなみに、実機デバッグはAndroidの筐体で行います。
環境
Mac OSX Mavericks
Unity v5.0.1
metaio v6.0.2
Android v4.4.2
metaioSDKの準備
まずはmetaioSDKの導入を行います。
上記URLにアクセスし、必要情報を入力後Submitを押すとダウンロードページに移動します。
Macユーザーの場合、ダウンロードしたdmgファイルを開き、ライセンスに同意します。
その後出現する上記ウィンドウ上のフォルダを自分のPC上のどこかにドラッグアンドドロップすればOKです。
Windowsユーザーの場合、インストーラーに従ってインストールを行えば、スタートメニューのプログラムリストに登録されるようです。
WindowsでのUnityの場合、修正しなければならない箇所が他にもあるようなので、詳しくは下記を参照してください。
Setting up the Development Environment | metaio Developer Portal
ARアプリケーション作成
新規プロジェクト作成
まずはUnityを開き、 【File -> New Project】 で適当な新規プロジェクトを作成します。
metaioSDKインポート
次に【Assets -> Import Package -> Custom Package】をクリックし、先ほど準備したmetaioSDKから、metaioSDK.unitypackageを選択します(Macの場合_Unityフォルダ下にあります)。
レイヤーの設定
metaioを正常に動作させるためには、パッケージのインポート後いくつかの設定が必要になります。
まずはレイヤーの設定を行います。
Unityのエディタ右上にあるLayersからEdit Layersを選択します。
User Layerの空いている一番若いLayerにmetaioLayerを新規で追加します。
署名の作成と設定
次にアプリケーションに署名を設定します。
Welcome to the metaio Developer Portal
新しく自分のアプリケーション用の署名を作る必要があるので、上記Developerサイトにアクセスし、ログインします。
アカウントがまだない場合は、サイト右上のSign upから新規アカウント作成後、ログインしてください。
ログイン後ページ上部のメニューからMy Appsに移動します。
My Appsページ下部のApp registrationで新規にアプリケーションの登録を行います。
App NameとApp Identifierに適当な名前を入れ、Register your Appを押し新規に登録します。
新しくアプリケーションが追加されました。
また、追加されたアプリケーション名を選択すると、
上記画像のように署名データが表示されます。
自分の使用するSDKのバージョンに対応したSignatureの値をコピーしておきます。
Unityエディタに戻り、デフォルトで設置されているMain Cameraを削除します。
その後プロジェクトビューから【Assets -> metaio -> Prefabs】内にあるmetaioSDKをHierarchyビューにドラッグアンドドロップします。
HierarchyビューのmetaioSDKを選択し、Inspectorビュー内SDK Signatureの欄に先ほどコピーした値をペーストします。
これで署名の設定は完了です。
トラッキング設定
また先程の署名設定と同様に、HierarchyビューのmetaioSDKを選択し、Tracking configurationのドロップダウンメニューからGPSを選択します。
トラッカー設置
【Assets -> metaio -> Prefabs】からmetaioTrackerをHierarchyビューにドラッグアンドドロップし、metaioSDKの子要素にします。
また、HierarchyビューのmetaioTrackerを選択してInspectorビューを表示し、Geo Locationの値の設定と、Transform cameraのチェックをオフおよびEnable LLA Limitsのチェックをオンにします。
metaio社がミュンヘンにあるということで、Geo Locationの値はミュンヘンの座標にしてみました。
このGeo Locationの値なのですが、それぞれX, Yという変数名がつけられていたため、X=経度でY=緯度だと勝手に勘違いしていました。正しくは、XY=緯度経度で問題ないようです。気付かず試行していたため、正しい位置で表示してくれなくて焦りました。
3Dモデル設置
最後に、3DモデルをmetaioTrackerの子要素として設定すれば完了です。
モデルは何でも構わないのですが、こういう時には定番ということでunity-chanにご登場願いました。面倒な方はCubeやSphere等で全く問題ありません。
上記から、いつも通りUnity-chan公式からモデルを含む.unitypackageをダウンロードします。
規約同意後、3Dモデルデータをダウンロード。
【Assets -> Import Package -> Custom Package】から、先ほど入手したunity-chanのパッケージをインポートします。
とりあえずモデルだけ使用できれば良いので、他のチェックは消してインポート(Voiceファイルとか多すぎて容量大きい……)。
インポート後【UnityChan -> Models -> unitychan】をHierarchyビューにドラッグアンドドロップし、metaioTrackerの子要素にします。
また、恐らくですが、デフォルトのサイズでは小さすぎてモデルが見えないので、unitychanのScaleをXYZそれぞれ100に設定します。
ビルド! そして ラン!
ここまで来たらあとは実行するのみです。
まず現在のシーンを適当な名前で保存します。
次に【File -> Build Settings】を選択し、Add Currentで保存したシーンを追加します。
また、PlatformはAndroidを選択します(UnityでのAndroidのビルドに関しては適宜検索してください)。
その後Build And Runを選択します。
Buildが完了し次第、実機のAndroidでアプリの実行が開始されます。
起動後、実機を手にミュンヘンの方向を向いてみると……
無事unity-chanが表示されました!
総括
ロケーションベースのARは難しい印象があったのですが、metaioならとても簡単に実装することが出来ました。 Vuforiaと同じく、iOSやAndroidそしてUnityといった各種プラットフォームがサポートされている点も魅力的かと思います。
屋内の開けた場所であれば、精度もそこまで悪くないようですので、色々と遊んでみると楽しいかもしれません。