osg object AnimationPathCallback】的更多相关文章

osg::ref_ptr<osg::Node> OSG_Qt_::operateMatrix() { osg::ref_ptr<osg::Group> group = new osg::Group; osg::ref_ptr<osg::Node> node1 = osgDB::readNodeFile("D:\\参考手册\\BIM\\osg\\tanker.OSGB"); osg::ref_ptr<osg::Node> node2 = o…
osg实例介绍 转自:http://blog.csdn.net/yungis/article/list/1 [原]osgmotionblur例子 该例子演示了运动模糊的效果.一下内容是转自网上的:原理:引用内容对于运动画面,将当前帧画面与上一帧画面进行alpha融合,以产生出残影——运动模糊效果.通过使用累积缓存来完成这项工作.OpenGL提供一个累积缓存,可以用来存储当前指定的颜色缓存里面的内容,并进行一定的运算操作.通过函数glAccum可以对累积缓存进行操作. glAccum介绍如下:引用…
1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Release x64 ------1> Checking Build System1> CMake does not need to re-run because O:/OpenSceneGraph/OpenSceneGraph_3_6_build/CMakeFiles/generate.stamp is up-to-date.1> CMake does not need to re-run because…
osg::Node* createBase(const osg::Vec3& center,float radius) { ; ; *radius; *radius; osg::Vec3 v000(center - osg::Vec3(width*0.5f,height*0.5f,0.0f)); osg::Vec3 dx(osg::Vec3(width/((float)numTilesX),0.0,0.0f)); osg::Vec3 dy(osg::Vec3(0.0f,height/((floa…
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…
//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…
OSG中的HUD 所谓HUD节点,说白了就是无论三维场景中的内容怎么改变,它都能在屏幕上固定位置显示的节点. 实现要点: 关闭光照,不受场景光照影响,所有内容以同一亮度显示 关闭深度测试 调整渲染顺序,使它的内容最后绘制 设定参考贴为绝对型:setReferenceFrame(osg::Transform:ABSOLUTE_RF) 使其不受父节点变换的影响:setMatrix(osg::Matrix::identity()) 使用平行投影,设定虚拟投影窗口的大小,这个窗口的大小决定了后面绘制的图…
OSG动画学习 转自:http://bbs.osgchina.org/forum.php?mod=viewthread&tid=3899&_dsign=2587a6a9 学习动画,看了osganimationskinning这个例子,感觉OSG的动画实现的太灵活了.一个简单的模型节点变换动画过程如下: 1.定义一些变换位置2.定义动画关键帧,包含了时间,位置,旋转等数据这里可以设置受变化作用的节点3.给节点设置一个动画管理器,这个动画管理器是继承自Osg::NodeCallback,所以其…
转自:http://blog.csdn.net/timothyfly/article/details/7826139 osg格式文件中如何处理多个节点共享一个子节点 下面一段程序中,共有三个Group类型根节点:root,grp1和grp2:两个Geode类型节点:geode1和geode2.他们之间的从属关系是:grp1,grp2和geode2是root的孩子,geode1和geode2是grp1的孩子,geode2是grp2的孩子. .osg格式的文件存储像geode2这个的节点时,采用'U…
osg::Shape类 继承自osg::Object类: osg::Shape类是各种内嵌几何体的基类,不但可以用于剔除和碰撞检测,还可用于生成预定义的几何体对象: 常见的内嵌几何体包括: osg::ShapeDrawable类: 派生自osg::Drawable类: 在osg::ShapeDrawable类的构造函数中提供了关联osg::Shape的方法: 同时,因为它继承自osg::Drawable类,所以它的实例需要被添加到叶节点中才能被实例绘制. createTexturedQuadGe…
转自:http://www.cnblogs.com/feixiang-peng/articles/3152754.html 写好了在osg中实时显示中文信息的效果.中间遇到两个问题,一个是中文显示,一个是动态显示.在这过程中会出现程序崩溃的现象,相信做过的人肯定深有体会.其实解决的办法很简单,就是再添加两行代码.一行:setlocale(LC_ALL,".936");是配置中文显示地域化信息,二行:hudText->setDataVariance(osg::Object::DYN…
目录 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 绘制点…
简介 DatabasePager类,也就是常说的数据库分页技术,简单来说,就是在进行数据库查找时,有可能满足条件的数据很多,为了提高相应速度我们进行数据查找时进行分页查找与显示,当点击下一页时才会进行下一次的查找动作.Osg就是把这个原理应用在了三维大场景中,当我们需要加载一个城市级数据时,因为数据量非常大,而我们感兴趣的范围在某一时刻一般都是很小的一部分,所以我们也可以应用数据分页的技术,对大数据进行”分页”查找并显示. 在osg中DatabasePager执行的动作只有一步,就是在每一帧的更…
最简单的顶点数据更新方法是预先获取setVertexArray()所用的数组数据,并对其进行更新.但是对于开启显示列表支持的几何体(这是默认的情况)来说,有一个问题需要特别需要引起注意,即显示列表中的数据不能动态进行修改.任何对于顶点数据的修改都需要销毁和重新建立相应的显示列表.换句话说,由于Drawable::draw()函数在仿真循环中默认使用glcallList()直接调用已编译的显示列表,因而用于实现顶点绑定功能的drawImplementation()函数只有在构建显示列表时被执行一次…
#include <osg/Node> #include <osg/Geometry> #include <osg/Notify> #include <osg/MatrixTransform> #include <osg/Texture2D> #include <osg/DrawPixels> #include <osg/PolygonOffset> #include <osg/Geode> #include…
在很多时候,直接指定纹理坐标是非常不方便的,如曲面纹理坐标,只有少数的曲面(如圆锥.圆柱等)可以在不产生扭曲的情况下映射到平面上,其他的曲面在映射到表面时都会产生一定程度的扭曲.一般而言,曲面表面的曲率越大,纹理所需要的扭曲度就越大.这时,直接指定纹理坐标可能是一件非常困难的事情了. 下面的示例,通过一个纹理坐标生成器(继承自osg::NodeVisitor访问器)遍历模型的所有顶点及法线,然后根据顶点.法线及一定的比例来确定纹理坐标. #include <osgViewer/Viewer>…
osg::Node* createPyramidModel() { // create the root node which will hold the model. osg::Group* root = new osg::Group(); // turn off lighting root->getOrCreateStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF); osg::Geode* pyramidGeode = ne…
DatabasePager加载数据的过程: 多线程 使用DatabasePager加载数据的流程: 左侧的图框表示数据的检索和输入, 中间的白色框表示用于数据存储的内存空间,而右边的图框表示存储数据的输出.此外,蓝色图框表示可以在DatabaseThread线程中完成的工作, 而橙色图框表示由线程之外的函数完成的工作. void DatabasePager::DatabaseThread::run() { OSG_INFO<<_name<<": DatabasePager…
1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake does not need to re-run because O:/OpenSceneGraph/OpenSceneGraph_build/CMakeFiles/generate.stamp is up-to-date.1> CMake does not need to re-run because O:/Ope…
1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake does not need to re-run because O:/OpenSceneGraph/OpenSceneGraph_build/CMakeFiles/generate.stamp is up-to-date.1> CMake does not need to re-run because O:…
void ViewerBase::frame(double simulationTime) { if (_done) return; // OSG_NOTICE<<std::endl<<"CompositeViewer::frame()"<<std::endl<<std::endl; if (_firstFrame) { viewerInit(); if (!isRealized()) { realize(); } _firstFrame…
<osgGA/MatrixManipulator>:No such file or directory 修改为 #include <osgGA/CameraManipulator> osgGA::GUIEventHandler /* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield * * This library is open source and may be redistributed and…
osgAnimation例子的注释的注释 转自:http://www.cnblogs.com/sunliming/archive/2011/12/12/2284995.html #include <osg/Notify> #include <osg/MatrixTransform> #include <osg/PositionAttitudeTransform> #include <osg/Geometry> #include <osg/Geode&g…
osg::Geometry *geometry = geode->getDrawable()->asGeometry();geometry->setDataVariance(osg::Object::DYNAMIC); // 顶点数据 osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>(geometry->getVertexArray()); // 法向量 osg::Vec3Array* normals =…
在VS-Qt-CMake基础上,打开mainwindow.ui,添加一个QWidget,然后在widget上右键-提升,选择SceneViewWidget CMakeLists.txt中添加了OSG相关配置 cmake_minimum_required(VERSION 3.0) SET(PRODUCT_NAME ReadS3C) SET(PRODUCT_HEADER_FILES mainwindow.h SceneViewWidget.h ) SET(PRODUCT_UI_FILES mainw…
看array大神的CookBook后一些感想,在代码上添加了一些注释,也对源码做了一些研读,记录下学习的过程. CookBook中第一个例子就是observer_ptr指针,这个指针和它的名字一样,就是用来观察指针的,可以把它想象成一个观察者,它只观察一个你给他指点的对象,但是不会影响这个对象的创建和销毁,它只是一个旁观者,但是它观察的这个对象要是被销毁了它也会知道并且自己也会被销毁.和osg::ref_ptr不同,osg::ref_ptr是用来管理指针的创建和删除的.如下图: 下面是代码,代码…
1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> Checking Build System1> CMake does not need to re-run because E:/OpenSourceGraph/VirtualPlanetBuilder_0_9_build/CMakeFiles/generate.stamp is up-to-date.1> CMake does not need to re-run…
/* -*-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…
1>------ Rebuild All started: Project: ZERO_CHECK, Configuration: Debug x64 ------1> Checking Build System1> CMake does not need to re-run because E:/OpenSourceGraph/OSG_VS2013/OpenSceneGraph-3.4.0/build_vs201304/CMakeFiles/generate.stamp is up-t…