2014年12月27日土曜日

マスクの形状を複雑化する方法

Twitterで少し書いた内容をこちらにまとめておきます。


解像度の低いテクスチャのマスクや頂点数の少ないVertexColorなど、
ぼんやりボケたグラデーションのブレンドはクオリティが低く感じます。

そんな時に使える、複雑な形のマスクの形状を作成するノードの組み方テクニックです。



VertexColorのマスクを複雑にする

岩の地面の上に草が生えているような箇所をVertexColorBlendで表現したい場合、
VertexColorだけの表現では自然に草が生えているように見せません。


岩の亀裂にそって草が映えるようにすると、
自然に草が生えているように見せることが出来そうです。





では、岩の亀裂部分をVertexColorに反映するようにマテリアルを組んでみました。
ノードの組み方はこのような感じ。














結果はこちら



これでは望んだ結果とはちょっと異なります。
その理由は組んだノードにあるWeightMask Contrastのパラメーター値が10と高い数字が入ってるからです。



VertexColorのボケた部分が黒く潰れてしまったことで想像していた結果と異なってしまいました。



ではどうするか?

WeightMask ContrastパラメーターはVertexColorとテクスチャのマスク両方に対してコントラストの調整をします。

パラメーターを増やしてVertexColorとテクスチャのマスク別々にコントラストの調整をするのもひとつの手です。

が、しかし、パラメーターが増えると制御が難しくなるので、
パラメーター数はこのままにしてVerteColorの強さで調整してみたいと思います。



その結果がこちら。



岩の溝の部分にそって草のテクスチャが入り込むようになりました。
VertexColorの強さをかなり下げましたので、BeforeとAfterではこのようになっています。





HeightLerpマテリアルファンクションを使う

HeightLerpのマテリアルファンクションを使うことでも似たような表現をすることが出来ます。
中の計算式が異なるので同じ結果にはなりませんが、
似た表現をすることは出来ます。

マテリアルで使用するノード数を減らしたいなどの目的で利用するのもありだと思います。

VertexColorのようにベースとなるAlphaをTransition Phaseに接続します。
TextureのマスクをHeight Textureにつなぎます。











個人的にはHeightLerpがかなり使えるノードだと思うので、
もう少しいい感じの使い方を見つけたらまたご紹介したいと思います。

公式で用意されているマテリアルファンクションは宝の山です~ヽ(=´▽`=)ノ

0 コメント:

コメントを投稿