AR Voyage
AR Voyage: Lightship体験は、没入型AR体験のハンズオンであり、NianticのLightship AR 開発者キット(ARDK)を使用して作成することができます。現在このアプリは、 Android や iOS で利用できます。また、ARDKの機能や、実装方法を理解するためのUnityパッケージとして提供されています。AR VoyageのUnityプロジェクトは、 Lightship開発者ポータル からダウンロードできます。
Voyageを開く
まだダウンロードしていない場合は、 ARDKをダウンロード し、 APIキーを生成 します。
Lightship開発者ポータル からAR Voyageプロジェクトをダウンロードします。
tarファイルを解凍して ARVoyage フォルダを作成し、 ARVoyage を配置したい場所にそのフォルダを配置します。
Unity Hubでプロジェクトを読み込みます。
Projects(プロジェクト) セクションで、Open(開く) ボタンの隣にあるドロップダウンをクリックし、Add project from disk(ディスクからプロジェクトを追加する) を選択します。
ARVoyage フォルダを選択します。
Editor Version(エディターバージョン) を2020.3.33f1に設定します。
ARVoyageを選択してUnityエディターでプロジェクトを開き、Open(開く) をクリックします。
Safe Mode(セーフモード)またはIgnore(無視)の入力を求めるメッセージが表示された場合は、Ignore(無視) を選択してください。
ARDKパッケージ をプロジェクトに追加します。
File(ファイル) メニューから Build Settings(ビルド設定) を開き、プラットフォームでiOSまたはAndroidを選択します(Androidでは、Gradleのアップグレードが必要になる場合があります。詳細は、 OpenCL準拠のAndroid APIレベル31を対象としたビルド を参照してください)。
Unityを再起動します。
シーン
アプリには8つのシーンがあります:
Splash
:スプラッシュ画像を表示しますLoading
: ARDK機能のロードとデバイス権限のリクエストを処理します。Homeland
:3Dメインメニュー。4つあるデモレベルからどれをプレイするかを選択しますSnowballToss
( 詳細 ):メッシングとオクルージョンを実演するARDKデモWalkabout
( 詳細 ):移動可能なゲームボード(実験的機能)を実演するARDKデモSnowballFight
( 詳細 ):同じ場所にいる最大4人でプレイできるマルチプレイヤーセッションを実演するARDKデモBuildAShip
( 詳細 ): カメラフィードからピクセルをカテゴリーに分類する機能、セマンティック セグメンテーションを実演するARDKデモVPS
( 詳細 ): ARDKのVPS(ビジュアルポジショニングシステム)を使って、現実世界の場所にバーチャルコンテンツを配置し、インタラクトする方法を示します。
シーンの管理と整理
SceneStatesAndUI
デモのシーンのフローは StateInstructions
、 StateScanEnvironment
、 StatePlayGame
、 StateGameOver
といった各種ステートに考慮されます。実行時には、一度に1つのステートgameObjectしか有効になりません。
あるステートのUI要素はステートフローと密接に結びついているため、ステートとそのUIはルートgameObject SceneStatesAndUI
の子として一緒に織り込まれます。その上位の階層は SafeAreaFitter
と LayoutScale
gameObjectsから始まり、これらはアプリが対応するアスペクト比内にステートのすべてのUIを配置します。
ステート
各ステートに含まれるインスペクターセットメンバーの変数:
このステートのUI gameObjectsへのポインター
次のステートへのポインター
各ステートに含まれるメソッド:
Awake
- 通常、gameObjectを非アクティブにします(唯一の例外はStateInstructionsのようにデモの最初になるよう意図されているステート)。これにより、1度に1つのステートだけがアクティブになります。OnEnable
- ステートがアクティブになった時に実行されます。イベントをサブスクライブし、ステートのUI gameObjectsを起動およびフェードインさせ、必要なメソッドの呼び出しをSceneManager、ARDKコンポーネント、シーンヘルパー(メッシング、スキャン、ゲームボード作成といったAR機能のオン/オフなど)に対して行います。Update
- 多くの場合、ステートの終了条件(スキャンが完了した、ゲーム時間のカウントダウンが0になったなど)についてポーリングを行い、条件が満たされるとExitを呼び出します。Exit
- ステートのUIをフェードアウトさせ、SceneManager、ARDKコンポーネント、必要に応じてAR機能をオフにするヘルパーに対してメソッド呼び出しを行い、デモの次のステートでgameObjectをアクティブにし、それ自体のステートのgameObjectを非アクティブにします。OnDisable
- アクティブだったステートが非アクティブになると実行されます。すべてのイベントのサブスクライブを解除します。
SceneManager
各シーンでは、SceneManagerは <SceneName> マネージャーと名づけられます。定数、gameObjects、デモステート、デモ内の様々なステートが使用するシーン特有のヘルパーメソッドが含まれます。内容例:
デモ内のオブジェクトとNPC
メッシング、深度、ゲームボード、セマンティック セグメンテーションなどのARDK機能
配置ボタン、カメラレティクルなどのインタラクションメカニクス
SceneEvents
UIイベントおよびその他のシーンイベントを収めるコンテナ。
ARDKManagers
デモのシーン、 ここに記録 で使用されるARDK機能:
ARSceneManager
ARMeshManager
ARPlaneManager
ARDepthManager
ARSemanticSegmentationManager
ARNetworkingSceneManager
ICoverageClient
WayspotAnchorService
ヘルパー
デモは様々なヘルパークラスを活用します:
SceneDebugManager
- 各デモシーンにある名前つきの <SceneName>DebugManager。デモのデバッグメニュー用にカスタマイズされていますARMeshFloorFallback
- ARDKメッシュ内で判明している最低高度地点の高さに大きな「フォールバック」フロアプレーンを配置しますARPlaneFloorFallback
- 判明している最低高度の水平ARPlaneの高さに大きな「フォールバック」フロアプレーンを配置しますARPlaneHelper
- セッション内のARPlanesコレクションへのアクセスおよび利用を可能にしますARFeaturePointHelper
- 粒子をアニメーションさせてAR特徴点を視覚化しますRenderPipelineHelper
- レンダースケールを含む様々なレンダリング機能用のヘルパーLightEstimationHelper
- ARDKのライティング推定に基づいてシーンのライティングを変化させるヘルパークラス。
SceneSupport
シーンは以下のような追加サポートクラスを活用します:
LevelSwitcher
- シーン/デモ(レベル)間の移行用Fader
- UIおよび3Dオブジェクトのフェードイン/アウト/アップ/ダウンと全画面フェードの実行用AudioManager
- 音楽と効果音用ErrorManager
- エラーUIとバナーの表示用
EditorOnly
ARDKアプリケーションをエディターで開発する際、デバイスへのビルドが常に求められることを避けるには、環境のモックメッシュ、モックフロアプレーン、モックプレイヤーといったARアセットのモックバージョンを使用すると便利です。各シーンのモックオブジェクトはシーンのMockScene GameObjectにアタッチされます。このオブジェクトにはMockSceneConfigurationコンポーネントがあり、 EditorOnly
のタグが付けられ、Unityエディター外ではこれによってそのオブジェクトは自己破壊されます。
レンダーパイプライン
『AR Voyage』はUnityのUniversal Render Pipeline(URP)を使用します。レンダリング設定は ARVoyageUrpAssetRenderer
で構成されます。
ホームランドシーン
ホームランドシーンはアプリケーションのナビゲーションを管理します。Niantic のマスコットであるイエティのCaptain Dotyが登場し、『AR Voyage』の旅に出ます。対応するウェイポイントをタップすることで各レベルにアクセスできます。ウェイポイントをタップするとCaptain Dotyが経路に沿って歩き、UIが表示されます。
レベルを完了すると、マップ画面でプレイヤーにバッジが与えられます。BuildAShipバッジを獲得すると、Niantic のエアシップが発射台に準備されます。すべてのバッジを集めるとCaptain Dotyがエアシップに乗り込んで飛び立ちます。
ビューポート左上の World Map(ワールドマップ) ボタンをクリックすると、プレイヤーは、VPS体験を開始できます。
ビューポート右上の Info(情報) ボタンをクリックすると、Nianticポリシーリンクの閲覧や、進行状況のリセット、個人情報管理に使用できるApp IDの確認を行うことができます。
Unityエディターツールバー
アプリケーションには便利な2つのカスタムUnityエディターツールバー項目が含まれます。
Scenes
ツールバーは EditorSceneMenu
スクリプトによって管理され、プロジェクトのすべてのシーンのロードを円滑にします。
SaveUtil
ツールバーは EditorSaveUtil
スクリプトによって管理され、テスト用のプレイヤーセーブデータを構成できるようにします。