查看: 1851|回复: 10

如何绘出多选线框

[复制链接]

该用户从未签到

发表于 2011-2-22 10:17:03 | 显示全部楼层 |阅读模式
我希望用鼠标在场景上拖动,实现多选模型的功能,并且弄一个拖动线框的显示效果。
多选没有问题,求大虾指导一下怎么实现这个多选线框。
现在我的思路是建一个HUD,然后鼠标拖动的过程中在上面画一个线框出来。
问题是不知道怎么计算在HUD上的哪个地方画,直接用鼠标坐标在窗口上的像素位置画,画出来的线框跟鼠标位置偏差很大。
求教求教。

该用户从未签到

发表于 2011-2-22 11:48:13 | 显示全部楼层
你是要这个?
osgManipulator::TabBoxDragger
如果不是的话,请具体说一下雨这个的区别。

该用户从未签到

 楼主| 发表于 2011-2-22 11:54:31 | 显示全部楼层
噢!osgManipulator::TabBoxDragger这个还真没有用过,请问哪个例子有用到它?我研究一下先,谢谢!

该用户从未签到

发表于 2011-2-22 13:34:20 | 显示全部楼层
osgManipulator

该用户从未签到

 楼主| 发表于 2011-2-22 13:52:41 | 显示全部楼层
回复 4# aya_daxiang
应该不是这种,我要的是想魔兽争霸那样,鼠标拖动可以选择多个单位,然后那个线框是告诉用户选择的范围,是展示用的。

该用户从未签到

发表于 2011-2-22 15:00:21 | 显示全部楼层
博大的osg

该用户从未签到

发表于 2011-2-22 15:16:24 | 显示全部楼层
明白了.所以你的问题主要是得不到正确的鼠标位置是么? 你是如何做的呢?程序有没有用到 mfc 或者别的GUI?如果有的话,你搜索下论坛看看是不是同样的问题。

该用户从未签到

 楼主| 发表于 2011-2-22 15:16:51 | 显示全部楼层
回复 6# tianxiao888
然后咧。。。框选的框。。。弄不出。。。惨。。。

该用户从未签到

发表于 2011-2-22 16:09:34 | 显示全部楼层
框选的实现并不复杂,使用OSG现有的功能组合就可以了:首先屏幕上的选择框在空间是一个多面体,使用PolytopeIntersector就可以求取多面体与场景对象的交集;而框选的线框则理所应当在HUD相机下动态使用Geometry绘制得到

该用户从未签到

 楼主| 发表于 2011-2-22 17:25:08 | 显示全部楼层
我知道我是什么问题了,创建HUD的时候设置的投影矩阵如下
osg::Camera* cam = new osg::Camera();
cam->setProjectionMatrix(osg::Matrix:rtho2D(0,1440,0,900));
不过在非全屏的情况下就有偏差了,是不是要根据窗口大小动态设置这个投影矩阵啊?

该用户从未签到

发表于 2011-2-23 10:06:45 | 显示全部楼层
没有那么复杂,您完全可以自己换算屏幕坐标
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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