Thursday, August 7, 2014

Blender to Substance Designer to UE4: My Workflow

I like to think my workflow is unique. I use a free 3D modeling program, an engine that comes with a very affordable subscription plan, and a fairly expensive model texturing program (at least relative to my other tools). No Photoshop and no Autodesk products are involved. This is in part because the FBX exporter in Blender doesn't carry over the textures that you use in the Blender material editor to UE4 , and also partly because Substance Designer is a tremendous time saver.

(UPDATE: It seems that the materials in Blender can, in fact, be exported to UE4 now. I only exported a mesh with basic colors [by accident], so I can't attest to what extent Blender's material editor settings will carry over to UE4)

Here is the workflow I currently use to create meshes, texture them, and import them into UE4.

If you can't achieve your desired normal map results from texturing in Substance Designer, begin by making a high poly mesh. Otherwise, you will only need one mesh so begin in Blender by making a low poly mesh.

Once you are satisfied with your creation, assign the material(s), make sure that all of your normals are facing in the right direction, and then switch to Object Mode and set the location, rotation and scale of your mesh using "CTRL+A."

Then mark the seams and unwrap your mesh. 

Next export the model as an FBX using the appropriate export settings. (Note: skeletal meshes will likely need to include an armature. You may also need to adjust the scale of your models if you don't want to have to worry about resizing them in Unreal)

From there it is on to Substance Designer where you open a new graph and name it using your preferred convention. I personally use "absolute" maps instead of "based on parent" because the SBSAR files exported "based on parent" tend to be huge compared to those exported at a set resolution.

Drag and drop your newly exported FBX file into your substance graph assets and double click on the FBX to display it in the 3D view port. Next, depending on the complexity of the mesh and amount of masking that will be necessary, bake separate SVGs for each of your materials, as well as curvature and ambient occlusion maps (there are many other maps you can bake from your mesh, but I tend to utilize those most often.

If you have created both high and low poly meshes, you can also use Substance's "baker" feature to create a normal map from your high poly mesh; in this example I only used a low poly mesh, so I didn't need to bake this map.

Next create your material using Substance Designer nodes.

Once you're satisfied with your newly textured model, "publish" the substance as an SBSAR file and import the model and substance into UE4 by dragging and dropping them into the content browser. (Note: if you are using Substance Designer, make sure to install the UE4 plugin from before trying to import SBSAR files)

From there, just assign your material to your mesh and place it in your level


  1. That's a really awesome workflow. I agree that importing directly from Blender to UE4 has unexpected complications, and I really wanted to see if I could put Substance in between. It seems it can be the case. Thanks!

  2. Hello. Tried but I do not understand what size of textures used. I bake texture 4096h4096 for more details but the program is so slow! How not to lose quality without sacrificing performance?

    1. I'm not entirely sure which program you're saying is slow. If you mean the game you are creating is running slow, then that's to be expected. Right now 4096 x 4096 is huge for game textures (plus your game is likely going to take up tons of HDD space) and is probably a bit excessive... unless you are only using a few different textures and/or are expecting the game to only be running on high-end rigs..

      If you mean that Substance Designer is running slow, try closing the 3D viewport display when you do your baking. I tried baking four maps at once using that resolution on my mediocre laptop and didn't experience any issues.

      I hope that helps.