LoginSignup
17
12

More than 5 years have passed since last update.

worldspaceのcanvasを最前面にレンダリングする

Posted at

VRにおいてScreenSpace-Overlayでは、UIの設定ができない

通常であれば、UIはあらゆるオブジェクトの最前面にレンダリングされるもので、UnityではUIをScreenSpace-Overlayで実現する。
しかし、VRにおいては、その仕様上目の焦点が合わないため実は設定ができない(できるがUIがレンダリングされない)

なので、World Spaceでの使用を推奨される。
https://unity3d.com/jp/learn/tutorials/topics/virtual-reality/user-interfaces-vr

しかし、このやり方だと、UIがworldspaceに置かれるため、他の3dモデルなどに遮蔽されて隠れてしまう問題もある。

UIをworldspaceに置きつつ、他のオブジェクトに遮蔽されることなく最前面にレンダリングする方法を以下にまとめた。

手順

  1. Main Cameraをduplicateして、UI Cameraにrename
  2. UI CameraをMain Cameraの子コンポーネントに指定
  3. UI CameraのClear FlagsをDepth Onlyに変更
  4. UI Cameraからaudiolister, flareLayerコンポーネントをremove
  5. UI CameraのCulling MaskにUIのみチェック
  6. Main CameraのCulling MaskからUIをアンチェック
  7. UI CameraのDepthをMain Cameraよりも大きくする(Main Cameraが0ならUIの方は1でOK)
  8. 最前面に描画したいcanvasの設定をworldspace, Event CameraをUI Cameraに設定

以上

17
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
12