当前您所在的位置:首页>新闻中心>公司新闻>

TurbulenceFD :基于体素的气体流体动力学

发布时间:2020/10/28 浏览量:583

https://static.jawset.com/jawset_logo_new.png

TurbulenceFD

 

基于体素的气体流体动力学

TurbulenceFD的模拟管道实现了一个基于体素的基于不可压缩Navier Stokes方程的求解器。这意味着它使用体素网格来描述烟雾和火焰的体积云,并解决描述流体在网格上运动的方程。对于每个体素TurbulenceFD计算流体的速度以及多个通道,以描述诸如温度、烟密度、燃料量等属性。此模拟过程为每个帧生成一个体素网格,该网格缓存在磁盘上供Volumetric Renderer使用。

 

直观的工作流

为了设置流体模拟,艺术家使用任何类型的几何对象或粒子系统来绘制空间中的烟、热、燃料等来源。然后,气流以一种物理上合理的方式携带这些排放物,创造出火灾、爆炸、蒸汽、云层、灰尘等的真实感。

 

停止您的CPU

流体模拟中最大的技术挑战是处理体素网格序列所需的大量数据。这就是为什么TurbulenceFD的模拟管道从一开始就被设计来优化性能。这包括仔细选择有效的数值方法,在整个模拟管道中提供高精度和稳定性。并使用最新的高性能计算技术实现这条管道,以优化内存缓存、多核CPU和高级向量指令集。对艺术家来说,这意味着可以在更少的时间内运行更多的迭代,从而使使用流体的工作更加直观和高效。

 

 

GPU上的最高加速倍数为12

是的,十二倍!10分钟而不是2小时。原因很简单:今天的高端GPU的内存吞吐量是高端CPU的8-15倍。TurbulenceFD利用了这一点。它的特点是一个混合CPU/GPU模拟流水线,实现了巨大的加速。与一些基于GPU的工具不同,这不仅仅是CPU模拟的精简版本。所有功能都支持相同的质量。当超过GPU内存时,TurbulenceFD会动态切换回CPU。这使您能够实现接近实时的低分辨率速度,并在数亿个体素中平滑地缩放到高分辨率。流体模拟可以在快速迭代中进行调整,而不是仔细更改参数、发送模拟作业并在数小时内看不到结果,而是在模拟处理过程中观察更改的效果。

 

基于物理的火着色器

当创建可信的火灾动画时,正确的颜色是至关重要的。您可以手动设计您的颜色渐变完全艺术控制。如果您想要真实的火焰颜色,直接调整颜色的过程可能是耗时和乏味的,尽管。因此,火着色器基于黑体辐射模型模拟逼真的高动态范围火焰颜色。该模型仅由两个温度值控制。在这样的温度下,它会产生真正的火的颜色。但是混乱并不能阻止您。您可能需要逼真的颜色,但需要更大的灵活性来调整fire所具有的巨大动态范围。也许给红色一个提升,压缩一点动态范围,或者只是使用生成的颜色作为一个起点直接重新编辑。

 

多重散射

总而言之,多重散射是烟雾的全局照明。这是一种使烟雾更真实、更明亮的方法,因为它是从各个方向照亮的。它还允许火从内部照亮烟雾,这对于真实的爆炸阴影至关重要。与许多全局照明技术不同,TurbulenceFD中的多重散射不会添加噪声,因此可以很好地用于动画。在TurbulenceFD中的多重散射渲染时间实际上是可以承受的。但如果您赶时间,您仍然可以在速度和照明细节之间达成妥协。

 

粒子平流

流体动力学的核心是创建一系列描述流体复杂、特征运动的速度场。可以使用TurbulenceFD的速度缓存来控制粒子系统的运动。这允许您使用碎片或火花来补充体素渲染器,或者只渲染粒子本身。

 

 

自适应容器

