/ 艺术 /一年的雨:摧毁人们的工作
艺术

一年的雨:摧毁人们的工作

2020-05-25T14:22:15 + 02:00

我如何让建筑物在一年的雨中崩溃。

自2014年我开始在DaeDalic工作以来,我一直在照顾我们内部生产3D游戏的视觉效果,例如沉默或心态。有一段时间现在我们正在开展一场叫做一年的雨。这里的新事物是,这不是一个讲故事驱动的冒险游戏,如我们曾经创建的,而是一个真正的RTS游戏,具有竞争力的游戏力学,合作社和多人游戏以及一个完整的运动。除了像我们这样的小团队这样的小团队的大量工作之外,这种游戏的挑战是我们生产的一切都是一个主要的方法:首先是游戏玩法。这意味着视觉效果:可读性是最重要的。它没有任何人,如果你看到你在视频游戏中看到的最令人敬畏的爆炸,但看不到自己的单位甚至明白发生了什么。

除了众多的能力,环境和UI效应外,破坏效果是游戏的重要组成部分。看到在我围攻下的敌人建筑物崩溃是有点令人愉快的。此外,破坏效果不仅有效地满足,而且是游戏的可读性。有人看着战场需要知道发生了什么。当然,我们有生命的酒吧和UI,它向您展示了单位或建筑物的生命或健康。但是,当我看到一堆火焰和烟雾出来的主楼时,我立即知道这里发生了一些事情。

毁灭的四个州。火焰在预定义的插座上随机分布。

我们没有开始火灾
为了代表建筑物的健康状况,除了UI和Life Bars之外,我们还使用火粒子。建筑物的健康越少,在预定义的插座上产生了越多的火焰。例如,如果一个建筑物只在一个地方燃烧,它仍然有大约75%的健康状况,但如果它在3个地方燃烧,那么它受到严重影响。我们使用这种方法,因为它易于实施,我们必须记住您可以修复您的建筑物。因此,如果我们在失去健康时开始摧毁它们,我们也必须在修理时再次建立它们。取消激活粒子发射器比动作一些构建或修复建筑物的动画是更容易的。轻松修复。

尽管如此,如果建筑物的健康价值落到或低于0,那应该是
坍塌。它看起来很酷,感觉很好。从这一刻起,它不再是游戏玩法。它失去了碰撞,不能再产生任何东西。它甚至无法选择。所以,我们有一些时间在这个问题上有一些效果魔法。折叠动画只是视觉,仅作为反馈,对游戏玩法没有影响。

虽然虚幻发动机具有相当强大的静态网格的破坏力学,但静态网格可以动态接通,并且物体可以令人印象深刻地分开,但这些动态也会带来无法控制性。因此,毁坏物体的一些部分可以通过地图奇怪地飞行,这可以导致有趣,但并非总是想要的结果。另外,碰撞计算可以相对速度昂贵并且向下推框架。因此,不真实的动态破坏是没有选择的。

那么,动画?它相当难以用手动画毁灭。这是耗时的,需要很多抛光,看起来和觉得对。更不用说我们的动画部门充分占用了游戏中所有可玩的单位的动画集。还有很多建筑物来摧毁。只是为了一个派系,大约有八个建筑物。和环境道具等瓦砾或门。和你必须收集木材的树木。我们有很多树木。所以,我决定使用模拟。

用于破坏营房的材料实例。来自Houdini的所有参数都在这里设置。

一种魔法
对于网格销毁和模拟,我使用Sidefx Houdini。 Houdini在电影业的根源,基本上是CGI的完整包装。有趣的是非破坏性的工作流程,因为它基于瀑布模型的节点系统,您可以在其中撤消,更改和调整设置和修改。它还采取了对资产创建的程序方法,通过创建通过随机化的多种变化来对小组产生更高的输出来更容易和更快地为小组产生更高且更快。此外,Houdini正在开发和更新游戏开发的工具集,专门从事游戏资产和游戏发动机的应用程序。

