メインコンテンツまでスキップ

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 で追加する​

  1. Window → Package Manager を開きます。
  2. + → Add package from Git URL… をクリックします。
  3. https://github.com/WebAR-Studio/was-vps-unity.git?path=/Assets を貼り付けます。

Unity が SDK を Packages/was-vps-unity にダウンロードします。

シーンを準備する​

  1. AR Foundation を使える状態のシーンを作成するか開きます。シーンには AR Session と AR Session Origin が必要です。
  2. 空の GameObject に VPSLocalisationService を追加します。ローカライズはこのコンポーネントが行います。
  3. Inspector で次のものを割り当てます。
    • AR Session
    • AR Session Origin
    • 必要であれば、AR カメラと UI のフック(サンプルシーンを参照してください)
  4. VPS の API Key と、1 つ以上の Location ID を入力します。
  5. 任意:デバッグ中は、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 EditorEditor で実行するときは、常にモックのプロバイダーを使いますtrue
Send GPSVPS のリクエストごとに、デバイスの 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 のプラットフォーム — スマートフォン、ヘッドセット、グラスに向けてビルドします。