查看: 1485|回复: 5

路径动画关键点设置

[复制链接]

该用户从未签到

发表于 2012-3-6 14:18:48 | 显示全部楼层 |阅读模式
用path->insert(T,osg::AnimationPath::ControlPoint(。。。))设置插入路径的时候,其中设置关键点ControlPoint,如何设置动画的旋转中心呢?谢谢

该用户从未签到

发表于 2012-3-7 09:22:30 | 显示全部楼层

关键点的组成是由点的位置和姿态四元数组成,设置旋转没啥问题~~可以参考osganimate的例子

该用户从未签到

 楼主| 发表于 2012-3-7 16:02:22 | 显示全部楼层
FlySky 发表于 2012-3-7 09:22
关键点的组成是由点的位置和姿态四元数组成,设置旋转没啥问题~~可以参考osganimate的例子

在设置旋转的时候,如何能设置绕平行于坐标轴的一个轴旋转呢?谢谢

该用户从未签到

发表于 2012-3-8 09:12:04 | 显示全部楼层

设置下四元数

该用户从未签到

 楼主| 发表于 2012-3-8 10:21:48 | 显示全部楼层
本帖最后由 pkfcLee 于 2012-3-8 11:34 编辑

如图所示,我想将一个模型沿图中弧线旋转90度(即从点A沿半径为20的圆弧线轨迹运动到B点);
我的做法是建立一个PAT节点,将模型加入根节点
osg::ref_ptr<osg:ositionAttitudeTransform> PAT =
      new osg::PositionAttitudeTransform();
PAT->setPosition(osg::Vec3(20.0,0.0,0.0));
root->addChild(PAT.get());

然后设置路劲path
其中Vec3 xoz(0.0,1.0,0.0);
path1->insert(0.0,
    osg::AnimationPath::ControlPoint(osg::Vec3(20.0,0.0,0.0), osg:uat(0.0,xoz)));
path1->insert(10.0,
    osg::AnimationPath::ControlPoint(osg::Vec3(0.0,0.0,20.0), osg::Quat(-osg::PI_2,xoz)));
结果是模型沿直线从A点运动到B点,并且绕自身Y轴旋转了90度。

后来我将xoz沿X方向平移了-20单位,
Matrix mat.makeTranslate(osg::Vec3(-20.0,0.0,0.0));
Vec3 Aixs= xoz*mat;
path1->insert(0.0,
    osg::AnimationPath::ControlPoint(osg::Vec3(20.0,0.0,0.0), osg::Quat(0.0,Aixs)));
path1->insert(10.0,
    osg::AnimationPath::ControlPoint(osg::Vec3(0.0,0.0,20.0), osg::Quat(-osg::PI_2,Aixs)));
结果是模型沿直线从A点运动到B点,并且绕自身X轴旋转了90度。


请教一下,应该如何设置才能实现我想要得(即从点A沿半径为20的圆弧线轨迹运动到B点)运动。谢谢!





abc.JPG

该用户从未签到

发表于 2012-3-12 09:56:17 | 显示全部楼层
四元数是最简单且最高效的,并且我认为上面已经有人提示过您了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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