查看: 1453|回复: 5

关于路径动画

[复制链接]

该用户从未签到

发表于 2013-11-9 20:11:18 | 显示全部楼层 |阅读模式
我想让一个飞机按照 图片中的路线降落 用animationPath 然后我已经确定了 关键点的位置坐标 但是朝向不对 代码如下 请问哪里出的问题? 我想让飞机水平朝向降落地点的方向  

降落路线:
   QQ图片20131109200403.jpg

计算朝向的代码:
  1.         //计算关键点四元数
  2.         osg::Vec3 direction(x-xx,y-yy,z-zz);
  3.         osg::Vec3 positionCur(xx,yy,zz);
  4.         osg::Vec3 up = positionCur;
  5.         up.normalize();
  6.         direction.normalize();
  7.         //以地心向量反方向为up
  8.         osg::Vec3 right=direction ^ up/*osg::Vec3(0,0,1)*/;
  9.         right.normalize();
  10.         direction = up^right;
  11.         direction.normalize();

  12.         osg::Matrix mat(right[0],up[0],-direction[0],0, right[1],up[1],-direction[1],0,
  13.                 right[2],up[2],-direction[2],0, 0,0,0,0 );
  14.         myrotation=mat.getRotate().inverse();
复制代码
其中xx yy zz 是第一个关键点的坐标  x y z是第二个关键点的坐标  我想利用这两个关键点 所指的方向 与 第一个点的方向(原点到第一个点的方向)求向量积 获得水平向右的方向,然后求第一个点的方向和这个向右的方向的向量积 即我飞机的朝向(水平朝向降落点的方向) 然后搜了资料 说是利用代码中的构造方法 构造矩阵 作为关键点的旋转矩阵 但是运行结果 飞机朝向不正确 请问问题出在哪里 诚心求指导。。谢谢!!

该用户从未签到

发表于 2013-11-10 19:16:56 | 显示全部楼层
看你忙活了半天,很简单的问题,搞的那么复杂!
静下心,动手前,多想一想,看什么是可以利用的工具,不是只塌陷在一个障碍里面!
1.最终目的无非就是得到旋转矩阵,那就参看OSG:: Matrix相关类呀
makeRotate()函数,本身就有从一个向量到另一个向量的旋转,一句代码就搞定了;
2.问题不在数据的复杂性,而是:
在于你怎么抽象问题,和找到最有效的工具;OSG的类结构和相关类函数说明文档,就是一个很直接很有效的工具,请先找直接工具,再找间接工具。从本源出发,才能快速正确的解决问题。

该用户从未签到

 楼主| 发表于 2013-11-12 15:45:59 | 显示全部楼层
VR_user_happy 发表于 2013-11-10 19:16
看你忙活了半天,很简单的问题,搞的那么复杂!
静下心,动手前,多想一想,看什么是可以利用的工具,不是 ...

谢谢回答 我问题已经解决了。。之前论坛出问题了 上不来 所以没来结贴。。不过你说的非常有道理 受教了 谢谢!

该用户从未签到

发表于 2013-11-13 19:05:57 | 显示全部楼层
你的动画路径现在怎么样,做一个圆圈运动,是否显示正常?我这边已经做好了,动画显示正常,还得做加速减速的工作

该用户从未签到

发表于 2013-11-13 19:06:51 | 显示全部楼层
里面的矩阵我理解的不知道给实际的有多大偏差不太知道

该用户从未签到

 楼主| 发表于 2013-11-14 12:56:37 | 显示全部楼层
ysw 发表于 2013-11-13 19:06
里面的矩阵我理解的不知道给实际的有多大偏差不太知道

我这没有没有什么问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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