OSG 求射线与模型的交点

本文介绍了一种利用射线与3D模型进行交点检测的方法。通过设置射线的起点和终点,使用osgUtil::IntersectionVisitor和osgUtil::LineSegmentIntersector来获取与3D模型的所有交点坐标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

        }

    }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值