|
大家好!最近再写模型拾取时遇到了问题,请教一下各位前辈。自己实现的类继承于osgrawable,看了论坛上的关于拾取和求交的文章,自己就重载了四个Drawable::accept和Drawable::supports函数
class NurbsSurface :
public osg::Drawable
{
public:
.........
virtual bool supports(const osg::Drawable::AttributeFunctor&) const { return true; }
void accept(osg::Drawable::AttributeFunctor& af);
virtual bool supports(const osg::Drawable::ConstAttributeFunctor&) const { return true; }
void accept(osg::Drawable::ConstAttributeFunctor& af) const;
virtual bool supports(const osg:rimitiveFunctor&) const { return true; }
void accept(osg::PrimitiveFunctor& functor) const;
virtual bool supports(const osg::PrimitiveIndexFunctor&) const { return true; }
void accept(osg::PrimitiveIndexFunctor& functor) const;
.........
}
但是当使用PickHandler拾取时if (view->computeIntersections(x, y, intersections))为false,并没有得到交点。
调试的时候发现没有进入上面的四个accept函数。
在computeIntersections函数中不是要调用accept函数吗?为什么没进去?
在accept函数中顶点,法向,类型都传进去了,还需要重载其他的函数吗? |
|