【CG】フローリング模様がランダム風になるマテリアル関数を作る【UE4】

Pocket
email this

 元ネタはEpic Games公式が無料配信しているUE4プロジェクト『Realistic Rendering(リアルなレンダリング)』です。これ理解したとき「ああなるほど」と声を出してしまった。
 たった1枚の木目のテクスチャからこんなの作れちゃうんですね。

やってみよう

 そんなに難しくはありません、チャレンジあるのみです。できるまでやめない心!

1.ランダム用マップの作成
Photoshopでやります。
①RとGとB、②Aの2パートにわけて考えながら作ります。
レイヤーを4つ用意します。(マスクのところでON/OFF切り替えするほうが楽という方はレイヤー不要。)
①フローリングの1枚の板に相当する箇所を適当に3色で塗り分けていきます。重なってはいけません。
・G(0,255,0)とB(0,0,255)は適当に塗ります。この2色で2/3程度の領域を埋めるようにします。
  

GとBの2色を表示したところです。

・Rは、全部の板を塗ります。
 ただしこのときに3トーンくらいに分けておきましょう。これは最後にちょっと遊びに使います。

最後に全部のレイヤーのブレンドモードを「除外 (Exclusion)」にします。すると各マスクが足された色が出てきます。
保存しましょう。

②普通にAOを適用したい溝とかを透明にします。面倒だったら何もしなくてもいいかと思います。
 今回は溝だけ完全透過にしてみました。

2.マテリアルノードの作成
テクスチャをUE4に取り込んで、マテリアルエディタを開きます。
・まずはいつもどおり設定します。

・さて今回の肝になるランダム風処理ですが、今後もお世話になりたいのでマテリアル関数としましょう。
マテリアル関数を新規作成し、開きます。
・インプットはscalarを2つ。
・画像みたいにとりあえずノード接続します。最後に、テクスチャが90度回転してしまうので元に戻してやります。
 よくわからない方は『Realistic Rendering』プロジェクトを直接開くのがよいです。

これなにやってるのかをざっくり言うと、マスクRの板は何も起こりませんが、GとBは異なる係数でTexture CoordinateをAddしています。つまりは UV Wood Scale×係数 ぶんだけマスクGとBの領域それぞれのテクスチャをずらしているわけです。
これってマテリアルデザイナー業界では常識なのかは不明ですが、最初に考えた人はとにかくすごいと思った。

マテリアルエディタに戻ってマテリアル関数を置きます。
インプットには、先程の専用マップのGとBを接続します。


完成

 いかがでしょうか。左が従来(木目のテクスチャにノーマルマップで溝を付けただけ)、右が今回の対応を入れたものです。ぜんぜん違う。

 あ~、あ~、あ~。。。これ最高ですね。1枚の木目のテクスチャからこんなフローリングが作れるなんて。
 もっと早く知っておけばよかったマテリアルスキルPart.32です。

応用編

 先程マスクを作ったときにRGBのRだけ3色に分けていました。これには意味があります。ちょっとやってみましょう。
 マテリアルエディタを開いて、このマスクのRノードとパラメータのスカラーノード(FlooringToneと名前つけましょうか。値の初期値は1。値の範囲は0≦n≦1。)をaddで接続して、さらにベースカラーに接続しているノードをMultiplyとでつなぎましょう。これをベースカラーに再接続します。これだけです

 それではマテリアルインスタンスを開いてみましょう。FlooringToneパラメータを0~1で変化してみましょう。
 なんということでしょう、フローリングの明るさがこれまたランダム風に変わるではありませんか!

 もうここまで来るとテクスチャ1枚から作ったなんてわからんレベルになってきます。たまらん。

参考サイト






コメントを残す