osg help】的更多相关文章

static osg::Timer* sendMsgTimer = new osg::Timer; if (sendMsgTimer->time_m()>100)//100ms {// do what you want sendMsgTimer->setStartTick();//重置 } osg::NodeVisitor* nv nv->getFrameStamp()->getReferenceTime();…
OSG消息接收在头文件有各种事件的相关参数…
OSG的消息机制包括好多个头文件预定义及多个类. 首先,消息接收相关的类当属osgGA::GUIEventHandler和osgGA::GUIEventAdapter这两个类了.前者处理OSG程序与用户交互,处理事件,事件全靠handle这个函数.此函数的定义: 重载1: virtual bool handle(osgGA::Event* event, osg::Object* object, osg::NodeVisitor* nv); 重载2: virtual bool handle(con…
OSG是Open Scene Graphic的缩写,是基于C++平台的使用OpenGL技术的开源3D场景开发. vs环境安装或者是在Ubuntu中环境的安装网上教程很多,都是大同小异的,认真操作容易成功,其中vs中的安装编译过程时间花销很大,估计3个小时.如果是在VS下面进行编辑的话要进行一些设置,要设置OSG的lib和include目录,而ubuntu中只需要编译时链接上几个库就ok,所有需要的库包括-losg,-losgViewer,-losgDB,-losgGA. 开始学习时,在vs的编程…
//关闭灯光 state->setMode(GL_LIGHTING,osg::StateAttribute::OFF|osg::StateAttribute::PROTECTED); //打开混合融合模式 state->setMode(GL_BLEND,osg::StateAttribute::ON); state->setMode(GL_DEPTH_TEST,osg::StateAttribute::ON); state->setRenderingHint(osg::StateS…
最近看到osg Examples的osgQtBrowser例子, 觉得效果还是挺好的, 想加入到自己的项目中来, 就这样的搬运工作也出问题了-__- 拷过来的是这一段: osg::ref_ptr<osgQt::QWebViewImage> image = new osgQt::QWebViewImage; ) image->navigateTo((arguments[])); else image->navigateTo("http://www.baidu.com&quo…
osg 示例程序解析之osgdelaunay 转自:http://lzchenheng.blog.163.com/blog/static/838335362010821103038928/ 本示例程序主要说明如何用osgUtil::DelaunayTriangulator类建立约束的delaunay(德洛内)三角网,delaunay(德洛内)三角网主要用于基于离散点数据构建三维表面.如经常用于构建地形表面,本示例程序就是用该类构建一个地形,然后添加一些约束条件,在地形上绘制道路.区域等要素,示例…
细读cow.osg 转自:http://www.cnblogs.com/mumuliang/archive/2010/06/03/1873543.html 对,就是那只著名的奶牛. //Group节点,可有子节点.Group { UniqueID Group_0         //Gourp名称DataVariance STATIC   //不知道用来干嘛,一般都是staticcullingActive TRUE      //参与culling?num_children 1         …
OSG中找到特定节点的方法 转自:http://38288890.blog.163.com/blog/static/19612845320072721549504/ 为了在OSG中找到需要的节点并对节点做出相应的操作,可以从NodeVisitor类中继承一个类,NPS的教程 [download id="14"]阐述了这个问题.下面是我写的一个类,找到指定名字.指定类型的节点:class findGeoNamedNode:public osg::NodeVisitor{public:fi…
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://www.cnblogs.com/ylwn817/articles/1973396.html 平移旋转缩放这个三个是osg矩阵操作中,最常见的操作,下面给出示例以及说明 首先先了解下osg空间方向: osg方向如左图所示,x轴表示屏幕水平方向,y轴表示和屏幕垂直方向即屏幕里面方向,z轴表示屏幕垂直方向,每个箭头指向表示正方向 下面来学习矩阵变换操作 首先平移: #include<osgDB/ReadFile> #include<…
链接:http://weibo.com/p/2304189447a8480102v2c2 此文作者把用到的相关代码包放在:http://pan.baidu.com/s/1qW9a4zU 按照步骤操作完,目前我的OSG源代码版算是编译成功了. 在cmd中测试osg是否编译成功时,如果仅仅编译的是Debug版的话,那需要执行:osgviewerd cow.osg:如果是release版的话,那需要执行osgviewer cow.osg 至此,http://weibo.com/p/2304189447…
1.osgearth_graticule:生成经纬线. 2.osgearth_annotation:各类标注(点.线.面.模型.文本等). 3.osgearth_city:加载一个城市三维模型,可以浏览. 4.osgearth_clamp:在一个区域加载生成5000个树木的三维模型展示. 5.osgearth_colorfilter:运行不起来-- 6.osgeatth_controls:有一个osg的图标,可以控制透明度与方向.还有一些文本矩形框之类的. 7.osgearth_demo:qt的…
1 .引言随着计算机可视化.虚拟现实技术的飞速发展,人们对实时真实感渲染以及场景复杂度提出了更高的要求.传统的直接使用底层图形接口如OpenGL.DirectX开发图形应用的模式越来越暴露出开发复杂性大.周期性长.维护困难的缺陷.为此国外出现了许多优秀的三维渲染引擎,比如Delta3D,OGRE,OSG,Unity3d,VTK等.渲染引擎的作用是要优化遍历和显示三维模型.本文主要对OGRE与OSG这两个三维图形渲染引擎做个简单的比较,介绍他们在运行效率.场景管理.功能支持.可扩展性等方面的异同.…
我们都知道,OpenGL规定矩阵使用列主序存储,即glLoadMatrix等函数要求输入的数组是按列主序存储的矩阵.然而,一个很奇怪的事实是,OSG中矩阵存储是使用的标准C二维数组(行主序),并且也是直接将行主序存储的矩阵元素作为参数传递给glLoadMatrix调用的. 另外一个奇怪的事实是,OpenGL规定的对顶点应用矩阵变换使用左乘(即把顶点坐标看做列向量,变换写做M*P),而OSG规定使用右乘(即把顶点坐标看作行向量,变换写做P*M). 然而,这两个奇怪的事实绝不是OSG设计上的失误,而…
1.地球背面的一个点,计算它在屏幕上的坐标,能得到吗? 不是被挡住了吗? 答:计算一个空间点的屏幕坐标,使用osgAPEx::GetScreenPosition函数.当空间点处于相机视空间内(不管它是否被别的物体遮挡)时,都是可以得到它对应的屏幕坐标的. 如何判断一个点是否在地球背面?可以通过计算该点处垂直地面的方向UP,与相机方向的夹角,如果夹角为锐角,则可认为该点在地球背面.计算地球上任意点的UP方向使用osgAPEx::ComputeLocalUpVector. 2.OSG中可以播放视频吗…
1.example_osganimate一)演示了路径动画的使用(AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera.CameraView.MatrixTransform.PositionAttitudeTransform等四种类型的节点上.二)演示了osgSim::OverlayNode的使用 2.example_osganimationeasemotion一)演示了osgAnimation::EaseMotion的使用,EaseMot…
BUILD_OSG_ARAPPERS: 这一项要选,不然后面编译自己的测试程序的时候,会报无法打开文件"osgIntrospectiond.lib"错误. Could not find plugin to read objects from file "cow.osg"这个是要编译osgdb_rgbd.dll 可以在链接器->输入(或者命令行)中删除osgIntrospectiond.lib项即可.…
虽然出生的时候,没有说过“Hello World!”,但是自从走上了编程之路,每一次输出“Hello World!”的时候,都觉得好比中了彩票大奖似的: 仔细算算,从2012年暑假到现在,经历了3年半的光阴,这段时间,不仅是知识.阅历.成长获得最大的一段,也是人生的一大转折点.在这期间,得以继续深造学习自己的专业,虽然踏入这行的时候,也是调剂来的,但是我用这3年的时间,恶补自己7年的不足:2015年,发生了三件大事,我毕业了,我工作了,我有女票了(三件事的重要程度递增):吃得苦中苦,方位人上人,…
可以使用Geometry头文件中的 Geometry* createTexturedQuadGeometry osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D; osg::ref_ptr<osg::Image> image = osgDB::readImageFile( "D:/background1.png" ); texture->setImage( image.get() ); osg…
严重注意!!!以下设置必须在viewer.realize();之后,否则不起作用!!!! 设置相机的位置,可以通过CameraManipulator(一般是osgGA::TrackballManipulator)设置, 可以使用setTransformation设置 设置相机的其他参数,ViewMatrix,ProjectionMatrix,Viewport osg::Camera* c=viewer.getCamera(); c.setViewMatrix.... c.setProjectio…
osgDB::writeNodeFile(node, path, new osgDB::Options("noTexturesInIVEFile")); noTexturesInIVEFile:选项可以在写ive模型文件的时候只写纹理文件对应的路径,而不是默认的将纹理数据写入ive文件 更多参数,可以查看ReaderWriterIVE.cpp文件中的定义 osg::Node* osgbNode=osgDB::readNodeFile(osgbModelFile, new osgDB::…
#include<osgViewer/Viewer> #include<osg/Node>#include<osg/Geode>#include<osg/Group>#include<osg/NodeVisitor> #include<osgDB/ReadFile>#include<osgDB/WriteFile> #include<osgUtil/Optimizer> #include<iostream…
roll绕Y轴旋转 pitch绕X轴旋转 heading绕Z轴旋转 单位是弧度,可以使用osg::inDegrees(45)将45角度转换为弧度 定义一个四元数 osg::Quat q( roll,osg::Vec3d(0.0, 1.0, 0.0), pitch,osg::Vec3d(1.0, 0.0, 0.0), heading,osg::Vec3d(0.0, 0.0, 1.0)); //设置旋转 manipulator->setRotation(q);…
class MyNodeVisitor:public osg::NodeVisitor { pulic: MyNodeVisitor():osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN) {} void apply(osg::Geode& geode) { //计算当前geode节点对应的世界变换矩阵,用来计算geode中顶点对应的世界坐标 osg::Matrix geodeMatrix=osg::computeLocalToWo…
//By smells2 at Lab 2012-02-21#include <osg/Group>#include <osg/Geode>#include <osg/ShapeDrawable>#include <osg/Texture2D>#include <osgViewer/Viewer>#include <osgDB/readfile> #include <osg/PositionAttitudeTransform&g…
转至:http://blog.csdn.net/zhuqinglu/article/details/2064013 在打开或者保存一个osg模型的时候,经常遇到中文路径或者中文文件名的问题,此时会提示无法打开或者保存.当然,我们可以完全避免它,直接不使用中文字符,可是客户是苛刻的,有些小问题是必须解决的. 假设你想把node节点保存到E盘下的保存目录中,重新命名为牛.ive 此时只需调用一下代码: setlocale( LC_ALL, "chs" ); osgDB::writeNode…
osg中遇到的问题 今天写程序的时候, 需要把键盘和鼠标消息转发出来, 就直接写了接口用signal丢出来了. 程序写的很多, 测试的时候却崩溃了.... 在场景中拖拽鼠标左键的时候, 会发现在扔出鼠标左键的按下和弹起消息后, 还会再弹出几个消息: 多出来的几个消息查了下, 65508是右ctrl键, 有时还会弹出65507(左ctrl键)!!! 我勒个去, osg不会自动干这事吧, 以前没发现啊! 屁话不多说, 开始查吧.... 各种翻源码, 就是没看到哪里添加键盘消息了, 实在没辙到群里问了…
osg中的视点控制 osg的视点控制基类是CameraManipulator, 它是一个虚基类, 有用的方法都跟home有关. 在这个类里面有三个重要的成员变量: osg::Vec3d _homeEye osg::Vec3d _homeCenter osg::Vec3d _homeUp   这三个变量定义了初始相机的位置.   我们最常用的TrackballManipulator类其实没有定义什么, 它的主要方法都在基类OrbitManipulator里. 这个类里重要的函数是setTransf…
最近在一个项目中需要动态的添加和删除EventHandler,添加的时候很顺利,使用view->addEventHandler()函数就可以了. 不过在删除的时候,出现点麻烦.   直接调用view->removeEventHandler()函数,会导致view在调用frame函数时,崩在这个位置: void CompositeViewer::eventTraversal(){    ...        for(ViewEventsMap::iterator veitr = viewEven…