查看: 1024|回复: 2

摄像机下的事件

[复制链接]

该用户从未签到

发表于 2011-8-5 12:43:02 | 显示全部楼层 |阅读模式
各位好,我目前遇到一个很奇怪的问题,就是将一个camera加到场景的根节点下,然后在这个camera下加了几个模型,然后我想单击这些模型让它做一些操作,但是当我单击的时候,取不到这些模型,事件是有触发的,我camera的设置如下:

  1. mHudCamera->setViewMatrix(osg::Matrix::identity());
  2. mHudCamera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
  3. mHudCamera->setViewport(0, 0, mWidth, mHeight);
  4. mHudCamera->setProjectionMatrixAsOrtho2D(0, mWidth, 0, mHeight);
  5. mHudCamera->setClearMask(GL_DEPTH_BUFFER_BIT);
  6. mHudCamera->setRenderOrder(osg::Camera::POST_RENDER);
  7. mHudCamera->setGraphicsContext(mGc);
  8. mHudCamera->setViewMatrixAsLookAt(osg::Vec3(0.0, -10.0, 0.0), osg::Vec3(0.0, 0.0, 0.0), osg::Vec3(0.0, 0.0, 1.0));
复制代码

在事件里面是这么写的:

  1. osg::Node* scene = viewer->getSceneData();
  2. osg::Node* node = 0;
  3. if(!scene)
  4.   return;
  5. float x = ea.getX();
  6. float y = ea.getY();
  7. osgUtil::LineSegmentIntersector* picker;
  8. picker = new osgUtil::LineSegmentIntersector(osgUtil::Intersector::WINDOW, x, y);
  9. /*创建线段访问器**/
  10. osgUtil::IntersectionVisitor iv(picker);
  11. mArt->mHudCamera->accept(iv);
  12. /*有交点**/
  13. if(picker->containsIntersections())
  14. {
  15.   /*取得第一个交点**/
  16.   osgUtil::LineSegmentIntersector::Intersection intersection = picker->getFirstIntersection();
  17.   osg::NodePath& nodepath = intersection.nodePath;
  18.   node = nodepath[nodepath.size()-1];
  19.   std::string name = node->getName();
  20.   /*退出按钮**/
  21.   if(node->getName() == "Exit")
  22.   {
  23.    mArt->mousePush("Exit");
  24.   }
  25.   。。。。。。。。。。
  26. }
  27. /*没有交点**/
  28. else
  29. {
  30. }
  31. }
复制代码

我在MFC和控制台下测试的都是一样的。在主摄像机下的节点是能取到的,不知道是不是我哪边设置由问题嘛?
QQ截图20110805124146.jpg
就是我单击上面的按钮都没有反应。。。。??

该用户从未签到

发表于 2011-8-5 13:45:46 | 显示全部楼层
看看包围盒有没有问题吧

该用户从未签到

 楼主| 发表于 2011-8-5 14:34:06 | 显示全部楼层
我直接加到根节点下面是可以的,加到我另外的一个camera下面就不可以了。。。这是为什么呢。。奇怪的问题。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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