可通过编写插件创建自定义导入地形数据的高度图和权重图格式。插件会将新格式添加到引擎中,并从文件导入数据。
编写自定义导入器
-
为新建导入器,插件应该创建实现
ILandscapeHeightmapFileFormat和ILandscapeWeightmapFileFormat的对象实例,并分别使用ILandscapeEditorModulemodule::RegisterHeightmapFileFormat和ILandscapeEditorModulemodule::RegisterWeightmapFileFormat注册这些对象。 - 要实现插件中的
ILandscapeHeightmapFileFormat接口需要覆盖以下函数:const FLandscapeFileTypeInfo& GetInfo() const:返回类型信息,表明此类处理哪些文件类型,以及是否支持导出。FLandscapeHeightmapInfo Validate(const TCHAR* HeightmapFilename) const- 验证命名的文件,或拒绝它并返回错误代码和消息。FLandscapeHeightmapImportData Import(const TCHAR* HeightmapFilename, FLandscapeFileResolution ExpectedResolution) const- 实际导入文件。void Export(const TCHAR* HeightmapFilename, TArrayView<const uint16> Data, FLandscapeFileResolution DataResolution, FVector Scale) const- 如果此格式支持导出,则导出文件(请参阅GetInfo中的返回值)。这是唯一不需要覆盖即可编译的函数。但是,如果在不覆盖的情况下调用它,它将调用check。(Destructor)- 实现此接口的类应该使用虚拟析构函数,因为它们将通过指向接口类的指针删除。
- 实现
ILandscapeWeightmapFileFormat接口的操作几乎完全相同,仅在一些返回类型中稍有不同:const FLandscapeFileTypeInfo& GetInfo() const- 返回类型信息,表明此类处理哪些文件类型,以及是否支持导出。FLandscapeWeightmapInfo Validate(const TCHAR* WeightmapFilename) const- 验证命名的文件,或拒绝它并返回错误代码和消息。FLandscapeWeightmapImportData Import(const TCHAR* WeightmapFilename, FLandscapeFileResolution ExpectedResolution) const- 实际导入文件。void Export(const TCHAR* WeightmapFilename, TArrayView<const uint16> Data, FLandscapeFileResolution DataResolution, FVector Scale) const- 如果此格式支持导出,则导出文件(请参阅GetInfo中的返回值)。这是唯一不需要覆盖即可编译的函数。但是,如果在不覆盖的情况下调用它,它将调用check。(Destructor)- 实现此接口的类应该使用虚拟析构函数,因为它们将通过指向接口类的指针删除。
- 如需更多信息和示例,你可以查看
LandscapeFileFormatInterfaces.h中的接口、LandscapeFileFormatPng.cpp和LandscapeFileFormatPng.h中的.PNG实现,以及LandscapeFileFormatRaw.cpp和LandscapeFileFormatRaw.h中的.RAW实现。所有这些代码都在引擎中的LandscapeEditor模块中。