查看: 3768|回复: 13

如何实现下雨打在玻璃上溅起水花的效果

[复制链接]

该用户从未签到

发表于 2011-5-23 14:15:07 | 显示全部楼层 |阅读模式
RT,在OSG中,一般用粒子系统来模拟下雨/雪的场景,但翻阅了很多教程,发现给人感觉都不够逼真(有点失望)。
所以想向大家请教一下,有什么好的方法来模拟雨水打到刚性物体上(如地面、车窗等)溅起水花的效果?这样才够真实嘛:)

我知道,在如3ds max的软件里面为其粒子系统关联一个导向板可以实现,
也了解到如realflow这样专门的流体力学模拟软件可以做出不错的效果,
但是那些都不是在VR环境里面可以实现的。做做视频动画还差不多。

如果自定义粒子系统来解决,要注意些什么呢?溅起水花的效果会不会要使用碰撞检测啊?

雨天场景在很多游戏场景里面都是存在的,应该有比较成熟的解决方案才是。所以希望各位不吝赐教!谢谢!

该用户从未签到

发表于 2011-5-23 21:18:07 | 显示全部楼层
这个肯定要用到物理引擎吧

该用户从未签到

发表于 2011-5-23 23:21:28 | 显示全部楼层
这个很难。就像有很多模拟水面的程序,但是谁也没有模拟惊涛骇浪。
也许有人能做到,这样的人很少。

该用户从未签到

发表于 2011-5-24 07:23:57 | 显示全部楼层
这个确实非常有难度,涉及到物理引擎,另外,就是这方面对于显卡要求非常高,计算量十分大,所以建议lz可以使用CUDA进行开发,否则即使实现了也会因为渲染效率的问题导致不能用

该用户从未签到

发表于 2011-5-24 07:26:03 | 显示全部楼层
将来我有打算把osg利用CUDA架构或者OpenCL来编写一个借口

该用户从未签到

发表于 2011-5-24 08:46:30 | 显示全部楼层
这种下雨的效果我是实现过的,方法是判断下雨粒子系统的线粒子是否到达某个位置,然后在回调中生成另一个水花粒子系统的粒子,效果应该还不错,不过osgParticle在这种时候可能不太能胜任了。
rain.PNG

该用户从未签到

发表于 2011-5-24 08:47:14 | 显示全部楼层
将来我有打算把osg利用CUDA架构或者OpenCL来编写一个借口
wangjunchao 发表于 2011-5-24 07:26


我建议先看一下osgCompute这个开源工程,它已经提供了CUDA的接口

该用户从未签到

 楼主| 发表于 2011-5-25 20:09:04 | 显示全部楼层
真是非常感谢大家的建议!  特别是array给出的方案,效果确实不错!!
“判断下雨粒子系统的线粒子是否到达某个位置,然后在回调中生成另一个水花粒子系统的粒子”跟3DS MAX里面的思想是基本一致的。
但还是有个问题:“判断下雨粒子系统的线粒子是否到达某个位置”,
如果场景里面的有很多模型,每个模型与雨水接触的高度位置又不尽相同(如楼房和地面);
即便是同一个模型,比如汽车,与雨水接触的车身表面有一定曲度,这个“位置”要找好应该还是需要一定的技巧吧。
比如3DS MAX里面的导向板就完全是一个平面,而非曲面,这样就不得不用很多导向板去包围车身。
而realflow中就无所谓导向板,完全是将关联的物体(节点)与粒子进行碰撞的仿真计算,在OSG中不知道是不是能有所借鉴。

该用户从未签到

发表于 2011-5-26 16:51:27 | 显示全部楼层
斯坦福大学做这方面流固耦合的仿真挺不错的,采用的方法就是流体力学中的,不过我觉得求解模型的时间是需要重点考虑的

该用户从未签到

 楼主| 发表于 2011-5-29 22:01:59 | 显示全部楼层
回复 6# array


    array是否能将源码共享一下,让我们学习学习:)谢谢!

该用户从未签到

发表于 2011-5-30 10:40:40 | 显示全部楼层
暂时不会,过一段时间会添加到osgXI中

该用户从未签到

 楼主| 发表于 2011-5-30 22:26:59 | 显示全部楼层
Anyway, Thanks!

该用户从未签到

发表于 2011-5-31 13:12:09 | 显示全部楼层
array,只是不知道你的效率如何,如果是多个雨点同时打到一个物体,那么势必会十分影响效率

该用户从未签到

发表于 2011-6-1 08:17:49 | 显示全部楼层
不会去刻意计算雨点与物体的碰撞,只是判断是否到达某个平面就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表