XRヘッドセットでLightshipを開発中
XRヘッドセットでLightship ARDKを使用することは、多くの点で、モバイルデバイス向けのARエクスペリエンスを開発することと同じです。 XRヘッドセットと標準的なスマートフォンではハードウェアが異なるため、一部の作業は異なる方法で行わなければなりません。 この入門ガイドでは、Unityプロジェクトにおける違いと、その対処法について学びます。
前提条件
- このハウツー を使用する前に、サポートされている XR ヘッドセットの セットアップ プロセスを完了する必要があります。
- この入門ガイドのVPSセクションを進めるには、有効なLightship APIキーをUnityプロジェクトにアタッチしておく必要があります。 詳しくは、セットアップページをご覧ください。
- この入門ガイドにあるスクリプトでは、
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 をプラグインプロバイダとして有 効にする必要があります。
- Magic Leap 2
- Meta Quest 3
Magic Leap 2 上でAR体験をシミュレートするには、以下の手順を行います。
- プレイバック録画を作成する前に、Magic Leap 2のパッケージに含まれている
Lightship ML Rig
プレハブをARシーンに追加します。 このプレハブには、Editorの入力プロバイダーから、コンピュータービジョン機能を実行するためのバイナリにデータを送信するコンポーネントが含まれています。 - プレイバックデータセットを録画するには、APIを使ってデータセットを記録するの手順に従ってください。 注: Magic Leap 2で録画を使用するには、必ず landscape(ランドスケープモード) で録画してください。
- Unityで、上部の Lightship メニューを開き、 Lightship Settings を選択します。 Playback セクションで、 Dataset Path フィールドに録画データのパスを入力します。
- 必要なスクリプトとコンポーネントを指定してXRシーンを設定したら、Editorで[Play]を押し、録画を使用してUnityシーンを実行します。
Unityエディタでは、オブジェクト検出結果のビジュアライゼーションが正しい向きになっていない場合があります。 これは視覚的な問題であり、オブジェクト検出はデバイス上で期待通りに動作します。
- プレイバックデータセットを録画するには、APIを使ってデータセットを記録するの手順に従ってください。 **注意:***メタ・クエスト3で録画を使用するには、風景で録画する必要があります。
- Unityで、上部の Lightship メニューを開き、 Lightship Settings を選択します。 Playback セクションで、 Dataset Path フィールドに録画データのパスを入力します。
- 必要なスクリプトとコンポーネントを指定してXRシーンを設定したら、Editorで[Play]を押し、録画を使用してUnityシーンを実行します。
スプーフィング拠点
ほとんどのXRヘッドセットにはGPSハードウェアが搭載されていないため、Coverage APIなどのLightshipの位置情報機能を使用するには、位置情報を偽装する必要があります。-- VPSはローカライズ時にGPS座標を必要としなくなりました。
位置情報を偽装するには、2つの選択肢があります:
- ライトシップ設定UI;もしくは
RuntimeLightshipSettings.ActiveSettings
によるスクリプティング
UIは素早くイテレーションをするのに便利で、一方、スクリプト機能は実行時に場所の変更をエミュレートしたい場合に便利です。
位置情報を偽装する場合、デバイスでGPSが利用できなくても、ヘッドセットで位置情報サービスの許可を受け入れる必要があります。
ライトシップの設定によるスプーフィング
位置情報とコンパスデータのスプーフィングを開始するには、UnityのLightshipトップメニューを開き、Lightship Settingsを選択し、Location & Compassセクションまでスクロールダウンします。 必要であれば、データソース を Sensors
から Spoof
に変更してください。 変更はすぐにNiantic.Lightship.AR.Input.location
に反映されます。
偽装された位置情報
- 緯度:シミュレートされた南北座標。
- 経度:シミュレートされた東西座標。
- タイムスタンプ:Unixエポックからのミリ秒単位で位置情報が取得された日時。
- Altitude:海抜高度をメートル単位でシュミレートしたもの。
- 水平精度:メートル単位での緯度/経度の不確かさ。 より低い=より正確。
- 垂直精度:メートル単位での高度の不確かさ。 より低い=より正確。
偽装コンパス情報
- **磁気方位:_磁北_への方位、単位は度。 0
(または
360)は北、
90`は東。 - 真の方位:真の北*への方位、単位は度。 磁気偏角(磁北と真北の差)を調整。
- 方位精度:真のヘディング**の不確かさ、単位は度。 より低い=より正確。
- **未加工ベクトル:方位や傾きを計算するのに便利な3Dベクトル(x, y, z)としての未加工の磁力計データ。
- タイムスタンプ:コンパスデータがいつキャプチャされたか、Unixエポックからのミリ秒単位示す。 通常、その場所のタイムスタンプと一致する。
スクリプト経由のスプーフィング
前述のLightship Settingsの設定はすべてUnityスクリプト内で設定可能です。
変更を確実に反映させるには、LocationAndCompassDataSource
をLocationDataSource.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;