我的github

摘要:

This dissertation describes the wave particles technique for simulating water surface waves and two way fluid-object interactions for real-time applications, such as video games.

本文描述了用于模拟水面波的波粒子技术和用于视频游戏等实时应用的双向流体-物体相互作用。

Water exists in various different forms in our environment and it is important to develop necessary technologies to be able to incorporate all these forms in real-time virtual environments. Handling the behavior of large bodies of water, such as an ocean, lake, or pool, has been computationally expensive with traditional techniques even for offline graphics applications, because of the high resolution requirements of these simulations.

水在我们的环境中以各种不同的形式存在,开发必要的技术以将所有这些形式融入实时虚拟环境是很重要的。处理大型水体(如海洋、湖泊或游泳池)的行为,即使对于离线图形应用程序,传统技术的计算成本也很高,因为这些模拟的分辨率要求很高。

A significant portion of water behavior for large bodies of water is the surface wave phenomenon. This dissertation discusses how water surface waves can be simulated efficiently and effectively at real-time frame rates using a simple particle system that we call \wave particles." This approach offers a simple, fast, and unconditionally stable solution to wave simulation. Unlike traditional techniques that try to simulate the water body (or its surface) as a whole with numerical techniques, wave particles merely track the deviations of the surface due to waves forming an analytical solution. This allows simulation of seemingly infinite water surfaces, like an open ocean.

对于大型水体来说,水的行为有很大一部分是表面波现象。本文讨论了如何使用我们称之为波浪粒子的简单粒子系统以实时帧速率高效地模拟水面波。“这种方法为波浪模拟提供了一种简单、快速、无条件稳定的解决方案。与试图用数值技术模拟水体(或其表面)作为一个整体的传统技术不同,波浪粒子只跟踪由于波浪形成分析解而导致的表面偏差。这允许模拟看似无限的水面,比如开阔的海洋。

Both the theory and implementation of wave particles are discussed in great detail. Two-way interactions of floating objects with water is explained, including generation of waves due to object interaction and proper simulation of the effect of water on the object motion. Timing studies show that the method is scalable, allowing simulation of wave interaction with several hundreds of objects at real-time rates.

详细讨论了波粒子的理论和实现。解释了漂浮物体与水的双向相互作用,包括物体相互作用产生的波浪,以及水对物体运动影响的适当模拟。时序研究表明,该方法是可扩展的,可以实时模拟波浪与数百个物体的相互作用。

Contents(目录)

