Unityとmetaioを使ってARアプリを作成し、iOS用にエクスポートしてxcodeでビルドするという作業がかなり色々な手順を踏む必要があったので書いていきます。
metaioを使ってiOSのARアプリを作るだけならUnityを使う必要はありませんが、Unityで制作することによって後々Androidでも書き出せるという利点があるので今回はUnityを使いました。
今回製作した環境は以下になります。
Unityを使用したOS | wiondows8.1 |
Unity | 4.5.4f1 |
metaio | 5.5 |
Xcode | 5.1.1 |
Unity+metaio制作準備
まずUnityでmetaioを使う準備を行います。
metaioの公式ページからmetaioSDKをダウンロードします。ダウンロードすると、SDKのインストールを求められるので、そのままインストールします。Unityでmetaioを使うときは、UnityのAssetsからImport PackageのCustom Packageを選択し、metaioSDKに入っている_UnityのmetaioSDK.unitypackageを選択し全てインポートします。
ここで問題があり、Macを使用しているとDLLを保存する際ちゃんとした場所に保存されないので、ただインストールした後にUnityにパッケージを入れただけだとエラーが出て動きません。今回はwindows環境で行ったので、普通にSDKをインストールするだけですみました。
また、metaioをOpenGLで動いているので、UnityをOpenGLモードで起動させなければなりません。windowsの場合、
1 |
"C:\Program Files (x86)\Unity\Editor\Unity.exe" -force-opengl |
とコマンドプロンプトから入力することで、OpenGLモードで起動することができます。
次に、metaioを使用するためには、Signatureを登録しないと行けません。登録するために必要な情報は、App nameとApp Identifierです。UnityのBuild SettingsからPlayer Settingsを選択し、Product NameとBundle Identifierを設定します。
設定した後、metaioの公式のデベロッパーページでアカウント登録し、ログインします。
ログイン後、My AppsでApp NameとApp Identifierを登録します。App NameにProduct Nameを、App IdentifierにBundle Identifierを入力し、Register your Appを押すと、Signatureが発行されます。Signatureは下のテーブルに表示されるので、自分のmetaioのバージョンにあったものを使用します。
Unityに反映させるためには、Unityのプロジェクトにある、Assets>metaio>Prefabs>metaioSDKのInspectorにあるSDK Signatureに入力することで、やっとmetaioをUnity上で使用できるようになります。
マーカーの作成
metaioでマーカーを作成するためには、metaio Creatorを使用する必要が有ります。metaio Creatorも公式ページからダウンロードできます。
マーカーの作成は、metaio Creatorを起動し、下にある+が書いてあるTrackablesを選択すると、マーカーのタイプを選択する項目がでてきます。基本的にはImage Trackingを使用すると思います。
Image Trackingを選択し、OKを押すとマーカーとして設定する画像を指定するウィンドウが出てくるので、画像を選択して開きます。ちなみに無料版は一つのTrackingファイルで2つのマーカーをセットする事ができます。選択した画像の下にある☆の数は評価数を示していて、☆の数が多ければマーカーとして認識しやすいです。
Unityで使用するマーカーとして書き出すためには、ExportからExport tracking configuration fileを選択することでzip形式で書き出されます。Unityではこのzipファイルを解凍せずそのまま使用します。
書きだされたzipファイルはUnityのAssetsのStreamingAssetsに格納します。StreamingAssetsではなく、Assets直下などでもUnity上では動作しますが、iOSなどに書きだした際には読み込まないので注意が必要です。
Unityでコンテンツを作成する
やっとUnity上でコンテンツを作成していきます。
まず、sceneを作成した時に作成されているmain Cameraは使用しないので削除します。次に、Signatureを設定したmetaioSDKをHierarchyかゲーム上に配置し、同じ階層にあるmetaio Trackerも一緒に配置します。この時、metaio TrackerはmetaioSDKの子要素として追加します。
そしてmetaioSDKにマーカーを登録していきます。一度に登録できるTrackingファイルは1つのみなので、sceneなどを切り替えずにたくさんのマーカーを使用したい場合は有償版を使う必要があります。マーカーの設定方法は、HierarchyのmetaioSDKを選択し、Tracking configurationをStreamingAssets…に変更します。そして、Select soucreにTrackingファイルであるzipファイルをドラッグしてあげれば、マーカーの登録は完了します。
表示させるためのコンテンツは、ゲーム上に配置したmetaio Trackerの子要素として追加してあげれば、マーカーを認識した時に表示されるようになります。ここで気をつけるのは、表示されるモデルはかなり拡大しないととても小さく表示されてしまうので、試しにプリミティブなキューブなどを表示させる場合は注意が必要です。
Xcodeでビルドする
Unityで作成したものをXcode用にビルドする方法はここでは割愛します。
metaioをUnityで使用し、XcodeでビルドするためにはXcode上で設定を追加してあげる必要があります。やることとしては、クラスファイルの追加と追加したファイルのビルド設定、Frameworkの追加とプロジェクトの設定になります。
まず、metaioを使うために必要なクラスファイルを追加していきます。クラスファイルはSDKをダウンロードした際に作成されたファイルの、_iOS/Examples_SDK/Template/Template/ClassesにあるEAGLView.h、EAGLView.mm、MetaioSDKViewController.h、MetaioSDKViewController.mmの4つのファイルをプロジェクトに追加します。そして、これらのファイルはXcodeの機能であるARCを使わないため、ARCを使わないように設定しなければなりません。設定方法は、Build PhasesのCompile Sourcesの中にあるEAGLView.mmとMetaioSDKViewController.mmに-fno-objc-arc追加します。これでこれら4つのファイルの設定は終了です。
次に、足りないFrameworkを追加していきます。
まずはmetaioSDK.frameworkが入っていないので、Link Binary With LibrariesからダウンロードしたmetaioSDKファイルからmetaioSDK.frameworkを選択します。しかし、これだけでは足りないので、Unityから書きだした際に生成されたファイルのLibrariesファイルの中にあるmetaiosdkファイルもインポートする必要があります。
またUnityが書きだしたFrameworkも幾つか足りていないのでそれもインポートします。metaioを使う際に必須になるFrameworkはいくつか有り、環境によって変わってくる可能性もあるので、必要なFrameworkを以下に書き出しました。そして、今回インポートされていなかったファイルは太字で示してあります。
- ・QuartzCore.framework
- ・CFNetwork.framework
- ・AudioToolbox.framework
- ・OpenGLES.framework
- ・AVFoundation.framework
- ・CoreMedia.framework
- ・CoreLocation.framework
- ・CoreMotion.framework
- ・CoreVideo.framework
- ・Security.framework
- ・libz.dylib
- ・libxml2.dylib
- ・CoreImage.framework
CoreImageはmetaioでは必要無いようですが今回製作したものは無いとリンクエラーになってしまいました。
最後に、プロジェクトの設定を行います。
プロジェクトの設定はBuild Settingで以下の項目を設定します。
- ・Valid Architecturesからarm64を削除
- ・Apple LLVM 5.1 – lamguage – C++のC++ Language DialectをC++98[-std=c++98]に変更
- ・Apple LLVM 5.1 – lamguage – C++のC++ Standard Libraryをlibstdc++ (GNU C++ standard library)に変更
これでプログラムを動かせるようになります。
Unityを使ってARを作るにはVuforiaを使う手段もあり、簡単なものを作るにはVuforiaが楽ですが、拡張性を考えるとmetaioが使えるようになって損は無いと思います。設定項目は色々ありますが、覚えてしまえばそんなに苦ではなかったのでmetaioも気軽に使えると思います。
では、また