风沙运动和沙波纹演化的实时模拟:一种基于风沙物理学的方法
Real-Time Simulation of Aeolian Sand Movement and Sand Ripple Evolution: A Method Based on the Physics of Blown Sand
-
摘要: 风沙运动和沙波纹演化的实时模拟是一项具有挑战性的研究课题。本文针对自然界中广泛存在的风沙运动,提出了一种基于物理的建模和模拟方法。该方法可以动态、实时的合成多种类型的沙床地形,并且能够绘制具有高度真实感的风沙流。与计算机图形学中已有的水力侵蚀、热力风化、化学风化等相关工作相比,本文是风力侵蚀模型在计算机图形学中的首次应用。具体说来,本文在模型方法、实现方法、绘制效果及应用三方面进行了创新:在模型方法上,本文的建模方法主要借鉴了风沙物理学中单个沙粒的运动力学机制。该力学机制在风沙物理学中已经受到广泛的关注和研究,而在计算机图形学中却是第一次得到应用。本文的建模方法将整个模型划分为四个子模型:风沙流子模型、沙床子模型、植被子模型和风场子模型。其中风沙流子模型表示运动中的沙粒,沙床子模型表示静止的沙粒,二者在模拟过程中可以相互转化,并共同组成了模拟环境中的所有沙粒。本文将风沙物理学中最重要的沙粒运动机制引入模型当中,例如跃移、相继跃移、蠕移和沙床崩塌;同时为了实现三维的实时模拟和可视化,对模型中某些难以承受的内容进行了适当简化,例如简化植被子模型和风场子模型。通过调节各种物理参数,例如风速、风向、表面粗糙度等,该方法可以得到多种类型的、符合物理机制的沙床地形。在实现方法上,本文中的模拟和绘制均尽可能在图形处理单元(GPU)中实现,充分利用了GPU的高性能和可编程灵活性,在提高了性能的同时又减轻了CPU的计算负担,避免了数据在CPU和GPU之间的传输,实现了三维沙漠场景动态、实时的演变模拟和可视化。在绘制效果及应用上,本文利用了沙波纹和沙丘的几何相似特性,以及模拟生成沙床的包裹(wrap)特性,提出了一种简单有效的合成大规模沙漠场景的方法。其中沙床地形部分(静止的沙粒)采用分层数据结构表示,通过绘制沙丘和沙波纹两个尺度的地形高度场来绘制沙漠地形;风沙流(运动的沙粒)采用软粒子精灵技术,分两个尺度对跃移沙粒和悬移沙粒进行了运动模拟和可视化。通过最终绘制出的场景和动画可以反映出,该方法简单有效,符合风沙物理机制和视觉原理,可以用于大规模沙漠场景的参数化合成。实验部分通过若干模拟实验以及最后的绘制效果表明,本文提出的方法可以有效的模拟大量沙粒的运动以及沙波纹的演化过程。实验结果不仅在绘制效果上真实,而且具有动态、实时、模拟过程符合物理机理、模拟结果参数可控等优点,因而具有广泛的应用价值。本文的研究工作早期是在shader model 3.0的基础上实现的。当时的GPU架构还不能有效处理序列分配和释放(serial allocation and deallocation)、分散写(scattered write)等问题,因此模型中沙粒的生成和死亡、高度场更新等应用还不得不依赖于CPU。后来shader Model 4.0中几何着色器(geometry shader)的出现给其中一些问题带来了新的解决方案,但是几何着色器图元生成的效率并不高,解决大规模的运算问题还不理想。而shader Model 5.0中计算着色器(compute shader)的出现有望使得本文的方法能够完全在GPU上执行。尽管关于GPU通用计算的实用性Intel和NVIDIA两大厂商还在争论不休,但可以肯定的是,对于以计算机图形学为应用背景、模拟后需要立即绘制的应用问题,GPU的优势则是毋庸置疑的。鉴于这一点,未来的工作可以在实现方法上进一步改进,以实现模拟和绘制完全在GPU上进行,预计这将进一步提升模拟和绘制的规模及效率。另外可以使用模拟生成的沙波纹高度场作为参考高度场,借鉴07年Zhou等人提出的手绘草图合成地形的方法,交互式合成沙漠场景。Abstract: Simulation and visualization of aeolian sand movement and sand ripple evolution are a challenging subject. In this paper, we propose a physically based modeling and simulating method that can be used to synthesize sandy terrain in various patterns. Our method is based on the mechanical behavior of individual sand grains, which are widely studied in the physics of blown sand. We accounted significant mechanisms of sand transportation into the sand model, such as saltation, successive saltation and collapsing, while simplified the vegetation model and wind field model to make the simulation feasible and affordable. We implemented the proposed method on the programming graphics processing unit (GPU) to get real-time simulation and rendering. Finally, we proved that our method can reflect many characteristics of sand ripple evolution through several demonstrations. We also gave several synthesized desert scenes made from the simulated height field to display its significance on application.