基于Shader的过程式动画实现
研究了一下顶点动画并记录下思路,先看一下效果。
这个可不是多个mesh做的效果,一个mesh要想做这个效果在一些DCC软件种实现起来很容易但转到游戏引擎需要做点调整,利用着色器代码可以实现很多功能和特效,顶点动画大部分在顶点着色器中进行也可以在几何着色器中操作。
这两个效果就是在GeometryShader中对三角图元进行操作沿着法线方向偏移再结合旋转矩阵实现的,除此之外几何着色器还可以对点和线图元操作,之前也写过一篇关于几何着色器的记录。回到最初那个效果,如果想要通过顶点着色器实现这个效果一般的手段是不行的需要借助一下建模时留下的一些信息,比如UV通道和顶点色就是一个思路,参考GDC2013Fortnite基于Shader的过程式动画可以将一个子块保存一个顶点色,这样就可以把一个StaticMesh当成一堆StaticMesh的集合进行处理.
GDC2013:Fortnite基于Shader的过程式动画
首先给物体的子块加上不同的颜色,并做编号以便在引擎中确定顺序,如果要做大型的过程式动画还需要制定一个规范确定整个流程。然后需要确定目的位置和间隔效果这就需要根据自己需求来确定了。
总之如果需要大量的过程式动画的时候又不想做很多繁琐的动画又想节约CPU性能,基于Shader的过程式动画便可以解决这些问题,最后再看几个做的好的示例。
GDC链接:www.youtube.com/watch%3Fv%3D7Fl3so0Z5Tc