为什么游戏图形不如动画电影那么漂亮?


60

我记得看过《古墓丽影》预渲染的预告片,并希望这些图形可以出现在游戏本身中。

为什么预告片和实际游戏之间有如此大的差异?我知道游戏是一个完全不同的概念,它具有不同的流水线,必须经历不同类型的玩家交互等。我想知道与动画电影相比,游戏的渲染是如此困难。

到目前为止,我知道制作游戏和动画电影会分担一些基本的工作量,例如制作3D模型,渲染它们(仅在游戏中实时发生)。动画电影会渲染很长时间,我们只能看到预渲染的场景。我只知道这些,所以我希望您能从这个角度回答!

动画电影的渲染时间长短又使它们如此漂亮,而游戏中的实时渲染却不那么漂亮(从一般角度来看)呢?


1
我真的看不到接受的答案如何真正满足您问题的要点。您能否在此留下评论,作为对您所了解内容的总结,即它为您带来了什么新闻,以便您现在就了解以前没有的问题?
Bogdan Alexandru

4
不确定您对什么感到困惑。问题是标题;接受的帖子回答了这个问题。
2014年

2
实际上,我从答案中了解了80%。其余的占20%,特别是我从@Vladimir的答案中学到了很多(请参阅下文)。有些答案甚至讨论了我没想到的事情,例如在渲染后添加细节。为了回答您的问题,我选择了答案,因为我认为它带来了更深层次的理解(不仅他提到了要点,而且还包括背后的算法/概念)。到那时我已经读完这篇文章,其他答案也很棒!很难选择哪一个最好,但是人们似乎也喜欢那个!我会全部打勾!
cowboysaif 2014年

也许是因为游戏开发者没有兴趣花费5000万美元以上的特效-这几天电影制片人通常都会这样做。
Pieter Geerkens 2014年

Answers:


109

您已经提到了中心点之一:时间

在渲染高保真动画的过程中,使用了多种不同的方法和算法(通常都统称为“全局照明”),其中“ 射线追踪”是最常见的方法和算法之一(其他包括例如“ 光能传递”和“ 环境光遮蔽”))。

光线追踪包括模拟(通常是高)数量的穿过场景的光线,并计算当它们以不同的材质撞击物体时它们的路径,反射和折射。作为回报,不同的材料具有不同的物理特性,从而导致对射线的特定反应(例如,从一个物体反射的光量比一个有光泽的物体要高出一个有光泽的物体)。

另一个要点是物理:以物理上正确的方式模拟成千上万种头发的耗时。这就是为什么在较旧的游戏中,通常使用非常粗糙的网格来逼近头发,然后将其纹理化以赋予头发印象,也许还添加了一些其他移动对象以使其看起来更逼真。

还应考虑:内存和带宽。应用于场景中对象的纹理的质量越高,在游戏中加载和使用它所需的内存就越多。但是,不仅系统需要有足够的内存来保存数据,而且还需要传输这些数据,从而耗尽可用带宽。由于内存和带宽受到限制,因此可以最大程度地实现。

