エンジニアが書いてるようなブログ

ゲームプログラマをやっています。仕事やゲームや趣味に関してつらつら

UIの上に3Dオブジェクトを設置する方法

こんにちは、Unity の話題は久しぶりですね。

今日やりたかったこと

uGUI で作成された UI の上に 3D オブジェクトを表示する。

方針

Canvas の Render Mode を Screen Space - Camera にする
 これによって、カメラに対して深度値によってオブジェクトが見えるようになります。

 f:id:tkymx83:20180721171444p:plain

・UI用のカメラと オブジェクト用のカメラを作成する
 カメラを2つ用意することでどちらの要素も表示されます。
 Camera コンポーネントの Depth をカメラでそれぞれ違う値とすることで表示の優先順位を決めることもできます。
 Camera コンポーネントの Culling Mask でそのCameraが反映するLayerを決定することができます。

 f:id:tkymx83:20180721171552p:plain:w200
 ・ChacterCamera
 f:id:tkymx83:20180721171652p:plain:w300
 ・UICamera
 f:id:tkymx83:20180721171725p:plain:w300

・オブジェクト用のカメラの Clear Flags を Depth Only にする
 こうすることで表示されていない部分は透過となります。

結論

それぞれのカメラを用意して、重ねがけで描画する。片方を背景透過とすることで、お互い重なっているように見えるというわけでした。