Material::Ref createMaterial(const ArticulatedModel::Preprocess& preprocess) const { debugPrintf("Creating material %s...", name.c_str()); Material::Specification spec; if ((diffuseMap != "") && ! preprocess.stripMaterials) { Texture::Specification s; s.dimension = Texture::DIM_2D_NPOT; // If we turn this off, the BSDF just does it anyway s.preprocess.computeMinMaxMean = true; s.settings.maxAnisotropy = 2.0f; s.filename = diffuseMap; spec.setLambertian(s); } else { spec.setLambertian(diffuseConstant); } // Assume in air spec.setEta(max(1.0f, eta), 1.0f); // OBJ models are way too specular and not shiny enough spec.setSpecular(specularConstant.pow(9.0f) * 0.4f); spec.setGlossyExponentShininess(shininess * 100.0f); // spec.setBump(bumpMap); Material::Ref m = Material::create(spec); debugPrintf("Done\n"); return m; }