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