I INTRODUCTION(简介) : : : : : : : : : : : : : : : : : : : : : : : : : : : 1
1.1. Motivation of Wave Particles(波动粒子的动机) . . . . . . . . . . . . . . . . . . 6
1.2. Summary of Wave Particles(波动粒子的总结) . . . . . . . . . . . . . . . . . . . 8
1.3. Overview(概述) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
II RELATED WORK ON WATER SIMULATION(水模拟的相关工作) : : : : : : : : : : 12
2.1. Explicit Surface Modeling(显式曲面建模) . . . . . . . . . . . . . . . . . . . . 12
2.2. Height Field Simulations(高度场模拟) . . . . . . . . . . . . . . . . . . . . 13
2.3. Lagrangian Fluid Simulations(拉格朗日流体模拟) . . . . . . . . . . . . . . . . . . 14
2.4. Eulerian Fluid Simulations(欧拉流体模拟) . . . . . . . . . . . . . . . . . . . 15
2.5. Real-time Fluid Simulations(实时流体模拟) . . . . . . . . . . . . . . . . . . . 18
III WATER SIMULATION WITH WAVE PARTICLES(波动粒子水模拟) : : : : : : : : 21
3.1. Visual Analysis of Large Bodies of Water(大型水体的可视化分析) . . . . . . . . . . . 21
3.2. The Wave Equation(波动方程) . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.1. 1D Wave Equation(一维波动方程) . . . . . . . . . . . . . . . . . . . . 24
3.2.2. 2D Wave Equation(二维波动方程) . . . . . . . . . . . . . . . . . . . . 25
3.3. Representing Waves with Particles(以粒子的方式表示波) . . . . . . . . . . . . . . . 26
3.4. Wave Particles in 2D(二维波动粒子) . . . . . . . . . . . . . . . . . . . . . . . 27
3.5. Wave Particles in 3D(三维波动粒子) . . . . . . . . . . . . . . . . . . . . . . . 29
3.5.1. Linear Wavefronts(线性化波前) . . . . . . . . . . . . . . . . . . . . 30
3.5.2. Expanding and Contracting Wavefronts(扩展和收缩波前) . . . . . . . . 31
3.6. Diffraction and a Valid Solution to the Wave Equation(衍射与波动方程的有效解) . . . . 35
3.7. Radial Definition of Wave Particles() . . . . . . . . . . . . . . . 37
3.8. Subdivision . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.9. Boundary Behavior . . . . . . . . . . . . . . . . . . . . . . . 44
3.10. The Circular Motion of Water Waves . . . . . . . . . . . . . . 47
3.11. Longitudinal Deviation . . . . . . . . . . . . . . . . . . . . . 50
IV WATER-OBJECT INTERACTION : : : : : : : : : : : : : : : : : 53
4.1. Object to Water Coupling . . . . . . . . . . . . . . . . . . . . 55
4.1.1. Physical Wave Generation . . . . . . . . . . . . . . . . 56
4.1.2. Effect of Objects on Existing Waves . . . . . . . . . . 58
4.1.3. Energy Preservation vs. Volume Preservation . . . . . 60
4.1.4. Heuristics for Wave Generation . . . . . . . . . . . . . 60
4.1.4.1. Wave Placement Heuristics . . . . . . . . . . 61
4.1.4.2. Wave Direction Heuristics . . . . . . . . . . . 65
4.1.4.3. Wave Size Heuristics . . . . . . . . . . . . . 69
4.1.5. Wave Particle Generation . . . . . . . . . . . . . . . . 71
4.1.6. Limitations . . . . . . . . . . . . . . . . . . . . . . . . 75
4.2. Fluid to Object Coupling . . . . . . . . . . . . . . . . . . . . 78
4.2.1. Buoyancy Force . . . . . . . . . . . . . . . . . . . . . 79
4.2.2. Drag and Lift Forces . . . . . . . . . . . . . . . . . . . 80
V IMPLEMENTATION OF WAVE PARTICLES : : : : : : : : : : : 86
5.1. Implementing the Wave Particle Simulation . . . . . . . . . . 86
5.1.1. Wave Particle Iteration . . . . . . . . . . . . . . . . . 87
5.1.1.1. Computing Wave Particle Positions . . . . . 88
5.1.1.2. Subdivisions and Reflections . . . . . . . . . 90
5.1.2. Water to Object Coupling . . . . . . . . . . . . . . . . 95
5.1.2.1. Computing the Buoyancy Forces . . . . . . . 96
5.1.2.2. Computing the Drag and Lift Forces . . . . . 99
5.1.3. Rigid Body Simulation . . . . . . . . . . . . . . . . . 101
5.1.4. Wave Particle Generation . . . . . . . . . . . . . . . . 102
5.1.4.1. The Silhouette Pyramid Method . . . . . . . 104
5.1.4.2. Generating Wave Particles . . . . . . . . . . 110
5.1.4.3. Handling Wave Generation Bias . . . . . . . 111
5.1.5. Height Field Generation . . . . . . . . . . . . . . . . . 112
5.1.5.1. Rendering Wave Particles as Points . . . . . 113
5.1.5.2. Filtering Wave Particle Points . . . . . . . . 114
5.1.5.3. Separable Filter Approximation . . . . . . . 116
5.1.5.4. Additional Data in the Height Field . . . . . 117
5.1.5.5. Projected Height Field . . . . . . . . . . . . 118
5.2. Water Rendering . . . . . . . . . . . . . . . . . . . . . . . . . 120
5.2.1. Reflections . . . . . . . . . . . . . . . . . . . . . . . . 121
5.2.2. Refractions . . . . . . . . . . . . . . . . . . . . . . . . 125
5.2.3. Caustics . . . . . . . . . . . . . . . . . . . . . . . . . . 126
5.2.3.1. Fast Real-time Caustics from Height Fields . 128
5.2.3.2. A Two-Pass Algorithm for Fast Caustics . . 131
5.3. The Overall Water Simulation and Rendering System . . . . 135
VI RESULTS : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 139
6.1. Qualitative Analysis . . . . . . . . . . . . . . . . . . . . . . . 139
6.1.1. Analyzing the Wave Shape . . . . . . . . . . . . . . . 139
6.1.2. Analyzing Water to Object Coupling . . . . . . . . . . 141
6.1.3. Analyzing Wave Generation . . . . . . . . . . . . . . . 144
6.2. Performance Analysis . . . . . . . . . . . . . . . . . . . . . . 146
VII DISCUSSION : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 154
7.1. Advantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
7.1.1. Computation Speed . . . . . . . . . . . . . . . . . . . 155
7.1.2. Unconditional Stability . . . . . . . . . . . . . . . . . 156
7.1.3. Scalability . . . . . . . . . . . . . . . . . . . . . . . . 158
7.1.4. User Interaction . . . . . . . . . . . . . . . . . . . . . 159
7.1.5. Parallelization . . . . . . . . . . . . . . . . . . . . . . 160
7.1.6. No Precomputation . . . . . . . . . . . . . . . . . . . 161
7.1.7. Art-Directability . . . . . . . . . . . . . . . . . . . . . 162
7.2. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
7.2.1. Wave Simulation Only . . . . . . . . . . . . . . . . . . 163
7.2.2. Breaking Waves . . . . . . . . . . . . . . . . . . . . . 164
7.2.3. Diffraction . . . . . . . . . . . . . . . . . . . . . . . . 165
7.2.4. Dispersion . . . . . . . . . . . . . . . . . . . . . . . . 169
7.2.5. Varying Depth and Wave Refraction . . . . . . . . . . 171
7.2.6. Physical Wave Generation . . . . . . . . . . . . . . . . 173
7.2.7. Physical Forces on Objects . . . . . . . . . . . . . . . 175
7.3. Future Extensions . . . . . . . . . . . . . . . . . . . . . . . . 177
7.3.1. Splashes, Bubbles, and Foam . . . . . . . . . . . . . . 177
7.3.1.1. Splashes . . . . . . . . . . . . . . . . . . . . 178
7.3.1.2. Bubbles . . . . . . . . . . . . . . . . . . . . . 181
7.3.1.3. Foam . . . . . . . . . . . . . . . . . . . . . . 182
7.3.2. Level of Detail Approaches . . . . . . . . . . . . . . . 183
7.3.3. Wave Choreography . . . . . . . . . . . . . . . . . . . 185
7.3.4. Integration with a 3D Fluid Solver . . . . . . . . . . . 185
VIII CONCLUSION : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 188
REFERENCES : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 190
APPENDIX A : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 198
APPENDIX B : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 202
APPENDIX C : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 204
VITA : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 210

