モックモードでのプレイ

モック モードを使い、モバイルデバイスなしでテストを行う。

概要

モック モードでは、すべてのARおよびネットワーク機能がUnityエディター内にモックとして再現されるため、モバイルデバイスへのビルド作業が一切不要になります(それでも、実際のARデータを使用したアプリの動作確認のために、デバイスへのビルドや リモートモード の使用は定期的に必要になります)。

次の動画では、Unity上でVirtual Studioとモックモードを開始する方法をご確認いただけます:

注釈

動画で使用しているモッキングシステムはARDK 1.3で更新されています。モックモードの変更点の詳細については、その他の モックモードの動画 を参照してください。

モックAR環境

モックの ARSession はライブデバイスやリモート ARSession と全く同じコードで構成、使用されます。よってこれらの機能を使うために新たなコードや別のコードを書く必要はありません。

モック環境の使用

  1. Unityメニューから、** Lightship ** > ** ARDK ** > ** Virtual Studio ** ウィンドウを開き、Mockオプションを選択します。

  2. ドロップダウンから Mock environment(モック環境) を選択します。Lightshipポータル から既製の環境プレハブをダウンロードできますが、自分でモック環境を作成することもできます(以下の「モック環境の作成」セクションを参照してください)。

  3. プレイモードに入ると、環境はシーンに自動的にスポーンされます。モック環境を正しくレンダリングするには、 ARDK_MockWorld と呼ばれるレイヤーが必要ですが、存在しない場合はプロジェクトに追加されます。

../../_images/mock_window.png

カメラの操作

移動と外観の速度は、Unityツールバーの Lightship > ARDK > Virtual Studio ウィンドウで構成できます。

../../_images/camera_controls.png

モック環境の作成

  1. 新しいプレハブを作成し、 MockSceneConfiguration コンポーネントをルートGameObjectに追加します。

  2. プレハブに3Dモデルを追加し、環境を作成します。

  3. 以下のステップに従って、ご使用の環境にAR情報を追加します。

  4. Virtual StudioウィンドウのMock Scene(モックシーン)ドロップダウンの横にある更新ボタンを押すと、新しいプレハブを選択して使用できるようになります。

モック上の平面検知

  1. プレハブ内のGameObjectに MockPlaneAnchor コンポーネントを追加します。

  2. コンポーネントの Center プロパティや Rotation プロパティを使用して、平面としてマークしている面にアンカー(Gizmoで確認できます)を配置します。

  3. Set the Time to Discovery value to be the number of seconds it should take for the anchor to be detected, counting from after IARSession.Run is called.

  4. シーン内のすべての平面について、手順1と2を繰り返します。

例は、LivingRoomプレハブの Walls > Wall_Back または Furniture > PlaneAnchor オブジェクトを参照してください。

モック上の画像認識

  1. プレハブに 空の GameObject を作成します。

  2. 作成したGameObjectに MockImageAnchor コンポーネントを追加します。

  3. 画像を プロジェクト ビューウィンドウにドラッグして、Unityプロジェクトにインポートします。

  4. コンポーネントの Image プロパティをインポートした画像に設定します。1. 画像が歪んで見える場合は、 テクスチャのインポート設定 <https://docs.unity3d.com/Manual/class-TextureImporter.html#advanced> の詳細セクションに移動し、Non-Power(2) の値を None に変更します。Apply(適用) をクリックし、新しい設定で画像を再インポートします。次に、プレハブの MockImageAnchor コンポーネントを右クリックし、Update Display(表示を更新) オプションを選択します。2. この手順を行っても画像が歪んで見える場合は、 MockImageAnchor コンポーネントを右クリックして、Reset(リセット) オプションを選択し、 Image プロパティを再度設定します。

  5. Time to Discovery の値を、アンカーが検知されるまでの秒数に設定します( IARSession.Run の呼び出し後からカウント)。

  6. Name の値を、アプリケーションのコードで ARReferenceImage を作成する際に使用した名前と同一名に設定します。

参考例: LivingRoomプレハブの Wall> Wall_Back CrowdImage> オブジェクト。

モック上のセマンティック セグメンテーション

  1. MeshRenderer コンポーネントを含むGameObjectがある場合は、 MockSemanticLabel コンポーネントを追加します。

  2. コンポーネントの チャンネル 値を、そのGameObjectのメッシュが解釈されるセマンティックチャンネルに設定します。

  3. セマンティックを追加するシーン内のすべてのメッシュに対して、手順1と2を繰り返します。

例については、ParkPondプレハブの Sky または Trees > Tree > Branches オブジェクトを参照してください。

ARのその他の機能

  • 深度 : 深度対応のARセッションが実行されている場合は、モック環境に深度バッファが自動的に表示されます。

  • メッシング : 既製のメッシュファイルを読み込むには、 MockMesh または MockMeshSequence を使用して、代わりのメッシュをシーンに追加します。メッシュファイルを生成するには、モバイルデバイスと、ARDK使用例のMeshSaverシーンを使用します。詳細については、 中級チュートリアル: Unityエディターのメッシュ を参照してください。 * モック環境のエディター内メッシュ(Unityのメッシュオブジェクトに合わせたARメッシュ)は、現在サポートされていません。

モックマルチプレイヤー

モックARと同様、モックネットワークの使用に際して追加のコードは必要ありません。一方で、ローカルプレイヤーと(複数の)モックプレイヤーのインタラクションをシミュレートするための追加のAPIも存在します。モックプレイヤーとその ARSession 、MultipeerNetworking、ARNetworkingインスタンスは、スクリプトまたはVirtual Studioのエディターウィンドウで作成、制御を行えます。

