UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流

这篇具有很好参考价值的文章主要介绍了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开发工作流程。

什么是PCGSettings

PCGSettings是PCG中的配置文件,PCGSettings有两种:

  • 节点的PCGSettings
  • 关卡的PCGSettings

其中节点PCGSettings比较容易理解,把PCGGraph中选中的节点,右键Export Nodes to AssetData就可以保存成对应的PCGSettings,它的作用就是可以复用这些节点的设置,直接拖拽到PCGGraph中就可以使用。
下面我们重点聊聊关卡PCGSettings,在每个Level文件上右键通过PCG - Level to PCG Settings都可以导出一个关卡PCGSettings文件,它的名字由Level文件名+"_PCG"后缀组成,当我们更新了关卡中的内容,再次导出时,如果已有对应的关卡PCGSettings文件,它会直接对旧文件进行更新。

UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流

关卡PCGSettings中有哪些内容

我们新建一个名为"PCG_DesignLevel"的关卡,在里面随便摆放一些东西:StaticMesh、SkeletalMesh以及SplineActor。顺便给两个StaticMesh更换一下材质,然后为白色的Actor添加ActorTag:White;为红色的Actor添加ActorTag:Red

UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流

导出关卡PCGSettings
UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流

新建一个PCGGraph,里面的内容非常简单,RCG_DesignLevel节点就是"PCG_DesignLevel_PCG"的Instance(直接拖拽到PCGGraph即可)

UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流

注意:

  • 这里StaticMeshSpawner的Mesh Selector Type的类型要设置为PCGMeshSelectorByAttribute
  • Attribute Name设为"Mesh"(字符串类型)
  • 勾选By Attribute Material Overrides并添加"Material"

再新建一个名为"PCG_GameLevel"的关卡,把刚刚写的PCGGraph拖拽到关卡中。

UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流

神奇的事情发生了,我们发现:

  • "PCG_DesignLevel"中的静态物体(静态几何体,地面)都显示出来了,甚至还赋上了材质。
  • 生成的静态几何体都成为了PCG_Demo的子组件。
  • 但SkeletalMesh和SplineMesh都不见了。

