水面GIFをUnityで作ろう!
先日から、水面GIFというのが話題になっていて、Twitterなどが賑わっております。
watereffect.netというサイトのサービスを利用すると、静止画からそれが水面に反射しているかのようなGIFを作成できるようです。
自分もいくつか作ってみましたが、せっかくUnityがあるのでUnityで同じように水面反射表現をやってみます。
Unity4時代は無料版でリアルな水面Assetが使えず涙をのんでいましたが、Unity5からは無料版でも使えます。
やり方。
まずインポート。
ProjectビューでImport Package>Environmentを選びます。
ダイアログが表示されるので、Waterを選びます。
※Water4という更に色々細かくリアルに表現できる水Assetもあるのですが、パラメータが多いので、簡単なWaterの方を使います。
これでImportボタンを押せば、プロジェクトに水Assetが追加されます。
使い方。
Environment>Water>Water>Prefabs内に
WaterProDaytime(昼間の海)
WaterProNighttime(夜の海)
が追加されているので、WaterProDaytimeを使います。
とりあえずそのままだとこんな感じ。
デフォルトだと水面は反射+屈折表現になるので、水面下の足と反射した足から上が見えています。
WaterProDaytimeのWaterコンポーネントのWater ModeをReflectiveに変更すると、屈折が消え、反射のみの表現になります。
なおWaterProDaytimeShaderにも色々パラメータがあるので、マニュアルを参考に色々いじってみてください。
シェーダのパラメータの内、Reflective color(RGB) fresnel(A)というパラメータは、表示角度に基づく反射の表示量に関係します。
デフォルトのテクスチャの場合、真上から覗きこむようなカメラ位置になった場合、水面の色が濃くなり反射は弱くなります。
このテクスチャをnoneにするか、黒一色のような一色のテクスチャに返ると、どの角度でも一様な反射が得られるようになります。
反射する像が荒く見える場合は、WaterコンポーネントのTexture Sizeプロパティの値を大きくすると、綺麗な反射がされるようになります。
細かく波を出している場合などは、像が荒くてもあまり気になりません。
あとは思い思いに、いろいろな構図を楽しんでみましょう!