游戏通常仅对附近的对象使用高分辨率纹理,而对较远的对象使用较低分辨率的图像(术语:MipMapping作弊,从而减少了所需的带宽,因为需要获取的纹理像素更少,从而提高了性能(请参阅Apple的OpenGLES编程指南中有关MipMapping的部分)。

同样,游戏也经常根据物体的远近使用不同的网格物体,而远处的物体则不太细致(术语:LoD = 细节水平)。

结论:在实时图形(例如游戏和模拟)中,这种详细而复杂的渲染过程当然无法产生流畅/流畅的场景。每秒至少需要20个渲染帧才能实现人眼那种流畅的动画/运动效果。另一方面,在动画电影中渲染单帧(!)可能很容易占用数小时到几天的时间,具体取决于许多因素,例如“光线追踪”中使用的射线数或“环境”的样本数遮挡(请参阅这些Pixar第1页 / Pixar第2页 以获取16和256个样本的屏幕截图)以及所需的影片分辨率(更多像素=需要计算的更多信息)。另请参阅这篇文章关于皮克斯《怪兽大学》动画电影背后的过程,给出了一些有趣的见解,还提到了每帧29小时的渲染时间。

通常:要实现的保真度/真实性越高,通常需要越多的迭代/跳动/样本,这反过来又需要更多的资源(时间和/或计算能力/内存)。要可视化差异,请在此示例中基于反射次数查看生成的渲染以进行折射计算:Keyshot中的钻石反弹

但是,当然,实时应用程序的质量一直在提高,原因有两个:

  1. 更强大的硬件:随着(游戏)计算机变得更好(=更多[并行]计算能力,计算机组件之间更高的数据传输,更多和更快的内存等),视觉保真度也随之提高,因为实际上更多的是耗时的计算在实时系统中变得可行。
  2. 开发和实现了更聪明的方法/公式,无需射线就可以创建逼真的效果。这通常涉及近似值,有时还涉及预先计算的数据。一些例子:


4
@cowboysaif不,您不能“按原样”在GPU上执行此操作。您将必须获得专门的硬件。但是,尝试使用CUDA或类似技术进行实时射线追踪。
温德拉2014年

4
在制作专业品质的电影时,除了用于脱机渲染中的光线追踪外,还有许多其他技术。但是正如您所说,它们使用昂贵的渲染,照明和阴影技术,这些技术对于实时渲染根本不实用。
MrCranky 2014年

40
这个答案解释了为什么预渲染的动画需要花费更多的时间,却并没有真正体现出比例感。差别巨大!游戏必须在不到1/30秒的时间内渲染一帧,而电影通常需要花费几天的时间来渲染每一帧。
鸣叫

9
“天”无疑是时间范围的高端,但是是的,电影有时确实需要花费超过1天的时间才能渲染一帧(例如,请参阅Venturebeat.com/2013/04/24/…),甚至是平均水平渲染时间仍然是每帧半天,仍然比游戏要渲染的时间更长。整个电影不需要十年的渲染时间就是因为它们有一个渲染场。数百台机器同时渲染。
鸣叫

7
一些事实:光线跟踪在各处都被使用,它绝对不是利基技术。VRay仅是CPU。VRayRT仅适用于GPU。GPU不太适合生产,因为场景通常占用大量GB的RAM,因此不适合GPU(但有时会有所帮助)。我们自己的镜头在高端CPU上需要1-2小时/帧,而且时间不长。JackAidley是完全错误的。
Calvin1602 2014年

44

除了时间因素外,值得注意的是,在电影中,艺术家可以完全控制观众的观看和不观看。

在典型的电影场景中,相机不会花费太多时间指向天花板,指向房间的黑暗角落或对准某人的脚踝,因此这些元素的多边形和纹理预算会很低。

如果整个场景是从一个有利位置进行的,那么虚拟场景(就像真实的电影场景)就不需要包括相机后面的部分。在大多数游戏中,玩家可以随时随地自由观看。这意味着质量预算可以集中在实际看到的内容上。(某些第三人称游戏,例如《战神》系列使用受限的相机;它们的视觉效果明显好于其他免费相机的游戏。)


12
这一点不可小.。渲染一组固定的框架可以完全专注于那些框架,任何导致单个框架出现问题的问题都可以手动解决。
aaaaaaaaaaaaaa 2014年

9
哎呀,这经常用于过场动画“活在引擎中”的游戏,这就是为什么过场仍然可以看起来更好的原因。
2014年

打破这一规则恕我直言的一款游戏是《兄弟:两个儿子故事》。开发人员竭尽全力确保相机放置在正确的位置并且感觉自然。
2014年

12
动画电影的渲染时间长短又使它们如此漂亮,而游戏中的实时渲染却不那么漂亮(从一般角度来看)呢?

您假设差异只是在渲染上-在动画电影中,事后也有进行编辑的机会。它们可能具有在原始引擎中难以实现的复合效果,或者它们可能会进行一些调整(例如,每隔10帧删除或重复一次,以加快/减慢动画速度)。

如果有机会,请查看其中的一张“ Roughnecks:Starship Trooper Chronicles” DVD,因为它们具有编辑和动画制作人员对他们开始落后于交货时间表时所必须做的技巧的评论记录,例如回收镜头,但翻转轴使其不那么明显,进行色彩校正,掩盖他们不喜欢的东西,增加爆炸等。


游戏引擎也可以做到这一点!;-)
阿德里安·梅尔

@AdrianMaire:他们可能还会做其他一些事情,但是他们没有人在担任编辑,并在需要时进行调整。我知道我提到如何,他们调整的事情,但我的主要观点是,有参与预渲染的东西..人

10

您已经回答了自己的问题。动画电影通常通常具有较高的细节水平,这会导致每个单独帧的渲染时间较长。

另一方面,游戏中没有太多细节,因为场景每秒必须渲染30次或更多次。这就是为什么开发人员尝试尽可能多地重用资产(纹理,模型等)的原因,因为在两个位置渲染同一对象比如果一切都是唯一的要快得多。他们还必须注意不要在模型中使用过多的多边形,而是尝试通过使用照明,纹理,凹凸贴图和其他技术来获得深度印象。

