查看: 1186|回复: 1

包围球的位置不随树结构的移动而移动?

[复制链接]

该用户从未签到

发表于 2014-10-14 16:36:08 | 显示全部楼层 |阅读模式

一个场景由两个物体构成,物体不在原点,将所有物体整体移至原点,整体的包围球位置随之移动,但子节点的单个物体的包围球还在原地,这是为什么?包围球不随物体的移动而移动吗?

大概代码如下:
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轴有一定距离的一个轴旋转,不知道这些都是什么原因呢,望高手帮忙看下!

该用户从未签到

发表于 2014-10-24 00:35:23 | 显示全部楼层
模型的包围球,是以模型自身坐标系的来进行定义的,与其父节点所做的任何操作没有任何关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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