[0]osg::Group

    [1]osg::MatrixTransform

    [1] osg::MatrixTransform

    [1]osg::MatrixTransform

        [2] osg::Geode

            [3]osg::Geometry

            [3]osg::Geometry

            [3] osg::Geometry

        [2]osg::Geode

    [1] osg::MatrixTransform

    [1]osg::MatrixTransform

        [2]osg::MatrixTransform

            [3] osg::Geode

                [4]osg::Geometry

                [4]osg::Geometry

                [4] osg::Geometry

            [3]osg::Geode

        [2] osg::MatrixTransform

    [1] osg::MatrixTransform

    [1]osg::MatrixTransform

        [2] osg::Geode

            [3]osg::Geometry

            [3]osg::Geometry

            [3]osg::Geometry

            [3] osg::Geometry

            [3]osg::Geometry

            [3] osg::Geometry

        [2]osg::Geode

    [1] osg::MatrixTransform

    [1]osg::MatrixTransform

        [2] osg::Geode

            [3]osg::Geometry

            [3]osg::Geometry

            [3] osg::Geometry

        [2]osg::Geode

    [1] osg::MatrixTransform

    [1]osg::MatrixTransform

        [2] osg::Geode

            [3]osg::Geometry

            [3]osg::Geometry

            [3] osg::Geometry

        [2]osg::Geode

    [1] osg::MatrixTransform

    [1]osg::MatrixTransform

        [2] osg::Geode

            [3]osg::Geometry

            [3]osg::Geometry

            [3]osg::Geometry

            [3] osg::Geometry

            [3]osg::Geometry

            [3] osg::Geometry

        [2]osg::Geode

    [1] osg::MatrixTransform

    [1]osg::MatrixTransform

        [2]osg::MatrixTransform

            [3] osg::Geode

                [4]osg::Geometry

                [4]osg::Geometry

                [4]osg::Geometry

                [4]osg::Geometry

                [4] osg::Geometry

                [4]osg::Geometry

                [4] osg::Geometry

                [4]osg::Geometry

                [4] osg::Geometry

            [3]osg::Geode

        [2] osg::MatrixTransform

    [1] osg::MatrixTransform

    [1]osg::MatrixTransform

        [2] osg::Geode

            [3]osg::Geometry

            [3]osg::Geometry

            [3] osg::Geometry

        [2]osg::Geode

    [1] osg::MatrixTransform

[0] osg::Group

 



class InfoVisitor : public osg::NodeVisitor
{
public:
InfoVisitor()
:osg::NodeVisitor(TRAVERSE_ALL_CHILDREN), _indent(0)
{}

virtual void apply(osg::Node& node)
{
for (int i = 0; i < _indent; i++) std::cout << " ";
std::cout << "[" << _indent << "]" << node.libraryName()
<< "::" << node.className() << std::endl;

_indent++;
traverse(node);
_indent--;

for (int i = 0; i < _indent; i++) std::cout << " ";
std::cout << "[" << _indent << "] " << node.libraryName()
<< "::" << node.className() << std::endl;
}

virtual void apply(osg::Geode& node)
{
for (int i = 0; i < _indent; i++) std::cout << " ";
std::cout << "[" << _indent << "] " << node.libraryName()
<< "::" << node.className() << std::endl;

_indent++;

for (unsigned int n = 0; n < node.getNumDrawables(); n++)
{
osg::Drawable* draw = node.getDrawable(n);
if (!draw)
continue;
for (int i = 0; i < _indent; i++) std::cout << " ";
std::cout << "[" << _indent << "]" << draw->libraryName() << "::"
<< draw->className() << std::endl;
}

traverse(node);
_indent--;

for (int i = 0; i < _indent; i++) std::cout << " ";
std::cout << "[" << _indent << "]" << node.libraryName()
<< "::" << node.className() << std::endl;
}
private:
int _indent;
};


 osg::NodeVisitor example_3d

该模型在unity3d中结构

osg::NodeVisitor example_3d_02

该模型在3dmax中结构

osg::NodeVisitor example_i++_03