文件系统
导出系统允许您使用默认插件并编写自定义插件以将 UNIGINE 的节点导出到不同格式的文件并将其存储在磁盘上。
导出系统的结构如下图所示。它包括导出管理器和一组动态的出口商适用于各种外部文件格式。
导出管理器用于创建和管理导出器,以及直接将文件导出为非本地格式(如果此类文件的导出器之前已注册)。
出口商#
Exporter 是导出系统用来将 UNIGINE 的对象传输到各种非本地格式的文件的模块。单个导出器可用于导出多个节点,但不应为单个节点类型注册两个或多个导出器。
每个导出器都有一组参数来控制整个导出过程(例如,是否导出灯光、相机和材质法线贴图,重置根节点变换等)。使用前应初始化导出器。
基本工作流程#
为了使用,出口商必须通过 Export Manager 在系统中注册。您可以通过将可用模块添加到注册表或从注册表中删除来动态管理可用模块的列表。当您将节点导出为任何外部格式时,导出系统会自动尝试查找并使用为指定文件扩展名注册的适当导出器。
基本节点导出工作流程如下:
- 检查指定输出文件的扩展名,并在已注册的导出器中找到合适的导出器。
- 从节点中提取场景数据,创建导出场景并将数据放入相应的导出结构(例如,FBX 节点)。
- 使用适当的导出器根据场景元数据生成输出文件。
定制#
您可以将 FbxExporter 插件作为示例来构建您自己的自定义导出模块。您还可以修改和重建此插件以在编辑器中使用您自己的自定义导出器。
要使用 FbxExporter 插件,只需通过 plugin_load 控制台命令或以下命令加载它命令行选项在应用程序启动时:
-extern_plugin UnigineFbxExporter
一般来说,通过 C++ API 的工作流可以表示如下:
// create an exporter for the exported file ("1.fbx" in our case)
Unigine::Exporter* exporter = Unigine::Export::get()->createExporterByFileName("1.fbx");
// enable the "export_material_normal_maps" parameter
exporter->setParameterInt("export_material_normal_maps", 1);
// initialize exporter
exporter->init();
// get the node
NodePtr node = World::getNodeByName("material_ball");
// export the node to the specified file path
exporter->doExport(node, "1.fbx");
// exporter deinitialization
exporter->deinit();
您还可以像这样使用默认设置导出节点:
// get the node
NodePtr node = World::getNodeByName("material_ball");
// export the node to the file of specified format
Unigine::Export::get()->doExport(node, "../data/1/1.fbx")
内置导出选项#
引擎的内置导出器(例如 FbxExporter 插件)有许多导出选项,可以自定义导出器的行为,也可以在自定义导出器中使用。
参数名称#
下表列出了可通过 setParameterInt("name", value) 方法设置的现成可用参数的名称。
export_lights |
---|
导出灯光节点。
|
export_cameras |
导出相机节点。
|
export_material_normal_maps |
导出材质的法线贴图。
|
reset_root_node_transformation |
重置节点的根变换。
|
也可以看看#
- FbxExporter 插件作为自定义导出插件的示例:source/plugins/Export/FbxExporter。
Fbx 导出系统 API:
FBX 导出功能类有关通过代码管理导出系统的更多详细信息。
导出系统 API 不适用于 Community SDK 版本。