惊涛怪浪(double dam-break) -- position based fluids
切入正题之前,先胡说八道几句.
据说爱因斯坦讲过:关于这个世界最难以理解的就是它是可以被理解的。人类在很长的时间里,都无法认知周围变幻莫测的世界,只能编造出无数的神祗来掌控世上万物的运行。到了近代,才逐渐出现了突破。伽利略发现了主宰物体下坠的拋物线定律。牛顿被誉为人类历史上最伟大的科学家之一。他发明了微积分,用万有引力定律在人类历史上第一次把天上的运动和地上的运动统一了起来。麦克斯韦建立了描述电场与磁场的四个方程,系统而完整地概括了电磁场的基本规律,并预言了电磁波的存在......于是科学家认为数学是用来解释自然世界的工具。
物理世界与数学如此的吻合,激发了进一步的联想。宇宙学家马克斯·塔马克在《Our Mathematical Universe》一书中认为宇宙中的一切事物,当然也包括人类在内都是一种数学结构。物理世界可能只是数学世界的映射。数学结构也是一种独立存在的实体。想象一下,如果记载勾股定理的全部文献都消失了,勾股定理其实还是存在的,她等着下一次被发现。生命估计是一种能感知自己存在的一种数学结构,只是我们目前还不知道具体形式。近二十年来计算机图形学的蓬勃发展,进一步让人觉得眼睛感受到的一切都是数学的投影。
-------------------------------
平滑粒子流体力学(Smoothed Particle Hydrodynamics)起源于二十世纪七十年代末,当时一些宇宙学家用这类方法研究天体形成。我曾看到过一篇文章介绍了一个使用SPH模拟技术的玩具程序,在万有引力的牵引下,将散落在各处的宇宙尘埃汇聚成一个球体。图形学中大量使用SPH技术是以2003年的“Particle-Based Fluid Simulation for Interactive Applications”为开端。该文标志性的视频内容是:实时模拟绘制了一股水流从上慢慢倒入到底下透明的杯子中。SPH技术容易实现,但要求时间步长非常小。步长稍大,效果就会比较粗糙甚至发生“爆炸”现象。如果亲手调试过SPH程序,就会明白“爆炸”的含义(瞬时所有的粒子都消失了)。另外,常规SPH的参数比较多,调整相对比较困难。
流体是否逼真,与流体模拟技术中不可压缩的实现密切相关。传统的SPH基于粒子技术,只能依靠小步长、大压强来实现流体的不可压缩性,非常慢无法做到真实感流体的实时模拟。2009年“Predictive-corrective incompressible SPH”使用迭代技术有效地加大了时间步长,同时保证了流体不可压缩的性质。在接下来几年,此文启发了很多人。特别是SIGGRAPH 2013中的"position based fluids",文章很短,但是实现了令人感到惊艳的实时效果。
学习了该论文后,目前仅实现了半篇内容。使用了"position based fluids"的SPH模拟技术,但是渲染使用的是离线方式(用mitsuba,刚刚用了几天,水质不是太好)。下面的视频(http://pan.baidu.com/s/1c0kXzaw)(http://pan.baidu.com/s/1jG67KeM)和图片模拟的是:经典场景double dam,看看有没有点"惊涛怪浪"的感受?
惊涛怪浪(double dam-break) -- position based fluids的更多相关文章
- 小球自由落体动态模拟(Position Based Simulation)
在过去的几十年中,基于物理的三维物体动态模拟成为了计算机图形学的研究热点,其中最常见的方法是基于力(force-based)的模拟方法,比如弹簧质点模型,它把物体抽象成一系列质点以及连接这些质点的弹簧 ...
- Java基础之扩展GUI——高亮元素、上下文菜单、移动旋转元素、自定义颜色(Sketcher 10)
窗口应用程序. 本例在上一版的基础上实现了高亮元素.移动元素.上下文菜单.旋转元素.设置自定义颜色. 1.自定义常量包: // Defines application wide constants p ...
- PID控制器(比例-积分-微分控制器)- I
形象解释PID算法 小明接到这样一个任务: 有一个水缸点漏水(而且漏水的速度还不一定固定不变),要求水面高度维持在某个位置,一旦发现水面高度低于要求位置,就要往水缸里加水. 小明接到任务后就一直守在水 ...
- Rebound动画框架简单介绍
Rebound动画框架简单介绍 Android菜鸟一枚,有不对的地方希望大家指出,谢谢. 最近在接手了一个老项目,发现里面动画框架用的是facebook中的Rebound框架,由于以前没听说过,放假时 ...
- pymssql.connect(server='.', user='', password='', database='', timeout=0, login_timeout=60, charset='UTF-8', as_dict=False, host='', appname=None, port='1433', conn_properties, autocommit=False, tds_
http://pymssql.org/en/stable/ref/pymssql.html """ This is an effort to convert the py ...
- 为什么要在游戏开发中使用ECS模式
http://www.richardlord.net/blog/why-use-an-entity-framework Why use an entity system framework for g ...
- DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)
/// <summary> /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// </summary> /// <param ...
- 【Windows编程】系列第十篇:文本插入符
大家知道,在使用微软的编程环境创建工程时会让你选择是控制台模式还是Windows应用程序.如果选择控制台的console模式,就会在运行时出现一个黑洞洞的字符模式窗口,里面就有等待输入一闪一闪的插入符 ...
- 为现有图像处理程序添加读写exif的功能
为现有图像处理程序添加读取exif的功能 exif是图片的重要参数,在使用过程中很关键的一点是exif的数据能够和图片一起存在.exif的相关功能在操作系统中就集成了,在csharp中也似乎有了实现. ...
随机推荐
- asp.net webAPI 自动生成帮助文档并测试
之前在项目中有用到webapi对外提供接口,发现在项目中有根据webapi的方法和注释自动生成帮助文档,还可以测试webapi方法,功能很是强大,现拿出来与大家分享一下. 先看一下生成的webapi文 ...
- 重新签名IPA ( iPhone )
提示:暂时不能用了,企业证书滥用 ios 企业证书 ipa 重新签名发布 1. 应用场景 当前有一个 未用企业证书签名的 ipa 文件,默认是不可以直接安装到设备上的:我们需要用企业版证书签名: 当前 ...
- spring 配置定时任务
spring的定时任务配置分为三个步骤:1.定义任务2.任务执行策略配置3.启动任务1.定义任务 <!--要定时执行的方法--> <bean id="testTaskJob ...
- How Tomcat works — 七、tomcat发布webapp
目录 什么叫发布 webapp发布方式 reload 总结 什么叫发布 发布就是让tomcat知道我们的程序在哪里,并根据我们的配置创建Context,进行初始化.启动,如下: 程序所在的位置 创建C ...
- Ubuntu “无法获得锁”解决方案(E: 无法获得锁 /var/cache/apt/archive
Ubuntu “无法获得锁”解决方案(E: 无法获得锁 /var/cache/apt/archive 现象一: E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源 ...
- object-c学习1
因为公司需要,开始看object-c,虽然还没ios系统,但现学下语法. 第一个例子不应该是helloWorld吗?但<Learn Objective-C on the Mac>书上不是. ...
- maven eclipse miss required library解决
我是直接到C:\Users\admin\.m2\repository目录把所有的库包全删除,然后在项目里刷新一下,搞定!
- 【字符串排序】n个数连接得到最小或最大的多位整数
题目 描述:设有n个正整数,将它们依次连成在一排,组成一个多位数,现在要求可能组成的多位数中最大的多位数是什么? 例如:n=3时,3个整数13,312,343连成的最大多位数为:343-312-13. ...
- phpMyAdmin在Mac OS X上的配置和使用
本文主要记录phpMyAdmin在Mac OS X上的配置和使用,避免朋友们走弯路,浪费不必要的时间. 1. 下载: 2. 在"设置"中打开" web shar ...
- 深入剖析 redis AOF 持久化策略
本篇主要讲的是 AOF 持久化,了解 AOF 的数据组织方式和运作机制.redis 主要在 aof.c 中实现 AOF 的操作. 数据结构 rio redis AOF 持久化同样借助了 struct ...