osg::Node位置移动】的更多相关文章

osg::Node节点移动的时候,可以使用osg::Matrix::translate  来完成 osg::Matrix::translate中的参数是  当前位置到目标位置需要改变的值,所以,传递参数的时候需要传入目标节点位置减去当前位置的差值. ifc node节点移动…
/* -*-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 v…
深度拷贝 node.clone(osg::CopyOp::DEEP_COPY_ALL)  osg::ref_ptr<osg::Node> deepnode = (osg::Node *)(node->clone(osg::CopyOp::DEEP_COPY_ALL));     …
node->getBound().center() * osg::computeLocalToWorld(node->getParentalNodePaths()[0]) osg::Vec3f vec3f1 = hNode2->getBound().center(); osg::NodePathList nodePAthList1 = hNode2->getParentalNodePaths(); 不知为啥, hNode2->getParentalNodePaths(0);一…
osg::Vec3f vec3f1 = hookNode->getBound().center(); osg::NodePathList nodePAthList1 = hookNode->getParentalNodePaths(); updateHookPosition_20190914(vec3f1, nodePAthList1); osg::Vec3 point3 = vec3f1 * osg::computeLocalToWorld(nodePath1); std::cout <…
osg::PositionAttitudeTransform节点. #include <osgViewer\Viewer> #include <osg\Node> #include <osg\Geode> #include <osg\Group> #include <osg\PositionAttitudeTransform> #include <osgDB\ReadFile> #include <osgDB\WriteFile…
前言 在前几节中,我自己觉得讲的比较粗糙,因为实在是时间上不是很充足,今天我想弥补一下,希望不是亡羊补牢.我们在osgViewer::Viewer::eventTraversal()函数中经常看到这么两个函数:camera->accept(*_eventVisitor);以及getSceneData()->accept(*_eventVisitor):今天我们第一步就是要介绍一下这两个函数.首先我们通过查找camera和getSceneData()的定义可以发现其实他们都是继承自osg::No…
OSG的节点访问 转自:http://www.cnblogs.com/kanego/archive/2011/09/27/2193484.html SG中节点的访问使用的是一种访问器模式. 一个典型的访问器涉及抽象访问者角色(Visitor), 具体访问者(Concrete Visitor), 节点角色(Node). OSG中访问者角色为NodeVisitor类,其基本结构如下: NodeVisitor(TraversalMode tm)    //构造函数,TraversalMode为节点树的…
osg实例介绍 转自:http://blog.csdn.net/yungis/article/list/1 [原]osgmotionblur例子 该例子演示了运动模糊的效果.一下内容是转自网上的:原理:引用内容对于运动画面,将当前帧画面与上一帧画面进行alpha融合,以产生出残影——运动模糊效果.通过使用累积缓存来完成这项工作.OpenGL提供一个累积缓存,可以用来存储当前指定的颜色缓存里面的内容,并进行一定的运算操作.通过函数glAccum可以对累积缓存进行操作. glAccum介绍如下:引用…
1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns  为了对滑翔机的飞行进行模拟,对openGL的库进行了封装,osg的雏形就这样诞生了,1998年Don burns 遇到了同样喜欢滑翔机和计算机图形学的Robert Osfield ,从此Robert Osfield加入了osg小组的开发并一直担任开发小组的组长. Ø OSG不但有openGL的跨平台的特性和较高的渲染性能,还提供了一系列可供3D程序开发…
数据库的应用——直接从内存中读取osg节点 目的:要从数据库中读取节点数据到osg. 一开始的方法是这样的,每当我要添加一个数据库中的节点数据时,首先把它读取到内存中,然后写入一个文件,最后再次从文件中用osg的osgDB::readNodeFile()读取,这个方法是可行的,但是却很糟糕.我的初衷是不要经过文件转换. 现在问题解决了,多亏了osg::ReaderWriter提供一个虚函数: virtual ReadResult  readNode (std::istream &, const…
  本章教程将继续使用回调和节点路径(NodePath)来检索节点的世界坐标. 本章目标: 在一个典型的仿真过程中,用户可能需要从场景中的各种车辆和人物里选择一个进行跟随.本章将介绍一种将摄像机“依附”到场景图形节点的方法.此时视口的摄像机将跟随节点的世界坐标进行放置. ---------------------------------------------------------------------- 概述: 视口类包括了一系列的矩阵控制器(osgGA::MatrixManipulato…
原文:http://blog.csdn.net/tmljs1988/article/details/7562926 可以运行 1.       HUD流程图: 完整源代码如下: /*OSG中的HUD,文字总是显示在最前面*/ #include <osgDB/ReadFile> #include <osgViewer/Viewer> #include <osg/Geode> #include <osg/Depth> #include <osg/Camer…
方法一:粒子系统         OSG的粒子系统有自己定义好的模块,如osgParticle::ExplosionEffect(爆炸模拟):osgParticle::SmokeEffect(烟雾模拟):osgParticle::FireEffect(火光模拟).我觉得可以利用烟雾模拟和火光模拟来做报警特效的展示. OSG向场景中添加osgParticle粒子效果 目的: 向场景中添加自定义的osgParticle实例,模拟坦克模型在地形上运动时产生的烟尘. ------------------…
点选主要是重载osg的GUIEventHandler, class CPickHandler : public osgGA::GUIEventHandler{ //自定义回调函数名:CPickHandler osgViewer::Viewer * mViewer; //在这里定义要在重载函数里使用的变量 osg::Group * mGroup; osg::Node * lastSelect; osg::Node * replacedNode; int replaceNum; public: CP…
在OpenSceneGraph中,智能指针(Smart pointer)的概念指的是一种类的模板,它针对某一特定类型的对象(即Referenced类及其派生类)构建,提供了自己的管理模式,以避免因为用户使用new运算符创建对象实例之后,没有及时用delete运算符释放对象,而造成部分内存空间被浪费的后果,也就是所谓的内存泄露错误. 由于OSG中与场景图形有关的大多数类均派生自Referenced类,因此OSG大量使用了智能指针来实现场景图形节点的管理.智能指针的使用为用户提供了一种自动内存释放的…
OSG世界坐标转屏幕坐标 #define M(row,col) m[col * 4 + row] void Transform_Point(double out[4], const double m[16], const double in[4]){    out[0] = M(0, 0) * in[0] + M(0, 1) * in[1] + M(0, 2) * in[2] + M(0, 3) * in[3];    out[1] = M(1, 0) * in[0] + M(1, 1) * i…
OSG实现场景漫游 下面的代码将可以实现场景模型的导入,然后在里面任意行走,于此同时还实现了碰撞检测. 源代码下载地址: /* * File : Travel.cpp * Description : * Author : GuoShaoHao * E-mail : gsh0913@qq.com * Date : 2011/01/08 * * CopyRight @ South China Institute of Software Engineering,.GZU * */ #include <…
OSG开发概览 1 OSG基础知识 Ø OSG是Open Scene Graphic 的缩写,OSG于1997年诞生于以为滑翔机爱好者之手,Don burns  为了对滑翔机的飞行进行模拟,对openGL的库进行了封装,osg的雏形就这样诞生了,1998年Don burns 遇到了同样喜欢滑翔机和计算机图形学的Robert Osfield ,从此Robert Osfield加入了osg小组的开发并一直担任开发小组的组长. Ø OSG不但有openGL的跨平台的特性和较高的渲染性能,还提供了一系列…
目录 1.解决方案 1) 使用TIF格式的DEM 2) 描述HeightField 2.存在问题 3.参考文档 1.解决方案 在网上参考了一些资料,使用OSG创建地形最简单的办法就是使用OSG::HeightField类,它是描述类似于DEM网格的四角面片.首先给出具体实现代码: #include <iostream> #include <Windows.h> #include <osgViewer/Viewer> #include <osgDB/ReadFile…
例:geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4)); 来指定要利用这些数据生成一个怎么样的形状. 该行代码中,使用DrawArrays类向Geometry类送入了新几何体的信息,即,该几何体是一个QUADS,它的顶点坐标从索引数组中读入,从第1个索引值开始,共读入4个索引值,组成一个四边形图形. 几何体的形状参数除了QUADS之外,还有数种方式,以用于不同的用户需求,列表如下: POINTS 绘制点…
bool EarthManipulator::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa) { bool handled = false; // first order of business: make sure the CSN is established. if ( !established() ) return false; // make sure the camera projecti…
在初级版上,进行新的漫游方式调整 头文件: #pragma once //南水之源 20180101 #include <osgGA/CameraManipulator> #include <osgEarth/MapNode> #include <osgEarth/Viewpoint> #include <osgEarth/GeoData> class EarthWalkManipulator :public osgGA::CameraManipulator…
由于受够了OE的漫游器,想搞个可以在全球飞行的漫游器,所以就做了一个: 请无视我的起名规则······ 类头文件:EarthWalkManipulator.h #pragma once //南水之源 20180101 #include <osgGA/CameraManipulator> #include <osgEarth/MapNode> #include <osgEarth/Viewpoint> #include <osgEarth/GeoData> c…
参考:http://blog.sina.com.cn/s/blog_7cdaf8b60102uzu3.html http://blog.csdn.net/wang15061955806/article/details/51011466 osgDB机制概述 osgDB库允许用户程序加载.使用和写入3D数据库,它采用插件管理的架构,可以支持大量常见的2D图形和3D图形文件格式.osgDB负责维护插件的信息注册表,并负责检查将要被载入的OSG插件接口的合法性.由于大型3D地形数据通常是多段数据块的组合…
回调的类型有很多种,一般很容易就想到的是UpdateCallBack,或者EventCallBack,回调的意思就是说,你可以规定在某件事情发生时启动一个函数,这个函数可能做一些事情.这个函数就叫做回调函数. #include<osg\MatrixTransform> #include<osg\PositionAttitudeTransform> #include<osg\Geode> #include<osgDB\Registry> #include<…
/********************************************************** *Write by FlySky *zzuxp@163.com http://www.OsgChina.org **********************************************************/ #include <osgViewer/Viewer> #include <osg/Node> #include <osg/Ge…
目录 1. 加载模型 2. 光照 1) 环境反射 2) 漫反射 3) 日照方向 (1) 太阳高度角和太阳方位角 (2) 计算过程 4) 改进实现 3. 阴影 4. 太阳高度角与太阳方位角的计算 1) 太阳高度角计算公式 2) 太阳方位角计算公式 3) 太阳赤纬计算公式 4) 时角计算公式 5) 真太阳时 5. 参考文献 1. 加载模型 通过OpenSceneGraph加载一个倾斜摄影的场景模型数据: #include <iostream> #include <Windows.h>…
osg加载.tif地形数据文件 #ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include <iostream> //#include <math.h> #include <osg/Node> #include <osg/Group> #include <osgDB/ReadFile> #include <osgViewer/Viewer> #include &…
转载自:https://segmentfault.com/a/1190000010506374?utm_source=tag-newest osg插件原理:https://blog.csdn.net/weitaming1/article/details/88954231 一. 渲染状态(render state) osg中,当设置某节点的渲染状态时,该状态会赋予当前节点及其子节点,因此,若要实现多节点多状态渲染时,一定注意节点之间的父子关系,最好一个节点设置一个自己想要的状态,除非父节点及其子节…