KhronosGroup/glTF-Sample-Models

ORM (occlusion, roughness, metallic) texture format is valid or invalid?

emadurandal opened this issue · 2 comments

The FlightHelmet sample uses 'ORM' texture which includes occlusion in R channel, roughness in G channel and metallic in B channel.

  "materials": [
    {
      "pbrMetallicRoughness": {
        "baseColorTexture": {
          "index": 0
        },
        "metallicRoughnessTexture": {
          "index": 1
        }
      },
      "normalTexture": {
        "index": 2
      },
      "occlusionTexture": {
        "index": 1
      },
      "name": "GlassPlasticMat"
    },
...
  "textures": [
    {
      "source": 0
    },
    {
      "source": 1
    },
...
  "images": [
    {
      "uri": "FlightHelmet_baseColor.png"
    },
    {
      "uri": "FlightHelmet_occlusionRoughnessMetallic.png"
    },

But according to the glTF2 spec,

https://github.com/sbtron/glTF/blob/30de0b365d1566b1bbd8b9c140f9e995d3203226/specification/2.0/schema/material.pbrMetallicRoughness.schema.json

It says "metallicRoughnessTexture: The metallic-roughness texture has two components. The first component (R) contains the metallic-ness of the material. The second component (G) contains the roughness of the material. These values are linear. If the third component (B) and/or the fourth component (A) are present, they are ignored."

As you can see, these are contradictory. Is the FlightHelmet wrong on this point?
Which specification do the data currently distributed around the world follow? Should we follow the glTF spec in the future?

Oh, it's my mistake.
Thanks for your pointing out.