I created the ORM map using Substance Painter, and I assigned the AO, Roughness, and Metallic channels to the RGB channels. However, when I plug in the ORM map in Unity, I can't achieve the desired result. There is a difference between what I see in Substance Painter's viewport and what I see in Unity, especially in the roughness values.
Do you use ORM maps, and if so, what is your method? What is the correct method for transferring the roughness map of the model in Unity?
Replies
Are you completely sure you have each of the correct ORM values in the corresponding RGB channels? It might be exporting RMA for example (rough Red, metal Green, ambientocclusion Blue)
Also, it's best to set up the same lighting environment in both apps, like using the same HDR env map. Much easier to isolate differences.
Firstly, thank you for your response
As you can see, the Roughness details from Substance Painter are not being applied to the model in Unity. It either becomes overly shiny or the texture color becomes darker. The same issue occurs with the AO connection.
I've tried two different ways of connecting the channels in RGBA. In the first attempt, I used R (AO), G (Roughness), B (Metallic), A (empty). In the second attempt, I applied R (AO), G (Metallic), B (empty), A (Roughness). However, the result remained the same for both methods.
By the way, I'm using a texture resolution of 1024x1024 for the entire model. I'm using the Built-in render pipeline in Unity.I used the same HDRI lighting in both programs. In Unity, the ORM map I used applies a uniform roughness to the entire model, as if it's not receiving specific information from the map about which areas should be rougher.
By the way, I'm not using any custom shaders. I haven't made any customizations on the Unity 3D Core (Built-in renderer) template. I simply placed the models in the scene and assigned materials.
I also exported from Substance Painter using the metallicsmoothness presets and applied them to my other models using that texture set. In the metallicsmoothness preset in Substance Painter, Metallic was in the RGB channel, and Glossiness was in the Alpha channel. I changed the Alpha channel to Roughness. Is this the correct usage of metallicsmoothness?
So with Unity using Smoothness, it's to be expected that the result you get is different/inverted Smoothness when you put in Roughness.
Puzzeled why you modified the Painter preset, I'd expect it to work out of the box.
However, I still haven't been able to solve the issue with ORM maps in models where I'll be using AO maps.
I mean, you could plug together your own shader using Unitys' nodebased shadergraph, defining your own parameters. But without a good understanding, it increases the chance of error.
Btw, here is the wiki page on channel packing: http://wiki.polycount.com/wiki/ChannelPacking.