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

news2024/11/25 1:45:57

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

文章目录

  • 前言
  • 1. 基本撒点
    • 1.1 Landscape上撒点
    • 1.2 使用射线检测在地表面撒点
    • 1.3 使用曲线撒点
      • 1.3.1 沿曲线撒点
      • 1.3.2 在闭合曲线内部撒点
    • 1.4 在StaticMesh表面撒点
  • 2. 进阶撒点
    • 2.1 在闭合曲线内部放射状撒点
    • 2.2 在Mesh表面沿指定方向撒点

前言

程序化内容生成(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)

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

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

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

相关文章

MedCalc v22.009 医学ROC曲线统计分析软详细图文教程

简介 MedCalc是一款医学 ROC 曲线统计软件,用于ROC曲线分析的参考软件,医学工作者设计的医学计算器,功能齐全。它可以帮助医生快速作出普通的医学计算,从而对症下药。提供超过76种常用的规则和方法,包括:病…

《消失的她》豆瓣短评数据分析

《消失的她》豆瓣短评数据分析 文章目录 《消失的她》豆瓣短评数据分析一、前言二、数据加载和预处理三、探索性数据分析1、查看评论的评价分布2、查看评论点赞数的分布3、查看评论的地理分布 四、情感分析 一、前言 最近爆火的电影《消失的她》你们有没有去看过呢&#xff1f…

开源站点(jpress)部署

第三阶段基础 时 间:2023年7月5日 参加人:全班人员 内 容: 开源站点部署(jpress) 服务器设置;单台服务器,安装tomcat和mariadb 环境配置: 1、关闭防火墙 systemctl stop fir…

【大数据之Hive】二十、Hive之调优相关配置及Explain查看执行计划

1 Yarn资源配置 需要调整Yarn的参数与CPU、内存等资源有关 (1)yarn.nodemanager.resource.memory-mb   设置一个NodeManager节点分配给容器Container使用的内存,取决于NodeManager所在节点的总内存容量和该节点运行的其他服务的数量&#x…

搭建高性能数据库集群之二:MySQL读写分离(基于mycat2-1.22)

一、概述 读写分离是常见的一种数据库架构,一般是由 1 主多从构成,特殊场景下也会存在多主多从的架构。 无论哪一种架构,对于应用程序来说都是多个数据源,增加了代码的复杂性。如果配合 mycat,则可以实现屏蔽数据库复…

【C++】深入剖析vector

好久不见~让大家久等啦~ 本期让我们来揭开vector的面纱,看看它底层是怎么实现的~ 目录 一、STL定义vector的源码分析: 二、vector的模拟实现 2.1 vector框架的搭建(一些简单功能函数的实现) 2.2 迭代器失效问题 2.2.1 实现i…

【Spring】SpringCloud Ribbon中的7种负载均衡策略!

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务…

个人总结:测试用例万能公式+常见例子(公式的运用)

前言 测试工程师面试的时候,有时候会当场考测试用例,毕竟这是测试工程师的基本功。 对于我来说,让我写测试用例会比让我直接说测试用例更好点。 直接嘴里说出来,容易逻辑混乱,给人一种想到啥说啥的感觉。 其实个人感…

MySQL学习基础篇(九)---子查询

MySQL学习基础篇(九)—子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。SQL 中子查询的使用大大增强了 SELECT查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出…

MySQL安装与部署

第一种方法:在线安装 配置一个安装yum源 Adding the MySQL Yum Repository 可以手动配置yum源,baseurl指向国内镜像源地址,比如清华、中科大。 Installing MySQL Starting the MySQL Server: 查询临时登录密码 修改数据库密码…

CTFHub XSS DOM反射 WriteUp

前言:本文需要注册一个xss平台,以接收xss反弹回来的数据,请自己在互联网上寻找合适的xss平台 1. 构造闭合语句 根据题目提示,判断网站存在DOM xss漏洞 查看页面源代码,发现关键位置,其中CTFHub is very n…

【揭秘Vue核心】深入解析Object.defineProperty和Proxy的区别,让你秒懂!

问题:Object.difineProperty 和 proxy 有什么区别? Object.defineProperty 和 Proxy 是用于实现响应式数据的两种不同方式。 Object.defineProperty Object.defineProperty 通过直接修改对象的属性描述符来实现数据的劫持。Vue 2.x 中就是通过 Objec…

vscode 之 工作区的应用(解决vue2插件vetur、vue3插件volar禁用启用问题)

目录 前言创建工作区添加文件夹到工作区为当前打开的工作区指定特定环境工作区删除文件夹如何切换工作区 前言 工作区???为什么要工作区??? 首先工作区简单理解就是vscode工作时的区域、范围; 延…

如何正确的安装MySQL

1. 使用rpm包在线安装 1.1 确认自己电脑版本(linux) [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)ps:本次安装采用的系统为Centos 7.9 所使用的mysql为5.7 1.2 下载rpm包 下载地址 https://dev.mysql.com/downloads/mysql/ ps: 自己…

初识树莓派:强大功能与创造力的结合

目录 树莓派4B简介: 树莓派系统镜像下载: 树莓派4B简介: 树莓派4B是一款功能强大且受欢迎的单板计算机,由树莓派基金会开发。作为树莓派系列的最新版本,4B提供了许多令人兴奋的特性和改进,使其成为教育、创…

SSM简单项目遇到的几个问题(最后一个问题,虽然能运行,但是我找不出问题出在哪里)

这几个问题,干扰了我很长时间。 主要因为书本的例子,是通过controller层返回到jsp层。但是,最后一个SSM项目,它用的是controller返回信息给Service层,再由Service层返回Jsp层。 实训:编写一个模糊查询姓名…

【Java基础教程】(三)程序概念篇 · 上:探索Java编程基础,注释、标识符、关键字、数据类型~

Java基础教程之程序概念 上 本节学习目标1️⃣ Java中的注释2️⃣ 标识符3️⃣ 关键字4️⃣ 数据类型4.1 整型🔍 什么是变量?什么是常量?🔍关于数据类型转换的规则? 4.2 浮点数🔍关于Java的计算的缺陷 4.3…

chatGPT写综述

文献是任何学术研究的基础,但搜集和整合众多的信息,写成一篇健全的文献综述却是一项艰巨的任务。随着人工智能技术的发展,大型预训练语言模型(LM),如OpenAI的ChatGPT变得越来越流行。本文将探讨如何使用Cha…

K8S的概念和基本应用

学习视频:Kubernetes基本概念和应用_哔哩哔哩_bilibili 零 . 架构概览 master节点:管理调度集群资源,一般为多节点构成,可以是物理机,也可以是虚拟机。worker节点:资源的提供者,一般为多节点构…

沟通的层次模型

沟通的层次模型 根据沟通的倾向性将沟通划分为五个层次,分别是情绪、感受、想法、态度和事实。 模型介绍 沟通的层次 第5层:沟通情绪-带着强烈情绪表达,尤其经常使用这些字眼:“总是”、“每次都”第4层:沟通感受-不…