目次
※この記事で使用しているUnrealのVersionは04.23.0です。
※この記事のサンプルプロジェクトは以下URLにアップされています。
サンプルプロジェクト
Post Processで白黒ドット表現 レベル【★☆】
今回は、Post Process Materialを使って、お手軽にドット絵の表現を行ってみたいと思います。
まずはPostProcess用のMaterialアセットを作成しましょう
Content Browser左上の「Add New」から「Material」を選択します。
Materialアセットを作成しましたら、最初にPost Process用のMaterial設定にします。
作成したMaterialを開き、「Details」ウィンドウから、「Material Domain」の項目を見つけ、設定を「Post Process」にします。
次に、同じく「Details」ウィンドウ内の「Blendable Location」という項目を「Before Tonemapping」に設定しておきます。
では、早速Materialを書いていきます。
いきなりすべての処理を書くとすごい長いMaterialをいきなり見せられて「全然お手軽じゃない…」となってしまうので、この表現の重要な部分の「Pixel Art表現」だけに絞ってまずは処理を書いてみます。
※最終的なものの処理は長ったらしいですが、白黒とPixel Art表現部分だけを切り取ればそこまで難しくありませんので、予めご了承ください。
特に難しいことはしていません。
現在のViewSizeを分割したいピクセルのScaleを指定して割ってあげ、UVと掛けたものを小数点切り捨てしただけです。
それをScene TextureのPostProcessInput0につなげることで、画面のUVをドット調に改編してくれます。
Materialの処理を書きましたら、見た目を確認してみましょう。
レベル上に「Post Process Volume」アクターを配置します。
エディター上の「Modes」ウィンドウの「Place」モード状態で、中から「Post Process Volume」というものを見つけ、Viewport上にドラッグ&ドロップします。
出来ましたら、 配置したPost Process Volumeアクターを選択した状態で 「Details」 ウィンドウ内の「Post Process Settings」→「Infinite Extent(Unbound)」という項目のチェックを入れてあげます。
次に、同じく「Details」ウィンドウ内の「Rendering Features」→「Post Process Materials」という部分のArrayの+を押します。
その後、出てきたプルダウンから「Asset Reference」を選択します。
すると、Materialを選択するプロパティが現れるので、作成したMaterialを設定してあげます。
これで、作成したPost Process Materialをレベル上に適応できたかと思います。
↓結果
処理前
処理後
まあこれだけでは味気がないので、もう少し肉付けをしてみましょう。
とりあえず、このピクセルに境界線をつけてみましょう。
CustomNodeの中身
float2 v2 = step(uv,percent);
return v2.x + v2.y;
CustomNode2の中身
return step(x,y);
追加した部分の処理は、パラメーターに応じてライン状の境界線や、円形の境界線を作ってくれます。
結果↓(ピクセルを丸く区切った場合)
少しわかりづらいので、ピクセルのサイズを大きくしたもので見てみます。
ちょっと面白い表現になってきました。
今度は色を白黒に分けてみたいと思います。
MF_NTSCの中身
NTSCとは、白黒テレビの時代に使用していた色の識別の計算のための値です。
(今回は簡易的に解釈して値を代入しています)
詳しくはWikiをご覧ください。
→NTSC
結果↓
なんか味が出ましたね。
白黒だけを使いたい方は、この部分だけを使ってPost Processを作ればそれっぽい表現になるかと思います。
最後におまけで画面ノイズをつけてみます。
Noiseノードで、Functionを「Gradient」で使用し、サンプリングし、一定以上の値のみを使って画面のUVをいじるという処理を行っています。
Pixel Artでやるとなんかいまいちかもですが、普通にこのNoiseだけで使ってもいい感じの見た目を作ることができます。
結果↓
おまけ
※この記事のサンプルプロジェクトは以下URLにアップされています。
サンプルプロジェクト