Substance Painter to Studio | SurfaceAppearance

Substance Painter is perhaps the most powerful tool offered for texturing game assets, and as of recent, Roblox games as well!

Earlier in the year, Roblox released the “SurfaceAppearance” Beta for Studio users. This allows you to input 4 different texture maps for meshes using Physically-Based Rendering (PBR) to provide more accurate mesh lighting and textures. You can read more about it here:

Examples of PBR in Studio


BMW Interior by @Sameerzz


Scene by @mastops12


GIF by @Yourius

I’ll assume that you’re somewhat familiar with using SurfaceAppearance and how it can be applied to meshes. If you aren’t, I suggest reading the above post to get yourself up to speed.

This post will cover how you can export your Substance Painter projects to Studio in the method I’ve found to be most effective.


For this post I’ll be using my Glock 19X project.

(This mesh is separated for animation since I haven’t used SkinnedMeshes yet as of writing. This won’t affect the end result and should apply to most other projects even with a single texture set.)

We can start by heading to the texture export screen (File > Export Textures).

Before setting up a new template, it’s crucial to understand that Roblox takes 4 different maps:

image

Substance Painter uses the same naming scheme. This will help us create our export template for future use.

Change over to the OUTPUT TEMPLATES tab and click the + symbol to make a blank template.
image

This will create a new template at the bottom of the list, called new_export_preset. Open it. (Your template can be renamed by right-clicking it in the list and using Rename)

At the top of the template’s window you’ll see 5 buttons: image

Here is the way I like to set up my template, since it keeps it true to Studio’s required maps and utilizes any baked AO you have (more on that in the color map dropdown).

Image from Gyazo
Substance Painter uses a naming scheme for exported files as follows:
$mesh_$textureSet_Name
You can set it up like this:
image

Now, moving on to actually assigning your textures their correct maps.
This is done by dragging labels from the right side columns (Input maps, Mesh maps, Converted Maps) onto the RGB, Gr, and RGB+A squares.

GIFs on how to accomplish this for each map are below.

Normal Map

Image from Gyazo

Roughness and Metalness Maps

Image from Gyazo

Color (+AO) Map

Image from Gyazo
Setting up your color map this way allows you to actually have and adjust your ambient occlusion within Studio. In the GIF, the model’s AO color can be changed to any color using the MeshPart’s BrickColor/Color.

Image from Gyazo


Phew! With that sorted, we can actually get to exporting your meshes.

Head back to the SETTINGS tab, and set a export location for your textures. I have mine in the Documents\Allegorithmic\Substance Painter\export subfolder, and create another folder within that for each project I make.

Then, select your new template from the dropdown:
Image from Gyazo

Here are what the rest of your settings should look like:

“Wait a minute. Why only 1024x1024? Substance Painter can export 8K textures!”
The huge caveat in uploading textures to Roblox at the moment is that textures are capped at a 1K resolution. Even if you tried uploading a 4K texture, it would only make the process longer and your file size larger. It will still reduce it down. So, for the time being, just stick to 1K. Sorry!

Now, having selected your texture sets from the left list, you can click Export and sit back while it works away!


Assuming you have the mesh already in Studio, you can get on to applying your textures to your mesh.
(If you haven’t exported it yet, Substance Painter can do that too! Go to File > Export Mesh and save it as an .fbx file.)

Importing your textures will be done in the Game Explorer window. Enable it through View > Game Explorer if it isn’t visible.
image

Click Import and select all the maps you want to import from the File Explorer. Click Open after selecting them to start uploading them.

This will open a new window which will show the progress of your importation. Once again, sit back and relax until it’s finished!
image

