If you're just using one overall color per drawable, try switching that for an osg::Material with the DIFFUSE color set to the same color. You might have better luck that way.

--"J"


On 04/25/2012 01:08 PM, Maurizio Lodo wrote:
Thanks Jason,
true, I was using ShapeDrawables. However, I was already working on converting 
the geometries to use osg::Geometry. I have not done the cylinders yet; however 
I have converted the cubes, and, unfortunately the results are exactly the 
same. The code used to generate the cube geometry is pretty basic. Here it is:
Code:
osg::Geometry* CCubicPore::createCubeGeometry( const osg::Vec3&  halfLengths, const 
osg::Vec4&  color)
  {
     const float xMin( -halfLengths[ 0 ] );
     const float xMax( halfLengths[ 0 ] );
     const float yMin( -halfLengths[ 1 ] );
     const float yMax( halfLengths[ 1 ] );
     const float zMin( -halfLengths[ 2 ] );
     const float zMax( halfLengths[ 2 ] );

      osg::Geometry* cube = new osg::Geometry();
      osg::ref_ptr<  osg::Vec3Array>  vertices = osg::ref_ptr<  
osg::Vec3Array>( new osg::Vec3Array );
      osg::ref_ptr<  osg::Vec3Array>  normals = osg::ref_ptr<  osg::Vec3Array>( 
new osg::Vec3Array );
      osg::ref_ptr<  osg::Vec4Array>  colors = osg::ref_ptr<  osg::Vec4Array>( 
new osg::Vec4Array );

     // front face
      vertices->push_back( osg::Vec3(xMin,yMin,zMax) );
      vertices->push_back( osg::Vec3(xMax,yMin,zMax) );
      vertices->push_back( osg::Vec3(xMax,yMax,zMax) );
      vertices->push_back( osg::Vec3(xMin,yMax,zMax) );
      normals->push_back( osg::Vec3( 0.0, 0.0, -1.0 ) );

      // back face
      vertices->push_back( osg::Vec3(xMax,yMin,zMin) );
      vertices->push_back( osg::Vec3(xMin,yMin,zMin) );
      vertices->push_back( osg::Vec3(xMin,yMax,zMin) );
      vertices->push_back( osg::Vec3(xMax,yMax,zMin) );
      normals->push_back( osg::Vec3( 0.0, 0.0, 1.0 ) );

      // left
      vertices->push_back( osg::Vec3(xMin,yMax,zMax) );
      vertices->push_back( osg::Vec3(xMin,yMax,zMin) );
      vertices->push_back( osg::Vec3(xMin,yMin,zMin) );
      vertices->push_back( osg::Vec3(xMin,yMin,zMax) );
     normals->push_back( osg::Vec3( -1.0, 0.0, 0.0 ) );

     // right
     vertices->push_back( osg::Vec3(xMax,yMax,zMin) );
     vertices->push_back( osg::Vec3(xMax,yMax,zMax) );
     vertices->push_back( osg::Vec3(xMax,yMin,zMax) );
     vertices->push_back( osg::Vec3(xMax,yMin,zMin) );
      normals->push_back( osg::Vec3( 1.0, 0.0, 0.0 ) );

      // bottom
      vertices->push_back( osg::Vec3(xMax,yMin,zMax) );
      vertices->push_back( osg::Vec3(xMin,yMin,zMax) );
      vertices->push_back( osg::Vec3(xMin,yMin,zMin) );
      vertices->push_back( osg::Vec3(xMax,yMin,zMin) );
      normals->push_back( osg::Vec3( 0.0, -1.0, 0.0 ) );

      // top
      vertices->push_back( osg::Vec3(xMax,yMax,zMax) );
      vertices->push_back( osg::Vec3(xMax,yMax,zMin) );
      vertices->push_back( osg::Vec3(xMin,yMax,zMin) );
      vertices->push_back( osg::Vec3(xMin,yMax,zMax) );
      normals->push_back( osg::Vec3( 0.0, 1.0, 0.0 ) );

      cube->addPrimitiveSet( new osg::DrawArrays( osg::PrimitiveSet::QUADS, 0, 
vertices->size() ) );
      cube->setVertexArray( vertices );

      cube->setTexCoordArray( 0, vertices );

      cube->setNormalArray( normals );
      cube->setNormalBinding( osg::Geometry::BIND_PER_PRIMITIVE );

      colors->push_back( color );
      cube->setColorArray( colors );
      cube->setColorBinding( osg::Geometry::BIND_OVERALL );

      return cube;
  }



then I use osg::PositionAttitudeTransform to move the cubes to the correct 
position.

Cheers,
Maurizio

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





_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to