查看: 2183|回复: 6

[求助]屏幕点与xy面的交点+添加父节点

[复制链接]

该用户从未签到

发表于 2012-10-27 23:11:47 | 显示全部楼层 |阅读模式
本帖最后由 tiantangtl 于 2012-10-28 17:36 编辑

想实现鼠标捕捉三维空间中xy平面上的点,想法是通过const osgGA::GUIEventAdapter获取屏幕点再做一条射线与xy面的交点,看到array的下面这段代码
  1. osg::Vec3d rtn;
  2. osgManipulator::PointerInfo pi;
  3. pi.setNearFarPoints( osg::Vec3(0,-10000,10), osg::Vec3(0,10000,10) );
  4. osgManipulator::PlaneProjector* pp = new osgManipulator::PlaneProjector;
  5. pp->setPlane( osg::Plane(osg::Vec3(0,-1,1),osg::Vec3(0,0,0)) );
  6. if ( !pp->project( pi, rtn ) ) return 1;
  7. std::cout << "X" << rtn.x() << "Y" << rtn.y() << "Z" << rtn.z() << std::endl;
复制代码
将其中的
osg::Vec3(0,-10000,10), osg::Vec3(0,10000,10)改为osg::Vec3(x,-10000,y), osg::Vec3(x,10000,y)
osg::Vec3(0,-1,1),osg::Vec3(0,0,0)改为osg::Vec3(0,0,1),osg::Vec3(0,0,0)
为什么pp->project( pi, rtn )总是false,是不是还有哪存在问题?

另,node上原来已经有个父节点,如何在node节点上添加一个matrixtransform的父节点使其能够记录变换?看源码中addParent是保护函数。

求大神指点,感激不尽!

该用户从未签到

发表于 2012-10-28 08:44:23 | 显示全部楼层
1.您自己画一下,看看线和面的位置正确么?可能相交么?  2.addchild中会自动调用addparent

该用户从未签到

发表于 2012-10-28 08:45:29 | 显示全部楼层
1.您自己画一下,看看线和面的位置正确么?可能相交么,看看您设计的对么?  2.addchild中会自动调用addparent

该用户从未签到

 楼主| 发表于 2012-10-28 09:37:21 | 显示全部楼层
liuzhiyu123 发表于 2012-10-28 08:45
1.您自己画一下,看看线和面的位置正确么?可能相交么,看看您设计的对么?  2.addchild中会自动调用addpar ...

您可否具体指出一下问题和思路,我再想想,谢谢,呵呵

该用户从未签到

发表于 2012-10-28 14:28:49 | 显示全部楼层

RE:

tiantangtl 发表于 2012-10-28 09:37
您可否具体指出一下问题和思路,我再想想,谢谢,呵呵

线跟面已经平行了,我想您还不太清楚那几个参数的具体意义,好好看一下吧

该用户从未签到

 楼主| 发表于 2012-10-28 17:55:49 | 显示全部楼层
liuzhiyu123 发表于 2012-10-28 14:28
线跟面已经平行了,我想您还不太清楚那几个参数的具体意义,好好看一下吧

上面的参数只有两对
  1. pp->setPlane( osg::Plane(osg::Vec3(0,0,1),osg::Vec3(0,0,0)) );
复制代码
plane的构造函数中第一个参数是法向量,第二个参数是面上一点,我觉得这个参数应该设置的没有问题
  1. pi.setNearFarPoints( osg::Vec3(X,-10000,Y), osg::Vec3(X,10000,Y) );
复制代码
如果有问题的话应该是上面这个设置,near point 和far point的设置,旋转空间至XY面对着屏幕,此时点击时依然没有交线吗?请问该种思路是否可行,您可有其他思路?谢谢,可能图形学的相关知识还有欠缺

该用户从未签到

发表于 2012-10-29 07:48:17 | 显示全部楼层
tiantangtl 发表于 2012-10-28 17:55
上面的参数只有两对plane的构造函数中第一个参数是法向量,第二个参数是面上一点,我觉得这个参数应该设置 ...

不清楚您要做什么,所以没有思路或者方法可谈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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