查看: 1846|回复: 8

dragger后dragger位置不对

[复制链接]

该用户从未签到

发表于 2011-5-4 21:47:25 | 显示全部楼层 |阅读模式
用dragger拉一个node到一位置后,删除该dragger,过一会儿又创建一个dragger来拉动刚才的那个node ,发现这个新的dragger的位还是原来node初始的位置,请问一下怎么解决?

用了
node->dirtyBound();
float scale = node->getBound().radius() * 1.5;
dragger->setMatrix(osg::Matrix::scale(scale, scale, scale) *osg::Matrix::translate(node->getBound().center()));

也不对。

诚求赐教,非常感谢

该用户从未签到

发表于 2011-5-5 08:34:25 | 显示全部楼层
想要让大家不是在读绕口令的话,请给出足够说明问题的代码信息

该用户从未签到

发表于 2011-5-5 08:41:49 | 显示全部楼层
Node 的位置信息 就是原始的,必须用MT才能移动,Node并不能表示什么位置信息

该用户从未签到

发表于 2011-5-5 11:10:25 | 显示全部楼层
osg::Matrix::translate(node->getBound().center())

你可以注意一下node->getBound().center()的值。当然我这只是猜测而已,如果问题不是这的话,还请给出更多信息。

该用户从未签到

 楼主| 发表于 2011-5-5 15:59:41 | 显示全部楼层
非常感谢三位的回答。
主要问题是:当一个node移动以后,再次计算出的node->getBound().center()没有相应的改变。
即:包围盒没有随node一起移动

该用户从未签到

发表于 2011-5-5 16:18:44 | 显示全部楼层
如果你的node是MT节点,并且使用addTransformUpdating设置给了dragger,那么应该不会出现这样的问题。
否则我也只能猜测你drag的实际上是node的父MT节点了

该用户从未签到

 楼主| 发表于 2011-5-5 16:47:40 | 显示全部楼层
非常感谢indif这么及时的回答,node是挂地MT下。
经过您的提醒才恍然知道我的MT根本没有被使用。
现在利于MT,把MT的姿态之类的东西设给dragger就可以了。
非常感谢

该用户从未签到

 楼主| 发表于 2011-5-5 16:48:34 | 显示全部楼层
还是有一个想到的问题:包围盒怎么才能随node一起移动?

该用户从未签到

发表于 2011-5-6 08:45:06 | 显示全部楼层
挂在这个node之下,或者使用回调每帧同步这两者
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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