电影没有这个问题。他们以所需的方式制作场景,并使用所需的尽可能多的详细纹理,模型和几何形状来实现所需的场景。

也许有人会争辩说游戏正在赶上。如果您最近看一些外观最好的游戏,它们与电影质量的距离就不如以前。当然,与游戏相比,您始终可以将更多细节填充到预渲染的场景中,但是我认为这种差异在几年后不会那么明显。


1
爱这个答案!那么谁是罪魁祸首?多边形水平或光线追踪?游戏引擎是否因为z缓冲区更轻便而倾向于使用z缓冲区?还是光线追踪比计算深度还要有用?
cowboysaif 2014年

2
我猜是射线追踪。菲利普(Philip)对此似乎比我了解得多,但据我所知,它基本上是一种模拟光线的方法,因为它们会在现实中起作用-反射物体,扩散,破碎或以其他方式更改场景中的材质, 等等。如果场景中有毛发,头发或其他繁重的模拟(如流体)之类的东西,则物理性能也很繁重-而且,这些东西还会再次影响射线跟踪的复杂性。
基督教徒

2
光线跟踪应用程序还需要Z缓冲区之类的东西来确定和存储哪些对象被其他对象遮挡。但是光线追踪比实时应用程序要详细得多,因为它可以完成克里斯汀和我已经提到的所有事情,通过发送这些单独的光线并计算实际的折射/散射(例如在玻璃物体或水中)来获得更高的图形保真度。 (例如物理头发渲染,间接照明和环境遮挡等)(尽管正如我提到的那样,其中的某些部分现在也可以在实时应用中进行近似估算)。
菲利普·阿尔盖尔2014年

7
电影的渲染时间约为每帧10-12小时。而且,根据布林定律,每当计算能力提高时,他们只会向场景中添加更多内容,因此它实际上永远不会变得更快。电影渲染还倾向于对所有渲染方程式使用封闭形式的“精确”解决方案,其中游戏进行了多种近似,因为它必须比电影快一百万倍。
Chuck Walbourn 2014年

2
之前从未听说过布林定律,这种联系很棒
2014年

8

其他答案详细介绍了原始图形问题,但没有提及游戏与电影和预告片的真实性的重要组成部分:动画和相机运动

在电影或预告片中,可以仔细协调人员和照相机的每个动作,以显示当前正确的情感,而无需重复进行。在视频游戏中,游戏必须能够对玩家的动作做出即时反应,并且必须重用少量的原始动画,以填补可能的无限游戏时间。

例如,当治疗师点头并给他一个“还不错”的微笑时,以及当劳拉紧握扶手,摇动她的腿或敬畏地看着洞穴时,这种情况的例子都来自有问题拖车。这些小的问题(或缺少这些问题,以及所涉及的“可塑”字符)对感觉到的真实感的影响远大于对图形的微小改进。

与其他图形差异不同,这不是一个可以通过施加更多计算能力来解决的问题:这是脚本编写的世界和响应您的每个操作的世界之间的根本差异。在这一方面,我希望在可预见的将来,当今预告片的真实感将超越所有游戏玩法。


8

除了已经发布的其他出色答案之外,值得注意的是,为了实现游戏所需的快速处理时间,游戏开发人员需要将许多视觉效果作为简单的纹理进行烘焙。这意味着必须格外小心,以免产生无法很好烤的效果。

对于电子游戏来说,很难克服的一个重要影响是次表面散射(SSS)。不幸的是,这种效果对于生成逼真的人类皮肤确实非常重要。这就是为什么许多“逼真的”视频游戏角色看起来像可塑的原因。

开发人员避免此问题的一种方法是,故意使字符变色鲜艳以损害塑料外观,或在面部上添加大量阴影和纹理细节(如胡须等),以破坏原本较大的连续部分皮肤。


2
更不用说电影动画中的所有后期处理工作了。许多事物被渲染为多个单独的场景,渲染后需要将它们层叠在一起。这就是为什么在许多动画电影中,您经常会看到相对静态的背景,其中角色在前景中移动。
弗拉基米尔2014年

6

要回答OP在评论中提出的问题之一:

“那么谁应该是罪魁祸首?多边形水平或光线追踪?”

这个问题比看起来要困难。我认为以下等式是一个很好的经验法则(由我自己组成):

number of calculations = {polygons} * {light sources} * {effects}

基本上,这意味着对于具有相对较少特殊材料的模型(即,没有镜面,子曲面等),计算时间将取决于poligon的数量。对于非常简单的视频游戏图形,通常就是这种情况。

