当前位置:   article > 正文

osg总结一:osg视察器NodeVistor 使用注意事项及剖析_osg getnodemaskoverride()

osg getnodemaskoverride()

不废话直接上!

1、osg::NodeVistor
继承模式:

NodeVistor
Object
Referenced

osg::Node
继承方式:

Node
Object
Referenced

2、要想监视某个物,必须要有一个方法
osg所有节点的监视方式,由继承于父亲节点即(osg::Node)与监视器(osg::NodeVistor)合并使用的方法来完成,那么入口呢?使用方式呢?

osg::Node提供了虚函数入口方式

  1. virtual void accept(NodeVisitor& nv);
  2. virtual void ascend(NodeVisitor& nv);
  3. virtual void traverse(NodeVisitor& /nv/) {}

在NodeVistort提供了很多apply方法,使用自带接口都是具有目的性的,其中osg视察器已经定义了很多,可以从其中选择一个适合当前要做的操作,比如计算节点包络框,也可以利用c++特性,继承NodeVisitor来实现自己节点想要的操作;
virtual void accept(NodeVisitor& nv);
定义:
void Node::accept(NodeVisitor& nv)
{
//判断Node是否要遍历操作;其中最为关键,也是最为方便的决定此
//模型是否要被操作取决于 node.getNodeMask(),相当于Node的遍历的开关
if (nv.validNodeMask(this))
{
// 加入父节点
nv.pushOntoNodePath(this);
// 调用视察器方法
nv.apply(this);
// 使用完毕踢出
nv.popFromNodePath();
}
}
** virtual void ascend(NodeVisitor& nv);

向上遍历
irtual void traverse(NodeVisitor& /nv/) {}
向下遍历

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/314930
推荐阅读
相关标签
  

闽ICP备14008679号