Language:
Page Info
Engine Version:
Share
此中文页面内容对应的英文页面有后续更新,如需浏览最新文档可切换至英文页面浏览。

创建自定义地形导入器

可通过编写插件创建自定义导入地形数据的高度图和权重图格式。插件将把新格式添加到引擎,并从文件导入数据。

编写自定义导入器

  • 为新建导入器,插件应创建对象实例实现 ILandscapeHeightmapFileFormatILandscapeWeightmapFileFormat,并相应以 ILandscapeEditorModulemodule::RegisterHeightmapFileFormatILandscapeEditorModulemodule::RegisterWeightmapFileFormat 注册这些对象。

  • 在函数中实现 ILandscapeHeightmapFileFormat 接口需要覆盖以下函数:

    1. const FLandscapeFileTypeInfo& GetInfo() const:返回类型信息说明该类处理的文件类型,以及是否支持导出。

    2. FLandscapeHeightmapInfo Validate(const TCHAR* HeightmapFilename) const - 验证命名文件,或将其驳回并返回一个错误代码和消息。

    3. FLandscapeHeightmapImportData Import(const TCHAR* HeightmapFilename, FLandscapeFileResolution ExpectedResolution) const - 实际导入文件。

    4. void Export(const TCHAR* HeightmapFilename, TArrayView Data, FLandscapeFileResolution DataResolution, FVector Scale) const - 如该格式支持导出,则导出文件(查看来自 GetInfo 的返回值)。为进行编译,这是唯一一个不需要被覆盖的函数。然而,如它在未被覆盖的情况下覆盖,它将调用 check

    5. (Destructor) - 实现此接口的类应该使用虚拟析构函数,因为他们将通过指向接口类的指针进行删除。

  • 实现 ILandscapeHeightmapFileFormat 接口几乎相同,只在部分返回类型上有细微差别:

    1. const FLandscapeFileTypeInfo& GetInfo() const - 返回类型信息说明该类处理的文件类型,以及是否支持导出。

    2. FLandscapeWeightmapInfo Validate(const TCHAR* WeightmapFilename) const - 验证命名文件,或将其驳回并返回一个错误代码和消息。

    3. FLandscapeWeightmapImportData Import(const TCHAR* WeightmapFilename, FLandscapeFileResolution ExpectedResolution) const - 实际导入文件。

    4. void Export(const TCHAR* WeightmapFilename, TArrayView Data, FLandscapeFileResolution DataResolution, FVector Scale) const - 如该格式支持导出,则导出文件(查看来自 GetInfo 的返回值)。为进行编译,这是唯一一个不需要被覆盖的函数。然而,如它在未被覆盖的情况下覆盖,它将调用 check

    5. (Destructor) - 实现此接口的类应该使用虚拟析构函数,因为他们将通过指向接口类的指针进行删除。

  • 可查看 LandscapeFileFormatInterfaces.h 中的接口、LandscapeFileFormatPng.cppLandscapeFileFormatPng.h 中的 .PNG 实现,以及 LandscapeFileFormatRaw.cppLandscapeFileFormatRaw.h 中的 .RAW 实现,了解更多信息和范例。所有代码均在引擎的 LandscapeEditor 模块中。