然而,实际上,在较新的高端游戏中,尤其是电影中,罪魁祸首是“通常”的光线追踪。为什么?好有两个原因。首先,我将给出数学上的原因,最后,是我对真正原因的看法。


数学原因:

更新:这种数学上的解释可能并不完全准确。请参阅注释中的CrazyCasta的解释以获取更多详细信息。

假设您有1000个多边形和3个光源。您需要执行的最少的光线跟踪数是3 * 1000。

如果我们过度简化这种情况,并假设1射线迹= 1计算(总低估),那么我们将需要3000计算。

但是现在让我们假设您也要进行反思。

自由软件程序Blender中反射的默认设置为:

max reflections  = 2
ray length limit = None
...

对于这些设置,我们可以推测出,在最佳情况下,这种超简单的反射将使模型的计算成本增加一倍

但是就像我之前说的,这个示例过于简化了,您可以找到很多效果(除了我已经提到的效果之外),这些效果会通过屋顶拍摄您的渲染时间。

案例和重点:尝试使用渲染反射gloss=1(Blender中的默认设置),然后将光泽度降低到0.01,并比较两个渲染时间。您会发现光泽度为0.01的那一种会慢很多,但是模型的复杂性根本没有改变。


我的定性但更现实的原因是:

增加网格复杂度只会在一定程度上提高模型质量。经过数百万张面孔后,添加更多面孔实际上并没有很多功能。我什至可以说,如果您使用平滑处理,则对于大多数一般用途,您将只能摆脱几百张面孔。

但是,几乎总是起作用的是照明,材质效果和光线追踪。这就是为什么电影会趋向于使用大量此类电影来试图逼近现实世界的美丽复杂性的原因。


感受所有这些东西的一种好方法是查看最新的迪士尼长篇动画的结尾的演员表。他们可能拥有多少照明和纹理,您可能会感到惊讶。


2
我的天,这就是我要寻找的重点。尽管这不是我的问题(我有点困惑我应该要求什么),但我认为就是这样!
cowboysaif 2014年

1
@cowboysaif很高兴提供帮助!:)
弗拉基米尔

1
实际上,事情并没有我想象的那么好。但是我认为这可以帮助您获得一个大概的想法。我通常只是依靠反复试验。就像如果我要渲染更长的较长场景(100多个帧)一样,我首先渲染一两个帧,这样我就可以看到它进行得有多快以及有哪些效果会使其变慢。
弗拉基米尔

2
过去在486上使用POVRay的一个老技巧-如果您想知道场景中最昂贵的部分,请在所有演员和道具都放置到位的情况下渲染整个舞台的多个视图,并观察缓慢的部分raytracer进行爬网。放大那些部分,找出最坏情况下的性能,并考虑将大部分渲染预算花费在包含这些元素的帧上。如果您的渲染时间表很紧,请考虑重新构图。
汤姆B

1
@TomB好的建议!我补充说,如果您希望某个特定的场景变慢,则可以将其通过网络进行播种并在本地渲染其他所有内容。
弗拉基米尔2014年

4

值得补充的是,电影动画通常会进行大量的视觉欺骗,以使感知到的运动更加流畅。

例如,动画师可能会使用传统的手动动画技术,这些技术通常不会在实时渲染中使用,例如涂片,倍增或扭曲以产生更流畅的动作,尽管电影的帧率较低(无论如何,直到最近)显示在。网格的使用使涂片尤其是倍数的使用变得复杂-您需要为这种网格变形产生网格变形,而且我不相信我在任何3D视频游戏中都能看到这种效果。

具有快速移动物体的帧可以以不同的帧速率进行渲染,然后再次组合以在整个场景中产生运动模糊。如今,运动模糊是实时3d图形中相当普遍的技术。通常,效果不佳的是拥有数十个处理器的动画屋(请参见上面的“时间”答案)可以获得高质量的动画,这在很大程度上是因为虚假运动模糊确实非常好,每个图层需要多个后处理步骤,和大量的中间框架真的很流畅。

进行这种视觉欺骗以有效地利用实时图形提高感知质量需要将输出帧速率限制在远低于最大可用背景渲染中间帧的速率,然后进行合成以生成最终帧。对于使用这样的技术,在视觉保真度上略有提高是否值得损失帧预算,尤其是如果要变得非常困难的话,可能有多种观点。

要解决您的问题的一个方面:

动画电影的渲染时间长短又使它们如此漂亮,而游戏中的实时渲染却不那么漂亮(从一般角度来看)呢?

