虚幻引擎程序化资源生成框架PCG 之 常用撒点方法小结

2023-11-07

PCG真好玩,门槛很低,天花板很高

前言

程序化内容生成(PCG)的关键之一就是"撒点",因为只有把点撒到位,才能在期望的位置生成模型,本文简单总结一下PCG常用的撒点方法,如有遗漏欢迎大家补充,非常感谢!

1. 基本撒点

1.1 Landscape上撒点

可以通过Input节点中的Landscape引脚+Surface Sampler撒点,也可以通过Get Landscape Data+Surface Sampler撒点,后者更方便通过设置Actor FilterActor Selection来筛选指定的Landscape。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.2 使用射线检测在地表面撒点

上面的方法只能识别Landscape,如果我们在Landscape上放了一些Static Mesh,或者干脆没有Landscape,就用不了了。这时我们可以采用射线检测的方式在地面上撒点。

使用World Ray Hit Query节点,沿指定方向做射线检测,从而识别表面,由于World Ray Hit Query的运算量比较大,所以这个计算并不是实时的,如果移动了StaticMesh需要重新Clean Up再Generate。

在这里插入图片描述

在这里插入图片描述

World Ray Hit Query节点上可以设置射线检测的方向和通道。

在这里插入图片描述

1.3 使用曲线撒点

1.3.1 沿曲线撒点

在这里插入图片描述

在这里插入图片描述

1.3.2 在闭合曲线内部撒点

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.4 在StaticMesh表面撒点

StaticMesh表面撒点有两种方式:

  • Mesh To Points
  • Mesh Sampler

这两个节点功能上区别不大,前者是蓝图版本(已经标记为弃用),后者是C++版本,推荐使用后者。

在这里插入图片描述

Mesh Sampler的设置,这里的Static Mesh要和场景中的实际模型一致

在这里插入图片描述
Get Actor Data的设置,Mode要设置为Get Single Point这样获取到的是Mesh的原点

在这里插入图片描述

在这里插入图片描述

2. 进阶撒点

2.1 在闭合曲线内部放射状撒点

所谓放射状撒点就是点的Density在闭合曲线的中心最高,边缘最低(或者反之)

方法1

方法1很简单,就是使用Spline SamplerInterior Density Falloff Curve

在这里插入图片描述
在这里插入图片描述

需要注意的是,这种方式Density的分布基准是闭合曲线的中心,对于曲线范围比较狭长或者形状不规则的情况,最终效果往往不是很理想。有时候我们想以边缘作为Density的分布基准,于是就有了方法2.

在这里插入图片描述
方法2

再添加一个Spline Sampler设定为On Spline模式,用于获取曲线的边缘,然后使用Distance节点计算内部点和边缘的距离,注意这时要勾选Set Density,这样才能将计算结果赋值给Density

在这里插入图片描述

可以看到方法2的边缘宽度比较均匀

在这里插入图片描述

2.2 在Mesh表面沿指定方向撒点

添加一个Normal To Density节点,计算每个点的法线和给定方向(法线)的夹角,夹角越小Density越大
在这里插入图片描述

在这里插入图片描述
我们还可以修改基准法线的方向

在这里插入图片描述
比如改成(1,0,0)

在这里插入图片描述
这样我们就识别出了点在模型上的方位。

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

