トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

【Unity】すりガラス風の板を出す方法まとめ(ARもあるよ)

こちらのツイートを見て、Unityでどうやってすりガラスのテクスチャ作るんだろ~と思いました。

Unityでやる場合、背景を取得してシェーダーとかでブラーかけないといけないのでどの方法でも処理が重そう。まあパフォーマンスはいったん無視しよう!

unity-frosted-glass

こちらを使ってみる!

baba-s.hatenablog.com

こちらからプロジェクトフォルダごとダウンロードした

github.com

デモシーン見てみる。

f:id:bibinbaleo:20200308133302p:plain

すりガラスになってる板のシェーダーが特殊。

すりガラスの模様のテクスチャを変えたら模様が変わる。

f:id:bibinbaleo:20200308133856p:plain

ForestIntensityですりガラス度も変わる。

f:id:bibinbaleo:20200308133852p:plain

カメラにCommandBufferBlur.csがついている。ポストプロセッシングは関係ない。

f:id:bibinbaleo:20200308134230p:plain

 

ちなみにSpriteのままだとブラーかからなかったのでQuadにマテリアルとして張り付けた。

f:id:bibinbaleo:20200308133256p:plain

f:id:bibinbaleo:20200308133859p:plain

3Dオブジェクトでもちゃんと動くよ。

f:id:bibinbaleo:20200308151500p:plain

uGUI

さてUIに適用してみよう!

用意したUIはこんな感じ。

f:id:bibinbaleo:20200308140910p:plain

そしてPanelのMaterialにサンプルのマテリアルを適用する。

f:id:bibinbaleo:20200308141034p:plain

するとこんな感じ!

f:id:bibinbaleo:20200308140848p:plain

文字が・・・

でもおしゃれ~

f:id:bibinbaleo:20200308143632p:plain

Imageに設定した色は反映されない。

f:id:bibinbaleo:20200308151623p:plain

すりガラスシェーダー

次はこちらのシェーダーをお借りします。

qiita.com

 

2Dと書いてあるけどCubeにも適用できる!

f:id:bibinbaleo:20200308151809p:plain

 ブラーの強度変わる!

f:id:bibinbaleo:20200308173102p:plain

シェーダーだけで動くので一番手軽。

 

ちなみにuGUIへ適用すると・・・

f:id:bibinbaleo:20200308143537p:plain

ああ

Canvas2つ作る

しょうがないのでCanvasを2つ作り、片方はすりガラスパネル、もう一つは半透明パネル+テキストみたいにして、位置をずらしました。

f:id:bibinbaleo:20200308150053p:plain

そしたらいい感じにできた!

f:id:bibinbaleo:20200308150101p:plain

いいね。

f:id:bibinbaleo:20200308145825p:plain

AR

こちらのシェーダーでARしました。

ARでも動いた!

f:id:bibinbaleo:20200308173209p:plain

Vuforiaでやりました!めっちゃいい!!

PCでやったら元のカメラの解像度が悪くて、ブラーとの違いが分かりにくいかもしれないけどこんな感じ。

f:id:bibinbaleo:20200308173248p:plain

 

uGUI用すりガラスシェーダー

こちらはuGUI用のすりガラスシェーダー。

edom18.hateblo.jp

 やはりuGUI用のシェーダーは工夫が必要みたい。

 

GitHub - edom18/BluredUGUI: Blured uGUI background sample

Githubのプロジェクトを見たほうが良さそう。

game実行したら動く。

f:id:bibinbaleo:20200308154745p:plain

ImageにBlurGUIのシェーダーを付けているのと、

f:id:bibinbaleo:20200308154228p:plain

SceneBlurEffectというスクリプトにBlurEffectというさっきとは別のシェーダーがついている。

f:id:bibinbaleo:20200308154220p:plain

実行したらこれを付けているオブジェクトがカメラの下に行く。

自分のプロジェクトで動かす

自分のシーンでやってみたけど、うまくいかない。

 CanvasをOverrayでやってみたけど、実行したらが画角が変になる

f:id:bibinbaleo:20200308154925p:plain

エラーが出てる。

Example.uGUI.SceneBlurEffect.OnWillRenderObject () (at Assets/SceneBlurEffect.cs:113)

カメラの取得ができてない

if (cam == UnityEditor.SceneView.lastActiveSceneView.camera)

シーンのアクティブ??

解決?

実行してからいったんSceneタブに切り替えて、Gameビューに戻ってきたらエラーが消えてブラーもかかった。

f:id:bibinbaleo:20200308160611p:plain

毎回シーンをアクティブにしてる・・・

設定

Imageの色のアルファでぼかし具合が変わる。

f:id:bibinbaleo:20200308160606p:plain

色も変えられる。

f:id:bibinbaleo:20200308161305p:plain

CanvasはWorldモードでも動いた

f:id:bibinbaleo:20200308161734p:plain

おまけ:背景固定ならXDでできる

ARとかじゃなくて、背景もUIの位置も固定のすりガラスUIならXDで簡単に作れる。

(固定すぎて使えないかもしれないけど。)

f:id:bibinbaleo:20200308163136p:plain

f:id:bibinbaleo:20200308162915p:plain

 

最初のtwitter画像をまねて、透明とすりガラスの比較してみた。

f:id:bibinbaleo:20200307221932p:plain

すりガラスっぽくするには背景のぼかしをしたらいい。

f:id:bibinbaleo:20200307221929p:plain

量によってボケ具合が変わる。不透明度は左右同じにした。

f:id:bibinbaleo:20200307221937p:plain

ぼかしの量や、不透明度の適正値はなんなんだろう・・・?

今回透明度は60~70、ぼかし量は4にした。

 

 

おまけ:ARっぽい背景写真

あとARっぽい背景写真を探すために過去に撮った写真を見てたけど、あんまりいいのないな~。普通の日常生活の背景写真なんて取らないからな。今度撮ろう!

f:id:bibinbaleo:20200307222531p:plain

Photoshopでもやったけど手順多かった。

bibinbaleo.hatenablog.com

最後に

4時間ぐらいずっとやってた。