Origin
mp.weixin.qq.com
Tags
简悦
项目
收藏夹
创建时间
收藏类型
Cubox 深度链接
更新时间
原链接
描述
------------------------------------------系统要求----------------------------------------- 管理大型世界,以及运行虚幻5.1所需的硬件。Massive Worlds工具包的主要要求是系统内存和CPU能力,在某种程度上是GFX内存。 推荐的规格因您要制作的世界地图的大小以及此地图的分辨率而异。 有关系统规格的重要说明: - 32 GB 内存: 建议最大:6 MpP 地形分辨率下为 6x1 公里,12 MpP 时为 12x2 公里。 最大:8 MpP 地形分辨率下为 8x1 公里,或 16 MpP 时为 16x2 公里。 - 64 GB 内存: 建议最大:12 MpP 地形分辨率下为 12x1 公里,或 24 MpP 时为 24x2 公里。 最大值:16 MpP 地形分辨率下为 16x1 公里,或 32 MpP 时为 32x2 公里。
▲查看合集▲
今天是 2023 年 04 月 28 日 星期五
文字: 8446 图: 52 预计阅读 22 分
本期笔记分享
1. 首先让我们回顾一下这个庞大世界的工具包到底是什么
2. 路线图和反馈
3. 获取和安装工具包
4. 入门 - 复习一些关于虚幻的流代理景观和编辑图层
5. 工具集概述 - 示例文件和 HDA
6. 让我们创建一个巨大的世界
首先什么是巨大的世界工具集,Massive Worlds 工具集是一个 Houdini 基于开放世界的框架在虚幻引擎 5 中构建。这基本上意味着为你提供了在虚幻中创造风景的能力,让 Houdini 编辑它们然后把它们带回虚幻
有几种不同的工具和这些工具基本上相互补充其他的他们相互链接,他们也可以使用 Houdini 高度现场管道,他们完成了在虚幻的风景格式和 Houdini 的高度之间转换
至于工具集在这里做什么,一个小例子例如:这里我有一些道路踏入我的地形我可以申请不同的材料层
然后当我完成后我可以渲染出来这只是其中的一小部分管道,我有能力指定一个我的缓存文件夹按渲染。然后工具就会去渲染出一些瓷砖只需几分钟
我们就会拥有所有我们想带回来的瓷砖,进入虚幻我们可以导入这些。然后我们可以将它们直接应用到我们的地形
#为什么我们要创建主工具包
我创建了 Massive Worlds 工具包来解决问题
- Unreal 和 Houdini 引擎在不断发展
- Houdini 引擎目前不支持流媒体代理
- Houdini 引擎只创建,但不更新景观
- Houdini 需要将景观插入工具才能看到它
- 大规模景观的内存负载迅速超过任何 PC(内存不足)
#为了解决这个问题,我提出了一个解决方案
- 用于开放世界建筑数据管理的全新 Houdini Centric 管道
- Unreal 和 Houdini 之间的双向、非破坏性管道
- Houdini 的外部化数据
- 为工具加载地形数据时可管理的内存要求
- 快速 , 多功能 , 程序化
让我们看一下路线图工具包目前包含的内容
- 首先就像我提到的我们有一个双向无损管道 Houdini 和 unreal 这意味着我们可以发送景观数据,如编辑层和材料层和以最小的数据丢失,这意味着,来自虚幻的高度场,即 16 位灰度高度图,可以传输到 Houdini 在 Houdini 中编辑,然后传输回 Unreal 或者我们可以在 Unreal 中编辑内容,然后将更改带回 Houdini Plus,因为我们可以使用编辑图层,我们可以将某些类型的编辑(例如程序编辑和手动编辑)委托给特定图层,以确保我们不会遇到任何人覆盖我们的程序结果或我们的程序结果现在与我们的手动工作混淆的问题
为了方便这一点,我还创建了几个高级的用户友好的高度图和材料冲压节点直接与 Houdini 集成高度场工作流程,所以这些节点具有高级功能例如衰减选项以及合成选项虚幻混合材质层
接下来,我们有了递归探路器和相邻节点,它们能够使用逼真的斜坡敏感寻路算法在地形上漫游,它非常适合道路建设,因为它可以在地形上形成 Z 字形和良好的路径,非常适合道路或小路
最后我们有了骑行编辑器资产,这个工具结合了几个我刚刚的其他寻路资产,它让我们能够交互式地绘制和编辑我们的道路。然后将它们保存下来,以交互方式逐步扩展我们的道路网络,并且因为它使用外部缓存,所以无论我们在虚幻引擎还是 Houdini 中使用它,我们的数据都将始终更新
#接下来我要快速讨论我的一些计划工具集
- 我计划添加的处理功能,我可以在其中获取作为寻路结果一部分的原始曲线并清理它们,这样我们就可以在世界上创造出更漂亮的道路,现在这个研讨会中已经有一些东西可以用来做这件事了,但我将这些转弯设置为一个适当的资产,可以轻松配置管理
- 接下来我想创建一个基于 tile 的实例化管理系统,这样我们就可以在我们的地方放置植被或岩石世界,然后把它分成瓷砖缓存它们可以很容易地加载和更新
- 我也想做几个隧道和 Bridge tools 简单的工具,将允许我们使用道路网络
- 我们精心制作,最后我也是考虑创建几个额外的程序地形标记,可以说山脉或山谷的东西也许是什么,或者河流基本上更像是塑造我们地形的通用工具
#但让我们继续谈谈你如何才能真正得到大世界工具包和工程文件
我已为你下载好了后台私信回复:大世界工具集(只有演讲工程文件)
安装:
所以首先我想快速谈谈普通引擎中的两件事,是关卡流媒体代理和编辑图层
#景观演员
简单地形对象,包含 1 组高度图最多可容纳 8k 像素地形
用于使用 Levels 流式输入 / 输出(但这在启用了世界分区的地图中不再受支持)
平铺时,一次只能编辑一个 “地形”,并且平铺具有接缝
胡迪尼引擎可以产生这些景观,但总是会从头开始再生
不使用 World Partition 流入 / 流出
(注释:如果我们谈论老式的地形,在旧版本的虚幻中发现标准的地形基本上是一个简单的地形对象,它包含一组高达 8K 像素的地形图,它不会真的比这个大这是一个硬性限制,那么这曾经适用于关卡流式输入和输出平铺使用旧的世界合成系统在这不再受支持。现在当你平铺这些地形时,你一次只能编辑一个地形 Actors,在平铺之间,你通常会有某种接缝你必须重叠他们,看起来有点糟糕——这不是最好的工作流程)所以这是旧方法)
让我们去新的,所以关卡流媒体代理基本上是一个景观演员
#流媒体代理景观演员
- Parent Landscape Object 包含 Streaming Proxies
Streaming Proxy tiles 包含 1 组 Heightmaps EACH
- World Partition 动态地将这些输入 / 输出
- 完全独立于规模
但是,加载的图块仍然需要足够的系统内存才能查看
- 您可以一次无接缝地编辑整个地图
- HAPL 目前无法生成流媒体代理环境
但是,对 Houdini 20 的支持正在进行中
(注释:包含多个流媒体代理其中的子组件这些一起形成了一个虚拟的纹理高度贴图,封装了我们的整个地形。所以我基本上是在谈论这个我们有一个大景观从多个不同的瓷砖中,现在流媒体代理景观充当所有的,这意味着流媒体代理景观属于相同的景观,但它们存储为风景中的单独文件目的,现在我确实想避免走得太深进入这个话题。但基本上会分区系统让你流进流出,这些动态地流式传输代理对象被装入或取出取决于到玩家的距离,如果他们是太远了,太远了,比如说我站在这里,后面的瓦片在我的范围之外,它们将被卸载,取而代之的是系统将用 HLOD 替换它们)
现在主要的好处是,这意味着我们可以使我们的地形完全独立于技术,并且我们可以在技术上使其尽可能大,加载的瓦片仍然需要足够的内存来正确查看虚拟纹理高度图,仍然需要加载到内存中我不是确定这是否已完全优化
然而,不管怎样,我们都可以无缝地编辑我们的流媒体代理环境,我们可以编辑地形的任何部分,我们只需要在这里选择主要的景观对象。最后尽管很高兴,但无法生成流媒体代理风景,这个时候就像我之前提到的据称支持正在路上 Houdini 20。所以它即将到来,我计划在它发生时将其与工具集集成
然后第二,我们有了虚幻的编辑现在编辑层基本上可以作为一种方式添加额外的数据层,分层高度图数据到我们的景观,所以我们可以编辑的特定组件景观独立现在这意味着如果我们有一个标准空编辑图层景观此时不再是默认值在虚幻 5.1 中我们只有一个高度图描述我们的地形,但这意味着如果我们编辑它还添加了这个地形,如果我们再把它带回 Houdini 然后带回来我们在 unreal 和 Houdini 之间徘徊基本上是不断积累数据进高度 Map 没办法撤消它所以这是一个非常具有破坏性的工作流程
但是现在有了编辑层我们确实有能力继续努力分开的层,这意味着我们可以保持我们所有的 Houdini 相关地形冲压到专用程序层任何其他改变我们进入我们的地形,然后我们可以继续其他层例如手动绘画或保留原始地形基础层完全原始和完好无损,所以我们总能抹去我们的改变并回到那个状态,现在在这里你可以看到例如:原来的地形是看起来像这样 (左上角深灰色) 这里的这些灰色纹理基本上是附加层,它们堆叠在彼此之上所以这个得到这个一个添加到它,然后这个被添加到它,然后那个被添加到它。并取决于他们如何添加或从我们得到的前一层减去一个新的结果。所以如果我们的程序数据添加和这里减去一些细节
详情在这里 Unreal 编辑层在加法中工作他们允许你堆叠的方法信息相互叠加等等,左边这里我有基本高度图这个可以来自 World Machine 或 Gaea 或者它可能是在 Houdini 是对的,但我们把它带进了 unreal,那是我们的主要地形现在这个从 0 到 1
- 所以地图底部到地图顶部高度贴图不能降低或升高,比起那个来说然后在旁边我们有这 post procedural layer(3) 堆叠在上面的程序层那个。它有一些额外的变化所以如果我们把这个添加到那个地图我们得到这个结果
- 如果我们说我们在某个地方添加的房子,那么这可能非常有用,所以如果我们想在一个非常特定的位置放置一个房子。并且我们想要一些非常定制的雕刻地形在那里,我们可以将它添加到例如微的后期程序层。例如手工制作现在这种加法方法有一个问题,如果我们开始在第一层和最后一层之间添加数据,它会累积并偏移
所以在这种情况下,我会进行一些程序编辑,比如说这条深蓝色的线,这是我们应用的一些程序信息看起来像这样结果,我们的地形现在形状像那样不再是这条灰线,而是这个结果这里的颜色线。然而这确实意味着这所房子现在在地下,你知道我们刚刚把房子埋了,因为我们在这里的手动更改被抵消了,现在我的工具中确实内置了一个合成系统,允许我们解决这些类型的冲突
这些类型的冲突,因此我们可以指示该工具,保持我们手工绘制的结果,最大结果,最小结果。我们甚至可以让它擦除任何程序如果已经进行了手动更改则更改展示这样我们就可以保存或在静止时手动制作结果应用我们的程序
这意味着这个过程并导出 tiles HDA 主要核心资产,这使我们能够导入和导出我们的虚幻磁贴信息往返 Houdini 这个包含一个合成器,我们可以设置每一层,如果前一层是应该响应使用某种程序更新改变
#了解下单个工具包,然后我们开始创造我们的景观
- 我们拥有的第一个资产是对象级资产,这一个是巨大的世界瓦片生成,你可以在工作场景的对象级找到它,这个可以生成指定景观大小的空白瓦片,你可以以此为起点,在不真实的环境中创建你的景观。我们稍后会完成,所以我不想对其中任何一个做太详细,但基本上这个是一个开始
- 然后我们有提取的虚幻景观和这里的导出节点或者 PNET 和花生节点,可以让我们把这个节点使用 Houdini 引擎提取出来的文件它将它提取到缓存文件中,然后这个可以加载那个然后允许其他工具使用它,例如在地形中嵌入特征然后它也可以用作网络中的最后一个节点将信息提取回瓦片缓存因此这是系统的主要节点
- 以预设像素大小生成空白图块以在 Unreal 中创建世界分区景观,适合与其他工具一起使用
- 该工具将基于 Unreal StreamingProxy 的 Landscape 提取到 Cache 文件中,供其他 MW 工具使用
- Massive Worldstoolset 的核心资产。PNET 充当 Unreal Landscape 数据的导入器、合成器和导出器
现在为了加载我们的瓷砖为了利用它们,我们有负载层节点一旦我们使用,然后我们可以加载这些 PNET 节点层抓住高度字段,在我们的景观按需加载或者我们可以提供另一块几何图形。通过它提取属性到几何形状就像一条曲线,我们可以提取高度字段的高度和然后设置曲线高度然后要求操纵我们的景观,我们有这两个节点的加权高度转移和混合材料转移。这两个让我们基本上将几个不同的特征标记到我们的景观,例如高度图或更新我们的材料之一,然后自动正确混合自动应用权重混合我们将详细介绍所有这些
- 此实用程序资产按需加载存储在 Tile 缓存中的图层信息可以将数据传输到输入几何体并按需输出高度图
- 通过用多边形形状标记来修改 PNET HDA 提供的活动 EditLayer 的高度
- 通过使用遮罩层对其进行标记来修改 PNET HDA 提供的地形材质层
这里我们有寻路节点所以这些是主要节点探路者我们有创建的加权网格供探路者使用的网格允许我们配置的简单资产我们的探路者路径,然后我们拥有探路者本身
- 为 MW Recursive Pathfinder 资源生成各向同性网格,并可以选择将其导出到缓存文件
- 使用与 MW Recursive Pathfinder 兼容的关键属性配置航路点曲线
- 一种递归寻路资产,支持倾斜和转弯偏置,而后续路径可以磁化到现有路径
最后我们有编辑器就像我提到的编辑器结合其他一些资产合二为一,这让我们可以创建一个交互过程。最后还有我的工作室这个可以加载的小资产,您可以加载道路的高度图我们使用探路者创建的然后为我们制造一些障碍地形现在我有更多的工具来了但是这个是目前可用的现在的工具集
- 该工具结合了多个 MW 资产来创建道路样条的交互式编辑器
- 在 Unreal 中产生障碍的演示资产。使用高度图和道路缓存文件
#最后一件事
这基本上就是我们想根据我们可用的内存量来限制地图的大小,这当然会因人而异,如果你有 32 GB 的内存,那么你应该制作的最大地图可能是是 8 乘 8 公里米 / 像素精度,这基本上意味着如果你知道我们有一个 8 乘 8 公里的地形,一个像素是一米那是你能出去的最大值一个 32 GB 的内存系统,如果你扩大你的地形。然后你去比如说每像素 2 米你可以去可能最多 16 x 16 好吧,但是你的分辨率会降低地形
#大世界地形工程演示
将工程文件中 HDA 拖拽到 UE 场景中,基本上它是一个完全交互式的地图
现在这张地图包含各种道路我们这里有很多细节,例如我们找到了自己的路草地很好排除大部分是基于材料
创建地形现在有一个问题,然而在 5.1 中,如果不首先在地形中创建一个 8 乘 8 公里的区域,然后使用 add 将其添加到其中,至少我们无法创建一个大于 8 乘 8 千米的景观。实际上我个人更喜欢使用 tiles 来做这件事,这就是为什么我在 Houdini 这个节点创建了 tile 资产,然后使用 import 将其导入 unreal。从文件选项导入可以导入任何大小的地形都可以只要我们拥有的瓷砖已正确命名,他们都在自己的文件夹里景观瓷砖需要有自己指定的文件夹
然后接下来让我们决定我们的地图有多大,将会是什么决议我们要使用的瓷砖,现在过去 Unreal 曾经使用 tile 比如说 1009 像素或者 504 像素的大小像素,现在不是这样了在将分区瓷砖中,我们有不同的瓷砖尺寸它们都是 510 的倍数。所以在我们的例子中风景将是 1020 如果你想制作更大的瓷砖,你可以也与 2040 一起使用,但在我们的例子中让我们坚持这个
然后你可以设置你有多少块现在想要这个工作坊你有 64GB 的内存,你可以坚持 6 个如果你有 32 个,可以减少 8 个 4 乘 6 六只是为了确保你的系统不会耗尽内存等嗯,你最多可以达到 6 个让我们保持安全,确保我们期间没有任何问题
设定灰度图
然后点击渲染
到我们指定的文件夹查看渲染的图块
然后转到景观编辑器去管理,点击新建从文件导入
01 - 然后我们想要比如我们想要编辑层启用
02 - 我们不想翻转 y 轴
03 - 目前不支持修改网格尺寸将保持它 2 个
04 - 然后我们可以导入我们的高度字段,找到文件夹然后选择一个文件
我们会看到一个线框代表瓷砖现在有组件,我们不在乎是哪一个瓦片
只要我们点击那个文件夹确保我们只有瓷砖,我们想要加载到这个特定的文件夹,如果里面还有其他东西它不会知道我们的大小景观是因为它基本上只是检查纹理的大小,然后坐标确定我们的景观会有多大在这种情况下,它将创建一个 6120 通过 8160 像素地形
接下来我们要指定我们使用什么材料(自动化材质 略!)
设置好以后点击导入;然后保存
我要做的第一件事是更新我的图层因为我不只是想要一层我们启用了编辑层,我们可以实际上有不止一个,在这里将第一层重命名为基层,然后新建其他层,现在只是为了给你一个快速的概述我打算用这个做什么
- 基础层是我们所在的层将我们的主要地形高度图存储在这是我们不想做的基础层触摸这个来雕刻高度锁定我的层 (gaeamachine) 创建
- Macrolayer 就是我们手动进行主要地形变化的地方
- Procedura 使我们的程序层,我们将编写程序的图层在这里开辟我们的道路的变化也许我们想做的任何其他冲压但将要发生的事情一直更换
- 最后我们有了我们的微层,微层是我们的艺术家所在的地方将要进行微雕你知道喜欢改变周围的地形房子就像做一些小调整
但基本上每一层图层的高度应该越来越小,与前一层的区别一般来说基础层可以容纳整个高度图的范围从 0 到在这种情况下说 1024 高,但宏观程序和微观层是添加剂,它们只能添加或减去该高度图的一半,所以如果地形是 1024 High 然后这些三层只能加减一半那 512。
接下来,让我们去我们的 HDA 文件夹
所以现在在地图的中心我们的工具已经出现了
接下来设置此数组的高度值,因为我们知道我们的地形在比例为 200,所以我们想在这里设置也为 200,因此该工具知道地形将达到 1024 米高,接下来我们要设置我们的每像素。现在我们的精度和我们的瓷砖尺寸导出了,我们正在使用的瓷砖 1020 像素嗯,我们想确保我们设置,如果我们现在在这里也是正确的想要一米像素精度大约一米,我们可以使用我们的默认值如果你想有双倍的设置 pixel Precision 基本上还是比较高的风景的分辨率更多细节你可以使用这个,但当然会成倍地增加你的内存负荷,或者如果你想少用内存或有一个更大的景观您可以使用的相同内存量 2 米或 4 米像素精度和然后该工具会给你取入时对应的值
景观至于瓷砖尺寸,我们使用 1000 米大小的瓷砖,所以这就是我们在这里设置的好的,现在让我们继续并插入
我们的风景我要去景观输入去到景观,选择我们要输入我们的风景最上面的对象,这样可以加载全部才可以让 houdini 看到
加载后适当地让我进入全屏,所以你可以看到我们现在有一个大蓝我们基本上围绕我们的地形勾勒出轮廓,想要确保蓝色轮廓和红色轮廓对齐红色区域需要在蓝色内部区域,通常红色区域表示我们地形的高度但如果有高度图中没有高度它只是认为它是一个灰度值,所以它选择中间值,这就是为什么认为现在的地形是这样的,从虚幻中导入地形,直到我们实际上在这方面有一定的高度地形
接下来我们有来自地形我们可以在这里看到实际流媒体代理的分辨率景观,我们有瓷砖尺寸我们已经设置。然后在这里我们有我们的配置的数据,所以如果这一切都设置好了适当地
然后在第二部分的这里会告诉你确切的尺寸和您的地形必须具有的位置
设置地形导出位置与名称
点击保存现在我们应该输出一个文件
现在在这里你可以看到我们的风景导出文件夹,我们现在有这个缓存文件它现在是一个非常小的文件,因为我们的风景没有高度信息
我们可以在 PNET 工具将其导入 Houdini 和让我们继续生成地形
所以我们将从风景生成在这里然后再次输出,这样我们就可以带上它虚幻的然后在那之后,一旦我们有了我们就可以把它带回 Houdini 我们可以省下来一些文件
然后我们就可以开始了使用它建立道路网络
在这里我们有探路者设置原始形式,这里我们有编辑器使用这些相同节点的设置在内部
景观最后我们会处理这个这是输出,所以我们将加载在我们的地形中我们会加一些新的细节然后我们会导出新的瓷砖
从这开始我们详细演示这个过程是如何运作的
点击阅读原文:具体见作者视频【01:06:19】处开始演示
点击阅读原文观看视频版
- 坚持与您分享最有价值 “干货” 内容,本期分享就到这里,我们下期见!
往期推荐