UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流 | 您所在的位置:网站首页 › 开发相关的专利技术有哪些 › UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流 |
程序化内容生成框架(Procedural Content Generation Framework,下文简称PCG)可谓是UE5.2版本中最令人瞩目的新技术之一,老王也是在第一时间就关注了这个技术,以前尝试过用Houdini来实现UE5中的程序化内容生成,感觉还是很蹩脚的,毕竟Houdini是第三方工具,节点操作不如UE蓝图顺手,而且生成的资源需要插件来解析,调试以及场景资源的交互就更头疼了。有了原生的PCG,在程序化内容生成方面,可以和Houdini说拜拜了。 引言网上有不少关于PCG的小教程,但基本都是从“小工具”层次的介绍。深扒《Electric Dreams》项目的代码,让我感到Epic Games这次给出的PCG是野心满满的,因为它不仅有很高的完成度,而且还为中大型项目直接定义了更加优化的PCG开发工作流程。 什么是PCGSettingsPCGSettings是PCG中的配置文件,PCGSettings有两种: 节点的PCGSettings关卡的PCGSettings其中节点PCGSettings比较容易理解,把PCGGraph中选中的节点,右键Export Nodes to AssetData就可以保存成对应的PCGSettings,它的作用就是可以复用这些节点的设置,直接拖拽到PCGGraph中就可以使用。 下面我们重点聊聊关卡PCGSettings,在每个Level文件上右键通过PCG - Level to PCG Settings都可以导出一个关卡PCGSettings文件,它的名字由Level文件名+"_PCG"后缀组成,当我们更新了关卡中的内容,再次导出时,如果已有对应的关卡PCGSettings文件,它会直接对旧文件进行更新。 我们新建一个名为"PCG_DesignLevel"的关卡,在里面随便摆放一些东西:StaticMesh、SkeletalMesh以及SplineActor。顺便给两个StaticMesh更换一下材质,然后为白色的Actor添加ActorTag:White;为红色的Actor添加ActorTag:Red 导出关卡PCGSettings 新建一个PCGGraph,里面的内容非常简单,RCG_DesignLevel节点就是"PCG_DesignLevel_PCG"的Instance(直接拖拽到PCGGraph即可) 注意: 这里StaticMeshSpawner的Mesh Selector Type的类型要设置为PCGMeshSelectorByAttributeAttribute Name设为"Mesh"(字符串类型)勾选By Attribute Material Overrides并添加"Material"再新建一个名为"PCG_GameLevel"的关卡,把刚刚写的PCGGraph拖拽到关卡中。 神奇的事情发生了,我们发现: "PCG_DesignLevel"中的静态物体(静态几何体,地面)都显示出来了,甚至还赋上了材质。生成的静态几何体都成为了PCG_Demo的子组件。但SkeletalMesh和SplineMesh都不见了。这一切是怎么发生的呢?我们检查一下关卡PCGSettings中点云(Point Cloud)的内容: 小小的PCGSettings文件,让PCG开发有了多元化而且松耦合的工作流程,比如: 工作流1:这是一种纵向的工作流,关卡设计师可以现在一个初始关卡(暂称之为“锚定场景”),定义出一些重要的锚定网格体,然后导出它的PCGSettings,地编新建一个关卡(暂称之为“地编关卡”)通过PCGGraph进行视觉上的装饰 这是一种横向的工作流,《Electric Dreams》项目中大量使用了这种工作流。每个子关卡都分别导出PCGSettings,然后在组合关卡中进行组合,这样不但降低了各个模块开发的耦合度,还大大提升了关卡的复用性和灵活性。 UE5.2中PCG被称为框架(Framework)而不仅仅是工具(Tools),是有道理的。因为它不仅仅是houdini的原生版本,还带来了一套针对PCG开发的工作流程,使用PCG制作游戏场景,效率实在太起飞了,我相信它会成为未来游戏开发的必修课。 |
CopyRight 2018-2019 实验室设备网 版权所有 |