【推荐100个unity插件】基于节点的程序化无限地图生成器 —— MapMagic 2
文章目录
- 一、前言
- 二、完整的 MapMagic 2 资源包下载安装
- 三、快速入门
- 1、创建新的 MapMagic Graph 资产
- 2、创建 MapMagic 对象
- 3、打开编辑器窗口
- 四、图表窗口
- 1、Toolbar 工具栏
- 2、Nodes Window 节点窗口
- 3、节点窗口操作
- 五、右键菜单
- 1、Create Menu 创建菜单
- 2、创建菜单项
- 3、Generator menu 生成器菜单
- 4、组菜单
- 5、图表菜单
- 6、值菜单
- 六、图层
- 1、Add 添加:
- 2、Switch 切换:
- 3、Remove 移除:
- 4、Expand 展开:
- 5、Rename 重命名:
- 七、设置
- 1、Tiles 区块
- 2、Locks 锁定
- 3、Tiles Generation 区块生成
- 4、Tile Settings 区块设置
- 5、Outputs Settings 输出设置
- Height Output 高度输出
- Grass Output 草地输出
- Objects Output 对象输出
- 6、Terrain properties 地形属性
- 7、Trees, Details and Grass Properties 树木、细节和草地属性
- 8、Multithreading 多线程
- 八、Map Generators 地图生成器
- Initial generators 初始生成器
- 1、Constant 常量
- Output 输出
- Properties: 属性:
- 2、Import 导入
- Imported Map asset 导入地图资产
- Generator Properties: 生成器属性:
- 3、Noise 噪声生成器
- 应用场景:
- Inputs 输入:
- Output 输出:
- Properties属性:
- 4、SimpleForm 简单形状生成器
- 使用场景:
- 属性:
- 5、Simple Form 简单表单
- 6、Voronoi
- 7、Spot (new) 点(新)
- ModifiersModifiers 修饰符
- 1、Blend 混合生成器
- 使用场景:
- 属性
- 可用的混合算法
- 算法示例
- 常用场景总结
- 2、Blur 模糊生成器
- 输入
- 输出
- 属性
- 3、Cavity 凹凸生成器
- 属性
- 4、Contrast 对比度生成器
- 属性
- 6、Curve 曲线生成器
- 概述
- 操作示例
- 理解曲线原理
- 属性
- 7、Erosion 侵蚀生成器
- 概述
- 重要性能说明
- 属性
- 8、Sediment (new) 沉积物(新)
- 9、 Beach (new) 海滩(新)
- 10、Ledge (new) 岩礁(新)
- 11、Direction (new) 方向(新)
- 12、Levels 色阶生成器
- 概述
- 操作方式
- 与曲线生成器的比较
- 属性暴露
- 应用场景:
- 13、Mask 遮罩生成器
- 概述
- 与其他生成器的比较
- 属性
- 14、Normalize 归一化生成器
- 概述
- 工作原理
- 应用场景
- 输入
- 输出
- 属性
- 15、Slope 坡度生成器
- 概述
- 属性
- 16、Selector 选择器生成器
- 概述
- 过渡效果
- 应用范围
- 属性
- 17、Terrace 梯田生成器
- 概述
- 属性
- 18、Unity Curve Unity曲线生成器
- 概述
- 输入
- 属性
- 19、Parallax (new) 视差生成器(新)
- 概述
- 主要用途
- 核心参数
- Outputs 输出
- 1、Height 高度输出生成器
- 概述
- 输出生成器说明
- 输入
- 属性
- 2、Holes 孔洞输出生成器
- 概述
- 输入
- 属性
- 3、Textures 纹理输出生成器
- 概述
- 重要特性说明:
- 使用方法:
- 主要属性:
- 属性
- 4、Grass 草地输出生成器
- 概述
- 属性:
- 输出级别
- 6、MicroSplat 输出生成器
- 概述
- 属性:
- 高级属性:
- 输出级别
- 7、MegaSplat
- 8、CTS
- 9、VS Pro Maps VS Pro 地图
- 10、DirectTextures 直接纹理输出生成器
- 概述
- 用例
- 属性:
- 输出级别
- 11、DirectMatrices 直接矩阵输出生成器
- 概述
- 用例
- 直接矩阵持有者API
- 脚本示例
- 九、Objects Generators 对象生成器
- Initial generators 初始生成器
- 1、Positions 位置(`暂无介绍`)
- 2、Scatter 散布生成器
- 概述
- 属性:
- 高级标签:
- 3、Random 随机生成器
- 概述
- 应用场景:
- 输入:
- 属性:
- 4、GetByTag 按标签获取生成器
- 概述
- 应用场景:
- 属性:
- Modifiers 修饰符
- 1、Adjust 调整生成器
- 概述
- 属性:
- 2、Combine 合并
- 3、Floor 地面生成器
- 概述
- 应用场景:
- 属性:
- 5、Flatten 压平生成器
- 概述
- 输入:
- 属性:
- 6、Forest 森林生成器
- 概述
- 输入:
- 属性:
- 7、Mask 遮罩生成器
- 概述
- 属性:
- 8、Move (new) 移动(新)
- 9、Rarefy 稀释
- 10、Randomize 随机化
- 11、Split 分割
- 12、Stroke 描边
- 13、Spread 扩散
- 14、Stamp 印章
- 15、Slide 滑块
- 16、ShrinkScale (new) 缩放比例(新)
- Outputs 输出
- 十、Splines Generators 样条生成器
- 十一、Biomes 生物群落
- Biomes Set 生物群落集合
- Function 函数
- Whittaker 威特克
- Biome Mask 生物群落掩码
- 十二、Brush 刷
- Brush Inputs/Outputs 笔刷输入/输出
- Other 其他
- 十三、Maps Sets Generators 贴图集生成器
- 1、Add 添加(`暂无介绍`)
- 2、Pick 选取(`暂无介绍`)
- 3、Create 创建(`暂无介绍`)
- 4、Combine 合并(`暂无介绍`)
- 待续
- 专栏推荐
- 完结
一、前言
MapMagic 是一款基于节点的程序化无限游戏地图生成器。借助图形和节点工作流程,可在几分钟内创建任何大小的可玩且外观精美的地形。还支持通过在游戏模式中生成新地形来创建无限地图。
完整的 MapMagic 2 资源包,包含四个默认模块,将地形工具转变为全规模世界创造器: Objects 对象、Splines样条线、Biomes 生物群落以及Brush笔刷。
文档:https://gitlab.com/denispahunov/mapmagic/-/wikis/home
二、完整的 MapMagic 2 资源包下载安装
https://assetstore.unity.com/packages/tools/terrain/mapmagic-2-bundle-178682
学习版:
链接:
https://pan.baidu.com/s/1KeF8Ko4BqqHqn1NZa4eI0A?pwd=sgah
提取码: sgah
三、快速入门
1、创建新的 MapMagic Graph 资产
在项目视图中点击创建,创建新的 MapMagic Graph 资产,选择 MapMagic -> Template Graph(或 MapMagic -> Empty Graph,如果您想从头开始)。
2、创建 MapMagic 对象
将创建的 Graph 拖放到场景中创建 MapMagic 对象。
或者:点击 GameObject 菜单 -> 3D Object -> MapMagic,选择创建的对象,在检查器中分配图。
3、打开编辑器窗口
双击项目视图中 Graph 资产以打开编辑器窗口。
或者在项目视图中选择 Graph 资产,在检查器中点击打开编辑器,选择 MapMagic 对象,点击 Graph 槽旁边的打开。
四、图表窗口
图表窗口是使用 MapMagic 的主要工具,因此如果打算深入使用 MM,建议将其停靠在某处。尽量不要让它与场景视图重叠,以便查看生成结果。
图表窗口由工具栏(顶部)和节点窗口(所有其他窗口空间)组成。节点窗口填充了网格,以帮助在滚动或缩放时导航。如果打开了模板、演示或任何其他非空图表,将在节点窗口内看到节点。
1、Toolbar 工具栏
工具栏控件,从左到右:
- Graph Asset Name - 当前编辑的图表名称。如果当前图表是子生物群系,将显示两个名称 - 根生物群系名称和当前生物群系名称。详情请参阅生物群系模块。
- Biomes Tree 按钮 - 按下它将显示此图表的子生物群系树,用于快速导航。
- Graph Seed - 当前图表的种子,用于生成所有伪随机值。更改此值将根据图表确定的相同原则生成不同的地形。
- Progress Gauge - 显示所有 MapMagic 对象图块的总生成进度。如果所有图块都已生成,则显示标签 “Ready” 而不是进度条。如果图表未分配给 MapMagic 对象,则进度条不可用。
- Force Re-Generate 按钮 - 清除所有生成的结果并从头开始生成所有图块。
- Generate Changed Only - 将生成在关闭 Instant Generate 时未生成的节点。如果启用了 Instant Generate,则任何节点发生更改时,图表将已经开始生成。
- Scroll to Center - 将图表视图置于所有节点矩形中心。当图表不在原点创建,或者滚动过远迷失方向时非常有用。
- Zoom far/close - 在最小(最远)和最大(最近)缩放级别之间快速切换。
2、Nodes Window 节点窗口
每个节点由一个带有节点名称、图标的标题、左侧的输入口(或多个)和标题右侧的输出口(或多个)组成。请注意,一些节点(称为初始节点)不需要任何输入数据,因此没有输入口。节点的中心部分包含节点参数值 - 称为字段。在节点字段下方,节点底部,可以找到一个可展开的预览字段。
在节点窗口的右上角有一个 Add 拖拽按钮,它提供了一种快速简便的创建新节点的方法。当节点被鼠标拖动时,Add 拖拽按钮会自身变为 “Remove” 垃圾桶。
3、节点窗口操作
- 可以使用鼠标中键滚动编辑器窗口:
- 要缩放,请使用鼠标滚轮:
- 要移动生成器,请用左键拖动它。要开始拖动,请在节点标题或任何其他没有控件的节点空间上进行初始点击:
- 要更改值,请单击其名称并用左键向左或向右拖动:
如果您想输入精确值,请单击字段并从键盘输入新值。如果当前图分配给了场景中的活动 MapMagic 对象,那么更改任何值都会使地形重新生成。 - 要链接节点,请用左键将节点的输入口拖动到另一个节点的输出口。反之亦然 - 将一个节点的输出口拖动到另一个节点的输入口也可以。
- 要取消链接节点,请将链接的输入口拖动到图表的任何空白区域。
请注意,节点输出连接器可以链接任意数量的节点,而每个输入口只能有一个链接。因此,要将节点重新链接到另一个节点,只需将其输入口拖动到另一个节点的输出口。 - 要添加新节点,可以在节点窗口空白处右键单击,或使用 Add 拖拽按钮。
请注意,没有类型或初始/修改器菜单,因为它们是不必要的 - 只能插入链接类型的修改器节点。例如,不能在 Map 链接中插入 Object 节点。- 将 Add 拖动到节点窗口的空白区域(或在空白处右键单击并选择 Create)将简单地创建一个新节点。
- 将 Add 拖动到节点链接上(或右键单击并选择 Insert)将创建一个该链接类型的新修改器节点,并将其与链接的输出口和输入口连接起来。
- 将 Add 拖动到其他节点上(或右键单击节点并选择 Append)将创建一个相同类型的新节点,并将其链接到原始节点。
- 将 Add 拖动到节点窗口的空白区域(或在空白处右键单击并选择 Create)将简单地创建一个新节点。
- 要移除节点,可以将其拖动到 Remove 区域(当节点被拖动时,该区域会自动在 Add 的位置启用),或右键单击节点并选择 Generator -> Remove。
- 可以通过按住 Shift 键并绘制选择框来选择多个节点。多个节点在拖动或移除时被视为一个节点。单击并拖动任何节点以执行拖动操作。在图表的任何位置(选定的节点除外)单击将取消选择。
可以将选择转换为组,方法是右键单击任何选定的节点,然后选择 Group -> Group Selected。
五、右键菜单
在节点窗口中任何位置单击鼠标右键时,会显示右键菜单。根据单击的对象,某些菜单选项可用,而其他选项被禁用。
此菜单用于执行所有高级的节点/组/图表操作,此外还包括通过节点界面本身或添加/删除按钮可访问的基本操作。
所有子菜单项在鼠标指针悬停在父菜单上 0.3 秒后会自动打开。单击父菜单将立即打开子菜单。
1、Create Menu 创建菜单
创建节点的另一种方式 - 在某些情况下(例如,没有鼠标的笔记本电脑),右键单击并选择此菜单比拖动 Add 按钮更方便。
根据单击的对象,创建菜单将具有不同的名称并执行相应的操作:
- 如果在空白图表空间上单击 - 它将是 Add 菜单,并将简单地向图表添加新节点。
- 如果在链接线上单击 - 它将是 Insert 菜单,并将新创建的节点与链接的输入和输出连接起来。
- 如果在节点或输出口上单击 - 它将是 Append 菜单,将创建的节点链接到被单击的节点。
这些操作类似于通过将 Add 按钮拖动到空白区域 / 链接 / 节点上执行的操作。
创建菜单包含要创建的节点类别。每个类别对应于节点作为输入、输出或内部处理的对象。例如,Map 节点处理 Map 对象(在代码中称为 Matrix),而 Spline 对象处理 Spline System (SplineSys)。每个新的 MapMagic 模块都会带来新的对象类型,从而产生新的类别。对于 MapMagic 核心版本,仅 Map 类别可用。
2、创建菜单项
打开创建菜单时出现。
所有节点按其行为类型分组:
- Initial nodes: 初始节点:
- Modifiers: 修饰符:
3、Generator menu 生成器菜单
在节点上任何位置右键单击时可用。包含可以对节点(生成器)执行的操作列表。
- Disable/Enabl禁用/启用:禁用的生成器不会生成任何产品,只会读取输入并将其分配给输出。
- Duplicate复制:将在被单击节点下方创建具有相同参数的相同节点。
- Update更新:如果有可用版本,将过时的旧版生成器转换为新生成器。
- Unlink取消链接:移除节点的所有链接。如果选择了多个节点,则仅移除它们的外部连接,保留选定节点之间的链接。
- Remove移除:删除选定的节点。类似于将节点拖动到 Remove 区域。
- Reset重置:将所有生成器值恢复为默认值(与节点创建时设置的相同值)。
4、组菜单
所有与组相关的操作
- Create创建:将向图表添加一个新的空组。
- Group Selected编组选定的:将创建一个与选择范围大小相同的新组,从而将选定的节点包含到组中。
- Ungroup取消编组:删除组,但保留节点。
- Remove移除:删除组及其节点。
5、图表菜单
图表导入/导出
- Export导导出:将选定的节点保存在单独的图表中。如果未选择任何节点,则不可用。
- Import导入:将其他图表的节点添加到当前图表。
- Update All全部更新:将所有旧版节点转换为新节点。
6、值菜单
暴露或移除用于函数的数值字段。
- Expose暴露:使当前单击的值被暴露(可从父生物群系更改)
- UnExposes取消暴露:从暴露中移除此数值字段。
六、图层
一些生成器,如 Textures Output、Blend、Split、Combine、Rarefy 等,具有图层界面。通常图层存储相似的参数。
1、Add 添加:
要创建新图层,请按带有加号的 Add 按钮:
请注意,一些生成器如 Textures Output 或 Rarefy 默认不添加任何图层。因此请记住,如果看到带有加号的 Add 按钮,则可以在此处添加具有附加属性的图层。
2、Switch 切换:
要更改图层顺序,请单击并拖动其名称或任何其他非活动区域:
非活动区域是图层内除(可交互控件外的)任何地方。
3、Remove 移除:
要移除图层,请将其拖动到 Remove 字段。当图层即将被移除时,Remove 字段将高亮显示为红色:
4、Expand 展开:
大多数图层都有可以通过按下三角形 V 形符号展开的附加参数:
请注意,对于大多数生成器,只能展开一个图层。这样做是为了防止过度展开节点界面和使图表混乱。
5、Rename 重命名:
单击铅笔标记将允许编辑图层名称。
建议为图层指定合理的名称,因为这将有助于组织图表。由于只能展开一个图层,如果图层仅命名为 “Layer 5”,则很难知道它是关于什么的。
七、设置
场景中 MapMagic 对象的属性。在检查器窗口中设置。
1、Tiles 区块
在此管理在编辑器中生成的地形(即"固定区块")。要固定或移除区块,请先按下勾选按钮,然后在场景中选择区块。您可以使用"框选"功能一次性固定或取消固定多个区块。
与所有其他 Unity 辅助图标一样,当在场景视图中禁用"Gizmos"时,区块将不会显示也无法修改。
- Pin New Tile固定新区块:在选定位置创建一个新的地形区块。
- Pin As Draft固定为草稿:将创建一个仅具有低分辨率细节级别的区块。这在塑造初始地形形状时非常有用,因为草稿区块生成速度更快且占用内存更少。
处理大型地形时,固定一个大的草稿区块网格用于观察整体地形,同时固定一两个全分辨率区块用于细节工作,会非常方便。 - Select Preview选择预览:选择用于在图表、预览窗口中显示节点预览,并为其地形分配特殊预览着色器的固定区块。当未选择预览区块时,将使用距离摄像机最近的区块。您只能选择一个预览区块。
- Save Terrain Data保存地形数据:点击此按钮并选择带有绿色高亮显示的区块,会将地形数据存储为资源文件。这使得地形像默认的 Unity 地形一样被存储,而不随场景保存。
使用"保存地形数据"时,数据与当前地形关联,您所做的任何更改(包括使用 MapMagic 重新生成)都会修改该数据文件。 - Save As Copy另存为副本:将地形数据另存为资源文件。副本存储地形数据的当前状态,地形的任何更改都不会修改该数据文件。
- Unpin取消固定:取消固定区块并移除其地形。
2、Locks 锁定
创建一个被排除在程序化生成之外的区域。对于在固定图块上创建自定义位置非常有用。详见"锁定"部分。
3、Tiles Generation 区块生成
MapMagic 的主要功能之一:启用后,当摄像机靠近新地形区块时会生成它们,并移除超出范围的区块。每个区块都是独一无二的,但基于相同的生成原理。
通过这种方式,MapMagic 创造出地形无限且不重复
的错觉。
MapMagic 会首先生成低分辨率区块(草稿)。然后,它只会在近距离范围内创建主区块,而将草稿区块留在背景中。这有助于节省内存和计算时间。
只要图表(及其种子值)没有改变,每次玩家到达该区块时都会生成完全相同的区块。
此功能仅在播放模式下工作,编辑器中只有固定的区块可用。
-
Generate Terrain (in Playmode)生成地形(在播放模式下):启用/禁用在播放模式下生成无限地形。
-
Main Range主范围:创建主(高分辨率)区块的距离(以地形区块数为单位)。例如,如果区块大小为 1000,主范围为 2,则将在 2000 单位内创建主区块。
-
Drafts Range草稿范围:创建草稿(低分辨率)区块的距离(以地形区块数为单位)。
-
Generate Terrain Markers生生成地形标记:所有生成、移除和启用范围都从这些标记点开始计算:
-
Around Main Camera围绕主摄像机:将在当前启用的主摄像机位置,按照给定范围创建区块,并在摄像机位置改变时生成新区块。
-
Around Objects围绕对象:将在列表中指定的对象周围生成区块。
默认情况下,坐标列表为空。启用此功能后,旁边的"添加"按钮也将变为可用。按下它以向列表添加新坐标。拖动坐标左侧的图层图标可以切换顺序,或将其拖到"添加"按钮上(拖动时会变为"移除")以删除该坐标/图层。
-
Around Objects Tagged围绕带标签的对象:将在具有指定标签的场景对象周围生成区块。
重要提示:对于第三人称游戏或具有摄像机枢轴的游戏,应使用此模式(或"围绕对象")来代替"围绕主摄像机",以避免每次摄像机旋转时都触发生成。如果您有多个角色且它们之间距离可能很远,这也很有用。
-
Around Coordinates围绕坐标:将显示一个静态坐标列表,以区块数衡量。如果区块大小为 1000,坐标 (0,1) 将在 (0, 1000) 位置生成区块。请注意,它也会根据给定的"主范围"在该坐标周围生成区块。如果您希望使其类似于在播放模式下固定区块,请使用范围 = 0。
坐标列表的工作方式与"围绕对象"类似:启用复选框,按"添加"以添加,要移除则将坐标拖到"添加"按钮上(将显示为"移除")。
-
-
Hide Out of Range Chunks隐藏范围外区块:启用后,当固定区块超出生成范围时将隐藏它们。禁用后,固定区块将始终可见。
4、Tile Settings 区块设置
此 MapMagic 对象所有区块共享的设置。
- Size大小:区块的长度(X 轴)和宽度(Z 轴),以世界单位计。
- Main Resolution主分辨率:输出地形高度图的大小,以像素为单位。对于地形图层,大小相同(减去一个像素)。
- Main Margins主边界:许多 MapMagic 节点(如模糊、侵蚀、空腔等)需要额外的像素信息才能工作。否则它们在区块边缘会产生不正确的结果。为避免这种情况,MapMagic 会生成一个比区块本身稍大的贴图,然后裁剪掉边缘。
"主边界"值决定了贴图每条边上额外像素的数量。例如,对于输出分辨率 513 和边界 16,最终贴图大小将为 513 + 16*2 = 545(正方形)。
您可以尝试减小此值以加快生成过程,但请检查区块边缘是否有瑕疵。 - Draft Resolution草稿分辨率:草稿高度图的大小,以像素为单位。
- Draft Margins草稿边距:草稿边界:草稿区块边缘的额外像素(详见"主边界"说明)。
- Use Draft Terrains in在 … 中使用草稿地形:启用/禁用编辑器或播放模式下的草稿地形:
- Editor编辑器:在生成主区块时,将禁用生成草稿区块。如果您不喜欢切换到草稿,或者使用低分辨率/快速图表(其应用速度几乎与草稿一样快),请禁用此选项。
- Playmode播放模式:对于无限地形,将禁用首先生成草稿地形。所有区块都将以完整细节出现。
- Clear Generated on Node Remove移除节点时清除生成结果:在输出节点断开连接、禁用或删除时,清除生成的结果。例如,如果取消链接"高度输出"节点,并且启用了此复选框,则地形将变为平坦。
5、Outputs Settings 输出设置
图表输出所使用的数据。通常,所有这些值都可以在图表中相应的带有链接图标(已链接)的输出节点中更改。但是,它们可能不是图表的一部分:图表存储的是区块如何生成的信息,而这些数据决定了生成的结果如何被应用。
Height Output 高度输出
- Height高度:地形最大高度。更改此值将为每个区块设置地形的"地形高度"参数。
- Interpolation插值:在应用高度时平滑地形:
- None:按原样应用高度图(生成的地图像素 -> 地形高度图像素)。应用速度最快。
- Smooth平滑:在两个像素之间进行插值,稍微平滑应用的高度图。应用速度仍然很快,但可能会丢失一些微小细节。
- Scale 2X:将应用的高度图在每个维度上放大两倍,使地形更详细。这样,地形多边形密度比其他贴图(如 splatmap)大四倍。
例如,在 MapMagic 中使用分辨率 513 时,地形区块高度图大小将为 1025。 - Scale 4X:进一步放大地形密度。主要用于通过低 MapMagic 分辨率创建平滑地形。应用时间最慢。
- Apply Type应用类型:决定生成的高度图应用于地形的方式:
- Set Heights设置高度:最简单的方式,通过 SetHeights。在低分辨率下由于开销较小而速度快,但在大的高度图上使用可能会产生明显的卡顿。
- Set Heights Delay LOD设置高度延迟 LOD:通过 SetHeightsDelayLOD 在几帧内设置高度,然后应用 LOD 修改。比"设置高度"花费的时间稍多,但由于分在几帧内完成,卡顿不那么明显。
- Texture To Heightmap纹理到高度图:在单独线程中创建原始纹理数据,在协程中创建渲染纹理,并使用 SyncTexture 应用它。异步且快速,但在 Unity 2018 中不起作用。
- Split Frame分帧:在"设置高度延迟 LOD"中每帧处理的条带像素数(或在"纹理到高度图"中发送到纹理的像素数)。如果分辨率为 513,分帧值为 129 意味着地形将在 4 帧内应用(四个 129*513 的条带)。
减小此值将使地形应用更平滑,但会增加总应用时间。
Grass Output 草地输出
- Resolution Downscale分辨率缩放:设置降低草地斑块分辨率的比率,以减少地形草地/细节数据。设置为 1 时,地形细节分辨率将等于主区块分辨率;设置为 2 时,将仅使用一半分辨率。
- Res/patch 每斑块分辨率:定义每个斑块的细节分辨率。
Objects Output 对象输出
- Num per Frame 每帧数量:限制每帧应用到生成地形上的对象数量。应用需要一些时间并且在主线程中完成。当应用此数量的对象到区块后,会将其余对象的应用推迟到下一帧。
降低此值将提高帧率平滑度,但也会增加总应用时间。
6、Terrain properties 地形属性
等同于标准地形"设置"选项卡中每个地形使用的设置。唯一的区别是它们会应用到所有 MapMagic 地形上。
- Auto Connect自动连接:连接地形 LOD 级别,以便在切换细节级别时区块可以无缝焊接。此数值是地形的"分组 ID"。
- Base Map Distance基底贴图距离:地形纹理以全分辨率显示的最大距离。超过此距离,将使用较低分辨率的复合图像以提高效率。复选框用于启用/禁用基底贴图功能。
- Draw Instanced实例化绘制:启用/禁用实例化渲染。
- Pixel Error像素容差:地形贴图(高度图、纹理等)与生成地形之间映射的精度;较高的值表示精度较低但渲染开销较小。与标准地形设置不同,您可以将该值设置为 0 以强制地形渲染全分辨率网格。
- Reflection Probes反射探头:使用此选项设置 Unity 如何在地形上使用反射探头。
- Material Template材质模板:用于渲染地形的材质。
7、Trees, Details and Grass Properties 树木、细节和草地属性
等同于标准地形"设置"选项卡中每个地形使用的设置。唯一的区别是它们会应用到所有 MapMagic 地形上。
- Tree Distance树木距离:超出此距离(从摄像机起)的树木将被剔除。
- Billboard Start广告牌起始距离:从此距离(从摄像机起)开始,3D 树木对象将被广告牌图像替换。
- Fade length淡出长度:树木从 3D 对象过渡到广告牌所经过的距离。
- Max Full LOD Trees最大完整 LOD 树木数:将表示为实体 3D 网格的最大可见树木数量。超过此限制,树木将被替换为广告牌。
- Bake Light Probes For Trees为树木烘焙光照探头:如果启用此选项,Unity 将在每棵树的位置创建内部光照探头,并将其应用于树木渲染器进行光照计算。否则,树木仍受光照探头组影响。
- Remove Light Probe Ringing移除光照探头振铃效应:如果勾选此框,Unity 将移除可见的过冲,这种过冲通常表现为受强光照影响的 GameObject 上的振铃效应。此设置会降低对比度,并且依赖于"为树木烘焙光照探头"。
- Draw Detail绘制细节:勾选此框以绘制草地和细节。
- Detail Distance细节距离:超出此距离(从摄像机起)的细节将被剔除。
- Detail Density细节密度:给定单位区域内的细节/草地对象数量。可以设置较低的值以减少渲染开销。
- Wind Speed风速:风吹动草地的速度。
- Wind Size风区大小:风吹过草地区域时产生的"涟漪"大小。
- Wind Bending风力弯曲度:草地对象被风吹弯的程度。
- Grass Tint草地色调:应用于草地对象的整体颜色色调。
8、Multithreading 多线程
- Use Multithreaded 使用多线程:启用后,MapMagic 生成工作在多个单独的线程中进行。关闭此参数将强制 MapMagic 仅在主线程中使用协程工作(这对于调试自定义生成器或出于兼容性原因可能有用)。
- Auto Max Threads自动最大线程数:将线程数设置为处理器线程数 - 1。这样,在不同的硬件上,线程数将不同。自动模式在编辑器和构建中都有效。
- Max Threads最大线程数:MapMagic 用于生成贴图的线程数。推荐值为当前处理器线程数 -1。
- Apply Time per Frame每帧应用时间:虽然生成在其他线程中进行,但将生成结果应用到地形(最后阶段)是使用协程完成的。此值设置协程每帧花费的最长时间(毫秒)。增加此值将缩短总应用时间,但可能会产生明显的卡顿。请注意,在某些情况下,协程无法分割成更小的部分,因此将此值设置为 1 也无助于避免某些性能分析器上的峰值。
- Instant Generate即时生成:启用此参数后,更改任何生成器参数后无需按下"生成"按钮:MapMagic 会触发更改并在您对图表中每个节点进行更改时自动强制生成。
八、Map Generators 地图生成器
Initial generators 初始生成器
1、Constant 常量
创建一个填充了给定值的地图。这是最简单的生成器,用于创建透明遮罩或平坦的高度图。
Output 输出
某个级别的平面图。
Properties: 属性:
- Level级别:生成时地图将填充此值。值范围在 0(无填充、透明填充或零地面高度,具体取决于使用它的输出)和 1(完全填充或不透明填充或最大地形高度)之间。
级别: 0, 0.5, 1
2、Import 导入
此节点允许从纹理或 RAW 文件导入自定义高度图。
自定义高度图可用于创建基础地形,随后可以使用noise噪波、erosion 侵蚀和其他节点进行细化:
或者,它也可以用于通过 Stamp 节点创建自定义"图章"。
Imported Map asset 导入地图资产
Import 节点不会直接加载 RAW 文件或纹理——这是一个成本高昂的操作,会显著增加图表文件大小。相反,它使用一种特殊的资源来加载并保存(序列化)RAW 或纹理数据。这种资源称为"导入的贴图"。
图表本身(导入节点)仅保存对此资源的引用。
当在检视面板中选择大型的"导入的贴图"资源时,您可能会遇到一些延迟。这是因为 Unity 会尝试在每一帧都序列化该导入的贴图,取消选择后延迟即会消失。
要创建"导入的贴图"资源,请使用标准的资源创建方式:点击 Assets
菜单(或在项目视图中右键单击) -> Create -> MapMagic -> Imported Map。
-
Map Source贴图来源:决定导入的贴图是从 RAW 文件加载还是从纹理加载。
-
Load Raw (for raw mode)加载 Raw(用于 RAW 模式):打开对话框以加载 .raw 文件。
要使用此功能,.raw 文件需要满足以下条件:- 必须是正方形(宽度应等于高度)
- 必须是灰度图
- 必须是每通道 16 位
- 必须以 PC 字节序保存为 .raw 文件
无需将 RAW 文件放置在 Assets 文件夹内,可以从任何位置加载。
-
Texture slot (for texture mode)纹理槽(用于纹理模式):用于指定作为贴图来源的纹理资源。源纹理必须放置在 Assets 文件夹内,并且在其纹理设置中必须启用
Read/Write
属性。 -
Channel (for texture mode)通道(用于纹理模式):选择用作贴图来源的通道:
-
Average平均:三个通道(红、绿、蓝)的平均值
-
Grayscale灰度:使用公式 0.21R + 0.72G + 0.07*B 计算贴图值
-
Red/Green/Blue红/绿/蓝:仅使用一个颜色通道
-
Alpha透明度:使用纹理的 Alpha 通道
-
-
Reload button重新加载按钮:从先前分配的纹理或 RAW 文件重新加载贴图。
Generator Properties: 生成器属性:
-
Map贴图:导入的贴图资源的引用槽。
-
Wrap Mode循环模式:决定高度图应如何重复,以确保每个地形点都能对应到贴图值:
-
Once:仅重复一次
-
Tile:无限重复平铺,就像标准纹理的平铺方式
-
PingPong:将会镜像每一个偶数次重复的贴图,并无限重复。如果你想用一个不可平铺的图形来填充你的土地,请使用此选项
Once, Tile, PingPong
-
-
Scale缩放:设置高度图的大小。默认大小等于一个区块(地形)的大小。
0.5,1,2 -
Offset偏移:沿 X 或 Z 轴移动图形(使用世界单位)。
0, 500, 1000
3、Noise 噪声生成器
噪声生成器是 MapMagic 中最基本的生成器之一。它生成一个分形噪声图,广泛用作各种地图创建算法的基础。
应用场景:
可用于创建初始地形高度:
或为来自导入或简单形状生成器的低分辨率高度图添加一些细节:
除了用作定义各种区域(包括生物群落)的遮罩外,噪声节点通常与对比度和混合节点一起使用:
或者用作遮罩对象、树木、生物群落:
Inputs 输入:
初始生成器(没有输入)。
Output 输出:
Single output单输出 - 噪音图,范围从 0 到 1。
Properties属性:
- Type 类型:
- Unity: 使用标准 Unity Mathf.PerlinNoise 函数创建的噪声。主要用于调试目的。
- Linear 线性: 对于大于 1 的分形,线性插值在随机值之间。如果你关闭了细节分形,你会注意到"平坦"的外观,似乎这种噪声由平面组成。这是最快的算法,并推荐在各种遮罩中使用。
- Perlin 或 bilinear 双线性: 更高级的大分形插值,考虑了更远的随机值。
- Simplex: Perlin 滤波,但使用三角形(六边形)噪声点网格而不是正方形网格。由于三角形网格比正方形网格更密集,这种噪声类型的视觉模式略小,需要调整"大小"参数。最慢的噪声类型,但最适合用于创建高度图。
类型: Unity, Linear, Perlin, Simplex
无细节类型(detail=0): Unity, Linear, Perlin, Simplex
- Seed 种子: 用于初始化伪随机噪声生成器的数字。如果两个生成器使用相同的种子数字,则生成的模式将相同。
- Intensity 强度: 设置最高的噪声值。
强度: 0.3, 0.6, 1, 1.5, 2 - Size 大小: 此参数确定最大分形的大小。超过此值的噪声不再具有分形特性,而是成为标准的 Perlin 噪声。较小的尺寸值会导致非常均匀且可预测的噪声,而较大的值可以创建多样化的噪声和景观高度图。
大小: 50, 100, 200, 300, 400
这里生成相同大小的噪声,没有细节以使图案可见 - Detail 细节: 此参数确定大和小分形的影响。当参数高于 0.5 时,小分形的影响更大,这会导致地图更"嘈杂"。当参数低于 0.5 时,小分形的影响小于大分形,这会导致噪声更平滑。
细节: 0, 0.25, 0.5, 0.75 - Turbulence 湍流: 创建"气泡"(正值)或"脊"(负值)。
湍流: 0, 0.25, 0.5, 0.75, 1 - Offset 偏移量: 此参数定义噪声图案的位置,将其沿 x 和 z 轴移动。这些值可以是正数或负数。偏移量适用于所有地形,并与其位置相加,因此噪声图在地形上无缝连接。
偏移 Z: 0, 100, 200, 300, 400
4、SimpleForm 简单形状生成器
创建简单的数学图案:渐变、金字塔或圆锥。
使用场景:
主要用于创建渐变,例如,从北到南混合生物群:
然而,圆锥和金字塔模式也很方便。在 Simple Form 中创建陨石坑的方法:
Simple Form 用作岛屿的基本地形:
圆锥可以转换成带有曲线的球体:
借助曲线或选择节点,您可以将圆锥或金字塔形状转换为环形、圆形或正方形:
属性:
-
Type 类型:
- Gradient X 渐变 X:用 x 轴对齐的渐变填充地图。
- Gradient Z 渐变 Z:用 z 轴对齐的渐变填充地图。
- Pyramid 金字塔:创建金字塔形状。
- Cone 圆锥:创建圆锥。
类型:圆锥、金字塔、渐变 X、渐变 Z
-
Intensity 强度:简单形状图形的高度。
强度:0, 0.5, 1, 2
-
Scale 缩放:设置高度图的大小。默认大小等于一个区块(地形)。
缩放:0.1, 0.5, 1, 2 -
Ratio 比例因子:对于圆锥和金字塔 - 允许创建非正方形形状。值 0-1 将在 X 轴方向上缩放,值 1-2 将在 Z 轴方向上缩放。
-
Offset 偏移:沿 X 轴或 Z 轴移动图形(以世界单位计)。
-
Wrap Mode 包裹模式:确定高度图应如何重复,以确保每个地形点都不会错过地图:
- Once 一次:仅重复地图一次
- Tile 平铺:像标准纹理一样无限重复地图
- PingPong 乒乓:将每 2 张地图进行镜像并无限重复地图。如果您想用非可拼接的图形填充您的土地,请使用此选项。
包裹模式:一次、平铺、乒乓
5、Simple Form 简单表单
6、Voronoi
7、Spot (new) 点(新)
在指定位置创建单个圆形点。
用于为笔刷模块创建笔刷衰减遮罩。其功能类似于 Objects.Stroke,但专用于在不依赖对象模块的情况下实现笔刷效果。
- Position(位置):圆点中心的世界坐标位置
- Radius(半径):圆形的总半径(包含衰减区域),以世界单位为计量
- Hardness(硬度):完全填充区域半径占总半径的百分比。取值范围为0(仅中心像素值为1)到1(半径范围内所有区域值均为1)。
ModifiersModifiers 修饰符
1、Blend 混合生成器
Blend 生成器使用指定的混合算法,将两个或多个地图(数据图)融合在一起。这个生成器的工作原理类似于 Photoshop 或其他图形编辑器中的图层混合模式。您可以将最底部的 “Base” 输入视为背景图层,而其上方的输入则是混合图层。
使用场景:
将绿色草地遮罩纹理与随机噪波遮罩进行相乘混合
属性
每个混合图层(除了基础的 “Base” 图层)都有以下两个属性:
- Algorithm 算法 - 决定图层之间具体的混合方式。
- Opacity 不透明度 - 混合图层的不透明度系数。如果值为 0,则该图层的混合结果将不可见。
可用的混合算法
以下是混合生成器提供的算法:
-
Mix 混合:简单地使用不透明度值来混合两个地图。公式:return b; (注:原文公式似乎不完整,Mix 通常按 a*(1-opacity) + b*opacity 计算)
-
Add 相加:将混合图层加到基础图层上。{ a+b; }
-
Subtract 相减:从基础图层中减去混合图层。{ a-b; }
-
Multiply 相乘:将两个图层相乘。请注意,由于输入值通常小于 1,相乘后的结果值会比任何一个输入值都小。{ a*b; }
-
Divide 相除:与相乘相反。结果值常常会超过 1,使用时要小心。{ a/b; }
-
Difference 差值:计算两个图层之间的绝对差值。{ Mathf.Abs(a-b); }
-
Min 最小值:取两个图层中的较小值。{ Mathf.Min(a,b); }
-
Max 最大值:取两个图层中的较大值。尝试实验 Min 和 Max 混合算法,它们可以产生干净且有用的结果。{ Mathf.Max(a,b); }
-
Overlay 叠加:这种效果常用于图像处理,但在混合高度图或贴图方面的实用性有待商榷。
算法示例
下图展示了不同算法在示例图(基础层:Voronoi 噪声;混合层:普通噪声)上的效果:
算法:Mix, Add, Subtract, Multiply, Difference, Min, Max
在此示例中,基础层(Voronoi)的不透明度始终为 1,并且其混合模式始终为相加。只有噪声层的混合模式被改变。在 Mix 模式下,噪声层的不透明度设置为 0.5。
常用场景总结
对于遮罩的混合,最常用的算法是 Add 和 Multiply。
-
Add 会以 “OR” 模式混合两个遮罩,合并它们的允许区域。
-
Multiply 则会以 “AND” 模式混合遮罩,合并它们的限制区域。
2、Blur 模糊生成器
模糊生成器用于平滑输入的地图(数据图)。
输入
-
Input 输入 - 将由生成器处理的默认地图。
-
Mask 遮罩 - 将生成器的效果强度乘以遮罩地图的值。对于遮罩中值为 0 的像素,生成器效果不可见;对于值为 1 的像素,效果强度保持不变。
| 源高度图 | 遮罩图 | 遮罩应用结果 |
输出
- Output 输出 - 存储生成器的处理结果。
属性
-
Intensity 强度:每次迭代应用的模糊量。
-
Iterations 迭代次数:应用模糊处理的次数。请注意,增加迭代次数会降低模糊处理的性能。合理的最大迭代次数约为 10 次;如果需要更平滑的地图,请使用 Loss 参数。
迭代次数:0, 1, 10 -
Loss 损失:强制生成器跳过部分输入像素。这会使结果看起来略有"像素化",但能赋予地图额外的平滑度。值为 1 表示不跳过任何像素。
损失参数对性能影响极小,因此可用于创建极其平滑的地图。将其与较高的强度和迭代次数配合使用,以避免明显的像素化。
损失(迭代次数=10):1, 20, 60重要提示:不要仅通过增加迭代次数来试图让地图更模糊,这会导致模糊性能低下。请改用损失值。
-
Safe Borders 安全边界:对地形边界进行遮罩处理,使得生成器效果在边界处为零,并随着远离边界而逐渐增强。此参数设定效果达到全强度的距离(以像素为单位)。设置为 0 则关闭边界遮罩。
此参数对于实现更好的地形块(Chunk)接合至关重要,因此如果此生成器输出的是高度信息,请务必启用它。
安全边界:0(关闭), 20, 100请注意,关闭安全边界(设置为 0)会导致区块之间出现接缝。
3、Cavity 凹凸生成器
凹凸生成器用于生成地形表面的凹陷(凹面)和凸起(凸面)区域地图。所有凸起和拱形区域被视为凸面,而凹陷区域被视为凹面。请注意,输出的两种地图不会重叠:一个像素不能同时是凸面和凹面。
属性
-
Type 类型:
-
Convex 凸面:突出显示地形中的凸起/膨胀区域。
-
Concave 凹面:突出显示地形中的凹陷/空洞区域。
-
Both 两者:生成中间值(灰色)的地图,使凹面区域变暗,凸面区域变亮。
类型:凸面, 凹面, 两者
地图上显示的类型效果:凸面, 凹面, 两者
-
-
Intensity 强度:生成器对输入地图的影响程度。当值设置为 0 时,生成器效果不可见。换句话说,这相当于生成器的有效不透明度。
强度:1, 5, 10, 20 -
Spread 扩散:由于真正弯曲的地形区域相对较少,凹凸生成器可以将检测到的凹凸信息扩展到更多相对平坦的区域,使效果更加明显。
4、Contrast 对比度生成器
对比度生成器用于改变输入地图的强度(亮度)和对比度。这对于各种遮罩的简单修改非常有用。
将对比度增加到较大值(100-1000)将返回单比特遮罩,只有 0 或 1 的值,没有渐变(或几乎没有渐变)。
示例:增加噪波和草地纹理遮罩的对比度
属性
Intensity
强度:改变地图的整体高度(如果从图像角度看,则是亮度)。取值范围从 -1(任何输入地图都会变成全黑)到 1(任何地图都会变成全白)。
强度:-0.5, -0.25, 0, 0.25, 0.5Contrast
对比度:改变地图的对比度。取值范围从 0(在强度级别上的平面地图)到无穷大。
对比度:0.25, 0.5, 1, 2, 10, 1000
地图上的对比度效果:0.25, 0.5, 1, 2, 10, 1000
6、Curve 曲线生成器
概述
曲线生成器使用用户定义的曲线来调整地图的数值。它的工作原理类似于 Photoshop 等图形编辑器中的曲线调整工具。曲线图的水平轴代表输入值,垂直轴代表输出值。
这个生成器为地图编辑提供了丰富的可能性:可以用来反转地图、调整最小值或最大值、限制地图数值范围,甚至创建阶梯状斜坡(尽管 Terrace 生成器可能更适合此用途)。
操作示例
-
要给地图增加对比度,只需将左右控制点水平移动到靠近中心线的位置
-
要反转地图,将左侧控制点移动到顶部,右侧控制点移动到底部,使对角线反转(注意:控制点的切线应设置为自动以获得直线效果)
理解曲线原理
想象一座山,从海拔 0 到山顶海拔 1 有一个相对笔直的斜坡 - 这个斜坡就代表了默认的线性曲线。当我们添加一个控制点并将其向下拖动时,就改变了这个想象中的斜坡形状,同时也改变了所有其他斜坡的形状。
属性
-
Curve field
曲线编辑区:显示曲线预览。-
创建控制点:点击曲线上的任意位置
-
移动控制点:用鼠标拖动控制点
-
删除控制点:将控制点拖出曲线编辑区
-
第一个和最后一个控制点也可以拖动
-
-
Histogram
直方图:如果设置了地形瓦片作为预览,曲线编辑区的背景会显示预览瓦片的直方图。请注意,直方图不代表地形瓦片的起伏、切片或其部分,它是完全不同的概念(显示数值分布)。
7、Erosion 侵蚀生成器
概述
侵蚀生成器模拟水流在地形表面的作用过程。水流会侵蚀悬崖结构,将侵蚀的岩层搬运到其他位置,并作为沉积物沉降下来。
重要性能说明
请注意,所有水流、侵蚀和沉积物的计算都是迭代进行的,非常消耗计算资源,这使得侵蚀生成器成为所有 MapMagic 生成器中最慢的一个。
在现代计算机上,使用默认参数生成侵蚀效果通常需要约1秒钟,而其他生成器几乎是实时的。但通常来说,其生成的效果是值得等待的。
属性
-
Iterations
迭代次数:生成器执行的遍历次数。此参数直接影响性能。在大多数情况下,无需设置超过5-7次,因为进一步的侵蚀效果会变得不那么明显。
迭代次数:1, 3, 5, 10 -
Durability
耐久性系数:决定输入地形的耐久程度,即受水流侵蚀影响的程度。- 较低的值会在每次迭代中更强烈地侵蚀土地,但整体结果会不够准确和可预测
- 推荐将此值设置为0.8或更高
- 如果值设置为1,则土地完全不会被侵蚀
耐久性:0, 0.5, 0.9, 0.99
-
Sediment
沉积因子:此因子乘以将从水流中沉降的土层量。- 值为0表示所有被侵蚀的土地都将被分解或运走,不留任何沉积物
- 值为2表示在沉降前土层量会翻倍(非现实效果)
- 现实值应略低于1,但在0-2范围内都能获得良好效果
沉积物:0, 0.5, 0.75, 1, 2
-
Fluidity
流体迭代:用于计算水流运行的遍历次数。-
值越高,沉积物从原始侵蚀位置移动的距离越远
-
与迭代次数参数一起,对性能有很大影响
流体:1, 3, 10, 30
-
8、Sediment (new) 沉积物(新)
9、 Beach (new) 海滩(新)
10、Ledge (new) 岩礁(新)
11、Direction (new) 方向(新)
在某些情况下,光照方向可能与生成器的水平角度(Hor Angle)相匹配。这种情况下,节点效果可能会显得过强或过弱(甚至几乎消失)。请尝试旋转场景中的光源对象。
12、Levels 色阶生成器
概述
色阶生成器用于调整地图的高度或深度,改变对比度或校正地图的伽玛值。
操作方式
- 所有色阶滑块都可以拖动调整
- 输出高/低级别滑块:垂直拖动
- 输入低/高级别和伽玛滑块:水平拖动
- 重置滑块:将滑块拖出节点外释放
- 伽玛值重置后会始终放置在输入低和高级别之间(值为0.5)
与曲线生成器的比较
在大多数情况下,色阶生成器可以替代曲线生成器:
-
曲线生成器更灵活,提供更多控制
-
色阶生成器运行速度更快,界面更紧凑
-
主要优势:色阶生成器的属性可以暴露给函数使用,而曲线生成器的关键值无法暴露,无法从父图中调整
属性暴露
要暴露滑块属性或手动输入数值,请展开"参数"卷展栏,可以像其他生成器一样编辑这些值。
应用场景:
原始未修改的地形
通过降低输入级别范围来增加对比度
通过降低输出级别范围来降低对比度
通过调整输入和输出级别来偏移高度
改变伽玛值
13、Mask 遮罩生成器
概述
遮罩生成器根据遮罩值将 InputA 与 InputB 进行混合:
-
如果遮罩像素值为 1,使用 InputA 像素
-
如果遮罩像素值为 0,使用 InputB 像素
-
如果遮罩像素值为 0.5,InputA 和 InputB 以相等比例混合
与其他生成器的比较
同样的效果可以通过两个混合(Blend)节点序列实现,但有时使用遮罩生成器更加方便。单个遮罩节点也比两个混合节点运行速度稍快。
属性
Invert
反转:反转遮罩值,使:- 值 0 用于 InputA
- 值 1 用于 InputB
14、Normalize 归一化生成器
概述
归一化生成器用于合并多个地图,使它们的总和始终为 1。
工作原理
归一化生成器的最终结果取决于图层顺序。图层的混合方式类似于 Photoshop 和其他图形编辑器中的图层系统:每个上层都会覆盖在底层之上。
数学算法:每个图层生成器将所有底层图层的值乘以当前图层的逆值(1-值)。输出地图值的总和始终等于 1。
应用场景
-
一些生成器(如 Biomes Set 或 Textures Output)内置了归一化功能
-
在某些情况下,手动预先归一化它们会很有用
-
需要对 Mask 节点、Grass Output 或其他节点的遮罩进行归一化
归一化草地遮罩示例
输入
-
所有图层的输入:源非归一化地图
-
背景层不需要输入,因为它被视为完全填充(常数为 1)
-
背景层不能被移除或上下移动
输出
- 所有图层的地图输出:输入地图经过处理,使得地图值的任何像素总和都等于 1
属性
- 不透明度:每个图层都有一个不透明度值,该值会在应用图层的地图之前乘以图层的地图
15、Slope 坡度生成器
概述
坡度生成器用于生成高度差异图。对于每个地图像素,它会计算与四个相邻像素的平均高度差。这个工具对于区分水平和垂直表面非常有用(例如分别用草地和悬崖纹理填充)。
使用坡度生成器仅遮罩倾斜区域
属性
From
起始角度:遮罩效果的起始角度(以度为单位)。
起始角度:10, 20, 30, 50To
结束角度:遮罩效果的结束角度(以度为单位)。通常设置为90度(垂直),但如果您想要创建反向效果(从0到X)或仅遮罩特定角度的坡度(从X到Y),可能需要设置此值。
结束角度(起始角度为20时):20, 30, 40, 90Smooth Range
平滑范围:遮罩效果与未遮罩效果之间的过渡范围(以度为单位)。
平滑范围:0, 10, 20, 50
16、Selector 选择器生成器
概述
选择器生成器用于选择(遮罩)指定级别的值区间。简单来说,如果值在"从-到"范围内,则变为1,否则变为0(如果不考虑过渡效果的话)。
过渡效果
过渡效果允许渐变遮罩 - 它在"从"和"到"两端都创建平滑的渐变。
应用范围
选择器不仅适用于高度图,它可以处理任何类型的地图。例如,可以从简单形状(Simple Form)的圆锥生成圆形遮罩:
属性
-
Set Range
设置范围:在过渡值和最小/最大值之间切换节点界面。选择哪种UI类型是个人偏好的问题(在最小/最大模式中,您可以分别为起始或结束设置不同的过渡)。
在最小/最大模式中:最小值使用 X-Transition/2 转换,最大值使用 Y+Transition/2 转换。 -
Units
单位:确定使用地图单位(范围从0到1)还是世界单位(范围从0到250或输出/MM对象设置中设置的值)。 -
From
起始值:确定下限选择范围。所有高于此值(或最小-最大范围)的值都将被选中,直到达到"到"值。
起始值(当"到"值为0.66时):0, 0.5, 0.55, 0.6 -
To
结束值:确定上限选择范围。从该值开始的所有低于此值的值都将被选中。
结束值(当"从"值为0.5时):0.5, 0.6, 0.7, 0.8, 0.9 -
Transition
过渡:设置前后端的渐变范围,实现平滑遮罩效果。
过渡:0, 0.05, 0.1, 0.2, 1
17、Terrace 梯田生成器
概述
梯田生成器在山丘的斜坡上产生阶梯状的陆地形态。与噪声生成器(作为梯田的输入)和侵蚀生成器(源自梯田的输出)一起使用,可以产生精美的景观。
不要低估梯田生成器——即使纯梯田输出看起来不够好,与侵蚀结合后,可以使地形更加真实和多样化。
初始地形 | 梯田生成器 | 梯田+侵蚀
属性
-
Num
数量:设置梯田的台阶数量 - 从2(在地形顶部和底部)到任何合理的数字(注意,将梯田高度设置得低于单位通常没有意义)。
此参数会影响生成器的性能,但由于梯田生成器相对较快,低于100的任何值都不会对总生成时间产生明显影响。
数量:10, 20, 30 -
Uniformity
均匀性:梯田台阶的高度差。-
当设置为1时,所有台阶的高度都相同
-
当设置为0时,高度可能从零变化到两倍均匀高度
均匀性:0, 0.5, 1
-
-
Steepness
坡度:确定台阶垂直平面(踏步高度)的倾斜程度以及踏步和踏步高度之间的弯曲角度。-
值为1将生成绝对垂直的踏步高度,踏步长度最大
-
值为0将踏步长度设置为零(但这并不意味着梯田效果会被关闭 - 要使梯田效果更不明显,请使用强度参数)
坡度:0, 0.5, 1
-
18、Unity Curve Unity曲线生成器
概述
Unity曲线生成器类似于曲线(Curve)节点,但使用Unity动画曲线界面代替。这提供了更多的灵活性和控制,但代价是生成时间增加。
输入
-
Inlet
入口(必填)- 源地图 -
Mask
遮罩 - 节点效果的透明度遮罩。遮罩的值越高,曲线效果越明显
属性
Curve field
曲线编辑区:显示曲线预览。点击它将打开曲线编辑器窗口 - 标准的Unity曲线编辑工具(更多信息请参阅Unity手册:https://docs.unity3d.com/Manual/EditingCurves.html)
19、Parallax (new) 视差生成器(新)
概述
视差生成器根据偏移X和Z值移动地图区域。相当于Photoshop中的涂抹工具。
主要用途
-
用于打破噪波或其他图案的均匀性
-
在笔刷模块中,它用作移动预设的主要元素,以在地图上移动区域
核心参数
-
Offset
偏移量:沿X轴和Z轴移动像素的距离,以世界单位计。可以是负数,表示向相反方向移动。 -
Intensity maps
强度图:沿X轴和Z轴移动的系数。-
如果值为1,将沿此轴以偏移量距离移动
-
如果为0,则完全不移动
-
最终移动距离的算术表示为:偏移量 × 强度
-
-
Interpolation
插值:读取源像素以偏移量的算法:-
None 无:将读取没有插值的像素(偏移量×强度位置的最邻近像素)
-
Always 始终:将读取像素之间的值,进行双线性插值
-
OnTransitions 在过渡时:当强度值低于1时,将进行插值读取,如果强度值为1则不进行插值。用于防止在笔刷模块中使用时,笔刷中央(全硬度)部分出现模糊。
-
Outputs 输出
1、Height 高度输出生成器
概述
高度输出生成器将输入地图应用于地形高度。
输出生成器说明
输出生成器使所有地图和对象输入变得生动:将地图转换为地形高度图、分层图或细节图,并在地形上放置真实对象。所有生成器链最终都应结束于一个(或多个)输出生成器 - 否则它们将不会生成任何内容。
输入
Input
输入:将应用于地形的地图
属性
重要提示:所有带有链接图标(
)标记的属性不是存储在图中,而是在MapMagic对象(输出设置)中。将此图分配给不同的MM对象将虚拟地将这些值设置为MM对象的值。更改这些值将更改MM对象的值,以及所有生物群落和子图。
-
Height
高度:地形最大高度。更改此值将为每个瓦片的地形高度参数设置地形高度。不影响图映射(它只会将地形向上拉伸)。要降低最大地形高度,请降低所有生成器的强度。
高度:100, 200, 300, 400 -
Interpolation
插值:在高度上平滑地形应用:-
None 无:直接应用高度图(生成的地图像素 → 到地形高度图像素)。应用速度最快
-
Smooth 平滑:在两个像素之间进行插值,稍微平滑应用的高度图。仍然具有较快的应用速度,但可能会丢失一些小细节
-
Scale 2X 缩放2倍:将应用的高度图在每个维度上放大两倍,使地形更加详细。这样,地形多边形的密度是其他地图(如分层图)的四倍
例如,当在MapMagic中使用513的分辨率时,地形瓦片高度图的大小将是1025 -
Scale 4X 缩放4倍:进一步增加地形密度。主要用于创建低MapMagic分辨率的平滑地形。应用时间最慢
注意:Unity支持的最大地形分辨率为2049。因此,MapMagic在2X缩放下的最大分辨率为1025,而在4X缩放下为513
-
-
Out level
输出级别:选择此输出是否应用于主级别或草案级别-
Draft 草案:仅应用于草案(预览)地形。如果您有其他输出,其图形线程更复杂,并应用于主地形级别,这将很有用
-
Main 主级别:仅应用于主高分辨率块。一些输出,如草地,不需要在草案瓦片上应用其效果,因此建议在主输出级别使用它们
-
Both 两个:输出同时应用于草案和主瓦片
-
2、Holes 孔洞输出生成器
概述
在地形上创建孔洞效果
输入
Input
(输入):使用遮罩图来定义孔洞位置- 亮色区域 → 识别为孔洞
- 暗色区域 → 保留为原有地形
属性
-
Tolerance
(容差):-
高于容差值的区域 → 转换为孔洞
-
低于容差值的区域 → 用地形填充(形成隆起)
-
3、Textures 纹理输出生成器
概述
此功能用于应用地形纹理信息,即使用纹理为地形"上色"。
重要特性说明:
-
内置归一化器:纹理输出内置了归一化器。它会混合各个图层并进行归一化处理,确保所有图层的权重总和始终为1。
-
图层顺序关键:正因如此,图层的顺序非常重要——上方的图层会覆盖下方的图层。您可以将图层遮罩理解为 Photoshop 中的图层蒙版。
-
背景层:背景层不需要输入遮罩,因为它被视为完全填充(常数值为1)。
使用方法:
要使用纹理输出,您需要先创建 地形层 资源文件:在 Unity 编辑器中,通过 Assets -> Create -> Terrain Layer
创建。然后,将这些资源文件分配到"纹理输出"节点的相应图层槽中。
主要属性:
-
Opacity
不透明度:控制此图层的可见度因子。 -
Layer
图层:指定要使用的 Terrain Layer 资源。
属性
点击属性选项卡会直接展开图层设置,这样您就可以在不单独打开地形层资源文件的情况下修改其参数。
注意:在此处修改这些值会直接改变地形层资源文件本身。
-
Diffuse
漫反射:地形层的基础颜色纹理。 -
Normal
法线:为地形层提供法线信息的纹理。 -
Mask
遮罩:-
(HDRP)高清渲染管线和通用渲染管线 (URP)中的 TerrainLit 着色器会使用此遮罩纹理数据。
-
自定义的地形着色器也可能用它来实现用户定义的效果,例如环境光遮蔽或基于高度的混合。
-
-
Specular
高光:地形层的镜面高光颜色。 -
Metallic
金属度:地形层的整体金属感数值。 -
N. Scale
法线强度:地形层法线纹理的缩放因子。此值用于调整法线贴图的强度效果。
4、Grass 草地输出生成器
概述
输出生成器,使用图层遮罩在地形上绘制草地。此生成器也可以放置细节网格。
属性:
草地图层参数与 Unity 标准的地形草地和细节属性类似。
-
Mode
模式:确定它将生成标准草地、广告牌草地还是细节网格。-
Grass
草地:使用静态平面显示草地的默认方法。 -
Billboard
广告牌:广告牌草地图像将旋转,使其始终面向相机。 -
Mesh Vertex Lit
网格顶点光照:用于放置细节网格(不支持透明度)。 -
Mesh Unlit
网格无光照:用于放置自定义无光照草地灌木,支持透明度。
模式:草地,广告牌,网格顶点光照,网格无光照
-
-
Texture
纹理字段(用于草地模式):草地的反照率(漫反射)纹理。 -
Object
对象字段(用于网格无光照/顶点光照模式):一个细节网格预制件。 -
Density
密度:当前草地类型对象的数量。
密度:0.1, 0.3, 1, 2 -
Dry/Healthy
干燥/健康颜色:交替的草地块在中心比在边缘看起来更"健康",健康/干燥颜色设置通过颜色显示了草丛的健康状况。
(技术说明:噪声实际上是通过 Perlin 噪声生成的;噪声扩散指的是地形上的 x, y 位置与噪声图像之间的缩放比例。)
白色干燥黄色健康,红色干燥黄色健康,红色干燥绿色健康 -
Width
宽度和Height
高度值指定了生成的草丛大小的上下限。
高度:1-1,宽度:1-1, 2-2, 3-3, 1-3 -
Noise
噪声扩散值控制着交替斑块的近似大小,值越高表示给定区域内变化越多样。
(技术说明:噪声实际上是通过 Perlin 噪声生成的;噪声扩散指的是地形上的 x, y 位置与噪声图像之间的缩放比例。)
干燥/健康颜色以不同的噪声值扩散:0.02, 0.1, 0.2, 1 -
Downscale
降采样:设置比例以降低草地块的分辨率,减少地形草地/细节数据。设置为 1 时,地形细节分辨率将与主瓦片分辨率相等;设置为 2 时,将仅使用一半的分辨率。 -
Res/patch
每块分辨率:定义每个草地块的细节分辨率。
输出级别
-
Out level
输出级别:选择此输出应用于主级别还是草案级别。-
Draft
草案:仅应用于草案(预览)地形。如果您有其他输出,其图形线程更复杂,并应用于主地形级别,这将很有用。 -
Main
主级别:仅应用于主高分辨率块。一些输出(如草地)不需要在草案瓦片上应用其效果,因此建议在主输出级别使用它们。 -
Both
两者:输出同时应用于草案和主瓦片。
-
6、MicroSplat 输出生成器
概述
MicroSplat输出生成器为MicroSplat地形着色器应用必要的数据。应该使用它来替代标准的纹理输出节点。
仅在安装了MicroSplat并启用了MicroSplat兼容性时可用。
属性:
Material
材质:用于地形的MicroSplat材质。
MicroSplat材质可以通过以下方式创建:首先创建MicroSplat着色器(
Assets -> Create -> MicroSplat -> MicroSplat shader
),然后将此着色器分配给任何新创建的材质。
-
Layers
图层:与纹理输出类似,每个图层代表地形上的一个纹理。MicroSplat输出内置了归一化器,它会混合各图层并进行归一化处理,确保它们的总和始终为1。图层顺序很重要——每个上层都会覆盖下面的图层。可以将图层遮罩视为Photoshop中的图层遮罩。
图层输出返回归一化的混合结果。
高级属性:
所有高级属性都是全局的,并应用于图中所有的生物群落。
建议在更改这些值之前取消所有地形的固定,然后重新固定
-
Set Component
设置组件:为每个地形应用MicroSplat组件。启用时会增加地形应用时间(生成结束时增加1帧延迟),但提供了使用许多模块中高级MicroSplat功能的可能性。启用设置组件需要分配属性数据。
禁用时,它会添加一个材质属性序列化组件——一个简单的脚本,在序列化时创建并分配材质属性,以保存应用的控制图。
-
Prop Data
属性数据:MicroSplat组件需要分配一个MicroSplatPropData资产才能正常工作。这需要使一些高级功能(如三平面映射)正常工作。如果启用了设置组件,请分配此资产。在哪里找到:MicroSplat通常会在具有MicroSplat着色器的材质旁边自动创建两个资产:PropData和Keywords。
-
Tex Arr Cfg
纹理数组配置:用于创建纹理数组的纹理数组配置资产。其中分配了漫反射、法线和其他纹理。应用适当的地形层所必需。 -
Apply Type
应用类型:对于一些高级功能,MicroSplat需要传统的地形alpha图(那些通过纹理输出分配的图)。您可以同时使用纹理输出和MicroSplat节点,但启用此选项将执行纹理输出节点通常执行的所有操作,而无需单独创建它。
Textures
纹理:仅使用MicroSplat控制纹理Splats
地形贴图:仅应用标准地形alpha图(如果启用了设置组件,MicroSplat将读取它们并将其转换为MicroSplat数据)Both
两者:将同时应用MicroSplat控制纹理和传统alpha图
-
Custom Splatmaps
自定义地形贴图:如果在着色器中启用了MicroSplat的"使用自定义地形贴图"选项(任何MicroSplat材质 -> Core -> Advanced -> Use Custom Splatmaps),则正确命名MicroSplat控制图。 -
Add Normals Tex
添加法线纹理:生成并分配地形法线纹理,这可能用于高级MicroSplat功能(如网格混合)。法线纹理是一个3通道RGB24图,分配给
_PerPixelNormal
材质槽。
输出级别
-
Out level
输出级别:选择此输出应用于主级别还是草案级别。-
Draft
草案:仅应用于草案(预览)地形。如果您有其他输出,其图形线程更复杂,并应用于主地形级别,这将很有用。 -
Main
主级别:仅应用于主高分辨率块。一些输出(如草地)不需要在草案瓦片上应用其效果,因此建议在主输出级别使用它们。 -
Both
两者:输出同时应用于草案和主瓦片。
-
7、MegaSplat
8、CTS
9、VS Pro Maps VS Pro 地图
10、DirectTextures 直接纹理输出生成器
概述
用于输出纹理,以便在其他非MapMagic相关脚本中使用。
直接纹理输出有多个输入层。每个层都有一个用户定义的名称和通道,并在生成过程中通过其输入接收地图数据。
该节点的工作方式类似于直接矩阵,但它将矩阵转换为纹理,以Unity通用的格式存储数据。
用例
通过这个图表,您可以获取雪、沙漠和森林生物群系的纹理图:
它将创建一个名为BiomeMap
的纹理,并将雪数据存储在蓝色通道,沙漠数据存储在红色通道,森林数据存储在绿色通道。
要获取此纹理,请使用:
directTexturesHolderObject["BiomeMap"]
要自动查找持有者对象并获取纹理:
DirectTexturesHolder.FindTexture(mapMagicObject, "BiomeMap", playerPos.x, playerPos.z);
所需命名空间:MapMagic.Core
和 MapMagic.Terrains
。
属性:
Layer Name
图层名称:用户定义的纹理名称,用于在其他脚本中引用该纹理Channel
通道:选择在纹理的哪个通道(R、G、B、A)中存储数据Input
输入:接收矩阵数据的输入端口
输出级别
-
Out level
输出级别:选择此输出应用于主级别还是草案级别。-
Draft
草案:仅应用于草案(预览)地形。如果您有其他输出,其图形线程更复杂,并应用于主地形级别,这将很有用。 -
Main
主级别:仅应用于主高分辨率块。一些输出(如草地)不需要在草案瓦片上应用其效果,因此建议在主输出级别使用它们。 -
Both
两者:输出同时应用于草案和主瓦片。
-
注意:DirectTextures输出生成器特别适用于需要将MapMagic生成的地形数据传递给自定义脚本或其他系统的场景,如动态天气系统、AI导航或其他游戏机制。
11、DirectMatrices 直接矩阵输出生成器
概述
用于输出地图,以便在其他非MapMagic相关脚本中使用。
直接矩阵输出有多个输入层。每个层都有一个用户定义的名称,并在生成过程中通过其输入接收地图。
一旦生成完成,直接矩阵将为MapMagic生成的每个地形分配一个名为"DirectMatricesHolder"的MonoBehavior。该组件分配给地形游戏对象,位于Terrain组件旁边。它存储了一个<layer names, layer maps>
<层名称,层地图>的字典。
每个持有者都有一些辅助方法来执行与地图的基本操作,例如通过层名称获取世界位置上的值。
直接矩阵以WorldMatrix格式存储地图。它主要是MapMagic类,但如果你需要一些高级功能,如法线值或平均值等,你可以使用MapMagic的所有Matrix和WorldMatrix方法。
与直接纹理不同,它不会将矩阵转换为纹理,而是在MapMagic内部使用的格式中存储数据。
用例
Direct Maps 最常见的用途是确定某些特定生物群落的影响值,以便应用粒子或后置效果。例如,我们可能想知道雪生物群落的密度值,以调整降雪强度。
此图包含生物群落演示图,并有一个DirectMatrices节点连接到SnoPlains出口。它将雪地生物群落的强度存储在名为"Snow"的容器中。可以通过以下方式获取雪地生物群落的强度:
DirectMatricesHolder.FindValueAtPosition(mapMagicObject, "Snow", playerPos.x, playerPos.z);
所需命名空间:MapMagic.Core
和 MapMagic.Terrains
。
直接矩阵持有者API
DictionaryOrdered<string,MatrixWorld> maps
存储在此地形中所有地图的字典。可以作为常规字典使用:Dictionary<string,MatrixWorld>
,也可以按数字访问:如maps[42]
。
以下是如何使用矩阵的MatrixWorld API。
bool ContainsPosition (float x, float z)
检查地图是否包含以世界单位(X和Z)给出的位置。
float ValueAtPosition (string name, float x, float z)
float ValueAtPosition (string name, Vector3 pos)
float ValueAtPosition (int num, float x, float z)
float ValueAtPosition (int num, Vector3 pos)
通过名称(或编号)选择矩阵,并返回在世界单位位置给出的值。位置向下取整到像素,无插值。
float ValueAtPositionInterpolated (string name, float x, float z)
float ValueAtPositionInterpolated (string name, Vector3 pos)
float ValueAtPositionInterpolated (int num, float x, float z)
float ValueAtPositionInterpolated (int num, Vector3 pos)
通过编号选择矩阵,并返回在世界单位位置给出的值。位置在最近像素之间插值。用于精确操作。
Dictionary<string,float> AllValuesAtPosition (float x, float z)
在给定的世界位置找到所有值,并将它们作为名称->值字典返回。无插值。
脚本示例
根据坐标世界位置找到合适的持有者。如果没有找到,则返回Null。使用GameObject.FindObjectOfType
,因此它不是很快。只是一个示例。使用mmObject.tiles.FindByWorldPosition(x,z)
更快地找到瓦片,并使用GetComponent
获取持有者。
public static DirectMatricesHolder FindHolder (float x, float z)
{DirectMatricesHolder[] holders = GameObject.FindObjectsOfType<DirectMatricesHolder>();foreach (DirectMatricesHolder holder in holders){if (holder.ContainsPosition(x,z))return holder;}return null;
}
找到合适的持有者,并评估给定名称的地图上的位置。如果我们想知道玩家当前所在/在的生物群落或陆地纹理值。如果玩家不在任何地形中,则返回0。
public static float FindValueAtPosition (string name, float x, float z)
{DirectMatricesHolder holder = FindHolder(x, z);if (holder != null)return holder.ValueAtPosition(name, x, z);elsereturn 0;
}
九、Objects Generators 对象生成器
Initial generators 初始生成器
1、Positions 位置(暂无介绍
)
2、Scatter 散布生成器
概述
在地形区域内散布对象,随机创建新的对象位置。通常它是启动对象节点链的第一个生成器。
与随机生成器不同,它将对象虚拟地放置在一个有序的网格中,然后随机偏移它们的位置。它比随机节点快得多,并且大多数情况下都适用。然而,对于一些需要"真正的随机"散布的情况,随机生成器可能仍然需要。
属性:
-
Seed
种子:用于初始化伪随机噪声生成器的数字。如果两个生成器使用相同的种子数字,则生成的模式将相同。 -
Density
密度:每平方公里散布的对象数量(100x100单位)。请注意,由于对象是在地形瓦片内加边距的随机位置放置的,因此瓦片内对象的总数可能在较大和较小的一侧都有所不同。
密度:10,100,1000,10000如果密度值低于1(假设地形大小为1000),它将只在某些地形的上散布对象,而其他地形则为空。
-
Uniformity
均匀性:对象在网格中"虚拟散布"后保持多近。如果值为0,对象可以放置在其"网格单元"内的任何位置;如果为1,则不移动并固定在"单元格中心"。
均匀性:0,0.1,0.5,1
高级标签:
-
Relax
放松:在某些情况下,尤其是当均匀性值较低时,物体可能会过于靠近彼此——例如,当一个物体从其单元格中心移动(1,0)时,右侧的物体(-1,0)。因此,在物体被散布后,生成器应用位置平滑算法,将过于靠近的物体推开。
放松:0,0.5,2,4
-
Add. Margins
附加边距:附加边距会将边距值添加到当前瓦片设置中。这允许散布对象超出瓦片边界。由于散布算法对每个瓦片都类似,超出瓦片边界的散布对象将与其他瓦片上散布的对象相对应。这样,瓦片就"意识到"其他瓦片上的对象。当对这样的散布执行印章、描边或压平操作时,节点的结果将在几个瓦片上扩散,几乎无缝。
它不会从瓦片边界创建偏移以避免在这里散布。如果您想要这样的偏移,请使用带有金字塔简单形状遮罩的遮罩。
3、Random 随机生成器
概述
使用非网格随机放置对象。对象通过掩码的概率因子和其他对象的距离来创建。
应用场景:
通常以这种方式放置生成对象需要更多时间,因此只有在无法通过散布(例如,如果散布的对象仍然过于均匀)实现所需效果时才建议使用随机节点。
零均匀性:散布(左)和随机(右)
输入:
随机节点可以接收概率掩码。放置对象时将考虑掩码值因子。某些地图区域的像素值越高,那里生成的对象就越多。
请注意,与使用掩码节点对Random的结果进行掩码处理不同,使用概率将尝试保持密度中设置的对象数量。这样,它会在掩码值高的地方更频繁地放置对象,在掩码值低的地方则较少。
不仅仅是移除低掩码区域的对象。
属性:
-
Seed
种子:用于初始化伪随机噪声生成器的数字。如果两个生成器使用相同的种子数字,则生成的模式将相同。 -
Density
密度:每平方公里散布的对象数量(100x100单位)。请注意,由于对象是在地形瓦片内加边距的随机位置放置的,因此瓦片内对象的总数可能在较大和较小的一侧都有所不同。
密度:10,100,1000与散布不同,如果密度低于1,它不会在任何地形上创建对象。
-
Uniformity
均匀性:在随机放置对象时距离因素的影响。如果为0,它将完全随机放置对象,不考虑已放置的对象。如果为1,它将尝试找到与已存在对象等距离的位置。请注意,真正的"网格"均匀性,就像散布中的那样,在这里是无法实现的。
更大的均匀性值会降低性能。
均匀性:0,0.1,0.5,1
4、GetByTag 按标签获取生成器
概述
从场景中读取具有特定标签的对象并将它们输入到MapMagic中。
节点读取对象变换的位置、旋转和局部缩放。
应用场景:
如果某些POI(村庄、出生点等)在生成之前应该被定义,并且MapMagic应该考虑这些坐标。
属性:
-
Tag
标签:读取对象的标签。 -
Add. Margins
附加边距:附加边距 - 为了后续节点的性能,按标签获取只读取图块(及其边距)内的对象。然而,这些边距可以通过此字段增加。当值大于此处提供的场景边界时,按标签获取将读取所有对象,无论它们是否在图块上。
Modifiers 修饰符
1、Adjust 调整生成器
概述
在地形区域内散布对象,随机创建新的对象位置。通常它是启动对象节点链的第一个生成器。
与随机生成器不同,它将对象虚拟地放置在一个有序的网格中,然后随机偏移它们的位置。它比随机节点快得多,并且大多数情况下都适用。然而,对于一些需要"真正的随机"散布的情况,随机生成器可能仍然需要。
属性:
-
Seed
种子:用于初始化伪随机噪声生成器的数字。如果两个生成器使用相同的种子数字,则生成的模式将相同。 -
Height
高度:沿Y(垂直)轴移动对象。值以世界单位表示。
高度:-10,0,10,20 -
Front
前方:沿对象的局部前方(Z)轴偏移对象。值以世界单位表示。 -
Right
右侧:沿对象的局部右侧(X)轴偏移对象。值以世界单位表示。与前方一起在旋转之前应用 - 如果需要在对象旋转后移动对象,请使用两个Adjust节点。 -
Rotation
旋转:对象沿Y(垂直)轴旋转,以度为单位
旋转:0,10,45,360 -
Scale
缩放:改变对象的大小(3个轴均匀)
缩放:0.5,1,2,4 -
Random Range
随机范围:切换生成器界面到范围模式——不是为所有对象使用相同的值,而是为每个对象随机选择值,使用定义的最小值和最大值。启用范围模式后,节点调整将如下所示:
高度范围:0 — 0, -10 — 10, -10 — 20, 0 — 30
旋转范围:0 — 0, 0 —10, 0 — 45, 0 — 360
缩放范围:0.5 — 1, 1 — 2, 0.5 — 2, 0.5 — 4 -
Seed
种子(当启用随机范围时):由于随机生成器用于选择范围,因此种子值被暴露出来以初始化它。不同的种子值将使相同的对象具有不同的范围值。如果两个Adjust生成器使用相同的种子数字,范围和输入,则产生的调整将是相同的。
-
Size Factor
大小因子:根据初始对象大小(来自之前的调整)乘以此生成器应用的变化。例如,如果对象的大小是2,那么如果因子等于1,所有调整值都将加倍。这对于成比例的对象变化很有用:例如,如果对象应该降低到其高度的一半。当值为0时,所有对象都将根据其大小进行调整。
换句话说:物体的尺寸越大,调整幅度就越大。
尺度因子:0(所有物体提升相同),0.5,1,2,10(物体越大,提升越高) -
Relativity
相对性:当选择"相对"类型时,所有调整变化都应用于现有物体的高度、旋转和尺寸。"绝对"类型将重置旧值,然后将物体放置(并缩放)在零水平面上,没有旋转,缩放比例为1。
原始图形,不同对象大小
相对模式:每个对象大小乘以两倍
绝对模式:每个对象大小设置为2,无论其原始大小如何
2、Combine 合并
将多个对象列表合并为一个。结果对象列表包含所有源列表中的对象。
3、Floor 地面生成器
概述
将所有对象的定位放置在高度图级别。
当处理具有相对高度功能的对象或树木输出时,可能会觉得对象默认放置在地面上。然而,除非对象节点带有对象/树木输出或使用Floor进行地板化,否则它们没有关于地形高度的数据。对象的默认高度为零。
当使用调整节点调整对象时,例如,将其提升10个单位 - 所有对象的高度都设置为10,而不是10+地形高度。
地面节点使实际对象高度等于当前的高度图。
应用场景:
如果您想放置与地形无关高度的对象,地面生成器可能很有用。您可以将任何地图作为节点高度图输入,包括最终地形中不会输出的地图:
地面节点还应在使用互连节点将对象转换为样条时使用。否则,生成的样条将放置在零级而不是地形上。
属性:
Relativity
相对性:在绝对模式下,最终对象高度等于其位置处的地形高度,无论之前对象的高度如何。
在相对模式下,地形高度附加到对象位置:例如,如果某个调整节点将其高度设置为10,然后应用地形高度为20的地板,最终对象高度将是30。
5、Flatten 压平生成器
概述
创建对象下的平坦土地,以便放置房屋或需要平坦土地的结构。
输入:
-
Positions
位置:将成为平坦区域中心的对象。 -
Heights
高度:当前的高度图,将使用此生成器进行调整。
属性:
-
Radius
半径:调整区域的半径(包括衰减区域),以世界单位计。
半径:10,50,100 -
Hardness
硬度:完全平坦土地半径占总半径的百分比。范围从0(没有平坦土地)到1(半径内的所有土地都是平坦的)。
硬度:0,0.333,0.666,1 -
Size Factor
大小系数:根据初始对象大小乘以此生成器应用的变化。例如,当系数=1时,如果对象的大小是2,那么所有平坦印章的大小都将加倍。
尺度因子:0,0.25,0.5,0.75,1 -
Use Noise on Falloff
在衰减区域使用噪声:在扁平图章过渡区域应用噪声。用于使图章有机地融入周围噪声地形。
无噪声(左侧)与使用噪声(右侧) -
Noise Amount
噪声量(当开启使用噪声时):应用衰减噪声的量。如果值大于1,噪声可能会超过周围地形高度,看起来不自然。
噪声量:0,0.5,1,2 -
Noise Size
噪声大小(当启用噪声时):衰减噪声图案的大小。
噪声大小:2,5,10,25
6、Forest 森林生成器
概述
模拟自然森林生长:种子传播、树木生长、光照充足度和土壤质量。森林生成器可以生成多种单一类型的森林。随着森林的生长和扩张,它们将联合成一个整体。
每个森林从一棵树——一棵幼苗开始。
与侵蚀生成器一样,这个生成器需要一些时间来计算。请记住,森林是一个具有负反馈的系统。初始的每一个微小变化都可能导致最终结果完全不同。
所以,使用略有不同的输入生成森林可能会导致最终画面非常不同。例如,改变幼苗的位置可能会导致整个森林死亡,而其他森林数组会出现在不同的地方。
输入:
-
Seedlings
幼苗 - 初始树木。每棵幼苗都会开启一片新的森林。 -
Other Trees
其他树木 - 为树木提供遮荫的额外对象。例如,在种植白桦林时,可能会有寿命更长的树木,如橡树。这个对象哈希值可以防止森林在其他森林的区域生长。 -
Soil
土壤 - 一张控制树木存活和产生种子的概率的地图。低质量(低地图值)会增加树木死亡的概率。把它想象成土壤质量,但这也可能是高度或坡度因素或它们的乘积。此参数不仅可以控制土壤质量,还可以控制其他方面,如高度或坡度系数。
属性:
-
Years
年数:自第一棵幼苗开始生长以来经过的年数。在大多数情况下,此参数决定了森林的大小,但在某些情况下,森林在成熟后可能会缩小,甚至死亡——这通常发生在高大树木(即高遮阴度值)和贫瘠土壤的情况下。
年数:15,30,50,100,150 -
Density
密度:1 平方公里区域内树木的最大数量(以世界单位计)。此值等同于散布密度参数。
密度:5000,10000,15000 -
Fecundity
繁殖率:树木每年产生的幼苗数量。数值越高,森林扩散越快。
繁殖率:0.1,0.2,0.5,0.8除了年数参数,此值还设置森林大小。然而,年数确定迭代森林大小,而繁殖率设置每次迭代创建的树木数量。使用繁殖率而非年数会导致在不适宜的条件下生长更多年轻的树木。
-
Seed Dist
种子分布:树木能将种子抛掷多远(以世界单位计)。增加此参数可以使森林快速扩散,但变得不那么可预测。较大的值可以使种子穿越不适宜的土壤区域(如悬崖或河流),使森林跨越自然障碍物扩散。
在肥力较低的情况下增加此值会使森林密度降低,因为所有幼苗都广泛分布。
种子分布(肥力 0.2):5,15,30,50
-
Reproductive Age
繁殖年龄:树木开始在其周围产生幼苗的年龄。 -
Survival Rate
存活率:树木每年存活的机会。此值与土壤遮罩相乘。 -
Max Age
最大年龄:树木的最大寿命。当树木达到此年龄时会死亡,但由于条件恶劣(即存活率低),它可能更早死亡。 -
Size is Age
大小为年龄:将输出对象的大小(比例)因子设置为树的年龄(以年为单位)。如果启用,树木输出中每棵树的年龄将记录为对象大小。一年对应大小为 1 个单位:第一年的树苗大小为 1,而百年树的大小为 100。
使用拆分生成器对树木进行分类,并正确设置条件:例如,对于幼树,大小条件应为 0-10;对于中等树木,应为 10-30;对于大树,应为 30-200。请注意,大多数树木的比例将超过 1,使用调整生成器进行修改或在树木输出中禁用比例。
7、Mask 遮罩生成器
概述
使用遮罩图来移除对象。
遮罩图上所有放置在零像素(全黑)处的对象将被移除,所有放置在全白像素上的对象将保留。如果对象放置在灰色像素上,它将被随机移除,具体取决于遮罩像素的值。
属性:
-
Seed
种子:遮罩节点使用随机数来移除灰色值上的对象。此种子值是一个用于初始化伪随机噪声发生器的数字。 -
Invert
反转:反转输入遮罩的效果。当启用时,将移除白色区域上的对象,并保留黑色区域上的对象。
反转:关闭,开启
8、Move (new) 移动(新)
9、Rarefy 稀释
10、Randomize 随机化
11、Split 分割
12、Stroke 描边
13、Spread 扩散
14、Stamp 印章
15、Slide 滑块
16、ShrinkScale (new) 缩放比例(新)
Outputs 输出
Objects 对象
Trees 树木
十、Splines Generators 样条生成器
Align 对齐
Avoid 避免使用
Combine 合并
Floor 地面
Interlink 互链
Merge 合并
Optimize 优化
Pathfinding 寻路
Push 推进
Relax 放松
Scatter 散布
Stamp 印章
Stroke 描边
Weld Close 焊接关闭
Output 输出
十一、Biomes 生物群落
Biomes Set 生物群落集合
Function 函数
Whittaker 威特克
Biome Mask 生物群落掩码
十二、Brush 刷
Quick Start 快速开始
Brush Menu 笔刷菜单
Terrains Menu 地形菜单
Presets Menu 预设菜单
Included Presets 包含预设
Brush Inputs/Outputs 笔刷输入/输出
Height 高度
Textures 纹理
Grass 草地
Trees 树木
Objects 对象
Other 其他
Required Control Texture Resolution所需控制纹理分辨率
十三、Maps Sets Generators 贴图集生成器
可同时对多张贴图进行操作。贴图集可视为一种<Texture,Map>
<纹理,贴图>字典结构,其中每个纹理对应一个地形层或草地漫反射纹理。
贴图集主要包含与单张贴图相同的节点——它们被归类在"标准"类别下。
1、Add 添加(暂无介绍
)
2、Pick 选取(暂无介绍
)
3、Create 创建(暂无介绍
)
4、Combine 合并(暂无介绍
)
待续
专栏推荐
地址 |
---|
【unity游戏开发入门到精通——C#篇】 |
【unity游戏开发入门到精通——unity通用篇】 |
【unity游戏开发入门到精通——unity3D篇】 |
【unity游戏开发入门到精通——unity2D篇】 |
【unity实战】 |
【制作100个Unity游戏】 |
【推荐100个unity插件】 |
【实现100个unity特效】 |
【unity框架/工具集开发】 |
【unity游戏开发——模型篇】 |
【unity游戏开发——InputSystem】 |
【unity游戏开发——Animator动画】 |
【unity游戏开发——UGUI】 |
【unity游戏开发——联网篇】 |
【unity游戏开发——优化篇】 |
【unity游戏开发——shader篇】 |
【unity游戏开发——编辑器扩展】 |
【unity游戏开发——热更新】 |
【unity游戏开发——网络】 |
完结
好了,我是向宇
,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!