|
我想让一个飞机模型 做三种旋转 一种是以飞机朝前的方向为轴旋转 一种是以飞机的正上为轴旋转 一种是以飞机向右的方向为轴旋转
我的飞机是放在一个MatrixTransform下的 然后我通过getMatrix获得当前矩阵 求出 上述三个轴 direction up 和 right 然后在按键响应里 绕这3个轴做旋转 代码如下
- //获得三个轴
- osg::Matrix mat;
- mat.makeRotate(_config_._aircraftMTTrans->getMatrix().getRotate());
- right = osg::Vec3(mat(0,0), mat(1,0), mat(2,0));
- up = osg::Vec3(mat(0,1), mat(1,1), mat(2,1));
- direction = -osg::Vec3(mat(0,2), mat(1,2), mat(2,2));
- //按键响应
- case osgGA::GUIEventAdapter::KEY_A:
- {
- osg::Quat q(0.05, curRight);
- mat.makeRotate(q);
- break;
- }
- case osgGA::GUIEventAdapter::KEY_D:
- {
- osg::Quat q(-0.05, curRight);
- mat.makeRotate(q);
- break;
- }
- //左乘求得的新旋转矩阵
- _config_._aircraftMTTrans->preMult(mat);
复制代码
请问上述代码 哪里有问题? 运行结果 旋转的轴都不对 诚心求 谢谢!! |
|