シンプルな水マテリアルについての記事です。よりリアリスティックな水マテリアルを作るための主要なポイント3つにピックアップして解説します。

表面の波エフェクト

ひとつめの組み合わせは、ノーマルマップを使った表面の波エフェクトです。

PannerノードのSpeed XとSpeed Yの値を操り、右左上下の動きを加えます。

右左上下は(-0.5, 0), (-0.5, 0), (0, 0.5), (0, -0.5)で表現できますが、それぞれの値をずらしています。

例:(-0.52, 0), (0, 0.49), (0, -0.48), (0, -0.51)

これはきちっとした0.5のままだと動きが完璧に重なってしまうためです。

あえて少しずらすことで、表現の幅を広げています。

重すぎる場合は、4つから2つに減らしてもいいと思います。

ジオメトリの波エフェクト

ふたつめの組み合わせは、ジオメトリを動かすの波エフェクトです。

メッシュに十分なジオメトリがあることが前提です。

SineノードをTimeでコントロールすることで動きを加えています。

ここでもAbsolute World Positionを別々の値でDivideし、波の表現にバリエーションを加えています。

水面下のエフェクト

みっつめの組み合わせは、水面下の歪みを再現するエフェクトです。

ScreenPositionノードを使い、水面の向こう側にある部分のUVにエフェクトを加えます。

表面の波エフェクトで使った歪みエフェクトを再利用し、Distortionパラメーターでその強さをコントロールしています。

underwater

完成

その他Deapth FadeノードやFresnelノードを使った表現もこのGIFでは使われていますが、キーポイントのみをピックアップしてみました。

water-simple

ちなみに水面下のエフェクトがない場合このようになります。

特に階段などの直線がある場所で顕著ですね。

no-underwater-effect

マテリアル全体のスクショです。

water material