30 #include <osg/LineWidth>
31 #include <osg/LightModel>
33 #include "algorithms/WMarchingLegoAlgorithm.h"
35 #include "callbacks/WGEFunctorCallback.h"
36 #include "WGraphicsEngine.h"
38 #include "WROIArbitrary.h"
42 const std::vector< float >& vals,
43 boost::shared_ptr< WTriangleMesh > triMesh,
73 const std::vector< float >& vals,
135 std::vector< double > vec( 3 );
157 osg::Geometry* surfaceGeometry =
new osg::Geometry();
160 surfaceGeometry->setVertexArray(
m_triMesh->getVertexArray() );
164 surfaceGeometry->setNormalArray(
m_triMesh->getTriangleNormalArray() );
165 surfaceGeometry->setNormalBinding( osg::Geometry::BIND_PER_PRIMITIVE );
169 osg::Vec4Array* colors =
new osg::Vec4Array;
171 surfaceGeometry->setColorArray( colors );
172 surfaceGeometry->setColorBinding( osg::Geometry::BIND_OVERALL );
174 osg::DrawElementsUInt* surfaceElement =
new osg::DrawElementsUInt( osg::PrimitiveSet::TRIANGLES, 0 );
176 std::vector< size_t >tris =
m_triMesh->getTriangles();
177 surfaceElement->reserve( tris.size() );
179 for(
unsigned int vertId = 0; vertId < tris.size(); ++vertId )
181 surfaceElement->push_back( tris[vertId] );
183 surfaceGeometry->addPrimitiveSet( surfaceElement );
184 removeDrawables( 0 );
185 addDrawable( surfaceGeometry );
187 osg::StateSet* state = getOrCreateStateSet();
188 osg::ref_ptr<osg::LightModel> lightModel =
new osg::LightModel();
189 lightModel->setTwoSided(
true );
190 state->setAttributeAndModes( lightModel.get(), osg::StateAttribute::ON );
192 state->setMode( GL_BLEND, osg::StateAttribute::ON );