//定义一个callback类
class CNodeCullCallback : public osg::Callback
{
public:
CNodeCullCallback(void){};
~CNodeCullCallback(void){};
virtual bool run(osg::Object* object, osg::Object* data)
{
osg::NodeVisitor* nv = data ? data->asNodeVisitor() : 0;
osg::Node* pNode = object ? object->asNode() : 0;
if (nv == NULL || pNode == NULL)
return osg::Callback::run(object,data);
//添加处理条件代码
if(true)
{
return
false;//不满足条件直接返回
}
//满足条件向下执行
nv->traverse(*pNode);
return true;
}
public:
//自定义处理参数
};
//设置方法
osg::Node* pNode;
pNode->setCullCallback(new CNodeCullCallback);
//如果需要约束模型显示范围 需要结合读取回调设置 clipplane实现