Open26

Quest2でPassthrough APIを使ってImmersalによる位置合わせを行う

にー兄さんにー兄さん

こりんさんのツイートで、OculusIntegrationにパススルーAPIが来たことを知ったので、
前からやりたかったImmersalによる位置合わせを行う

にー兄さんにー兄さん

需要とか

需要isどこって感じだと思っている
一応ロケーションVRのようなことができるけど......家でやる人is何......

にー兄さんにー兄さん

Unity 2019.4.26でプロジェクト作成してみる
URPにしたかったけど、Passthroughがサポートしているか心配なのでビルトインで

にー兄さんにー兄さん

確かにAsset StoreにあるOculus Integrationは今日アプデが来ていることがわかる

にー兄さんにー兄さん

始めたはいいものの、Oculus Integrationもろくにさわったことがないので
passthroughってどうやって起動するの......って感じ
こりんさんのツイート見ると、それようのMonoBehaviourがあるっぽいけどいかに

にー兄さんにー兄さん

普通にこりんさんのツイート追った方がいいんだよな
今見たら動かないみたいなことをおっしゃっていたので、どうしようってなってます()

にー兄さんにー兄さん

oculus integration入れる前にSwitch Platformすればよかったな......となっている

にー兄さんにー兄さん

とりあえず、ControllerModelというシーンを動かしてみた
なんか移動ができるシーンなのかな?
このバージョンのIntegrationだと、Quest2のバージョンをアプデしないと動かなかった

にー兄さんにー兄さん

どうにもこうにもできないので、2020.3で作り直してみる
なぜかColorSpaceがLinearじゃないとビルドできなかった

にー兄さんにー兄さん

OpenXR_Passthroughってなんぞ......?OpenXR用の設定なんて全然していないけどな

にー兄さんにー兄さん

上に挙げたスレに更新があった
どうやらOpenXRでIL2CPPのARM64ビルドでないと動かなさそうじゃない?という雰囲気があった
クゥーーー

にー兄さんにー兄さん

Projection Surfaceがどのような実装で映っているのか、コードリーディングとかしてみる
たとえばシェーダで映してるだけだったらRenderTextureからマテリアルの状態を抜き出してテクスチャ化できるので
それをカメラ映像としてImmersalAPIに放り込むことができる、みたいなのが一番うれしいんだよな

にー兄さんにー兄さん

もしかりにSurfaceProjectionされたパススルー画像をCustom Render Textureを使って取得できたとして、
カメラパラメータがわからないよなぁとなってしまった
Immersalってテキトーな値入れたらどうなるんだろ

にー兄さんにー兄さん

OVRPassthroughlayerOVRPluginなどを眺めていると、
もしかするとSurfaceProjectionのジオメトリに合わせて新しいジオメトリ?メッシュ?を生成しているかもしれないなと思った
ランタイムでオブジェクトが生えている可能性がある、ちょっと厄介だな

にー兄さんにー兄さん

OVRPassthroughLayerの中のsurfaceGameObjects Dictionaryの値である、PassthroughMeshInstanceオブジェクトが気になっている
これの~~handle系、なぜかlong型なんだけどこいつをどうこうすればいいのかな
そもそもこの値が何を指しているのか画わからない

にー兄さんにー兄さん

ん-でもGameObjectはそのままに、そのなかのMeshオブジェクトを再生成してる感じなのかな
そうなるとMeshRenderer経由でMaterialの取得は可能か