有一段时间我一直试图用"Real-Time Fluid Dynamics for Games"中清除过的算法来模拟流水。麻烦的是,我似乎没有用这些算法弄出像水一样的行为。
我自己我想我做错了,那些算法并不适合水样流体。
这些算法我做错了什么?这些算法是否正确?
我在bitbucket repository中有相关项目。 (需要gletools和最新pyglet才能运行)
答案 0 :(得分:6)
基于体素的溶液适用于模拟液体,常用于胶片。 Ron Fedkiw's website给出了一些学术范例 - 所有基于网格的例子。该代码支持Pixar和ILM使用的许多模拟。
来自SIGGRAPH的Robert Bridson Fluid Simulation course notes及其website也是一个很好的资料来源。他有一本书"Fluid Simulation for Computer Graphics",详细介绍了液体模拟器。
我能给你的问题最具体的答案是Stam的游戏实时流体专注于吸烟,即。在流体(水)和外部空气区域之间没有边界的地方。基本上烟雾和液体使用相同的潜在机制,但对于液体,您还需要跟踪液体表面的位置,并在表面上应用适当的边界条件。
答案 1 :(得分:2)
你想用什么类型的水来模拟?水波纹或流动的水池?
我不认为我曾经见过流水,除了渲染电影。涟漪水很容易做到,this site通常会出现在这类问题中。
答案 2 :(得分:2)
Cem Yuksel在SIGGRAPH 2007上发表了关于他Wave Particles的精彩演讲。他们以相当低的成本给出了非常逼真的效果。他甚至可以模拟与箱子和船只这样的刚体相互作用。另一个有趣的方面是船的运动没有编写脚本,它是通过螺旋桨与流体的相互作用来模拟的。
(来源:cemyuksel.com)
在会议上他说他打算发布源代码,但我还没有看到任何东西。他的网站包含他在会议上展示的完整论文和视频。
编辑:刚刚看到您关于想要模拟流动液体而不是波纹池的评论。这不适合,但我会留在这里以防其他人觉得它有用。
答案 3 :(得分:1)
是的,这种基于体素的解决方案只有在液体被限制在非常离散和静态的边界时才能真正起作用。
为了模拟流动的液体,对粒子进行一些调查。最近在GPU上加速了很多进展,你可以得到一些惊人的结果。
看一看,http://nzone.com/object/nzone_cascades_home.html是可以实现的一个很好的例子。