流体运动,可以说是游戏世界最重要的物理现象之一。小到下雨

作者:二师兄的小弟二 时间:2021-07-14 00:06:14

流体运动,可以说是游戏世界最重要的物理现象之一。小到下雨,大到波浪,精细到泪珠滚出眼眶,真实到血液沁出伤口,这些画面效果在游戏引擎中,都需要做精确的流体运动计算。

在最近《逆水寒》的周更新中,我们推出了一款“水枪”,这是一个完全没用但很沙雕的趣味物品,很多玩家玩过以后,下巴都笑掉了。

但是沙雕归沙雕,在这看似没啥用的水枪背后,其实是中国游戏流体物理引擎组件一次从无到有的技术研发。

今天小寒就来向大家正式介绍隐藏在水枪背后的雷火“流体喷射算法”!!!

在游戏里,想要呲一道水出来,其实是很难的。水无常形,水的运动轨迹,是最难琢磨的,所以以往一般采用贴图的形式解决。

也就是说开发者画好一道固定的水线,不管谁来呲怎么呲,呲出来的都是一道统一的固定的系统设定好的水线,贴图生成的水,没有体积,也没有灵魂。

在以画面真实而著称的《逆水寒》里,如果再继续搞贴图,就不合时宜了。

所以程序员最初尝试用一款美国的游戏物理效果组件来制作流体的运动,可用着用着就发现,该技术很难在游戏里做交互效果,同时还费算力,在优化上无从下手,应用于游戏中处处受限,无法突破。

所以雷火的程序员头一铁,决定干脆自己做一个新的。于是就有了现在这套“流体喷射算法”!

它的原理是用无数个粒子组成流体,基于重力、风力、释放者施加的推力、粒子之间的互相作用力等等因素去计算流体喷射出来以后的运动轨迹。

同时还要计算流体被其他流体或固体阻拦以后的溅射运动轨迹。

甚至于两种不同颜色的液体在碰撞之后还能混合

甚至于两种不同颜色的液体在碰撞之后还能混合

贴图里的水,是设计者规定好了它怎么喷射与流动;而“流体喷射算法”中的水,是完全由水自己决定怎么动。

也就是说以前大多数游戏里喷出来的贴图水,都是虚假的纸片水,而在《逆水寒》里终于实现了“指哪喷哪、喷哪湿哪”的真实的有碰撞体积的水。

超级真实的水流质感

超级真实的水流质感

这么神奇的技术,其实在电影特效领域早就被广泛引用了,但为什么别的游戏不做呢?主要还是因为性价比很低,具体有两个方面:

一是对开发者而言性价比很低,需要投入很多技术力量去开发,花费极高的成本得到的也只是流体效果更真实一点而已。

而且这种“更真实”普通人还不一定能直观地感知到,只有专业人士看了才会惊呼“卧槽这么厉害”。所以很多开发团队想来想去,不如还是继续画贴图吧。

二是对玩家而言性价比也低,粒子运动的计算量巨大,玩家玩游戏时为了得到这种真实,电脑可能需要耗费大量算力在上面。

但是雷火的技术团队,恰好是由一群从来不考虑性价比的技术宅组成!三个程序员接下了这项工作,看了看需求文档,感觉非常简单。

然后,花费了八个月时间吃了能堆满一间会议室的外卖才搞出来……虽然雷火不用考虑性价比,但是必须得考虑玩家。

所以技术团队主攻方向是如何减轻玩家电脑得负荷,技术团队在最消耗算力的“粒子邻近检测”模块开发出了一个国际领先的加速结构,直接破解了这个核心难题。

同时配合muller2013的PBF算法,分针计算等技术,做出了一套在计算机算力严重不足的情况下,这套“流体喷射算法”也能妥善运行的保底机制。

第一次测试模拟水粒子的过程

第一次测试模拟水粒子的过程

同时还应用了一套粒子表面重建技术,一颗颗粒子地完整还原自然界流体丰富的表面细节。整个组合起来,就是现在游戏中可以玩到的超高自由度可以让NPC湿身的呲水枪了。

游戏内的水流表现

游戏内的水流表现

游戏内的水流表现

游戏内的水流表现

所以说了这么多,大费周章,就是为了呲个水???

是,但又不完全是。

对流体喷射算法而言,呲水枪只是一次小小的测试,有了这种纯物理算法带来的具有真实体积的液体效果与液体流动计算,设想一下我们可以完成多少伟大的游戏尝试。

我们可以做出真实而壮观的火山喷发,也可以真实地模拟细微的流汗出血效果,以后的水系技能表现可以做到绝无雷同。

模拟石油的喷射与流出

模拟石油的喷射与流出

液体能被甩成无数分段

液体能被甩成无数分段

毫不夸张地说,这是中国游戏开发者在电子世界中第一次真正意义上驯服了水。

水无常形,在电子世界里驯服水绝非易事。

我们雷火的技术团队敢为天下先,始终致力于探索最前沿的图形技术,不断挑战硬件和算法的极限,我们对所谓的“研发性价比”嗤之以鼻,只求为玩家带来真实、更真实、超越真实的游戏画面。


相关游戏
问答攻略
随便看看

新闻 攻略 问答 教程 公告