From 2e33cf0abc8cc123114f66326d55c662ca08a863 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Mon, 15 Jan 2018 14:22:18 +0100 Subject: [PATCH] obj plugin: Fix not writing material shininess --- src/osgPlugins/obj/OBJWriterNodeVisitor.cpp | 4 ++++ src/osgPlugins/obj/OBJWriterNodeVisitor.h | 1 + 2 files changed, 5 insertions(+) diff --git a/src/osgPlugins/obj/OBJWriterNodeVisitor.cpp b/src/osgPlugins/obj/OBJWriterNodeVisitor.cpp index eaaec1187..6a5277c27 100644 --- a/src/osgPlugins/obj/OBJWriterNodeVisitor.cpp +++ b/src/osgPlugins/obj/OBJWriterNodeVisitor.cpp @@ -425,6 +425,7 @@ OBJWriterNodeVisitor::OBJMaterial::OBJMaterial(osg::Material* mat, osg::Texture* diffuse(1,1,1,1), ambient(0.2,0.2,0.2,1), specular(0,0,0,1), + shininess(-1), image("") { static unsigned int s_objmaterial_id = 0; @@ -437,6 +438,7 @@ OBJWriterNodeVisitor::OBJMaterial::OBJMaterial(osg::Material* mat, osg::Texture* diffuse = mat->getDiffuse(osg::Material::FRONT); ambient = mat->getAmbient(osg::Material::FRONT); specular = mat->getSpecular(osg::Material::FRONT); + shininess = mat->getShininess(osg::Material::FRONT)*1000.0f/128.0f; } if (tex) { @@ -454,6 +456,8 @@ std::ostream& operator<<(std::ostream& fout, const OBJWriterNodeVisitor::OBJMate fout << " " << "Ka " << mat.ambient << std::endl; fout << " " << "Kd " << mat.diffuse << std::endl; fout << " " << "Ks " << mat.specular << std::endl; + if (mat.shininess != -1) + fout << " " << "Ns " << mat.shininess<< std::endl; if(!mat.image.empty()) fout << " " << "map_Kd " << mat.image << std::endl; diff --git a/src/osgPlugins/obj/OBJWriterNodeVisitor.h b/src/osgPlugins/obj/OBJWriterNodeVisitor.h index 8dc16a0d5..8a9cf8f6f 100644 --- a/src/osgPlugins/obj/OBJWriterNodeVisitor.h +++ b/src/osgPlugins/obj/OBJWriterNodeVisitor.h @@ -116,6 +116,7 @@ class OBJWriterNodeVisitor: public osg::NodeVisitor { OBJMaterial(osg::Material* mat, osg::Texture* tex); osg::Vec4 diffuse, ambient, specular; + float shininess; std::string image; std::string name; };