查看: 834|回复: 2

有关追踪节点位置的疑问

[复制链接]

该用户从未签到

发表于 2014-3-29 16:13:56 | 显示全部楼层 |阅读模式
为了追踪节点  我使用了 这样的类
updateAccumulatedMatrix::Nodecallback
类里的函数为:
  1. void updateAccumulatedMatrix::getmatrix( osg::Matrix *matrixd )
  2. {
  3.         *matrixd = *matrix;
  4. }

  5. updateAccumulatedMatrix::updateAccumulatedMatrix()
  6. {
  7.         matrix=new osg::Matrix(1,2,3,4
  8.                 ,5,6,7,8
  9.                 ,1,2,3,4
  10.                 ,4,4,4,4);
  11. }

  12. void updateAccumulatedMatrix::operator()( osg::Node* node, osg::NodeVisitor* nv )
  13. {
  14.                 osg::NodePath nodepath=nv->getNodePath();
  15.                 *matrix = osg::computeWorldToLocal(nodepath);
  16.                 traverse(node,nv);

  17. }
复制代码

但是在使用的时候:(mat 为updateAccumulatedMatrix的实例)

  1.         osg::Matrix get;
  2.         mat->getmatrix(&get);
  3.         osg::Vec3 des_center(get.getTrans());
复制代码

问题是  在使用    getmatrix之后  
get的值 不便  仍然是  12345678.....

使用断点在()回调函数里面检查 矩阵的值确更改了  但是断电到getmatrix 函数里面仍然是12345678...


简单的说 就是matrix的值传不出来。
传回来我就得到了节点的位置了。

请教各位大神。  谢谢了~

该用户从未签到

 楼主| 发表于 2014-3-29 16:19:12 | 显示全部楼层
  1. mat=new updateAccumulatedMatrix();
  2.                         node->setUpdateCallback(mat);

复制代码

之后进行的getmatrix操作。

该用户从未签到

发表于 2014-3-31 15:49:02 | 显示全部楼层
您为什么不直接使用osg::Matrix getMatrix()或者bool getMatrix(osg::Matrix&)这种简单的方式来获取矩阵?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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