查看: 2525|回复: 4

动画问题 : 路径的设置问题

[复制链接]

该用户从未签到

发表于 2008-8-26 11:42:52 | 显示全部楼层 |阅读模式
在OSG中,如果想让一个物体按照一定的路径自我动作,可以使用OSG::ANIMATIONPATH类进行,这个在系统中有OSGANIMATE例子可以参考.我的问题是:那么路径数据有没有什么工具可以生成,如果采用路径文件的话,路径文件如何生成,其格式是什么样子的.
请各位朋友帮忙解答一下,如果有代码(或部分代码)最好!

先谢谢各位!

该用户从未签到

发表于 2008-8-26 12:04:55 | 显示全部楼层
摄像机的运动有路径文件可以读入;物体的运动好像就没有路径文件之说了,需要自己向AnimationPath::ControlPoint中插入。

该用户从未签到

 楼主| 发表于 2008-8-26 12:26:44 | 显示全部楼层
那摄象机运动下的路径文件是什么格式的?能提供一下代码(或部分)吗? 谢谢

该用户从未签到

发表于 2008-8-26 13:47:55 | 显示全部楼层
原帖由 gjczhhbz 于 2008-8-26 12:26 发表
那摄象机运动下的路径文件是什么格式的?能提供一下代码(或部分)吗? 谢谢


给你的场景加一个RecordCameraPathHandler处理器,然后在运行时按z键记录,再按下z键结束记录。会生成一个saved_animation.path文件,结构没什么特别,就是"时间,位置,..."的文本形式,有点记不清了。可以用"osgviewer -p saved_animaton.path"加载

该用户从未签到

发表于 2008-8-26 16:36:19 | 显示全部楼层
  1. void AnimationPath::read(std::istream& in)
  2. {
  3.     while (!in.eof())
  4.     {
  5.         double time;
  6.         osg::Vec3d position;
  7.         osg::Quat rotation;
  8.         in >> time >> position.x() >> position.y() >> position.z() >> rotation.x() >> rotation.y() >> rotation.z() >> rotation.w();
  9.         if(!in.eof())
  10.             insert(time,osg::AnimationPath::ControlPoint(position,rotation));
  11.     }
  12. }

  13. void AnimationPath::write(TimeControlPointMap::const_iterator itr, std::ostream& fout) const
  14. {
  15.     const ControlPoint& cp = itr->second;
  16.     fout<<itr->first<<" "<<cp.getPosition()<<" "<<cp.getRotation()<<std::endl;
  17. }

  18. void AnimationPath::write(std::ostream& fout) const
  19. {
  20.     int prec = fout.precision();
  21.     fout.precision(15);

  22.     const TimeControlPointMap& tcpm = getTimeControlPointMap();
  23.     for(TimeControlPointMap::const_iterator tcpmitr=tcpm.begin();
  24.         tcpmitr!=tcpm.end();
  25.         ++tcpmitr)
  26.     {
  27.         write(tcpmitr, fout);
  28.     }

  29.     fout.precision(prec);
  30. }
复制代码
路径的读与写的代码~~~~~~这个直接分析一下源代码就好了~~~~~~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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