查看: 1740|回复: 7

问个交运算的问题

[复制链接]

该用户从未签到

发表于 2011-6-15 13:16:25 | 显示全部楼层 |阅读模式
问个交运算的问题:想用osgUtil::IntersectionVisitor检测一条线段和场景里的节点是否有交点,在构造这条线段的时候麻烦来了,我只知道起点,终点不会确定啊
我是这么做的,好像不对啊,先用osgUtil::IineSegmentIntersector::Intersections intersections;
viewer->computeIntersections(x,y,intersections);
找到个交点,我把这个交点作为上面检测线段的终点,但没成
怎么办呀?望指教!

该用户从未签到

 楼主| 发表于 2011-6-15 13:37:06 | 显示全部楼层
这个终点啊,可愁死我了

该用户从未签到

发表于 2011-6-15 17:26:39 | 显示全部楼层
为什么呢,你应该把你的问题描述清楚啊,是移动的物体,线段,或者别的。我用过这个相交测试,改造了一下,挺好用的。

该用户从未签到

 楼主| 发表于 2011-6-15 17:42:54 | 显示全部楼层
回复 3# mijue


    就是检测线段需要设置起点和终点,起点没问题,终点是动态的,说明白了就是模拟射击瞄准,我的起点是眼睛相机,终点是跟着瞄准线动的,我要的是通过这么一条线段通过碰撞检测找出瞄准线和第一物体交点,并取得物体,怎么确定呀?

该用户从未签到

发表于 2011-6-15 21:04:13 | 显示全部楼层
楼主真是个晕瓜啊,你既然知道起点是眼睛相机,那么射击方向很可能就是你的视点朝向向量啊,知道一个点还知道方向,你求不出另一个端点?这个端点有很多,无数个。。。
如果你的射击方向与视点方向不一致,那么起点是眼睛,终点就是你指向的像素所对应的三维坐标,读取这个像素的屏幕位置然后根据这个二维的位置调用opengl函数获取该像素的深度值,用反投影变换来计算出这个像素的三维坐标,即为终点。其实这个射击的朝向是你自己决定的,你自己程序不知道自己的朝向吗?
这个就是使用别人库的代价,内核自己不清楚,所以不知道朝向.
建议楼主不要学习OSG了,赶快补补数学和opengl.

我奉劝新手不要直接学习OSG,而应该加强基础图形学理论和基本的数学基础。
OSG这类成品库不是给新手用的,而是给老手用的,目的是提高开发效率。
最好有2年以上的三维实时渲染基础后再学习OSG,或者其他类似的开源库,否则就本末倒置了。
说2年还是要废寝忘食的2年,一天必须超过10小时的学习时间,否则2年都不够。

该用户从未签到

 楼主| 发表于 2011-6-15 22:51:20 | 显示全部楼层
回复 5# sky11811


    谢谢指教,不瞒你说,我是学通信的,现在是网管,边学边干仿真,苦学勤学道理我懂,可是没人等啊,等我把需要的知识学好了,估计单位都没了 ,不过还是谢谢你!

该用户从未签到

发表于 2011-6-16 08:37:32 | 显示全部楼层
废寝忘食不至于,关键是基础要打的牢靠。至少对OpenGL的坐标变换,图元装配等流水线过程要清楚得不得了,不然无论学OSG还是别的什么,到最后都是一团浆糊

该用户从未签到

 楼主| 发表于 2011-6-17 00:19:21 | 显示全部楼层
还不会搞,不过找到方法替代了,呵呵,比对坐标范围来确定,正在学空间坐标转换,好麻烦啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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