QuestPro開発メモ

15.8K Views

December 16, 22

スライド概要

Quest Proのパススルー回りの解説です。

profile-image

XR(VR/AR)のエバンジェリスト。XR技術で世界を変えていきましょう。 https://majimajiwaroze.connpass.com/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

QUEST PRO開発メモ パススルー設定など

2.

大久保 聡 Mail [email protected] Twitter @followapp

3.

パススルーとトラッキングの許可  OVRCameraRigのOVRManagerコンポーネントで、Capabilityの許可をとるように設定を行う。

4.

パススルーとトラッキングの設定をオン  各機能のチェックをいれる  OVRCameraRigに、OVR Passthrough Layerコンポーネントを追加

5.

パススルーとトラッキングの設定をオン(V56)  Oculus Integration v56の場合。

6.

パススルーとトラッキングの設定をオン(V57)  Oculus Integration v57の場合。 …

7.

IL2CPP、ARM64に設定  Project Settings

8.

OCULUS PC側の設定

9.

OVR PASSTHROUGH LAYERの追加  カメラにOVR Passthrough Layerを追加し、PlacementをUnderlayに設定する。  後述問題発生のため、Solid Color(透明)の設定にしておく。

10.

PLACEMENTについて  OVR Passthrough LayerのPlacementは、表示順が下記の通りとなります。Overlayの場合は、CG が背面に回ってしまいますし、Underlayの時に背景があるとパススルーが表示されません。 パススルー CG 背景 Overlay CG 背景 パススルー Underlay

11.

オーバーレイタイプの変更するときはこちら  Placementの切り替えは、 overlayTypeを設定することで変更可能。 [SerializeField] private OVRPassthroughLayer passThroughLayer; passThroughLayer.overlayType = OVROverlay.OverlayType.None; passThroughLayer.overlayType = OVROverlay.OverlayType.Underlay; passThroughLayer.overlayType = OVROverlay.OverlayType.Overlay;

12.

動的にパススルーオン・オフの切り替え 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; }

13.

動的にパススルーオン・オフの切り替え ISINSIGHT PASSTHROUGH ENABLEの問題  isInsightPassthroughEnabledの切り替えで画面が固まる現象発生  textureOpacity を透明にして回避。 visible = !visible; if (visible) { passThroughLayer.textureOpacity = 0; } else { passThroughLayer.textureOpacity = 1; }

14.

動的にパススルーオン・オフの切り替え 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設定時の色が影響する

15.

動的にパススルーオン・オフの切り替え 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; }

16.

AURAを試す フェーストラッキングのサンプルプログラム

17.

動作イメージ https://youtu.be/Wskf_jvQ2t0

18.

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

19.

レイヤー設定を追加  レイヤー11-13に、 Character (layer index 10)、MirroredCharacter (layer index 11)、 HiddenMesを追加する。

20.

シーンを編集可能にする  サンプルシーンをAsset配下にコピー

21.

トラッキングを利用可能に設定  シーンのOVR Managerの設定変更

22.

シェーダーの設定  ShadersフォルダをAssetsフォルダにコピー  Preload Shadersの設定を追加

23.

ビルドしてみる  Unity Editorだとフェイストラッキングは動作するが、ボディトラッキングが動作しなかった。 ※下記設定をいれていても正常に動作しない。