主要是工匠。实时美术师没有机会微调每个帧或创建一次性off头来改善场景的整体外观或反应,这不仅是因为时间限制(在开发和渲染方面),还因为实际限制。如交互注释中所述,播放器可能每次不会做完全相同的事情,但是电影每次都将播放相同的内容。

这意味着视频游戏美术师在模型质量和最终渲染质量方面与电影美术师具有非常不同的优先级。两者都需要大量的技能,但是都需要不同的技术。我希望随着消费者级渲染硬件的不断发展以及SIGGRAPH和GDC的数学天才的不断涌现,这些技术将越来越融合。


1
哦,您刚才讨论了我想谈的事情。网格变形?它也称为网格修改器吗?我修改统一3d时使用了一个修饰符,它称为mega- fierswest-racing.com/mf/?page_id=2)。尽管unity 3d仅支持基于骨骼的动画,但您认为游戏技术最终可以解决这一问题吗?我对其他游戏引擎一无所知!
cowboysaif 2014年

1
这种效果应该与任何种类的动画技术兼容,只要您使用带有顶点着色器的数学整体模型变形即可(可能是“超级像素”正在做的事情)。其他一些方法是:*具有“目标”网格,该网格是完全变形的第二个网格,并使用顶点着色器将网格中的顶点移向第二个网格中与之匹配的顶点;*将变形烘焙到模型本身中并使用关键帧动画;*使用骨骼动画专门根据需要放置额外的骨骼来进行变形...
Tom B

1
我敢肯定这种动画已经存在了一段时间,并且在某种程度上已经被使用,尽管大多数情况下我只能回忆起带有过分生物和灵活模型(例如Gish,Tower of Goo,Octodad)的实例。 。困难的部分来自弄清楚何时使用效果,尤其是在使用倍数或拖影时。相机移动的方向会影响最终的倍数或拖影的外观。我怀疑手动动画制作者使用的指导原则将是一个很好的起点,但请考虑一下在实验中将获得的所有乐趣!
汤姆B

3

一部动画电影可能要花费很多年才能在机器的单个野兽上进行渲染。由于它是预渲染的,所以我们添加到场景中的光反弹,阴影等代价高昂的效果都没关系。这些电影通常由渲染场渲染,这些场将成千上万台PC连接在一起,以完成同一任务。

我们不能实时获得相同质量的原因仅仅是因为机器需要在大约16ms内渲染当前帧才能达到60的FPS。动画电影的单个帧可能需要花费数小时才能在单个PC上渲染。

在游戏中,除了图形外,还有大量其他内容。每帧都有大量的计算。简而言之,动画电影不需要计算玩家从火箭发射器受到的伤害,您只需为外框动画,即可渲染多边形。

幸运的是,有一些天才的人在这个星球上走来走去。除了可以渲染更多多边形和更大纹理的更好的PC之外,还有一些独创的发明,例如法线贴图,可以非常便宜地对平面多边形上的灯光/阴影进行动画处理,使无聊的3D对象看起来非常精细。

这些使电影更昂贵的效果会产生额外的眩光。

  • 轻弹。在现实生活中,光会反射直到被其反射的表面完全吸收为止。对于每个光源都必须进行计算。尝试将彩色物体放在一张白纸旁边,您会看到颜色在纸上渗出。
  • 游戏对使用的多边形数量有严格的限制,预渲染电影没有这些限制,渲染时间更长。回到光反射,如果我们有更多的多边形,那么就会有更多的光计算来获得更好的视觉效果,但会以成倍增长的成本为代价。
  • 纹理大小,图形卡只能容纳一定数量的数据,并且切换这些数据非常昂贵。包含所有着色器贴图的常见1024x1024纹理可以轻松占用您1GB GFX卡的百分之几。当卡需要交换数据时,这需要付出一定的代价。显然,在渲染电影时我们对此并不在意。另外,在电影中,我们只需要相机靠近的高分辨率纹理,对于游戏,我们希望玩家可以接近的每个对象都具有高分辨率的纹理。
  • 寻路对CPU的要求很高。例如,寻路算法可以使敌人找到通往您的路线,或者使您的玩家在单击某处时沿路径行走。当有10000个航点(在100m x 100m的地图上仅是每平方米)时,这些寻路的成本可能很高,然后可能需要在单个帧上遍历所有这些航点多次。有很多方法可以根据需要降低成本,但事实是,对于预渲染的场景,我们不需要这样做。

Simpy说,我们需要想出“便宜”的技巧来使游戏看起来不错。但是人的眼睛很难愚弄。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.