Hello Epic Support Team,
I am working on automating the import of USD files using the Interchange framework in Unreal Engine 5.5 from a custom plugin/module using an Editor Utility Widget where you select a usd file and imports meshes/materials etc via Interchange.
My goal is to:
- Programmatically import USD files via
UInterchangeManager::ImportAsset()
- Customize USD-specific translator settings, such as: bCombineMeshes, bForceAllMeshesAsSkeletalMeshes, StageOptions.
- Customize pipeline settings, e.g., to force import as skeletal mesh and combine static meshes.
From reviewing the engine source, I see that: UInterchangeUsdTranslatorSettings is not exported for use in other modules. The standard approach of creating a UInterchangeUsdTranslatorSettings instance (via NewObject) in an external plugin does not link successfully due to missing symbols. I thought I could reuse UInterchangeUsdTranslatorSettings and UInterchangeGenericAssetsPipeline and just set custom options for import before calling UInterchangeManager::ImportAsset() but looks like that’s not possible.
Could you please advise what the recommended workflow is for this scenario? Specifically:
- Is there an intended way to set custom USD translator settings in code (from an external module) without modifying engine source?
- If not, is the recommended practice to rebuild the engine with INTERCHANGEUSDTRANSLATOR_API added to ? If yes how can I then properly use the custom settings when i call ImportAsset()
- Are there any plans to expose more of these settings via pipelines instead of translator settings?
- Is there an alternative recommended approach for configuring these options programmatically for automated imports? E.g Should I instead make my own custom UInterchangeCUSTOMUsdTranslatorSettings inheriting from UInterchangeTranslatorBase and also my own custom pipeline? Or can I use existing UInterchangeGenericAssetsPipeline and somehow pass the new UInterchangeCUSTOMUsdTranslatorSettings to be used there during import?
Any guidance or best practices you can share for this workflow would be greatly appreciated.