Nvidia GameWorks Flex开源库测评

Nvidia GameWorks Flex开源库测评

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

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


前言

前两周给大家介绍了Nvidia GameWorks游戏开发套件中的可破坏系统Blast,今天继续给大家介绍该套件中的粒子模拟系统Flex。

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

Flex是一个利用实时粒子模拟方法,实现各种逼真视觉效果的系统。传统的模拟刚体、流体以及布料效果方法通常需要求解一些特殊的方程或者算法。Flex对不同物体使用了统一的粒子表示方式。因此,它能够非常容易地实现不同类型的物体之间的交互。这种统一的物理模拟方式在离线模拟中得到了广泛的应用,例如:AutoDesk Maya的nCloth,以及Softimage的Lagoa。而Flex则利用GPU并行的计算能力,使得这些方法能够实时地在PC上实现。

为了方便在Unreal引擎中使用该系统,Flex为Unreal引擎提供了插件,并将其中一部分功能通过SDK提供给Unreal开发者使用。下图显示了在Unreal引擎中使用Flex系统实现的部分效果,其中主要包含了纸片、流体、绳索以及布料的效果:

请输入图片描述

请输入图片描述

请输入图片描述

请输入图片描述

使用方法

Flex的Unreal插件主要提供的物理模拟效果主要可分为两类:弹性物体模拟以及流体模拟。接下来我们逐一进行介绍。在Unreal引擎中使用Flex的弹性物体模拟十分简单。首先,需要创建一个Flex Container资源:

该资源用于场景中用于Flex模拟的区域,在该区域内会设置了相应Flex参数的物体进行模拟。双击该资源,即可在编辑器中查看Flex Container的参数设置,如下图所示:

其中包含了粒子、物理模拟、碰撞、布料以及流体的参数,具体含义请参考Flex的使用说明。我们以默认参数为例,对弹性物体进行试验。双击任意一个静态网格,可在其细节面板中找到Flex参数设置中的Flex Asset选项。该选项有三种可选设置,其中Flex Cloth Asset用于模拟布料效果,Flex Soft Asset用于模拟弹性物体,Flex Solid Asset用于模拟刚体。我们以选择Flex Soft Asset为例:

然后,在Flex下的Container Template参数中选择之前创建的NewFlexContainer,即可看到物体表面出现红色小球表示的粒子,如下图所示:

其中,红色小球即为用于模拟该物体弹性效果的粒子,粒子的半径大小,以及数量可以在Flex Container以及静态网格的Flex参数中进行设置。此时,我们将该物体拖入一个空场景,即可产生弹性效果:

请输入图片描述

除此之外,我们还可以用同样的方式,在静态网格资源的Flex Asset选项中选择Flex Cloth Asset和Flex Solid Asset来模拟布料和刚体效果。

流体效果的模拟需要配合使用粒子系统的发射器来模拟。同样,流体模拟也需要创建Flex Container资源。同时,还需要创建Flex Fluid Surface资源,并在粒子系统发射器的Flex参数设置中进行设置:

然后,在粒子系统发射器的模块列表中添加Spawn Flex Fluid模块,并设置好粒子系统材质。最后,将粒子系统拖入场景即可:

性能测评

Flex由于使用了GPU加速模拟粒子效果,因此目前仅支持PC端的应用。我们利用UWA的性能测评工具对其进行了测试。测试设备参数如下:

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

我们一共测试了项目中自带的9个场景,包括了弹性物体、流体模拟、布料以及绳索等效果。从总体耗时来看Flex在CPU端的耗时很少,性能良好。这是由于其利用了GPU进行粒子模拟的原因:

在进行大量流体粒子模拟的时候,引擎物理模块CPU耗时仍然保持非常低的耗时:

其中,PhysX的刚体数量非常少,这也是因为该物理模拟使用了GPU粒子而非PhysX。

总结

本文对NVIDIA GameWorks Flex在Unreal引擎中的使用进行了介绍。并对其性能进行测评和分析。由于该粒子模拟利用了GPU的并行计算进行加速,其物理模拟的CPU端耗时在测试设备上降低到非常低的程度。因此,笔者非常推荐开发者在PC设备上使用该插件。但是,目前该功能还只能在PC上使用,无法支持移动平台。同时,该Unreal引擎插件还未将烟雾等效果开放出来。相信在未来,开发者可以利用Flex在Unreal引擎中实现更多酷炫的效果。

快用UWA Lab合辑Mark好项目!

请输入图片描述

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

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