Let's Enjoy Unreal Engine

Unreal Engineを使って遊んでみましょう

UE4 マテリアル(シェーダー)の値を視覚的に確認するデバッグノード

UE4のマテリアルは非常に便利で使いやすいものですが、その中に格納されている値を確認するのはなかなか面倒です。
これはマテリアルがシェーダーとして動いているので仕方ないと言えば仕方ないのですが、UE4ではそのマテリアルも簡単にデバッグできるようなノードが用意されています。

非常に便利なのに意外と解説されていないっぽいので、この機会に解説してみます。


f:id:alwei:20180219225135p:plain

一番基本的なDebugFloatシリーズ。単一のFloatのみScalarという名前のノードになっています。


f:id:alwei:20180219225303p:plain

単一のFloat値を表示します。Timeノードから時間の変化値を受け取って表示します。
"MaximumNubmerOfDigits"で小数点の表示桁数を決めます。"DebugTextLocation RG_UpperRight BA_LowerLeft"では表示位置のオフセットを指定することができます。
最後の"UVs"ではメッシュ内のUVを指定しますが、平面に数値をだす場合にはそのままでOKです。


f:id:alwei:20180219230109p:plain

実際にマテリアルを貼ったメッシュに表示させるとこんな感じ。


動画で確認すると実際の動きがわかりやすいです。
Timeノードによる時間の変化値により、値がどんどん変わっていることが確認できます。


f:id:alwei:20180219225717p:plain

"BinaryValues"シリーズでは小数点数と整数のバイナリー値(2進数)を確認することができます。
が、個人的にはあまり使わないかなぁというイメージです。


f:id:alwei:20180219230019p:plain

これら2つは少し特殊なノードで、それぞれ時間が定期に変化し、その変異値を返してくれます。
2つの値をチェックする場合には、"DebugOnOff"を使って"StaticSwitch"ノードを使うとそれぞれの変化を何も押さなくても確認できます。
"DebugTimeSine"は名前の通りSinカーブの値を返してくれるので、Speedだけ指定して、マテリアル内の値の動きの変化を簡単に確認できます。
どちらも覚えておくとマテリアル内で動きをつけたいという場合に役立ちます。

マテリアル(シェーダー)のデバッグというとあまりイメージがないかもしれないですが、実際にこれらを覚えておくだけで開発効率に直結するので覚えておいて損はありません。