这一切是怎么发生的呢?我们检查一下关卡PCGSettings中点云(Point Cloud)的内容:
UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流

  • 从列来看,关卡PCGSettings`的点云中包含着原关卡中所有静态网格体、层级实例化静态网格体(HISM)和实例化静态网格(ISM);
  • 从行来看,点云中的每个点除包含初始属性,还包含着上述静态网格的体相对根节点(PCGVolume)的Transform,以及对应的Mesh资源和Material。这就是为什么StaticMeshSpawner可以通过属性生成网格并赋上材质。我们还可以看到,之前在原关卡中为红色和白色Actor分别添加的Tag(“Red"和"White”)也作为每个点的属性储存在点云中,这是一个Int32/64类型属性,拥有该属性的Actor值为1,否则为0。在PCGGraph中,我们可以通过Point Filter来过滤拥有某种Tag的Actor。

工作流

小小的PCGSettings文件,让PCG开发有了多元化而且松耦合的工作流程,比如:

  • 工作流1:

这是一种纵向的工作流,关卡设计师可以现在一个初始关卡(暂称之为“锚定场景”),定义出一些重要的锚定网格体,然后导出它的PCGSettings,地编新建一个关卡(暂称之为“地编关卡”)通过PCGGraph进行视觉上的装饰

UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流

  • 工作流2:

这是一种横向的工作流,《Electric Dreams》项目中大量使用了这种工作流。每个子关卡都分别导出PCGSettings,然后在组合关卡中进行组合,这样不但降低了各个模块开发的耦合度,还大大提升了关卡的复用性和灵活性。

UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流

小结

UE5.2中PCG被称为框架(Framework)而不仅仅是工具(Tools),是有道理的。因为它不仅仅是houdini的原生版本,还带来了一套针对PCG开发的工作流程,使用PCG制作游戏场景,效率实在太起飞了,我相信它会成为未来游戏开发的必修课。文章来源地址https://www.toymoban.com/news/detail-497262.html

到了这里,关于UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何使用UE5新功能 “打包型关卡Actor” 实现场景的性能优化

    内容分为: 简介 实操 优化结果展示 看不懂原理看看实操就大概就能明白 “打包型关卡蓝图”是UE5新功能 世界分区(World Partition) 的一部分 但 不依赖于项目是否启用了世界分区 官方文档有关世界分区中 关卡实例化 的内容 官方文档: 这个功能的原理是将场景中的 静态网

    2024年02月12日
    浏览(109)
  • 【UE5 Mass AI】UE5技术演示视频中的MassAI笔记

    在虚幻引擎中,Mass Framework是面向数据的一种框架设计,而MassAI则是一个具体的用例。 Mass Framework可以分为三部分:MassEntity,MassGameplay,MassAI。 1. Mass Entity MassEntity是一种面向数据的框架,该框架有两部分,一为片段(Fragment),非常小的数据结构,会连续的储存在内存中;另为

    2023年04月17日
    浏览(52)
  • UE5的项目建立及UE5(虚幻引擎5)个人视角移动按键操作及运行项目/day.2

    进入UE5的界面就是这样: 由于我们是刚下载的,“最近打开的项目”是没有项目打开的所以我们需要新建一个新的项目。 注意,项目位置最好是英文的,否则可能会出错。(可能不会,毕竟很多人都说有可能有BUG,小心为好)。 初学者的话选择蓝图编程(毕竟蓝图编程比较

    2024年02月15日
    浏览(57)
  • 提升UE5写实效果的项目设置

    随着 虚幻引擎5 (Unreal Engine 5,简称UE5)的发布,游戏开发者和数字艺术家们迎来了一个全新的机会,可以在其强大的渲染引擎下创建更加逼真和令人惊叹的游戏和虚拟场景。然而,要实现出色的写实效果,需要合理设置项目并运用一些技巧和策略, 3DCAT实时渲染本文将探讨

    2024年02月12日
    浏览(40)
  • Ue5.1创建C++项目(Rider)

    1、下载地址 2、选择左侧“Visual Studio Community 2019” 3、选择这两个 4、单体里添加这几个: 注意最后一个选下边这个 5、下载完成后到这个目录 将原来的14.29.30133文件夹重复名,改成14.29.30136,否则报错 整整baidu、google了1天,网上都没有解决办法 Unable to find valid 14.29.30136 too

    2024年02月02日
    浏览(56)
  • UE5创建C++项目里报错

    UE5创建C++项目里报错: Running C:/Program Files/Epic Games/UE_5.0/Engine/Binaries/DotNET/UnrealBuildTool/UnrealBuildTool.exe  -projectfiles -project=\\\"F:/zhanting6.30/PAK/ReadWriteTxtProject/ReadWriteTxtProject.uproject\\\" -game -rocket -progress You must install or update .NET to run this application. App: C:Program FilesEpic GamesUE_5.0EngineBin

    2024年02月05日
    浏览(49)
  • ue4.27空项目打包不卡ue5.1空项目打包运行卡的要命研究测试

    知乎上有人提问 lumen是如何做到不卡顿的,我却不以为然,我的显卡虽然算不上好显卡,但是也不至于独立显卡一个空项目都玩不起吧,打个cf,玩腾讯模拟器和平精英吃鸡肯定还是会很流畅的. 一个空项目都卡,怎么能说是我电脑配置问题呢??? 再来看提示 image.png image.png 反射设置的

    2023年04月21日
    浏览(65)
  • 【UE5】第一次尝试项目转插件(Plugin)的时候,无法编译

    VS显示100条左右的错误,UE热编译也不能通过。原因可能是[名字.Build.cs]文件的错误,缺少一些内容,比如说如果要写UserWidget类,那么就要在 ]名字.Build.cs] 中加入如下内容: 根据你的文件进行添加。如果说依然有如图的问题,那你就去原来的项目里看看哪些没加上去。 正在创

    2024年01月22日
    浏览(52)
  • 【虚幻引擎UE】UE5 三种模式调用API详解(案例基于免费Varest插件)

    想通过UE5 调用API实现GET和POST, 可以通过自己编写C++方法, 或基于相关HTTP请求插件, 如Varest、Http Request、Http Blueprint For Web等等插件进行实现。 本文仅简要介绍实现思路及基于Varest插件的实操案例。 1.如果是无后端直接写代码,可以通过Apifox工具(或其他mock工具)设计接口

    2024年02月07日
    浏览(54)
  • 【虚幻引擎UE】UE4/UE5 基于2D屏幕坐标获取场景3D坐标 射线检测(蓝图/C++)

    射线检测(Ray Casting) 是一种计算机图形和计算机图形学中的基本技术,用于检测光线或射线是否与三维场景中的物体相交,以确定相交点的位置和其他相关信息。射线检测通常用于实现各种交互功能、渲染效果和物理模拟,包括但不限于鼠标拾取、光线追踪、碰撞检测和物

    2024年02月07日
    浏览(121)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包