这两天遇到了一个问题(毕竟接触ogre不久,可能问题比较弱智哈),由于我把模型用OSMLoader的演示方法导入,它具体是通过一个场景(.osm文件)导入后,将其中的子模型分别用一个node保存,如果你提供了一个node(暂订叫rootNode),那么所有的子模型node都会添加rootNode下.
这样本来也很没有问题,毕竟如果我用.osm导入一个大场景,为了处理碰撞,我肯定要把各个子模型分散到不同的node下,但是在Octree场景下,问题就来了,请看ogre源代码:
//same as SceneNode, only it doesn't care about children...
void OctreeNode::_updateBounds( void )
{
mWorldAABB.setNull();
mLocalAABB.setNull();
// Update bounds from own attached objects
ObjectMap::iterator i = mObjectsByName.begin();
AxisAlignedBox bx;
while ( i != mObjectsByName.end() )
{
// Get local bounds of object
bx = i->second ->getBoundingBox();
mLocalAABB.merge( bx );
mWorldAABB.merge( i->second ->getWorldBoundingBox(true) );
++i;
}
//update the OctreeSceneManager that thing