AR Voyage

AR Voyage: Lightship体験は、没入型AR体験のハンズオンであり、NianticのLightship AR 開発者キット(ARDK)を使用して作成することができます。現在このアプリは、 AndroidiOS で利用できます。また、ARDKの機能や、実装方法を理解するためのUnityパッケージとして提供されています。AR VoyageのUnityプロジェクトは、 Lightship開発者ポータル からダウンロードできます。

Voyageを開く

  1. まだダウンロードしていない場合は、 ARDKをダウンロード し、 APIキーを生成 します。

  2. Lightship開発者ポータル からAR Voyageプロジェクトをダウンロードします。

  3. tarファイルを解凍して ARVoyage フォルダを作成し、 ARVoyage を配置したい場所にそのフォルダを配置します。

  4. Unity Hubでプロジェクトを読み込みます。

    1. Projects(プロジェクト) セクションで、Open(開く) ボタンの隣にあるドロップダウンをクリックし、Add project from disk(ディスクからプロジェクトを追加する) を選択します。

    2. ARVoyage フォルダを選択します。

    3. Editor Version(エディターバージョン) を2020.3.33f1に設定します。

  5. ARVoyageを選択してUnityエディターでプロジェクトを開き、Open(開く) をクリックします。

    1. Safe Mode(セーフモード)またはIgnore(無視)の入力を求めるメッセージが表示された場合は、Ignore(無視) を選択してください。

    2. ARDKパッケージ をプロジェクトに追加します。

    3. File(ファイル) メニューから Build Settings(ビルド設定) を開き、プラットフォームでiOSまたはAndroidを選択します(Androidでは、Gradleのアップグレードが必要になる場合があります。詳細は、 OpenCL準拠のAndroid APIレベル31を対象としたビルド を参照してください)。

    4. Unityを再起動します。

シーン

アプリには8つのシーンがあります:

  • Splash :スプラッシュ画像を表示します

  • Loading : ARDK機能のロードとデバイス権限のリクエストを処理します。

  • Homeland :3Dメインメニュー。4つあるデモレベルからどれをプレイするかを選択します

  • SnowballToss詳細 ):メッシングとオクルージョンを実演するARDKデモ

  • Walkabout詳細 ):移動可能なゲームボード(実験的機能)を実演するARDKデモ

  • SnowballFight詳細 ):同じ場所にいる最大4人でプレイできるマルチプレイヤーセッションを実演するARDKデモ

  • BuildAShip詳細 ): カメラフィードからピクセルをカテゴリーに分類する機能、セマンティック セグメンテーションを実演するARDKデモ

  • VPS詳細 ): ARDKのVPS(ビジュアルポジショニングシステム)を使って、現実世界の場所にバーチャルコンテンツを配置し、インタラクトする方法を示します。

シーンの管理と整理

SceneStatesAndUI

デモのシーンのフローは StateInstructionsStateScanEnvironmentStatePlayGameStateGameOver といった各種ステートに考慮されます。実行時には、一度に1つのステートgameObjectしか有効になりません。

あるステートのUI要素はステートフローと密接に結びついているため、ステートとそのUIはルートgameObject SceneStatesAndUI の子として一緒に織り込まれます。その上位の階層は SafeAreaFitterLayoutScale 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 スクリプトによって管理され、テスト用のプレイヤーセーブデータを構成できるようにします。