CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

Niantic SDK 3.15のPlaybackを調べてみました

Niantic SDKについて、今度はPlaybackという機能を調べてみました。

検証した環境
- Unity 6000.053f1 (Mac OS)
- Niantic Lightship AR Plugin 3.15.0-2508040839
- Niantic Lightship Shared AR Client Plugin 3.15.0-2508040839
- AR Foundation 6.06 (依存関係により自動import)

検証に使用したデバイス
- Nothing Phone 3a

1. Playbackとは

公式ドキュメントを引用します。

Playbackは、事前に録画されたARSessionデータセットを使用して、Editorでアルゴリズムを実行する機能です。 この機能を使用することで、モバイルデバイス上で最適に実行しているかのように、デスクトップ上でプロジェクトを再生することができます。

Playbackを設定する | Niantic Spatial Platform

一般的に、ARアプリの検証には、ARの表示対象前で確認が必要です。開発場所から離れていると、そこまで行くのかあるいは写真みたいなものを準備する必要があります。

Playback機能を使うと、あらかじめ専用の機能で撮影しておいた撮影データをUnity Editorで実行させることで、実機にデプロイせずにARコンテンツの動作確認ができます。

Playback機能を有効にした上でUnity Editor上で実行すると、このようになります。背景の動画みたいなものはあらかじめ撮影したデータです。

An Example of Playback Feature of Niantic SDK 3.15

2. Playbackの使い方

前提として、Playback用の撮影データを取得するには、専用の機能で撮影する必要があります。つまり、普通のカメラで撮影した動画は使えません。

サンプルアプリにある"Playback Recording"という機能を使うと、Playback用の撮影データを取得できます。

Niantic SDK Sample Project Screen

こんな感じで、撮影した動画をフレーム単位で画像にして格納、さらに個別の画像の特徴点など?を記録したjsonファイルが入っています。

サンプルアプリのインストール方法は下記の記事も参考にしてください。

www.crossroad-tech.com

アプリ上でPlayback Recordingシーンを開くと、カメラプレビューのような画面が出ます。とくにInstructionは出ないので、スマートフォンを縦持ちにして撮影ボタンを押し、ゆっくりと動かします。終わったら停止すると、Discord/Saveというボタンが出るのでSaveを押します。

Saveするとスマートフォンの中にchunk_0.tgzというデータが保存されます。

次に、このtgzファイルをスマートフォンから取り出します。このとき、スマートフォンがiOS / Android、使用しているPCがWindows/Macで対応方法が変わります。

Windows Mac
iOS 取り出せない Xcodeを使って取り出す
Android エクスプローラから取り出す 何らかのTransferアプリで取り出す

詳しくはこちらに書いてあります。
プレイバック用データセットの作成方法 | Niantic Spatial Platform

なお、Macを使っていてAndroidスマートフォンのデータを取り出す場合、ドキュメントではAndroid File Transferを使うように書いてあります。
Android File TransferはGoolgeが提供していたMac-Android間のファイル共有ができるアプリでした。しかし、すでに公開が停止されています。

その辺りはここに書いてあります。

applech2.com

ざっとネットで見ると、本物のGoogleサイトっぽいレイアウトやデザインでAndroid File Transferを公開しているサイトもありました。しかし、公式では公開していないことに注意した方がよさそうです。

私の場合、AndroidスマートフォンとMacの組み合わせで検証しています。しかし、Parallel DesktopでWindows11を使えるので、Windows11側に接続してデータを取り出すことができました。

なお、Androidの場合、Android/data/<自分でつけたpackage name>/files/scankit/の中にあります。

次は、取り出したデータをPC上の任意の場所に配置し、Unityで指定します。
UnityでEdit > Project Settings > XR Plug-in Management > Niantic Lightship SDKを開き、下にスクロールしてPlaybackという機能を表示させます。

Setting of Plaback Feature of Niantic SDK

Playback機能を表示したら、以下を実行します。

  • Enabledにチェックをつける
  • Dataset Patyに、chunk_0.tgzを解凍したフォルダを指定

Run Manuallyにチェックをつけると、Editorで実行したときに映像が動きません。以下の操作をして少しずつ動かすことができます。 最初はチェックをつけない方が良いかもしれません。

  • スペースバー:1フレーム前進
  • 左矢印キーをタップ: 1フレーム戻る
  • 左矢印キーを長押し: フレームを巻き戻す
  • 右矢印キーをタップ: 1フレーム進む
  • 右矢印キーを長押し: フレームを進める

Loop Infinitely を選択すると映像がループ再生します。

ここまで設定したら、あとはNiantic SDKのサンプルアプリを実行すると、どのシーンでもchunk_0に入っていたデータが再生されるようになります。

こちらが動作例です。サンプルプロジェクトのMeshing シーンを実行してみました。

Playback and Meshing on Niantic SDK

毎回、端の表示が変になる理由がわかりませんが、室内ではなくもっと広いところで撮影すると変わるのかもしれません。

参考

プレイバック用データセットの作成方法 | Niantic Spatial Platform

Playbackを設定する | Niantic Spatial Platform

3. おわりに

Device Mappingなどでも使えたので、うまく撮影できれば色々活用できるように思います。