/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
*
* This library is open source and may be redistributed and/or modified under
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
* (at your option) any later version. The full license is in LICENSE file
* included with this distribution, and on the openscenegraph.org website.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* OpenSceneGraph Public License for more details.
*/
#include <osg/NodeVisitor> #include <osg/Billboard>
#include <osg/ClearNode>
#include <osg/ClipNode>
#include <osg/CoordinateSystemNode>
#include <osg/Geode>
#include <osg/Group>
#include <osg/LightSource>
#include <osg/LOD>
#include <osg/MatrixTransform>
#include <osg/OccluderNode>
#include <osg/OcclusionQueryNode>
#include <osg/PagedLOD>
#include <osg/PositionAttitudeTransform>
#include <osg/Projection>
#include <osg/ProxyNode>
#include <osg/Sequence>
#include <osg/Switch>
#include <osg/TexGenNode>
#include <osg/Transform>
#include <osg/Camera>
#include <osg/CameraView>
#include <osg/Geometry> #include <stdlib.h> using namespace osg; NodeVisitor::NodeVisitor(TraversalMode tm):
Object(true)
{
_visitorType = NODE_VISITOR;
_traversalNumber = osg::UNINITIALIZED_FRAME_NUMBER; _traversalMode = tm;
_traversalMask = 0xffffffff;
_nodeMaskOverride = 0x0;
} NodeVisitor::NodeVisitor(VisitorType type,TraversalMode tm):
Object(true)
{
_visitorType = type;
_traversalNumber = osg::UNINITIALIZED_FRAME_NUMBER; _traversalMode = tm;
_traversalMask = 0xffffffff;
_nodeMaskOverride = 0x0;
} NodeVisitor::NodeVisitor(const NodeVisitor& nv, const osg::CopyOp& copyop):
Object(nv, copyop),
_visitorType(nv._visitorType),
_traversalNumber(nv._traversalNumber),
_traversalMode(nv._traversalMode),
_traversalMask(nv._traversalMask),
_nodeMaskOverride(nv._nodeMaskOverride)
{
} NodeVisitor::~NodeVisitor()
{
// if (_traversalVisitor) detach from _traversalVisitor;
} void NodeVisitor::apply(Node& node)
{
traverse(node);
} void NodeVisitor::apply(Drawable& drawable)
{
apply(static_cast<Node&>(drawable));
} void NodeVisitor::apply(Geometry& drawable)
{
apply(static_cast<Drawable&>(drawable));
} void NodeVisitor::apply(Geode& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(Billboard& node)
{
apply(static_cast<Geode&>(node));
} void NodeVisitor::apply(Group& node)
{
apply(static_cast<Node&>(node));
} void NodeVisitor::apply(ProxyNode& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(Projection& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(CoordinateSystemNode& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(ClipNode& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(TexGenNode& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(LightSource& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(Transform& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(Camera& node)
{
apply(static_cast<Transform&>(node));
} void NodeVisitor::apply(CameraView& node)
{
apply(static_cast<Transform&>(node));
} void NodeVisitor::apply(MatrixTransform& node)
{
apply(static_cast<Transform&>(node));
} void NodeVisitor::apply(PositionAttitudeTransform& node)
{
apply(static_cast<Transform&>(node));
} void NodeVisitor::apply(Switch& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(Sequence& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(LOD& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(PagedLOD& node)
{
apply(static_cast<LOD&>(node));
} void NodeVisitor::apply(ClearNode& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(OccluderNode& node)
{
apply(static_cast<Group&>(node));
} void NodeVisitor::apply(OcclusionQueryNode& node)
{
apply(static_cast<Group&>(node));
}

NodeVisitor的更多相关文章

  1. NodeVisitor的使用-遍历Geode节点下的Geometry并获取顶点、法向量等数据

    struct Subset { std::vector<float> vertexs;//位置 std::vector<float> normals;//法向 std::vec ...

  2. NodeVisitor的使用-遍历Geode节点并在它与父节点之间添加一个LOD节点

    #include <osg\NodeVisitor>#include <osg\MatrixTransform>#include <osg\PagedLOD>#in ...

  3. osg::NodeVisitor中计算一个节点对应的世界变换矩阵、法向量、顶点坐标

    class MyNodeVisitor:public osg::NodeVisitor { pulic: MyNodeVisitor():osg::NodeVisitor(osg::NodeVisit ...

  4. osg探究补充:Node::accept(NodeVisitor& nv)及NodeVisitor简介

    前言 在前几节中,我自己觉得讲的比较粗糙,因为实在是时间上不是很充足,今天我想弥补一下,希望不是亡羊补牢.我们在osgViewer::Viewer::eventTraversal()函数中经常看到这么 ...

  5. [osg]节点遍历nodevisitor浅析

    参考:https://www.cnblogs.com/hzhg/archive/2010/12/17/1908764.html OSG中节点的访问使用的是一种访问器模式.一个典型的访问器涉及抽象访问者 ...

  6. osg::NodeVisitor example

    [0]osg::Group [1]osg::MatrixTransform [1] osg::MatrixTransform [1]osg::MatrixTransform [2] osg::Geod ...

  7. osg::NodeVisitor

    [1]osg::Group [2]osg::PositionAttitudeTransform [2]osg::MatrixTransform [3]osg::Geode [2]osg::Matrix ...

  8. osg::NodeVisitor osg3.4.0

    x:-89.4588 y:-12.1245 z:-11.7807x:-89.4588 y:-6.44823 z:-11.7807x:-89.2164 y:-9.07239 z:-11.811x:-89 ...

  9. OSG程序设计之osg::NodeVisitor

    本文所有内容来自<OpenSceneGraph三维渲染引擎设计与实践>一书. 本文主要讨论的是OSG中节点的访问. 对于节点的访问是从节点接收一个访问器开始的,用户执行某个节点的accep ...

随机推荐

  1. python中的logging日志模块

    日志是程序不可或缺的一部分.它可以记录程序的运行情况,帮助我们更便捷地发现问题,而python中的logging日志模块给我们提供了这个机会. logging给我们提供了五种函数用来输出日志:debu ...

  2. 《CoderXiaoban》第九次团队作业:Beta冲刺与验收准备3

    项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 实验十三 团队作业9:BETA冲刺与团队项目验收 团队名称 Coderxiaoban团队 作业学习目标 (1)掌握软件黑盒 ...

  3. .net框架-字典对象 Hashtable & Dictionary<TKey,TValue> & SortedList

    字典对象: 字典对象是表示键值对的集合 字典对象有Hashtable(.net 1.0)及其泛型版本Dictionary<TKey,TValue> 字典对象还包括SortedList及其泛 ...

  4. easyui-datagrid统计

    <script> //打印指定的table function dayin() { var tableToPrint = document.getElementById("dg&q ...

  5. learning java AWT 布局管理器 GridLayout

    GridLayout布局管理器将容器分割成纵横线分格的网格,每个网格所占的区域大小相同. import java.awt.*; public class GridLayoutTest { public ...

  6. 【CSS】知识笔记

    一.CSS文件 1.引用css文件,放在Head里面,可以减少repaint和reflow. 浏览器渲染页面大概是这样的,当浏览器从上到下一边下载html生成DOM tree一边根据浏览器默认及现有C ...

  7. unison 双向镜像同步

    unison 双向镜像同步   需要 ocaml 依赖工具(3.0.7) 而且需要机器ssh双向互信 ssh 开启互信 # vi in.sh  直接执行 in.sh 就可以了 mkdir ~/.ssh ...

  8. [matlab工具箱] 神经网络Neural Net

    //目的是学习在BP神经网络的基础上添加遗传算法,蚁群算法等优化算法来优化网络,这是后话. 先简单了解了MATLAB中的神经网络工具箱,工具箱功能还是非常强大的,已经可以拟合出非常多的曲线来分析了. ...

  9. 第12组 团队Git现场编程实战

    分工及贡献 组内有三人去考证了,只剩下6人 组员 分工 贡献比例 王永福 前后端,爬虫,博客主体 30% 孙承恺 建模,算法设计,统筹 18% 邱畅杰 爬虫 15% 徐祖豪 前端数据可视化 13% 张 ...

  10. Docker 常用命令,自用,持续更

    1.进入容器 docker exec -it 容器id /bin/bash docker exec -it db30f533ee1b /bin/bash 2.复制文件到容器 docker cp 文件路 ...