Substance Designer to UE4 workflow issues

This issue is because of problems both with UE4 and with Substance Designer, I’ve brought up the issues Substance Designer has to them, but UE4 has some problems as well.

I have a high poly model and a low poly model I’m baking with Substance Designer.

UE4 being broken
If I bake normal map as a png in substance and import it into UE4, it’s not automatically detected as a normal map, and there’s some compression artifacts that are created in/by UE4. Using uncompressed settings in UE4 does not help.

Substance Designer being broken
If I bake a normal map as a tga, substance doesn’t have 16 bit TGA support so there’s similar artifacts to importing the png.

Photoshop being semi-broken and requiring work arounds, best quality solution
If I bake a normal map as a png, open it with photoshop, save as a TGA for UE4, it has minimal artifacts. The problem with reopening and saving is that it adds an extra step, and for whatever reason, photoshop makes me have to open an existing TGA and save that file, I cannot just re-save the png or create a new file and save as TGA. I have no idea why I’m having that issue with photoshop. Would ideally prefer not to have to play with each file in photoshop in order to get them to save correctly.

So basically I’d just like UE4 to import these 16 bit pngs as normal maps correctly without adding extra compression/artifacts. Using uncompressed settings in UE4 does not help.

Here’s a zip file with all the files in question. (42mb)
https://drive.google.com/file/d/0B7m3EkWf1vh6STByVFFUTmdIc2M/edit?usp=sharing




Honestly, Don’t really know what to say, as I don’t use substance. However, if you are unable to find a suitable answer, you could always try using xnormal (which is free) for getting the hi poly to low poly normal bake, and use the Quixel Suite (pretty cheap, even cheaper if you get the educational version), which comes out sometime this quarter, to do all the same detail work that substance does. Only difference is that Quixel doesn’t have direct integration with UE4 like substance does, if that is a deal breaker for you. Hope you get your answers!

You could try saving the normal map in BC5 format before importing it into the editor, BC5 is enabled for Normal Map compression looking at the engine source, but there’s no ****** way to change it to use that compression type in the editor, and there are NO uncompressed settings as far as I am aware. I’m not even sure if directly importing a BC5 will work, as I’m yet to try it. You will get artefacts in DXT5 though, why we’re still using DXT compression on normal maps in the year 2014 I have no idea. DXT is such a horrible format :frowning:

You should be using 24-Bit format for your .tga files, not 16. Both 8 and 16 bit have a much lower dynamic range than 24, and in normal maps you want as much range as possible. You should have an option pop-up when you save a .tga file in Photoshop that gives you the option of 16, 24 or 32 (alpha channels) bit-depth levels.

The reason Unreal doesn’t detect that the PNG is a normal map, is because a) it’s not 24-bit and b) because or the naming convention you’re using. The texture needs to have Nrm, N, Norm or ‘Normal’, or something similar at the END of the filename for the automatic detection to work. Even if it doesn’t, you can still change the texture settings in the editor after import. Make sure you uncheck SRGB as well, as that will contribute to the artefacts. PNG and TGA formats are both ‘lossless’, I can only imagine the normal problem is due to the file bit-depth, and I think PNG only supports up to 16 bits anyway.

Hey -

The Jamsh is correct in that you will definitely want to use a 24-bit TGA unless you are needing an alpha in which case 32. Can you upload a screenshot of the texture editor in UE4 for the maps that are giving you artifacts?

Thank You
Eric Ketchum

You have to remember that Substance integration with UE4 is still a work-in-progress, not a fully established feature, so it will be a while before all the bugs are worked out.

65975cd2fbd814b5118cbb7c908ecafc.png

Not according to Paint.NET.

Hello ! Thanks for providing the source assets, they were helpful.

When you import a texture, the Unreal Engine performs some analysis to make a best guess if a texture is a color map or normal map. With these assets, both TGA files are classified as normal maps but the PNG is failing. It is going through a different code path (the PNG is 16-bit per channel, the TGA’s are 8-bit). However you can override the detection algorithm yourself by double clicking on the texture and changing Compression Settings to “TC_Normalmap.”

Let me know how you fare with this.

Sorry it’s my weekend so I might be a little bit buzzed. If I have any grammatical errors, I apologize and hope you at least understand my general comments.

Okay so I opened the PNG file from substance, messed with the levels to make sure it didn’t have the stepping apparent in UE4, saved for web as 24 bit, imported into UE4, it recognized it as a normal map, BUT there’s the compression artifacts. Those compression artifacts aren’t there if I used the substance PNG as a 32/24bit TGA. It just seems to be related to PNG files and UE4.

