I have a 3D armor which was textured in Substance and exported following that pipeline: https://www.khronos.org/blog/art-pipeline-for-gltf, that is to say with a ORM map.

However, once the maps pluggued in the right nodes in Blender (I'm using the glTF metallic roughness node from https://github.com/KhronosGroup/glTF-Blender-Exporter)...the metal renders like plastic, not at all like in Substance. I have tried to toggle Color / Non-Color Data modes, to darken the roughness... Nothing works.

Here are some screenshots. First what it renders in Substance painter. Here's what it renders in Substance

Then what it renders in Blender using the gltf nodes Render in Blender with GLTF node

The node connexions: GLTF node connexions

And finally what it renders when plugging the maps in the Principled BSDF node enter image description here

Can someone please explain me why I can't seem to get the metal effect right using the GLTF pipeline? :(

Thank you very much :)

  • $\begingroup$ The wireup looks mostly correct to me, except the "alpha" wire shouldn't connect to "DoubleSided" (and for this model I think you can remove the alpha wire completely). What reflection map are you using? Is this Eevee or Cycles? $\endgroup$ – emackey Jan 11 at 21:32
  • $\begingroup$ I think I'd recommend the Principled BSDF node rather than the custom nodes now, along with github.com/KhronosGroup/glTF-Blender-IO. One notable limitation is that occlusion will have to be wired up and exported separately. $\endgroup$ – Don McCurdy Jan 11 at 21:36
  • $\begingroup$ Hi everyone and thank you for your answers! Emackey asked whether I was using EEVEE or Cycles which gave me the idea to try and upgrade to Blender 2.80 :) (yes I was still in Blender 2.79). I'll give it a try, as the GLTF pipeline was included as native into Blender 2.80, that might work better. I'll keep you informed :) EDIT: ok so I have tested with Blender 2.80, and it seems that the GLTF shader node doesn't exist anymore, you can simply use the Principled BSDF and it works. However it does raise a question: why is the ORM still needed? Thank you very much! $\endgroup$ – Popi Jan 17 at 15:10
  • $\begingroup$ glTF internally packs Occlusion, Roughness, Metallic into the RGB channels of what's informally called an ORM map. In Blender 2.80, a "Separate RGB" node is used to split out these channels so they can be plugged into the corresponding inputs of Principled BSDF. The "Separate" node isn't part of glTF, it's just being used to explain to Blender how glTF packs this information into a single image. $\endgroup$ – emackey Jan 25 at 2:41
  • 1
    $\begingroup$ Currently the Principled BSDF node doesn't have a hookup for baked ambient occlusion, so the importer/exporter doesn't connect that channel to anything yet. We're hoping the Blender devs add that channel to Principled BSDF, that would make import/export hookup real easy. But for now, you can still download a copy of the legacy glTF Metallic Roughness custom node, and the exporter still has a fallback that can find Occlusion on that node. $\endgroup$ – emackey Jan 28 at 15:45

An ORM texture stores each map in a channel : Occlusion in Red channel, Roughness in Green channel, Metalness in Blue channel.

You need to use a SeparateRGB node to split the texture into separate channels. Then, simply connect each channel to the corresponding input.

  • $\begingroup$ Thank you for your answer.Problem is, it seems that the GLTF node is made such as there is only one slot for the Metal and Roughness information (MetallicRoughness). So I tried what you suggested out of curiosity but it still not renders well :/ Moreover, in the Kronos pipeline they say nothing about re-separating the channels after ... :/ $\endgroup$ – Popi Jan 11 at 17:03
  • $\begingroup$ Wouldn't that work correctly if you instead plugged the corresponding separated channels into the two inputs there under the metallic roughness, into the Metallic factor and the Roughness factor? $\endgroup$ – Craig D Jones Jan 11 at 18:08
  • $\begingroup$ The SeparateRGB node is only needed when connecting ORM to Blender's own Principled BSDF node. The "glTF Metallic Roughness" node group internally contains the correct separations for a glTF ORM texture, there's no need to wire these up manually outside that node. $\endgroup$ – emackey Jan 11 at 21:31
  • $\begingroup$ Hey Craig D Jones, no it still renders wrong by plugging into the Metallic and roughness factors :/ $\endgroup$ – Popi Jan 17 at 15:09
  • $\begingroup$ I have been trying what you told me about using the gltf metallic roughness node in Blender 2.8, but I can't get the ambient occlusion map to show... Here whether the AO is pluggued or not, it gives the same result, there's no AO. ![Whether the AO is pluggued or not, it gives the same result...NO AO](i.stack.imgur.com/KPFdu.png) Am I doing something wrong? EDIT: I just realized that the AO doesn't work either in 2.79...! Below, I plugged an AO map (not an ORM, just the AO) in the Occlusion spot and...nothing happens! Maybe I should create another $\endgroup$ – Popi Feb 5 at 16:00

Ok tthat post is resolved (I'm trying to find where you toggle that lol) for now I'm using the gltf roughness metallic and not the principled bsdf shader. Thanks for your help and especially emackey!


Your Answer

By clicking "Post Your Answer", you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.