虚幻引擎程序化资源生成框架PCG 之 常用撒点方法小结 的相关文章

  • Unity 将图片做成预制体

    Unity 将图片做成预制体 刚导入Assets的图片是无法直接拖入场景中的 若我们想要将图片变成预制体 需要做一点转化 方法如下 选中想要转成预制体的图片 更改如下图 然后就可以将图片拖入场景中 进而拖进Assets里面制成预制体啦
  • unity期末大作业 搬运东西过河 益智游戏

    unity期末大作业 搬运东西过河 益智游戏 详细情况如下动态图 点我下载 https download csdn net download weixin 43474701 75859840
  • Unity飞船摄像机360度环绕(逐步完善)

    极简版 目标飞船 public Transform target 摄像机距离 public float distance 100 void Update float mouseX Input GetAxis Mouse X float mo
  • Cocos Creator 如何处理物理和碰撞检测?

    Cocos Creator 如何处理物理和碰撞检测 cocos creator 版本 v3 6 1 Cocos Creator 3 x 实现碰撞检测 Cocos Creator 通过使用物理引擎来处理物理和碰撞检测 Cocos Creato
  • Unity震撼首发,最新一代高清数字人短片《Enemies》

    我们屡获殊荣的 Demo 团队又一次在 异教徒 The Heretic 累积了超 400 万观众 的基础上取得了进展 推出了 Enemies 一支全新的电影式预告片 以 4K 分辨率的实时渲染来展示眼睛 头发和皮肤渲染等方面的重大突破 创建
  • unity木船模型,古代帆船模型,古船

    unity木船模型 模型如下图所示 下载链接在文末 点我下载资源 https download csdn net download weixin 43474701 64876331
  • Unity笔记:修改代码执行的默认打开方式

    使用 External Tools 偏好设置可设置用于编写脚本 处理图像和进行源代码控制的外部应用程序 External Script Editor 选择 Unity 应使用哪个应用程序来打开脚本文件 Unity 会自动将正确的参数传递给内
  • Unity小游戏-勇闯小岛(PC) 项目展示+完整项目源码

    游戏录像 游戏玩法 主角可以变换四种状态 玩家通过四种状态特有的技能来击败眼前的怪物闯关 切换到棕色 有一个一直围绕自己旋转的大摆斧攻击敌人 切换到绿色 可以抵挡一切的投掷物 但是无法攻击敌人 切换到粉色 切换瞬间可以发出飞镖 切换到蓝色
  • PicoNeo3开发VR——小白教程

    不断更新中 欢迎大佬们来指导 纠错 导入PicoVRSDK 1 新创一个Unity工程 Unity版本最好选择2019 4以上版本 以及需配置好安卓环境 然后导入官方picoVRSDK 2 渲染设置 Graphics APIs暂不支持Vul
  • HTML5游戏实战(2):90行代码实现捕鱼达人

    捕鱼达人是一款非常流行的游戏 几年里赚取了数以千万的收入 这里借用它来介绍一下用Gamebuilder CanTK开发游戏的方法 其实赚钱的游戏未必技术就很难 今天我们就仅用90来行代码来实现这个游戏 CanTK Canvas ToolKi
  • unity game界面按下play会不断闪烁,按下暂停键(pause)或者中止/下一步(step),game界面的画面会接连变化

    没找到答案 改了两个下午的程序 改完还是这样 后来发现是FixedUpdate Update与OnDrawGizmos的问题 OnDrawGizmos是每帧都会绘制 用FixedUpdate理所当然就那啥了 分析的时候 就突然想到是不是这俩
  • 游戏引擎:打造梦幻游戏世界的秘密武器

    介绍 游戏引擎是游戏开发中不可或缺的工具 它为开发者提供了构建游戏世界所需的各种功能和工具 本文将介绍游戏引擎的概念 使用方法以及一个完整的游戏项目示例 游戏引擎的概念 游戏引擎是一种软件框架 它提供了游戏开发所需的各种功能和工具 包括图形
  • Unity 资源加载卸载过程

    什么时候才是UnusedAssets 看一个例子 Object obj Resources Load MyPrefab GameObject instance Instantiate obj as GameObject Destroy in
  • unity制作一个可以自由滑动收缩的历史记录功能。

    公司在做一款模拟经营类的卖车游戏 需要一个简单的历史记录功能 放在左上角 记录最近20条的收入 支出记录 超过2秒不动则收起 收起时展示最近的一个消息记录 用到的组件是ScrollView 使用方法可以参考我写过的一篇博客 ScrollVi
  • 1.17 从0开始学习Unity游戏开发--场景切换

    前面的所有文章我们都在一个固定的游戏场景内进行开发 在最开始介绍场景这个概念的时候就已经提及 这个场景可以是一张地图 或者是一个对战房间等等 所以显然这个场景可以有多个 并且可以从一个场景切换到另外一个场景 那么在Unity中如何进行场景切
  • Unity 粒子特效、材质发光 HDR ShaderGraph图文教程[完成lit发光设置]

    效果如图 准备工作 在hdr模式下 关闭Directional Light 相机设置 移动球挂一个点光源作为子节点 设置自行调节 0 创建移动球的材质及shader shader gt 在Project Create Shader Grap
  • Unity之获取游戏物体对象或组件的几个方法

    文章目录 前言 通过物体名称获取对象 GameObject Find Transform Find 通过物体标签获取对象 GameObject FindWithTag GameObject FindGameObjectWithTag Gam
  • Unity学习笔记(一)—— 基础知识

    一 基础知识 1 开发团队组成 2 unity特点 图形界面 所见即所得 入门简单 支持C 比OC C 更友好 js 国内外资源丰富 因为使用的人多 跨平台性好 PC端 移动端等 对VR AR的支持最完善 3 成功案例 游戏 炉石传说 神庙
  • mixamo根动画导入UE5问题:滑铲

    最近想做一个跑酷游戏 从mixamo下载滑铲动作后 出了很多动画的问题 花了两周时间 终于是把所有的问题基本上都解决了 常见问题 1 动画序列 人物不移动 2 动画序列 人物移动朝向错误 3 蒙太奇 人物移动后会被拉回 4 蒙太奇 动画移动
  • Unity中URP下的指数雾

    文章目录 前言 一 指数雾 雾效因子 1 FOG EXP 2 FOG EXP2 二 MixFog 1 ComputeFogIntensity 雾效强度计算 2 lerp fogColor fragColor fogIntensity 雾效颜

