UE5 PCG学习笔记

https://www.bilibili.com/video/BV1onUdY2Ei3/?spm_id_from=333.337.search-card.all.click&vd_source=707ec8983cc32e6e065d5496a7f79ee6

一、安装PCG

  • 插件里选择以下进行安装
    在这里插入图片描述
  • 移动目录后,可以使用 Update Redirector References,更新下(否则会删除不干净或存在残留文件)
    在这里插入图片描述
  • 调出Filters刷选器,更方便操作
    在这里插入图片描述

二、创建PCG图表

在这里插入图片描述

  • 将PCG拖入场景中,通过Scale设置PCG的大小

三、地形布置随机点

  • 通过PCG方块接触到地形,使用Get Landscape Data节点来获取地形数据
    在这里插入图片描述

  • 拉线出来,选择Surface Sampler,表面采样器。并选择此节点,按D(Debug),看到采样情况
    在这里插入图片描述

  • 按A,查看点位信息
    在这里插入图片描述

  • 密度为1是白色,密度为0是黑色

  • 修改点数、松散度和随机性;unbounded设置是否为全局,通过Point Extents设置点的大小
    在这里插入图片描述


四、设置树木

  • 可以通过选择 Show all projects,把不支持5.4的内容添加到5.4中间
  • 选择树木模型,右键,勾选Nanite
    在这里插入图片描述
  • 在 Surface Sampler拖出 Static Mesh Spawner 静态网格生成器
  • 设置Mesh Selector的模型
    在这里插入图片描述
  • 生成树木
    在这里插入图片描述
  • 增加数组,加入3个模型,并可以设置weight,权重
    在这里插入图片描述
  • 查看效果
    在这里插入图片描述

五、设置点的旋转与缩放

  • 先把静态网格节点按E (enable) 取消使用
  • 从surface sampler节点,拉出Transform points 进行调试 D
    在这里插入图片描述
  • 设置transform points的随机属性
    在这里插入图片描述
  • 树木看起来更加自然
    在这里插入图片描述
  • 当地形有坡度时,勾选 Absolute Rotation,防止树木长歪
    在这里插入图片描述在这里插入图片描述

在这里插入图片描述


六、岩石

  • 移除重叠节点
    在这里插入图片描述
  • 从大到小,保留大的节点
    在这里插入图片描述
  • 边界修改器,改动节点的边界大小;调整边界是为了模型与随机点的方块大小基本匹配
    在这里插入图片描述在这里插入图片描述

在这里插入图片描述


七、岩石与树不要重叠

  • 使用Difference节点,去除树和岩石的重叠,保留树
    在这里插入图片描述

  • Density Function一定要设置成,Binary
    在这里插入图片描述

  • 调整下树的点位边界为0.6,在Bounds Modifler中
    在这里插入图片描述
    在这里插入图片描述

  • 连接节点,完成去除
    在这里插入图片描述
    在这里插入图片描述

  • 先去除与树重的点,再去除岩石重叠的点,效果更好


八、植被

  • 加入Sufrace Sampler,并设置默认大小
    在这里插入图片描述
    在这里插入图片描述
  • 加入Static Mesh Spawner,设置植被,并去掉碰撞
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 改变点的大小 Transform Points
    在这里插入图片描述
  • 用Difference把岩石重叠部分排除
    在这里插入图片描述
    在这里插入图片描述

九、使用参数,设置植被的缩放

  • 点击Surface Sampler节点,并点击Graph Settings
    在这里插入图片描述
  • 添加变量Parameters
    在这里插入图片描述
  • 与植被的点做乘法操作
    在这里插入图片描述
    在这里插入图片描述
  • scale X 一个数,赋值给scale
  • 打开场景的PCG_Land_Base组件,并选择其中的PCGComponent
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 来设置缩放的大小

十、使用参数,设置对象的网格模型

  • 通过Graph Settings,设置参数为网格数组
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

