osgSim.VisibilityGroup是OpenSceneGraph(简称OSG)中的一个节点组,用于根据场景中的可见性来仅渲染可见的子节点。
该节点组实际上是通过计算场景中每个子节点相对于观察位置的可见性来决定哪些节点应该被渲染。当前,该节点组支持两种可见性测试方式,分别是简单的视锥体测试和基于精度的三角形测试。
继承关系:
osgSim::VisibilityGroup::VisibilityGroup()
创建一个空的osgSim.VisibilityGroup节点组。
osgSim.VisibilityGroup节点组与其他节点组一样,可以通过addChild()和removeChild()方法添加或删除子节点。在场景渲染时,该节点组会自动计算每个子节点相对于观察者的可见性,然后去渲染那些可见的子节点。
节点组的可见性测试方式可通过setVisibilityTest()方法来设置。目前支持的可见性测试方式有两种,分别是视锥体测试(CULL_VISITOR)和基于精度的三角形测试(LineOfSight)。
具体使用方法如下:
//创建一个可见性节点组
osg::ref_ptr<osgSim::VisibilityGroup> visibilityGroup = new osgSim::VisibilityGroup;
//设置可见性测试方式为视锥体测试
visibilityGroup->setVisibilityTest(osgSim::VisibilityGroup::CULL_VISITOR);
//添加需要被可见性节点组处理的子节点
visibilityGroup->addChild(child1);
visibilityGroup->addChild(child2);
...
virtual osg::Object* osgSim::VisibilityGroup::cloneType() const override
返回一个osgSim.VisibilityGroup对象的浅拷贝。
virtual osg::Object* osgSim::VisibilityGroup::clone(const osg::CopyOp& copyop) const override
返回一个osgSim.VisibilityGroup对象的深拷贝。
virtual bool osgSim::VisibilityGroup::addChild(osg::Node* child) override
添加一个子节点到该节点组中。
virtual bool osgSim::VisibilityGroup::addChild(osg::Node* child, const osg::BoundingSphere&) override
添加一个带有包围球的子节点到该节点组中。
virtual bool osgSim::VisibilityGroup::addChild(osg::Node* child, const osg::BoundingBox&) override
添加一个带有包围盒的子节点到该节点组中。
virtual bool osgSim::VisibilityGroup::replaceChild(osg::Node* origChild, osg::Node* newChild) override
替换该节点组中指定的子节点。
virtual bool osgSim::VisibilityGroup::replaceChild(osg::Node* origChild, osg::Node* newChild, const osg::BoundingSphere&) override
替换该节点组中指定的带有包围球的子节点。
virtual bool osgSim::VisibilityGroup::replaceChild(osg::Node* origChild, osg::Node* newChild, const osg::BoundingBox&) override
替换该节点组中指定的带有包围盒的子节点。
virtual bool osgSim::VisibilityGroup::removeChildren(unsigned int pos, unsigned int numChildrenToRemove) override
删除该节点组中指定范围内的子节点。
virtual bool osgSim::VisibilityGroup::removeChild(osg::Node* child) override
删除该节点组中指定的子节点。
virtual bool osgSim::VisibilityGroup::addChild(osg::Node* child, osg::Node::NodeMask travMask) override
添加一个子节点到该节点组中,并指定该节点的遍历掩码(traversal mask)。
virtual bool osgSim::VisibilityGroup::addChild(osg::Node* child, const osg::BoundingSphere&, osg::Node::NodeMask travMask) override
添加带有包围球的子节点到该节点组中,并指定该节点的遍历掩码。
virtual bool osgSim::VisibilityGroup::addChild(osg::Node* child, const osg::BoundingBox&, osg::Node::NodeMask travMask) override
添加带有包围盒的子节点到该节点组中,并指定该节点的遍历掩码。
virtual void osgSim::VisibilityGroup::traverse(osg::NodeVisitor& nv) override
遍历该节点组及其所有子节点。
void osgSim::VisibilityGroup::setVisibilityTest(osgSim::VisibilityGroup::VisibilityTest vistest)
设置可见性测试方式。
参数:
osgSim::VisibilityGroup::VisibilityTest osgSim::VisibilityGroup::getVisibilityTest() const
获取当前可见性测试方式。
返回值: