Origin
zhuanlan.zhihu.com
Tags
开放世界
程序化
经验分享
技术详解
项目
幽灵行动:荒野
收藏夹
创建时间
收藏类型
Cubox 深度链接
更新时间
原链接
描述
最近工作有些忙,不太容易挤出原创的东西给大家,为了维持个人的知乎活跃度,决定为大家翻译并解读一些写的不错的文章,这一次给大家带来《幽灵行动 · 荒野》项目的大世界制作技术,总共分为四个章节。
本篇为第一个章节:程序化技术篇,分享者 Benoit Martinez 和 Vincent Delassus 分享了关于程序化流程中的一些心得,其中包括之前不少读者私信我关于 Houdini 与手动流程的结合以及成本、迭代等问题,希望能给大家带来一些启发。
以下是原文链接
最大的挑战
巨大的开放世界最大的挑战绝不仅是地形本身,还包括如此多样的生物群落(11 种)。每一种生物群落都要有与之匹配的且特定的景观,植被,岩石,建筑物等。
基本上来讲,我们必须从头开始制定管线流程和制作工具,因为这是一个开放的世界,因为它与自然景观息息相关,并且地形非常重要。
最初,我们使用静态网格模型来制作地形,1 平方千米一块地形 Mesh(带 LOD)。
基于 World Machine 制作的高度图,我们有一个 Houdini 流程来自动对地形进行分块并生成对应的 LOD,但是从 Houdini 到编辑器来回过程需要进行大量的维护工作,这点非常棘手,而且一点都不灵活。除了 Benoit 之外,当时没有人在使用 Houdini,因此他是唯一可以迭代的人。
显然,在量产阶段这种做法是行不通的,因此我们决定将重点放在开发定制化的地形编辑器上。功能需求方面,我们希望能够直接在编辑器中以任何比例进行雕刻,能够雕刻山脉的整体结构(宏观)也能调整很小的地形细节(微观)。最初,地形高度图的分辨率为 1 像素 25 厘米,但有时觉得精度太高了,这是一个非常繁重的数据量,因为碰撞体和导航 mesh 也需要同样的精度。我们最终确定了 1 像素 50 厘米的高度图分辨率(也就是一米需要高度图的两个像素),同时由于我们还具有硬件曲面细分功能,这已经足够了。
地形只是第一步,随后需要在这上面填充美术资源,这个过程可能需要很多牛逼的美工来完成。由于许多原因,我们不想增加团队规模(成本原因)。大型团队通常意味着需要有非常细化的分工组织。我们是一个很小的团队,我们知道如何合作,我们的流程非常敏捷,我们希望继续保持这个优点。这就是为什么我们决定在 Houdini 上投入更多资金来开发程序化 / 自动化的工具。
在美术资源制作方面,关键在于如何平衡 3 个要素:团队–时间–工具。通常,您不能控制项目的开发时长,因为这是定死的。在我们的案例中,我们决定使用工具来提升生产力,而不是增加团队规模(美工人数)。在巴黎,我们从未有超过 15 位水平的艺术家来创造所有资产和世界建筑。
使用程序工具
自《幽灵行动:未来战士》以来,我们一直在这里试验程序化方法。我制作的第一个工具只是帮助艺术家放置电线。艺术家正在导出一条曲线,然后再调整一下参数,就能在几秒钟内生成线杆和电线。
然后,我们进一步推进这种程序化逻辑到地形编辑环节,我们自动生成道路,并且添加细节和生成 UV,同时凹陷地形做相应的匹配。
我们很快意识到,不仅程序方法有助于摆脱繁琐的任务,而且还节省了时间。艺术家能够专注于质量,有更多的时间来提高自己的水平。
使用 Houdini,我们已经能够重新定义工具创建过程。Houdini 的学习曲线陡峭,但没有您想的那么难。houdini 官方是在线上提供的大量资料,如果您对此很认真,则只需几个月的时间就可以开始创建自己的工具。自从我开始学习 Houdini 的那一天起,我过去更多地是在艺术家方面,而不是技术方面。它完全重新定义了我处理美术资源的方式。
地图规模
首先,我们去了玻利维亚几个星期,全国各地有 4 个团队。对我们来说,研究建筑,景观和植被非常重要。我们拍摄了大约 15000 张照片和 15 小时的视频。在整个制作过程中,我们都依靠该数据库来创建我们的工具并设计世界,以确保所有内容都是一致且真实的。
到目前为止,我们还没有与外界讨论任何关于世界规模的问题,因为我们希望玩家在没有比较或期望的情况下进行探索。我们认为这与尺寸规模无关。它更多地是关于多样性和您可以达到的细节丰富程度。但它仍然是育碧有史以来最大的动作冒险世界,大概需要花费几个小时才能走遍整个地图。
我们开始使用现实世界的位置数据进行原型制作。 在最初的几个测试中,我们只是获取了真实海拔文件并在 World Machine 中对其进行了完善和细化。
就写实性而言,效果还不错,但缺乏多样性。
获取海拔数据很容易,但是我们缺少好的工具来编辑和组合它们。在 Photoshop 中编辑 16bit 和 32bit 的灰度图是非常麻烦的,当时在包括 World Machine 在内的任何其他应用中也是如此。最后,我们只是在 World Machine 中使用噪声和腐蚀从头开始。这并不容易,但是我们想尽办法来提高编辑的可控性,从而能设计出我们想要的地形。在最终生成的这张地图中,没有什么是随机的,每条河,每座山在哪儿都是有它存在的理由,整个设计和制作过程都有章可循。
我们希望得到从最高的山峰到底层丛林的雨水侵蚀效果。这是一个庞大的的模拟计算量。无法在一台计算机上以这种分辨率(64k x 64k)计算如此大的地形。
我们必须在 World Machine 上进行一些自定义开发。我们向 WorldMachine 的开发者 Stephen Schmitt 请求了一些额外的开发。他为分块渲染系统添加了一个额外的变量接口,以便与用 c#编写的专用渲染场一起使用。
我们最终试用了 World Machine,并每 3 天在 80 台计算机上进行一次计算。
由于成本的原因,这些图块之间的访问受到限制,因此另一个挑战是在不同的机器之间需要确保产生一致的侵蚀。为了解决这个问题,我们先在一台机器上以较低的分辨率渲染大面积侵蚀土地,然后使用 Tile 系统在渲染农场中分配微侵蚀和其他昂贵的细节。它修正了 90%的分块接缝问题。但是当时版本的 WorldMachine 还不能做到百分百的完美。
我们将 Houdini 用于许多不同的事物。
- 在地形自动添加其他细节,例如道路和河流
- 根据规则自动放置物体(贴花,森林,建筑物等)
- 创建特定美术资源
- 这里有个自动组合生成建筑物的工具示例。
这个工具只是用来快速组建一些通用建筑资源,细节要求不会太高,因此工具能很好地发挥作用。它有帮助你组合窗户和门的大小,窗户和地板的高度等,并匹配 UV,而且会生成一些多边形带,以帮助在墙壁 / 地面交叉点上混合一些污垢。然后手动添加所有细节(窗户,门,支撑)。
对于村落布局,我们采用了完整的程序化方法。
这个想法是要帮助艺术家,使他们有足够的控制权来实现有趣的图形分布,多样性和美观的居住环境。它为他们节省了足够的时间以便手动添加细节。
无论程序生成的质量如何,它都不是完美的,并且需要艺术家干预。您是如何解决的?
我们完全同意。我们学到的是不要过多地提及程序化,因为每个人都认为 “程序化” 就像是一个魔法按钮,按一下就能获得无聊而乏味的结果。对于程序化,我们更多地认为这是辅助艺术家解放生产力的工具,使他们在构建一个完整大世界拥有足够的控制权。对于每种特定工具,我们都会与专门的艺术家紧密合作。他是决定该工具将如何发挥作用,他需要什么以及他希望它如何工作的人。关键是能够大规模构建并节省时间。然后,利用节省下来的时间,我们可以专注于细节和提高质量,因为这是程序化无法做到的。在使用程序化和手动之间也要取得平衡。在某些情况下,我们需要完全手动控制,并且我们将完全手动指定某些位置,而无需任何工具。我们可能想在某些地方设定 Boss 在村庄内的位置,然后我们可以使用程序化工具在其周围创建村庄。
程序和手动不能很好地融合在一起。当您开始在程序化的基础上手动修改,您必须锁定它。如果不这样做,您将在下次更新时丢失所有手动调整的结果。当然,我们有一些解决方法,但这并不是一件简单的事。在大多数情况下,我的建议是在继续手动操作之前要先锁定程序化数据;或者设定一个手动区域,程序化构建的时候会绕过这块区域。
最后,究竟哪些需要程序化、哪些需要手动完成,其实无所谓,主要看项目、团队、美术的喜好等等因素共同决定。
如何管理一个大型项目
我们有 4 位 Houdini 艺术家(包括 Benoit)。在制作过程中我们学到了很多东西。我们最终使用 Houdini 超出了我的预期。
我们了解到的是,构建(大量)工具会改变您的生产节奏
常规量产过程是线性的。您有一个团队,从第一天开始,他们就制作资源并构建关卡 / 世界。
当您决定专注于工具时,您会经历一些平稳阶段。这并不容易,因为有时您只是不知道需要多长时间。但是,当该工具准备就绪时,只需几天,您就可以推送新的大量的内容。最后,这比你仅用蛮力所达到的制作速度会更快,处理的内容量会更多。
这正是地形,河流,道路,铁路,森林,定居点,矿山等等之类的制作流程所展示出来的实际收益。我们每一层的资源内容逐级叠加,整个世界就是这样一层一层内容地叠加制作完成的。
Houdini 团队中的每个人都在使用一些特定工具:
- Guillaume 在所有后端上工作,并确保 Houdini 管线的可靠性和高效。他特别从事关于渲染农场的分布式计算。
- Erwin 主要负责道路和村落分布。
- Twan 负责建筑工具,河流,田野和关于音效的工具以及 gameplay 等等。
- Benoit 设法保持这些工具流程的健康高效的运行,并推动了建筑学的运用,同时研究了植被,岩石,贴花和电源线等。
当您开始用 Houdini 进行场景制作的时候,您可能会犯的最大错误是尝试在一个工具之内完成所有工作。一个功能任务对应一个工具,这样维护会更容易。最难得部分是需要为每个工具正确定义输入和输出,以便工具之间能够相互引用数据。
例如,桥梁工具可以单独使用。但我们用铁路工具的时候,也可以使用它在需要的地方自动放置桥梁。
利用 Houdini 的优势
Houdini 是一个工具箱。无论您生产什么产品,无论规模如何,Houdini 都能为您提供帮助。您可以使用它来自动执行任务,创建内容,帮助美术师(或声音设计和游戏程序员)。它既灵活又强大。
Houdini 本身很有价值,但我不得不提到 Houdini-Engine。基本上,它是 Houdini 核心 API,您可以将其集成到主机应用程序中。在我们的案例中,我们确实在内部编辑器中集成了 Houdini-Engine。这意味着 TA 可以在 Houdini 中创建工具,任何艺术家都可以直接在编辑器中使用这些工具。这是一个示例,说明它可以以多快的速度创建现成的工具:
Houdini 帮助我们扩大了思维范围,超越了艺术水平。我们对所取得的成就感到非常满意,令人兴奋的是,我们将能够在此基础上进一步发展。
最后,欣赏一下这个由一群非常敬业且有才的艺术家共同创造的世界。 > 本文由简悦 SimpRead 转码