はじめに
ゲームを作ってる最中に背景が寂しく、水面がほしい、planar Reflectionで反射させたい、ということでまずは水っぽいマテリアルを作成した。
※ビルド中に書いてるので図などまったくありません。
とりあえず新規マテリアルを作成して好きな名前をつける。
で、サムネをダブルクリックしてエディタを開く。
プロパティの変更
エディタを開いたらまずは[Details(詳細)]パネルから以下の項目を変更する。
- Blend Mode
- 初期設定:Opaque(不透明)
- 変更後 :Translucent(半透明)
- Lighting Model
- 初期設定:Volumetric Non Directional(容積測定の方向がない)
- 変更後 :Surface Translucency(表面が半透明)
これであとはブループリントを作る。
そして貼る。
半透明で屈折するマテリアルのためのやつ
1回目はとりあえずまっさらな水。
2回目で波紋的なものをつける
1回目で使うものは以下のもの
- Constant x5(とりあえずメモ用としてそれぞれをA~Eと呼ぶ)
- 定数を指定できる
- Lerp x1
- AとBの間の値を補間して返してくれる。
- AlphaはAとBの返す割合を決められる。0だったらAだけ、0.5だったらAとB半分、みたいな。
- Fresnel x1
- 見る角度によって0から1の値を変化させて返してくれるすごいやつ。
- これがいることで角度によっていろいろ変わる水面のあれを表現してくれる。
とりあえずこれをマテリアルグラフに追加。で、接続していく。
Constant(名前[値]:つなぐとこ)
- A[1]:ノードを2本出してBase ColorとMetallicにつなぐ
- 色が白くなって金属光沢が出る
- B[0]:ノードを1本出してRoughnessにつなぐ
- 荒さがなくなりつやつやになる
- C[0.5]:ノードを1本出してOpacityにつなぐ
- 半透明にする。0にするとせっかくいろいろやっても見えない
- D[1]:ノードを1本出して用意したLerpのAにつなぐ
- E[1.33]:ノードを1本出して用意したLerpのBにつなぐ
ConstantのEについては後で値を変更しやすいようにパラメータに変換しておく。
変換方法は以下の通り。
- Eを選択し右クリック
- 表示されたメニューの中の[Convert Parameter(パラメータへ変換)]を選択する
- 変換したらプロパティから名前をつける。
- おわり。
今回はIORと名前を付けておく。
IORは屈折率のことでこれを変えれば水以外も作れる。
マテリアル | 屈折率 |
---|---|
空気 | 1.00 |
水 | 1.33 |
氷 | 1.31 |
ガラス | 1.52 |
ダイヤモンド | 2.42 |
Fresnel
これはLerpのAlphaにつなげる。
Lerp
Refractionにつなげる。
AlphaにFresnelがつながっていることによって1から1.33の間でうまいこと屈折の仕方が変わってくれる。
水面が平らじゃなくなってほしいやつ
法線マップを使うことで水面にいい感じに波紋を作れる。
レンガっぽいものを使えば水風船で作ったレンガみたいなのができる。
法線マップ
法線マップとは、モデルの表面に凹凸がついているかのように見せることのできる特殊なテクスチャで、実際のジオメトリ(オブジェクト)にその凹凸があるかのように見せるやつ。
で、どうやるかというと
まずは使うテクスチャを選ぶためにマテリアルグラフで右クリックをしてTexture Sampleを追加する。
追加したTexture Sampleのプロパティに[Texture]があると思うのでそこに好きなテクスチャをぶち込む。
テクスチャを追加したTexture Sampleからノードを出してNormalに接続する。
これを適用すれば水面がいい感じに波打つ。
さいごに
なんとなくそれっぽいのはできたがやはり水がきれいすぎるのでその辺はうまいこと調整してください。
あと、この記事の手順については以下のものと同じことをしています。
カタカナと謎英語が多くてわかりづらかったのでいろいろ付け足してあります。
元のやつと合わせて読んだほうが絵があるのでわかりやすいかと思います。