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

本文详细介绍了如何通过GPU技术实现在大规模场景中进行骨骼动画的高效渲染,包括利用纹理存储骨骼动画、处理矩阵转换和权重计算、优化重复骨骼问题以及管理动画帧播放。作者还分享了项目实现和控制细节。
摘要由CSDN通过智能技术生成

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骨骼动画实现,千人同屏,单个角色自主控制,丝滑享受_哔哩哔哩_bilibili

GPU骨骼动画

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值