代码:
osg:uat quat = trans->getAttitude();//得到四元数
osg::Vec3 dir = quat * osg::Vec3(1, 0, 0);
dir.normalize();
pos = trans->getPosition();
osg::Vec3 midPos=pos;//
pos += dir * dumptruckSpeed;
ChangePosition(osg::Vec3(pos[0],pos[1],0));//得到了一个新的位置的坐标并将其赋值给了pos
trans->setPosition(pos);
我现在想让小车也就是这个trans运动的时候和地形匹配。但是不知道为什么总是走梯形 。我觉得就是用setRotate,但是我要得到这个新位置的四元数。我觉得新的位置的四元数应该是quat*旋转矩阵。旋转矩阵的求法我不会。不知道我分析的对不对?还有那位可以告诉我旋转矩阵怎么求?感谢.
还有一个问题
// 设置场景和视口(包括tankTransform节点的添加)……
transformAccumulator* tankWorldCoords = new transformAccumulator();
tankWorldCoords->attachToGroup(tankTransform);
followNodeMatrixManipulator* followTank =
new followNodeMatrixManipulator(tankWorldCoords);
osgGA::KeySwitchMatrixManipulator *ksmm =
viewer.getKeySwitchMatrixManipulator();
// ?添加跟随坦克的矩阵控制器的。按下“m”键即可实现视口切换到该控制器。
ksmm->addMatrixManipulator('m',"tankFollower",followTank);
这是海军教程了里的代码,是视点跟随节点的变化的,现在有个问题是这里面有几个函数不是osg2.6里面的不知道该怎么换
感谢大家 |