论文部分内容阅读
基于物理的布料模拟和渲染方法在3D图形学领域被广泛的应用,但由于布料具有结构复杂、质地柔软等特性,布料的模拟也成为了计算机图形学的一大研究热点与难点。不同材质的布料体现出不同的动力学特征,如何实时模拟出不同的布料材质以及实现不同材质的布料的运动特征具有重要的意义。首先,实现不同材质布料的运动,关键在于使用合适的模型来构建布料的结构。我们使用以三角形为载体的质点弹簧模型进行布料建模,在这个模型中,将布料看作是一个包括质点和弹簧的网状结构,每两个质点之间通过一根弹簧进行连接。质点之间的运动遵循牛顿第二运动定律,本文使用改进后的欧拉积分法对其进行数值求解,在当前时刻与下一个时刻中间再进行一次速度与位置的计算,不仅会减小大时间步长下的误差,还会提高整个系统的稳定性。其次,为了模拟不同形态的布料,本文引入Perlin噪声函数构建一个速度可变的随机风场,真实且实时地模拟出布料在不同速度的风场中的运动。当布料与刚体发生碰撞之后,使用球体包围盒进行碰撞检测,根据检测结果进行碰撞响应,使其不发生穿透现象,实时模拟出不同硬度的布料与刚体碰撞后的形态。再次,为了有效实时地模拟出不同材质的布料,本文使用一种基于物理的光照模型—BRDF模型与法线贴图相结合的方法对布料的材质进行渲染。BRDF模型可以很容易地建立出在不同光照环境下都接近真实的材质来。其中主要是对照射到布料上的光线的反射和散射进行计算,反射的计算为高光的计算,包括法向分布项、阴影-遮罩项以及菲涅尔反射项;散射的计算为漫反射计算。同时,对现有的获取不同布料材质表面反射数据的方法进行分析比较,使用法线贴图来获取布料材质表面的法线,不仅不需要昂贵的设备和复杂的方法,还可以加快材质渲染的速度。最后,本文使用Windows系统,在Unity3D 4.6引擎平台上结合C#语言和Shader渲染,设计开发不同材质布料的多形态实时渲染仿真系统。本文的方法能够模拟以质点弹簧为布料模型的不同材质的布料的多形态效果,且模拟的细节度、真实感都能得到加强,并且也满足实时性的要求。