I was looking for a step-by-step tutorial on how to export materials from Substance Painter to V-Ray Next. I couldn’t find one so I did some digging on the topic and decided to make one. This works for standard V-Ray Next and V-Ray GPU Next.
Although the concept of dealing with PBR maps is generally easy to understand, different implementations of physically based shaders makes this difficult. VRayMtl node in slate editor in 3ds Max for example, has several inputs, and it is less than obvious how to plugin exported maps to it. So, let get our hands dirty!
Please note that I am using the latest Substance Painter as of writing which is 2020.1.0 (6.1.0). This version of Substance Painter has several key improvements in the export window.
Here is a lovely Cessna which I textured in Substance Painter. Notice I have several UDIM tiles in the Texture Set List, that are named 1001, 1002 and so on. The UDIM tiles allow several texture tiles to be allocated to a single material, making managing larger materials easy.
In the export window I can see the texture sets, in this case our UDIMs. In the Settings tab we have several output templates. Substance Painter has Vray Next (Metallic Roughness) template which we are going to use.
I really recommend familiarize yourself with the Output Templates tab. To modify existing presets, I recommend to duplicate them by right clicking, thus creating a custom ones and leaving the originals intact. I often use additional BlendingMask channels that I added to my own template. You can create gray or color slots from the buttons on upper right corner, and then drag and drop input maps to them.
Notice also the syntax, $mesh and $textureSet. Mesh means the mesh name that the original imported 3D data had, and $textureSet is, well a texture set which in our case is the UDIM number.
After you are done making your tweaks here, click Export in the Settings tab and open 3ds Max and Slate Editor. It can be found under Rendering menu and under Material Editor section.
Here I have the model and VRayMTL open with the lovely V-Ray IPR render. It looks very much the same as what I saw in Substance Painter.
In order to make our material from scratch, lets find VRayMtl node from the 3ds Max Material/Map Browser. It can be found in under V-Ray section. Simply drag and drop it to the Slate Editor.
Here is the settings that we need to make in order to make V-Ray understand the metal-roughness workflow we have used.
First let’s set the Reflect color white, and make sure Fresnel reflections is turned on. Then, under BRDF section switch the radio button to Use roughness instead of glossiness. What this does is it simply inverts the glossiness map, as roughness is inverted glossiness. Hold on, I will explain how to plugin the map shortly.
Let’s add a VRayHDRI loader from the Maps section under V-Ray.
Find the folder where you exported the maps and choose a Basecolor map. If you only use one textureset, you can skip the next sentence. If you use UDIMs, then simply use <UDIM> tag where the number 1001. This will automatically load all the maps.
It is important to se the Color space of the Basecolor map to sRGB as this typically has gamma in it. Now, please plug this map to the Diffuse in VrayMTL.
For normal map, it is same task, but with normal map and for all maps from hereon, instead of sRGB, please use “None” as a Color space instead of the inverse gamma which is default.
Now, for the real meat of this tutorial; the trick.
You can see there is “Roughness” in the VRayMtl but we are not plugging our Roughness to it. Instead we are plugging it to the Refl. gloss. Roughness appears to be V-Ray’s diffuse roughness which isn’t same as PBR Roughness.
Because we earlier swapped the radio button to use Roughness workflow instead of Glossiness, V-Ray will treat this Refl.gloss input as a proper roughness input.
Oddly enough, now the Roughness map does appear to be plugged in “Roughness” slot in the Maps section of the VrayMtl node. Confusing don’t you say? However this is the correct way.
Then, go ahead and plugin the Metalness map, again not forgetting to switch it’s Color space to “none”.
For the last step, do make sure Enable Gamma/LUT Correction is switched in the Preference Settings of 3ds Max. PBR workflow requires this to to work properly.
Here is a final render of the Cessna with some lovely HDRI in the background which I created.
I hope you found this tutorial useful. Please feel free to share this tutorial in social media. Please also check out my other tutorials.
- You might wonder why I have used VRayHDRI loader instead of the ordinary Bitmap. When dealing with UDIMs the Multi Tile Map doesn’t work well with more than 10 UDIMs, and also I find dialing in the correct Color space settings easier with VRayHDRI. With simple models Bitmap should work fine as well, just make sure to use Linear gamma for all maps except the Basecolor map.
- Comparing to the old Spec gloss workflow with V-Ray including the usage of IOR maps to make metal reflect correctly, the metal-roughness is in my opinion superior way. It also has less maps, which might amount to less texture overhead.