16
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[UE4]自分のマテリアル組術

Posted at
  • 本記事に関して
    • 確認バージョン: UE4.23/24
    • C++/エンジン拡張: 無し

普段やっていること、気にしている事を適当にメモしました。
大体において自分の思うままに組んでいますので、ぼくはそうじゃないとかあるかもしれません。
他の人の考えも見てみたいです。記事、誰か、書いてくれる嬉しい

Usage/ユセージ(使用方法)

image.png
マテリアルのプロパティ - Unreal Engine Document
「Automatically Set Usage in Editor」をOFFにして、必要なものにだけチェックを入れます。
「Automatically Set Usage in Editor」がONですと、エディター上でその種類が使われた時に自動的にチェックが入ります。

Cascadeでマテリアルを設定すると、「Used with particle Sprites」が自動的にONに
image.png

知らないウチにチェックが追加されてメモリが増えるのも問題ですが、
担当者がチェックが増えたマテリアルのアセットをコミット忘れる時あるのが困ります。
※メモリが増える参考→マテリアルとマテリアルインスタンスの仕組みと問題点の共有 (Epic Games Japan: 篠山範明)

image.png
→Submit→パッケージ化
2019-12-22_21h35_06.png
というバグチケットが飛びます。
「Automatically Set Usage in Editor」がOFFだと、使用時に見た目がデフォルトマテリアルのままになりますので、「あれ変わらない?」とそこで気付きます。(ハズです)
image.png

関数化

マテリアルは繋げばすぐ結果を確認でき、しかも変数が使えない為どんどんノードを延ばして構築されデカくなる事が多々あります。
image.png
ですので一回機能を確認出来た段階で、機能ごとに関数化します。
image.png
一箇所でしか使わないマテリアル関数アセットが大量に出来ます。仕方ないです。

image.png
トップでは細かい処理は把握する必要なくて、何の機能を繋いでいるのかが分かれば良いかな、と。
(仕様変更で後から機能を消す、付け足すとかありますしね……)

後から機能単位(関数単位)で最適化する際にもこの単位で行えるのでやりやすいです。

コメントを忘れない

image.png
書いて、お願い。

コメント周りの必要性はBPとあまり変わらないと思います。
コメントは下記があります

  • グラフコメント
    • 2019-12-22_22h43_05.png
    • 大まかに、この辺りは何の処理してるかをメモします
  • マテリアル関数の詳細欄「MaterialExpression」-「Description」
    • image.png
    • この関数の処理内容を書きます
    • コンテンツブラウザを列表示にすると、一覧出来るようになります
      • image.png
  • マテリアル関数のInput/Outputノードの詳細欄「Material Expression Function Input/Output」-「Description」
    • image.png
    • そのマテリアル関数を使用する箇所で、マウスオーバーでツールチップが出ます
      • image.png
  • 各パラメーターノードの詳細欄「MaterialExpression」-「Desc」
    • image.png
    • マテリアルインスタンスの該当パラメーターをマウスオーバーでツールチップが出ます
      • image.png
    • 実装した人と、インスタンスを調整する人が違う場合は特にキッチリ書く必要ある思います

計算が続く箇所には何やったかを細かく書く

読めば分かりますが、パッと見で何やったのか、期待する結果が分かりません。
ノードの数が多くなると一つ一つ読んでいくのも大変なので細かく書いています。
2019-12-22_23h06_54.png
2019-12-22_23h09_02.png
(手元に良い例がなかったのででっち上げ)一個一個頭の中で考えるの疲れるので計算多い所はこんな感じにしています。

種類によってコメントのカラーを分ける

マテリアルが大きくなってくると、このノードの流れはBaseColorだっけ、Emissiveだっけ……
とノードを追う事が有ります。

なのでコメントのカラーで視認出来るようにします。
image.png
(手元に良い例なかったのででっち上げ)Rerouteノードにもカラー付きでコメントを付けて分かりやすくしています

ScalarパラメーターのSlider範囲を設定する

image.png
Scalarパラメーターは詳細欄でSlider範囲が設定できます
このSlider範囲はマテリアルインスタンスで調整する際の弄りやすさになってくるのでキッチリ設定します
image.png
設定しないと数字が大きく伸びていきますので、細かく値設定したい時難しくなります
image.png
また、調整する人に「大体この辺の数値取る」という意図にもなります。

Customノードにマテリアル関数名書く

image.png
Customコードの頭に使用しているマテリアル関数名をコメントで仕込んでおきます。

image.png
Customノード、必要に駆られてちょくちょく使っています。
で、偶に計算不具合を起こしたり、一部環境で使えない構文使ってたりでエラー調べる事があります。

マテリアルのHLSLコード書き出しやRenderDoc等のシェーダーデバッガーで調べるのですが、
image.png
ここzerodivしてるっぽい
image.png
で、このCustomコードってどこで実装してる……?
全マテリアルからCustomコード内を検索するUE4機能は……?
となる事がちょいちょいありました。

前述のようにコメントで仕込んでおくと、HLSLコード書き出しで確認できます。
image.png

参考資料

16
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?