【CG】フローリング模様がランダム風になるマテリアル関数を作る【UE4】
元ネタはEpic Games公式が無料配信しているUE4プロジェクト『Realistic Rendering(リアルなレンダリング)』です。これ理解したとき「ああなるほど」と声を出してしまった。たった1枚の木目のテクスチャからこんなの作れちゃうんですね。
やってみよう
そんなに難しくはありません、チャレンジあるのみです。できるまでやめない心!
1.ランダム用マップの作成
Photoshopでやります。
①緑色Gと青色B、②赤色R、③アルファAの3パートにわけて作っていきましょう。
まずはレイヤーを4つ用意します。マスクのところでON/OFF切り替えするほうが楽という方はレイヤー不要です。
①G、B
フローリングの1枚の板に相当する箇所を適当に3色で塗り分けていきます。重なってはいけません。
・G(0,255,0)とB(0,0,255)は適当に塗ります。この2色で2/3程度の領域を埋めるようにします。
③R
赤色Rは、全部の板を塗ります。
ただしこのときに3トーンくらいに分けておきましょう。これは最後にちょっと遊びに使います。
最後に全部のレイヤーのブレンドモードを「除外 (Exclusion)」にします。すると各マスクが足された色が出てきます。
保存しましょう。
③A
透過を示すアルファは、普通にAOを適用したい溝とかを透明にします。面倒だったら何もしなくてもいいかと思います。
今回は溝だけ完全透過にしてみました。
2.マテリアルノードの作成
テクスチャをUE4に取り込んで、マテリアルエディタを開きます。
・まずはいつもどおり設定します。
マテリアル関数にして便利に
さて今回の肝になるランダム風処理ですが、今後もお世話になりたいのでマテリアル関数としましょう。
マテリアル関数を新規作成し、開きます。名前は「FlooringRandomPattern」にしました。
・インプットはscalarを2つ。
・画像みたいにとりあえずノード接続します。最後に、テクスチャが90度回転してしまうので元に戻してやります。
よくわからない方は『Realistic Rendering』プロジェクトを直接開くのがよいです。
これ、なにをやってるのか?
ざっくり言うと、マスクRの板は何も起こっていませんが、GとBは異なる係数でTexture CoordinateをAddしています。つまりは UV Wood Scale×係数 ぶんだけマスクGとBの領域それぞれのテクスチャをずらしているわけです。これってマテリアルデザイナー業界では常識なのかは不明ですが、最初に考えた人はとにかくすごいと思った。
マテリアルエディタに戻ってマテリアル関数を置きます。
インプットには、先程の専用マップのGとBを接続します。
完成
いかがでしょうか。
左:従来(木目のテクスチャにノーマルマップで溝を付けただけ)。右:今回の対応を入れたもの。ぜんぜん品質が違う。
あ~、あ~、あ~。。。これ最高ですね。1枚の木目のテクスチャからこんなフローリングが作れるなんて。
もっと早く知っておけばよかったマテリアルスキルPart.32です。
応用編
先程マスクを作ったときにRGBのRだけ3色に分けていました。これには意味があります。ちょっとやってみましょう。これが更にワクワクさせてくれる仕掛けになっています。
さらにランダム風…もはやランダムにしか見えなくする に続く。
3 thoughts on “【CG】フローリング模様がランダム風になるマテリアル関数を作る【UE4】”