当前位置:   article > 正文

关于GPU骨骼动画的一些研究与尝试

gpu骨骼动画

1.首先原理: 我们的人物之所以能够蒙皮跟着骨骼动是因为Mesh中的顶点按照权重挂在了骨骼上,即他的模型空间的根节点就是骨骼点,之所以有权重是因为Mesh通常由多个骨骼进行控制.所以当骨骼移动时,对应mesh的顶点就会根据骨骼的矩阵进行刷新

2.替代原理:上面是动画的原理,那替代就很好办了,我们首先将骨骼动画记录到一个Texture上,然后传入材质中,让每个mesh读取骨骼的矩阵,进行直接渲染. 

3.遇到的关键点:

1.首先是骨骼动画的记录.因为矩阵是4x4的结构,但是最后一行是通用的(0,0,0,1) 那么我们就只需要记录单个float4就行,这块有些做法是使用四个颜色值进行计算,这块就是会慢一点,需要做计算转换,其次就多一分计算的风险,增加调试链长度.

2.如何告诉每个顶点他需要用那两个骨骼点,这块使用自带的bone_index, bone_weight,这块是与SkinMeshRender中的bones,相关联,他的index就只这个数组的,这块的话就会出现一个问题,如果我们将每个skinMeshRender中的bones都生成骨骼动画就会导致大量的重复,如果我只想做一份骨骼动画的记录,那么就要做个映射表,简单来说就是传入一个int数组与整体的骨骼动画Texture,我可以通过index获取对应的骨骼在Texture的位置.

3.剩余的就简单了,切分每个动画的帧数,指定动画对应循环播放

GPU骨骼动画

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/116843
推荐阅读
相关标签
  

闽ICP备14008679号