BH3D Logo
PBR Extensions for OBJ/MTL

Extending Wavefront OBJ MTL Material Definition for Physically-Based Rendering

By Ben Houston, 2015-05-06

Originally published on the now defunct Exocortex blog. Republished here for posterity.

Updates

Original Proposal

Over the last couple of years, the game industry has moved from the traditional Blinn-Phong shading model towards the Physically-based or Physically-plausible Rendering method that uses new material definitions that make it easier for artists to create realistic (e.g. physical) results.

But there is a significant issue in trying to develop assets for PBR-based renderers. There is no well defined format for transmitting the underlying Physically-based Material parameters between various creation tools (e.g. Clara.io, Unreal Engine, CryEngine, Unity, Maya, 3DS Max, Modo.)

In this blog post, we propose a simple solution. We suggest simply extending the Wavefront MTL material format with a number of new parameters that capture the model proposed by Disney for Physically-Based Rendering.

To represent a PBR material, we suggest using these existing well defined Wavefront MTL material properties:

  • Kd/map_Kd (base/diffuse) // reuse
  • Ks/map_Ks (specular) // reuse
  • d or Tr (opacity) // reuse
  • map_d/map_Tr (opacitymap) // reuse
  • Tf (translucency) // reuse
  • bump/bm (bump map) // reuse
  • disp (displacement map) // reuse

And we propose adding these additional properties, which refer to PBR-specific parameters as defined by the Disney PBR paper:

  • Pr/map_Pr (roughness) // new
  • Pm/map_Pm (metallic) // new
  • Ps/map_Ps (sheen) // new
  • Pc (clearcoat thickness) // new
  • Pcr (clearcoat roughness) // new
  • Ke/map_Ke (emissive) // new
  • aniso (anisotropy) // new
  • anisor (anisotropy rotation) // new
  • norm (normal map) // new

The various parameters are to be parsed in the same manner as the original MTL parameters.