Skip to main content
Participating Frequently
February 11, 2025

Substance 3D Plugin for Unreal 5.5 – Texture Sets Incorrectly Reassigning After SBSAR Reimport

  • February 11, 2025
  • 3 replies
  • 379 views

Issue Summary:

We are experiencing a severe pipeline issue that has cost our team hundreds of hours of manual correction when reimporting an SBSAR file with multiple graph instances that use presets.

After importing and configuring textures in Unreal 5.5, we integrate the generated textures into a Material (MLS or Material Layering system). However, when making updates to the Substance Designer source file, republishing the SBSAR, and reimporting it into Unreal, the following issue occurs:

  • Textures regenerate correctly based on the updated SBSAR.
  • All material texture references are overridden to use only the most recently imported texture set.
  • Material layers referencing other textures are obliterated, forcing us to manually restore each material.

This completely breaks our material workflow and is clearly not intended behavior.


Expected Behavior:

  • After reimporting an SBSAR, texture references should preserve their original assignments per material instance.

Actual Behavior:

  • All texture references in affected materials are overwritten, defaulting to the last imported texture set regardless of prior assignments.
  • Materials utilizing multiple texture sets collapse into a single texture set, breaking asset variations.

Steps to Reproduce:

  1. Set up a Material Layering system in Unreal 5.5.
  2. Create a new material instance for an object.
  3. Import an SBSAR file (ensure “Create Material” is unchecked – only create Substance Graph Instances).
  4. Duplicate the Substance Graph Instance, renaming each instance with a unique suffix for different preset variations.
  5. Apply the material to an object.
  6. Use Vertex/Mesh Painting to reveal and blend different texture sets.
  7. Verify that the textures appear correctly.
  8. Modify the textures in Substance Designer, export the SBSAR, and reimport the SBSAR into Unreal.
  9. Observe the issue:
    • The textures themselves import correctly,
    • But all texture references across all material layers switch to the last imported texture set.

Visual Example (Playground Plastic Example):

Before Reimport (Correct Behavior):
Three texture sets used (As shown in the interface through highlighting, arrows and circling):

  • Base Plastic
  • Scuffed Plastic
  • ScuffedAndScratched Plastic

 

After Reimport (Bugged Behavior):

Only one texture set remains, replacing the original three across all material layers.

I know the visual result of the actual object does not show a large visual change, but the examples above are only to help illustrate the point of the textures changing.


Visual Example (Brushed Metal Material Example):

Before Reimport (Correct Behavior):
Three texture sets used:

  • Clean Brushed Metal
  • Tarnished Brushed Metal
  • Weathered and Tarnished Metal

 

 

After Reimport (Bugged Behavior):

Only one texture set remains, replacing the original three across all material layers.

 

This texture hopefully shows how agregious this issue can be.


Impact:

  • Severely disrupts our texturing and material pipeline in Unreal 5.5.
  • Massive manual workload to correct materials after each SBSAR reimport.
  • Inconsistent behavior makes iterating on textures difficult and time consuming.

Please investigate this issue ASAP, as it is drastically impacting our production workflow and the whole purpose behind having a plugin like this.

3 replies

Community Manager
March 10, 2025

Thanks for your suggestion, we will look into this. 

JeffSeeAuthor
Participating Frequently
February 21, 2025

Thank you for taking the time to look into this! I understand that changes aren’t guaranteed, but if there’s any ETA on a potential solution or workaround, that would be incredibly helpful for our planning.

Regarding the Copy Suggestion:
Unfortunately, making a copy doesn’t work in this case because Unreal doesn’t allow us to copy a texture over an existing one as we would in Windows Explorer (where a file of the same name would overwrite the old one). Instead, we’re still forced to manually relink the textures in hundreds of materials, which is what we’re trying to avoid.

Current Workaround:
The only viable solution we’ve found is:

  1. Export textures directly from Substance Designer to a directory.
  2. Manually import them into Unreal, ensuring proper compression settings.
  3. Use Unreal’s reimport command every time we update the exported textures.

This method keeps textures linked properly in their respective materials but adds a lot of extra manual steps.

Potential Plugin Enhancement Idea:

Would it be possible to integrate a built-in automated texture export and reimport system within the plugin? Here’s how it could work:

  • Allow users to specify a texture export location per imported SBSAR file.
  • The plugin automatically exports TGAs per texture map from the SBSAR.
  • If a texture does not exist, the plugin imports it with the correct compression profile.
  • If a texture already exists, the plugin triggers Unreal’s reimport function, keeping all materials linked properly.

This would streamline the process, eliminate unnecessary manual steps, and solve the core issue while maintaining Unreal’s intended texture management workflow.

Let me know if this makes sense or if any clarification would help. Thanks again for your time and support!

Adobe Employee
February 20, 2025

Hello, thanks for explaining the issue and providing the detailed repro steps to help us understand the issue. At the moment plugin is designed to regenerate all output textures when the SBSAR is updated. Which is why you're seeing referenced textures changed when the sbsar refreshed. This is behavior is consistent across our other integrations as well.
We're investigating to see if it is possible to store previous textures before updating, or selectively update textures instead of all of them.

 

For the mean time, the simplest workaround here is to manually copy any textures you would want to keep and reference those copies in the materials, as those would not be changed when the .sbsar is updated.

 

Best,
Aldo