
今回は、Liquid Glassの表現をディスプレイスメントマップを使って試してみたので紹介したいと思います。
sigma-axisさんの単純図形σ、効果集σ
→sigma_aviutl_scripts(Git Hub)
目次
簡易Liquid Glass

最初に簡易的に作れるLiquid Glassを紹介します。
適当な背景画像を置きます。


フレームバッファを出し、ディスプレイスメントマップをかけます。
マップの種類は円で、変形方法に拡大変形を指定。サイズ、拡大変形、ぼかしの値はお好みで。


マスクをかけます。
マスクの種類をディスプレイスメントマップのマップの種類と同じものにします。サイズも同じ値にします。

見た目はほとんど変わりませんが、マスクの形で切り抜かれています。


凸エッジをかけてハイライトとシャドーの効果を追加します。
幅、高さともに小さめの値にしてみました。
これで簡易Liquid Glassの基本は完成です。

あとはお好みでぼかし系のエフェクトを加えてみたり。
追加のエフェクトはマスクの下にかけるとマスクにも適用されてしまうので、マスクより上にかけます。

ティムさんの色収差でレンズ感を出したりといろいろ工夫することができますね。
ちょっと凝ったLiquid Glass
Sceneでディスプレイスメントマップ用の図形を作成

ここからはちょっと手を加えてクオリティを高める工夫をして作ってみます。
ポイントは4つ。
・ディスプレイスメントマップのマップ
・マスクの図形
・ハイライトやシャドー
・追加のエフェクト
まずはSceneでディスプレイスメントマップ用の図形を作ります。
今回は白い角丸四角形を下に敷き、その上から一回り小さくしたグレーの角丸四角形を重ねてぼかしをかけました。こうすることで内側だけグラデーションになった図形ができます。
この白い部分がディスプレイスメントマップで歪む部分になります。
ちなみにグレー(128,128,128)の部分は変化しません。
もし、ガラスボタンの縁以外も歪ませたいなら、グレーで重ねた角丸四角形の色を白寄りの明るい色にするとその部分も歪みが加わります。

背景の色で128,128,128にするとちょっとだけ動いてしまうので、色調補正をかけてコントラストを0にしたグレーを利用しています。
Sceneでマスク用の図形を作成

別のSceneでマスク用の図形を作ります。
マスクは黒い部分は透過し、白い部分だけが表示されます。
ディスプレイスメントマップ用に作った角丸四角形と同じサイズの角丸四角形を置きました。
Sceneでハイライトやシャドーの作成

凸エッジの代わりとなるのがハイライトやシャドーの素材です。これらをそれぞれSceneで作ります。
マスク用の素材として作ったので色は白にするのがポイントです。


角丸の縁で明るいハイライトの部分です。
角丸四角形(sigma-axisさんの矩形)の色を黒にして、内側シャドーをかけました。内側シャドーの色は白です。


別のSceneを開いて角丸の影になる部分を作ります。
ハイライトの対角に位置するようにしました。


また別のSceneで光が当たるハイライト部分を作ります。
角丸四角形(白色)にマスクをかけて左上にレイアウト。サイズとぼかしでハイライトの調節をします。
オブジェクトを複製して対角の右下にも同様にハイライトを作ります。
素材を重ねる

素材の下準備ができたらそれらを適用していきましょう。
フレームバッファを出してディスプレイスメントマップとマスクをかけます。

ディスプレイスメントマップのマップをシーンから選択し、指定します。
変形方法は拡大変形。
拡大変形の値を調節します。今回は300と大きめにとりました。トラックバーは200までですが、数値上をドラッグしたり、直接入力で200を超えて設定することができます。
マスクもシーンから選択してマスク用に作ったSceneを指定します。


続いて縁の影を加えます。
黒背景にマスクをかけ、縁の影として作ったSceneを指定します。
基本的に微調整は最後に行いますが、例では透明度を調節してうっすら見えるくらいにしています。


続いて縁のハイライト。
白背景にマスクをかけて縁のハイライトを作ったSceneを指定。こちらも透明度で調節します。


さらにガラスボタンのハイライト部分を重ねていきます。
白背景にマスクをかけ、ハイライトのSceneを指定。透明度を調整。


ここでちょっと色調補正で明るさを下げてみました。
色調補正は一番最初のディスプレイスメントマップとマスクをかけたフレームバッファにかけます。
ちょっと暗くすることでガラス感が出るかなと思いました。


ここまで来たら妥協はできませんね。
別途Sceneに角丸四角形のラインを作ってシャドー用にしました。


ガラスボタンの影を作ります。
黒背景にマスクをかけ、角丸ラインのSceneを指定。
ぼかしをかけ、透明度で調整。座標でちょっとずらした位置にレイアウト。
素材化すると軽くて良い


ここまで重ねてきたハイライトとシャドーのオブジェクトはそのままだと負荷が高いので、png画像として保存し素材化するのも良いと思います。
例ではLayer3からLayer6までのマスクをかけた4つの背景(図形)ですね。

背景とフレームバッファのレイヤーをオフにしてアルファチャンネル付きのpngで保存します。
これを利用すればディスプレイスメントマップとマスクをかけたフレームバッファとフレーム素材の二つになり編集もやり易くなると思います。
使用例
ここまでの例で作ったのは真ん中のclearなガラスボタン。
他にもすりガラスのような加工をしたfrosted、歪みと色収差で液体感を出したliquidなど更なる工夫もあります。
rikkyさんの拡張パーティク(R)でパーティクルを飛ばし、より液体ちっくにしてみるのも良いですね。
いかがだったでしょうか。
Liquid Glass自体はディスプレイスメントマップとマスクでベースができます。フレーム、ハイライト、シャドーなど細かな部分をどこまで追求するかですね。
少し編集コストが高いかもしれませんが、機会があれば是非試してみてください。
