0

我想制作一个具有漂亮图形的相当简单的游戏。

我已经阅读了几个创建 opengl 示例的教程。我了解核心对象是点和三角形。我也了解映射纹理和应用照明。我一定错过了一些概念性的东西。

让我们举个例子——一辆简单的汽车。我需要在 3D 中从各个角度查看汽车。这意味着我必须在数学上用 3D 构建汽车?我真的必须创建和存储数千个代表整个表面的三角形吗?然后,我将为这些三角形添加颜色/纹理?

如果我想通过公园动画导航 - 树木、路径、其他人......即使我只是为每种独特类型的对象建模一次,那可能需要数年时间?!

商业游戏开发商使用什么方法?

4

2 回答 2

2

有几种方法可以解决这个问题。第一种方法是自己设计所有对象。这是专业的游戏设计公司所做的,并且有整个部门都致力于此。您可以使用Blender(免费!)、Maya3DS MaxModo或任意数量的 3D 建模程序来执行此操作。

第二种方法是对所有这些对象进行程序生成(老实说这更有趣)。程序生成是指您的程序动态生成所需的每个对象。这使您的磁盘空间使用量最小化,并完全消除了加载时间。通常,程序生成算法将在单独的线程中运行,以免损害帧速率。

实际上,您可能希望两者都做一点:程序生成植物和环境,但对角色和汽车进行建模。

是程序生成算法的一个很好的资源。

干杯,内德

于 2012-09-29T07:53:18.197 回答
1

这意味着我必须在数学上用 3D 构建汽车?我真的必须创建和存储数千个代表整个表面的三角形吗?然后,我将为这些三角形添加颜色/纹理?

确实如此。然而,没有人通过在文件中输入数字来对模型进行硬编码。人们使用 3D 建模器,如 3DS、SoftImage、Blender、Milkshape、Maya 等。这些建模器通常都根据三角形网格化原理进行操作,即它们将模型表示为三角形的网格。

如果我想通过公园动画导航 - 树木,路径,其他人......即使我只是为每种独特类型的对象建模一次,

动画通常仅作为单个网格的动态修改发生,或者在复合对象(如汽车)的情况下,对编排中的各个网格进行动态修改。

这可能需要数年?!

对于一个人:是的,确实如此。这就是为什么游戏工作室雇佣了大量的艺术家,他们在一起工作的同时,仍然需要几个月到几年的时间来完成大规模的制作游戏。

在你的普通游戏工作室中,很可能找到比程序员多 10 到 20 倍的艺术家。虽然程序员的工作很复杂,但它在整个游戏中无处不在。任何新功能或错误修复通常都会使整个游戏受益。然而,游戏中的大多数艺术作品都是在本地使用的,即仅在少数或单个地图中使用。一些艺术作品,如非玩家角色动画(步行周期、动作、攻击/防御动画等)可以重复使用,但即使是那些也倾向于为每个角色个性化以保持多样性。也可以重复使用常见的道具。但总而言之,为游戏做所有的美术是一项非常冗长乏味的任务。

于 2012-09-29T14:38:04.220 回答