Pomb記

おもにUE4での記録

UE4勉強会3-マテリアルの私的まとめ

UE4マテリアルの勉強会に行ってきました。僕自身はマテリアルに少ししか触れていないためそういった視点からのまとめになると思います。つまり深いところはまとめきれていないです。

もんしょさんの公演

公演自体分かりやすいものでしたがマテリアルについては本人のブログにも色々と画像つきで載っているのでそちらもお勧めします。

もんしょの巣穴blog [UE4] マテリアルを作成してみる

ヒストリアさんのリンク集のマテリアル項目にもまとまっています。

[UE4] お役立ちリンク&チュートリアル集 | historia Inc - 株式会社ヒストリア

 

マテリアルエディタで主に使うのは

・マテリアル入力

・左下の詳細の二つ。まず

○マテリアル入力について

・基本色--ライトの影響を排除した色

・メタリック--金属感

・スペキュラ--テカり、デフォルトの値 0.5が推奨されている。(Unity5だとアルベド、リフレクタンスあたり参照)

・ラフネス--粗さ。スペキュラよりはこちらを使う。金属の傷とかにも

・法線--デフォルトではローカル空間(タンジェント空間?)。ブレンドする際は統一すること。

・エミッシヴ--自己発色光。ライト処理には影響しないはずだがUE4.6でスタティックライト処理は少し変わった?

・オパシティ--不透明度。エディタ画面左下の詳細⇒Blend ModeがTranslucentかAddictiveの時に有効。半透明は処理が重くなるので注意

・オパシティマスク--描画するかしないか?半透明はない? Blend ModeをMaskedの時に有効。例えば一部が消えていく死に方も出来、半透明になる死に方より軽くて済む

・ワールド位置オフセット--ここの値が頂点座標に加算される。見た目の大小を変えられる。ただしコリジョンは変化しない。スカイリム(ゲーム)でやたらでかいけど当たり判定が小さいMODのアレ。

 

○エディタ左下の詳細

Material Domain マテリアルの使用用途で変わる。

Surface--通常はこれ。パーティクルもこれ

・Deferred Decal--デカールに使う。デカールとは銃痕や血のり、ペイントの後など貼り付けるもの。

・Light Function--ライト関数として使う。文字を表示するスポットライトとか

・Post Process--ポストプロセスに使う

 

他にも便利な機能について

○マテリアルインタスタンス(重要)

・通常のマテリアル編集では値を変えるたびに処理(コンパイル)を待つ必要があるので面倒。⇒マテリアルインスタンスならすぐ変えられる

・作り方--マテリアルを右クリック⇒マテリアルインスタンスを作成

・使い方(パラメーターを作る)--マテリアルエディタ上のノードをクリック⇒パラメーターに変換

○動的マテリアル

リアルタイム(ゲーム中)でマテリアルを変更したい場合に使う。BP処理。

BPのノードがName処理なのでスペルミスやパラメーター名を変えた時の変更が面倒。こちらもまとまっています。もんしょの巣穴blog [UE4] Dynamic Material Instanceを使う

○マテリアル関数

マテリアルを関数として一まとめにして管理する。例えば金属的なマテリアルと錆び的なマテリアルで別々の関数を作って、後で混ぜる使い方が出来る。MatLayerBlend_Simpleノードを使用かつ詳細のUseMaterialAttributeにチェック。

さらに便利機能

・BP同様マテリアルにもショートカット。右の一覧(パレット)の右側に英数字が割り振ってある。

・コンテンツブラウザのスタティックメッシュをクリック→マテリアルエディタ左上のマテリアルプレビューの右上のティーポッドをクリックすることでプレビューのメッシュを変えられる。

f:id:GamePump:20141207102924j:plain

・ノードを右クリック→"ノードのプレビューを開始"を押すことで途中の処理までをプレビューできる。

○まとめ

・ラフネスと法線が重要

・マテリアルインスタンスがお勧め

・よく使う処理は関数に

 Wiseさんの公演

理解出来ていないのでパスします。フォトリアルの機材は高いけど何とか手に入れられる?

 DeNAさんの公演

スマホゲームとUE4について。

・マテリアルのShadingModelは制限あり。

・テクスチャは2048*2048まで。2の累乗の正方形がメモリを喰わなくて良い。

・広告もBPでサポート(Show Ad Banner)

・アセットは3D Models for Professionals :: TurboSquidから

・アプリのUDKリモートから入力のみスマホ端末を使うことも可能。つまり一々データを移す必要がない。

・ランキング用のBPも対応。TappyChikenサンプルに入っている?

 下田さんの公演

・HLSLからシェーダーのコードを見れる

○マテリアルインスタンスはお勧め

  • 共有しやすい
  • リアルタイムで編集しやすい
  • 使用メモリを減らせる?

○ワールド位置オフセットについて

・マテリアルに3D的な動きを出せる

・ワールド位置に応じた入力をするWorldPositionノードと組み合わせると良いかも。草木のゆれなんかはこれ。

○ペイント機能

これ面白かったです。

・予めVertexColorノードをAdd、Multiなどで噛ませます。

・レベルエディタ画面の左上のモードから二番目ペイントを使うことでVertexColorから入力できます。

・二つのテクスチャをLerpのA、Bにつなぎ、LerpのAlphaをVertexColorのどれかと繋いでペイントすればテクスチャをペイントすることも出来る。例えば岩に苔を浮かばせる等

・VertexColorではRGBAはそれぞれ対等な四つの変数として扱われます。Rだから赤色とかではないです。

・こちらも参照

UE4 メッシュペイントでメッシュにお手軽ペインティング - Let's Enjoy Unreal Engine

○その他機能

・オパシティマスクとWorldPositonを組み合わせて、壁を丸く削るような演出もできる。

・Tessellationでメッシュの角を削れる

・Alt+F8でシェーダー複雑度を見れる 緑⇔赤

・DetailTexturingで近寄った際の細かさを設定できる

・PostProcessのSceneColorから色調補正できる。

 

個人的な感想

どれも分かりやすくありがたかったです。特に触れていない部分だったので新鮮でした。

欲を言えば、壁を削る演出やUE4フェスのFortNiteのようなゲーム演出での使用例を見たかったです。

 

間違い等があればブログコメント等で指摘してもらえると幸いです。