查看: 1840|回复: 3

求教局部坐标与世界坐标的转换

[复制链接]

该用户从未签到

发表于 2014-2-18 15:31:47 | 显示全部楼层 |阅读模式
我的程序需求是在虚拟场景中加入一些空的电脑机箱,以及一些板卡。板卡可以转进机箱里面,我使用了addChild的方式将板卡的MatrixTransform设为了机箱的MatrixTransform的子节点。
现在我想得到板卡的世界坐标(一个机箱中有多个板卡,并且不在其中心原点)。
搜索了一下大致知道是要用computeLocalToWorld这个函数,但是算出来的不对,可能我的用法不对,求前辈们指教一下代码:

我是写在operator()里面回调计算的
  1. void operator ()(osg::Node* node,osg::NodeVisitor* nv)

  2. {
  3.         this->mToWorldMatrix = osg::computeLocalToWorld(nv->getNodePath());
  4.         this->vWorldPosition = this->vPosition * this->mToWorldMatrix;
  5. }
复制代码

vPosition是局部坐标,vWorldPosition是想要得到的世界坐标。
谢谢各位的帮助!基础不太好,如果有描述不清楚的地方请您指出

该用户从未签到

发表于 2014-2-18 17:33:02 | 显示全部楼层
板卡和机箱是模型嘛,如果是模型的话,加载的数据是受建模平面影像的

该用户从未签到

 楼主| 发表于 2014-2-18 21:54:27 | 显示全部楼层
ysw 发表于 2014-2-18 17:33
板卡和机箱是模型嘛,如果是模型的话,加载的数据是受建模平面影像的

是的,导入的ive模型。您说的是什么影响?

该用户从未签到

发表于 2014-2-19 09:28:36 | 显示全部楼层
shshiheng 发表于 2014-2-18 21:54
是的,导入的ive模型。您说的是什么影响?

是这样的,我使用给你差不多的做法,我这边都没有问题。我不知道你判断计算的值不对,是有什么依据,是根据板卡和机箱没有正确连接嘛?模型的世界坐标除了你设置的模型的位置以外,模型建模的时候,模型的与建模平面之间的位置关系也会影响计算出来的数值。不知道你的具体啥情况,没法做出判断,算法应该没啥问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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