Does glTF have a way of specifying transmission factor in materials?

I’m trying to export some trees and the materials for the leaves need to specify a transmission factor (ie, how much of the color is shown on the side of the polygon facing away from the light source). I’ve been looking through the source for both my 3D editor and game engine, and can’t find anything like that anywhere.

Does glTF allow you to specify this? I’m having trouble finding a list of all the fields I can use in a “materials” node - as far as I can tell it seem to be limited to “pbrMetallicRoughness” and a few flags.

You might be looking for “alpha” — it’s the 4th component of the baseColorFactor. It’s equivalent to alpha blending or opacity in many engines. For example:

{
  "pbrMetallicRoughness": {
    "baseColorFactor": [1.0, 1.0, 1.0, 0.5],
    "metallicFactor": 0.0,
    "roughnessFactor": 1.0
  },
  "alphaMode": "BLEND"
}

There’s also an extension, KHR_materials_transmission, but that’s a somewhat more advanced PBR material concept, and doesn’t exist in all game engines.

That’s not quite what I mean. By transmission I don’t mean the light shines through like through a window, I mean that the surface is very thin and so if the side of the surface facing the light is lit then the surface facing away is too.

If you had a leaf or a thin sheet of cloth and held it in front of a bright light, the side facing away from the light would be visible too, where as this would not happen if you were holding up a sheet of metal foil or ceramic. You would see this ‘ttansmitted’ light even if your material was otherwise opaque and cast a shadow. This can work in combination with the alpha channel where the alpha can cut out parts of the image or make them translucent while ‘transmission’ just describes what the back side of that polygon looks like.

Oops, I see. This is the effect you mean, I think?

Left: opaque paper plane. Right: translucent paper plane.
Source: Autodesk Standard Surface.

If so, it’s a planned addition through an upcoming extension, KHR_materials_translucency. https://github.com/KhronosGroup/glTF/pull/1825. You can find some examples of how that compares to transmission (or to our use of that term) here.

Yes, I think that’s it. I think Blender calls this effect translucency too, but the Godot engine calls it transmission, so that’s what I went with. Do you know when this will be added to the standard?

This is the announcement of the first half of the new material properties (including clearcoat, transmission, and sheen):

The next phase should include translucency, and should be available some time in 2021. I’d expect you’ll be able to create models with those materials, using tools like Blender, around the same time.