VPSリモートオーサリング (VPS Remote Authoring)

Lightshipユーザーの皆様、Unityで新機能であるVPSリモートオーサリングをお試しいただき、ありがとうございます。エディター内でWayspot Anchorsを作成してファイルやプロジェクトに保存し、自宅やオフィスにいながら、VPSのエンドツーエンド体験を簡単に作成できるようになりました。早速始めてみましょう。

注釈

この機能はパブリックベータ版であり、変更される可能性があります。さまざまなローンチタイプについては、Lightshipのローンチタイプ をご参照ください。

Geospatial Browserを使用する

ステップ1: オーサリングを行う場所を探す

Lightship.devには、Geospatial Browserと呼ばれる新しいツールが組み込まれています。このツールは、Niantic チームをはじめ、皆様のような世界の開発者によって取得され、Lightshipの他のコミュニティと公式に共有されたVPSのあらゆるデータを検出できるように設計されています。膨大なデータから必要なデータを絞り込むためにフィルター機能を使用することをお勧めします。Wayspotのタイプについては、以下の「Geospatial Browserのベストプラクティス」を参照してください。また、エディター内での使用に適したメッシュを探す前に、メッシュの切り替えが必要になる場合があります。推奨されるフィルター条件については、以下の「Geospatial Browserのベストプラクティス」をご参照ください。

Geospatial Browser Lightship.devで利用できる新しいGeospatial Browserです。 Lightshipのウェブサイトの左側のメインメニューに、Geospatial Browserのオプションがあります。コンテンツの検索を調整できるフィルターボタンとリストもあります。

ステップ2: ロケーションのZipファイルをダウンロードする

ビューポートの右下隅にある、メッシュの青いボタンをクリックすると、位置情報をロケーションのzipファイル形式でローカルの開発マシンにダウンロードすることができます。ロケーションのzipファイルを解凍する必要はありません。zip圧縮された状態のまま、次のステップに進んでください。

Geospatial Browser:ダウンロード

Remote Authoring Assistantを使用する

ステップ3: zipファイルをUnityのプロジェクトにドラッグする

リモートオーサリングのパッケージがプロジェクトにインストールされていれば、Geospatial BrowserからダウンロードしたロケーションのzipファイルはUnityプロジェクトに読み込まれます。

zipファイルはUnityのプロジェクトフォルダにドラッグするか、Lightship Remote Authoring Assistantを使用してインポートできます。ドラッグアンドドロップを使用すると、Remote Authoring Assistantによって、ロケーションパッケージがインポートされ、Remote Authoring Assistantシーンを起動するよう求められます。

ステップ3(代替オプション): Remote Authoring Assistantを起動し、ロケーションパッケージをインポートする

または、シーンを先に起動し(ARDK > Lightship > Remote Authoring Assistant > Open(開く))、RemoteAuthoringAssistantゲームオブジェクトを選択して、インスペクターウィンドウの Import New Location(新しいロケーションのインポート) のプロンプトに従って進めます。

ロケーションをインポートする

ロケーションのインポートが完了したら、RemoteAuthoringAssistantの Selected Location(ロケーションの選択) ドロップダウンメニューでそのロケーションを選択し、エディターでリモートオーサリングのシーンを探索できるようになりました。

注釈

重要: ロケーションは、Remote Authoring Assistantで使用されるエディター専用のシーンにインポートされます。このシーンの作業を行うには、RemoteAuthoringAssistantのUIを使用します。詳細は、次のステップを参照してください。また、エディターシーンのコンテンツは直接編集しないでください。アンカーコンテンツをプレイ可能なシーンにエクスポートする方法については、「Making a Build(ビルドの作成)」セクションをご参照ください。

ステップ4: デフォルトアンカーを移動させる

RemoteAuthoringAssistantゲームオブジェクトには、子オブジェクトが含まれます。デフォルトでは、「Default」という名前の移動可能な子オブジェクトが1つあります。これが最初の原点アンカーです。このアンカーは、自由に名前を変更したり移動したりできます。シーンビューでは、赤いプレースホルダーのGizmoでこのアンカーが示されており、位置関係を確認することができます。

メッシュの生成方法の関係上、デフォルトのアンカーが予期したよりもメッシュから離れたロケーションに表示されることがあるため、ゲームオブジェクトをシーンビューに移動させる必要が生じる場合があります。

