Unity SDK
Unity のプロジェクトに AR Clip VPS を追加します。SDK は VPS マップ上のユーザーの位置を特定し、ARKit(iOS)と ARCore(Android)のデバイスで、コンテンツを正しい場所に配置します。
始める前に
- Unity 2022.3 LTS 以降
- ARKit か ARCore に対応したテスト用のデバイス
- サンプルプロジェクトをクローンする場合は Git LFS(大きなアセットが含まれているため)
インストール
次の 2 つの方法から選びます。
サンプルプロジェクトをクローンする
git clone https://github.com/WebAR-Studio/was-vps-unity.git
Unity 2022.3 以降でプロジェクトを開きます。Assets/Scenes にあるシーンが、動作する設定の例です。
Package Manager で追加する
- Window → Package Manager を開きます。
- + → Add package from Git URL… をクリックします。
https://github.com/WebAR-Studio/was-vps-unity.git?path=/Assetsを貼り付けます。
Unity が SDK を Packages/was-vps-unity にダウンロードします。
シーンを準備する
- AR Foundation を使える状態のシーンを作成するか開きます。シーンには AR Session と AR Session Origin が必要です。
- 空の GameObject に
VPSLocalisationServiceを追加します。ローカライズはこのコンポーネントが行います。 - Inspector で次のものを割り当てます。
AR SessionAR Session Origin- 必要であれば、AR カメラと UI のフック(サンプルシーンを参照してください)
- VPS の API Key と、1 つ以上の Location ID を入力します。
- 任意:デバッグ中は、Save Images Locally や Save Logs In File をオンにします。
API キーが必要ですか?
arclip.design で取得するか、support@arclip.design までメールでお問い合わせください。
ローカライズを開始する
ローカライズは自分のスクリプトから制御します。次のコンポーネントを追加し、Inspector で VPSLocalisationService の参照を割り当ててください。
using UnityEngine;
using WASVPS;
public class VPSBootstrap : MonoBehaviour
{
[SerializeField] private VPSLocalisationService vpsService;
private void Start()
{
vpsService.OnPositionUpdated += HandlePositionUpdated;
vpsService.OnErrorHappend += HandleError;
var settings = new SettingsWASVPS(
new[] { "your-location-id" },
failsCountToReset: 5
);
settings.ApiKey = "your-api-key";
settings.LocalizationTimeout = 2.0f;
vpsService.StartVPS(settings);
}
private void HandlePositionUpdated(LocationState state)
{
Debug.Log($"Localized at {state.Localisation.VpsPosition}");
}
private void HandleError(ErrorInfo error)
{
Debug.LogError(error.LogDescription());
}
}
Inspector の設定
| プロパティ | 機能 | 初期値 |
|---|---|---|
| Start On Awake | シーンの読み込み時にローカライズを開始します | false |
| Force Mock In Editor | Editor で実行するときは、常にモックのプロバイダーを使います | true |
| Send GPS | VPS のリクエストごとに、デバイスの GPS データを付けて送ります | false |
| Fails Count To Reset | 何回続けて失敗したらセッションをリセットするか | 5 |
| Save Images Locally | デバッグ用に、撮影したフレームを保存します | false |
テストとデバッグ
Force Mock In Editorをオンにして付属のモックテクスチャーを使えば、デバイスなしでテストできます。VPSLogger.SetLogLevel(LogLevel.VERBOSE)を呼び出すと、HTTP のリクエスト、レスポンス、エラーがコンソールに表示されます。- ローカライズが一向に成功しない場合は、API キーが有効か、各ロケーション ID が手元の VPS マップと一致しているかを確認してください。
例
- 動作する例は、サンプルプロジェクトの
Assets/Scenes/TestScene.unityとAssets/Scripts/ExampleVPS.csにあります。 - VPS のポーズは、自分のロジックで使えます。アンカーを生成する、3D コンテンツの位置を合わせる、UI を更新する、といった使い方です。
次へ: Unity のプラットフォーム — スマートフォン、ヘッドセット、グラスに向けてビルドします。