虚幻4捏脸的ShadowMap投影包围盒算法再改进

在之前的ShadowMap投影矩阵包围球构造方式改成Fit To Scene后,很好的满足了少量角色投影展示的渲染需求:

Image

左边原生的阴影投影特意把Dynamic Shadow Movable Distance调到最小情况,恰好没有Shadow Cut的情况(当前视角的最小值),但投影Bounds还是因为太大直接跑到屏幕外了233。

而右边的投影Bounds与Dynamic Shadow Movable Distance无关,仅根据动态投影包围球做计算。

但现在只是对角色全体Bounds做一次投影,实际上在捏脸环境(相机FOV特别小的时候)中还应该再来一次裁剪。

我在Fit To Scene的基础上,再根据视锥对角色包围球做一次裁剪,示意图如下:

Image

其中P2是视锥远平面,P1经过包围球中心的平行于P2的一个平面,只需要计算出相机视线与P1的交点,将其作为新的包围球球心,然后根据相机FOV计算出P3,P4,P5,P6,取其截面的最大距离值作为新包围球的半径。

Image

不过新改的这玩意仅适用于角色solo展示,因为它用了相机的视锥来构建Bounds,在下面这种情况下会有问题:

Image

可以看到蓝色的投影范围是视线内的物体bounds构成的,因此,真到游戏里面跑,就应该使用之前的FitToScene方式:

Image

© - 2024 · 月光下的旅行。 禁止转载