IntersectVisitor类

来源:互联网 发布:soap rest 知乎 编辑:程序博客网 时间:2024/06/05 22:34

该类是一个访问器类,包含线段并对节点进行碰撞检测的类。可以判断其包含的线段是否与物体发生交集,也可以求出交点。
类方法如下:
void addLineSegment(osg::LineSegment *seg)
往当前访问器中添加线段,以用于计算该线段与物体是否相交

HitList &getHitList(cosnt osg::LineSegment *seg)
求出当前线段与物体的交点。HitList中存放的是交点

int getNumHits(const osg::LineSegment *seg)
求出当前线段与物体有多少交点

LIneSegmentHitListMap &getSegHitList()
求出线段与对应交点结果的 映射集合。其中存放的都是线段以及该线段与物体的交点。

bool hits()
求出当前已压入的线段与物体是否产生交点,产生返回真。

void setLODSelectionMode(LODSelectionMode mode)
设置与LOD模型碰撞检测的模式。也就是具体与哪一层LOD求交。
mode 可以设置为USE_HIGHEST_LEVEL_OF_DETAIL(与最精细求交)、USE_SEGMENT_START_POINT_AS_EYE_FOR_LOD_LEVEL_SELECTION(把线段的起点当作当前视点时,LOD显示几层,就与这一层进行求交)

LODSelectionMode getLODSelectionMode() const
得到设置的与:LOD模型碰撞模式

void setEyePoint(const osg::Vec3 &eye)
在局部坐标系中设置视点

virtual osg::Vec3 getEyePoint() const
得到视点位置

virtual float getDistanceToEyePoint(const osg::Vec3 &pos , bool withLODScale) const
得到视点到pos点的距离
pos 需要求到视点距离的pos点
withLODScale 是否计算LOD偏移

virtual void apply(osg::Node &)
virtual void apply(osg::Geode &)
virtual void apply(osg::Billboard &node)
virtual void apply(osg::Group &node)
virtual void apply(osg::Transform &node)
virtual void apply(osg::Switch &node)
virtual void apply(osg::LOD &node)
需要计算哪一种类型的节点,就是哪一种apply()

原创粉丝点击