FC2ブログ

凛(kagring)のUE4/UE5とUnityとQt勉強中のゲーム制作ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用のブログです。C++ での Qt、Unity も少しあります。ゲーム制作の話題もはじめました。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE4 ポストプロセスマテリアル(Post Process Material)で画面をグレースケール(Gray Scale)化する

ポストプロセスマテリアル(Post Process Material)で画面をグレースケール(Gray Scale)化する方法です。

こちらの記事を参考にさせていただきました。

・Post Processで白黒ドット表現 レベル【★☆】
https://kinnaji.com/2019/10/21/pixelart/

記事の中で書かれている白黒の部分でグレースケール化を行っている箇所があったので
こちらをもとに作成してみました。

それによってできたポストプロセスマテリアルがこちら。
グレースケール000

「NTSC」という手法を使っているのですが、コメントにはこう書かれています。

NTSCとは、白黒テレビの時代に使用していた色の識別の計算のための値です。
(今回は簡易的に解釈して値を代入しています)
詳しくはWikiをご覧ください。
→NTSC

・NTSC
https://ja.wikipedia.org/wiki/NTSC

詳細についてはこちらが参考になりました。

・グレースケールのひみつ
https://ofo.jp/osakana/cgtips/grayscale.phtml

RGB に係数を掛けて、その値をすべて足し、それを値として使う方法ですね。

Y = ( 0.298912 * R + 0.586611 * G + 0.114478 * B )

計算はこちらに。

グレースケール000
上記処理の「Multiply」のところが実際にRGBに係数を掛けているところですね。

グレースケール001
赤枠の部分が、RGBそれぞれに入っている値を一つのスカラー(Float)値に変換しているところです。
最後の入力はスカラー値なので、RGBにそれぞれ同じ値が入力されるのでグレースケールになるということですね。

・「Break Out Float3 Components」で RGB にそれぞれ分解
・「Add」を2つ使ってRとGとBを足す計算して単一のスカラー値に変換する
・その結果をカラーに反映(スカラー値の入力なのでRGBすべてに同じ値が入る)


最初入力が一本だったので、どういう入力かどうかで誤解してしまったのですが
省略せずに書くとこういう感じになるようです。
グレースケール002
スカラー値をRGBそれぞれに同じ値としていれて結果出力。といったものですね。

というわけでこれを使ってみた結果これが
グレースケール004

こんな感じになります。
グレースケール003
ちゃんとグレースケールになっているようですね。

グレースケールのマテリアルノードについて、こちらの記事がありました。

・UE4のポストプロセスマテリアルで色々してみた 応用編 - Unreal Engine 4 (UE4) Advent Calendar 2014
https://pafuhana1213.hatenablog.com/entry/2014/12/09/000111

上記記事内で以下のツイートの紹介がありました。
ということのようです。

命令数はともかくとして、マテリアルノードがすっきりするのでやってみました。
グレースケール005
こちらのほうが見やすくていいですね!

| UE4 | 10:00 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/545-a1221496

TRACKBACK

PREV | PAGE-SELECT | NEXT