用途
本技能面向虚幻引擎(Unreal Engine)的内容导入流程,核心是 Interchange 框架。它帮助开发者从 Blender、Maya、Substance Painter 等 DCC 工具导入静态网格、骨骼网格、纹理和音频,并解决导入后出现的缩放错误、旋转异常、法线翻转、纹理过曝或饱和度异常等问题。
主要能力
- Interchange 三阶段流程:Translator 读取文件生成中性节点容器;Pipeline 栈按配置转换节点;Factory 创建最终 UObject 资产。
- 格式支持:Interchange 支持 FBX、glTF、GLB、OBJ(网格/场景)、PNG、TGA、JPEG、EXR、HDR、DDS、IES、PSD、BMP(纹理)、WAV、AIF、FLAC、OGG、OPUS、MP3(音频)。
- 单位与轴向:虚幻世界单位为厘米;FBX 可通过
bConvertSceneUnit自动转换;EInterchangeCoordinateSystemPolicy控制轴向映射策略。 - 网格导入设置:合并静态网格、法线/切线重算、光照贴图 UV 生成、Nanite 构建、LOD 组、碰撞体导入等。
- 骨骼网格设置:骨架复用、导入内容类型(几何+蒙皮权重/仅几何/仅蒙皮权重)、变形目标导入、物理资产自动创建。
- 纹理设置:sRGB 开关、压缩格式、法线贴图绿通道翻转、法线贴图自动检测、UDIM 导入。
- 导入溯源与重导入:
UInterchangeAssetImportData存储源文件路径、翻译器设置、管线列表和节点容器快照;重导入时复用相同管线与设置。 - 程序化导入:C++ 中使用
UInterchangeManager的ImportAsset(同步)、ImportAssetAsync(异步)和ReimportAsset/ReimportAssetAsync;支持FImportAssetParameters::OverridePipelines覆盖默认管线栈,bIsAutomated抑制弹窗。 - 自定义管线:C++ 子类化
UInterchangePipelineBase,重写ExecutePipeline、ExecutePostFactoryPipeline、ExecutePostImportPipeline;属性标记ReimportRestrict = "true"防止重导入时被修改。
使用方式
工程内通过 Project Settings > Engine > Interchange 配置管线栈,或在导入时通过 OverridePipelines 传入自定义管线。C++ 中调用 UInterchangeManager::GetInterchangeManager() 获取单例,创建 UInterchangeSourceData 后执行导入。批量导入应使用异步接口并限制并发,可用 IsImporting() 检查是否正在进行导入。
适用场景
- 从 DCC 工具导入资产并确保比例、轴向、着色正确。
- 角色资产骨架与变形目标配置。
- 自动化批量导入(C++、蓝图或 Python)。
- 定制导入管线以强制执行项目命名规范或设置约定。
- 排查重导入未拾取预期源文件或设置的问题。
限制与注意事项
- 虚幻 5.8 中 FBX 默认经 Interchange 导入;如需旧版导入器行为,需将
Interchange.FeatureFlags.Import.FBX设为 0(场景导入还需.ToLevel 0)。 - 运行时导入需将 Interchange 内容目录加入打包烹饪路径,否则运行时管线缺失。
- 导入前应在 DCC 中应用全部变换并冻结旋转,避免骨骼网格根骨偏移。
- 法线/数据贴图误开 sRGB 会导致光照错误;建议手动核验。
- 重导入时更换骨架会导致旧动画失效;建议每个角色绑定保持单一骨架。
- 大规模批量导入可能压满任务图,应使用异步并节流。
官方文档与引擎源码引用详见原资料链接。