UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(三)SG_CopyPointsWithHierarchy

2023-10-26

继续解析《Electric Dreams》项目中的自定义节点和子图:SG_CopyPointsWithHierarchyPostCopyPoints-OffsetIndices

在这里插入图片描述

前导文章

《UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)》
《虚幻引擎程序化资源生成框架PCG 之 UPCGBlueprintElement源码笔记(一)》
《虚幻引擎程序化资源生成框架PCG 之 UPCGBlueprintElement源码笔记(二)数据流》
《UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(一)》
《UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(二)Look At》

标准组合拳

《Electric Dreams》以及官方文档中给出了SG_CopyPointsWithHierarchyApplyHierarchy标准使用套路
在这里插入图片描述
以下摘自官方文档:

  1. Level to PCG资产工具 将关卡转换为包含PCG点的PCG设置资产,其相关联的场景层级信息将存储为metadata特性。
  2. SG_CopyPointsWithHierarchy子图表使用目标点变换在多个位置复制PCG设置资产,这与Copy Points节点的作用类似,但它还通过维护和偏移层级特性值,使父级信息对于原始资产点的每个副本来说都是唯一的。
  3. Point Filter节点,根据特性选择点。
  4. Transform Points节点与ApplyToAttributes选项,对被选中点的相对变换特性执行变换操作。
  5. Merge节点,重新组合同一数据流中同一层级的所有点。
  6. ApplyHierarchy节点,将相对变换特性与父级变换相结合,应用到点上。

SG_CopyPointsWithHierarchy

在这里插入图片描述
SG_CopyPointsWithHierarchy中首先进行了Copy Points,而它的关键部分在于PostCopyPoints-OffsetIndices

PostCopyPoints-OffsetIndices

顾名思义:PostCopyPoints-OffsetIndices就是在CopyPoints之后,对Point的"Index"进行Offset。但是理解到这个层次还是让人摸不着头脑。在研究源代码之前我们先看一下它的使用情景。

使用情景

SG_CopyPointsWithHierarchy(以及PostCopyPoints-OffsetIndices)都是结合着Assembly来使用的,所以这个例子要从Assembly开始。

老王在《UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)》一文中简要介绍过Assembly。

构造一个简单的简单的关卡“Assembly_01”,并使用"PCG-Level to PCGSettings"工具生成对应的“Assembly_01_PCG”
在这里插入图片描述

构造一个简单的PCGGraph看一下

在这里插入图片描述

在这里插入图片描述

"Assembly_01"中Points通道的原始信息
在这里插入图片描述

  • Mesh: 模型
  • Material: 材质
  • Actor Index: Actor的Index
  • Parent Index: 这个Actor父级Actor的Index,当Parent Index为-1时没有父级
  • Hierarchy Depth: 所处层级
  • 其它: 相对父级的Transform

"SG_CopyPointsWithHierarchy"的信息

在这里插入图片描述

**对比以后我们可以看到PostCopyPoints-OffsetIndices,实际上就是对为每个Point重新分配了Actor Index保证它们在1:N变成M:N*M以后依然有互不相同的Actor Index,并且Parent Index依然对应着它的父级Actor Index。接下来,我们看一下它是如何实现的。

在这里插入图片描述

Execute with Context

在这里插入图片描述

1-2. 首先获取CopyPointsTarget输入通道中第1个PCGTaggedData(→PCGSpatialData)计算出其中Point个数存入Total Point Count
3. 获取ContextTaskId计算出Random Offset,这里TaskId就是一个uint64类型的整数,相当于一个随机种子
4-5. 获取CopyPointsOut输入通道中第1个PCGTaggedData(→PCGPointData),其中PCGPoint的数量会作为IterationLoop的迭代次数。

Iteration Loop Body

在这里插入图片描述

Iteration Loop Body的目的就是为Point的两个Int64类型的特性:ActorIndexParentIndex重新赋值,保证每个Point的子Point有足够的编号空间。