十一、使用参数,更改网格模型的权重

  • 创建一个结构体
    在这里插入图片描述
  • 在Parameters里,建立一个结构体的数组
    在这里插入图片描述
  • 建立Match And Set Attributes,来输出模型
    在这里插入图片描述
    匹配并设置属性是weight
    在这里插入图片描述
    静态网格生成器里属性名称是Mesh
    在这里插入图片描述

这样做后,哪怕把模型的碰撞关掉,人物跑动起来,有不自然现象。


十二、表面采样器 Suface Sampler,点的数量用参数代替

  • 设疑个新的参数,FoliagePoints
    在这里插入图片描述
  • 打开表面采用器,使用参数
    在这里插入图片描述

其他参数都可以做出参数


十三、保存为实例

  • 保存实例后,程序视图就不见了
    在这里插入图片描述
  • 并过去切换Graph到实例,来实现这个功能
    在这里插入图片描述

十四、创建样条线

  • 新建一个actor蓝图,命名为BP_PathSpline
  • Add一个Spline
    在这里插入图片描述
  • 设置tag名为PathSpline
    在这里插入图片描述
  • 把蓝图拖入场景,并拉长样条线,经过PCG场景
    在这里插入图片描述

十五、在PCG中获取样条线

  • Get Spline Data节点
    在这里插入图片描述
  • 通过Tag确定样条线
    在这里插入图片描述

十六、建立一条路

  • 蓝图节点
    在这里插入图片描述

  • 样条线在一个端点上,按住alt键,可以拖动产生一个新的端点;

  • Spline Sampler的Mode使用Distance
    在这里插入图片描述

  • 通过 边界修改器 bounds modifier,修改样条线的大小
    在这里插入图片描述

  • 通过 Projection 投影节点,把样条线与地形贴合
    在这里插入图片描述

  • 此时已经有了贴合地形的一段路,把输出都连接到上面的Difference节点中,把其他模型都排除掉

  • 最终效果
    在这里插入图片描述


十七、建立一另一条样条线

  • 拷贝出来2条样条线
    在这里插入图片描述

  • 在 Get Spline Data里,设置
    在这里插入图片描述

  • 这样2条样条线都正常工作了
    在这里插入图片描述

  • 样条线与其他点之间的间距

  • 调整Spline Sampler 样条采样器里的steepness值,1间隙最小
    在这里插入图片描述


十七、制作一个PCG物体

ctrl+e:可以快捷打开图标

  • 新建一个PCG Graph
  • 制作PCG节点如下:
    在这里插入图片描述
  • Get Actor Data (获取Actor数据)设置为,过滤器为自身、模式为单点
    在这里插入图片描述
  • Static Mesh Spawner(静态网格生成器),拖入一个模型,比如一颗枯树干
  • Bounds Modifier (边界修改器)设置边界大小;可开启D,调式模式,把白色矩形刚好盖住模型
  • Transform(变换点)设置旋转0-360,缩放1-3
    在这里插入图片描述

这样,当拖动PCG蓝图的时候,树干就会随机变化(0-360度与1-3倍缩放间)
在这里插入图片描述

  • 把绝对缩放勾上,物体缩放大小不会受PCG体积影响

十八、在树干上长蘑菇

在这里插入图片描述

  • 网格体采样器
    在这里插入图片描述
    设置树干为采样网格,此时采样的点会在原点
    在这里插入图片描述
  • 复制点
    复制之前树干作为目标,把采样的点的位置同步在树干上
    在这里插入图片描述
  • 排除不朝上的点
    在这里插入图片描述
    法线转成密度,z轴朝上为1,朝下为0
    用密度过滤器,筛选密度范围
    在这里插入图片描述
    *选择点,并变化点
    按比率选择点,减少点的密度,并变化点,让点更随机,并按z轴偏移,让蘑菇种在树里
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 静态网格生成器,让多种蘑菇随机排布,并设置无碰撞

在这里插入图片描述


十九、把树干放入地图中

