Unityやってるワン

Unityでのゲーム開発を備忘録として記事にしていきます

UnityでARゲーム開発

UnityでARが簡単に導入できるようなので実際にモバイル実機上で動かしてみました。
f:id:nsdeveloperman:20200614085643p:plain


ARのモバイルアプリを開発する際はiOSではARKit、AndroidではARCoreというARプラグインをそれぞれ導入して開発する必要があるみたいです。
ですが、最近ではUnityのパッケージにそれぞれ対応してくれるARFoundationというものがあります。
Unity の AR Foundation フレームワーク | クロスプラットフォーム対応の拡張現実(AR)開発ソフトウェア | Unity


ARFoundationで実装すれば、OSごとに処理を分ける必要もないので便利ですね。
ただし、ARKitとARCoreの全ての機能が使えるわけではないようなので注意が必要です。
平面の検知やマーカー検知くらいであれば、ARFoundationで両OSに対応可能でした。


今回はモバイル実機で平面検知を行ってみようと思います。
それではUnityでの導入手順を順に説明します。


1:Unityの3Dプロジェクトを作成
2:エディタ上部メニューのWindowからPackageManagerを開く
3:PackageManagerからARCoreXRPluginとARKitXRPluginをインストール
4:PackageManagerからARFoundationをインストール(ARSubSystemなどAR開発に必要なパッケージも自動でインストールされます)
f:id:nsdeveloperman:20200614082920p:plain
5:シーンを作成してCameraオブジェクトを削除
6:エディタ上部メニューのGameObjectにXRの項目が追加されているので、ARSessionとARSessionOriginをそれぞれシーンに配置
f:id:nsdeveloperman:20200614083010p:plain
7:ARSessionOriginを選択してInspectorのAddCompornentからARPlaneManagerとARRayCastManagerをアタッチ
8:エディタ上部メニューのGameObjectのXRからARDefaultPlaneを選択してシーンに作成
9:作成したARDefaultPlaneをProjectウィンドウにドラッグ&ドロップしてPrefab化する
10:Prefab化したARDefaultPlaneをARPlaneManagerのPlanePrefabにセットする(検知した平面を可視化します)
f:id:nsdeveloperman:20200614083027p:plain


これでAR平面検知を行うためのシーンのセットアップは完了です。
あとはビルドすればモバイル実機で確認できるのですが、ビルド前にiOS/Androidでそれぞれ設定が必要です。


AndroidでのPlayerSettings設定
GraphicsAPIのAutoGraphicsAPIにチェックを入れる
MinimumAPILevelをAndroid7.0Nougatにする


iOSでのPlayerSettings設定
CameraUsageDescriptionに端末のカメラ使用を許可を求める文言を入力
(とりあえず動かしたい場合はなんでもいいみたいです)
ArchitectureをARM64に設定
Target minimum iOS Versionを11.0にする


これでUnityエディタ上での必要な設定は完了しました。
あとはビルドすればモバイル実機上で平面検知が確認ができます。
平面検知の精度は端末のスペックによって差が出る(?)ようですが、少ない手順で簡単にARが実装できるのはありがたいですね。