好吧，我和 dave 和 xray 在一起
嘿伙计们
嘿，只要繁荣，让我们
先介绍一下你们自己吧
我的名字是 david santiago，我
目前是 insomniac games 的首席技术美工
呃，最初我是一名电气
工程师 在美国国家
航空航天局的喷气推进实验室工作，但是
几年后我进入了视觉
效果行业
呃参与了很多故事片
广告音乐视频
动画电影然后我
在大约八年前在失眠游戏中找到了我的电子游戏家
自从我开始日落过载以来就一直在这里
超速工作在呃你知道
蜘蛛侠
游戏现在最近棘轮和
叮当声
裂开非常酷你
X射线
你好我的名字是X射线halperin我是一个
insomniac games 的高级技术美工
我专注于程序系统，主要
使用 houdini 作为框架
我开始从事视觉效果，
当 houdini 只是棱镜时，
我能够与 david 合作
在从事电影视觉效果工作的同时参与了几个数字领域的项目，
大约五年前我加入了 insomniac，
这是一次很棒的旅程，今天我真的很
喜欢它，我将谈论
uh
漫威蜘蛛侠英里士气的程序系统，我 将
讨论
我们用于制作棘轮
和叮当声
裂痕的一些程序系统，期待它让我们
一起
问候我的名字是大卫圣地亚哥，
我是失眠游戏的主要技术
艺术家今天我将
谈论一个 关于
我们用来制作
ps5 独家游戏
棘轮和叮当声裂痕的一些程序系统的一点点这
只是一个简短的开场演讲，然后
X 射线更深入地介绍了
蜘蛛侠
英里使用的一些程序系统 士气 当然，其中一些
系统用于棘轮和叮当声
，我演讲的重点是简单的
程序工具可以
对许多 ar 的项目产生重大影响 易于
生产
那么这些简单的工具是什么 你
需要查看人们每天所做的所有小任务
将创作和
重新创作哪些内容 哪些是耗时
、重复或迭代的
任务 有什么 需要
可以系统地定义的优化或验证
技术或并非所有这些任务都
准备好让程序系统完成
通常与它们相关的繁忙工作
棘轮和叮当游戏在生产中具有非常
有机和实验性的开发
过程
我们使用了多个
程序系统我们 已经在我们的
工具库中
并开发了一些新的 这不是
所使用的程序系统的完整列表
只是一些对我们产生重大影响的程序系统 我们的
研磨轨道生成得到了
样条线建模工具
的帮助 交通创作系统是专为创建的
棘轮和叮当声的需要
我们的常规冒名顶替者系统已升级
为适用于多个开放世界
并生成冒名顶替者 f 或
从未流入的资产
，我们创建了一种在全球范围内创作内容的方法
，然后将资产分发
到适当的开放世界
流媒体区域，
所以让我们从样条线建模工具开始，
这件事的计划是什么？
最初只是一个
沿曲线扫掠几何图形的简单工具，
以帮助艺术家和设计师创建
研磨轨道，这是他们
一遍又一遍地
重复执行的工作，这是一个非常迭代的开发
过程，如果您必须手动建模，
甚至跳入另一个包以
更新轨道
这会占用大量时间 该系统
让他们
在 insomniac 关卡编辑器中创作
和重新创作游戏玩法研磨曲线，然后通过
选择一条或多条
曲线并
从菜单中运行生成命令来生成新模型
简单的 hda 将几何图形扫描到 曲线
导出模型并将其添加到
级别
这个相对非常简单的工具
只需五分钟的工作即可完成一整天的任务
这里是标准的
Insomniac 关卡编辑器界面的 t
这些属性在提交生成时与曲线相关联，这些
属性成为
houdini 中的属性，定义要
在后台 Python 进程中生成的内容，您可以
看到这些属性如何
成为 hda 上的参数
以及大多数 它们是，但是一旦我意识到
没有人会
从 houdini 会话中创作这些内容，
就没有理由向 hda 添加参数，
基于 python 的导入器
会为
编辑器中添加的属性动态创建属性，这意味着如果我
添加了第二个 uv 集 到这个属性
面板，
它会
在生成
模型时自动添加为同一面板上的一个属性，您可以
看到可以添加第二个 uv
集，
并且还有一些
用于碰撞 lods 和
actor 属性的附加控件。 添加的动态
数组
以多种方式添加多个实例对象，
您可以实际放置集合或
天秤座 可以随机或顺序选择放置的许多可能的资产，
例如，如果您想放置树木，
您可以根据放置参数沿着曲线放置整个树木库，
这是我用来演示的第一个示例之一
样条到模型
工具
我沿该绿色曲线生成一个 3d 路径模型，并沿
曲线即时生成几种
资产类型，例如
向左偏移的框
沿路径随机的角色以及
本示例使用的蜘蛛侠游戏中的一些无人机
该工具原始版本的许多功能我从这个有利位置创建了
一条穿过中央公园的路径
我们看到我
添加了一系列不同的树木
例如
沿着曲线如果我们看树林里面
我们看到有一条铺好的路径
我们有
这些无头的 npc 角色，因为
头是在红色时间选择的，
除了树木之外，路径两侧还有额外的植被
从上方看
这条穿过中央公园的特别树木繁茂的小路
，我花了一分钟时间来
设置和生成，
正如我之前提到的，一旦这个
工具出现，艺术家和设计师
想出了各种不同的使用方式，
一位艺术家创作了这些
-
仅通过
在通向桥梁的曲线上使用高速公路模型横截面来提高蜘蛛侠英里士气
该工具用于大量设计
实验，以制作简单的模型或
实例游戏和设计原语，
例如这些设计胶囊圆柱体
和 球体
一位艺术家决定使用它
在棘轮和叮当声中沿区域边缘程序性地放置植被
，这是另一个将
岩石和植被沿溪流放置的例子
棘轮和叮当声 裂隙有一些
大城市，因此一些初始布局
使用该工具进行实例化
这里的建筑物
是在游戏开始时模拟游行路线的迭代
，然后在路线周围填充一个城市
， 那么这是第二个
版本
，这些迭代中的每一个都需要
几秒钟才能从布局
曲线中生成
，正如最初的意图，这里是
棘轮和叮当声裂隙中的许多研磨轨道之一的示例，
该工具还创建了特殊的
碰撞几何体 这些小故障
挑战这些小战斗竞技场
需要特殊的表面和边界
碰撞
，这些碰撞在任何可见环境中都不存在
几何
样条模型在
许多挑战迭代中被大量使用
，我最近才发现它
的使用比我想象的要多
这个框架来自蜘蛛侠
迈尔斯·莫拉莱斯 艺术家
oscar gonzalez 用它来创建所有
不同的电缆，
从
天花板上的纯环境电缆到与游戏相关的
电缆再次连接到歌剧院舞台上的发电机，
因为许多电缆都是
随着任务设计的发展，与标记相关的游戏玩法
需要多次迭代
我
为 splenda 模型工具提供的最后一个示例
虽然它被用于许多其他
事情，但
现在
棘轮和叮当声的各个城市都有相当多的车辆交通，
因此我们需要一种简单的方法来创作和
重新创作它
再次曲线 编辑器被赋予
特定的交通属性，从中
为运行系统生成交通节点和标记
该系统比
为蜘蛛侠创建的交通系统或
为蜘蛛侠英里
士气升级的交通系统要简单得多，但由于密度
速度 空中交通的规模和规模
需要一些不同的属性，
系统只需要实例化和
优化沿这些曲线的交通节点的密度，
并将正确的属性
应用于游戏代码的每个节点，以
处理迭代次数和
在生产过程中进行的调整
是不可能的任何其他方式
现在这是正在运行的交通系统
我要谈论的最后一个工具 about
实际上是一个主要的制作开发，
用于从全球创作的内容创作流媒体区域
我们让艺术家和设计师
在大区域创作他们的内容，
就像他们在以前的
棘轮和叮当游戏中所做的那样，
但由于这些更大的世界
，我们提供了开放世界的体验 想要
在裂隙之间来回走动，
我们不仅在单个
开放世界的区域之间流动，而且在多个开放世界之间流动
这里是棘轮和叮当声区域之一的开放世界地图示例，
每个图块代表一个流动区域
，其中每个区域 包含艺术
游戏
灯光音效等区域 开放
世界系统加载
高分辨率几何
照明音频和游戏玩法
玩家周围的瓷砖
所有其他瓷砖保持
低分辨率表示，例如
具有
系统自动设置的远距离照明数据的冒名顶替者
每个星球的开放世界区域
基于其
流光的内容 游戏艺术和
效果
区 艺术实例被移动到
流媒体艺术区
大模型被切割成带有 lod 的更小模型
并放置到这些流媒体艺术
区 有时需要许多
小得多的模型来
支持游戏物理
游戏元素被移动到
流媒体 游戏区域
检查站 板条箱 盖等
背景环境件被
移动到背景流区域，
所以只有冒名顶替者才会在
游戏中使用
艺术和游戏的多区域元素
被移动到
开放世界 全局区域，
当加载该级别时，这些区域总是加载
这里是一个 例如
，从一个开放世界到另一个开放世界的裂缝中，
这个程序系统是
在棘轮和叮当声裂缝中使用的最复杂的
，
但对游戏制作的最大影响
来自我们的一组较小的
程序工具
，这就是我所拥有的一切，
非常感谢 如果有任何
问题，请随时与我们联系
insomniac games
我的名字是 x -ray halpern 和
蜘蛛侠英里士气
我创建了几个程序系统来
增强游戏
蜘蛛侠英里士气的开放世界环境
分为 735 个图块区域每个
图块区域
由几个区域文件定义，这些区域文件
是包含引用的 json 对于
许多工作流程中给定游戏中的资产，
每个图块都可以表示为
houdini 程序依赖图中的一个工作项，
我们不会将图块名称转换为
世界空间，没有语义，
因为没有编码
，只是供人类
阅读 大多数 insomniac
游戏的程序工作流的第一步
是从区域数据构建点云
python 脚本从区域文件解析 json
并通过
将游戏数据作为
具有属性的点云加载到
houdini 中递归所有引用并将
转换到世界空间
我可以开始推理游戏
内容
像这样的点云数据也
可用于生成 审计
它非常适合查找诸如没有 lod 的
小型花园植物模型之类的东西
当我需要模型资产时使用了 24 300 次 我可以
将几何体实例打包到点
云
上 当资产是从重复的模型实例构建时，它的内存效率很高
这是一个
漫威蜘蛛侠英里士气的程序系统的不完整列表
它包括诸如
在城市周围放置雪
为建筑物添加节日装饰
调整几何顶点颜色以驱动
材料混合
向开放世界添加导航线索
生成冒名顶替网格
并计算其属性中的资产
出于审计目的，
蜘蛛侠设定在秋天，而
蜘蛛侠英里
士气设定在冬天，我使用了几个
程序系统来使漫
威的曼哈顿过冬
。这个 houdini
网络中的大多数对象代表
了用于为蜘蛛侠生成程序内容的各种工作流程
使用程序系统将milesmorales雪添加到开放世界中
我测量了路缘，并
在合理的指标上放置了雪堆，
同时避开车道和拐角
顶点颜色被添加到地面
以驱动着色器组件，如线性
或全向混合
和人行道结冰 类似的系统
将
雪堆放在路边的车道
线上 雪是由
多个模型实例制成的预制件，
并按照 2 米、4
米、
8 米和 16 米的度量标准构建 最终
资产收集在
此处显示的集合中，在此可视化中的 insomniac 资产
库
中 我们将查看格林威治的
单个图块
称为 m35
m35 是一个典型的流图块，
由一些街道级地形
、各种街道和人行道
以及一些中层建筑组成
，这是出现在
轨道级别编辑器中的数据，
首先我隔离了地形，
然后隔离了边缘 路缘石，在
街道车道和车道线的情况下，
我将孤立的曲线
从拐角处向后修剪一点，
以防止东西堆积你 在
无障碍坡道
上，我在测量结果曲线后修剪车道或地铁入口附近的区域
我
从集合中程序性地选择适当的元素
并沿着曲线实例化它们
我使用类似的系统
在建筑物的底部周围添加雪裙
红色球体表示
每个线段的质心，
例如，集合中的不同雪
资产适合
将线长度的度量
与每个线段的质心
匹配，并将它们纵向对齐
再次查看关卡编辑器，注意
添加到流中的雪资产
地区
节日装饰
以类似的方式添加到漫威的曼哈顿，
例如一系列
用于各种窗户模型的节日灯
被手工建模并添加到一个
集合中，该集合
将模型实例名称与
集合中的一组灯相匹配，
并选择一个变体允许
将资产按程序放置
到 t 中的每个候选建筑物上 他的
图像 窗户灯并没有
与单个瓷砖隔离，所以许多看起来
漂浮在空间中，
但是这些属于
相邻瓷砖中的建筑物
几何体上的顶点颜色用于
驱动
材料和
混合顶点颜色的材料在此
几何体的gl渲染中可见 颜色
属性
人行道上的红色表示
人行道周围结冰
的地方 黄色和绿色是类似的混合
用于冰冷的沥青
十字路口的 alpha 混合
控制从道路到十字路口的冰条纹的方向
该视频显示了一个紧密的
houdini 和 insomniac 水平编辑器之间的集成
houdini 左侧和右侧的轨道水平
编辑器
注意右侧的十字路口
注意十字路口的图案
是全方位
的 通往它的街道有一些
交通造成的方向性
方向
作为带有绘制顶点颜色的地面几何体
被保存 输出到磁盘 二进制测试版是动态
构建的
并直接摄取到关卡
编辑器
中 视频已经加快了一点，
以避免看到油漆干了的感觉
蜘蛛侠 英里士气 介绍了一个新的
敌人
，这些技术驱动的敌人从地下
跳下来 屋顶到屋顶
用 3d 路径寻找追逐蜘蛛侠
由在 houdini 中程序生成的导航线索标记辅助
我选择边缘
标记
和屋顶几何形状的组合来转换可能的
导航线索
，以便使用
一些基线启发式方法（
例如垂直）从屋顶到屋顶的有效跳跃 和使用点积的水平最小
和最大距离
和最大角度
这里是出现在
轨道水平编辑器中的数据
首先我提取壁架标记
我提取屋顶和建筑物
覆盖区
我传播潜在的候选路径
最后我调用候选路径使用
附加 如果附近的屋顶是dir，则启发式方法例如距离
沿路径碰撞的射线测试
直接在着陆点上方，
如果有并且有单独的
规则来
处理同一建筑物中从屋顶到屋顶的路径
与穿过街道或小巷的路径
附加规则控制地面到屋顶的
导航线索
这里是最终的导航线索
在紫色的关卡编辑器中，
虽然连接起点和终点的线条
看起来像是一些导航
线索正在穿透墙壁，
但有一个中点辅助体积，
允许地下敌人
以弧形方式跳跃，
我用泡沫冲洗和 对开放世界
中的所有流图块区域重复使用 pdg
建筑物被模板化，
洋红色和青色
线段代表所有
导航
线索 ig imposter 系统使用完整的 3d
网格
而不是 2d 灯泡广告牌来
代表
每个建筑物的远距离几何 在这张图片中是一个 ig
冒名顶替
者 冒名顶替者代表游戏中的最低 lod
他们从不流出全局共振
记忆冒名顶替 当高分辨率资产从内存中流出时，rs 提供了一个回退
我们对几个游戏系统使用了冒名顶替者，
例如级联阴影贴图
光线跟踪和环境探测
漫威蜘蛛侠英里士气中曼哈顿几何资产的内存占用量
最低约为 100 兆字节 冒名顶替者纹理的 mip
占用大约 400 兆字节
让我们看看蜘蛛侠开放世界中的另一座建筑
这是来自 h21 瓷砖 建筑的
名称是
h21 花式砖 0x900 cb 798 be9d
c82d 下划线 mod
这个分解图显示了构成的所有模型
实例
建筑物由
包含预定义资产（
例如窗墙和门）的模型套件建造，
因为预制建筑资产
在建筑物内反复使用，
在这种情况下，只有少数独特的模型用于建筑，只有 76 个独特的
模型
这里的实例是建筑物的全分辨率 lod，
大约有 150 000 个多边形
和 160 个 0 模型实例
这里是建筑物的全分辨率最低 lod
它有大约九万个多边形
以生成 ig 冒名顶替者我
识别
共享原始法线
的连接几何组我迭代每组连接的
几何共享公共
原始法线
我从多边形中删除共享边，
留下
形状的轮廓我
迭代每组图元，其中头发
法线和连接边连接
边
然后我将它们组装回
整个建筑物的单个网格
我删除被遮挡的多边形，
从而得到最终的结果
大约有五千个三角形
的冒名顶替者网格从超过九万个
多边形开始
我捕捉了冒名顶替者几何并
在失眠引擎中生成正交纹理图集图像
这是RGB反照率
图集规格光泽和发射图集
以及所有的组合纹理图集
流媒体
区域中的冒名顶替者是一些冒名顶替者的例子
由多个流媒体区域组成的
区域
非常感谢您的时间