Hi Robert, thank you very much for your quick answer. The problem is that I'm not using the IntersectVisitor at all in my code but I get the error anyways!
I guess that the IntersectVisitor is used ether in the cull traversal or by the osg manipulator inside the OSG code. Any help? Thanks, Daniel -----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Robert Osfield Gesendet: Montag, 12. Juni 2006 16:12 An: osg users Betreff: Re: [osg-users] IntersectVisitor error occurs when drawing singlepoint Hi Daniel, I'm afriad the IntersectVisitor only supports intersection with surface primitives, it doesn't support lines or points. To do line and points intersections you can't use ray/line segment based intersection techniques like IntersectVisitor, you have to use something like a polytope based intersection. You could have a play with the PolytopeVisitor implementation which is part of the back-end of the SphereSegment class for inspiration. You'll find the code hidden away in src/osgSim/SphereSegment.cpp. Robert. On 6/12/06, Kallfass, Daniel, SDGE1 <[EMAIL PROTECTED]> wrote: > Hello, > > I'm having a problem drawing a single point in a drawable/geometry > (PrimitiveSet osg::PrimitiveSet::POINTS) > which is then added to an empty geode. > I get the following error message (originated from the Intersect Visitor > Class) and the point isn't drawn: > > Warning: invalid line segment passed to IntersectVisitor::addLineSegment(..) > 0 0 0 0 0 0 segment ignored. > > This error doesn't occur when I insert two or more different points into the > drawable. > I'm using a simple render loop and are not using the IntersectVisitor at all. > I've attached the code example. > > I guess that the bounding box computation fails when there is only one single > point > in the drawable/geometry. So the cull traversal might produce this error. But > I couldn't > track the error. > > Is this behaviour an OSG bug? > > Thanks! > > Best regards, > Daniel Kallfass > > > Code example: > > pxGeode = new osg::Geode(); > > > // create the vertices > osg::ref_ptr<osg::Vec3Array> pxVerts = new osg::Vec3Array(); > > pxVerts->push_back( osg::Vec3d( 3.0f, 2.0f, 1.0f ) ); > //pxVerts->push_back( osg::Vec3d( 5.0f, 3.0f, 4.0f ) ); > > // create the state set > osg::ref_ptr<osg::StateSet> pxStateSet = pxGeode->getOrCreateStateSet(); > > // create the state attributes > osg::ref_ptr<osg::Point> pxPointAttr = new osg::Point(); > pxPointAttr->setSize( m_fScale ); > pxPointAttr->setMaxSize( m_fScale ); > pxPointAttr->setMinSize( m_fScale ); > pxStateSet->setAttributeAndModes( pxPointAttr.get() ); > > // create the drawable > osg::ref_ptr<osg::Geometry> pxDrawable = new osg::Geometry(); > pxDrawable->setVertexArray( pxVerts.get() ); > > osg::ref_ptr<osg::DrawElementsUInt> pxPrimSet = new osg::DrawElementsUInt( > osg::PrimitiveSet::POINTS ); > pxPrimSet->push_back( 0 ); > //pxPrimSet->push_back( 1 ); > pxDrawable->addPrimitiveSet( pxPrimSet.get() ); > > // create the colors > osg::ref_ptr<osg::Vec4Array> pxColors = new osg::Vec4Array(); > //pxColors->push_back( m_vecColor ); > pxColors->push_back( osg::Vec4f( 1.0f, 1.0f, 1.0f, 1.0f ) ); > pxDrawable->setColorArray( pxColors.get() ); > pxDrawable->setColorBinding( osg::Geometry::BIND_PER_PRIMITIVE_SET ); > > pxGeode->addDrawable( pxDrawable.get() ); > > > _______________________________________________ > osg-users mailing list > [email protected] > http://openscenegraph.net/mailman/listinfo/osg-users > http://www.openscenegraph.org/ > _______________________________________________ osg-users mailing list [email protected] http://openscenegraph.net/mailman/listinfo/osg-users http://www.openscenegraph.org/ _______________________________________________ osg-users mailing list [email protected] http://openscenegraph.net/mailman/listinfo/osg-users http://www.openscenegraph.org/
