この記事ではUnityのShaderforgeを使って上下に動く水面のシェーダーの作り方を紹介します。
![Wave03_fin - STYLY 上下に動く波の完成イメージ](https://styly.cc/wp-content/uploads/2018/09/Wave03_fin.gif)
上下に動く波の完成イメージ
上下にゆっくり動くアニメーションを作っていきます。
サンプル
STYLY GALLERYからサンプル空間を体験できます。
記事で紹介しているUnityプロジェクトのダウンロードはこちらからできます。 Wave_Sample
Terrainで地形を作る
Terrainの作成
真ん中がくぼんでいて水がたまるような形状をTerrainで作っていきます。 GameObjectからTerrainを選択するとTerrainが生成されます。
![Wave03_01 - STYLY Terrainの作成](https://styly.cc/wp-content/uploads/2018/09/Wave03_01.jpg)
Terrainの作成
Terrainのサイズを変える
初期設定だと大きすぎるのでサイズを調整します。 右端の歯車マークをクリックして設定画面を開きます。 ResolutionのTerrain WidthとTerrain Lengthで調整します。
![Wave03_02 - STYLY Terrainのサイズを調整](https://styly.cc/wp-content/uploads/2018/09/Wave03_02.jpg)
Terrainのサイズを調整
ここではそれぞれ30,30にしています。
地形の作成
ブラシの形状とサイズ、Opacityを決めたら地形をモリモリ作っていきます。
![Wave03_03 - STYLY ブラシの調整](https://styly.cc/wp-content/uploads/2018/09/Wave03_03.jpg)
ブラシの調整
周りの地形が盛り上がっていくようにいきます。 すり鉢状にするイメージで作りました。
![Wave03_04 - STYLY 地形の作成](https://styly.cc/wp-content/uploads/2018/09/Wave03_04.jpg)
地形の作成
これで今回使用する地形は完成です。
水のシェーダーを作る
マテリアルを割り当てるPlaneの配置
くぼんだ真ん中の位置に水の表現に使うPlaneを配置します。 上下したときに切れ目が見えないように少し大きめに調整しました。
![Wave03_05 - STYLY Planeの配置](https://styly.cc/wp-content/uploads/2018/09/Wave03_05.jpg)
Planeの配置
Shaderforgeの設定
Shderforgeを起動してNew ShaderからLit(PBR)を選びます。
![Wave03_06 - STYLY Lit(PBR)を選ぶ](https://styly.cc/wp-content/uploads/2018/09/Wave03_06.jpg)
Lit(PBR)を選ぶ
Blend Modeは透明度を使うのでAlpha Blendedにします。 Face CullingはDouble Sidedにして裏側からも見えるようにします。 OpenGL ES3.0にチェックを入れます。
![Wave03_07 - STYLY シェーダーの設定](https://styly.cc/wp-content/uploads/2018/09/Wave03_07.jpg)
シェーダーの設定
マテリアルのシェーダーを変更する
Planeにマテリアルを割り当ててShaderからShaderforgeの中にある今作ったShaderに変更します。
![Wave03_08 - STYLY マテリアルのシェーダーを変更](https://styly.cc/wp-content/uploads/2018/09/Wave03_08.jpg)
マテリアルのシェーダーを変更
水面のNormalmapを使う
水面の表現にNormalmapを使用します。
![Wave03_09 - STYLY 水面のNormalmap](https://styly.cc/wp-content/uploads/2018/09/Wave03_09.jpg)
水面のNormalmap
今回はこのNormalmapを使います。 インスペクタのNormalmapのところに使用するNormalmapをアサインします。
![Wave03_10 - STYLY Normalmapを適用する](https://styly.cc/wp-content/uploads/2018/09/Wave03_10.jpg)
Normalmapを適用する
このままでは波が大きいのでTilingを変更してもっと細かい波にします。 TilingのXとYを変更してUVが繰り返されます。
![Wave03_11 - STYLY Tilingを調整](https://styly.cc/wp-content/uploads/2018/09/Wave03_11.jpg)
Tilingを調整
ここではX8,Y8にしました。
Vertex OffsetでPlaneに動きをつける
Sinで行ったり来たり動きをつけます。 早さをTime,動きの幅をRemapで制御します。
![Wave03_12 - STYLY Vertex Offsetにつなぐ](https://styly.cc/wp-content/uploads/2018/09/Wave03_12.jpg)
Vertex Offsetにつなぐ
Vertex Offsetにつなぐと動き出します。 インスペクタで動きの幅を調整できるようにします。
![Wave03_13 - STYLY 動きの幅を調整できるようにする](https://styly.cc/wp-content/uploads/2018/09/Wave03_13.jpg)
動きの幅を調整できるようにする
ValueにはWaveMoveという名前にしてこの値で動きの幅を調整します。
上下に動くようにする
このままではX,Y,Zすべての方向に動いてしまうので上下のY方向だけ動くようにします。 値が0のValueを作ってX方向とZ方向に動かないようにします。 AppendのGにつなぐことでY方向の動きにします。
![Wave03_14 - STYLY 動く方向を決める](https://styly.cc/wp-content/uploads/2018/09/Wave03_14.jpg)
動く方向を決める
水の色の設定
2種類のColorノードを作ってLerpでつなぎます。 LerpにはFresnelをつないでそのFresnelにはValueとNormal Dirをつないでいきます。
![Wave03_15 - STYLY 水の色の設定](https://styly.cc/wp-content/uploads/2018/09/Wave03_15.jpg)
水の色の設定
Fresnelを使うことで見る角度で見える色が変わる表現ができます。 水面に対して直角に近くなるほどColor1のグリーンに見えるようになります。 水面に対して浅い角度で見るほどColor2の水色に見えるようになります。
![Wave03_16 - STYLY Fresnelの効果](https://styly.cc/wp-content/uploads/2018/09/Wave03_16.jpg)
Fresnelの効果
透明度の設定
水なので少し透明度の値を入れて透明感を出してあげます。 Sliderを作ってOpacityにつなぎます。 デフォルト値は0.7にしました。
![Wave03_17 - STYLY 透明度の設定](https://styly.cc/wp-content/uploads/2018/09/Wave03_17.jpg)
透明度の設定
これで動く水面の完成です。
![Wave03_fin - STYLY 上下に動く波の完成イメージ](https://styly.cc/wp-content/uploads/2018/09/Wave03_fin.gif)
上下に動く波の完成イメージ
この記事ではUnityのShaderforgeを使って上下に動く水面の作り方を紹介しました。 これくらいの動きならキーフレーム打った方が早いとは思いますが、インスペクタから簡単に調整もできるので 使い分けていけると良いのかなと思います。 UnityからSTYLYにアセットをアップロードする方法 この記事を読む