Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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に設定

以上

y_UM4
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away