查看: 811|回复: 5

场景中先读入一个牛的模型,再在另一个位置显示该牛,在pick时如何确定选的哪个节点?

[复制链接]

该用户从未签到

发表于 2015-9-18 10:18:36 | 显示全部楼层 |阅读模式
场景中先读入一个牛的模型,再在另一个位置显示该牛,在用鼠标选择(pick)时如何确定选的哪个节点?OpenSceneGraph 快速入门指导最后一部分也提到了这个问题,但是并没有给出解决办法,在线等,希望遇到过此拣选问题的大神指教

该用户从未签到

发表于 2015-9-20 20:51:27 | 显示全部楼层
用nodepath来确定。

该用户从未签到

 楼主| 发表于 2015-9-21 14:55:38 | 显示全部楼层
亲,可以具体点吗?我是个初学者,nodepath具体代表什么

该用户从未签到

发表于 2015-9-21 21:21:50 | 显示全部楼层
给结点设置名字setName

该用户从未签到

发表于 2015-9-23 12:19:06 | 显示全部楼层
  1. osgUtil::LineSegmentIntersector::Intersection intersection = picker->getFirstIntersection();
  2.         osg::NodePath& nodePath=picker->getFirstIntersection().nodePath;
  3.         qDebug()<<intersection.getWorldIntersectPoint().x()<<"  "<<intersection.getWorldIntersectPoint().y()<<"  "<<intersection.getWorldIntersectPoint().z();


  4.         unsigned int idx=nodePath.size();
  5.         qDebug()<<"first"<<idx;
  6.         while(idx--)
  7.         {
  8.             osg::Node* node=dynamic_cast<osg::Node*>(nodePath[idx]);

  9.             if(node==NULL) continue;

  10.             std::string _CheckName = node->getName();
  11.             //判断节点名  ,没有的花 node->setName  设置
  12.             if (_CheckName=="xxxxx")

  13. }
复制代码

该用户从未签到

发表于 2016-5-10 11:22:45 | 显示全部楼层
你去看看osgpick 这个样例代码,你目前要解决的问题都在这里
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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