小结

  1. SG_CopyPointsWithHierarchy其实就是携带source中层级信息和相对Transform的高级版CopyPoints。
  2. 它需要和"PCGSettings"以及"PCG-Level to PCGSettings"一起工作(需要"PCGSettings"中原始ActorIndexParentIndex信息)。

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(三)SG_CopyPointsWithHierarchy 的相关文章

  • Rider编译UE5项目RD报错

    Rider编译UE5项目RD报错 我的版本 5 0 1 不知道何时能修复这个问题 具体报错 Expecting to find a type to be declared in a module rules named RD in UE5R
  • UE4开发学习笔记(双人游戏共享视角,共享相机)

    先创建一个共享相机的actor类share camera 里面只要spring arm和camera就行 在关卡蓝图里设置摄像机位置 setviewtargetwithblend是将character本身的摄像机过渡到公共摄像机 这里的bl
  • 虚拟偶像是未来趋势吗?

    Hello 我的朋友 这里是古希伯 今天聊聊 虚拟偶像行业是不是未来的趋势 虚拟偶像零都知道吧 日本初音未来 洛天依诸多的 日本虚拟偶像行业市场是最为发达的 日漫这一块本身具有先天优势存在 乃至于国内诸多公司都没有能力完全复刻 虚拟偶像目前
  • 虚幻官方项目《CropOut》技术解析 之 程序化岛屿生成器(IslandGenerator)

    开个新坑详细分析一下虚幻官方发布的 CropOut 文章会同步发布到我在知乎 CSDN的专栏里 文章目录 概要 Create Island 几何体生成部分 随机种子 Step 1 Step 2 Step 3 Step 4 Step 5 St
  • 【UE4】Replay游戏回放 for UE4.26

    前言 UE4 26的回放教程 最近有用到 So梳理了整个构建流程 希望能帮到你 结尾有视频版教程 时长较长 1 准备工作 创建一个UE4C 项目 添加第一人称和第三人称功能包 关闭引擎 找到项目目录 ContentDir Config De
  • UE5 AddYawInput踩坑

    在UE5内使用AddYawInput蓝图节点 发现我输入的值和旋转的值完全不匹配 总是扩大了2 5倍 无奈去看源码 发现并不是你输入多少值就旋转多少值 如果项目设置里EnableLegacyInputScales为真 那么还会乘以一个Yaw
  • ue4 unreal NDisplay插件 简易使用 三折幕 详细...

    仅支持4 27版本 NDisplay文档 https docs unrealengine com 4 27 en US WorkingWithMedia IntegratingMedia nDisplay Overview Switchbo
  • UE5 MediaPlayer无法正确播放视频

    StreamMediaSource 播放流媒体源 流媒体源 Stream Media Source 是一种资源 允许你在虚幻引擎5 UE5 中流送支持的 URL格式视频 定义流后 你可以将其加载并使用 媒体播放器 资源在UE4中播放 并可
  • 《UE4开发笔记》Tip 0 Rider的五个必备技巧

    在UE4的C 工程和源码开发中 过去常使用Visual Studio系列来作为IDE 但VS始终对UE4工程支持的并不友好 小番茄Visual Assist X系列插件的安装也是十分玄学 时不时就失灵 JetBrains推出了Rider F
  • Unreal Engine UE4虚幻引擎,生成Cubemap(HDR高动态范围贴图)

    1 在场景中添加Scene Capture Cube场景捕获立方体 2 在Scene Capture Cube细节面板中创建 Cube Render Target 立方体渲染目标 打开创建的 Cube Render Target 立方体渲染
  • 从UE4到UE5:工程及资产迁移的原理和一般方法

    按照官方建议 明年早些时候发布UE5正式版本 UE5EA仅用于新技术探索和尝鲜 项目开发还是应该在UE4上进行 现在迁移只是为了解新的features 提前规划哪些可能用于现在的工程 2022 4 8更新 UE5正式版已经发布 喜大普奔 赶
  • 11月7日 Unreal Engine Rider 学习笔记

    创建蓝图接口 添加蓝图Class 添加接口用指针 添加宝箱Actor类 添加Mesh类 首先在类后面添加一个公用接口声明 class ACTIONROUGELIKE API AASItemChest public AActor public
  • 从UE4到UE5:新特性的限制

    Nanite 原理 划分culster 按层级进行三角形的culling和lod selection HLOD 基于compute shader 和N卡的mesh shader同目的不同路 纯软件和硬件路线 开启 导入时勾选build na
  • 序(为什么要抄unreal源码)

    unreal所有源码很长 几百万行 一辈子也抄不完 然而 ue4 0版本的runtime只有1887个文件 251043行 不算第三方库 可以只按照渲染相关部分抄写一下 然后 逐版本增补 只需要关注渲染部分 和工作中用到的插件 还是可以的
  • UE4加载使用自定义dll动态链接库

    本人在写这篇文章时候 网上已经有很多相关的文章 但是网上的文章缺少逐步指引 本人看的云里雾里 估计刚接触相关工作的人看的也不是很清楚 本着自己记录和让他人少踩一些坑的宗旨 这篇文章诞生了 好了 不多BB 直接进入主题 创建自定义dll动态链
  • UE5《Electric Dreams》项目PCG技术解析 之 理解Assembly(以SplineExample为例)

    文章目录 1 什么是Assembly 2 PCG部分 2 1 Assembly变换 2 2 Point变换 2 2 1 SG CopyPointsWithHierachy 2 2 2 过滤及点变换 2 2 3 ApplyHierachy 3
  • UE5_创建C++项目报错

    UE官方VS安装推荐 https docs unrealengine com 4 26 en US ProductionPipelines DevelopmentSetup VisualStudioSetup UE5报错 A fatal e
  • 11月11日 自定义Events,将自定义Events分配给UI,给UI添加动画 UE4斯坦福 学习笔记

    自定义Events 在AttributeComponent的 h头文件上加上代码 自定义Event DECLARE DYNAMIC MULTICAST DELEGATE FourParams FOnHealthChanged AActor
  • UE4学习笔记--连接MySQL数据库(C++)

    UE4学习笔记 连接MySQL数据库 我个人是个比较水的人 在学校没好好学程序 不误正业的玩建模 现在美术和程序都不行 想想还是重新认真学程序吧 先从记笔记开始 话说我还是第一次写博客 我是跟着几位大佬的博客做的 记录一下自己的问题 以免以
  • 【UE5】监控摄像头效果(下)

    目录 效果 步骤 一 多摄像机视角切换 二 摄像头自动旋转巡视 三 摄像头跟踪拍摄 效果 步骤 一 多摄像机视角切换 1 打开玩家控制器 MyPlayerController 添加一个变量 命名为 BP SecurityCameraArra

