2014年11月19日水曜日

(uGUI)UIをWorldSpaceでオーバーレイ表示する方法

 Unity4.6から搭載されているuGUIは、CanvasのRenderMode値で描画方法を変更することが出来ます。
 問題となるのはOculusRift対応の為にOVRCameraRigを使用し、UIをWorldSpaceかつオーバーレイ表示にしたい場合です。
 OculusRift対応を考えなければScreen Space - OverlayやCullingMaskを弄ったCameraで対応できます。
 しかしながらOVRCameraRigを使用する場合は、色々試してみたもののうまくできませんでした。
 
 対処として、シェーダを利用したオーバーレイ表示を実装しました。
 uGUIデフォルトのシェーダをダウンロードし、以下のファイルをプロジェクトに追加します。
 (デフォルトのシェーダはこちらからダウンロード可能です)

 ・DefaultResourcesExtra/UI/UI-Default.shader
 ・DefaultResourcesExtra/UI/UI-DefaultFont.shader

 これらのファイルを以下のように変更します。

 ・シェーダ名が被るので適当に変更(例:***-Overlay)
 ・RenderTypeをOverlayに変更
 ・QueueをOverlayに変更
 ・ZWriteをOnに変更
 ・ZTestをAlwaysに変更

 このシェーダを適用したマテリアルを作成し、UIに割り当てます。
 TextにはUI-DefaultFontを、それ以外はUI-Defaultを使用します。
 これでUIがオーバーレイで表示できるようになりました。

 

 こんな感じに表示できます。
 

 

0 件のコメント:

コメントを投稿