Open up the Insert Object window and search for anything close to “SurfaceAppearance” in the search bar. The first result should be the SurfaceAppearance object itself.
image
(If this isn’t visible, make sure that in File > Beta Features “Advanced SurfaceAppearance Textures” is enabled.

Select your mesh and double click on the SurfaceAppearance object to insert it.
If your mesh consists of multiple parts, you can copy it into your MeshParts using this little trick:
Image from Gyazo
(Inserting objects into others doesn’t support multiple selections.)

Assuming all of your textures have uploaded, your Images folder in the Game Explorer window should look something like this:
image
Of course, there will be multiple repetitions of this pattern depending on how many texture sets you had in Substance Painter.

Now comes the most boring part of the whole process.

Right-clicking your texture map, you can copy the decal’s ID to your clipboard and then paste it into the SurfaceAppearance properties. Make sure that the texture you’re applying is to the correct mesh and map!

If your mesh consists of multiple meshes with different texture sets for each (which mine does) then it’s simply just a rinse-and-repeat affair until you finish. If you have multiple meshes that do use the same texture set then you can just copy and paste the SurfaceAppearance object into each mesh.

After doing all this, your mesh is almost done.

You will notice, however, that if you set up your ColorMap the way described, your mesh will have this odd white glow around it. Fear not, for this is where your AO was baked and can be adjusted easily. (Make sure that AlphaMode is set to Overlay.)

Changing the MeshPart’s BrickColor (or Color) will allow you to set the AO color to any color you desire, preferably a dark black:
Image from Gyazo

After you do that, your mesh is actually complete and ready to use!

Move your camera around your mesh to make sure that your Normal maps work as intended. If something is off, refer to the aforementioned DevForum post to optimize your lighting settings.


Hopefully, this guide has helped you learn how to effectively use a Substance Painter to Studio pipeline. When I first started, stuff like this wasn’t very accessible to me so I felt that making my own in due time was the best option. I know this tutorial won’t exactly apply to the vast majority of Roblox developers since the program itself is subscription-based, but if even one person gets something out of it I’ll consider it a bonafide success.

Want to learn a little more about how you can use Substance Painter with Roblox Studio? Check out Noviius’ Recolorable PBR Textures tutorial!

Of course, thank you so much for reading this!

twitter-icon-18-256 Twitter

Deer2 Portfolio Website

70 Likes

Thank you for your very useful tutorial, especially the exporting setup is something that many people could potentially struggle with.

3 Likes

Damn, using alpha for AO is something that I have not thought about.

1 Like

Do you read the whole License? Are we allowed to export things from surfacepainter to studio?

https://devforum.roblox.com/t/what-do-you-think-of-developers-that-use-illegal-quixel-megascans-assets/794856?u=eternalove_fan32

To add to what @Ukendio said, that situation resulted from users not reading the Quixel Megascans terms of service. Just because it’s a related topic does not mean licensing terms are universal between companies. The Quixel Megascans related issue was not something you had to learn about to fix. Some people used their assets illegally because they simply did not read the terms of service originally, while others brought it up because they did read the terms of service.

Just because one thing kind of relates to another does not mean there is a connection. The overall point I am trying to make here is: don’t rely on an answer here. This is just a tutorial, you are the user purchasing and using Substance Painter, and you are responsible for reading the terms of service and license.

The Quixel Megascans issue would probably not have been as large if users had simply read the terms of service before agreeing to it. I know it’s a popular joke that no one reads the terms of service, but in my opinion, it really can’t hurt to at the very least skim it, especially if you are planning to use it for a project that can earn profit.

This isn’t legal advice, it’s just my opinion.

2 Likes
  1. It would be smaller, yes, but still large: You forgot all the people that knows that it‘s illegal, but still does it, like children (I think we all agree that when we were children we all did something illegal)
  1. I think I understand better: The one is like Blender (a software) and the other is a library. Ok, if this is the case, then I think we can use it (I just fear that it would be illegal)

It isn’t illegal. Substance Painter (and other Allegorithmic programs) are free to use for whatever the case. Games, movies, and even car companies are able to utilize the workflow Substance provides. Quixel Megascans, a program operated by Quixel and in turn Epic Games, is relegated to Unreal Engine, and you can obviously see why.

A few other artists on here use Substance Painter for their projects, just ask around.

2 Likes

do you have a tutorial on how to use Substances Printer? or a yt channel?

Afraid not. This tutorial series by Allegorithmic is a very good starting point if you want to learn the basics.

1 Like

thank you so much i appreciate the help.

1 Like