首页/文章/ 详情

节约100+小时,听泽森讲述参与本土科幻电影《流浪地球2》的幕后特效制作

1年前浏览5262







过去三个月里,本土科幻电影《流浪地球2》热映。作为国产3D软件开发的新秀团队,泽森十分荣幸能参与电影《流浪地球2》的视效制作。独立制作了泰晤士河被陨石摧毁、悉尼歌剧院被炸毁场景中的4个视效镜头,制作环节涉及气氛图、模型资产、Layout、特效、灯光渲染和预合成

关于这几个视效镜头背后的制作详情,我们做了如下技术解析,主要涉及对相关镜头中出现的大规模海洋流体和烟雾自然形态的仿真解析。


一、流体仿真解析

如何节约100+小时?  
场景:超特大场景-泰晤士河流域被陨石摧毁  
主要视效:大规模流体仿真  
主要应用:ZENO海洋-流体系统  


为了保证泰晤士河流域被陨石摧毁镜头的制作效果,ZENO流体解算提供了大量高效的功能来保证对这个超特大场景(10亿ZENO-FLIP解算)达到以小时为单位的美术制作迭代。其中主要涉及到ZENO流体系统的两大特性:2D-FFT频谱水面与3D-FLIP解算的强耦合,以及时空重仿真。

1、2D-FFT频谱水面与3D-FLIP解算的强耦合

据大部分艺术家使用反馈,对海洋类大规模流体的仿真制作方面,现有的一些商业软件并不能很好的控制海水海浪运动的节奏、态势及整体运动的宏观视觉效果,所以在ZENO的后期开发中我们特别设计研发了一套更利于控制,更利于宏观表现和更利于持续迭代的海洋系统。

这套全新的海洋系统将允许艺术家使用二维的动态mesh效果去控制三维的解算,并且可以让三维的解算效果更高程度的符合二维mesh调控出来的效果。

ZENO海洋系统中调控二维海面效果操作过程演示  
这也就意味着,艺术家只需使用海洋频谱构造2D仿真,对海面波纹大小、海浪运动速度等宏观参数进行简单调整,就能构造出对水体运动大节奏和波浪高低运动的快速预览,从而获得不同的海水宏观运动效果。这样的构造方式意味着用户能在短时间内对二维效果进行多次迭代,从而提升整体3D理想效果制作效率。


关于如何保证海洋频谱在时空尺度上的可控性,ZENO系统中的海洋流体也提供了特殊机制作为解决方案,它允许用户使用真实单位(诸如:米、9.8的重力加速度、洋流速度、风向、风速、海浪大小等)去控制海洋行为,用户只需要按照现实世界单位带入设置,就能得到“比例感”合理的海洋行为。

ZENO中的海洋系统还提供了特别的推理运算去保证海洋洋面(2D-FFT)和它所驱动的3D-FLIP仿真中的强耦合特性,包括自动从海洋频谱中提取出系统的物理参数(比如等效的重力加速度不再是9.8);等效的系统时间步长(比如等效的物理时间尺度不再是1/24秒);以及自动构造出符合任意形态的边界条件,从而保证FFT海面运动和3D仿真的强耦合,保证节奏感的强对应。
 
在最终效果呈现上,3D水体在添加了运动(卷浪细节)之外,它和2D-FFT洋面运动节奏和尺度感保持了高度的一致性。

最终2D水面和3D水体协同仿真结果展示
 

ZENO中FFT与3D仿真的强耦合能力,将允许制作人员在2D仿真计算上进行节奏感和尺度感的快速迭代,并保证之后的3D-FLIP仿真与2D预演的高度一致性,极大的增加了海洋级3D流体解算的可控性,加快了美术人员的制作迭代效率。

在泰晤士河场景中, 我们的制作人员使用了ZENO海洋-流体系统的各种功能对河流的大尺度运动进行了多次迭代, 并最终对河流域进行了一个规模为10亿粒子的FLIP仿真解算。

在此,我们可以将泰晤士河和伦敦城看成静置在一片汪洋中的静态碰撞体,如下:

 ZENO海洋解算中的设置界面
 
通过对使用海洋频谱构造的2D洋面仿真,和在2D洋面中创建的任意形状区域的多次调控和迭代(在此项目中,我们创建的区域即泰晤士河和伦敦城造型),实现对洋面运动节奏和尺度感的实时预览。

然后,我们会对这个超特大场景中10亿粒子进行3D-FLIP解算,空间分辨率精细到0.375米,(注:河宽200米,深50米,长度千余米)来产生卷浪和各种水体运动细节。结合接下来会聊到的ZENO流体“时空重仿真”功能,我们在制作中会先把这个海洋过程解算一整个长段,600Frame,耗时仅需6小时,以备后续迭代使用。


2、时空重仿真  

在实际项目制作中,内容的需求和调整时刻在变化是再常见不过的事情。陨石的落点和速度、泰晤士河周围景物的形态、爆炸场的形态力度等,都需随最终画面的review一遍遍地修改迭代。

如果每次修改,都不得不重新对该场景中整个600个frame进行重新迭代,实在是太浪费时间了。做过此类效果的艺术家大都知道,可能这600个frame中的前200个frame都是废弃不用的,属于是海水到“湍流态”的过渡过程,但重仿真又不得不从头跑,实在是费时费力。

