Full In-depth Tutorial on how to use PBR Materials to create realistic objects in Roblox

Hello everyone! Today I am going to show how you would properly use PBR Materials

Step 1: Get your Textures
I’ll be using 2K Resolution Textures from PolyHaven

I’ll be using this Aerial Rock Texture
Make sure to download it in 2K as Roblox will likely crash or just not accept anything above it.


Cool tutorial! Just a heads up it’s better to download 1k textures since anything above that roblox will revert to 1k

  • JDFantasy

Once you’ve downloaded the zip file, extract it and you should have these.

Diff = Color
Disp = Displacement
Nor_GL/Nor_DX = Normal Map
Rough = Roughness

Step 2: Getting the Extra Files

Most of the time Polyhaven doesn’t include Ambient Occlusion Maps in the zip files so we’ll need to download it separately.
Click the 3 lines beside the Download button and this should appear

On the AO line download the PNG of it.

Once downloaded Move on to the next step.

Step 3: Combining the Color map and AO map

Open up paint.net and if you don’t already have it, you can get it here.

  • Click File>Open and choose the diff map from the texture.
  • Click Layers>Import from file then select your AO map
  • Click F4>Change the Blend mode from Normal to Multiply and click OK

You have now combined the Color and AO map.
You can now save it as a PNG.

Step 4: Creating the Mesh

Open up Blender and if you don’t already have it you can get it here.
(Keep in mind that I’m using Blender 3.0 which is a experimental version but it shouldn’t have a difference in this tutorial)

Once your there delete the default cube by selecting it and clicking X>Delete

This is what you should have now.

After that click Shift+A on your keyboard and this should pop up.


Click Mesh and select any Shape you want.
I’ve chosen the UV Sphere.

After you have inserted your shape.

Go into edit mode by clicking TAB while your shape is selected.
You should see something like this.

Right click and click Subdivide.
Once you click it there should be a little tab in the corner.

Click it and change the number of cuts to 2 or 3 (More if your using a cube or a plane)
After that exit out of edit mode and proceed.

On the right there should be these (Unless you’re using a custom layout)

Click the Wrench and add a Displace modifier.

Click “New” in the modifier and click this.

It will move you to the Texture Properties tab, now click the Open button.

And select the disp/displacement map.

Now go back to the modifier tab.
Depending on the texture your using you may want to set the strength from 0.1 to 0.4 (I’ll set mine to 0.3)

If you see that it doesn’t have enough detail then you can subdivide a bit more.

Now you should have something like this

Now right click and click Shade Smooth.

(Apply the modifiers first)

You’re done creating your mesh congrats! Now export it by clicking File>Export>Wavefront (.obj)

(Note: If you have to many faces/triangles then you can add a Decimate modifier to decrease the number of faces by decreasing the ratio. (Apply the Displace modifier before this))

Step 4: Mesh Import and Texturing

Open up Roblox studio if you don’t already have it you can get it here.

Open up a baseplate (or a game you’re working on) and Publish it (Optional so that we can use Asset Manager)

Add a MeshPart.

Select your MeshPart and Click the folder with an arrow icon.

And select the OBJ file from Blender.

This is what you should have now

(If it’s too small just scale it)

Now add a SurfaceAppearance to the MeshPart.

Select the SurfaceAppearance and Add a ColorMap (Use the Diff map combined with the AO map we made earlier)

Add A Normal Map and a Roughness map (Metalness Map too if you have it)
(If your Normal map is in a EXR format just download a PNG format using the same method from when we downloaded the AO map)

Now you should have something like this.

(Just included a plane as an extra)

Looks pretty bad right?

Well that’s because the default lighting settings aren’t that good so change up a few settings to make it look better.

Here’s the final result.

And here are some other PBR stuff I Made with this method.


Thank you for reading through the tutorial!


Can we use subdivision modifiers for better displacement

1 Like

Cool tutorial! Just a heads up it’s better to download 1k textures since anything above that roblox will revert to 1k


Ah ok, Didn’t know that thanks! I’ll edit it now.

I’m bookmarking this, as I was using the Roughness for the asset decal :sweat_smile:

1 Like

Sorry for bumping this, though I am curious what you need to do if you don’t have AO as an option by itself?

If it isn’t an option and it isn’t included in the zip/rar texture file, then you can feel free to skip the step of combining the AO and Color map.

I’ve been reading about PBRs not working for some people, and my textures will not load in the SurfaceAppearance asset. Do the textures need to be uploaded as JPG or PNG? Or does this matter at all?

According to Roblox, PNG is the required format… it may have to do with JPG not rendering transparency for the Alpha Mode to work

In my experience at least, both JPG and PNG work.

Hey OP it seems like most of the media in your post is broken

1 Like