这里记录的是漫威蜘蛛侠的建筑生成相关的要点。
1. PCG相关
场景的规模大,项目上线时间长,PCG已经从一个可选项变成必选项,蜘蛛侠在下述资产的制作上,均应用了PCG方法:
1.建筑的摆放
2.场景灯光(light + probe)的摆放
3.场景中的一些可交互场景(事件)的生成
规格
PCG:分三步完成
PCG过程中遇到的问题与解决方案:
1.1 建筑的生成方式
先生成白模(灰模)
再在灰模四周贴上从several building kits中的组件,最后使用屋顶套件(可选的多个小模型,如果没有匹配的屋顶套件,会通过程序化自动生成),按照一定的规律,摆放在屋顶上
2.Technique Details
2.1. 目标机型&目标帧率
2.2. 性能预算
Main Thread
Render Thread
其他参考
线程同步
2.3.City Building
四级分割:
城市所有数据都是PCG生产的:
Houdini输出json,通过程序完成城市的生成:
2.4. Streaming
基于移动速度&CellSize,可以估算出每个Tile的加载耗时:
在快速移动的时候,可以通过Motion Blur来降低LOD/Mips的精度下降的影响
Streaming策略:先粗后精,先大后细
一些参考建议:
冗余可以提高IO效率,但是会导致包体增加:
修改规则,减少冗余:
2.5. 渲染
远景数据常驻:
3D Imposter:只有外壳,没有UV,根据顶点坐标,投影得到cubemap的采样坐标
生成方法参考:Marvel’s Spider-Man: IG-Impostors Cityscapes and Beyond
LOD规则:低模+低分辨率贴图 -> 低模+高分辨率贴图 -> 高模(分级LOD)+高分辨率贴图
加上自发光贴图补充夜景细节:
问题与解决方案:
将有问题的小物件与建筑远景解耦:
小物件做了LOD处理,缩小了Instance的Parameter数据尺寸,从而减少了内存消耗:
Scene Capture是分帧进行的,每次只绘制一个Face:
参考
-
Procedurally Crafting Manhattan for ‘Marvel’s Spider-Man’.pdf
-
Procedural System Assisted Authoring of Open-World Content for Marvel’s Spider-Man.pdf
-
Concrete Jungle Gym Building Traversal in Marvel's Spider-Man.pdf
-
【GDC2019】Building New York in 'Marvel's Spider-Man' - It's Still Just Level Design.pdf
网友评论