该工具集的一部分是纹理导出的顶点动画,短增值税。该方法存储顶点的位置和旋转或在纹理中的先前断裂或/和动画网格的枢转。纹理的相应信道代表3D空间中的各个方向,即RGB = XYZ。纹理的宽度来自动画和/或模拟顶点,并且高度对应于序列的帧计数。例如,如果您在96帧序列中有一个带有40个顶点的动画网格,则纹理将为40 x 96像素。

然后通过发动机中的材料/着色器在单独的UV通道中解释纹理。这将每个帧的模拟顶点设置为各个位置。然后可以根据定义的值播放序列,如曲线随时间。优点是序列完全由材料控制。不需要索具或加权,并且着色器复杂性是可控的低。只需要准备网格
破坏和模拟。

具有未共享边标记的分组几何图形,标记为连接标记边缘的多脚节点。

在墙上的另一块砖
如何摧毁网格?首先,我从3D艺术家那里得到一个最终网格。通常,该网格被优化,这意味着已删除不必要的面。网格几乎是空洞的。这对游戏有好处,因为较少的三角形意味着更好的性能。但是要使网格很好地分开,我需要封闭的几何形状。当网状物被破裂时,网格的表面被切割。在边缘,创建新几何,所谓的内部几何。此Geo是提供网格卷所必需的。如果没有新创建的地理内部,网格在分开时看起来像一个空壳。

所以,让我们潜入Houdini。要在所需的位置关闭网格,我将单个较大的零件进行分组,搜索未共享的边缘,并使用Polycap关闭这些部件。这一步往往需要大多数时间,因为我必须确保网格清洁并准备好压裂。在最好的案例中,我的3D艺术家同事们把我的封闭和未包装的网格。在最坏的情况下,我打开了一个打开的,将需要重新制作的网格组合在一起以获得销毁目的。如果网格已准备就绪,则我打开新曲面。然后我随机分散在网格上。在这些位置,网格使用voronoi骨折破裂。分散点的数量表示网格被破坏的部分。为了更多地控制分散,我使用绘画节点来指定网格顶点颜色并使用这些值作为散射的基础。所以,我可以让一系列网眼的部分碎得多。

将网格切成小块后,必须未包装的新创建的内部表面。幸运的是,Houdini为骨折节点中的新几何中创建名称属性,使得简单地解开它们。为了能够将自己的材料分配给虚幻的内部几何形状,这已经必须在Houdini完成。为此,将单独的材料分配内部地理。我通常使用简单的红色材料作为占位符,这使得折断引起的误差更容易。

Houdini在行动中。网格下方的“碗”抓住了落件。右侧的节点树定义了破坏。

摆脱它
现在网格已准备好进行模拟。使用RBD裂缝对象架子基本上是用于仿真节点树的预设,我从骨折地理创建刚性主体对象,分配碰撞和重力属性。您可以自己构建此节点树,但Houdini与货架工具做得很好,这是最快的方式。此外,您始终可以潜入节点并编辑它们。

在新创建的DOP网络中,它代表动态操作网络并包括模拟,现在模拟网格。仍然需要设置的参数,因为我想要的模拟表现。如果我只是让模拟运行,网格将只是掉到无穷大。

要控制模拟,请设置构成网格以创建静态对象的单个部分的对象类型。结果,各个部分现在是静态的。他们仍然碰撞,但它们不受重力或其他力量的影响。然后我创建一个包含网格部分的框组。我将这些分组部分设置为通过AttribututWrangle为主动,基本上是代码节点。由于我可以随着时间的推移移动盒子组,因此我可以激活越来越多的裂缝网格的部分。如果将盒子组慢慢地从网状物到底部移动,则网格的各个部件将接一个地激活并慢慢向下落后,与静态网状部分碰撞并导致良好的破坏效果。

