查看: 1109|回复: 6

关于拾取函数的几个疑问

[复制链接]

该用户从未签到

发表于 2011-12-14 17:06:56 | 显示全部楼层 |阅读模式
对教程上的Pick函数还是不理解,请高手帮助提点。谢谢!

问题1:射线与场景中的相交是不是可能得到多个交点,也相应的有多个nodepath?而nodepath.size指的就是得到的节点路径的个数,还是指这个节点到根节点的路径中包含节点个数?
问题2:pick函数中经常有这一段程序osgFX::Scribe* sc= dynamic_cast<osgFX::Scribe *>(np[i]);
            其中 i 是指该nodepath中的第 i 个节点,对吗? 然后,如果这个nodepath中没有Scribe节点,那么上面的转化是不能成  功,得到的sc = NULL。这个对吗?

该用户从未签到

发表于 2011-12-14 18:35:17 | 显示全部楼层
本帖最后由 garyliyong 于 2011-12-14 18:37 编辑

当然会得到很多个交点的,也会得到多个节点路径的 .nodepath.size();当然是指该节点到父节点之间节点的个数,对于第二个你说的是对的

该用户从未签到

 楼主| 发表于 2011-12-14 19:54:55 | 显示全部楼层
本帖最后由 hunandx2010 于 2011-12-14 20:11 编辑
garyliyong 发表于 2011-12-14 18:35
当然会得到很多个交点的,也会得到多个节点路径的 .nodepath.size();当然是指该节点到父节点之间节点的个数, ...


谢谢。
如果我的节点树是这样     root
                                           |
                                         MT->setMatrix(osg::Matrix::Transform(osg::Vec3(x,y,z)));
                                           |
                                        geode

那么我pick到geode节点后,怎么能访问MT节点得到这个(x,y,z)呢?并对MT节点进行其他操作呢?

该用户从未签到

发表于 2011-12-14 20:53:46 | 显示全部楼层
hunandx2010 发表于 2011-12-14 19:54
谢谢。
如果我的节点树是这样     root
                                           |

这个很简单的呀 你可以通过getparent()后再强制转换成MatrixTansfm节点,获取矩阵可以通过getMatrix()得到,再通过矩阵可以获得你想要的值

该用户从未签到

 楼主| 发表于 2011-12-14 21:49:57 | 显示全部楼层
garyliyong 发表于 2011-12-14 20:53
这个很简单的呀 你可以通过getparent()后再强制转换成MatrixTansfm节点,获取矩阵可以通过getMatrix()得到 ...

这么写吗?我编译通过了,但是运行就出错了。

osg::MatrixTransfor* mp_Mt = dynamic_cast<osg::MatrixTransform*>(np.back()->getParent(0));
osg::Matrix Mt = mp_Mt->getMatrix();

该用户从未签到

发表于 2011-12-14 22:15:47 | 显示全部楼层
hunandx2010 发表于 2011-12-14 21:49
这么写吗?我编译通过了,但是运行就出错了。

osg::MatrixTransfor* mp_Mt = dynamic_cast(np.back()- ...

你要先转化为group之后再强制转化为trnasform再转化为MatrixTransform 有asGroup() ,asTransform()和asMatrixTransform()函数可以使用

该用户从未签到

发表于 2011-12-16 12:55:41 | 显示全部楼层
  1. osg::MatrixTransfor* mp_Mt = dynamic_cast<osg::MatrixTransform*>(np.back()->getParent(0));
复制代码
清首先确定您的这个np.back()->getParent(0)是不是MatrixTransform,否则不可能转换成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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