|
一个场景由两个物体构成,物体不在原点,将所有物体整体移至原点,整体的包围球位置随之移动,但子节点的单个物体的包围球还在原地,这是为什么?包围球不随物体的移动而移动吗?
大概代码如下:
osg::ref_ptr<osg::Group> group=new osg::Group;
osg::ref_ptr<osg::MatrixTransform> t=new osg::MatrixTransform;
osg::ref_ptr<osg::MatrixTransform> t1=new osg::MatrixTransform;
osg::ref_ptr<osg::MatrixTransform> t2=new osg::MatrixTransform;
osg::ref_ptr<osg::Node> n1=osgDB::readNodeFile("n1.3ds");
osg::ref_ptr<osg::Node> n2=osgDB::readNodeFile("n2.3ds");
osg::BoundingSphere bsGroup;
osg::BoundingSphere bs1;
group->addChild(t.get());
t->addChild(t1.get());
t->addChild(t2.get());
t1->addChild(n1.get());
t2->addChild(n2.get());
bsGroup=t->getBound();
bs1=t1->getBound();
t->setMatrix(osg::Matrix::translate(-bsGroup.center().x(), -bsGroup.center().y(), -bsGroup.center().z()));//移至原点
bsGroup=t->getBound();
bs1=t1->getBound();
运行结果整体的包围球bsGroup的位置变了,中心点移至了(0,0,0)点,但t1的包围球bs1的位置没变,还是在原来的位置,但t1下n1的位置已经变了,这是为什么呢??
另外,我对t1绕X轴进行旋转操作时,它貌似也不是针对X轴进行旋转,而是对距离X轴有一定距离的一个轴旋转,不知道这些都是什么原因呢,望高手帮忙看下! |
|