查看: 1527|回复: 2

判断多面体求交器是否与线段相交的代码怎么写?

[复制链接]

该用户从未签到

发表于 2012-3-28 10:29:23 | 显示全部楼层 |阅读模式
本帖最后由 vinsonxp 于 2012-3-28 11:08 编辑

我也想用鼠标选中线段,我原来是用射线求交器LineSegmentIntersector来做的,但根本选不到。后来看到"osg鼠标选中线段 "这个帖子http://bbs.osgchina.org/forum.ph ... &extra=page%3D1后才知道要用多面体求交器来做,虽然知道了思路,但我还是不知道具体怎么写程序代码,射线求交判断选中可以用下面错码,那么用多面体求交怎样写呢?
  1. void PickHandler::pick(osgViewer::View* view, const osgGA::GUIEventAdapter& ea)
  2. {
  3.         osgUtil::LineSegmentIntersector::Intersections intersections;
  4.         float x = ea.getX();
  5.         float y = ea.getY();
  6.         if (view->computeIntersections(x,y,intersections))
  7.         {
  8.              for(osgUtil::LineSegmentIntersector::Intersections::iterator hitr = intersections.begin();
  9.                         hitr != intersections.end();
  10.                         ++hitr)
  11.                 {
  12.                      ....
  13.                 }
  14.         }
  15. }
复制代码

该用户从未签到

发表于 2012-3-28 14:38:58 | 显示全部楼层
//创建多面体求交器,poly为自定义的多面体
osg::ref_ptr<osgUtil:: PolytopeIntersector> intersector = new osgUtil:: PolytopeIntersector(poly)
//创建进行相交的遍历器,遍历器会遍历节点进行相交检测
osgUtil::IntersectionVisitor iv( intersector );
//执行遍历
view->getCamera()->accept( iv );

该用户从未签到

 楼主| 发表于 2012-3-28 15:52:07 | 显示全部楼层
呵呵,找到例子了,在OSG自带例子中的osgkeyboardmouse有用到。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表