为了应对此类情况,ZENO中的FLIP流体系统支持从任何时刻的粒子态进行时空重仿真。ZENO可以从任意一个仿真缓存下来的粒子状态加载流体系统,只要静态碰撞体的变化不大(允许微调),动态碰撞体前后是衔接的,就能对后续过程进行衔接的重仿真解算。

以600 frame的全周期来算, 最后镜头中只需要用到420-550帧的范围,陨石落水更是只在第490-550帧之间。对此,ZENO的时空重仿真功能允许仅仅对陨石落水的部分,进行反复多次地迭代调整,而无需整体重算,每次迭代耗时仅需1小时(10亿FLIP,60frame)。

这场戏中,不论是静态碰撞体的微调,还是爆炸场、陨石运动的调整总共迭代了有20余个版本,借由ZENO的时空重仿真功能,我们整体节省了100多个小时的迭代时间

 

此外,时空重仿真功能(spatial-temporal resim STR)能保证后续的重仿真与前面的解算结果及前序结果的衔接顺畅, 即使在碰撞体有微调的情况下, 也能保证不产生视觉问题。


在完成计算后, 再使用ZENO流体系统中的包面工具对这些粒子进行包面计算,形成最终用于渲染的几何面,处理时长为2min/帧(十亿粒子)。


使用ZENO的全GPU的纯路径追踪渲染器(16次反弹,水体开启了子表面散射和投射材质,散射材质偏黄的泥沙水质感),可对水体的最终视觉效果进行快速预览,在ZENO的GPU光追渲染器加持下,该预览的渲染时间仅为4秒/帧
 
二、烟雾仿真解析
 

如何保证烟雾形态细节和烟雾动态连贯?

场景:陨石坠落拖尾烟和爆炸场烟雾效果  
主要视效:烟雾仿真  
主要应用:ZENO烟雾系统  


ZenoSmoke是ZENO中自研的烟雾燃烧解算系统,基于泽森的ZPC(Zenus Parallel Computing)框架开发,得益于GPU并行计算和空间稀疏网格的数据结构,ZenoSmoke系统具有高效的解算能力。  

ZENO烟雾燃烧解算器的主要功能模块

在烟雾燃烧的图形学物理解算方面,与FLIP流体解算器不同,ZenoSmoke是一个纯网格法的Navier-Stokes方程解算器。ZenoSmoke系统中包含的MacCormack、BFECC等对流格式可以在任意大的时间步长下模拟出细节丰富的烟雾形态,并提供对流-反射方法来模拟出更真实的湍流动态。

我们也开发了针对GPU稀疏网格优化的多重网格线性系统求解器,用于加速流体的压力泊松方程的计算。在燃烧模拟方面,ZenoSmoke目前采用的体积燃烧模型可以让特效师方便的控制燃点温度、燃烧速率,燃烧产生的温度和烟雾以及体积膨胀等参数。

为了提供更多的艺术可控性,特效师也可以在ZenoSmoke系统中控制烟雾消散、温度冷却、浮力、风场、发射源和碰撞体。此外,ZenoSmoke系统还支持通过向速度场或温度场叠加分形噪声的方式,对烟雾施加人为可控的湍流动态或在烟雾边缘添加小尺度扰动,表现出最自然的扰动效果。

在该项目中,由于在陨石运动的Alembic动画中两帧之间陨石的位置相距较远,为了保持从陨石中发射出来的烟雾动态的连贯性,ZENO的烟雾解算器为每一帧计算数个子步(sub-step),并自动插值出当前子步陨石所在的位置和运动速度,用于进行烟雾的发射源和碰撞体解算。
 

子步解算中的陨石插值

陨石的拖尾烟轨迹通常很长,但对于中近景的陨石解算,一方面需要较高分辨率的空间体素来展现烟雾动态中的细节,另一方面又不希望花费大量的计算资源来模拟整条拖尾烟轨迹。所以,在ZENO中我们支持导入Abc、FBX和USD等相机,当陨石飞出当前的相机画面之后即可停止发射烟雾。


ZENO的烟雾燃烧解算器还支持导入任意时刻的VDB数据(包括速度、烟雾浓度、温度、燃料等空间场),并基于当前的烟雾场来继续解算。基于该功能,我们可以在已经解算出来的拖尾烟基础上,继续加入倒塌的伦敦塔桥并使之参与烟雾的碰撞解算,来获得更真实的相互作用。
 

加入倒塌的伦敦桥参与烟雾的碰撞解算


电影《流浪地球2》是泽森作为一个软件研发企业接到的一个出乎意料的制作项目,相关制作镜头也是因为同类软件无法满足计算效率和内存需求,从而在该项目中真正用上了自研的国产系统ZENO进行了大体量的物理特效解算。

据事后复盘,ZENO系统中多样化的控制工具和辅助功能为相关制作画面最终视觉效果的版本迭代节省了超100小时的时间。

未来,泽森团队也将更加着重于工具的开发和系统的升级迭代,把更多的AI计算工具引入到ZENO系统中,继续优化创新国产图形工具。



来源:CAE知识地图
碰撞燃烧湍流海洋爆炸控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-04-04
最近编辑:1年前
毕小喵
博士 | 博士研究生 CAE知识地图 作者
获赞 195粉丝 286文章 81课程 1
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