查看: 2716|回复: 9

osg相机操作器和Viewer中的相机有什么区别么

[复制链接]

该用户从未签到

发表于 2013-12-5 16:48:57 | 显示全部楼层 |阅读模式
   最近在看OSG的东西,在看到Manipulator时候觉得实在是很难理解,比如说,我有一个类,是继承了OribitManipulator,然后重写了父类的handle方法,在OribitManipulator中有_center,_distance和_rotation属性,我们可以调用getTransformation函数得到eye,center和up参数,同样的,在handle方法中我们可以得到相机的viewMatrix,通过这个Matrix的getLookAt方法我们也可以得到eye,center和up参数,那么这两种方法得到的eye,center和up参数有什么区别么,我原来认为是一样的,可是后面发现他们并不一样,所以想知道一下这两者之间到底有什么区别。
   我的主函数挺简单的,就是申明一个Viewer变量,设置CameraManipulator(),然后调用setSceneNode()函数,realize()之后就调用run()函数了。

该用户从未签到

 楼主| 发表于 2013-12-6 15:12:17 | 显示全部楼层
哎,估计沉了

该用户从未签到

发表于 2013-12-6 16:27:19 | 显示全部楼层
  本人也是新手,但我觉得你可以把代码贴出来啊。。。。。。。。

该用户从未签到

 楼主| 发表于 2013-12-9 10:19:22 | 显示全部楼层
寻灿者 发表于 2013-12-6 16:27
本人也是新手,但我觉得你可以把代码贴出来啊。。。。。。。。

就纠结在两句话中
viewer->getCamera()->getViewMatrix(eye, center, up)和
getTransformation(eye, center, up)中
为什么得到的参数会不一样呢

该用户从未签到

发表于 2013-12-13 10:41:55 | 显示全部楼层
您是在回调中一直做比较?还是在运行前比较了一次而已?

该用户从未签到

 楼主| 发表于 2013-12-19 20:19:16 | 显示全部楼层
array 发表于 2013-12-13 10:41
您是在回调中一直做比较?还是在运行前比较了一次而已?

是在回调中查看的

该用户从未签到

 楼主| 发表于 2013-12-20 10:16:20 | 显示全部楼层
array 发表于 2013-12-13 10:41
您是在回调中一直做比较?还是在运行前比较了一次而已?

今天又试了一下,在回调中调用
viewer.getCameras(cameras, false)得到的cameras,其大小为1,然后通过cameras[0].getViewMatrixAsLookAt得到的eye,center,up值就和getTransformation得到的值一样,看了一下osg源码,就更加疑惑了,
难道getCamera()返回的不是view类中的_camera对象么,
    getCameras()返回值大小为1,且第二个参数为false,那么在cameras中肯定有_camera对象呀,为什么就不一样了呢

该用户从未签到

发表于 2013-12-20 10:38:52 | 显示全部楼层
你使用哪个版本的osg
viewer->getCamera()->getViewMatrix(eye, center, up)这句话对么?
viewer->getCamera()->getViewMatrixAsLookAt(eye, center, up)这样才是正确的
如果distance不同得到的参数会不一样

该用户从未签到

 楼主| 发表于 2013-12-20 18:59:16 | 显示全部楼层
buaahc 发表于 2013-12-20 10:38
你使用哪个版本的osg
viewer->getCamera()->getViewMatrix(eye, center, up)这句话对么?
viewer->getCam ...

是OSG 3.0.0
你的第二句话有问题,那个是直接返回一个矩阵,而不是eye, center, up三个参数
那个distance参数我还没看的,不太了解是怎么操作,好像是eye和center之间的距离吧

该用户从未签到

发表于 2013-12-22 17:58:30 | 显示全部楼层
“......就纠结在两句话中
viewer->getCamera()->getViewMatrix(eye, center, up)和
getTransformation(eye, center, up)中
为什么得到的参数会不一样呢”
这不是你的原话么。。。
。。。。。
我就是要告诉你viewer->getCamera()->getViewMatrix(eye, center, up)这句是错误的。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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