作者 | 张心欣
编辑 | 维克多
利用流体动力学制作视觉特效,已经成为“大片”的标配。
而诸如洪水、烟雾、爆炸等特效计算的背后,实际上是用计算机程序在求解已有百年历史的
“纳维-斯托克斯方程”:
数十年来,科学家们为了计算机翼升力,已经从各个角度、各个姿势将其研究了百千遍。
然而基于影视制作的特别需求,
“水体模拟界”
的特效工程师们对这个方程求解提出了新的要求。
既要减少计算的内存或时间消耗,又要适用于大面积、大范围、大体积水体运动的仿真。
另一方面,现有的仿真技术,只能在有界(bounded)的范围内进行三维水体(volumetric)运动形态解算,镜头一旦拉远,就穿帮了。
如何低消耗地正确捕捉水体的形态、动态?近日,一篇题为”Ships, Splashes, and Waves on a Vast Ocean“, 论文的作者(一作 黄立博)来自于KAUST,泽森科工以及UCLA,作者将其放上了arXiv,并将发表于即将召开的图形学顶会siggraph asia 2021。
在论文中,研究员提出了一种
大海域仿真计算技术
:创新地
将边界元技术与传统的FLIP水体仿真方法融会贯通
,构造出了目前已知能以最高效的计算手段仿真最大体积、大范围海水的方法。
“push the new visual SOTA”。
发展边界元技术
边界元技术通过对流体运动做有势无旋的假设,把大规模水体的“纳维-斯托克斯方程”简化成了
伯努利方程
:
伯努利方程可以在不可压无散假设下,将原本需要在三维网格上求解的方程转化为了只需要在水体的表面上就能定义和求解的拉普拉斯方程。
将问题从3维转化为了2维,
这十分吸引人。 然而由于自身的多种理论局限性(奇点,边界积分,拓扑变化等), 不常见于复杂的流体仿真。
由于积分的奇点、控制方程的非线性、拓扑变化难以处理等问题,数学界论文中的“边界元法(BEM)”通常只能求解到波峰开始破碎的时刻。
Grilli et. al. A fully nonlinear model for three-dimensional overturning waves over arbitrary bottom, International Journal for Numerical Methods in Fluids
为此,研究者们在Da Fang et. al. 2016(Surface Only Liquids)的基础上,
用工程技巧弥补理论不足
,将BEM进一步推广成了一种稳定地、独立就能模拟复杂水体和边界运动的技术:
上图特效的计算,不存在三维仿真解算, 所有的计算未知量, 以及计算的时间积分量都仅仅存在于水体表面网格上,大大减少了计算的内存或时间消耗。
因此,这样的计算优势,正好适用于大面积、大范围、大体积水体运动的仿真。
图注:左侧为混合BEM-FLIP的案例, 右侧为纯三维仿真的参照
如上所示,边界元建模由于对三维NS方程的近似足够充分, 足以自动地捕捉水体运动的细节现象, 包括翻卷的浪花。
为什么BEM-FLIP有效?
借助边界元法和体积模拟解算技术的耦合, 研究者们将“近景“处用严谨的三维体积解算所带来的细节效果和波浪,成功地通过边界元的海水仿真传递了出去。
形象地说,是
将“效果”传递到一个”无穷大“的海面上,并借由边界元海水的仿真,真实地创造了一个比三维解算深得多的”深海“。
为近海面处水体的运动, 提供了正确的运动边界条件。
图注:左:SWE的结果, 波形、波速与参考解三维NS仿真相去甚远。中:参考解,三维NS仿真。右:BEM计算的结果。
对比一些顶级的影视技术公司曾采用的用
shallowwater(潜水方程)
来做海水拓展的技术方案。如上图所示,采用边界元以及伯努利方程这种建模方法得到的流体运动则和参考解十分吻合,同时大大降低了计算量。
为什么shallowwater效果不好,泽森科工的研究者表示:
“潜水方程由于在对纳维-斯托克斯方程简化的过程中做了过多简化假设(比如流体速度在y方向一致), 所得出的结果,即使在不太深的水体运动中,也与真实解相去甚远, 难以捕捉大范围水体的真实运动。”
对于纳维尔斯托克斯方程的求解历久弥新,看来
基于物理的计算仍然是人们再现自然现象的最佳手段。
图注:上:BEM+FLIP。中:参考解三维FLIP仿真(真心疼这台机器)。下:基于波动方程的仿真。
在与其它基于波方程求解的对比中,研究者们发现,
采用BEM+FLIP求解的方案,既能得到准确的波形,也能得到更多的水流细节。
化有界为无界,便可以追求拟真的更高境。如上图中,可以看到前面的船产生的浪花甚至会影响到后面船体产生的浪花形态。
由于边界元方法给出的速度场是等效于体积求解的,虽然未知量只定义在边界上,却可以在整个体积内用边界积分方法得出任意点的正确流速, 这使得对获得的仿真数据进行后期加工成为了可能。
如上述动图所示,运用此方法,可以和任何标准化制作流程一样通过后期再对流体进行泡沫(white water)仿真解算来增加额外的细节和真实感。
谁是张心欣?
这篇论文的作者之一是
张心欣
,是一个计算机图形科学的研究者和创业者。
他曾经在世界顶尖的动画工作室皮克斯实习;在全球领先的视觉效果公司维塔数码(weta digital)从事研发,间接参与《霍比特人3:五军之战》的制作。
张心欣博士毕业于加拿大英属哥伦比亚大学(UBC),导师是AutoDesk的首席科学家Robert Bridson。加拿大的求学经历和该国完整的图形软件产学研环境(Autodesk,SideFX, ZivaDynamics等都是加拿大企业)对其产生了技术产业转化的影响. 毕业后工作于皮克斯和 Lytro。
2018年,陈宝权教授邀请他回国加入北京电影学院未来影像高精尖创新中心。在北京电影学院期间,曾研究撰写论文“Efficient and Conservative Fluids with Bidirectional Mapping”,并成功发表在SIGGRAPH 2018会议上。
张心欣博士是计算机图形学领域的专家和技术高手,有感于中国学术界在顶级科研上已不乏卓越贡献,中国在相关软件技术的产业落地方面仍然乏善可陈。他创立深圳泽森软件科技有限公司 ,将学术科研融入工具平台之中,希望为相关产业的软件工具研发贡献一份中国力量。
“泽森公司自主研发的ZENO节点化计算平台,致力于降低计算机图形学门槛,让更多的创想工作者能够实现逼真的仿真模拟。”
ZENO是什么?
ZENO是一款低代码平台系统,支持大量先进高级编程语言特性。诸如条件跳转,循环,构建与封装子计算图(函数),函数体(callable),甚至采用子计算图自嵌套进行递归。
甚至在节点编辑器中就地创建新的,系统中不具备的用户自定义数据结构。
而所有这些特性,不需要写代码, 通过节点连连看的形式,结合教程,都有可能掌握。
图注:zeno的zfx脚本对场景物体运动进行编辑后产生的海浪动画
ZFX脚本语言作为ZENO内置的脚本语言,结合ZENO的wrangler使用,可以在CPU和GPU上无差别运行,大大减少用户开发高性能GPU代码的烦恼。
甚至, 连ZENO中的流体动力学,固体动力学,分子动力学解算器,都是ZENO团队自己用节点编辑器而非C++代码开发出来的,更重要的是,所得到的流体动力学解算工具,更比现在广泛应用于影视计算产业的软件有高达4倍的加速以及低至0.5倍的计算内存占用等优势。
ZENO效仿现有的先进计算平台系统的模块化的设计模式, 将所有的工具化整为零, 让用户们来进行化零为整,从而兼具了工具化与高灵活度的优势。
用底层的高性能计算框架(zpc : ZenusParallelCompute也是一个ZENO旗下的开源框架)保证代码的高性能;用高度经验的工程师开发出来的计算模块保证计算模块的置信度和稳健性;用拼接来达到无穷的变化,并隐式地保证整个计算过程的可靠程度。
“用ZENO定义出来的计算过程所达到的结果,其下限随时有可能是一个博士数年研发所追求的上限。而
ZENO追求的上限则是‘整个世界’。”
用ZENO提供的计算开发平台设计计算过程,不需要掌握物理, 也不需要掌握编程,只需在设计空间(mind space)将对现实社会的认知和理解推到极致,并借由
Z
E
NO
来表达。
最后, 提一下ZENO系统的名字的由来。
乐高, 可以得到各种各样的高楼大厦和机器人。
但实际上乐高是这样的:
这些被称为Building Block的东西, 是乐高的价值,
也
是“创造世界”和一个属于“创造者的世界”的价值。
“ZENO, For the imagineer inside you”
zeno github OpenSource address:
https://github.com/zenustech/zeno
https://github.com/zenustech/zeno_addon_wizard
https://zenustech-documentation.readthedocs.io/zh/latest/index.html
https://zhuanlan.zhihu.com/p/397424868
https://github.com/zenustech/zeno_embed_demo
雷锋网雷锋网雷锋网
(公众号:雷锋网)
雷锋网特约稿件,未经授权禁止转载。详情见。