18
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

以上

18
14
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
18
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?