/* -*-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. 瀑布流(基于Django)

    # 后端 from django.shortcuts import render, HttpResponse from django.http import JsonResponse from app ...

  2. JAVA读取XML并打印

    在G盘下新建XML文档:person.xml,XML代码: <?xml version="1.0" encoding="utf-8"?> <s ...

  3. virtualbox下装ubuntu全屏问题

    有两种解决方法: 1.安装增强功能. 2.使用命令: sudo apt-get install virtualbox-guest-dkms 之后需要重启虚拟机,修改分辨率.

  4. (转载) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建AlwaysOn,前两篇是为搭建AlwaysOn 做准备的 步骤 这一篇依然使用step by step的方式 ...

  5. js中检测类型问题

    <script>    // var str = '少壮不努力,老大徒伤悲';    // console.log(str instanceof String);    // consol ...

  6. Codevs 3160 最长公共子串(后缀数组)

    3160 最长公共子串 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给出两个由小写字母组成的字符串,求它们的最长公共子串的长 ...

  7. 洛谷 P1191 矩形 题解

    P1191 矩形 题目描述 给出一个 \(n \times n\)的矩阵,矩阵中,有些格子被染成白色,有些格子被染成黑色,现要求矩阵中白色矩形的数量 输入格式 第一行,一个整数\(n\),表示矩形的大 ...

  8. 洛谷P2827蚯蚓

    题目 堆+模拟,还有一个小优化(优化后跟堆关系不大,而是类似于贪心). 如果不加优化的话,卡常可以卡到85. 思路是对于对每一秒进行模拟,用堆来维护动态的最大值,然后对于每个长度都加q的情况可以用一个 ...

  9. C 库函数 - strchr()

    定义 char *strchr(const char *str, int c) 参数 str -- 要被检索的 C 字符串. c -- 在 str 中要搜索的字符 说明 该函数返回在字符串 str 中 ...

  10. STP生成树详解图