随机推荐

  • 动态规划——JavaScript

    目录 什么是动态规划 怎么用动态规划 动态规划经典例题 斐波那契数 题目描述 思路 代码 爬楼梯 题目描述 思路 代码 不同路径 题目描述 思路 例题 不同路径 打家劫舍 打家劫舍 买卖股票的最佳时期 买卖股票的最佳时期 使用最小花费爬楼梯
  • 【STM32】keil环境下移植cJSON

    前言 由于工作需要 需要在STM32上使用Json 所以把一个JSON库移植到了STM32 keil MDK 实际上keil已经有了JSON扩展包 Jansson 只需要从keil官网上下载JSON Pack再导入就行 有兴趣的可以看这篇文
  • SQLi Labs Lesson22

    Lesson 22 Cookie Injection base64 encoded Double quotes 用admin账号登陆后 查看cookie 发现cookie为 YWRtaW4 有了上一节的经验 admin的base64编码为
  • 接口型模式之Bridge(桥接)模式

    1 如果你期望将实现与抽象相分离以便二者独立演化 可使用Bridge 桥接 模式 2 举例 抽象平台 public abstract class ImpLog public abstract void execute String msg
  • google v8 编译 运行遇到的问题

    环境 window os window sdk 10 vs2017 方法 官网提供的方法 https github com v8 v8 wiki Building from Source 问题1 cmd中执行命令时 tools dev v8
  • mysql_pycharm连接虚拟机上的mysql

    虚拟机上的系统是ubuntu 16 04 LTS 关于虚拟机安装mysql 5 7 参考以下的连接 Ubuntu安装Mysql 5 7 安装成功之后 执行赋予局域网可以访问虚拟机上的mysql mysql gt GRANT ALL PRIV
  • 网站工作原理,你搞懂了吗?

    网站工作原理 你搞懂了吗 网站工作原理 输入网站地址 按下回车会发生啥 1 DNS解析 2 TCP连接 2 1 TCP介绍 3 发送HTTP请求 3 1 HTTPS协议 3 2 HTTPS过程 3 3 HTTP请求 4 服务器处理请求并返回
  • 用户多设备多账户同时在线场景、匿名用户行为同步到注册用户

    TOC随着移动设备的普及和社交媒体的发展 用户在多个设备上同时访问同一个应用成为了一种常见的现象 这些设备可能属于同一个用户 也可能属于不同的用户 而且有些用户可能没有注册账户 只是以匿名的方式访问应用 在这种多设备 多账户 匿名用户同时在
  • vue动态合并行

    这个 处理数据 将表格数组传入 在获取到数组时调用 getSpanArr data this spanArr for var i 0 i lt data length i if i 0 this spanArr push 1 空数组 用来记
  • Linux下生成patch和打patch

    通过diff工具生成补丁 patch工具打上补丁 在使用diff之前 你需要保留一份未修改过的源码 然后在其它地方修改源码的一份拷贝 diff对比这两份源码生成patch 修改过的源码必须保留原来的文件名 例如 如果你修改源码中的a c文件
  • chinesecalendar 模块判断节假日

    chinesecalendar是python 中判断date类型的日期是工作日 还是节假日 比较准确地模块 先安装该模块 pip install chinesecalendar 导入模块的用法如下 import datetime from
  • PowerShell 基本知识

    常见的 powershell 攻击工具 PowerSploit powershell 后期漏洞利用框架 常用于信息探测 特权提升 凭证窃取 持久化等操作 Nishang 基于 PowerShell 的渗透测试专用工具 集成了框架 脚本和各种
  • Android 自定义控件+下拉选择框实现

    自定义控件 下拉选择框实现 当系统自带的控件不能满足我们的需求 而我们又会经常使用到 这个时候我们就可以自定义控件 下拉框是我们在做项目中经常会需要用到的 上图就是一个自定义的控件 点击显示下拉框进行选择 pop view xml 自定义控
  • docker-compose 部署JavaWeb

    目录结构 1 迅雷提取上面tar文件包 里面有一个项目 别TM反编译我的项目 链接 https pan xunlei com s VNDqngi2KD6Go2SmYGZiAizjA1 pwd b2w5 提取码 b2w5 2 搭建Linux
  • linux后台启动seata,yearning

    1 yearning nohup Yearning run b 8 142 131 56 p 9000 gt opt yearning log yearning log 2 gt 1 2 seata nohup sh seata serve
  • Vue项目部署到Linux服务器

    首先用到一个软件为finalshell 下面是我的百度网盘文件 永久有效嗷 链接 https pan baidu com s 1fUPI1RtHwTsvbfqctO1WDw 提取码 ymme FinalShell 简介 FinalShell
  • mysql 主从 mysqldump_MySQL5.7基于mysqldump的主从复制

    1创建账号 创建用于复制的账号 GRANT REPLICATION SLAVE ON TO repl 192 168 1 IDENTIFIED BY PASSWORD repl4salve 创建用于监控的账号 grant replicati
  • javascript模块化理解(通俗易懂)

    http www ruanyifeng com blog 2012 10 javascript module html http www ruanyifeng com blog 2012 10 asynchronous module def
  • epoll多路复用-----epoll_create1()、epoll_ctl()、epoll_wait()

    include
  • 虚幻引擎程序化资源生成框架PCG 之 常用撒点方法小结

    PCG真好玩 门槛很低 天花板很高 文章目录 前言 1 基本撒点 1 1 Landscape上撒点 1 2 使用射线检测在地表面撒点 1 3 使用曲线撒点 1 3 1 沿曲线撒点 1 3 2 在闭合曲线内部撒点 1 4 在StaticMes