|
我使用的OSG版本是2.8.2,我有一个IVE文件,里面有一个OSG::GROUP根节点,在这个根节点下有2个OSG::GROUP子节点,分别是地面和建筑,地面很大,半径有100000多,建筑很小,半径只有几百,在初始化时我使用了setNearFarRatio(0.00001),漫游器使用的是osgGA::TrackballManipulator,我想对建筑节点进行定位,首先要获取这个节点的包围球,但是发现一个问题,我在程序里使用了鼠标右键对场景进行放缩操作后,得到的包围球坐标会随着放缩程度变化,我想可能得到的是局部坐标,还需要一个转换矩阵,然后我查到如下的方法:调用建筑节点的OSG::NODE::getParentalNodePaths得到osg::NodePath,然后用OSG::computeLocalToWorld得到转换矩阵,我使用了这个方法,但是发现得到的转换矩阵是一个单位化的标准矩阵,也就是说,我开始得到的包围球坐标就是世界坐标?为什么包围球的坐标会随着漫游器的放缩操作而变化?漫游器只是改变VIEWMATRIX而已,怎么会影响节点的局部坐标呢?哪位高手能为我解解惑啊 |
|