rn.log

備忘録など

【Unity 2020.2】物陰に隠れた部分を描画する

 

はじめに

今回は、Unity2020.2で物陰に隠れた部分を描画する方法を紹介します。

URPのForward Renderer Dataを設定するだけで実装可能です。

f:id:r-ngtm:20201216085052g:plain

物陰に隠れた部分を

環境

Unity2020.2

Universal RP 10.2.2

 

物影を水色にする方法

Unityが不透明のオブジェクトの描画を終えた後、

手前のオブジェクトの裏に隠れている領域だけを青く塗りつぶしています。

f:id:r-ngtm:20201216131309p:plain

不透明オブジェクトを描画

 

f:id:r-ngtm:20201216131344p:plain

物陰に隠れている領域だけを青く塗りつぶす

 

実装方法

次に、Unity2020.2でこれを実装する方法をご紹介します。

 

STEP1 : 影を描画させたいオブジェクトのLayerを設定

今回はPlayerという名前のレイヤーを作成し、球体のレイヤーをPlayerにします。

f:id:r-ngtm:20201216090003p:plain

隠れた部分描画をさせたいオブジェクト(Sphere)

f:id:r-ngtm:20201216090209p:plain

レイヤーをPlayerに設定

STEP2 : Materialを用意

物陰を青く塗りつぶすときに使用するMaterialを用意します。

今回は以下のような水色のUnlitマテリアルを用意しました。

f:id:r-ngtm:20201216085601p:plain

Unlitマテリアル

マテリアルの名前は Color にしておきます。

f:id:r-ngtm:20201216095602p:plain

作成したマテリアル



STEP3 : Forward Renderer Data  

ForwardRenderer.assetを編集すると、Universal RPの描画ロジックがカスタマイズできます。

 

URPテンプレートでプロジェクトを作成している場合、Settingsフォルダの中にいます。

f:id:r-ngtm:20201216085732p:plain

ForwardRendererData.asset

 

 

STEP4 : Forward Renderer Data に影の描画パスを追加

今回はForwardRenderer.asset に 2つのRender Objects を登録して、以下のように設定してみました。

f:id:r-ngtm:20201216133710p:plain

 

Render Objects の追加方法

Inspectorの下の方にある Add Renderer Feature ボタンから Render Objects は登録できます。

f:id:r-ngtm:20201216095816p:plain

RendererFeature追加ボタン

f:id:r-ngtm:20201216133823p:plain

Render Objects を追加




結果

物陰に隠れている部分は、Colorマテリアルで描画され、水色になります。

f:id:r-ngtm:20201216094806p:plain

物陰に隠れている部分がColorマテリアルで描画されている

 

Color(Render Objects)を外すと、以下のような表示になります。

f:id:r-ngtm:20201216094855p:plain

Colorマテリアルの描画を外した場合

特許

特許が既に登録されているそうです(来年切れる?)

https://www.j-platpat.inpit.go.jp/web/PU/JPB_3637031/83F99CD3BABFA1C42D5F2FA913BC1CF9

関連

【Unity】LWRPで、壁で遮られて見えないキャラクターをシルエット表示するのが超簡単にできた - テラシュールブログ (hateblo.jp)