void WaveFrontOBJSerializer::writeMaterial(const IfcGeom::Material& style) { std::string material_name = (settings().get(IfcGeom::IteratorSettings::USE_MATERIAL_NAMES) ? style.original_name() : style.name()); IfcUtil::sanitate_material_name(material_name); mtl_stream << "newmtl " << material_name << "\n"; if (style.hasDiffuse()) { const double* diffuse = style.diffuse(); mtl_stream << "Kd " << diffuse[0] << " " << diffuse[1] << " " << diffuse[2] << "\n"; } if (style.hasSpecular()) { const double* specular = style.specular(); mtl_stream << "Ks " << specular[0] << " " << specular[1] << " " << specular[2] << "\n"; } if (style.hasSpecularity()) { mtl_stream << "Ns " << style.specularity() << "\n"; } if (style.hasTransparency()) { const double transparency = 1.0 - style.transparency(); if (transparency < 1) { mtl_stream << "Tr " << transparency << "\n"; mtl_stream << "d " << transparency << "\n"; mtl_stream << "D " << transparency << "\n"; } } }
void ColladaSerializer::ColladaExporter::ColladaMaterials::ColladaEffects::write(const IfcGeom::Material& material) { openEffect(collada_id(material.name()) + "-fx"); COLLADASW::EffectProfile effect(mSW); effect.setShaderType(COLLADASW::EffectProfile::LAMBERT); if (material.hasDiffuse()) { const double* diffuse = material.diffuse(); effect.setDiffuse(COLLADASW::ColorOrTexture(COLLADASW::Color(diffuse[0],diffuse[1],diffuse[2]))); } if (material.hasSpecular()) { const double* specular = material.specular(); effect.setSpecular(COLLADASW::ColorOrTexture(COLLADASW::Color(specular[0],specular[1],specular[2]))); } if (material.hasSpecularity()) { effect.setShininess(material.specularity()); } if (material.hasTransparency()) { const double transparency = material.transparency(); if (transparency > 0) { // The default opacity mode for Collada is A_ONE, which apparently indicates a // transparency value of 1 to be fully opaque. Hence transparency is inverted. effect.setTransparency(1.0 - transparency); } } addEffectProfile(effect); closeEffect(); }
void WaveFrontOBJSerializer::writeMaterial(const IfcGeom::Material& style) { mtl_stream << "newmtl " << style.name() << "\n"; if (style.hasDiffuse()) { const double* diffuse = style.diffuse(); mtl_stream << "Kd " << diffuse[0] << " " << diffuse[1] << " " << diffuse[2] << "\n"; } if (style.hasSpecular()) { const double* specular = style.specular(); mtl_stream << "Ks " << specular[0] << " " << specular[1] << " " << specular[2] << "\n"; } if (style.hasSpecularity()) { mtl_stream << "Ns " << style.specularity() << "\n"; } if (style.hasTransparency()) { const double transparency = 1.0 - style.transparency(); if (transparency < 1) { mtl_stream << "Tr " << transparency << "\n"; mtl_stream << "d " << transparency << "\n"; mtl_stream << "D " << transparency << "\n"; } } }