今回はUnityで湖や海等を作ってみたいと思います。
Unityで水を表現する方法は、テクスチャを張って水のように見せる方法と、スタンダードアセットに入っている水のアセットを使う方法があります。
言わずもがな、スタンダードアセットに入っている水のアセットは、波の表現や水面に反射する物体の表現もされるので非常に綺麗です。
水のテクスチャを張る
Terrainを使っているならテクスチャを張るメニューで水のテクスチャを選択し、それを地面に塗って水の表現をする事が出来ます。
↑のようにTerrainのメニューでテクスチャを選択し、Edit Textures…で水のテクスチャを選択し、それをTerrainの地面をドラッグし塗っていきます。
水のテクスチャを張ると↑のような感じになります。
水の表現は出来ますが、テクスチャを塗っているだけなので水は動きません。
スタンダードアセットにあるWaterを使う
スタンダードアセットにある水は平たいメッシュで作成されており波の表現も自動でされているので、さきほど紹介したテクスチャを張るよりも綺麗でよりリアルな表現をする事が出来ます。
Water(Basic)
Assets→StandardAssets→Environment→Water(Basic)→Prefabsの中にあるWaterBasicDaytimeは昼間、WaterBasicNighttimeは夜の水を表現しています。
Water(Basic)の中の水は設定は、そのままヒエラルキー上に設置すると水を表現する事が出来ます。
Scaleを調整し大きさを変える事も出来ます。
↑のように水が揺れているのがわかります。
WaterBasicDaytimeとWaterBasicNighttimeを比較すると
↑のようになります。
Water(Basic)の中の水は水自体は透けておらず、また水の表現をパラメータで変更する事も出来ません。
Water(簡易設定版)
Assets→StandardAssets→Environment→Water→Water→Prefabsの中にあるWaterProDaytimeとWaterProNighttimeはよりリアルな水で透けたり水に反射した物体の表現等がされています。
実際に水を設置し設定を変更して水に反射する他のゲームオブジェクト等を見てみます。
↑のようになりました。
Water(パラメータで波の大きさ等が変更出来る)
Assets→StandardAssets→Environment→Water→Water4→PrefabsにはWater4AdvancedとWater4Simpleがあります。
この二つの水は反射や屈折する水の色を変更出来たり、波の表現も変更出来ます。
Water4Advancedでは泡の表現も変更出来ます。
設定を変更する前に注意してください。
Water4の水のプレハブの設定はUnityエディターの実行中に行った変更も反映されてしまうので、まずはWater4AdvancedやWater4Simpleを選択中にCtrl+Dキーを押してコピーし、名前を変えてそれをヒエラルキー上にドラッグ&ドロップします。
コピーし名前を変えた水のプレハブの設定を変更し、お気に入りの設定を探すのがいいと思います。
万が一設定を変更し戻せなくなってしまった時は元のプレハブをまたコピーしてやり直せます。
元のプレハブ自体の設定を変えてしまった場合は、UnityのエディタメニューのAssetsからImport Package→EnvironmentまたはAssetsフォルダ内で右クリック→Import PackageでEnvironmentを選択し水のプレハブをインポートし直すしかなさそうです。
Water4Advancedの設定を見ていきます。
Water Baseの設定
Overral Qualityは全体の品質を設定します。
Qualityは品質の設定です。
Edge blend?にチェックを入れると水と他のゲームオブジェクトとの接触面をブレンドして目立たなくします。
Main Colorsは波の反射、屈折の色を設定します。
Refractionは屈折の色
Reflectionは反射の色
Main Textureは波のデコボコと泡のテクスチャを設定します。
Normalsは波のデコボコのテクスチャ
Shore & Foamは泡の表現に使うテクスチャを指定します。
Tilingはテクスチャの繰り返し設定、Directionは方向を設定します。
Normalsはノーマルマップの光の反射や屈折の変位の設定です。
Per Vertexは頂点の変位設定
Per Pixelはピクセル単位での変位設定
Distortionはねじれの変位設定
Fresnelはフレネル(透明な水は近くは透けて見えるが、遠くは透けて見えない現象)反射の設定で、反射と屈折の関係性を設定出来るようです。
Intensityは光の反射や屈折の強度?
Powerは反射や屈折の強さ
Biasは傾向?
Fadingはフェード(衰えさせる)の設定で
Edge fadeは角のフェードの設定
Shore fadeは岸部分のフェードの設定
Extinction fadeは完全に消す時の設定?
Foamは泡の設定です。
Intensityは強度
Cutoffは泡を消す時の設定です。
以上Water Baseについて見てきましたがわからない設定が多いですな・・・・(^_^;)
Specular Lighting
Specular Lightingは鏡面の設定のようです。
Specular lightは鏡面用のライトを設定します。
Specularは鏡面の色
Specular powerは鏡面の強さ
Specular Lightingの設定は変更してみたもののよくわかりません。
Planar Reflection
Planar Reflectionは平面反射に関する設定のようです。
Reflection layersは反射するレイヤーを設定
Use skyboxは反射にスカイボックスを使用します。
Clear Colorは水のReflection用のカメラのClear Colorを設定します。
Planar Reflectionの設定もよくわかりませんね。
Gerstner Displace
Gerstner Displaceはゲルストナー波の設定みたいです。ゲルストナーは人名みたいです・・・(;一_一)
Amplitudeは振幅の設定です。
Frequencyは周波数の設定です。
Steepnessは険しさの設定。
Speedは速さ。
Direction scale(Wave 1(X,Y) and 2 (Z,W))は波1、波2の方向のScaleの設定
Direction scale(Wave 3(X,Y) and 4 (Z,W))は波3、波4の方向のScaleの設定
ここら辺は実際に値を操作しながら確認するしかないですね。(._.)
Water4Advancedの設定を変更してみる
Water4Advancedのスクリプトの設定項目について見てきましたが、実際に操作してみない事にはどのような変化が起きるかわかりませんので、Unity実行中にパラメータを変化させ確認させてみます。
設定を変えていくので、とりあえず元のプレハブをコピーしてお試し用の水を設置します。
↑のようになりました。
パラメータを変化させることで、海の波のようだったり静かな湖の水の揺らぎだったりを表現出来そうです。
最後の方でわざと水の中にキャラクターを移動させていますが、水は平面なので水中に入っても水の上と同じようになってしまいます。
水の中に入ったらちゃんと水の中に入っているような表現にしないとおかしなことになってしまいますので、それらはまた別の対処が必要になります。
そこら辺は
↑を参照してください。