查看: 1731|回复: 4

求问Viewer的相机视点问题

[复制链接]

该用户从未签到

发表于 2011-12-8 14:47:24 | 显示全部楼层 |阅读模式
代码如下
  1. osg::ref_ptr<osg::Camera> camera = new osg::Camera;
  2.         osg::Vec3 eye(2.0,2.0,2.0);
  3.         osg::Vec3 center(0,0,0);
  4.         osg::Vec3 up(0.0,1.0,0.0);
  5.        
  6.         camera->setViewMatrixAsLookAt(eye,center,up);
  7.         camera->setProjectionMatrixAsPerspective(100.0,2.0,4.0,10.0);
  8.        
  9.        
  10.        
  11.         CameraEventCallBack* ecb = new CameraEventCallBack; //相机的时间回调类,当点击鼠标会打印出相机的eye,center,up 的值

  12.         osgViewer::Viewer viewer;
  13.         viewer.setSceneData(trian.get());
  14.         viewer.setCamera(camera);
  15.        
  16.         viewer.setCameraManipulator(NULL);
  17.         viewer.getCamera()->setEventCallback(ecb);
  18.        
  19.         while(!viewer.done())
  20.         {
  21.                 viewer.setCameraManipulator(NULL);
  22.                 viewer.frame();
  23.         }
复制代码
用上面的代码运行,打印相机的eye,center以及up参数的值时,只有eye的值是和初始化值一致,center和up的值均被改动,不知道什么原因。

该用户从未签到

 楼主| 发表于 2011-12-8 16:43:04 | 显示全部楼层
悲剧了,难道没人回了……

该用户从未签到

发表于 2011-12-8 16:43:27 | 显示全部楼层
请查看matrix类的getLookAt函数,这里会根据摄影机的当前view矩阵自动计算center和up,在计算时采用了单位向量,因此和你初始时的有稍微差别,属正常现象。

该用户从未签到

 楼主| 发表于 2011-12-8 16:46:06 | 显示全部楼层
fenma3422 发表于 2011-12-8 16:43
请查看matrix类的getLookAt函数,这里会根据摄影机的当前view矩阵自动计算center和up,在计算时采用了单位向 ...

哦,原来是这样,谢谢了

该用户从未签到

发表于 2012-2-22 09:38:25 | 显示全部楼层
好像不是3楼说的那样,有一个相关的帖子,是有关setViewMatrixAsLookat设置相机,用getViewMatrixAsLookAt却得不到正确值的。希望有帮助。帖子地址
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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