zoukankan      html  css  js  c++  java
  • 移动端Mesh限制


    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算矩阵,效率太低,不推荐。

    参考源代码

    本博客文章默认使用CC BY-SA 3.0协议。
  • 相关阅读:
    9月9号作业
    9月9号笔记
    jupyter的补充
    jupyter的使用
    9月6号作业
    编程语言的分类
    计算机组成
    计算机组成的补充
    面向对象基础
    9月2号作业
  • 原文地址:https://www.cnblogs.com/yejianying/p/14867267.html
Copyright © 2011-2022 走看看