使用ソフトウェア | バージョン | 備考 |
---|---|---|
Unreal Engine | 5.0.1 | 4系でも使える |
マテリアルのノードにDepth Fade
というノードがある。
コレを使うと比較的かんたんに面白いマテリアルが作れるのだが....
そもそも、このノードそのものが何をするものなのかを理解するのがまず難しい。
というわけで今回はこのノードにどういう効果があるのかを解説する。
難しいノードであるため実用例まで一気にやってしまうと混乱すると考えられる。
よってこの記事ではノードの効果だけに絞って解説する。
マテリアルのOpacity
の仕組みを理解しているレベルならばだいたいOKかと思う。
Opacity
がわからない場合は次の記事を参考にしてもらえたらと思う。
【マテリアル基礎】透過マテリアルの作り方【Unreal Engine】 | 謎の技術研究部
このノードを理解するために次のようなオブジェクトを配置した。
真っ黒な板ポリに、ピンクの棒が刺さっている。
今回のDepth Fadeは黒い板ポリの方に適用してある。
まず最初にこのノードについているOpacity
の項目に絞って理解する。
ただ、ここは非常に簡単で
この結果と
この結果は全く同じ。レンダー結果は変わらない。
どちらも上のような半透明な結果となる。
つまりOpacity
に入った数値はそのまま特殊な処理なしで全体に適用されるだけなのであまり深く考えない。
この記事では固定値で1
(不透明)で進める。
まずはEmissive Color
に入力してどのような色がでているかを確認する。
板ポリが白くなっただけで、特になにもない(FadeDistance=0.0
)
この状態でFadeDistance
に150を入れてみると...
矢印の箇所にピンク棒の影のようなものが浮かび上がった
これだと何が起こったのかよくわからないと思うので、次のノードでアニメーションしてみることにする。
このノード組がよくわからなくても良い。
これはただFadeDistance
の値が0 ~ 300
を行ったり来たりするように組んでいる。
ゲーム内では次のようなアニメーションとなる。
値が増えるほど遠くにあるものが黒色になって表示されている。
つまりFadeDistance
に距離を指定すると、その範囲内にあるものがレントゲンのように透けて映し出される
この例と黒い板ポリ+ピンク棒で比較して考えると
上のEmissive Color
に繋いだ例ではただ黒い影が表示されているようにしか見えない。
ピンクの棒をピンクのまま透過する、ということができるのもこのノードの利用方。
というわけでEmissive Color
ではなくOpacity
に繋いでみよう。
板を突き抜けたピンク棒の一分が表示されている(黒い板ポリが透けている)のがわかるだろうか。
当然だがFadeDistance
の値を大きくすれば、より左側の(遠くの)棒も透過されていく仕組みだ。
Opacity
だけでできない?Depth Fade
なしでOpacity
だけで透過しようとすると空や地面まで透明で写ってしまう。
Depth Fade
の良いところはあくまで指定した範囲内のものだけを透過するという仕組みだ。
Depth Fade
をとりあえず使ってみたときに「なんか表示が変になっただけ」と感じる人は多いと思う。
それは上の例のようにオブジェクトが上に重なっているだけように見えるためだろう。
まず、頭の中で理解してほしいのは表示がバグっているわけではなく100%透明になっているので手前に描画されているように錯覚するという点だ。
まだ少し分かりにくいと思うのでもう一度「透過されているだけ」という状況を動画にした。
こうやって視点を回してみると、合わせ鏡に映ったような(?)なんともいえない透過が表現されている。
※ファイルサイズが重いためYoutube動画の貼り付けとさせていただいた。
Depth Fade
とは
FadeDistance
に入れた範囲内のオブジェクトを黒で(それ以外は白で)描画するOpacity
に入れれば範囲内のオブジェクトが見えるように透過できるというシンプルながら理解が難しいノードだ。
「じゃぁこれ何に使うの?」というのが一番大事なところだ。
しかし!そもそもDepth Fadeはこのノードそのものがどういう効果なのかというのが極めて分かりにくいという最大の障壁があると感じた。
というわけで本記事は、Depth Fade
の効果だけ理解できたら目的達成。
実例は掲載しない。
あとは各自で調べるなり試すなりしてもらえればと思う。