CHAPTER I Introduction
第一章 简介

在计算机图形学中,流体模拟,特别是水的模拟,是研究的主要领域之一。模拟大型水体(如海洋、湖泊和水池)尤为重要,因为它们出现在各种虚拟环境中,如果没有对水的行为进行适当的模拟,很难在这些环境中实现真实感。

随着过去十年的改进,计算机图形学中的离线水模拟已经达到了显著的逼真程度。现有的离线模拟技术足够强大,可以模拟各种各样的流体行为,并且只要提供足够的计算能力,它们就可以处理大型环境中的模拟。如今,这种模拟通常用于视觉效果和动画长片行业。然而,在模拟大型水体时,特效师通常尽可能采用特别技术或不切实际的简化方法,因为全3D流体模拟可能过于昂贵,无法在任何地方使用。此外,全3D流体模拟不容易控制,如果可能的话,可能很难将模拟推向预期结果。因此,可能需要进行多次模拟才能获得一个足够接近期望结果的可接受结果。由于这些原因,计算机图形学中的离线流体模拟仍有改进的空间。特别是,更好地分配计算资源以减少模拟时间,同时最大限度地减少视觉质量的损失仍然是一个重要的研究领域。

虽然水的离线模拟可以产生令人惊叹的视觉效果,但在实时帧速率下实现类似水平的真实感仍然是一个悬而未决的挑战。这是因为实时图形应用程序比离线图形有一些额外的挑战。这些挑战可以概括如下:

•速度要求:最明显的挑战是使流体模拟足够快,以便模拟能够以实时帧速率运行。虽然实时帧率的定义各不相同(一些研究人员认为实时帧率为15帧/秒,另一些研究人员要求至少为60帧/秒),但出于研究目的,确切的定义通常并不重要,因为我们预计任何实现都会在几年内推出的新硬件上运行得更快。然而,需要注意的是,在许多环境中,水起着次要作用,因此我们不能将所有的计算资源都用于水的模拟。从这个意义上说,我们不仅需要满足实时帧速率的最低要求,还需要超越这些要求,以便将这些模拟应用于实际的交互式应用中。