TurbulenceFD不断地尝试最小化需要处理的卷,以节省内存和时间。对速度场进行分析,以确保只有体积的那些部分将被剪裁,而不会影响后续帧中的流。如有必要,可以控制每个流体通道的剪裁灵敏度。

 

发射器

发射器对于流体模拟就像笔刷对于绘制一样。如果一个物体被点燃,它会放出热量和火焰。TurbulenceFD允许使用任何几何对象或粒子系统发射到流体通道中。这将为发射器的形状和动画提供最终的自由。在TurbulenceFD中使用发射器就像为绘制火源、烟雾源等的笔刷笔划设置动画一样。流体模拟将获取动画发射并从中创建物理上合理的流。

 

碰撞对象

在许多场景中,让流体流与实体对象交互非常有用。从简单的实心地板到穿越火灾和烟雾的车辆,再到着火的动画角色。不仅有必要将模拟整合到一个环境中,还可以在物体的尾迹处产生优美自然的湍流。碰撞物体可以搅动流体,使其向一侧摆动或充当障碍物。TurbulenceFD还支持具有各种复杂动画的碰撞对象,包括MDD导入和刚体动力学控制的对象。

 

着色曲线编辑器

体素着色的核心是函数曲线(f曲线),它将温度和密度等值重新映射到用于不透明度和颜色的强度值。TurbulenceFD具有一个f曲线编辑器,专门为基于体素的流体着色设计。它允许精确和直观的控制,使它非常类似于许多艺术家已经熟悉的色彩校正工作流程。由于f曲线在渲染过程中要进行数十亿次的计算,因此针对TurbulenceFD设计了一种特殊类型的样条曲线,这种曲线对于体素渲染特别有效。

 

湍流映射

向流体速度场中添加程序噪声是获得看起来更湍流和更有趣的卷曲流的一种方法。这些控件的工作方式非常类似于纹理工具中常见的程序噪波着色器。然而,在整个体积上均匀地加入湍流,会激起爆炸的核心,就像远离剧烈反应的部分一样。这没什么意义。因此TurbulenceFD允许您使用一个流体通道和一个简单的映射曲线来控制向流中添加卷曲的确切位置。这样,湍流只能添加到某些区域,例如爆炸的核心或火焰的高温部分。

 

 

视口预览

基于OpenGL的预览可以实时详细查看每个流体通道。预览中支持多种着色模式。这里有一个分析模式,可以详细查看模拟的原始输出。还有一些着色模式,可以在调整每个着色器的设置时提供实时反馈。除了全三维预览模式外,还可以显示体素栅格的二维切片,定向并定位在体积中的任何位置。这可以看作是预览模式的放大镜,与几何对象的线框视图相当。

 

体素网格压缩

为了帮助处理大量的模拟数据,TurbulenceFD的特点是无损数据压缩,这是专门为流体数据设计的。在实践中,它通常将体素数据减少到大约60%。

 

点火控制

在TurbulenceFD中,控制火的点燃方式和火焰在传播的速度与用发射器绘制流体一样简单灵活。它可以基于任何流体通道,而不仅仅是温度。这避免了您必须做的平衡动作,如果温度也驱动了让热气上升的浮力。

 

上升-恢复

通常,在低或中等分辨率下进行模拟,以便快速迭代。然后,您只需以更高的分辨率重新模拟即可得到最终结果。但由于模拟的数值性质,这不仅可以增加高分辨率的细节,而且可以稍微改变大尺度的运动。向上分辨率是一种保持低分辨率或中等分辨率模拟的精确形状和运动的方法,并且只向其添加高分辨率细节。它也比在相同的高分辨率下运行完整的模拟要快。

 

子网格详图

使用渲染时间子网格细节TurbulenceFD进一步推动了向上恢复方法。无需在基础模拟上运行第二个过程,只需在渲染时将高分辨率细节添加到结果中。对于极端的设置,这不像恢复一样灵活,但也不需要额外的模拟过程或额外的缓存内存。

北京哲想软件有限公司