大家好,我是阿赵。
之前几篇文章,已经介绍了地面交互的轨迹做法。包括了法线、曲面细分还有顶点偏移。Shader方面的内容已经说完了,不过之前都是用一个球来模拟轨迹,这次来介绍一下,怎样和角色动作结合,做出足迹(FootPrint)的效果。
一、足迹贴图的准备
之前用球做效果的时候,是用RGB作为法线,然后A通道作为高度图的,所以这里准备一张脚印的贴图,也是同样的道理:
由于我这张法线贴图是直接在Photoshop里面用灰度图转的,所以不是特别的准确。
二、和角色动作结合
在角色的脚部骨骼上,建2个面片,然后把刚才的脚印贴图赋上去
这个时候,脚印就会跟随这角色的脚步动作而已动。给这个脚印设置一个专门的Layer,这个Layer在主摄像机是看不到的,只有顶部拍摄的摄像机看得到。
做完这一步之后,我们要修改角色的动画,因为脚印不可能一直看得到,只有角色踩在地上的时候,才会看到。
可以看到,只有踩下去的2-3帧,才会看到脚印,抬起来的脚,要把脚印隐藏掉。
由于我这张法线图比较浅,所以有点难看得清,我用红框框起来。
在角色动起来的时候,顶部摄像机就会拍摄到连续的法线和高度图,形成了脚印。
Unity引擎制作沙地实时凹陷网格的脚印效果
三、在雪地里面的特殊处理
刚才的做法,是在平地或者沙地这张不会凹陷很深的地方,所以只需要一个脚印范围就行了,不过如果是凹陷比较深的雪地,只有2个脚掌来渲染脚印是不够的,会出现这样的情况:
这是因为,不止是脚底会碰到雪地,大腿腰部臀部其实也会对雪地造成影响。
这时候需要做一下处理,把角色脚底的脚印放大一些,这样在雪地里面踩出来的脚印范围,大概和大腿的范围差不多,然后再在腰部加一圈,作为补充。
Unity引擎制作雪地效果
这样做完之后,就可以做出比刚才合理的效果了。如果角色细节还是不够,可以继续调整脚部和腰部的图,或者两者的深度图做成不一样,比如腰部的alpha浅一点,脚底的alpha深一点。这样也可以做出脚底的脚印踩得明显一点,腰部挤开的深度会没那么深的效果。