查看: 2950|回复: 5

有人能讲一下TrackballManipulator不

[复制链接]

该用户从未签到

发表于 2008-10-12 20:39:13 | 显示全部楼层 |阅读模式
今天看了下TrackballManipulator,可是对其原理还是弄不明白。
请问pManipulator->getCenter()这里的center表示什么呢

osg::Vec3d vc= pManipulator->getCenter();
double dis=pManipulator->getDistance();
osg:uat quat= pManipulator->getRotation();
osg::Vec3d vr;
double angle;
quat.getRotate(angle,vr);
vr.normalize();
osg::Vec3d v3;
v3=vc-vr*dis;
这里v3的值是不是相机所在的位置呢

thanks for any hint

该用户从未签到

发表于 2008-10-12 21:35:39 | 显示全部楼层
轨迹球嘛,,center当然是球的中心,,,我觉得应该是这样来算的,,,
  1. osg::Vec3d vc= pManipulator->getCenter();
  2. double dis=pManipulator->getDistance();
  3. osg:uat quat= pManipulator->getRotation().inverse();  //这个地方应该是逆矩阵吧
  4. osg::Vec3d vr;
  5. double angle;
  6. quat.getRotate(angle,vr);
  7. vr.normalize();
  8. osg::Vec3d v3;
  9. v3=vc-vr*dis;
复制代码

该用户从未签到

发表于 2008-10-12 21:39:45 | 显示全部楼层
如果你想得到视点的话,大可不必如此麻烦~~~直接调用这个函数,getViewMatrixAsLookAt (。。。),,第一个参数就是视点的位置~~~~~~~~

该用户从未签到

 楼主| 发表于 2008-10-12 23:27:18 | 显示全部楼层
thank you very much.
呵呵,你有时间的时候能不能就osg中的操作器给我们做一个详细点的专题呢。我想做,可惜火候不够啊。

该用户从未签到

发表于 2008-10-13 02:14:25 | 显示全部楼层
thank you very much.
呵呵,你有时间的时候能不能就osg中的操作器给我们做一个详细点的专题呢。我想做,可惜火候不够啊。


没时间啊,呵呵~~~~最近很忙啊~~~~有空的话,一定会写出来的~~~~~~~

该用户从未签到

发表于 2014-8-1 10:57:16 | 显示全部楼层
FlySky 发表于 2008-10-13 02:14
没时间啊,呵呵~~~~最近很忙啊~~~~有空的话,一定会写出来的~~~~~~~

四年过去啦,楼主有时间没?

不让好贴沉沦下去。

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

本版积分规则

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

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

联系我们

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