为了给予零件更多的质量,我减轻了重力力,导致它们更慢地下降,这使得它们显得更大。由于游戏中的建筑物与单位相比相对较小,因此较慢的分开使它们尺寸和重量使它们看起来不像微型。我不允许下降部件与地面平面碰撞。我希望他们右转穿过地面。因为您可以将建筑物几乎无处不在地图上放置,因此您永远不会知道各个部件如何或位置与环境或其他单位碰撞。如果我让单个部分刚刚与建筑物的其余部分碰撞,没有别的,我没有躺在或剪切的部分或剪切其他网格。它只是避免可能的错误。然而,各个部件落过地面到无穷大的事实也具有缺点。由于下降部件的位置不断变化,并且距离增加,存储在纹理中的位置值变得太大。当播放发动机中的序列时,这会导致错误。因此,我始终在捕捉我的各个部件的模拟下构建一个大的“碗”网格。在发动机播放时,这看起来有趣,但通常玩家看不到它。

最后,我通过VAT游戏架出口模拟。在出口商中,您可以指定模拟Geo的路径,以及帧中的序列的长度。

我尝试将所有序列保留在96到120帧之间,以获得相当短且紧凑的破坏序列。如果破坏变得太长或太慢,球员可能没有得到,那么建筑物或道具已经被摧毁并继续试图摧毁它。一如既往:首先是游戏!

该导出创建了一种新网格,具有所有压裂和新曲面,以及所提到的位置/旋转纹理。

顶部:详细视图的模拟网格与包装的地理点数。底部:虚幻的位置纹理。对于该序列的点和95的宽度为37像素。

现在顺其自然
我将生成的文件导入引擎。在销毁网格的静态网格设置中,I标志使用精度UVS选项以防止UV布局中的错误。纹理不得压缩。每个像素包含位置/旋转值,这些值可以通过压缩丢失。由于模拟中的大多数网格由填充几何形状组成,这意味着连接的几何形状,它在一体中可以在中间获得一个枢轴点。

优点:并非所有顶点都必须保存在纹理中,但只有各个骨折部件的枢轴。这又意味着,如果我有一个具有24.000顶点的破坏网格,但骨折并装入40件,我只需要这40件的枢轴,这使得纹理仅为40像素宽。并且因为序列大多在96到120帧之间,纹理在96到120像素之间高。甚至未压缩,这使得它不比几千字节更大。当我骨折时,我只需要小心,因为即使几何形状在Houdini包装,如果我将其导入引擎,我仍然有所有的顶点,这可以炸掉网格。所以,

我必须保持简单:更小的碎片,更大的块,没有那么多的内表面。最后一步是将所有部件放在一起。纹理需要在材料中解释。 Houdini中的增值税导出为此提供了所有必要的代码。我只需要从Houdini复制它并将其粘贴到空的材料中。所有必需的配置都得到评论,因此建立材料非常容易。为了使其更容易将增值税功能分配给已经存在的材料,我取得了一种材料功能。现在,我可以为每个可破坏的网格创建来自主材料的实例,其中包含所有所需的参数暴露和编辑,以创建整个众多可破坏的网格材料。只有一些如界限和帧计数的值必须从Houdini传输到材料实例,并且必须将材料分配给销毁网格。

为了使其在游戏中工作,我们创建了Blueprint组件,该组件被添加到单个蓝图。这些组件控制破坏序列的所有设置。我可以定义我要使用的哪些销毁网格和材料,更改变换设置以适应优化的“原始”网格,为特殊道具添加其他销毁网格,或者设置许多其他参数,如延迟,贴花或粒子效果。

到底
对我来说,增值税管道很好。由于“瀑布”节点的基于节点和不可破坏的工作流程在Houdini和Easy进口到发动机中,我可以在很短的时间内赚取大量的游戏,并将它们集成到我们的游戏中。


马丁怜悯
VFX艺术家在DaeDalic娱乐

在柏林应用科学大学学习游戏设计的同时,他的教授问他究竟在游戏开发中究竟想做什么。不太确定,他的教授建议他专注于视觉效果。事实证明,一个非常好的建议。从那时起,马丁喜欢每天做出效果并向它学习新事物。

关于作者: 11. 2019年11月
类别:
去顶级