|
本帖最后由 sunbaigui 于 2011-8-15 18:44 编辑
这几天在做包围盒效果,但是碰到了一个问题,在显示cow.osg的时候是正确的,但在显示avatar.osg的时候确出现了错误,
看上去像是某个矩阵变换没加上去的样子
我包围盒的代码如下(我是对geode节点进行包围盒显示的,下面的例子中牛是一个geode节点,avatar的右手是一个geode节点):
- osg::BoundingBoxf boundbox = geode->getBoundingBox();
- osg::ref_ptr<osg::Box> box = new osg::Box(boundbox.center(), boundbox.xMax()-boundbox.xMin(), boundbox.yMax()-boundbox.yMin(), boundbox.zMax()-boundbox.zMin());
- osg::ref_ptr<osg::ShapeDrawable> shape = new osg::ShapeDrawable(box);
- shape->setColor(osg::Vec4(0.0, 1.0, 0.0, 1.0));
- shape->setStateSet(state);
- geode->addDrawable(shape.get());
复制代码 显示cow.osg时的效果图:
cow.osg
显示avatar.osg右手geode节点时的效果图(看上去像是大了一倍):
avatar.osg
avator.osg的节点结构如下所示:
structure
我对osg的文件格式不是很了解,不知到是不是因为结构图中bone节点的作用导致包围盒求法发生了错误。
求指点!感激不尽! |
|