本文へスキップ

ワールドポーズシステム(WPS)

ワールドポーズとは?

Lightshipのワールドポーズシステム(WPS)は、デバイスのGPSやコンパスの方位データではなく、地理座標でスマートフォンの3D位置と向きを示します。 WPSは、標準的なGPS測位よりも精度が高く、フレーム間の安定性に優れているため、ARアプリケーションに適しています。 また、ユーザーが動き回っても、デバイスの位置を継続的に維持するため、長時間や長距離の使用においても高い精度を保つことができます。

WPSはスマートフォンでGPS信号を受信できる場所であればどこでも動作しますが、その精度はGPSの精度によって異なります。

WPSを使用するメリット

GPSの位置情報やコンパスの方位を使用するアプリケーションであれば、WPSが提供する精度や安定性の向上によって高いパフォーマンスを実現できます。 また、WPSと既存の地理データを組み合わせた新しいタイプのAR体験もあります:

  • デバイスの正確な3D位置を地図上に表示する三人称視点ビューの作成。
  • カメラビューを補強したり、プロシージャル生成にコンテキストを提供するために地理データを使用します。
  • 地図データを、現実世界のトポロジーを反映した仮想世界に置き換え、プレーヤーが歩き回って探索できるようにします。

WPSの実際の使用例を確認するには、サンプルプロジェクトをお試しください。

WPSによる安定性の向上は、下の画像でデバイスのコンパスと並べて見ることができます。

Side-by-Side showing world pose against the device compass

WPSを有効にする

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

The World Pose Manager viewed in the Inspector.
クリックして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)を使用してアプリをビルドするを参照してください。

ワールドポーズの仕組み

WPSは、GPS、コンパスの方位、セッションのARKit/ARCoreのトラッキングデータを組み合わせることで、結果の正確性を高めます。 WPSでARKit/ARCoreトラッキングを使用するにはカメラを有効にする必要がありますが、カメラビューをユーザーに表示する必要はありません。

WPSに関するFAQ

デバイスのGPS位置情報やコンパスの方位ではなく、WPSを使用するのはなぜですか?

WPSでは、標準のプラットフォームAPIよりも、コンパス方位や緯度/経度の位置を正確に取得できます。 また、GPSやコンパス方位のデータをARトラッキングやカメラのフレームデータと組み合わせることで、フレーム間の安定性が高くなるため、仮想コンテンツのレンダリングに適しています。 さらに、すべてのプラットフォームで共通のUnityインターフェイスが提供され、地理データの操作を簡略化するヘルパークラスも用意されているため、デバイス固有のGPSに関する問題を心配する必要がありません。

WPSが正常に動作しなくなる条件はありますか?

WPSは、GPS信号が取得できない場合や、ARトラッキングの信頼性が低い環境では正常に動作しません。 GPSは一般的に、デバイスが地下や建物内にある場合に利用できなくなります。 また、暗闇や移動中の車両内では、ARトラッキングが失敗する可能性が高まります。 このような状況を避けることで、アプリの安定した動作が保証されます。

WPSのデータ転送量はどのくらいですか?

WPSでは、すべてのデータをデバイス上でローカルに処理します。 WPSが転送するデータはすべて、テレメトリー目的にのみ使用されます。

WPSはデバイスのパフォーマンスやバッテリー寿命にどのように影響しますか?

WPSは1つのCPUスレッドの約10%を使用しますが、すでにARKit/ARCoreを使用しているアプリケーションに対して、大きな影響を与えることはありません。 バッテリー消費量は画面表示や3Dレンダリングと同程度であり、長時間のセッションに適しています。

WPSの精度はどのくらいですか?

WPSの精度は、GPS信号の品質に依存します。 良好な条件下では、WPSの精度は1メートル未満で、中央値は約3メートルです。 まれに(使用率の10%未満)、ユーザーが正しい位置から最大10メートルずれる可能性があります。そのため、アプリケーションを設計する際には、ある程度の誤差を許容する必要があります。