查看: 1097|回复: 4

一个关于pick函数的问题

[复制链接]

该用户从未签到

发表于 2011-8-26 13:27:50 | 显示全部楼层 |阅读模式
本帖最后由 Hadse 于 2011-8-26 13:33 编辑
  1.         void Pick(float x,float y)//pick函数
  2. {
  3.        osgUtil::LineSegmentIntersector::Intersections intersections;//申请一个相交测试的结果集,判断屏幕与场景相交后,得出的结果集放入此中
  4.        if (mViewer->computeIntersections(x, y, intersections))//利用view的computerIntersection函数来测试屏幕与场景相交结果存入到结果集中
  5.        {
  6.               for(osgUtil::LineSegmentIntersector::Intersections::iterator hitr = intersections.begin();//申请一个结果集遍历器,遍历该结果集
  7.               hitr!=intersections.end();
  8.               ++hitr)
  9.               {
  10.                     if (!hitr->nodePath.empty() && !(hitr->nodePath.back()->getName().empty())) //如果遍历器中的结果不是空
  11.                     {
  12.                            osg::NodePath& np = hitr ->nodePath ; //得到遍历器中的nodepath,以此可以判断该path中是否有想要的结点
  13.                            for (int i=np.size()-1; i>=0; --i)
  14.                            {
  15.                                   osgFX::Scribe* sc= dynamic_cast<osgFX::Scribe *>(np[i]);
  16.                                   if (sc!= NULL) //如果结果集中有所需要的结点,则设置隐藏该结点。其中有一个动态转换,如果可以转换成功则左值不为NULL,否则为NULL
  17.                                   {
  18.                                         if(sc ->getNodeMask() != 0)
  19.                                              sc ->setNodeMask(0) ;
  20.                                    }
  21.                             }
  22.                     }
  23.             }
  24.       }
  25. }
  26. osgViewer::Viewer* mViewer;
复制代码

该用户从未签到

 楼主| 发表于 2011-8-26 13:30:20 | 显示全部楼层
这个函数是《OSG程序设计教程》里的一个函数,想简单修改下,在鼠标点击后,可以实现模型隐藏效果,18、19行怎么修改下?求高手赐教。

该用户从未签到

发表于 2011-8-29 08:41:04 | 显示全部楼层
这段目前出现了什么问题,您的实验遇到了哪些困难,您期望的目标和实际结果有什么差距

该用户从未签到

 楼主| 发表于 2011-8-29 09:48:21 | 显示全部楼层
回复 3# array


   你好,想实现一个简单的pick函数,当点击模型时,模型可以隐藏。

该用户从未签到

发表于 2011-8-30 08:38:51 | 显示全部楼层
那么找到nodPath中您需要隐藏的那个节点,然后setNodeMask(0)或者用别的方法控制即可
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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