Skip to content

Export Textures for glTF

This guide covers the glTF destination on Export Texture and the matching source on Texture Folder. The files are written for a glTF 2.0 material: one color texture, one normal texture, one emissive texture, and one packed texture that serves both the metallic-roughness slot and the occlusion slot.

SettingValue
DestinationglTF
Filename Template{name}_{channel}
Normal ConventionOpenGL

Shown for a set named oak_bark with all eight roles (how to read these tables). A set with fewer roles writes fewer files.

FileWhat it holdsContainer and depthEncoding
oak_bark_baseColor.pngBase Color in RGB, the set’s cutout in alphaPNG 8-bitColor
oak_bark_normal.pngNormalPNG 8-bitPacked normal, OpenGL
oak_bark_metallicRoughness.pngPacked: R Ambient Occlusion, G Roughness, B MetallicPNG 8-bitLinear data
oak_bark_emissive.pngEmissivePNG 8-bitColor

Every row is declared 8-bit PNG, which is what glTF viewers and importers read.

Not written: Height. Core glTF 2.0 has no height or displacement texture, so the panel reads Not written: Height (glTF has no slot for it) with an Add Map button. Use it when your own pipeline consumes a height file beside the glTF.

Opacity has no file of its own either. glTF carries transparency in the base color texture’s alpha, which is where the set’s cutout goes.

  1. Point both metallicRoughnessTexture and occlusionTexture at the one oak_bark_metallicRoughness.png file. The metallic-roughness slot reads green and blue, the occlusion slot reads red, so one image serves both.
  2. Set alphaMode to MASK or BLEND when baseColor carries a cutout. The default is OPAQUE, and the alpha is then ignored.
  3. Set emissiveFactor to [1, 1, 1] when you bind emissive. The default of 0 multiplies the texture away.

There are no import flags to change. The format declares each texture’s use, so a viewer reads baseColor and emissive as sRGB and the rest as data.

Point Texture Folder at the folder and set Source to glTF, or leave it on Auto.

  • metallicRoughness unpacks into Ambient Occlusion, Roughness, and Metallic. The Files section shows the three lanes and lets you turn one off.
  • A metallicRoughness written by a tool that packs no occlusion carries an empty red lane. An empty Ambient Occlusion lane is dropped rather than imported as a fully occluded map, and is listed as Skipped with the reason “This lane is empty, so the file carries no Ambient Occlusion.”
  • A cutout in the baseColor alpha comes back as the set’s Opacity, the same lane alphaMode reads in an engine.
  • The packed arrangement is Khronos guidance, not normative specification text. The core glTF 2.0 specification does not describe occlusion packed into the metallic-roughness texture. The clearest first-party statement of “Red: Ambient Occlusion, Green: Roughness, Blue: Metallic” is the Khronos art pipeline article. The per-channel facts for each slot on its own (metalness from B, roughness from G, occlusion from R) are quoted from the schema and are certain.
  • The normal convention. glTF’s scale formula is given in the schema, and the OpenGL style (green up) follows from it and is corroborated across the specification, but no single sentence says so.
  • The color spaces (base color and emissive sRGB, the rest linear) are stated per texture across the Materials chapter rather than in one sentence. They are identical to what ArcBrush writes.
  • glTF publishes no naming convention for external image files. The names above are ArcBrush’s, chosen to read as the specification’s own property names.