首页 > 移动平台 > 详细

移动端Mesh限制

时间:2021-06-09 18:27:57      阅读:20      评论:0      收藏:0      [点我收藏+]

技术分享图片
Skinned Mesh虽然这里写死了限制最多75个骨骼,实际上可以通过修改引擎源代码来放宽限制:

技术分享图片

这里的代码来自Engine/Source/Runtime/RHI/Public/RHIDefinitions.h,修改上方的“75”就可以放宽骨骼数量要求。通常建议放到256。

另外说一下为什么限定75:GLES2.0时代寄存器数量有限,于是就在引擎里限制死了骨骼数量。但是在GLES 3.0不需要这种限制,所以可以直接在源代码里面改大限制。

除了直接改代码还可以:

一是用贴图存储矩阵,但shader里不好处理旋转和缩放,因为将矩阵转成四元数再插值旋转很麻烦,所以到这一步我就放弃了,直接用矩阵插值旋转。同样也不方便支持IK等骨骼动画的融合
第二是用类似分材质的方式,比如说将身体分成头身脚,这样它们就是单独的模型,但是他们可以共用同一套骨骼。在CPU每帧计算完没根骨骼的矩阵之后,需要把矩阵传进GPU。但是就没必要在进行渲染的时候整套骨骼都传了,只需要传影响这部分的骨骼。比如全身75根,影响头的只有20根,那其实渲染就可以只传20根。缺点就是得手动处理映射关系,以及1个部位就是1个Drawcall。
第三纯CPU算矩阵,效率太低,不推荐。

参考源代码

移动端Mesh限制

原文:https://www.cnblogs.com/yejianying/p/14867267.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!