ワールドポーズシステム(WPS)
ワールドポーズとは?
Lightshipのワールドポーズシステム(WPS)は、デバイスのGPSやコンパスの方位データではなく、地理座標でスマートフォンの3D位置と向きを示します。 WPSは、標準的なGPS測位よりも精度が高く、フレーム間の安定性に優れているため、ARアプリケーションに適しています。 また、ユーザーが動き回っても、デバイスの位置を継続的に維持するため、長時間や長距離の使用においても高い精度を保つことができます。
WPSはスマートフォンでGPS信号を受信できる場所であればどこでも動作しますが、その精度はGPSの精度によって異なります。
WPSを使用するメリット
GPSの位置情報やコンパスの方位を使用するアプリケーションであれば、WPSが提供する精度や安定性の向上によって高いパフォーマンスを実現できます。 また、WPSと既存の地理データを組み合わせた新しいタイプのAR体験もあります:
- デバイスの正確な3D位置を地図上に表示する三人称視点ビューの作成。
- カメラビューを補強したり、プロシージャル生成にコンテキストを提供するために地理データを使用します。
- 地図データを、現実世界のトポロジーを反映した仮想世界に置き換え、プレーヤーが歩き回って探索できるようにします。
WPSの実際の使用例を確認するには、サンプルプロジェクトをお試しください。
WPSによる安定性の向上は、下の画像でデバイスのコンパスと並べて見ることができます。

WPSを有効にする
Hierarchy の XROrigin コンポーネントにARWorldPositioningManagerを追加すると、プロジェクト内でワールドポーズシステム(WPS)が有効になります。 これにより、ARWorldPositioningCameraHelperが自動的に Main Camera に追加されます。 WPSが提供する精度の高いコンパスとGPSのプロパティが必要なアプリケーションでは、 CameraHelper
から直接これらのプロパティにアクセスできます。

クリックしてWPSCompass.csを表示します
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Niantic.Experimental.Lightship.AR.WorldPositioning;
public class WPSCompass : MonoBehaviour
{
[SerializeField] private ARCameraManager _arCameraManager;
private ARWorldPositioningCameraHelper _WPSCameraHelper;
// Start is called before the first frame update
void Start()
{
_WPSCameraHelper = _arCameraManager.GetComponent<ARWorldPositioningCameraHelper>();
}
// Update is called once per frame
void Update()
{
float heading = _WPSCameraHelper.TrueHeading;
Quaternion rotation = Quaternion.Euler(0, 0, heading);
double latitude = _WPSCameraHelper.Latitude;
double longitude = _WPSCameraHelper.Longitude;
}
}
ワールドポーズシステム(WPS)を使用して、ワールド座標にアンカーされたオブジェクトを配置する方法については、ワールドポーズシステム(WPS)を使用してアプリをビルドするを参照してください。