摘要
在计算机三维动画领域中,通过模拟类似脂肪等软体的动态效果,能为模型形变带来更丰富的视觉效果。传统的模拟软体形变的方法受限于复杂的物理计算,往往需要昂贵的时间成本。近年来,位置动力学因其简单快速的物理模拟框架,被大量应用于实时应用中。位置动力学方法通过对模型的粒子系统施加形状匹配等约束来控制粒子间的位置关系,模拟软体的形变。 在实际的计算过程中,位置动力学方法通过高斯赛德尔迭代来计算模型约束集合的近似解,即约束按顺序逐个求解约束。这种顺序求解的迭代方式带来了较大的时间开销,限制了位置动力学方法在需要实时进行软体形变模拟中的应用。 本文以基于位置动力学的软体蒙皮动画为研究对象,详细研究和分析了包含高斯赛德尔解算器、雅可比解算器和分组并行解算器在内的几种现有的约束求解方案,实现了一种更高效的基于GPU的约束并行解算方案,能加速软体变形的实时模拟。本文的核心思想是在预处理阶段对约束先进行解耦然后分组,将没有耦合关系的约束划分为同一组,同组内的约束可以通过GPU并行执行。组和组之间采用串行的方式。此外,本文采用了分层体素模型能进一步改善模型形变过软的问题。具体来说,本文的主要工作包括: ?提出一种基于图着色的约束解耦分组的方案。本文将约束分组看作图着色问题,没有耦合关系的约束被分为颜色相同的一组。由于约束间耦合复杂,导致直接着色的分组结果较差,组数较多。又因为每一组都调用一次GPU并行计算流程,而组与组之间是串行过程,因此约束划分的组数会影响并行效率。为了减少GPU调用次数来提升整体的并行效率,本文通过在约束中插入额外的粒子来降低约束间的耦合程度,从而降低约束图的着色下界,将着色数也就是约束的组数控制在自定义的?q左右。 ?采用分层体素模型提高软体的变形质量。为了改善某些情况下模型变形过软的问题,本文将模型体素化后的粒子进一步分为骨骼层、肌肉层、脂肪层和皮肤层。通过调整不同层的刚度系数,来控制不同层变形的软硬程度,使整体变形更加流畅自然。 ?采用二次变形的蒙皮方法模拟软体形变。本文将实时形变过程分为两个阶段:首先进行初级运动,骨骼层粒子按照线性蒙皮算法直接移动位置;其次进行第二次运动,由于骨骼层粒子的移动会引起约束状态改变,因此其它层次的粒子通过PBD框架进行约束迭代求解来获得新的移动位置。两种变形方法结合可以模拟类似脂肪抖动的弹性变形,提升蒙皮质量。 实验结果表明,通过体素分层和二次变形的方法,本文可以实时生成具有脂肪抖动等软体变形效果的模型动画。同时,本文提出的约束解耦方法可以有效降低约束间的耦合程度,减少约束的组数。在效率方面,相比于基于CPU的高斯赛德尔方法,本文的约束先解耦再分组并行的方法显著提升了约束求解的效率。