デフォルトのアンカー

これらのアンカー地点のいずれかに配置されたコンテンツが表示される様子を確認するのに役立つ場合があります。これは想定していた仕様です! GameObjectプレハブをアンカーに関連付けるには、Anchorオブジェクトの AssociatedPrefabリストにGameObjectを追加します。これにより、オーサリングアシスタントでアンカーを移動させながら、アンカーに関連するゲームコンテンツを視覚化できるようになります。

移動させる際は、アンカーを保存することを忘れないでください!

注釈

上級ユーザーヒント: アンカーを保存すると、Wayspot Anchorのペイロードが生成され、アンカーコンポーネントのPayload (ペイロード)セクションに表示されます。Payload(ペイロード)セクションが Invalid(無効) になっている場合、シリアライズされたペイロード文字列を表示するには、ペイロードをSave(保存) する必要があります。

アンカーの変更アンカー上のプロパティが保存されていないことを確認する方法として、プロパティは、保存 するまで太字で表示される点に注意してください。

ステップ5: 新しいアンカーを作成する

ロケーションに複数のアンカーを定義する場合があります。この場合、RemoteAuthoringAssistantコンポーネントを使用して、Create New Anchor(アンカーの新規作成) をクリックします。アンカーはロケーションにいくつでも作成できます。

これらのゲームオブジェクトは、手動で作成しないでください。アンカーのゲームオブジェクトに対して、Unityの組み込み関数「Duplicate」を使用しないでください。アンカーコンテンツの作成や削除、保存を行うには、RemoteAuthoringAssistant UIを使用する必要があります。RemoteAuthoringAssistant UI を使用してコンテンツの作成、削除、保存を行うと、LocationManifestに変更内容が保存されます。

おめでとうございます! これで、アンカーが最初のロケーションにオーサリングされます。アンカーコンテンツは、ロケーションマニフェストに保存されます。ロケーションマニフェストは、zipファイルを最初にインポートした際に生成されたスクリプト可能なオブジェクトです。このマニフェストを使用して、JSONマニフェストを生成し、ARビルドに取り込むことができます。

注釈

高度なコンセプトに関する注意事項: VPSLocationManifestは、エディターでのみスクリプト可能なオブジェクトです。そのため、このファイルはエディターのコンテキスト以外で使用することはできません。このマニフェストをビルドやアセットバンドルに格納することはできないため、軽量データ構造でアンカーを格納するために、JSON TinyVPSLocationManifest(以下の「ベストプラクティス」を参照)にエクスポートする方法があります。ランタイムアプリケーションでは、TinyVPSLocationManifestを生成する必要があります。詳細は、以下の「ビルドの作成」に記載されているRemoteAuthoringサンプルシーンのLocationManifestManagerスクリプトをご参照ください。

ロケーションマニフェスト

ビルドの作成

ビルドでコンテンツを表示できるように、プロセスを簡略化しました。規模の大きなインフラでビルドを作成する場合に役立つヒントやコツもご紹介しています。また、RemoteAuthoringのサンプルシーンの使い方に関するヒントもご覧ください。

サンプルシーンは、RemoteAuthoringの下のARDKExamplesフォルダーにあります。このシーンでは、生成したロケーションマニフェストを実行時に簡単に組み込むことができます。

ステップ1: RemoteAuthoringのサンプルシーンを開き、「ManifestLoader」ゲームオブジェクトを探す

ここにあるLocationManifestManagerコンポーネントは、非常に使いやすく、素早く立ち上げられるように設計されています。独自のコンテンツを追加するには、コンポーネントの上部にあるドラッグアンドドロップボックスにマニフェストをドラッグします。

アンカーの追加

ロケーションは、LocationManifestのスクリプト可能なオブジェクトと、ロケーションマニフェストのJSONエクスポート機能のいずれの方法でも追加することができます。コンポーネントの下部にある Populate Anchors(アンカーの追加) ボタンをクリックします。ここから、アンカーにコンテンツを添付できます(まだ添付していない場合)。

ステップ2: マニフェストを選択し、アンカーを追加する

