[osg-users] Really basic question light/material on surface

Diego Mancilla dmancillac at gmail.com
Tue Apr 9 09:53:56 PDT 2019


Hello,

 I've playing aorund with some examples on the "OpenSceneGraph 3 Cookbook" by Wang and Quian. Specifically, with Chapter 10's "Playing with delaunay triangulator".

 Here is the official repository code (with one small modification -commented-)


Code:
int main(int argc, char** argv)
{
	osg::ref_ptr<osg::Vec3Array> va = new osg::Vec3Array(9);
	(*va)[0].set(-5.0f, -5.0f, 0.4f);
	(*va)[1].set(1.0f, -5.6f, 0.0f);
	(*va)[2].set(5.0f, -4.0f, -0.5f);
	(*va)[3].set(-6.2f, 0.0f, 4.2f);
	(*va)[4].set(-1.0f, -0.5f, 4.8f);
	(*va)[5].set(4.3f, 1.0f, 3.0f);
	(*va)[6].set(-4.8f, 5.4f, 0.3f);
	(*va)[7].set(0.6f, 5.1f, -0.8f);
	(*va)[8].set(5.2f, 4.5f, 0.1f);

	osg::ref_ptr<osgUtil::DelaunayTriangulator> dt = new osgUtil::DelaunayTriangulator;
	dt->setInputPointArray(va.get());
	dt->setOutputNormalArray(new osg::Vec3Array);
	dt->triangulate();

	osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry;
	geometry->setVertexArray(dt->getInputPointArray());
	geometry->setNormalArray(dt->getOutputNormalArray());
	geometry->setNormalBinding(osg::Geometry::BIND_PER_PRIMITIVE_SET); // original code setted osg::Geometry::BIND_PER_PRIMITIVE.
	geometry->addPrimitiveSet(dt->getTriangles());

	osg::ref_ptr<osg::Geode> geode = new osg::Geode;
	geode->addDrawable(geometry.get());

	osgViewer::Viewer viewer;
	viewer.setSceneData(geode.get());

	return viewer.run();
}



So in the book, they show the following a snapshot of the result of the example (attached). The image shows that the "material/color" is responsive to "depth" (sorry if I'm using wrong terms).

But when I compile and run the example, the result is no responsive to "depth". Clearly it responds to light, as the bottom looks black and when I rotate it the surface color begins to show. For instance, I cannot differentiate between the faces as is shown on the books snapshot (see attachment).

So my question is really basic. What I'm doing wrong? or what I'm missing?
Bottomline is, how can I create a basic colored material that responds to the default light on a osg::Viewer as shown in the book?  


Thank you!

Cheers,

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=75803#75803




Attachments: 
http://forum.openscenegraph.org//files/my_result_121.jpg
http://forum.openscenegraph.org//files/forum_osg_1_466.png




More information about the osg-users mailing list