查看: 2746|回复: 20

怎么即时获取鼠标在空间中的位置啊

[复制链接]

该用户从未签到

发表于 2012-8-6 09:52:34 | 显示全部楼层 |阅读模式
比如 我要做这样一个效果,先点击一个物体获取交点,然后移动鼠标,可以获取鼠标即时的位置,根据2点画一条线!

该用户从未签到

发表于 2012-8-6 12:02:09 | 显示全部楼层
drawable 中两个点 外界的eventhandler在移动的过程中 更改这个drawable的vectorarray中的数据

该用户从未签到

 楼主| 发表于 2012-8-6 15:03:20 | 显示全部楼层
貌似知道你的思路!不过应该怎么做呢!

该用户从未签到

发表于 2012-8-6 21:42:10 | 显示全部楼层
这个要先选中两个点然后再以两点为端点划线吧……鼠标是二维的操作……不知道深度信息怎么实时绘制鼠标在三维空间中的轨迹呢?

该用户从未签到

发表于 2012-8-7 07:56:53 | 显示全部楼层
只能用视锥体的near 和 far 面

该用户从未签到

发表于 2012-8-7 10:28:01 | 显示全部楼层
移动的过程中,鼠标实时与场景求交

该用户从未签到

发表于 2012-8-9 23:53:49 | 显示全部楼层
6l正解~
case:osgGA::GUIEventAdapter::MOVE
进行代码的编写,不断求交~

该用户从未签到

 楼主| 发表于 2012-8-24 17:26:11 | 显示全部楼层
buaahc 发表于 2012-8-9 23:53
6l正解~
case:osgGA::GUIEventAdapter::MOVE
进行代码的编写,不断求交~

请问如何事实求交啊!当移动到没有物体的时候!怎么获取三维空间坐标呢!

该用户从未签到

发表于 2012-8-25 20:03:20 | 显示全部楼层
鼠标单击点在世界坐标系中的射线 计算原理

http://blog.csdn.net/tmljs1988/article/details/7797444

该用户从未签到

发表于 2012-8-26 22:11:08 | 显示全部楼层
木子匕 发表于 2012-8-24 17:26
请问如何事实求交啊!当移动到没有物体的时候!怎么获取三维空间坐标呢!


没有移动到物体 为什么要求空间坐标呢,求鼠标的空间坐标么?鼠标哪有空间坐标。。。
求交是鼠标向屏幕内部发射线与场景中模型的相交~
然后计算的是模型的世界坐标,没有相交怎么求空间坐标。。。

就是在MOVE里面实时的进行求交运算,将求交那段代码写到
case osgGA::GUIEventAdapter::Move
{

}
ok了,这样鼠标在移动过程中不断求交

该用户从未签到

 楼主| 发表于 2012-8-27 09:21:34 | 显示全部楼层
buaahc 发表于 2012-8-26 22:11
没有移动到物体 为什么要求空间坐标呢,求鼠标的空间坐标么?鼠标哪有空间坐标。。。
求交是鼠标向屏 ...

那鼠标的移动过程中,没有与空间中的物体相交,这时候怎么根据2点划线呢!

该用户从未签到

发表于 2012-8-27 14:55:55 | 显示全部楼层
木子匕 发表于 2012-8-27 09:21
那鼠标的移动过程中,没有与空间中的物体相交,这时候怎么根据2点划线呢!

如果鼠标的射线与场景没有交点的话是不能取到空间三维坐标点的,不过,根据我的经验,好像一般都会有一个交点,只是这个时候往往不是你想要的交点了!个人感觉还是要针对没有交点的时候写一段代码,以防有错!把没有交点的情况都考虑到,然后写出相应的处理代码!个人观点,因为不知道您这样做是要完成什么功能!

该用户从未签到

 楼主| 发表于 2012-8-27 16:50:02 | 显示全部楼层
buptronin 发表于 2012-8-27 14:55
如果鼠标的射线与场景没有交点的话是不能取到空间三维坐标点的,不过,根据我的经验,好像一般都会有一个 ...

效果如图所示!怎么实时画出这条线呢,当没有与任何物体相交时
未命名.jpg

该用户从未签到

发表于 2012-8-27 19:29:08 | 显示全部楼层
木子匕 发表于 2012-8-27 16:50
效果如图所示!怎么实时画出这条线呢,当没有与任何物体相交时

你的图我看不到

该用户从未签到

发表于 2012-8-28 08:55:38 | 显示全部楼层
这样其实是没有办法确定点的,如果你是计算机,鼠标点与屏幕方向是形成一条线,没有办法确定你想的第二个点
我做过类似的,这个图背景是黑的,你可以做一个黑色的底板(比如矩形的),用鼠标和这个底板相交,把这个底板放在最后,不要遮盖其他图形。

该用户从未签到

 楼主| 发表于 2012-8-28 09:22:58 | 显示全部楼层
buaahc 发表于 2012-8-27 19:29
你的图我看不到

不会吧!应该是你的问题!刷新试试!

该用户从未签到

 楼主| 发表于 2012-8-28 09:35:26 | 显示全部楼层
lainegates 发表于 2012-8-28 08:55
这样其实是没有办法确定点的,如果你是计算机,鼠标点与屏幕方向是形成一条线,没有办法确定你想的第二个点 ...

这个方法貌似可行!还有其他办法没!

该用户从未签到

发表于 2012-8-28 09:48:52 | 显示全部楼层
       有,不过得需要点知识了,在autoCAD中,有一个确定三维点的方法,我记得是需要人手工输入两个倾角,然后可以唯一确定点,可以试一下。
       再其他的办法,我也不知道了。

该用户从未签到

发表于 2012-8-30 14:46:26 | 显示全部楼层
木子匕 发表于 2012-8-27 16:50
效果如图所示!怎么实时画出这条线呢,当没有与任何物体相交时

按你这么说,你是想确定其中的一个点,另外一个点是鼠标拖到哪就以那个点为终点画一条直线咯!这个有点儿不好弄啊,如果不按交集测试来考虑的话,可能会有其余的方法!

该用户从未签到

 楼主| 发表于 2012-8-30 15:25:01 | 显示全部楼层
buptronin 发表于 2012-8-30 14:46
按你这么说,你是想确定其中的一个点,另外一个点是鼠标拖到哪就以那个点为终点画一条直线咯!这个有点儿 ...

差不多就是这个效果!

该用户从未签到

发表于 2012-9-6 17:05:36 | 显示全部楼层
最简单的就是保持新画出的点的深度与起点相同,这样就可以在只知道鼠标坐标的前提下,确定空间唯一一点了,并且求交之后,这个点在屏幕上的显示位置也不会变化(只是深度变了)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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