查看: 2782|回复: 6

OSG 漫游器

[复制链接]

该用户从未签到

发表于 2015-6-9 23:15:13 | 显示全部楼层 |阅读模式
OSG中漫游器中getInverseMatrix和getMatrix 分别代表什么 有什么区别?
谢谢!

该用户从未签到

发表于 2015-6-10 08:34:13 | 显示全部楼层
你这ID,估计没人会鸟你

该用户从未签到

发表于 2015-6-11 17:07:37 | 显示全部楼层
观察矩阵的两种表达方式

该用户从未签到

 楼主| 发表于 2015-6-11 21:58:46 | 显示全部楼层
  1. // doc in parent
  2. void OrbitManipulator::setTransformation( const osg::Vec3d& eye, const osg::Vec3d& center, const osg::Vec3d& up )
  3. {
  4.     Vec3d lv( center - eye );

  5.     Vec3d f( lv );
  6.     f.normalize();
  7.     Vec3d s( f^up );
  8.     s.normalize();
  9.     Vec3d u( s^f );
  10.     u.normalize();

  11.     osg::Matrixd rotation_matrix( s[0], u[0], -f[0], 0.0f,
  12.                             s[1], u[1], -f[1], 0.0f,
  13.                             s[2], u[2], -f[2], 0.0f,
  14.                             0.0f, 0.0f,  0.0f, 1.0f );

  15.     _center = center;
  16.     _distance = lv.length();
  17.     _rotation = rotation_matrix.getRotate().inverse();

  18.     // fix current rotation
  19.     if( getVerticalAxisFixed() )
  20.         fixVerticalAxis( _center, _rotation, true );
  21. }
复制代码


rotation_matrix矩阵为什么要进行求逆

该用户从未签到

发表于 2015-6-12 13:07:55 | 显示全部楼层
getInverseMatrix和getMatrix,分别是得到视图矩阵和位置矩阵,两者互为逆矩阵。
rotation_matrix是视图矩阵,_rotation = rotation_matrix.getRotate().inverse()求逆是为了得到相机的旋转角度

该用户从未签到

 楼主| 发表于 2015-6-13 10:35:46 | 显示全部楼层
首先 谢谢 楼上的热心回复 ! 再次问下 所谓的位置矩阵 就是摄像机的矩阵?

摄像机的矩阵不是视图矩阵嘛?

该用户从未签到

发表于 2015-6-13 10:52:48 | 显示全部楼层
摄像机位置矩阵的逆矩阵就是视图矩阵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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