在这里插入图片描述

  • 表面采样器,在表面采样,可以设置松动,设置树干多少
    在这里插入图片描述
    在这里插入图片描述
  • 之前做的PCG_Obj因为没有设置Input与Out,需要来设置这个参数
    在这里插入图片描述
    新建一个PCG_Obj_Input蓝图
    输入是为了在大地图里,连接采样器使用
    输出是为了模型一些排斥等使用,所以输出只要树干部分就可以,蘑菇不用理会了

二十、树干模型重叠问题解决

  • 在PCG_Obj_Input蓝图,加入Difference节点,拖入模型,会排除重叠的树干
    在这里插入图片描述
    排斥的逻辑,路(排斥)所有4种;树(排斥)岩石;树干(排斥)树、岩石

此课程非常不错,需要记录的先到此,有兴趣的朋友可以继续学习,祝福学习愉快

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/82423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业现场ModbusTCP转EtherNETIP网关引领生物现场领新浪潮

生物质发生器是一种能够产生、培养生物的设备。客户现场需要将生物发生器连接到罗克韦尔系统,但是二者协议无法直接通讯,需要通过ModbusTCP转Ethernet/IP网关将两者进行通讯连接,生物质发生器以其独特的工作原理和优势,使得生物的…

宝蓝德中间件部署war包时,配置的绝对路径读取错误。

文章目录 问题场景解决办法宝蓝德是什么??一、基础环境与依赖配置二、自动化部署工具链三、高可用性与集群配置四、安全与合规性措施五、产品线差异化部署六、典型部署流程示例七、运维与优化 原因1. 明确“当前工作目录”与“绝对路径”的关系2. 问题根…

Java、Python、NodeJS等开发环境安装及配置镜像加速到国内源

文章目录 Java1.Windows1.1 scoop方式安装JDK 2.Linux2.1 apt方式安装JDK2.1.1 切换JDK2.1.2 验证版本2.1.3 原理 Python1.Windows1.1 scoop方式安装Python1.2 uv方式安装Python(推荐) 2.Linux2.1 apt方式安装Python2.1.1 配置版本切换2.1.2 切换Python2…

Linux系统管理与编程16:PXE自动化安装部署centos7.9操作系统

兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 0.准备 1)防火墙和SELinux systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/^SELINUX.*/SELINUXdisabled/ /etc/selinux/config (很不好的…

MCP(Model Context Protocol)是专为LLM(大语言模型)应用设计的标准化协议

核心定义 MCP(Model Context Protocol)是专为LLM(大语言模型)应用设计的标准化协议,通过安全可控的方式向AI应用暴露数据和功能。主要提供以下能力: 标准化的上下文管理安全的功能调用接口跨平台的数据交…

Fiori学习专题三十四:Responsiveness

在这一步中,我们提高了应用程序的响应能力。SAPUI5应用程序可以在手机、平板电脑和台式机设备上运行,我们可以配置应用程序以充分利用每种场景的屏幕状态。幸运的是,像sap.m.Table这样的SAPUI5控件已经提供了许多我们可以使用的功能。 1.修改…

解决 TimeoutError: [WinError 10060] 在 FramePack项目中连接 Hugging Face 超时的问题

#工作记录 以下是针对 TimeoutError: [WinError 10060] 的完整排查方案,适用于 FramePack项目中。 (一般该错误的发生原因请重点排查Hugging Face模型仓库受限需要登录的情形) FramePack项目参考资料 FramePack部署(从PyCharm解…

obj = null; 赋值null之前没有其他引用指向obj对象,那么,当obj=null时,会被垃圾回收机制立即回收吗?

不会立即回收。 具体原因是: 赋值 obj null; 后,对象变成“不可达”,符合垃圾回收条件,但垃圾回收器并不会立刻回收它。垃圾回收是CLR自动控制的非确定性过程,什么时候执行回收取决于系统内存压力、GC策略、分代情况…

【Ubuntu 安装Docker CE-Jenkins】

安装Docker CE(Ubuntu) Install | Docker Docs官网 使用apt仓库安装 DNS配置(可选) #手动替换 sudo vim /etc/systemd/resolved.conf #典型配置如下 [Resolve] DNS8.8.8.8 DNS114.114.114.114 FallbackDNS1.1.1.1 # 备用 DNS#sed替换 sudo sed -i /^#DNS/ {s/#DNS/DNS8.8.8…

5、开放式PLC梯形图编程组件 - /自动化与控制组件/open-plc-programming

76个工业组件库示例汇总 开放式PLC编程环境 这是一个开放式PLC编程环境的自定义组件,提供了一个面向智能仓储堆垛机控制的开放式PLC编程环境。该组件采用苹果科技风格设计,支持多厂商PLC硬件,具有直观的界面和丰富的功能。 功能特点 多语…

内网和外网怎么互通?外网访问内网的几种简单方式

在企业或家庭网络中,经常会遇到不同内网环境下网络互通问题。例如,当公司本地局域网内有个办公OA网站,在办公室内电脑上网可以登录使用,但在家带宽下就无法直接通信访问到。这就需要我们采取一些实用的内外网互通技巧来解决这个问…

使用大语言模型进行机器人规划(Robot planning with LLMs)

李升伟 编译 长期规划在机器人学领域可以从经典控制方法与大型语言模型在现实世界知识能力的结合中获益。 在20世纪80年代,机器人学和人工智能(AI)领域的专家提出了莫雷奇悖论,观察到人类看似简单的涉及移动和感知的任务&#x…

【计算机视觉】OpenCV实战项目: opencv-text-deskew:实时文本图像校正

opencv-text-deskew:基于OpenCV的实时文本图像校正 一、项目概述与技术背景1.1 核心功能与创新点1.2 技术指标对比1.3 技术演进路线 二、环境配置与算法原理2.1 硬件要求2.2 软件部署2.3 核心算法流程 三、核心算法解析3.1 文本区域定位3.2 角度检测优化3.3 仿射变换…

可视化图解算法33:判断是不是平衡二叉树

1. 题目 描述 输入一棵节点数为 n 的二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质&#xff1…

【Linux网络】应用层自定义协议与序列化

应用层自定义协议与序列化 应用层 我们程序员写的一个个解决我们实际问题,满足我们日常需求的网络程序,都是在应用层. 协议是一种"约定".Socket的接口,在读写数据时,都是按"字符串"的方式来发送接收的.如果我们要传输一些"结构化的数据"怎么办…

MySQL + Elasticsearch:为什么要使用ES,使用场景与架构设计详解

MySQL Elasticsearch:为什么要使用ES,使用场景与架构设计详解 前言一、MySQL Elasticsearch的背景与需求1.1 为什么要使用Elasticsearch(ES)?1.2 为什么MySQL在某些场景下不足以满足需求?1.3 MySQL Elas…

PPL困惑度的计算

1. 公式 PPL(Perplexity)困惑度 是自然语言处理(NLP)中常用的评估语言模型(Language Model)性能的指标。PPL 用于衡量语言模型对语言序列的预测能力,数值越小,说明模型的预测能力越…

MegaCLI Raid管理工具

整理在CentOS 7.9和Ubuntu 24.04上,MegaCLI 工具的安装与常用命令。 1. 参考 下载和安装MegaCLI工具 MegaCli RAID管理工具 Megacli 批量磁盘巡检 ubuntu24.04 No such file libncursesw.so.5 dell服务器硬盘的状态变成外来(foreign)命…

HTML9:页面结构分析

页面结构分析 元素名描述header标题头部区域的内容(用于页面或页面中的一块区域)footer标记脚部区域的内容(用于整个页面或页面的一块区域)sectionWeb页面的一块独立区域article独立的文章内容aside相关的内容或应用(…

分布式处理架构

分布式处理架构是一种将计算任务分散到多台计算机或服务器上协同完成的系统设计方法。这种架构通过将工作负载分配到多个节点(可以是物理机、虚拟机或容器)来提高性能、可靠性和可扩展性。下面我将从多个角度详细解释这一概念: 分布式架构的…