I wish I had an option for 16 bit or 24 bit tga files with substance, but at least the pngs with that program support more than 8 bit. I’ll have to do a bit more research on if any other file types might have more bit depth with substance.

The sad thing is TGA and PNG wont work for Substance because TGA is limited in Substance to 8 bit with no work arounds. PNG does save as a 16 bit image, but even after changing the name of the image file to end with _normal, and making sure it’s saved as 24 bit, UE4 adds some extra compression.
What image formats does UE4 support?

Changing the compression in unreal doesn’t do anything. I made sure it was TC_Normalmap. Even when it autodetected the normal map with a 24bit png it still added compression. With the same png source file from substance, when I saved it as a 32 bit tga vs a 24 bit png, the png had similar results to the 8 bit png/tga. I believe that is a UE4 issue. Although I wish Substance designer supported 24 bit TGA.

I wish I could use 24 bit tga but it isn’t really an option with substance designer, I guess I’ll try to use xnormal for my bakes.

The following Texture formats are supported:

.bmp
.float
.pcx
.png
.psd
.tga
.jpg
.dds - Cubemap Texture (32bits/Channel, 8.8.8.8 ARGB 32 bpp, unsigned)
.hdr - Cubemap Texture (LongLat unwrap)

I would be interested in exploring this issue for you, if you are willing to upload your models and textures or sample models and textures I can try to reproduce and solve this issue with you.

Eric Ketchum

Here’s the files Eric Ketchum

I’ll try some more formats today, thanks for the information!

Well the only matching texture formats are .bmp .png .tga .jpg, they all have the same artifacts, with jpg being extra bad. So there isn’t a format straight from Substance designer that works as well as re-saving png files in Photoshop. Don’t think it’s really worth it re-uploading my source files just to add bmp and jpg, but I could if needed.

Hello !

Would you be able to email the substance you are using to for the designer team to look at? Thank you!

Was this resolved at some point?

Quick tip : NEVER use “Save for Web” in Photoshop. Even if it works 99/100, you’re actually destroying the picture in a unrecoverable way and automatically loose quality every time you use it. Instead, manually adjust the size with the shortcut ALT+Ctrk+I. Make sure the pixel resolution is right and that the Resolution is at 72. Then only use the “save as”. This will allow to control the quality output of Photoshop. (“Save for Web” is a quick algorithm that is automatically set to low-medium quality for higher compression)

While it’s true that Substance is limited to 8-bit output through Bitmap, it’s actually a result of its procedural main feature. Exporting bitmap from Substance is a bit similar to “Save for web” from Photoshop as it’s a tool made to satisfy those who wanted to quickly export the results for either test the texture result or wanted to import it into another software for additional works. If you want the result from Substance to be at its best in UE4, you need to publish the substance (material) and use the published files. (Make sure you have the plugin which is available here : as well as a tutorial on how to make the best out of it)

Just to make thing again clear, Substance designer support 24 bit TGA, but not in its export output. It can support 32 bits TGA with alpha channel too, but only through its .sbsar file format. “Forcing” an export out of SD is not how it’s supposed to be optimally used. It’s like taking a car, removing 90% of its component and thinking it will run the same.

Substance Designer offer a wild amount of tools and possibilities, but it’s NOT made to be able to output many types of files like Photoshop. Its main focus is being able to product fully-self-suffisant files to act as materials inside of the rendering software. If you’re not using the .sbsar files, then you’re not using SD in its full potential. That’s a fact which its users have to keep in mind.

Im very upset that I cant use Substance because you have to be a C++ programmer to set it up :/…A waste of 200$ for my small bank account…

Hey fella, that’s not actually true. Substance will work with the latest version of Unreal Engine and the plugin available on Allegorithmic’s website.

Once that’s installed, you’ll be able to import Substance files directly into the editor / content browser. It also features support for utilising them with Blueprints!

For additional information, head on over to here:

Hi ! As was mentioned by , you do not need to be a C++ programmer to get it to work. We provide binaries that work with the downloadable version of Unreal Engine. Just download the zip from the page below and extract into your UE4 project:

Just drop it in? I tryed it but didnt work…You drop it in the project your on? It shows as plugin?

And sorry I was wrong…Didn’t see the right way to do it…

By simply dropping it into your project folder, it’ll work. Once that’s done, you’ll be able to import Substance files into the content browser.

ok thank you, Ill try again