ロケーションマニフェストからアンカーを取り込むには、コンポーネントの下部にある Populate Anchors(アンカーの追加) ボタンを押します。アンカーに関連付けられたUnity GameObjectベースのコンテンツが Anchored Content(アンカーコンテンツ) リストに追加されます。アンカーの作成中に、Associate Prefab(プレハブの関連付け)オプションを使用した場合、Populate Content(コンテンツの追加) 切り替えをクリックすると、ゲームオブジェクトがリストに表示されます。RemoteAuthoringのサンプルを実行すると、ユーザーがLoad(読み込み)ボタンを押したときにコンテンツが読み込まれ、ユーザーが対応するロケーションにローカライズしたときに表示されるようになります。

ステップ3: プレイモードで実行する(モックを使用)

アプリケーションの開発中、事前にスマートフォンにビルドせずに、アプリケーションでコードが実行される様子を確認することができます。簡単に行うには、ロケーションマニフェストを使用して、エディターでテストするためのモックアセットを作成します。ロケーションマニフェストを検索し、作成(Create) ボタンをクリックします。これで、エディターでテストする際に使用するモックアセットが作成されます。

モックの作成 * Create(作成) ボタンを使用して、エディターでテストするためのモックを作成します*

これを使用するには、ARDKのVirtual Studio(ARDK > Lightship > Virtual Studio)に移動し、ドロップダウンで新しく作成したモックシーンを選択し、UnityエディターでPlay(プレイ)ボタンをクリックします。

ステップ4: ビルドを作成する

これで、Android または iOS デバイス上でAR体験のビルドを行うために必要なものがすべて揃いました。注意: ARDKv2.3では、アプリのターゲットレベルをAndroid 12(APIレベル31)以上にする必要があります。以下のステップに従って、任意のデバイスでビルドを作成してください。

Nianticのサービスをご利用いただき、ありがとうございます。皆様のご意見をお寄せください。このシステムの有用性についての皆様からのご意見をお待ちしています。また、本サービスについて何か要望等ございましたら、遠慮なくお知らせください。

Geospatial Browserのベストプラクティス

Wayspotの膨大なメッシュコレクションを使いこなすためのヒントをご紹介します。

VPSが作動したWayspotsの評価 - 品質がFair(普通)、Good(良好)

Nianticは、信頼性の高い結果を得られるようにWayspotsを評価しました。一部のWayspotsは、他のWayspotsと比較してローカライズの精度があまり高くありません。 Good Quality フィルターを使用して、VPSとロケーションの検出において最大限のパフォーマンスを発揮し、アプリを実地でテストしてください。デフォルトでは、Good QualityのWayspotsのみがGeospatial Browserに表示されます。

有効化されていないWayspots

Geospatial Browserには、システム内のすべてのWayspotが表示されますが、その多くはまだVPSが有効化されていません。今後VPSが利用できるようになるロケーションを確認できるように、Not Activated Wayspots(作動していないWayspot) を表示していますが、残念ながらこれらのロケーションで使用できるメッシュは用意されていません。有効化されていないWayspotがある場合は、フォーラムでお知らせください。VPSが有効なロケーションは、VPS Coverage APIで取り上げられるというメリットもあります。つまり、サムネイルやGPS座標を送信し、ターゲットまでのプレイヤーの距離などを追跡することで、プレイヤーをロケーションに誘導しやすくなります。VPSやリモートオーサリングを使用するには、VPSが有効なWayspotsを使用する必要があります。

何を見ているか認識できれば、よりより体験を構築できます

残念ながら、メッシュの中には、見ただけで簡単に判別できないものもあります。たとえば、短冊状の道路や、周囲の建物や配置のコンテキストがないランダムな茂みなどが挙げられます。ニーズに合っていないコンテンツはオーサリングせずに、この地点に興味を持った理由についてご意見をお聞かせください。いただいたご意見をもとに、将来、精度の高いデータを提供できるように改善していきます。また、興味深いデータや改善すべきデータがありましたらお知らせください。できるだけ早く、コンテンツ検出の体験やオーサリングの機会を改善できるよう努めてまいります。

Unityエディターのベストプラクティス

JSONを使用して他の場所にマニフェストデータを保存する

