查看: 1847|回复: 2

如何取得一个点的世界坐标

[复制链接]

该用户从未签到

发表于 2009-5-13 10:10:56 | 显示全部楼层 |阅读模式
PositionAttitudeTransform类型节点(名字为Test)下有一个Geode类型的子节点(名字为One)
One是用osg:rimitiveSet::POINTS画出的一个点
Test在场景中做随机移动,我想得到One随之移动后的世界坐标值
在节点遍历中能够找到One,但是得到的One的坐标值却没有发生变化
这个问题,是我对OSG的树状结构没理解?
高手给俺点拨一下吧

该用户从未签到

发表于 2009-5-13 12:27:50 | 显示全部楼层
您是怎么得到坐标值的?直接读取One的顶点数组的话,其中的取值永远都不会有变化,否则只能造成开发者的混乱。正确的做法是计算局部坐标系到世界坐标系的级联矩阵并继而得到世界坐标值

一种方法是使用osg::computeLocalToWorld函数,其中的NodePath参数保存了节点路径的信息,即从根节点到末端Geode节点的列表,可以用NodeVisitor自动生成。取得的Matrix返回值即级联矩阵M。

v' = v * M

得到局部坐标v对应的世界坐标v'

该用户从未签到

 楼主| 发表于 2009-5-13 16:22:42 | 显示全部楼层
多谢Array,已经搞定了
用的就是你说的那种方法
论坛的wiki上有这种方法的说明,真是不好意思,我没做足功课啊,呵呵
地址在
http://www.osgchina.org/projects/osgcn/wikicn/Supportcn/Tutorials/CameraControlFindingWorldCoordinates.php
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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