モックプレイヤーの設定

モックプレイヤーを作成するにはまず、 MockPlayConfiguration を作成します。これは各モックプレイヤーのプロパティを定義する ScriptableObject です。

  1. Unityエディターの**Project** ウィンドウで右クリックをしてコンテクストメニューを開き、Create> ARDK> MockPlayConfiguration と選択します。

  2. Profile 配列のサイズを、プレイスルーで使用したい最大モックプレイヤー数に設定します。

  3. プレイヤーのプロパティを定義します:

    • Name :

    • Is Active : プレイヤーを初期化すべき場合はtrue。アクティブでないプレイヤーはアプリケーションに影響を与えません。

    • Using Network : プレイヤーが IMultipeerNetworking インスタンスを初期化すべき場合はtrueを設定

    • Using AR : プレイヤーが IARSession インスタンスを初期化すべき場合はtrueを設定

    • Using AR Networking : プレイヤーが IARNetworking インスタンスを初期化すべき場合はtrueを設定

      • このプロパティをtrueに設定した場合、 Using NetworkUsing AR もtrueでなければなりません。

  4. モックプレイヤーが初期化した際にシーンにスポーンするプレハブを任意で追加します。これによってそのプレイヤーのARポーズを制御できます。

モックプレイヤーの初期化

スクリプトを一切使わないモックマルチプレイヤー体験を制御するには、Unityのツールバーの Lightship > ARDK> Virtual Studio ウィンドウを開きます。

../../_images/toolsuite_window.png
  1. ウィンドウを有効化するボックスにチェックを入れます(無効化すると、ゲームプレイに影響を与え得るウィンドウからのコードが一切実行されなくなります)。

    • 併せて**ARDK**> Remote Connector ウィンドウの**Use Remote** ボックスも無効化されていることを確認してください。

  2. 使用する MockPlayConfiguration アセットを選択します。

  3. Check the **Use detected MultipeerNetworking session metadata ボックスにチェックを入れ、ローカルプレイヤーが使用したセッションメタデータでモックプレイヤーがネットワークセッションに接続されるようにします。

    • この機能を使うには、モックプレイヤーが有効化される 前に ローカルプレイヤーのネットワークが接続されなければなりません。

  4. これを行わない場合、モックプレイヤーが使用すべきネットワークセッションメタデータを入力してください。それと同じセッションメタデータがローカルプレイヤーの接続に使用されるようになります。

  5. Connect and Run All ボタンをクリックして作成し、すべての ARSession を実行し、選択された MockPlayConfiguration の定義に従い、モックプレイヤーが所有するすべての MultipeerNetworking セッションを接続します。

    • このボタンはUnityエディターがプレイモードの時にしか使えません。

モックプレイヤーのスクリプト

スクリプトを行うことでモックプレイヤーをより精密に制御し、マルチプレイヤーのより複雑な状況のシミュレートとテストが行えます。

すべてのアクティブな MockPlayer インスタンスを取得する方法:

using Niantic.ARDK.VirtualStudio;

private MockPlayConfiguration _playConfiguration;

public void AccessAllPlayers()
{
  foreach (var profile in _playConfiguration.ActiveProfiles)
  {
    var player = profile.GetPlayer();
    // do something with player
  }
}

ここから MockPlayer APIを使用してモックプレイヤーのARDKオブジェクトにアクセスし、ローカルプレイヤーの場合と同様に制御できます。

たとえば下記に抜粋したコードでは、ネットワークセッションに複数の新プレイヤーが参加した際のアプリケーションの反応をテストできます。

using System.Collections;

  private IEnumerator ConnectWithDelay(MockPlayConfiguration playConfiguration, byte[] sessionMetadata)
  {
    foreach (var profile in playConfiguration.ActiveProfiles)
    {
      if (profile.UsingNetwork)
      {
        yield return new WaitForSeconds(2f);

        var player = profile.GetPlayer();

        Debug.LogFormat("{0} is connecting.", player);
        player.Networking.Join(sessionMetadata);
      }
    }
  }

これらのAPIの他の使用例については、 ExampleMockPlaythrough シーンにある Assets/ARDKExamples/VirtualStudio 内のARDK使用例プロジェクトをご参照ください。 ExamplePlayController.cs スクリプトを使用した例をご覧いただけます。

モック上のローカライゼーション

デバイス上のARNetworkingセッションでは、共有セッション内のプレイヤーはARマップを見つけるために環境をスキャンしてローカライズを行います。モックセッションでのローカライゼーションには、いくつかの起動方法があります:

  • モック上のマップの検知

    • MockMapコンポーネントを GameObject に付けてください。マップの位置が GameObject のものに合わせられます。

    • TimeToDiscovery の値を、マップが見つかるまでの秒数に設定します( IARSession.Run の呼び出し後からカウント)。

    • マップはローカルプレイヤーによってのみ検知されます。他のモックプレイヤーのピア状態を変更するには、下記の他の選択肢を使用してください。

  • スクリプトされたピア状態の変更

    • MockPlayer.SetPeerState(state) メソッドを使用して、ARNetworkingセッションに接続しているすべてのプレイヤーのPeerStateを変更できます。

  • Virtual Studioエディターウィンドウ>モック

    • プレイヤーがARNetworkingセッションに接続されると、ピア状態の変更に使用できるドロップダウンボックスが表示されます。

こちらもご覧ください

Virtual Studio

ダウンロード