如何使用Prefab
Prefab 是 Pangu 提供的一套一键融合地形高度图、材质层等数据的解决方案,旨在方便用户一键修改地形,减少手编操作。
Prefab 支持:
- 整合多个 Actor
- 能对地形数据例如高度图、权重图进行预处理,并且应用(融合)在其他地形上。
- 提供 Mask 遮罩,自定义需要处理融合的区域。
Prefab 的实现基于 UE5 的 Level Instance,所以目前只有 UE5 以上版本可以使用。
什么是 Level Instance?
Level Instance 是指将一个关卡(Level)或其一部分保存为一个独立的子关卡,然后可以在其他关卡中实例化和复用。
本文将介绍如何制作 Prefab,以及怎么使用 Prefab。
我们先新建一个新的 Level,然后创建 Pangu 地形。
本例中创建的地形参数如下。
本例就简单创建几个几何体
首先在 Pangu 小地图按钮上,点击如下按钮,进入 Pangu 地形。
然后回到 UE,选择 Landscape Mode,保证是在 RealLandscape 下,UE 层下。
然后就可以利用 UE 的笔刷修改高度了。下方是刷好的高度图。
Prefab 支持用户自定义需要应用的区域。
选择 BrushType 为 Prefab
然后在地形中刷 Mask。
Mask 没刷过的区域为 Prefab 应用的区域。
Mask 刷过的区域:忽略 Prefab 的地形区域,如果刷的 Mask 的值不是最大,那么会做融合。
我们进入 Layout 工具,然后配置好 Config,刷好颜色图。
本例刷好的颜色图如下。
然后 Cook Layout,本例结果如下。
回到 Pangu 编辑器,点击左上角 Dev 菜单栏,点击 ConvertToPrefab。
就会发现在当前 Level 的同级目录下生成一个 Prefab 资产。
Prefab 制作好之后,就可以应用到其他 Level 了。打开需要应用的 Level,把刚刚的 Prefab 拖到 Level 中,然后点击生成的 Actor,找到 Details 面板,里面分别有三个按钮。
- ApplyTerrain:将高度图、权重图等应用到当前地形。
- RevertTerrain:回退应用的数据。
- RefreshActors:刷新 Prefab 中的 Actor。
我们此时点击 ApplyTerrain 按钮,就可以修改当前地形了。
支持无地形的 Level 转换成 Prefab,但是没有修改地形数据的功能,只提供 LevelInstance 的功能,也就是上述提到的 整合模型
的功能。
假设 Prefab 的地形精度与应用地形的精度不匹配时,会做插值平滑。
比如下方的 Prefab 精度如下。
应用到精度不一样的地形上,会弹出一个提示框,询问是否进行插值平滑操作。
如果点击 Yes
,那么就会进行插值操作。
Tips
精度不一样时,做插值只是一种修复方法,所以最终效果不一定可以达到预期效果。
如果需要 Prefab 达到最佳效果,我们还是建议用户在制作 Prefab 时,尽量让 Prefab 的精度与应用地形的精度完全匹配。
有些时候,拖入 Prefab 希望排除生成某些 Actor。 比如当前场景已经存在了灯光,但是 Prefab 场景也有灯光,如果不排除 Prefab 场景中的灯光,就会出现多个灯光,可能会有表现上的问题。 那么就需要一个排除 Prefab 场景 Actor 的机制。
只需要在根目录创建一个文件夹:PrefabExclude
,把需要排除的 Actor 放在该目录下即可。
Prefab的材质层和地形的材质层不一致。即Prefab的权重层在地形上不存在时,应用Prefab会将Prefab的权重层应用在当前的地形上。