assimp中aiMesh::mMethod字段含义及morphing变形方法对应整数值说明
assimp库
aiMesh结构体mMethod字段说明 你给出的字段定义代码片段如下:
struct aiMesh { /*...*/ /** * Method of morphing when anim-meshes are specified. */ unsigned int mMethod; /*...*/ };
字段含义
该字段的作用为:当网格绑定了形变动画网格(即morph target/变形目标动画资源)时,标记顶点形变混合计算需要遵循的规则。
对应变形方法种类与取值
该字段取值和assimp内置的aiMorphingMethod枚举一一对应,枚举共定义了4种取值,其中1种为未知占位状态,3种为可实际落地的变形计算方法,具体对应关系如下:
- 取值
0:对应aiMorphMethod_Unknown,属于默认占位值,代表导入的模型文件没有明确指定形变计算规则,没有对应的实际变形逻辑。 - 取值
1:对应aiMorphMethod_VertexBlend,顶点直接混合模式,是最通用的形变实现方式。计算时直接按照每个变形目标的权重,对所有目标的顶点属性(位置、法线、切线、UV等)做加权求和,得到当前帧的最终顶点数据。 - 取值
2:对应aiMorphMethod_MorphNormalized,归一化权重混合模式。计算逻辑和顶点直接混合基本一致,唯一区别是计算混合结果前会先把所有变形目标的权重做归一化处理,保证所有权重总和为1,避免权重和异常导致的网格形变错位、缩放问题。 - 取值
3:对应aiMorphMethod_MorphRelative,相对偏移混合模式。这种模式下动画变形网格不需要存储完整的顶点属性,只需要存储相对于基础绑定姿态网格的顶点属性偏移量,计算最终顶点时只需要在基础网格属性上叠加各权重对应的偏移值即可,能大幅降低形变动画的内存占用。
内容的提问来源于stack exchange,提问作者Andrew Tomazos
相关产品推荐
相关产品推荐

