Unreal Fest 2016 Osaka に行ってきました。
興味深い講演ばかりであっという間でした。中でもヒストリアさんの講演でForeachLoopの処理に関数で定義したMakeArrayの検証が衝撃でした。
よく使ってるからというのもありますが、Pure型か通常型かで、速度に違いが出ます。
関数内でMakeArrayするのは、変数の初期化くらいしか思いついてなかったので、戻り値に配列を返してForeachLoopを回すときは注意が必要ですね。
ForeachLoopの中で、毎回Lengthノードが動いています。どちらかと言えばこれの方が気になったりします。JavaScriptかActionScriptの処理上げで昔誰かが書いていたような・・・。
var array = ["aaa","bbb","ccc","ddd","eee"];
for (i=0; i < array.length; i++) {
document.write(array[ i ]);
}
とループ中で、length を使うより
var array = ["aaa","bbb","ccc","ddd","eee"];
var al = array.length;
for (i=0; i < al; i++) {
document.write(array[ i ]);
}
実際のところは、プログラマではないので分りませんが、こういったハックぽいのはワクワクします。
前置きが長くなってしまいましたが、モノクロテクスチャの色付けです。
Photoshopだと、グラデーションマップを使えば簡単です。これをUE4のマテリアルでやってみます。
こんなテクスチャを用意してみました。24bitのTargaで保存してUE4でインポートします。
アルファチャンネルは無いので、フォーマットは G8 です。
テクスチャアセットが保存できたら、ここからマテリアルを作ります。
アセットアイコンの上で右クリックすると、コンテキストメニューが出てくるのでCreate Material を選びます。
マテリアル編集開始です。
早速エラーが出ています。これはテクスチャのフォーマットが気に入らないようです。
グレイスケールで保存してるようだけど、TextureSample ノードの設定が Colorになってるよ。というエラーです。設定を変えてあげると大人しくなります。
Linear Grayscaleに変更します。
色を付けるには Lerp ノードを使います。 Lキーを押しながらグラフをクリックすると簡単に呼び出せます。
テクスチャのカラーPINを Lerpノードの Alpha につなぎます。
次に色付け用のVector型の変数かパラメータを2つ用意します。それぞれLerpノードのAとBのPINにつなぎます。
はい出来上がりです。超簡単。
あとは、BaseColorかEmissive、UMGならFinalColor につないでやるだけです。
Photoshopほど柔軟ではありませんが、Lerpノードで2色のグラデーションマップができます。
実は艦これ改の背景を再現しようとしているので、もう少し手を入れていきます。
随分近づいてきました。
このマテリアルをインスタンスにすると、いろんなカラーバリエーションを増やすことが簡単にできます。
カラーをパラメータで持たせておくとブループリントから変更するのも面白いです。
例えば、UMGだとEventConstructでカラーを配列にセットしておきます。
関数やマクロなんかで引数をもらって変更するようにしておいて、適宜呼び出します。
ではでは
今回はこの辺で