Unreal Engine 5でのプロジェクトにおいて、キャラクターと背景が受けるライトの影響を分けたいと考えています。ライトチャンネルを用いることでディレクショナルライトなどの特定のライトを分けることは可能ですが、私が求めているのは、背景のコントラストをそのままに、キャラクターの陰のみを薄くすることです。
キャラクターのマテリアル設定で影面にマスクを適用し薄くする方法もありますが、複数のライティングパターンが存在するプロジェクトでは、それらに基づいてキャラクターが受ける影の濃さを調整する方が都合が良いと考えております。
ライティングパターンごとにキャラクター専用のスカイライトを強化することが最も自然なアプローチだと考えていますが、スカイライトでライトチャンネルを分ける方法、またはライトチャンネルやマテリアル設定以外でキャラクターの影の濃さを制御する方法はあるのでしょうか?
さらに、ライトチャンネルを分けた場合、複製したディレクショナルライトのライトチャンネルを分けると、キャラが落とす陰のちらつきや、地面に影が落ちないという問題が発生します。操作としては、シーンでキャラライト用にディレクショナルライトを複製し、さらにそのライトとキャラそれぞれのチャンネルを1に分けた後にプライオリティの設定変更を行いました。
これらの解決策を教えていただければ幸いです。
よろしくお願いいたします。
※UE5.3で検証しています
VirtualShadowMapの利用をやめ、従来のShadowMapに戻せば、DirectionalLightのShadowAmountで影の濃さの調整ができます
ライトチャンネルを分けた場合、複製したディレクショナルライトのライトチャンネルを分けると、キャラが落とす陰のちらつきや、地面に影が落ちないという問題が発生します。
ちらつきはわかりませんが、地面に影が落ちないのは仕様通りです
LightingChannelを分けるということは、シーンを分けると同義だと考えたほうが良いです
影は「キャラクターがLightを遮る」ことで発生し、「地面」に描かれます
なので、正しく解釈するためには両方とも同じシーンになければならないのですが
今の設定では、Channelごとにどちらか片方しかありません
仮に地面がChannel0、キャラクターがChannel1に設定されているとすると
Channel0ではキャラクターがいないのでキャラクターの影は落ちず
Channel1では影を描くべき地面がないので影は落ちません
なので、地面にキャラクターの影を落としたいのであれば
少なくとも1Channel(地面に影を落としたいLight)は、地面とキャラクター両方が関係するようにする必要があります
1 Like