emotionサイトトップ >
UE(アンリアルエンジン)備忘録 >【UE4】ホストプロセスマテリアルSceneTexture:SceneColorでエラー
”UnrealEngine4で極めるゲーム開発”でUE4の勉強中・・・
25.4.2 ポストプロセスマテリアルを自作するの章で、
MaterialDomainをPostProcessに設定したベースマテリアルのエミッシブカラーにSceneTexure:SceneColorを繋ぐと・・・

[SM5](Node SceneTexure)SceneColor lookups are only available when MaterialDomain = Surface.
PostProcessMaterials should use the SceneTexture PostProcessInput0.
というエラーになります。
早い話がシーンテクスチャのシーンカラーを繋いで良いのはマテリアルドメインがSurfaceの時だけで、
マテリアルドメインがポストプロセスの場合はシーンテクスチャのPostProcessInput0を使わなければならないと・・・
これはUE4のバージョンが上がった事で、仕様変更された為エラーになるみたいです。
Epic側としてはポストプロセスにシーンカラーを用いる事は推奨していないというか・・・そういう使い方をするとは思っていなかったみたいで・・・突如仕様修正されたみたいです。

これは単純にシーンテクスチャをPostProcessInput0に変更したら済む話じゃなかったりします。

コンパイルは通りますが、この章で意図している動作にはなりません。
なぜならPostProcessInput0にする事で、PostProcessVolumeで画面全体にガウスをかけた状態のデータが入って来るので、
PostProcessVolumeのDepthOfFieldメソッドのチェックを外さなければなりません。
勿論そうする事でガウスの効果が適用されなくなる為、マテリアルブループリント側でシーンテクスチャPostProcessInput0の出力に対してガウスをかける必要が出てきます。
海外のUE4 AnswerHubで調べてみましたが、なんとマテリアルにガウスをかける関数は無いらしいですw
なのでガウスをかけるカスタムノードを自作するのが一般的のようです。
・・・てゆかEpic側で変な仕様変更入れたのなら、ガウスをかけるノードくらい用意して貰いたいですね。
とりあえず、この章のやり方でのポストプロセスマテリアル自作は詰んでしまって、これ以上進めないので・・・
(カスタム関数を追加してBPでガウスをかければ済みますが、とりあえず本書を全て読んでから後でやりたいと思います。)
なんちゃってDoFで対応します。

いや、普通にPostProcessVolumeのDepthOfFieldメソッドをそのまま使うだけなんですけどねw
マテリアルの勉強にはなりませんが、仕方ないですw

とりあえずカメラ距離が1500なので、それに合わせてFocalDistanceを1500にして、RegionとNearRegionを調整して、それっぽく見えるようにしました。
手前のオブジェクトが思いっきりボケちゃいましたけど、今回はこれでw
あと、マテリアル系の参考書も購入しようかと考えていましたけど、バージョンアップによって以前の方法が全く使えなくなる事を考慮したら・・・
マテリアル系の本は買わないで公式ホームページのマニュアルだけで勉強した方が良さそうな気がします。
- 関連記事
-
-
UE4でカスタムフォントを使用して日本語フォント利用するメモ①
-
【UE4】パーティクルの放出を一回だけにする
-
【UE4】ホストプロセスマテリアルSceneTexture:SceneColorでエラー
-
【UE4】Destinyのハンターっぽいトリプルジャンプ
-
【UE4】LineTraceByChannelエラー
-