介绍
本教程通过一个演示项目说明了交换框架的用法。该项目包含几个示例,涵盖了自定义或扩展导入过程的各种方法。
它表明:
如何制作和使用自定义管道:C++、蓝图或python;
如何在导入过程中修改出厂设置或资产;
如何创建新的转换器和工厂来支持新的文件格式和新的虚幻对象;
先决条件
Visual Studio 和 Unreal Engine 的安装。
无需特定知识来运行样本,但能够很好地掌握 Interchange 概念,以便深入研究样本。
设置并启动项目
打开项目
将档案解压到适当的文件夹中
生成解决方案。右键单击项目文件,然后选择“生成 Visual Studio 项目文件”
将其切换为使用您想要的 UE 版本
生成解决方案
在 Visual 中打开生成的解决方案
构建开发编辑器
执行 InterchangeDemo
项目内容
该演示项目由多个示例组成,这些示例分组在一个InterchangeCustomization插件内:
4 条管道:2 条 C++、1 条蓝图和 1 条 Python
自定义静态网格管道,一种用于从 3D 模型中的占位符创建几何图形的 C++ 管道;
自定义演示对象管道,用于在新的虚幻对象上设置属性的 C++ 管道;
自定义纹理管道,用于改变纹理上的压缩和纹理组的蓝图管道;
自定义文件夹管理,一个用于在适当的子文件夹中创建资产的 Python 管道
C++ 管道 和“演示对象”类、工厂、转换器 (.foo 扩展名)和其他实用程序类 的源代码
一个FBX 示例文件 ,用于测试静态网格管道
一个foo 示例文件 ,用于测试“Demo Object”管道
示例
项目已设置为使用其所有自定义管道。无需编辑项目设置,除非用户想要更改某些管道堆栈。
管道堆栈默认设置位于项目的 Interchange 部分。新的自定义管道已设置。自定义 .foo 扩展的转换器覆盖也已设置。
C++ 静态网格管道
管道在 CustomStaticMeshPipeline .h/.cpp 文件中定义,并实例化为“CustomStaticMeshPipeline”资产。
C++ 管道类不能直接在管道堆栈中使用。应先将其实例化为资产,然后才能更改其预设。
行为
将具有特定名称的场景对象转换为几何体的C++ 静态网格管道。管道分为两个步骤:
1. 在 执行管线 步骤中,管线会将 边缘占位符的 平移场景节点 转换为静态网格工厂节点上的 3D 变换属性。
2. 在后期工厂步骤中,管道将提取先前在静态网格工厂节点上设置的属性,并为每个楔形生成网格描述并将其附加到现有的网格描述中。
测试
您将在插件内容文件夹
Plugins/InterchangeCustomization/Runtime/Content/wedges.fbx中找到“wedges.fbx”文件。
提供的 3D 模型在 Blender 中查看。EdgeXXX_VX 占位符将用于在 UE 中创建几何图形。
将模型导入编辑器时,请确保在默认堆栈的管道上勾选了以下设置:在默认资产管道上组合静态网格,并在楔形导入管道上组合布尔值和厚度。
导入网格时必须勾选“合并静态网格”设置。
这两个选项与楔形导入有关。用户可以控制是否创建几何图形以及楔形厚度。
如果在启用该选项的情况下导入,则楔形几何图形应添加到原始几何图形中。
左边是原始模型,右边是根据 3D 文件中存储的占位符添加额外几何图形的模型。
蓝图纹理管道
蓝图资产“CustomTexturePipeline”中定义的管道。
行为
蓝图纹理管道在工厂传递之前更改纹理工厂节点的压缩和纹理组。要查看此示例的结果,您必须导入名称以“_N”结尾的文件。
请注意,默认纹理管道已将类似设置应用于看似法线贴图的纹理。因此,为了确保管道执行,请使用非法线贴图的图像文件或更改导入选项,使其看起来与默认导入不同。
测试
导入纹理时,请记住 UE 默认不显示纹理的导入对话框选项。可以切换可见性以测试纹理管道的不同设置。
导入 FBX/glTF 时,导入对话框将显示交换管道设置,以便可以在那里编辑纹理选项。
要查看纹理导入的导入对话框和管道设置,需要在项目设置中启用“显示导入对话框”选项。
指定要应用于名称以“_N”结尾的纹理的压缩设置或纹理组。值是枚举中的索引。
导入纹理的结果:纹理组枚举已设置为索引 1 的 WorldNormalMap,压缩设置已设置为相应枚举中索引 1 的 NormalMap。
Python 文件夹管道
Python 代码位于
Plugins/InterchangeCustomization/Runtime/Content/Python 中。它位于 init_unreal.py 文件中,因此默认情况下由 UE 加载。
定义的 DemoInterchangeAssetsFolderPipeline 类在 Interchange Python Pipeline 资产“ CustomFolderManagement ”中实例化。
行为
一个 Python 管道,用于管理将不同资产类型导入到哪些文件夹中。管道根据工厂节点的类型将子文件夹(纹理、材质、网格……)添加为工厂节点上的子路径属性。
测试
导入 3D 模型或纹理所产生的资产将添加到相应的子文件夹中。
Translator
“CustomFooTranslator”定义它支持哪种扩展,将读取.foo 文件并将其有效负载存储在“CustomDemoObjectPayloadData”中定义的自定义有效负载结构中,并创建相应的翻译节点“CustomDemoObjectNode”并将其添加到 Interchange 的基本节点容器中。
管道
“CustomDemoObjectPipeline” 将在容器中查找“CustomDemoObjectNode”,并使用来自管道值和有效载荷数据的设置创建相应的“CustomDemoObjectFactoryNode”。
Factory
“CustomDemoObjectFactory” 将使用存储在“CustomDemoObjectFactoryNode”上的设置创建“DemoObject”资产
测试
foo 文件示例位于插件内容文件夹中:Plugins/InterchangeCustomization/Runtime/Content/Test.foo。
DemoObject 包含可通过管道设置的变量。
近期焦点