妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

ポストプロセスマテリアルで中心以外をぼかす(1) マテリアルによる円の表示

妹「ポストプロセスのやつなんだけど、ひょっとしてこれ使うと画面の中心以外をぼかすっていうのが出来たりしない?」

「できると思うけど、何に使うの?」

妹「ロックオンしてる時とかに、そこ以外あんまり見えない感じの演出をやりたいと思ったことがあるんだけど、その時はやり方わからなかったから。画面の真ん中あたりに丸があって、その部分は見えてるんだけど、その回りはぼやけてる」

「丸は、完全にまん丸(正円)のやつ? それとも楕円型? どっちかというと楕円の方が簡単かも」

妹「それはあんまり考えてなかったから、とりあえず簡単な方で。あと丸とそれ以外のとこの境目のとこは滑らかに変化して欲しいような」

「それだったら昨日調べてたノードの練習台に丁度いいかもしれない。トゥーンアウトラインより簡単そうだから、先にそっちを作ってしまおう」

「まずマテリアルの根本的な仕組みとして、円を描きたいと思った場合に、円を描くというノードを使ったりはしない。まずマテリアルが現在担当してる点が、その円の範囲内かどうか調べて、範囲内なら色を塗る、範囲外なら元のまま、みたいな考え方をする。これはポストプロセスマテリアルも同じ」

妹「なぜそんなわかりにくいことを」

「そういう仕組みだからしょうがないというか、その方が計算が速かったから世界的にそういう仕組みになったというか」

f:id:una_unagi:20170322233620p:plain

f:id:una_unagi:20170322233630p:plain

「で、とりあえず、画面の中心に円を描く仕組みを作った。まん丸にしたい場合はもう少し計算で補正すれば可能。SphereMaskというノードを使うと、中心からの距離に応じて、0~1の数字が返ってくるから、それをそのままエミッシブカラー出力につなぐとこうなる」

妹「丸はそんな感じでよさそうな気がする」

「あとはこれを直接出力せずに、LerpのAlpha値にすればいい。白ければ元のピクセル、黒ければボカしたピクセルが出てくるように。ただこのボカシがちょっと面倒なので、とりあえず今日は回りを黒くするだけにした」

f:id:una_unagi:20170322233636p:plain

f:id:una_unagi:20170322235353g:plain