为3D标题中的关卡内容设置内容预算(例如多边形数)的可实现方法是什么?


13

在回答有关swquinn的问题时,答案提出了一个更相关的问题,我想听听这个问题的答案。我将发布我们自己的策略(保证我不会接受它作为答案),但我想听听其他人的意见。

具体来说:您如何为内容团队设置合理的预算。通常,开发中首先要问的一个问题是:我们的多边形预算是多少?当然,如今,很少有顶点/多边形数量是限制因素,而是着色器复杂性,填充率,照明复杂性都发挥了作用。

内容团队想要的是工作的一些硬性数字/限制,以便他们有合理的期望,即一旦内容真正进入引擎,它们的内容就不会太繁琐。鉴于“取决于”不是一个特别有用的答案,我想听听一种策略,该策略使我能够为他们提供可行的限制,而不会导致a)误导或b)错误。


1
这比“生产”更“生产前”。
Patrick Hughes 2012年

Answers:


5

根据我的理解,降低模型的复杂性要比添加已蒙皮和装配的模型的细节要容易得多。我知道有些公司会通过合并非常详细的资产并根据情况缩小规模来利用此优势。

Valve用他们的NPC来做到这一点。NPC无需任何映射就可以极其详细地建模,然后将细节缩小到当前技术和技巧(例如基于详细模型(甚至自动创建)应用的各种映射技术)可以接受的水平。

这也有助于将来进行校对,因为您将不需要重新创建资产,只需对每个新项目进行周转。这还有一个优点,即在资产开始开发之前,无需等待团队执行特定于上下文的基准测试。从第一天开始,艺术家就可以充分参与其中。


2
不过,这实际上并没有提供预算:“根据需要将其复杂化,然后我们将按比例缩小”是一种生产策略。:-/
MrCranky

16

好的,所以我们的策略是:

  • 组成一些占位符几何图形,大致适合最终内容的比例。那可以是建筑物或人物。它不必看起来像最终的内容,它可以是盒子/球体等,但应进行细分以使其具有相当数量的多边形。如果您正在做角色,请使他们的骨骼具有代表性。
  • 或者,使用其他人的几何图形。如果您要尝试匹配的标题的质量级别,请找到某种方法来获取其模型(也许使用DirectX场景获取器)。
  • 确保您的几何图形上有代表性的着色器。如果您希望混合多种纹理,即使这些纹理都是单色的,也可以这样做。确保纹理是非平凡的分辨率,即使它们都是一种颜色也是如此。
  • 放入合理数量的灯。
  • 将相机放置在现实的地方,指向最大可能的几何形状(例如,站在山顶上,俯瞰水平面)
  • 将场景加载到最慢和最快的目标硬件上,然后测量FPS。
  • 上下变化几何/灯光/着色器/纹理分辨率的数量,以了解折衷方案(例如,您可以有十几个额外的灯光,但是必须将多边形数减少一半)。

最后:保守数字。渲染并不是您的游戏唯一要做的事情,因此请确定要在渲染中花费多少比例并确定目标。例如,如果您想以30fps的速度花费三分之二的帧,然后在测试中以1s / 22ms(45 fps)为目标。

除此之外,您应该能够给出示例场景。例如,这是一个场景,其中每个模型包含200K多边形,5个静态光源和不超过3个动态光源,具有15个字符的50K多边形和30根骨骼,其运行速度为60fps,占用内存30MB。


2
tl; dr:自己进行基准测试;)
Nicol Bolas 2012年

+1这实际上是构建和衡量的唯一方法。
Patrick Hughes

真?我希望有一个我们从未想到过的更智能/更便宜的解决方案。
MrCranky 2012年

不幸的是,@ MrCranky。如果您使用的是现有引擎,则可以通过测量现有样本数据并将其用作基准来定制游戏编号(特别是每个游戏的编号)来快速启动该过程。
Patrick Hughes

4

顶点数

我研究“多边形计数”已有15年以上。没有严格的方法可以告诉您限制数量,特别是在使用更现代的软件和硬件时。在仅支持整个级别4,000个三角形的引擎中,限制更为有用。现在,您会发现游戏环境中的大多数对象将超过单个对象。

最终重要的是引擎在处理多边形带。

引擎渲染每个模型时,它将获取UV映射的坐标,三角形上表示的纹理/材质,并创建三角带。在大多数情况下,三角形风扇会分解成每个三角形分开的三角形条。这会增加三角带的数量,从而降低性能。

