OSG笔记:获取节点的包围盒

osg中包围盒

  • osg::Node提供了获取包围球的接口,inline const BoundingSphere& getBound() const,没有提供获取BoundingBox的接口。
  • osg::Drawable与osg::Geode则提供了获取BoundingBox的接口。

需求

给定一个osg::Node, 需要获取BoundingBox

解决思路及方案

若知道osg::Node是个osg::Geode或osg::Drawable,则可以转换成指定类型来进行获取。(注:若osg::Node下子孙节点是个osg::Geode,你尝试遍历到osg::Geode,然后取出其osg::BoundingBox,就认为是osg::Node的包围盒,这是不正确的,因为此时的osg::BoundingBox是osg::Geode的局部坐标系下的包围盒。)

osg提供了一个访问器osg::ComputeBoundsVisitor,可以求出osg::Node的BoundingBox,如下:

osg::ComputeBoundsVisitor cbVisitor;
pOsgNode->accept(cbVisitor);
const osg::BoundingBox& mBBox = cbVisitor.getBoundingBox(); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值