All Unreal Engine 4

Unreal Foliage Import/Export 使用

NEXT引擎新功能:导入导出Foliage信息

 
 

导出操作

  1. 选中目标想要导出的Foliage所在的子关卡

  2. 来到按钮操作界面

  3. 点击Export Foliage,弹出对话框选择存储文件所在位置,点击确定即可

 
 

 
 

 
 

导出的数据格式如下图所示,/Game/Development/DataAsset/Environment/Foliage/Mesh/SM_pine_c_FoliageType.SM_pine_c_FoliageType 描述的是哪个 FoliageType,然后这个 FoliageType 下面的每一行表示的是这个 FoliageType 会存在在哪个 transform 位置。直到遇到下一条 FoliageType 或者没有数据为止。

 
 

 
 

 
 

 
 

导入操作

  1. 确保项目根目录下有 FoliageInstances.txt 文件
  2. 来到操作面板

  3. 点击Import Foliage弹出对话框,选择文件点击确定即可

 
 

上述存在的问题,如果是houdini生成的foliage,在其他项目中就找不到对应的foliagetype,因此就不好用导入导出。

改进:采用导入导出staticmesh的模式

 
 

实现:

 
 

输出的时候,直接输出的是Mesh的引用路径,注意这边的对象是 UFoliageType_InstancedStaticMesh 这个 UFoliageType 的子类,因为父类不包含mesh信息。

 
 

 
 

输入的时候判断是否直接有 Mesh 对应的 FoliageType,没有的话直接创建一个。

 

输入的时候存在 Foliageinfo 则一条条处理 transform

 
 

 
 

更新:支持查表转换

因为手游和端游的资源是不同的,因此需要对照表直接生成。

这里我们将Export的时候直接修改到导出数据,Import端直接可用。

 
 

对照表使用的是Excel来存储,包含原始(Ark)的资源引用名,目标(Arkm)的资源引用名,缩放系数(资源大小不一致,需要一个缩放值)

然后使用Excel的导出功能直接导出txt文件

将这个对照表放到Export作用的工程根目录下,并命名为Ark2Arkm.txt

 
 

然后在使用功能的时候,回到原来的功能面板,多了一个 Convert Export Mode 选项,如果勾选表示启用这个转换功能。

 
 

注意:在表里有的会被替换,查不到的保持原有的导出。

 
 

20200612 修改:

导出的时候,根据staticmesh的命名自动生成_FoliageType的对象。

导入的时候查找的是staticmesh名字的_FoliageType对象,如果找不到也会自动创建。

 
 

20200727 的修改

导出数据的时候,不做任何变化

导入数据的时候,加入convert功能,同时支持按比例random删除植被,按比例random植被大小。

 
 

因此做的修改如下

 
 

首先是修改操作界面,增加了两个选项。

 
 

Convert Export Mode:

旧版本已有参数,为了支持端游和手游的转换

不勾选则完全按照导出文件所列的staticmesh的名字来寻找foliagetype,来生成foliageinstance。

勾选的话会按照导出文件所列的staticmesh的名字来寻找foliagetype,然后查表替换成arkm的foliagetype,然后来生成foliageinstance。

具体的表格说明见第一个版本的说明。

 
 

Local Foliage Type Mode:

为了支持本地foliagetype的设定所做的实现。

不勾选的情况下,导出的foliageinstance的参数会完全的按照导出文件的参数来设置。

勾选的情况下,导出的foliageinstance只使用导出文件的foliageinstance的位置值,其他的参数都是按照本地的对应的预设的foliagetype的参数来随机生成的。

 
 

Random Num:

为了支持随机减少foliage的数量,默认数值是100,意思就是会导入100%的导出文件所列的instance的数量。例如改成50,意思就是只会导出50%的导出文件所列的instances。

 
 

Export Foliages:

导出的是Foliage的staticmesh的名字以及每一条Instance的基本信息,信息数据在原来 location, rotation, scale3d 的基础上增加了 zoffset, prerotation 和 flag

 
 

Import Foliages:

导入的时候,会根据上面的三个选项分别走不同的逻辑。