ARDKを使用してMagic Leap 2上で開発する
Lightship ARDKを使用してMagic Leap 2上で開発することは、モバイルデバイス向けのAR体験を開発する場合と多くの点で同じです。 しかし、Magic Leap 2と一般的なスマートフォンではハードウェアが異なるため、一部の作業は異なる方法で行う必要があります。 この入門ガイドでは、Unityプロジェクトにおける違いと、その対処法について学びます。
前提条件
- このハウツーを使用する前に、Magic Leap 2 Lightshipのセットアップを完了する必要があります。
- この入門ガイドのVPSセクションを進めるには、有効なLightship APIキーをUnityプロジェクトにアタッチしておく必要があります。 詳しくは、Lightship ARDKを設定するをご覧ください。
- この入門ガイドにあるスクリプトでは、
ARLocationManager
とVPS Coverage APIの要素を使用します。 再確認が必要な場合は、ロケーションARとコードを一緒に使用する and Querying VPS Coverage for AR Locations at Runtimeを参照してください。
Magic Leap 2でのPlayback
Unity Editorで事前に録画した映像を再生すれば、Lightshipのプレイバックシステムを使用して、モバイルデバイスと同様にMagic Leap 2上でARアプリケーションをシミュレートできます。
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シーンを実行します。
Magic Leap 2を使用して位置情報を偽装する
VPSのローカライゼーションではGPS座標が不要になりましたが、Coverage APIでは依然として必要です。 Magic Leap 2にはGPSハードウェアが搭載されていないため、Lightshipで利用する位置情報機能によっては位置情報を偽装する必要があります。 ARDKには LightshipLocationSpoof
というクラスがあり、デバイスで位置情報サービスを開始 する際に静的インスタンスとして初期化し、ランタイム時に座標情報をCoverage API機能に渡すことができます。
注意
GPS機能がデバイスに搭載されていなくても、Magic Leap 2で位置情報を偽装する際は、位置情報サービスの利用を許可する必要があります。
ARDKを使って位置情報を偽装するには、次の手順を行います。
- Unityで、上部の Lightship メニューを開き、 Spoof Location の Enabled ボックスにチェックを入れます。
- 位置データが正しく保存されるように、スクリプトの先頭に
Niantic.Lightship.AR.Input
を追加します。
// Add at the top of your script
using Input = Niantic.Lightship.AR.Input;
- メインスクリプト内で
LightshipLocationSpoof
オブジェクトを作成したら、そのフィールドを使って、位置を偽装したいGPS座標を設定します (座標は必ず浮動小数点(float型)で入力してください)。
// Setting location coordinates
LightshipLocationSpoof.Instance.Latitude = 37.795668f;
LightshipLocationSpoof.Instance.Longitude = -122.393429f;
- これで、スクリプト内の任意の時点で
Input
システムを使って座標を確認し、値を渡しやすいように変数を作成することができます。
// Location verification using the Input system
var latitude = Input.location.lastData.latitude;
var longitude = Input.location.lastData.longitude;