Dust3D项目实训十二 | 基于skinnedmeshcreator的蒙皮网格生成分析

2021SC@SDUSC
摘要由CSDN通过智能技术生成

2021SC@SDUSC

目录

分析概括

模块功能

 ​ 网格蒙皮详解

关键代码分析

SkinnedMeshCreator.h分析

SkinnedMeshCreator.cpp分析

SkinnedMeshCreator()函数

createMeshFromTransform()函数


分析概括

模块功能

此模块主要用于网格蒙皮的生成以及几何体发生变换后网格蒙皮的更新,在进行位置变换后部分网格发生了数量和位置的变换,而skinnedmeshcreator的功能就在于适配这种变换使任何情况下都形成合适的蒙皮网络

  
网格蒙皮详解

网格是蒙皮和自由变形的基础,蒙皮的本质也就是让骨骼控制网格上的点。 如果一个点受 N 个骨骼影响,那么这些根骨骼将按百分比,分配谁控制的多,谁控制的少(权重)。在蒙皮的过程中,主要的工作就是让权重值分配的合理。蒙皮的详细过程为:

  1. 创建好骨骼和网格点

  2. 添加影响骨骼

  3. 调整权重。设置权重值:选中指定的点,再指定好它受哪个骨骼影响,然后调值

关键代码分析

SkinnedMeshCreator.h分析

class SkinnedMeshCreator
{
public:
    SkinnedMeshCreator(const Object &object,
        const std::map<int, RigVertexWeights> &resultWeights);//构造函数
    Model *createMeshFromTransform(const std::vector<QMatrix4x4> &matricies);//在变换中创建网格
private:
    Object m_object;
    std::map<int, RigVertexWeights> m_resultWeights;
    std::vector<std::vector<int>> m_verticesOldIndices;//旧索引顶点
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值