查看: 1304|回复: 2

关于MatrixManipulator的问题

[复制链接]

该用户从未签到

发表于 2010-7-14 13:18:54 | 显示全部楼层 |阅读模式
大家好,我是个新手,最近在看漫游器,我想实现一个简单的键盘驱动的操作器,从MatrixManipulator继承,参考了网上的一些代码,我在实现时通过在操作器类中保存 eye,center,up 相机位置方向,在事件处理函数中根据键盘的输入修改eye,center和up,我有一些基本的向量和矩阵变换的问题想问,可能是最简单的数学问题,请问各位:
1:若想实现相机位置不变,观察方向向左旋转(向左旋转),是否可以只改变center的位置而eye,up不需要改变?,我是这么做的,请问对吗?
osg::Matrix matR;
matR.makeRotate(“某角度”,“z轴”);
center = center * matR;

2:若想实现相机位置不变,观察方向向上旋转(抬头),是否可以只修改center
osg::Matrix matR;
matR.makeRotate(“某角度”,“x轴”);
center = center * matR;

请问up 是否需要修改?up究竟是何含义?
感觉我问题好幼稚,而且问得很罗嗦,非常感谢您的解答!

该用户从未签到

发表于 2010-7-14 16:02:26 | 显示全部楼层
up的意思是camera的朝向,也就是摄象机打的方向。
一般来说我们不会去修改eye,center和up来进行转换,而是直接添加osg::Matrix给操作器。建议你先看osg::Matrix方面的资料再对漫游器学习。
也可以先看看osgGA库的TrackballManipulator.cpp

该用户从未签到

 楼主| 发表于 2010-7-14 18:15:18 | 显示全部楼层
好的,谢谢您的回复!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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