查看: 1224|回复: 1

大神们来帮帮我一个椎体跟踪模型的问题吧

[复制链接]

该用户从未签到

发表于 2014-5-10 15:05:38 | 显示全部楼层 |阅读模式
本帖最后由 心灬魔 于 2014-5-10 15:12 编辑

场景是这样    我有一个固定不动的雷达车,发射出一个扫描椎体,当有飞机飞入我的扫描范围的时候扫描锥一直指向飞机,现在不知道计算什么地方有错,在群里也问了好些人,由于基础比较差,不太理解他们说的。。希望大神们能讲的详细点。。。谢谢大家了

  1. void FollowCallBack::operator()( osg::Node*node,osg::NodeVisitor* nv )
  2. {
  3.         osg::ref_ptr<osg::MatrixTransform> _pat =
  4.                 dynamic_cast<osg::MatrixTransform*>(node);
  5.        
  6.         osg::PositionAttitudeTransform* animat = modelAnima->PAT;
  7.         if (!animat->getName().empty())
  8.         {
  9.                 osg::Vec3d currentP = animat->getBound().center();  //飞机每一帧的位置(世界坐标);
  10.                 radarMt = computeWorldToLocal(nv->getNodePath());   //获得雷达的局部矩阵;
  11.                 worldPoint  = osg::Vec3d(0,0,0);  //雷达的位置在自己的局部坐标中为(0,0,0);
  12.                 currentPoint = currentP*radarMt;  //将每一帧飞机的位置转换到雷达的局部坐标系中;
  13.                 /*求出每一帧飞机和雷达两个点的向量;*/
  14.                 double _X,_Y,_Z;
  15.                 _X = worldPoint.x()-currentPoint.x();
  16.                 _Y = worldPoint.y()-currentPoint.y();
  17.                 _Z = worldPoint.z()-currentPoint.z();
  18.                 osg::Vec3d rotateXY = osg::Vec3d(_X,_Y,0);
  19.                 rotateXY.normalize();
  20.                 osg::Vec3d rotateZ = osg::Vec3d(_X,_Y,_Z);
  21.                 rotateZ.normalize();
  22.                 osg::Quat RotationXY,RotationZ;
  23.                 RotationXY.makeRotate(osg::Vec3d(1,0,0),rotateXY);
  24.                 RotationZ.makeRotate(rotateXY,rotateZ);
  25.                 /*将椎体每一帧都旋转到和这个向量一致;*/
  26.                 osg::Matrix mat = _pat->getMatrix();
  27.                      mat.makeRotate(RotationXY*RotationZ);
  28.                 _pat->setMatrix(mat);
  29.         }
  30.         traverse(node,nv);
  31. }
复制代码

T_T。。。在线等回复

场景

场景

该用户从未签到

发表于 2014-5-15 15:11:14 | 显示全部楼层
osg::Vec3d currentP = animat->getBound().center();
这个求出来是世界坐标吗,怎么我得到的是一个很小的数据,像是一个相对坐标
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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