Material validation in "Convert To USD" when importing glTF

The following additional verification.

Check Environment

OS : Windows 10
Mem : 64 GB
GPU : NVIDIA RTX A5000 (VRAM 24GB)
Omniverse : Omniverse Create 2022.1.3

Verification details

Tested material reproducibility when importing glTF files converted to USD.
The following is a list of what was incorrect when each was verified.

The list is divided into two parts because the MDL of the material changes depending on whether the option “Import Materials as UsdPreviewSurface” is turned on or off.

Import Materials as UsdPreviewSurface : Off

  • The scale of normalTexture is not stored (still 1.0)
  • Alpha value of “baseColorFactor” is not reflected when texture is not specified in “alphaMode=BLEND”

Import Materials as UsdPreviewSurface : On

  • The scale of normalTexture is not stored (still 1.0)
  • Alpha value of “baseColorFactor” is not reflected when texture is not specified in “alphaMode=BLEND”
  • Not multiplying when using baseColorFactor and baseColorTexture.
    ==> Can be handled with “inputs:scale”
  • Not multiplying when using metallicRoughnessTexture, roughnessFactor and metallicFactor.
    ==> Can be handled with “inputs:scale”
  • KHR_texture_transform is not reflected.

Files for verification

I have created glb files for verification.
Please use “Convert To USD” to convert to USD.
I have checked with RTX Interactive (PathTracing).

For scale confirmation of normal map

glTFTest_normalMap.glb (65.9 KB)
In glTF, set “scale” of “normalTexture”.

{
  "doubleSided": true,
  "name": "normal2_mat",
  "normalTexture": {
    "index": 1,
    "scale": 0.5
  },
  "pbrMetallicRoughness": {
    "baseColorFactor": [
      0.800000011920929,
      0.800000011920929,
      0.800000011920929,
      1
    ],
    "metallicFactor": 0,
    "roughnessFactor": 0.5
  }
},


The normal map scale is not reflected in the USD.

Use BLEND in AlphaMode

glTFTest_AlphaMode_Blend.glb (130.2 KB)
In glTF, set Alpha of “baseColorFactor”.

{
  "alphaMode": "BLEND",
  "name": "blend_05_mat",
  "pbrMetallicRoughness": {
    "baseColorFactor": [
      0.20823588967323303,
      0.18150004744529724,
      0.8000000715255737,
      0.5
    ],
    "metallicFactor": 0,
    "roughnessFactor": 0.20000000298023224
  }
},


If no texture is used, the Alpha of baseColorFactor is not reflected in the USD.
When using a texture without Alpha, the Alpha of the baseColorFactor is not reflected in the USD.

Multiplication of BaseColorMap and BaseColor

glTFTest_BaseColor.glb (56.9 KB)
In glTF, Set baseColorTexture and baseColorFactor.

{
  "doubleSided": true,
  "name": "tex2_mat",
  "pbrMetallicRoughness": {
    "baseColorFactor": [
      0.08553679287433624,
      0.1942881941795349,
      0.4623614251613617,
      1
    ],
    "baseColorTexture": {
      "index": 1
    },
    "metallicFactor": 0,
    "roughnessFactor": 0.20000000298023224
  }
}


When UsdPreviewSurface.
When using baseColorTexture and baseColorFactor, the colors are not multiplied.
How about using “inputs:scale” in UsdPreviewSurface?

Use MetallicMap/RoughnessMap/roughnessFactor/metallicFactor

glTFTest_MetallicRoughnessMap.glb (41.9 KB)
In glTF, Set metallicRoughnessTexture, roughnessFactor and metallicFactor.

{
  "doubleSided": true,
  "name": "tex1_mat",
  "pbrMetallicRoughness": {
    "baseColorFactor": [
      0.3932863771915436,
      0.3932863771915436,
      0.3932863771915436,
      1
    ],
    "roughnessFactor": 0.6,
    "metallicFactor": 0.8,
    "metallicRoughnessTexture": {
      "index": 0
    }
  }
}


When UsdPreviewSurface.
When using metallicRoughnessTexture, roughnessFactor and metallicFactor, the value are not multiplied.
How about using “inputs:scale” in UsdPreviewSurface?

Testing KHR_texture_transform

glTFTest_TextureTransform.glb (56.9 KB)

In glTF, Use “KHR_texture_transform” Extension.

{
  "doubleSided": true,
  "name": "tex2_mat",
  "pbrMetallicRoughness": {
    "baseColorTexture": {
      "index": 1,
      "extensions": {
        "KHR_texture_transform": {
          "scale": [
            4,
            2
          ]
        }
      }
    },
    "metallicFactor": 0,
    "roughnessFactor": 0.5
  }
}


When UsdPreviewSurface.
Texture transformation of “KHR_texture_transform” is not reflected.

There are other items that may not be correct when converting from glTF to USD, and I will try to add them later.