固定它的主要示例是圆柱体的平顶。3D程序包通常设置一个三角形风扇,其中心位于顶点。我删除边缘和中心顶点,然后在面上创建四边形。然后,应在不更改多边形数量的情况下,将其划分为单个三角形带,而不是多个单面带。

以多边形数为指导,并注意如何建模,以及“ UV映射”网格。当“ UV贴图”(UV Mapping)通常更有利时,网格中的裂痕较少。

接下来,考虑使用法线贴图可以伪造的东西。通常会有很多细节情况的平面被法线贴图。曲线只需要是圆形即可在其中看到轮廓。从正面看曲面时,您应该不会注意到高分辨率资产和游戏分辨率资产之间的区别。当涉及法线贴图时,轮廓是使模型与众不同的原因。现在可以使用DirectX 11使用细分和位移映射来修改轮廓。

游戏设计

设计游戏时,请考虑以下因素:

  1. 定义游戏类型(例如动作/冒险/竞赛/卷轴)
  2. 定义视图类型(例如,第一人称/第三人称/正交)
  3. 为您的市场定义计算能力。(例如,发烧友/休闲玩家)
  4. 创建您想要实现的视觉风格。您是否希望它看起来像《孤岛危机2》,《无主之地》,《血炉》或《战争机器》?
  5. 为玩家定义重要对象。您的道具会成为焦点还是仅仅是背景?
  6. 视觉网格物体还是碰撞网格物体吗?

使用游戏和视图类型,确定视图的深度。您要看远处的物体吗?您是否正在制作视野有限的东西,例如走廊射手?(例如《战争机器》)您是否要在开放的景观中进行自由漫游?(例如,天际)

知道外观后,您可以研究相似的游戏。

动画将限制您增加多边形数量的能力。静态网格物体,任何保持不变的位置在GPU和CPU上都是最便宜的。特别是如果它们不是物理对象。对于物理对象,通常可以创建简单的碰撞船体和复杂的可视网格。大多数游戏中没有足够的互动来注意到差异。动画通过3维移动模型,每个顶点具有多个骨骼,每个骨骼之间的权重混合在一起。这在CPU时间上可能是昂贵的,这可能会与AI和基于软件的物理发生冲突。整个模型中受骨骼数量影响的顶点更多,将降低CPU性能。这是游戏角色被视为“艺术品”的另一个原因。定义多边形限制非常困难。

我的例子

我使用的是UDK,它是节奏慢的第三人称射击游戏,玩家和NPC的屏幕数量有限。为此,我的目标是每个玩家大约10,000个三角形,对于典型的通用敌人来说,目标是5,000个三角形,如果我要制作“老板”风格的角色,则大约为15,000个三角形。此外,第三人称的大约4,000个三角形的武器将非常详细。车辆约10,000个三角形。一切都需要细节级别,因为我需要很长的视野。

如果要成为第一人称,我会将武器基于大约2,000个三角形,将武器围绕5,000个三角形,并为每个三角形绘制法线贴图。

结论

这就是“取决于”的含义,但是我认为这可以澄清人们经常想知道的一些事情。

  1. 使用多边形计数作为指导。
  2. 查看可以被法线映射而不是建模的区域。
  3. 放置三角风扇时请小心,如果可能,请创建一条条。
  4. 进行UV贴图时,请在网格上使用较少的分割,并牢记条纹。

2

我能想到的一种方法是使用自动构造的场景来生成统计数据,从中可以解密正在寻找的信息。

  1. 获取大量资产(可能会自动生成)。

  2. 创建一个工具来生成可以由您的引擎使用资产池加载的场景。

  3. 运行一个机器人,该机器人将在场景中移动相机。您可能还需要运行其他一些机器人来使场景更加动态,包括灯光。

  4. 收集尽可能多的信息并将其放入数据库中;fps,多边形计数,着色器更改,灯光数量,绘制调用等。

  5. 制作/获取一些工具,以尽可能多的方式显示数据库中的数据。

该链接可能会提供更多想法:死亡上升工具


我很喜欢这个答案,因为它解决了我们自己策略中最昂贵的部分:有人必须努力构建具有代表性的场景。快速生成大量明智资产的算法生成或脚本将大大加快可测试场景的创建。我将接受更流行的答案,但我认为这是值得的。
MrCranky
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.