[嘭嘭养成记]5. 基于蒙皮网格顶点绑定骨骼权重的模型切分

本文介绍了3D模型基于蒙皮网格顶点绑定骨骼权重的切分方法,从最初的关节遍历思路到采用寻路算法的更新,探讨了模型表面连续性问题,并提出解决方案,包括根据顶点boneWeight值决定归属,以及处理共享顶点的方法。最后讨论了未来改进方向,如拆分bones和添加表面处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最初的想法

(这一部分基本流程已经废弃了)
基本流程:
1. 做一些indexing,方便后边的计算;
2. 对于一个要切分的关节,记录其所有父关节和子关节。遍历所有三角形,如果三角形的绑定横跨了该关节的父关节和子关节,那么将这个三角形加入“感兴趣的三角形”列表中,否则各自计入父关节之三角形列表,和子关节之三角形列表;
3. “感兴趣的三角形”列表应当至少包含一个带状闭环,或者有一些多余数据。在这些“感兴趣的三角形”中,找到三角形边所组成的闭环,然后为闭环生成表面;
4. 闭环表面+父关节之三角形列表 = 父关节部分的Mesh,闭环表面+子关节之三角形列表 = 子关节部分的Mesh。

三问聚聚提出剪开+寻路的方法简直6啊~


2018.3.13 更新

基本流程:

按照寻路的想法,做到了大约三天左右……中间碰到了非常非常非常多需要特殊考虑的情况——特殊情况真是最费劲的事情了!终于在今天下午代码可以跑起来了。
然后——我发现这个设计有个巨大的缺陷!!!那就是!!!模型表面并不是连续的!!!!!所以,剪开、寻路,以及闭环,都~没有~
于是下边是简化了的方案……好心疼三天以来抓耳挠腮写代码的我 (;へ:)
不过……竟然觉得这几天写代码写得超爽的说……_(:з」∠)_

  1. 把mesh上的所有三角形,按照其三个顶点上的boneWeight值,决定其应当属于父亲还是属于孩子。把父亲和孩子的三角形分别存储起来。
  2. 那些同时和父亲和孩子有关的顶点,应当重设其boneWeight为只和一个部分有关联。那些同时属于父亲和孩子的顶点则复制一份。
  3. 根据父亲的三角形和孩子的三角形分别生成Mesh。

效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值