•稳定性要求:与离线模拟相比,在实时环境中对模拟稳定性的需求更为明显。计算机图形学中的离线模拟主要用于为电影中的特定镜头生成一系列图像,这些图像通常只有几秒钟长几乎总是不到一分钟。因此,离线模拟的最低期望是,它应该在某组参数下至少正确工作一次,以产生所需的结果。可以调整模拟的参数,直到离线模拟产生可接受的结果。另一方面,视频游戏或其他交互系统中使用的实时模拟可能会运行数小时,并且这些模拟预计在整个时间内都是稳定的。请注意,这里的稳定性要求不仅仅是软件的稳定性,而是预期产生视觉上可接受的流体行为的基本数学和计算方法的稳定性。

•用户交互:用户交互是所有实时图形应用程序的固有组件。在实时系统中支持任意用户与仿真的交互的需要使得微调仿真的参数变得特别困难。水的实时模拟预计将使用预定的模拟参数在广泛的可能用户交互中工作。另一方面,离线场景对于特定镜头大多是固定的,并且模拟的参数可以根据该镜头所需的水行为进行调整,而不是具有一组参数来处理任何可能的交互。

•硬件限制:对于许多涉及大型水体的流体模拟,离线模拟可以在大型计算机集群上运行。然而,实时水模拟预计将在内存和其他计算资源有限的普通PC或游戏机上运行。虽然图形硬件的并行能力为所有与图形相关的计算提供了显著的加速,但现代PC或游戏机的硬件并行性不足以提供必要的计算能力来克服逼真的水模拟的需求。此外,在现实世界的应用中,可以单独分配给水模拟的计算资源通常只是整个硬件系统的一小部分。因此,期望从计算要求高的模拟的实时实现中获得相同水平的真实性是不合理的。

由于所有这些原因,实现与离线模拟质量相匹配的真实实时水模拟仍然是(也许还会继续)一个悬而未决的挑战。然而,许多研究人员和图形程序员已经实现了不同的技术,以在实时环境中实现更好的水模拟。这样的实现方式主要采用以下方法中的一种或多种:

•最简单的方法是用一些特别的数学公式来代替水模拟,以动画化3D表面,从而使产生的运动类似于水的行为。这些技术在其可以处理的可能场景方面极其有限,并且往往无法产生现实的结果。然而,这些技术仍然用于避免各种场景中流体模拟的计算费用。虽然特定应用可以接受特定的公式,但仅凭这种方法无法达到离线模拟的质量。

•另一种常见的方法是使用与离线图形相同的水模拟技术,但选择参数以降低计算要求。这样的方法通常生成具有比离线方法更高的错误率的低分辨率解决方案。也可以用不太准确但更有效的替代方案来代替水模拟的某些步骤。正如预期的那样,这些模拟产生了更快但质量明显更低的结果。

•采用图形硬件的并行功能是另一种方法。随着实时图形硬件的新进步,许多研究人员和图形程序员修改了现有的离线流体模拟技术,使其可以在GPU上执行。虽然使用这种方法可以获得非常令人印象深刻的结果,但可以以实时帧速率模拟的场景非常有限。此外,现代GPU提供的并行性在最佳情况下只能解释几个数量级的改进。因此,我们不能仅仅依靠现代PC或游戏机上的硬件并行性来实现所需的性能水平和高质量的结果。

•一个很有前途的替代方案是使用预计算,这是一种常用于实时图形中许多其他问题的技术。当与其他方法结合使用时,预计算可以是一种非常强大的工具,以用额外的内存需求取代某些任务的计算需求。虽然已经研究了这种方法用于气体和烟雾的流体模拟,但是否可以使用类似的方法来实现需要表示水面的预计算水模拟是一个悬而未决的问题。

•另一种替代方法是为水行为的一个子集提供解决方案,而不是以涵盖所有水效应的完整解决方案为目标。这种方法只能集中于水波、飞溅、气泡和各种其他与水有关的自然现象。当需要时,可以通过组合许多这样的算法来实现更完整的解决方案。

本文的前提是,最后一种限制模拟解域的方法,是实现与离线流体模拟相当的实时结果的关键。在实时环境中,通常只采用特定的水模拟来模拟特定的水行为。从这个意义上说,实时水模拟可以被认为是成功的,只要它为所需的行为提供了视觉上逼真的解决方案,并且模拟可以提供的其他水现象是无关的。只关注水行为的一个子集可以引入更简单的物理模型来进行水模拟,从而可以更有效地进行计算。

