距離によるカリング
UE4 | 4.16.1 |
距離によるカリングとは
プレイヤー位置(PlayerCameraManagerが現在扱っているカメラ位置)からの距離でカリング(非表示)を行う設定
UE4ではデフォルトでオクルージョンカリングと視錐体カリングが有効になっているけれど、この機能が必要な場合は手動でセットアップする必要がある
LOD, HLODなどは画面内の割合に応じてDetailが決定するため、例えばゲーム内距離は離れているオブジェクトでも、スコープで拡大注視するとDetailが上がるなどになるが、この機能に関しては、プレイヤー距離が設定以上離れていたら一切描写は行われない
WorldOutlinerからアクタ毎に個別に設定を行う方法と、Cull Distance VolumeというVolumeをレベル内に配置して設定する2通りの方法がある
WorldOutlinerからの設定
距離によるカリングを設定したいアクタを選択し、
Detailタブ > Rendering > LODを開く
Min Draw Distance | 描写を保証する最低距離 |
Desired Max Draw Distance | 距離に寄るカリングを発生させる閾値、Desiredというのは後述するCullDistanceVolumeにより変化する可能性があるため |
Current Max Draw Distance | 実際に設定されたカリングの閾値、CullDistanceVolumeの影響がない場合、DesiredMaxDrawDistanceがそのまま反映される、0ならカリングは行われない |
Allow Cull Distance Volume | 後述するCullDistanceVolumeの影響を受けるかどうかの設定 |
Desired Max Draw Distanceを100に設定したアクタは、Runtimeで1m離れた瞬間に強制的に描写されなくなる
Cull Distance Volumeからの設定
Level内にCullDistanceVolumeを配置し、距離によるカリングを設定したいアクタを覆う用に配置
配置したVolumeのCullDistances内の配列を設定することで、Volume内に存在するアクタに対しMaxDrawDistanceを設定する
またVolumeはアクタのサイズを確認し、サイズごとに異なるMaxDrawDistanceを設定している、
画像では、一つ目のSizeが0, 二つ目のSizeが300なので、この場合の閾値は 150 となっていて、 150以下のアクタに対してはMaxDrawDistanceを500, 150以上に対してはMaxDrawDistanceを1000を設定するという状態(設定した配列数 - 1 の閾値が発生し、割当が行われる)
配列最後のCullDistanceは0としておくことで、閾値最大以上のアクタは(巨大)必ずどこからでも見える(距離によるカリングを発生させない)としておくことが出来る
またこのさい実際に設定されたDrawDistanceを確認したい場合は、前述したWorldOutlinerから個別にアクタを選択することで確認することが可能、Desired Max Draw DistanceはCullDistanceにより設定されたDrawDistanceより小さい値の場合、ユーザーが任意で上書きできるようになっている