はじめに
PICO4のカラーパススルーはARコンテンツにも使えます。
本記事では、パススルー用カメラ映像をUnityで利用する方法を説明します。
PICO4でのアプリ開発についてはこちらを参照してください。
Camera設定
MainCameraのClear FlagsをSolid Color
Backgroundを000000(Alpha値0)にする。
パススルーAPIを呼び出す
Pico SDKのPXR_Boundary.EnableSeeThroughManual(true)
を呼び出すことで背景をパススルーカメラの映像に出来ます。
なお、このAPIはスリープからの復帰時にも呼ぶ必要があります。
サンプルコード
PassThroughSetter.csファイルを作成し、空のGameObject PassThroughSetterにアタッチします。
using Unity.XR.PXR;
using UnityEngine;
public class PassThroughSetter : MonoBehaviour
{
void Start()
{
// シースルー設定
PXR_Boundary.EnableSeeThroughManual(true);
}
private void OnApplicationPause(bool pauseStatus)
{
// Pauseからの復帰時、再度シースルーにする
if (!pauseStatus)
{
PXR_Boundary.EnableSeeThroughManual(true);
}
}
}
以上で設定は終わりです。ビルドしてPICO4で動かせば背景がパススルー映像になります。
パススルーカメラの映像をUnityで取得できるか?
以前はパススルー映像をRawImageとして取得するAPI PXR_PassThrough
が存在していたのですが、最新のSDK(v2.1.1)にはないようです。
空間にCameraを配置しRenderTextureへ書き出す方法も試してみましたが、Backgroudのカラーが映るのみでパススルー映像は映りませんでした。
作例
PICO4のパススルーは単眼カメラですが、立体的に映像を歪ませ補正されています。
例えばこのような椅子の上に置いたオブジェクトもきちんと椅子に乗っているように見ることが出来ます。
ただし、近くの物体は補正による歪みの影響が強いので注意が必要です(例えば手を顔に近づけるなど)
おわりに
カラーパススルーができる一般向けのスタンドアローンVRデバイスの登場により、現実とVRを混ぜた新しい表現が生まれる可能性を感じます。
参考
公式ドキュメント
https://developer-global.pico-interactive.com/docs/en/12058/seethrough_camera_related/