Unreal中的烟雾火焰流体模拟

【博物纳新】是UWA旨在为开发者推荐新颖、易用、有趣的开源项目,帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果,并探索将其应用到自己项目的可行性。很多时候,我们并不知道自己想要什么,直到某一天我们遇到了它。

更多精彩内容请关注:lab.uwa4d.com


前言

前几周介绍了Unreal引擎中集成的Nvidia GameWorks游戏开发工具Flex。本周继续给大家介绍其中另一个流体模拟工具Flow。Nvidia Flow是一个基于GPU的实时流体模拟工具,它采用了动态网格的方式模拟流体的运动以及物理碰撞等效果。在模拟过程中,它利用了D3D 11中的Volume Tiled Resources实现动态网格模拟。然后,采用Ray Marching以及Color Map等方法对该Volume进行绘制。因此,它能实时地模拟火焰、烟雾等流体与场景中实体交互的逼真效果。

开源库链接:
https://lab.uwa4d.com/lab/5b85680302004fb65975d352

下图显示了在Unreal引擎中使用Flow模拟的各种效果:

(1)烟雾与物体碰撞交互

请输入图片描述

 

(2)F形状的火焰

请输入图片描述

 

(3)燃料逐渐燃烧

请输入图片描述

 

(4)烟雾产生的自阴影

请输入图片描述

 


使用方法

在Unreal引擎中使用Flow插件非常容易。首先需要将NvFlow的插件集成好,并在Unreal引擎的Plugins设置中开启它:

然后,即可在工程中使用该插件的功能。本文以Unreal引擎中的默认场景为例,介绍Flow的使用方法。使用Flow制作流体时,需要使用两种特殊的Component:FlowGridComponent以及FlowEmitterComponent。

2.1 FlowGridComponent
Grid是上文中提到的动态网格,它是Flow工具中用来模拟动态流体的结构。FlowGridComponent则是用于在场景中设置Grid所占区域体的大小以及Grid分辨率的组件。使用FlowGridComponent需要先创建FlowGridAsset。创建方式如下图所示:

双击FlowGridAsset即可打开编辑器进行设置:

如上图所示,在FlowGridAsset中可以设置Grid的大小、分辨率、使用内存以及粒子相关的参数。参数的具体含义读者可参考官方文档,本文不再赘述。在默认情况下,FlowGridAsset的设置可以用于模拟火焰的效果。然后将该资源拖入场景,即可在场景中创建相应的FlowGridActor。选中该Actor可以看到其包含的Grid所占场景的范围:

如上图所示,蓝色方框即为场景中FlowGridActor有效范围的可视化结果。

2.2 FlowEmitterComponent
Emitter是场景中的粒子发射器,发射出的粒子会通过Grid进行运动的计算和模拟。使用FlowEmitterComponent需要先在场景中创建一个静态模型,然后通过添加蓝图脚本创建蓝图资源:

然后,对该蓝图资源添加FlowEmitterComponent:

并将该StaticMeshComponent的碰撞预设值改为Custom,同时将Flow那一类型的碰撞设置为Overlap:

最后,将该蓝图拖入场景即可。在控制台中输入FlowVis,还可以查看运行时Grid的使用情况:

 


性能测评

Flow由于需要D3D 11的支持,因此目前仅支持PC端的应用。我们利用UWA的性能测评工具对其进行了测试。测试设备参数如下:

CPU:Intel(R) Core(TM) i7-6700HQ
GPU:NVIDA Geforce GTX 1070
OS:Windows 10

本文一共测试了Nvidia Flow Sample工程中的10个场景。在测试设备上,测试场景的总体性能良好,CPU耗时很低:

由上图可知主线程耗时相对较低,渲染线程耗时相对较高。而通过渲染线程的耗时堆栈可以发现,其主要耗时是在等待GPU渲染结束:

由此可见该工具在计算模拟时CPU端耗时很少,主要耗时是在GPU端。


总结

本文对NVIDIA GameWorks Flow在Unreal引擎中的使用进行了介绍。并对其性能进行测评和分析。该工具利用了GPU对流体进行模拟,因此其CPU端耗时很低,非常适合PC端使用。由于该流体模拟利用了D3D 11的API,目前该功能也只能在PC上使用,无法支持移动平台。

快用UWA Lab合辑Mark好项目!

请输入图片描述

今天的推荐就到这儿啦,或者它可直接使用,或者它需要您的润色,或者它启发了您的思路......

请不要吝啬您的点赞和转发,让我们知道我们在做对的事。当然如果您可以留言给出宝贵的意见,我们会越做越好。

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值