BH3D Logo
PBR Extensions for OBJ/MTL

Extending Wavefront OBJ MTL Material Definition for Physically-Based Rendering

By Ben Houston, 2 Minutes Read, 2015-05-06

Tags: computer-graphics, obj, standards, pbr

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.