OSG 求射线与模型的交点

osg::Node *m_node = _modelNode;//设置模型节点

    osg::Vec3 start;
    osg::Vec3 end;
    osg::ref_ptr<osgUtil::IntersectionVisitor> iv = new osgUtil::IntersectionVisitor;
    osg::ref_ptr<osgUtil::LineSegmentIntersector> ls = new osgUtil::LineSegmentIntersector(start, end);
    osgUtil::LineSegmentIntersector::Intersections intersections;       //结果集


    osg::Vec3 point;
    iv->setIntersector(ls.get());
    m_node->accept(*(iv.get()));

    if (ls->containsIntersections())
    {
        intersections = ls->getIntersections();
        osgUtil::LineSegmentIntersector::Intersections::iterator iter = intersections.begin();
        for (; iter != intersections.end(); iter++)
        {
            point = iter->getWorldIntersectPoint();
            std::cout << point.x() << "  " << point.y() << "  " << point.z() << "  " << std::endl;

        }

    }

通过设置起点终点 即可求出物体与射线交点。

猜你喜欢

转载自blog.csdn.net/HelloEarth_/article/details/78586126