UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

这篇具有很好参考价值的文章主要介绍了UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

1. 什么是Assembly

UE5.2的PCG出了有一段时间了,大家玩得都很开心。很多朋友可能和老王一样,使用PCG一直停留在程序化摆放各种StaticMesh的水平。虽然仅使用StaticMesh也可以构造出很多好玩的结构,但相对于《Electric Dreams》项目给我们带来的Assembly级的玩法,可以说还是小巫见大巫了。

如果说StaticMesh是PCG世界的"原子",我们只能用它们来构造一些“无机物”,那么Assembly就更像是“大分子”,用Assembly可以构造更复杂的“有机物”。

接下来,我们以SplineExample关卡为例,分析一下什么是Assembly,以及Assembly是如何在两个灵魂般的小工具加持下,焕发出惊人生命力的。

文件位置:/Content/Levels/PCG/Breakdown_Levels/ElectricDreams_PCGSplineExample.umap

首先我们看一下这个场景:

左边就是Assembly,而右面就是用这个“大分子”生成的PCG
UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)
技术上讲Assembly其实就是一个关卡实例(Level Instance)

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

  • 这个关卡实例由若干StaticMesh组成(一些小的土块、石头、树),并且一些StaticMesh(主要是土块)也设定了层级关系。这种多级结构,结合着后面每个StaticMesh在给自局部坐标系上的随机Transform运算,可以产生更丰富的变体

  • 本例中的Assembly通过Spline形成了一条“小路”,“小路”的“宏观特征”是中间主要为土块,而两旁为植物。我们发现本例中的Assembly也满足这个特征。即使对Assembly上的StaticMesh进行局部坐标的随机变换,也不会打破该特征。

这就是我称之为“大分子有机物”的原因,即可以保证大的宏观趋势,又可以提供局部的随便多样性。

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

  • Assembly中的一些StaticMesh还设定了特定的Tag,本例中一些树木的StaticMesh上添加了KeepVertical的Tag,其目的是后面会局部随即变换时保持它仅在垂直方向上变换。

2. PCG部分

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)
本例中直接在Actor的实例下添加了Spline和PCG组件。

这里也使用了我在《UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流》一文中提到的,基于关卡PCGSettings的工作流

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

它的PCGGraph也很简单,主要分个部分:

  1. Assembly变换
  2. Point变换

2.1 Assembly变换

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

  1. 首先从PCGSettings中获取到Assembly的BoundBox,作为Spline每个采样点上的BoundBox.这一步主要是用于设定Spline的采样距离
  2. 然后随机选择Assembly,并对其进行z轴180度旋转(保持道路的宏观特征)

2.2 Point变换

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

2.2.1. SG_CopyPointsWithHierachy

SG_CopyPointsWithHierachy的作用和CopyPoints很类似,只不过SG_CopyPointsWithHierachy携带了一系列的层级信息,我们Inspect一下SG_CopyPointsWithHierachy节点:

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

  • ActorIndex : 当前点的Index
  • ParentIndex:父节点Index
  • HierarchyDepth:层级深度
  • RelativeTransform:相对变换

2.2.2 过滤及点变换

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)
Point Filter筛选的就是上文提到的带有Keep Vertical的Tag的StaticMesh

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

注意这里的Transform是针对局部坐标,所以要讲作用Attribute设为RelativeTransform

2.2.3. ApplyHierachy

UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

ApplyHierarchy计算出每个点最终的Transform,然后用StaticMeshSpawner生成最终模型。

这里关于StaticMeshSpawner的用发我在《UE5《Electric Dreams》项目PCG技术解析 之 基于关卡PCGSettings的工作流》一文已经解释过,本文就不再赘述了。

3. 小结

Assembly的思路并不难理解,就是把一系列原子(StaticMesh)“有机”结合起来,形成一个具有更高多样性变化空间的“分子”。使用的时候先通过SG_CopyPointsWithHierachy提取相对变换信息,经过筛选变换以后,再通过ApplyHierachy计算最终变换,并生成最终的模型。

所谓“有机”就如本例中,保持小路的“宏观特征”那样。文章来源地址https://www.toymoban.com/news/detail-501586.html

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

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

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

相关文章

  • 【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)
  • 虚幻引擎图文笔记:项目升级到虚幻5(UE5.0.1)以后出现奇怪阴影问题的解决办法

    UE5.0.1 奇怪的阴影的解决办法 奇怪阴影问题解决

    2024年02月15日
    浏览(53)
  • UE5 UDP通信 UE4.21-UE5.1

    目录 客户端,发送数据 1.建立字符串变量UDPConnection,绑定连接事件  2.连接初始化  3.发送数据  4.关闭UDP服务  服务器,接收数据 1.绑定连接事件  2.绑定数据接收事件  3.开启UDP服务  4.返回数据  5.关闭UDP服务   需要提供远程端IP地址和端口号 0.0.0.0表示监听所有ip,端口

    2024年02月15日
    浏览(82)
  • 初学UE5,UE4的教程适用UE5吗?

    UE5是最近推出的一款游戏引擎,相较于UE4而言,它有着更好的性能和灵活的工作流程,同时也引入了一些新的功能。对于一些游戏开发初学者来说,他们可能会想知道,是否可以通过UE4的教程来学习UE5。在这里,我们将介绍一下这个问题。 首先,UE5和UE4之间确实存在一些相通

    2024年02月06日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包