16.2K Views
December 16, 22
スライド概要
Quest Proのパススルー回りの解説です。
QUEST PRO開発メモ パススルー設定など
大久保 聡 Mail [email protected] Twitter @followapp
パススルーとトラッキングの許可 OVRCameraRigのOVRManagerコンポーネントで、Capabilityの許可をとるように設定を行う。
パススルーとトラッキングの設定をオン 各機能のチェックをいれる OVRCameraRigに、OVR Passthrough Layerコンポーネントを追加
パススルーとトラッキングの設定をオン(V56) Oculus Integration v56の場合。
パススルーとトラッキングの設定をオン(V57) Oculus Integration v57の場合。 …
IL2CPP、ARM64に設定 Project Settings
OCULUS PC側の設定
OVR PASSTHROUGH LAYERの追加 カメラにOVR Passthrough Layerを追加し、PlacementをUnderlayに設定する。 後述問題発生のため、Solid Color(透明)の設定にしておく。
PLACEMENTについて OVR Passthrough LayerのPlacementは、表示順が下記の通りとなります。Overlayの場合は、CG が背面に回ってしまいますし、Underlayの時に背景があるとパススルーが表示されません。 パススルー CG 背景 Overlay CG 背景 パススルー Underlay
オーバーレイタイプの変更するときはこちら Placementの切り替えは、 overlayTypeを設定することで変更可能。 [SerializeField] private OVRPassthroughLayer passThroughLayer; passThroughLayer.overlayType = OVROverlay.OverlayType.None; passThroughLayer.overlayType = OVROverlay.OverlayType.Underlay; passThroughLayer.overlayType = OVROverlay.OverlayType.Overlay;
動的にパススルーオン・オフの切り替え Skybox / Fog / Postprocessingなどを利用しているProjectで、パススルーのオン・オフを切り替える。 isInsightPassthroughEnabledを切り替えるだけ Fogも切っておく visible = !visible; [SerializeField] private Material sky; if (visible) // パススルーの切り替え { OVRManager.instance.isInsightPassthroughEnabled = true; RenderSettings.fog = falses; } else { OVRManager.instance.isInsightPassthroughEnabled = false; RenderSettings.fog = true; }
動的にパススルーオン・オフの切り替え ISINSIGHT PASSTHROUGH ENABLEの問題 isInsightPassthroughEnabledの切り替えで画面が固まる現象発生 textureOpacity を透明にして回避。 visible = !visible; if (visible) { passThroughLayer.textureOpacity = 0; } else { passThroughLayer.textureOpacity = 1; }
動的にパススルーオン・オフの切り替え SKYBOX利用時のパススルーの問題 Skyboxが透けない問題発生。 Skyboxのマテリアルをnullに置き換えることで回避。 visible = !visible; if (visible) { passThroughLayer.textureOpacity = 0; RenderSettings.skybox = sky; } else { passThroughLayer.textureOpacity = 1; RenderSettings.skybox = null; } Skybox利用時も、パススルー画面でSolidColorの影響を受ける問題あり。 Solid Colorの設定を黒(0,0,0,0:透明)にしてから、Skyboxの設定を選ぶことで回避。 Skyboxにしているのに Solid Color設定時の色が影響する
動的にパススルーオン・オフの切り替え POST PROCESSING利用時のパススルーの問題 Post Processing利用時にパススルーが効かなくなる問題発生 パススルー時には、ポストプロセスを切る設定をすることで回避 [SerializeField] private UniversalAdditionalCameraData cameraData; if (visible) { passThroughLayer.textureOpacity = 0; RenderSettings.skybox = sky; cameraData.renderPostProcessing = true; } else { passThroughLayer.textureOpacity = 1; RenderSettings.skybox = null; cameraData.renderPostProcessing = false; }
AURAを試す フェーストラッキングのサンプルプログラム
動作イメージ https://youtu.be/Wskf_jvQ2t0
META MOVEMENTのインストール URPではなくビルトインレンダリングパイプラインを使います。 Oculus Inetgration 46.0 Oculus XR Plugin 3.2.2 Unity2022.1.23f1 の組み合わせで動作確認しています。 PackageManagerで、Add package from git URLで https://github.com/oculus- samples/Unity-Movement.gitで追加する。
レイヤー設定を追加 レイヤー11-13に、 Character (layer index 10)、MirroredCharacter (layer index 11)、 HiddenMesを追加する。
シーンを編集可能にする サンプルシーンをAsset配下にコピー
トラッキングを利用可能に設定 シーンのOVR Managerの設定変更
シェーダーの設定 ShadersフォルダをAssetsフォルダにコピー Preload Shadersの設定を追加
ビルドしてみる Unity Editorだとフェイストラッキングは動作するが、ボディトラッキングが動作しなかった。 ※下記設定をいれていても正常に動作しない。