|
楼主 |
发表于 2012-10-24 09:21:25
|
显示全部楼层
liuzhiyu123 发表于 2012-10-24 07:45
不指定Z值 算出来的只能是一条射线 有窗口的x,y 还需要一个 0~1的Z值
其实,我代码中已经设置了Z值,不过是涉及近远点的
osg::Vec3d nearPoint = osg::Vec3d( ea.getX(), ea.getY(), 0.0)* _inverseMVPW;//透视投影中Znear平面的交点
osg::Vec3d farPoint = osg::Vec3d( ea.getX(), ea.getY(), 1.0)* _inverseMVPW;//透视投影中Zfar平面的交点
osg::ref_ptr< osgUtil:ineSegmentIntersector > picker =new osgUtil::LineSegmentIntersector(nearPoint, farPoint);//线段(真实的世界坐标)
关键是这个picker创建完了,针对于他的判断(picker->containsIntersections())我进不去,直接跳过,说明这个线段检测没有交集。。。。~类似的例子我也找过,但人家这样判断都没问题。。。您看下我的代码,我都困惑不知道哪里出错了。。。 |
|