先日からUnity2023.3.62fでのShader, PostProcessing,Effectについて自分の知識を増やすため、様々な分野を試しています。目的としては、大目標である<二松学舎をテーマにホラーゲームを作る>のための表現技法を探求することです。恐怖を覚えたり、不気味に思ったりするようなものはもちろん、感動的なシーンで使えそうなものも含め、人間の心に訴えかけ、揺さぶっていく表現を追い求めていきたいです。
こ↑こ↓から先の内容は、先ほども述べました通りShader・PostProcess・Effectといったこまごまとした内容になりますので、あまりこのようなものに興味がないといった方はブラウザバックをお勧めします…。
1.なぜURPを選んだのか
Unityのプロジェクトには、現在4つの描画スタイルがあります
BPR(built-in rendering pipeLine)・SRP(Scriptable Render Pipeline)・URP(Universal Render Pipeline)・HDRP(High Definition Render Pipeline)
これらの違いはこちらの方の記事を参照していただきたいのですが、今回一般的なBPRではなくURPを選んだのは、URPはBPRよりもグラフィックがよく、モバイル用等向けであるため軽量(!)という良いことづくしな感じがしたからです(逆にそれ以外の理由は特にありません…)。
2・URPにおけるPostProcessの利用方法
今回試してみたPostProcessの利用方法について、備忘録もかねて書いておきます。
注意:URPにおいてPostProcess(以下PP)を使用するときは、BPRでの従来のPPの導入方法では使用できません。次の通りに入れていく必要があります。(PPダウンロード後)
1・ヒエラルキータブか[create]からGrobalVolumeを作成
2・GrobalVolume→Volumeからプロファイルを作成
3・MainCamera→レンダリングより「ポストプロセス」のチェックボックスにチェックをつける
4・GrobalVolume→Volumeを開いて[オーバーライドを追加]より任意のエフェクトを追加
参考資料:URPのポストプロセッシング設定【Unity 6 / URP 17.x 完全版】 – ソフトライム
//従来までのPPの入れ方をしているとURPでは、PPは適用されません。また、従来のPPの入れ方のデータ(例えばPostProcessVolumeなど)がシーン内にあると、URP用の入れ方を試してもPP適用外です。
PPの技法
今回は、本を参考にしながらPPで色々と試してみようと思います。
下の動画は、PPのモーションブラー・色収差・Color Adjustments・FilmGrainを導入してみたものです。特になかなか面白いなと思ったのが、Color Adjustmentsで、これを使うと全体の画面に色を付けることができ、これでモノクロ画面にしたり、少し感傷的な色合いのようにすることもできました。プレイだけでなく、途中で挟むモーションだけでもつけることでよりいい感じにできそうだなと思います。
lightの実験
Unityでは光を使うために、Lightと呼ばれるものが用意されています。ライトの一つであるDirectional Lightが用意されており、Unityのプロジェクトを開いたときに基本的にMainCameraとともにシーン内に表示されているので、見覚えのある人も多いかと思います。
今回使用してみたLightはPointLightで、下の写真のような投影ができました。大体青色の丸が書きこまれているあたりにPointLightが設置されています。また、地面がライトの光を反射して描写されているのもわかります。下の写真では辺りが暗闇になっていますが、これはPointLightの機能を強調するため、DirectionalLightのTranceFormの回転(lotation)のX軸の値を270度にしているからです。ただ立方体に関する光の描写が少しおかしくなっていると感じますが、これはちょっと試してみたところPointLightが原因かと思われます。
(補足:DirectionalLightは現実でいうと太陽のようなものであり、この向きを変えることでフィールド(シーン内)における全体の光量を調節することができます。これを使うと夕日のような表現もすることができます。*図2参照、写真だと朝焼けに近いのかも…)

図1 PointLightの使用例

図2 Directional Light X,Y,Z軸の角度0度
まとめと今後への総括
今度はより実際の使用時に近い、プレイヤーがFPS視点でシーン内の3Dオブジェクトに接触又は特定の範囲内に入った/退出したことを条件とした行動・エフェクト・ライトを起動するシステムを作っていきたいです。
・今後やっていきたいこと
電子音楽を作ること、イラストを描くこと・ゲーム/キャラクター作り
追記
Blenderにおける発見が一つ。私はBlenderのオブジェクトのAlpha値はUnityに引き継がれず、Unity上で新たにAlpha値と同義の値を設定したテクスチャを作らなければならないとChatGPTに言われていましたが、今回一部にイメージでBlenderでAlpha値を0.1に設定していたら、Unity上でも透明がかかったテクスチャとして描写されていました。しかし、Unity上でテクスチャに関する値の変更は私の方ではできなかった(!注意!もしかしたらプログラミングで色々と変えられるかもしれません。一応プログラミング(Visual Studio Codeの方)は開けました)ので、一応参考程度でお願いします。

コメント