随机推荐

  • 如何提高影响力?

    一 什么是影响力 1 通俗的讲 影响力就是影响他人的能力 二 为什么需要提高 1 可以让工作更高效 2 可以让生活更惬意 三 提高影响力的切入点 1 乐于助人与虚心求教 1 1 每个人都会遇到困难 在别人遇到困难的时候 帮助其一下 不要担心
  • js 数组根据字段分组

    在平时的开发中 难免会遇到需要对接口获取的数据进行处理 例如以下数据 const arr a 系列1 b 2 c 3 a 系列2 b 2 c 3 a 系列3 b 2 c 3 我们需要对a字段进行分组 将b和c字段单独取出来 那么我们就可以用
  • 微信小程序注册入口和注册流程(完整版图文教程)

    微信小程序注册是免费的 在腾讯云微信公众平台即可注册 无论是个人 企业都可以免费注册微信小程序 先输入邮箱注册激活 然后填写主体类型对应的证件信息 最后管理员身份验证使用维信扫一扫即可 小程序5来详细说下微信小程序注册入口和微信小程序注册流
  • 下载Android特定模块的源代码

    原文地址 http www apkbus com android 18828 1 1 html 开发中要模仿Android系统中某些应用的特性 需查看其源代码 关于Android源码的介绍见 http source android com
  • Go依赖管理及Go module使用

    目录 一 依赖管理 二 为什么需要依赖管理 三 godep 3 1 安装 3 2 基本命令 3 3 使用godep 3 4 vender机制 3 5 godep开发流程 四 go module 4 1 GO111MODULE 4 2 GOP
  • 周杰伦演唱会总是抢不到票?教你用Python做一个自动抢票脚本

    相信想去周董演唱会的大家都用过大麦网抢票吧 可是 抢不到啊 该说不说 我抢到了 那么 今天带大家用Python来制作一个自动抢票的脚本小程序 知识点 面向对象编程 selenium 操作浏览器 pickle 保存和读取Cookie实现免登陆
  • 微信公众号分享功能 errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20210130 10:16:32][]“

    H5 分享 请求分享页面时 系统错误 errMsg config fail Error 系统错误 错误码 63002 invalid signature 20210130 10 16 32 解决方案 报错信息 签名错误 需要检查自己的签名是
  • 反转数组(两种方法)

    a 第一种方法 创建一个新数组接收并返回 var arr1 1 2 3 var arr2 reverse1 arr1 console log arr2 console log reverse1 arr1 定义一个新数组 把老数组中的元素反向
  • UsbWebserver + MySQL + Apache的和环境配置问题(主要是连不上MySQL的问题)

    问题1 Apche感叹号 是因为软件路径中含有中文 可以把文件转移到没中文的路径下 问题2 mysqli connect Server sent charset 255 unknown to the client php集成环境 usbwe
  • 电子闹钟设计

    摘要 本设计是以89c51单片机作为控制核心的闹铃系统 本文大致可以分三个章节 第一章讲用单片机制作电子闹钟带来的优势 还有电子闹钟在未来的电子产品中的趋势以及本次设计所要实现的课题目标 第二章讲一些设计思路和硬件组成 第三讲程序代码 最后
  • CVE10大漏洞总结【网络安全】

    1 OpenSSL心脏出血漏洞 漏洞描述 这项严重缺陷 CVE 2014 0160 的产生是由于未能在memcpy 调用受害用户输入内容作为长度参数之前正确进行边界检查 攻击者可以追踪OpenSSL所分配的64KB缓存将超出必要范围的字节信
  • std::string::replace使用小计

    ctrl c ctrl v 真是害死人 看起来简单的东西 往往却又很容易出问题 究其原因 还在于只知其表不知其里 容易想当然 今天遇到的问题是简单调用string replace替换子串的问题 如 std string sTest1 12x
  • web服务器开发课程项目实训,Web前端开发实训案例教程(初级)

    目 录 第1章 实践概述 1 1 1 实践目标 1 1 2 实践知识地图 1 1 3 实施安排 6 1 3 1 实验部分 技术专题 6 1 3 2 综合实践部分 11 第2章 网页设计与制作 19 2 1 实验目标 19 2 2 实验任务
  • FTP命令详解

    FTP命令是Internet用户使用最频繁的命令之一 不论是在DOS还是UNIX操作系统下使用FTP 都会遇到大量的FTP内部命令 熟悉并灵活应用FTP的内部命令 可以大大方便使用者 并收到事半功倍之效 FTP的命令行格式为 ftp v d
  • bytebuffer 使用demo

    pom文件
  • 微信小程序路由

    wx reLaunch Object object 关闭所有页面 打开到应用内的某个页面 一般是跳转到首页使用 例 wx reLaunch url url wx navigateTo Object object 保留当前页面 跳转到应用内的
  • Java时间转换问题 [Failed to convert property value of type ‘java.lang.String‘ to required type ‘java.

    1 错误提示代码 default message Failed to convert property value of type java lang String to required type java 2 分析原因 遇到java接收
  • macOS 系统下安装Lua及lua-cjson

    macOS 系统下安装Lua及lua cjson lua安装及部署 具体操作步骤如下 curl R O http www lua org ftp lua 5 2 3 tar gz tar zxf lua 5 2 3 tar gz cd lu
  • 豆瓣读书top250数据爬取与可视化

    爬虫 scrapy 题目 根据豆瓣读书top250 根据出版社对书籍数量分类 绘制饼图 搭建环境 import scrapy import numpy as np import pandas as pd import matplotlib
  • UE5《Electric Dreams》项目PCG技术解析 之 PCGCustomNodes详解(三)SG_CopyPointsWithHierarchy

    继续解析 Electric Dreams 项目中的自定义节点和子图 SG CopyPointsWithHierarchy和PostCopyPoints OffsetIndices 文章目录 前导文章 标准组合拳 SG CopyPointsW