|
本帖最后由 nie 于 2014-4-18 09:23 编辑
想做一个飞机延直线飞行,写好路径后飞机确实按直线飞行,但是却出现了不想要的姿态上的滚转。
创建AnimationPath的代码如下
osg::AnimationPath* createPath(osg::Vec3Array* tracknode, float time)
{
osg::ref_ptr<osg::AnimationPath>path = new osg::AnimationPath;
path->setLoopMode(osg::AnimationPath:OOP);
int num = 32;
float delta_time = time/(float)num;
for(int i = 0; i<num, i++)
{
osg::Vec3 pos = (*tracknode);
osg:uat rot = (0,osg::X_AXIS,0,osg::Y_AXIS,0,osg::Z_AXIS);
path->insert(delta_time*(float)i,osg::AnimationPath::ControlPoint(pos,rot));
}
return path.release;
}
其中的tracknode是已经定义好的坐标数组。
在没有加AnimationPathCallback之前,飞机模型是摆正了的,加了之后就翘起来了(但保持这个姿态不变),
不知道为什么会有一个姿态上的变化,纠结啊。
设断点查看path,_rotation的值是Quat(0,0,0,1)。 |
|