プロジェクトにマニフェストをバンドルしたくない場合があります。そのために最適な方法(JSONを作成する、データベースを使用するなど)は本ガイドの対象外ですが、アンカーのような実データをビルド外に保存することで、常にビルドを新しく作成しなくてもコンテンツを更新できるようにしました。

マニフェストのスクリプト可能なオブジェクトには、Export to JSON オプション(JSON形式でエクスポートできる機能)が用意されており、リモートコンテンツアンカーの軽量バージョンを保存することができます。次の2行のコードを使用して、そのJSONコンテンツを変換し、サンプルコードで使用されるTinyManifestsデータ構造に戻すことができます。

var jsonString = (obj as TextAsset).text;
var manifest = JsonUtility.FromJson<TinyVPSLocationManifest>(jsonString);

ウェブからファイルを読み込む方法に関するUnity使用例 と組み合わせると、プロジェクトのリモートマニフェストをとても簡単に作成することができます。

既知の問題点と回避策

Virtual Studioのモックモードでは、デフォルトのアンカーを使用することはできません。

  • インポートされたロケーションにはいずれも、「Default (Authored Anchor)」という名前のアンカーが含まれます。

  • このアンカーをVirtual Studioのモックモードで読み込もうとすると、例外「FormatException: Unrecognized Guid format.」が発生します。

  • 回避策として、次のいずれかの方法を行ってください。

    • 「Default」という名前のアンカーを削除し、新しいアンカーを作成する。

    • デフォルトアンカーの位置や回転を変更する。

  • この問題は、モックモードのUnityエディターで実行した場合にのみ発生します。デバイス上で実行した場合は、デフォルトのアンカーでこのような動作が起こることはありません。

Unityエディター(Virtual Studio使用)でモックロケーションを使用する場合、ロケーションが異なるコンテンツを読み込むとエラーが発生します。

  • エラーは例外「ArgumentException: An item with the same key has already been added. Key: 00000000-0000-0000-0000-000000000000(ArgumentException: 同一キーのアイテムがすでに登録されています。キー: 00000000-0000-0000-0000-000000000000)」として表示されます。

  • 回避策として、現在選択されているモックの位置のコンテンツのみを読み込んでください。

  • 現在、ビジュアルスタジオで実行中にモックロケーションを切り替えるには、必ずエディターのプレイセッションを再起動する必要があります。そのため、モックロケーションを使用する場合、各プレイセッションでテストできるのは1つのロケーションのみです。

各ロケーションのアンカーには一意の名前をつける必要があります。

  • 単一のロケーションマニフェストに同一名のアンカーが含まれていると、そのロケーションのコンテンツを読み込む際にエラーが発生します。

  • Unityエディターでモックモードの場合は、次のような例外が発生します。「ArgumentException: An item with the same key has already been added. Key: eeaa8ed7-15bf-49bc-9b9a-7c5466b4ae5f(ArgumentException: 同一キーのアイテムがすでに登録されています。キー: eeaa8ed7-15bf-49bc-9b9a-7c5466b4ae5f」

  • デバイス上では、選択したロケーションのコンテンツの一部が欠落します。

  • 回避策として、単一のロケーションマニフェスト内のアンカーには必ず一意の名前をつけてください。

RemoteAuthoringAssistantで変更を行った後、ManifestManagerの「Populate Content(コンテンツの追加)」ボタンをクリックしないと、コンテンツが古くなったり、エラーが発生したりすることがあります。

  • ManifestManagerは、「Populate Content(コンテンツの追加)」がクリックされるまで更新されません。

  • RemoteAuthoringAssistantのロケーションに変更や修正があっても、「Populate Content(コンテンツの追加)」がクリックされるまで、実行時に表示されません。

  • 回避策として、エディターで実行する前やデバイスにビルドする前には必ず「Populate Content(コンテンツの追加)」をクリックしてください。

AR深度を有効にすると、ユーザーから20メートル以上離れたロケーションにあるアセットは、ユーザーのアプリに表示されないことがあります。アンカーはメッシュの表面積の範囲内か、近距離に配置してください。

Remote Authoring Assistantを使用して複数のプレハブを単一のアンカーに関連付ける場合、ManifestLoaderでは、最初のプレハブのみが取り込まれます。複数のプレハブを関連付けようとすると、コンソールにUnityの警告が表示されます。