本文中描述的波粒子技术就是这种方法的一个例子,因为它被设计成只模拟大型水体上的表面波。尽管波浪粒子可以模拟的水的行为仅限于表面波,但在其解域内,波浪粒子能够以非常高的计算效率产生高质量的结果。因此,波浪粒子法是在许多实时场景中模拟动态水波的理想方法。

1.1. Motivation of Wave Particles(波粒子的动机)
波浪粒子方法背后的主要动机是提出一种水模拟技术,该技术可以捕捉水行为子集的重要视觉成分,同时在其解域内通过非常有效的计算产生高质量的视觉效果。目标水现象是由水与固定或漂浮物体的动态相互作用引起的波浪行为。从这个意义上说,水与物体的相互作用是波粒子方法的固有部分。

虽然现有的全3D流体模拟功能强大,几乎可以处理任何水的行为,但其高计算要求使其对于实时应用来说过于昂贵。特别是当任务是模拟大型水体时,即使对于离线应用程序来说,全3D模拟也可能过于昂贵。此外,虽然可以在一些现代三维流体模拟器中计算水与物体的相互作用,但这样做会显著增加计算需求。

在研究水-物体与大型水体的相互作用时,可以观察到水行为的许多视觉上重要的组成部分。这些是飞溅物、气泡、泡沫和波浪。另一个通常在视觉上不明显的组成部分是水面下的3D流体流动和湍流。在这个阶段可以引入的第一个简化是忽略视觉上不明显的水行为。从这个意义上说,可以消除水面下的3D流体流动,这种流动通常计算起来相当昂贵。在建立理论模拟模型的早期阶段引入这种简化的一个重要优点是,这种消除引入的限制变得容易识别。在这种情况下,我们不应该期望一种忽略3D流体流动的方法来正确处理3D流体流动是驱动视觉上可识别的水行为的重要因素的情况。这种情况的一个例子是模拟沉船形成的漩涡。另一方面,该方法可能非常善于表示由同一事件产生的持久波。

至于视觉上明显的成分,在大多数情况下,飞溅、气泡和泡沫主要是混沌动力学的结果。出于这个原因,用于模拟飞溅、气泡和泡沫的统计衍生的特殊配方可以对这些现象产生合理的近似值。另一方面,由于与漂浮物体的相互作用,水的波浪行为不仅在视觉上很重要,而且通常是可预测的。出于这个原因,模仿波浪行为的特殊公式往往无法产生可接受的真实感。因此,应适当模拟水的波动行为,以获得高质量的视觉效果。

如果我们只考虑表面波,我们可以基于波动方程建立模拟模型,这比公式化一般流体行为的Navier-Stokes方程简单得多。由于波动方程是一个微分方程,求解波动方程的第一个想法是有限差分技术,该技术通常用于流体模拟中,以求解其他微分方程,如Navier-Stokes方程的变体。然而,波动方程的简单性使得可以设想更简单的计算模型来估计波动方程解的结果。波浪粒子法就是这样一种模型。

为了能够构建这样一个模型,我们需要仔细研究波动方程。经过仔细检查,可以看出波动方程本质上是一个运动波形。因此,水面波的波动方程的解可以通过水面上的移动变形来近似。这正是波浪粒子的目标。

1.2. Summary of Wave Particles(波粒子的总结)

基于运动波形的集合提供波动方程的解的思想,波粒子技术使用粒子系统来跟踪这些波形的运动。这个简单的粒子系统是由在平坦的水面上移动的粒子组成的。每个粒子都与特定的表面变形有关,由波浪粒子的集合引起的总变形产生在水面上传播的波形。波浪粒子在水面上移动,从边界反射,并细分为更小的波浪粒子。虽然平坦水面上的单个波浪粒子并不构成波浪方程的有效解,但波浪粒子的集体行为提供了波浪方程的解析近似。

我们对波粒子的仔细公式允许将每个波粒子独立于粒子系统中共存的所有其他波粒子来考虑。这是波浪粒子的一个非常重要的特性,使其区别于计算机图形学中其他基于粒子的水模拟方法。

 

posted on 2023-05-21 23:37  XiaoNiuFeiTian  阅读(56)  评论(0编辑  收藏  举报