赞
踩
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骨骼动画
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。