查看: 1386|回复: 3

osg::PositionAttitudeTransform 的setPivotPoint 为什么会在scale的时候移动物体?

[复制链接]

该用户从未签到

发表于 2013-6-6 13:07:04 | 显示全部楼层 |阅读模式
root节点的子节点是 PositionAttitudeTransform* box_transform;

box_transform->addChild(drawFilledBox());

然后用键盘控制box_transform 使得box移动,

然后想使box的缩放中心为光标的位置:于是把光标在世界坐标系的位置赋给PivotPoint
box_transform->setPivotPoint(cursorinworld);

但是问题出来了,一旦缩放,box不但没有以pivotpoint为中心缩放,反而一下子移动到很远的地方。

这个是为何? setPivotPoint该如何使用呢?

先谢谢啦。

该用户从未签到

 楼主| 发表于 2013-6-6 22:51:31 | 显示全部楼层
还是没有解决,不知道如何使用pivot,网上貌似也没有解说啊

该用户从未签到

发表于 2013-6-7 08:21:18 | 显示全部楼层
这东西PositionAttitudeTransform 有这么好么 ?想使box的缩放中心为光标的位置 直接设置MT的translation 就可以了吧

该用户从未签到

 楼主| 发表于 2013-6-7 09:38:13 | 显示全部楼层
liuzhiyu123 发表于 2013-6-7 08:21
这东西PositionAttitudeTransform 有这么好么 ?想使box的缩放中心为光标的位置 直接设置MT的translation 就 ...

估计必须得采取您的建议,

我试过了:
box_transform->addChild(scalecenter_transform);
scalecenter_transform->addChild(box);

用box_transform 来控制box的移动和旋转,scalecenter_transform->setPivotPoint(cursorinworld);

但是我一点击鼠标,开始让box以鼠标为中心缩放时,box先有一个小的移动,然后才缩放。

可以看到,缩放确实是在鼠标附近, 但是有个移动的距离。不知道为什么box要在缩放前跳动一个距离。可能是setPivotPoint 会改变box的位置。


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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