本文へスキップ

XRヘッドセットでLightshipを開発中

XRヘッドセットでLightship ARDKを使用することは、多くの点で、モバイルデバイス向けのARエクスペリエンスを開発することと同じです。 XRヘッドセットと標準的なスマートフォンではハードウェアが異なるため、一部の作業は異なる方法で行わなければなりません。 この入門ガイドでは、Unityプロジェクトにおける違いと、その対処法について学びます。

前提条件

  1. このハウツーを使用する前に、サポートされている XR ヘッドセットの セットアップ プロセスを完了する必要があります。
  2. この入門ガイドのVPSセクションを進めるには、有効なLightship APIキーをUnityプロジェクトにアタッチしておく必要があります。 詳しくは、セットアップページをご覧ください。
  3. この入門ガイドにあるスクリプトでは、 ARLocationManager とVPS Coverage APIの要素を使用します。 再確認が必要な場合は、ロケーションARとコードを一緒に使用する and ランタイム時にARロケーションのVPSカバレッジをクエリするを参照してください。

プレイバック

Unityエディターで事前に録画した映像を再生することで、LightshipのPlaybackシステムは、対応するXRヘッドセット上でモバイルデバイスと同じようにARアプリケーションをシミュレートすることができます。

Unity Editorでプレイバックを使用するには、XR Plug-in Management for Windows, Mac, Linuxの設定で、Niantic Lightship SDK for Unity Editor をプラグインプロバイダとして有効にする必要があります。

Enable Niantic Lightship SDK for Unity Editor

Magic Leap 2 上でAR体験をシミュレートするには、以下の手順を行います。

  1. プレイバック録画を作成する前に、Magic Leap 2のパッケージに含まれている Lightship ML Rig プレハブをARシーンに追加します。 このプレハブには、Editorの入力プロバイダーから、コンピュータービジョン機能を実行するためのバイナリにデータを送信するコンポーネントが含まれています。
  2. プレイバックデータセットを録画するには、APIを使ってデータセットを記録するの手順に従ってください。 注: Magic Leap 2で録画を使用するには、必ず landscape(ランドスケープモード) で録画してください。
  3. Unityで、上部の Lightship メニューを開き、 Lightship Settings を選択します。 Playback セクションで、 Dataset Path フィールドに録画データのパスを入力します。
  4. 必要なスクリプトとコンポーネントを指定してXRシーンを設定したら、Editorで[Play]を押し、録画を使用してUnityシーンを実行します。

スプーフィング拠点

ほとんどのXRヘッドセットにはGPSハードウェアが搭載されていないため、Coverage APIなどのLightshipの位置情報機能を使用するには、位置情報を偽装する必要があります。-- VPSはローカライズ時にGPS座標を必要としなくなりました。

位置情報を偽装するには、2つの選択肢があります:

  • ライトシップ設定UI;もしくは
  • RuntimeLightshipSettings.ActiveSettings によるスクリプティング

UIは素早くイテレーションをするのに便利で、一方、スクリプト機能は実行時に場所の変更をエミュレートしたい場合に便利です。

注意

位置情報を偽装する場合、デバイスでGPSが利用できなくても、ヘッドセットで位置情報サービスの許可を受け入れる必要があります。

ライトシップの設定によるスプーフィング

Spoofing location and compass data in Lightship Settings

位置情報とコンパスデータのスプーフィングを開始するには、UnityのLightshipトップメニューを開き、Lightship Settingsを選択し、Location & Compassセクションまでスクロールダウンします。 必要であれば、データソースSensors から Spoof に変更してください。 変更はすぐにNiantic.Lightship.AR.Input.locationに反映されます。

偽装された位置情報

  1. 緯度:シミュレートされた南北座標。
  2. 経度:シミュレートされた東西座標。
  3. タイムスタンプ:Unixエポックからのミリ秒単位で位置情報が取得された日時。
  4. Altitude:海抜高度をメートル単位でシュミレートしたもの。
  5. 水平精度:メートル単位での緯度/経度の不確かさ。 より低い=より正確。
  6. 垂直精度:メートル単位での高度の不確かさ。 より低い=より正確。

偽装コンパス情報

  1. **磁気方位:_磁北_への方位、単位は度。 0(または360)は北、90`は東。
  2. 真の方位:真の北*への方位、単位は度。 磁気偏角(磁北と真北の差)を調整。
  3. 方位精度:真のヘディング**の不確かさ、単位は度。 より低い=より正確。
  4. **未加工ベクトル:方位や傾きを計算するのに便利な3Dベクトル(x, y, z)としての未加工の磁力計データ。
  5. タイムスタンプ:コンパスデータがいつキャプチャされたか、Unixエポックからのミリ秒単位示す。 通常、その場所のタイムスタンプと一致する。

スクリプト経由のスプーフィング

前述のLightship Settingsの設定はすべてUnityスクリプト内で設定可能です。

変更を確実に反映させるには、LocationAndCompassDataSourceLocationDataSource.Spoofに設定して、LightshipSettingsHelper.ActiveSettingsのデータソースを指定する必要があります。 または、上記のようにライトシップの設定で更新することもできます。

 // 重要!以下を実行しないと、なりすましデータが見えません!
LightshipSettingsHelper.ActiveSettings.LocationAndCompassDataSource = LocationDataSource.Spoof;

var locationInfo = LightshipSettingsHelper.ActiveSettings.SpoofLocationInfo;
locationInfo.Latitude = 10.1f;
locationInfo.Longitude = 20.2f;
locationInfo.Altitude = 30.3f;
locationInfo.HorizontalAccuracy = 40.4f;
locationInfo.VerticalAccuracy = 50.5f;
locationInfo.Timestamp = 12345678;

var compassInfo = LightshipSettingsHelper.ActiveSettings.SpoofCompassInfo;
compassInfo.MagneticHeading = 90f;
compassInfo.TrueHeading = 1.43f;
compassInfo.HeadingAccuracy = 1f;
compassInfo.RawVector = new Vector3(0.1f, 0.2f, 0.3f);
compassInfo.Timestamp = 123456;