Ich habe eine ziemlich große Mesh, (die ich mit OSGDB laden). Es hat auch mehrere Sub-Meshes.OpenSceneGraph Emissive Beleuchtung
Ich versuche, die Emissionsbeleuchtung einzustellen. Jedoch kann ich (vermuten) sehen, dass nur das 1. Untergitter beleuchtet ist. Wie ist es möglich, alle Sub-Meshes zu beleuchten? Ich benutze keine Beleuchtung, um die Szene zu erhellen.
Was ist der empfohlene Ansatz?
int main()
{
osg::Node * cytBuilding = osgDB::readNodeFile(OBJ_FILE);
osg::Group * root = new osg::Group();
osg::PositionAttitudeTransform * scenePAT = new osg::PositionAttitudeTransform();
root->addChild(scenePAT);
scenePAT->addChild(cytBuilding);
//material
osg::Material* material = new osg::Material();
material->setAmbient(osg::Material::FRONT, osg::Vec4(1.0,1.0f,1.0f,1.0f));
material->setDiffuse(osg::Material::FRONT, osg::Vec4(1.0,1.0f,1.0f,1.0f));
material->setSpecular(osg::Material::FRONT, osg::Vec4(0.0,0.0f,0.0f,1.0f));
material->setEmission(osg::Material::FRONT, osg::Vec4(1.0,1.0f,1.0f,1.0f));
osg::StateSet* stateset = new osg::StateSet();
stateset->setAttributeAndModes(material,osg::StateAttribute::OVERRIDE|osg::StateAttribute::ON);
root->setStateSet(stateset);
// viewer
osgViewer::Viewer viewer;
viewer.setSceneData(root);
viewer.realize();
return viewer.run();
Als ich das Netz (osgDB :: readNodeFile()) zu lesen, es
*** line not handled *** :map_bump
*** line not handled *** :bump
*** line not handled *** :map_opacity
*** line not handled *** :map_d
*** line not handled *** :refl
*** line not handled *** :map_kS
*** line not handled *** :map_Ns
resultierende Anzeige folgende Fehlermeldungen angezeigt wurde:
gleiche Masche, wenn ich mit MeshLab Anzeige Ich sehe
Ich setze ein Material auf einen setState und setze es auf den Root-Knoten, wird dies nicht das Material auf alle Knoten unter der Wurzel anwenden? – mkuse
Nicht, es sei denn, sie sind 'OVERRIDE | GESCHÜTZT auf niedrigeren Ebenen. Sind Sie sicher, dass das Modell normal ist? Haben Sie versucht, einen normalglättenden Besucher zu verwenden, nur um zu testen: 'static void osgUtil :: SmoothingVisitor :: smooth (osg :: Geometry & g)'? –