【CG】完成度イマイチなシームレステクスチャをより自然なリピートするマテリアル関数【UE4】

Pocket
email this

 前回のシームレス加工のお話しで最後に触れましたが、「シームレス自体はうまく行ったとしても、リピート表示すると結局のところ柄のような模様が浮き出て見えてしまう現象については避けることは困難」と言いました。実際にプロのマテリアルデザイナでもこの点は苦労されています。
 

 そこで、ランダムフローリングのときみたいに、1枚のテクスチャをランダムっぽく表現するマテリアル関数を作ってみました。というのが今回のお話しです。

 大風呂敷広げちゃいましたが、んー、あんま期待しないでください。でも、やらないよりは確実に改善します。

マテリアル関数を作る

 マテリアル関数を新規作成します。RandomRepeatFunctionという名前にしてみました。
 マテリアルエディタを開いて、こんな感じにしてみてください。

Rotator_Material_Function_2マテリアル関数は以下の通り。

MoveUVFunctionマテリアル関数は以下の通り。

マテリアルノードの中央やや右にある2つの「マスクその1」と「マスクその2」に使った画像はこれです。Photoshopの[フィルタ]→[描画]→[雲模様]です。大きい解像度のほうがいいと思います。

なにをやっているの?

 ざっくり言うと同一テクスチャを0度、30度、60度の3つの角度に回転させて、それらを(マスクを利用して)ごちゃまぜに表示させることで、そこそこランダムに見えるんじゃないかという考え方をしてみました。
 ランダムフローリングのときはUVを移動させていましたが、今回はUVの角度を変えてみた。というところです。

 落ち葉のテクスチャだと理解し難いと思うので、単純にストライプ柄のテクスチャに置き換えて表現するとこんな感じになります。

 上部の2つは入力テクスチャを①30回転したものと、②60度回転したものです。
 ①と②を混ぜます。30度回転したやつ:60度回転したやつ=50:50 でLERPして混ぜ込みます。

 次に 混ぜたやつ:無回転のやつ=66:33 の割合でLERPして混ぜます。
 こうすることで出力画像の登場比率が 30度回転:60度回転:無回転=1:1:1 に近くなります。※

  ※マスク画像の白:黒の比率が50:50だったらの話しです。
   Photoshopでフィルタ→ぼかし→[平均]を適用したら50%グレーになるので、そうだと信じる前提です。
   

試してみる

 さあ成果を試してみましょう。どうでしょうか。

 もう、1枚の微妙なテクスチャからここまで出れば良いんじゃない?

 もしこれでも気になる場合は、あらかじめパラメータ化してある MoveUV1 と MoveUV2 スカラー値を変更することでテクスチャを移動できますので更に微調整が可能です。

 この関数があると結構気は楽になります。
 お金出して買ったやつでも大抵はリピート柄が出てきちゃうので、こういう回避があると精神的に。

【CG】完成度イマイチなシームレステクスチャをより自然なリピートするマテリアル関数【UE4】” への2件のフィードバック

コメントを残す