论文部分内容阅读
图形学的发展与计算机的普及,使得由它们构建的虚拟世界深入到人们生活的方方面面,尤其是在电影动画和游戏娱乐等领域得到广泛应用。而布料模拟是虚拟世界构建的重要一环,然而布料形态多变的特性,使得较好的布料模拟较为困难。为了能够逼真、快速、稳定地模拟布料,以满足实时交互应用的要求,国内外众多学者投入到布料模拟的研究中并取得了一定的研究成果。本文选取位置动力学方法作为布料模拟研究的基础。针对位置动力学方法中约束调整顺序仅仅依赖于数据结构的问题,通过对真实世界布料受力运动以及力的传播情况进行详细分析,模拟布料在外力作用下由受力始发点开始,通过形变传播力的过程,提出了基于固定点传播的约束调整顺序。对布料拓扑结构,首先从固定点开始,通过广度优先搜索对质点处理顺序进行排序,再根据质点处理顺序对质点相关约束进行排序,以此顺序进行约束处理,避免了盲目迭代计算。实验表明,提出方法相比不使用该方法具有较逼真的模拟结果,且在达到平衡状态的收敛效率上具有更好的表现。为了对布料进行动态模拟,需要运用数值求解方法求解质点运动方程。本文研究对比布料模拟中几种常用数值积分方法,分析表现较好的Verlet积分法,并针对其速度计算不同步问题,选取了速度Verlet法作为本文数值求解方法。而对于速度Verlet法不适用于位置动力学计算的缺陷,推导出了适合位置动力学的计算形式,在不增加计算量的情况下仍然具有不低于速度Verlet法的精度。另外,对于速度Verlet法加速度计算不依赖于速度的问题,从简化力学模型与速度预测再修正两方面给出了改进方案。为了使布料不在与其它物体接触以后发生穿透,需要对虚拟世界中的碰撞进行检测并作出响应。本文基于时空相关性,使用层次包围盒方法进行碰撞检测。首先使用排序扫描算法,在最顶层包围盒排除不相交物体,避免了存在多个物体时的包围盒两两相交测试。然后对于潜在碰撞物体进行层次包围盒逐步求精检测,并在包围盒树构造与遍历等方面做出优化处理,提升效率。