自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 osgmotionblur例子

该例子演示了运动模糊的效果。一下内容是转自网上的:原理:引用内容对于运动画面,将当前帧画面与上一帧画面进行alpha融合,以产生出残影——运动模糊效果。通过使用累积缓存来完成这项工作。OpenGL提供一个累积缓存,可以用来存储当前指定的颜色缓存里面的内容,并进行一定的运算操作。通过函数glAccum可以对累积缓存进行操作。glAccum介绍如下:引用内容

2013-07-30 23:44:12 1885 1

原创 osgmemorytest例子

osgmemorytest这个例子也从一帧入手。eventTraversal();updateTraversal();renderingTraversals();事件回调、更新回调、渲染。OpenGL是状态机,调整好各个状态,然后绘制几何体。OSG中同理,renderingTraversals中根据每个StateSet绘制Drawable。无论是加载的模型还是自己绘制的几何体,

2013-06-07 23:32:32 1829

原创 关于例子

最近很久没有写文章了,很久没有登录csdn了。最初只是为了一边研究一遍学osg而写的一些体会,没想到有这么多的志同道合的朋友们关注。此时此刻觉得有些感动,osg例子还需要继续下去,专题还需要继续下去。有精力的话,osgearth、osgocean、delta3d真的想一边学习研究一边写下去。有那么多osgChina上的朋友支持,以后有新的例子会在osgChina上发表的,多谢支持!

2013-06-06 23:47:56 1732 1

原创 osgmanipulator例子

这个例子演示了osg中拖拽器的使用,可以控制模型的移动、旋转缩放。createDemoScene函数,如果没有加载模型,默认的创建几个基本几何体,bool fixedSizeInScreen参数决定拖拽器是否固定大小。这个函数里面的代码很简单,创建了几个基本几何体,然后把他们包装上不同的拖拽器,加入到场景中。TabBoxDragger,TabPlaneDragger,Tab

2013-04-27 07:58:37 6866

原创 osglogo例子

在osg中osgGetVersion()获取osg的版本信息。本例子通过Geode和Geometry创建最基本的几何体,实现logo的绘制,不进行详细的研究。里面的地球,通过ShapeDrawable纹理贴图,MatrixTransform的setUpdateCallback(new osg::AnimationPathCallback实现自动的旋转。本例子MyBillboardT

2013-04-23 07:55:50 2122

原创 osglogicop例子

该例子演示了opengl中的glLogicOp功能,指定不同的逻辑运算实现当前颜色和帧缓冲的颜色计算。有以下几种参数GL_CLEAR 0GL_SET 1GL_COPY sGL_COPY_INVERTED ~sGL_NOOP dGL_INVERT ~dGL_AND s & dGL_NAND ~(s & d)GL_OR s | dGL_NOR ~(s | d

2013-04-22 07:36:58 1727

原创 osglightpoint例子

该例子演示了光点的效果,主要应用osgSim库中的LightPoint、LightPointNode、SequenceGroup、BlinkSequence,osgSim库属于仿真库,扩展库。应用osg核心库完成一些指定的效果。因此研究这个例子只需要指定以上这几个类的作用即可。LightPoint是光点类,有如下属性:bool                        _on;

2013-04-19 07:43:24 2323

原创 osglight例子

先列上两个链接介绍osg中的矩阵变换。http://www.cnblogs.com/indif/archive/2011/05/13/2045106.htmlhttp://www.cppblog.com/acmiyou/archive/2009/08/24/94292.htmlopengl中矩阵是列主序,osg中是行主序。个人觉得这样从应用上去考虑原因,opengl是最低层低级的软

2013-04-17 07:54:12 2852

原创 osglauncher例子

该例子通过读取osg.conf文件,把一些图片路径和应用程序路径读取到了Xample里面。通过setupGraph函数把每个图片添加到窗体中,PickHandler继承GUIEventHandler,获取鼠标所选图片对应的应用程序名称,同时更新_updateText(显示图片的名称),单击后运行响应的应用程序。这里用了 system();指定指定的程序。

2013-04-12 07:37:23 1131

原创 osgkeyboardmouse例子

本例子演示了拾取的功能。PickHandler继承GUIEventHandler‘s’键通过CreateModelToSaveVisitor把选中的节点写出。virtual void apply(osg::Node& node)    {        osgFX::Scribe* scribe = dynamic_cast(&node);        if (scr

2013-04-11 07:05:25 1641

原创 osgkeyboard例子

本例子演示了键盘事件,比较简单。通过KeyboardModel类绘制出一个键盘,KeyboardEventHandler继承GUIEventHandler,实现键盘事件的处理。

2013-04-11 06:18:42 1209

原创 osgkdtree例子

本例子演示了KDTree,实际上没什么内容。我们就在这没内容的几行代码中挖一挖。关于KDTree的介绍http://www.cnblogs.com/eyeszjwang/articles/2429382.html,在这里可以看看。我们不研究算法,只研究代码和实现。KDTree为场景的求交提供了一种更加有效率、更加精确的算法。例子中只有一句和KDTree有关的osgDB::Regis

2013-04-09 07:36:45 3426

原创 osgintersection例子

先说一下osgSim库,它提供虚拟仿真效果的节点工具,用于特殊效果。这个例子中涉及到了osgSim::LineOfSight,我们就来看看这个类是干什么,从字面上可知,它是视线、瞄准线。DatabaseCacheReadCallback这个类继承ReadCallback,在相交的测试中,场景可能有PagedLOD,而计算相交过程中,PagedLOD不是精度最高的节点(如地球),这样

2013-04-08 07:55:42 8151

原创 osgimpostor例子

本例子演示了impostor代替节点的应用。以下是转自网上翻译源码的内容:Impostor是一种LOD组节点,它既允许通过子结点到视点的距离来选择相应的子结点,又可以通过到视点的距离来选择图片缓存。Impostor的原理是:通过缓存几何体(realgeometry)的图像,然后在之后的帧内使用该图像代替该几何体。这有点像Billboard,但是, 它是实时更新并与视点的位置相关

2013-04-02 07:17:31 2368 1

原创 osgimagesequence例子

本例子演示了图片的播放createModel创建geometry,createState创建stateset。ImageSequence继承自ImageStream,ImageStream继承自Image,实现图像流的播放控制,ImageSequence可以实现作为纹理贴图时纹理控制。有三种模式enum Mode        {            PRE_LOAD_A

2013-03-27 07:25:24 2330 1

原创 osghud例子

本例子演示了HUD的功能,之前的很多例子都用到了HUD,而且实现HUD有很多的方式。其实HUD也是一个节点,唯一的特别之处就是从一个指定的位置观察这个节点,这个节点一直以平面的方式投到创建的表面,不随着场景和视点的变换而变换。createHUD()这个函数:第一步、创建个相机,它的自节点绘制到这个HUD中。第二步、设置投影矩阵,这个就是投影到场景的屏幕上。第三部、设置相对帧

2013-03-25 07:29:24 3599

原创 osghangglide例子

这个例子主要模拟了飞机视角的操作器,绘制了一些必要的场景。从createModel开始,ClearNode是这样的一个节点,清除颜色和深度缓冲区,并且设置“RenderBin”为-1。(关于RenderBin之前的例子中有说明)通过setRequiresClear设置清除颜色是否可用。这个节点比场景中的其他节点先绘制。在CullVisitor中的CullVisitor::apply(o

2013-03-25 07:02:49 1854 1

原创 osggraphicscost例子

这个例子比较有用,平均了三维场景CPU和GPU的花费。进入GraphicsCostEstimator这个类, CostPair estimateCompileCost(const osg::Geometry* geometry) const { return _geometryEstimator->estimateCompileCost(geometry); }    CostPa

2013-03-24 11:23:19 1186

原创 osggpx例子

首先来看Track这个类,维护了一个TrackSegment集合。TrackSegment维护了一个TrackPoint集合。TrackPoint有经纬高和时间组成,在每一刻能唯一确定位置。readTrack这个函数读取了一个gpx后缀的文件。这个函数中涉及到了osg好些文件操作,osgDB::XmlNode是osg中对xml的处理,返回一个Track。接下来看createTr

2013-03-22 06:50:36 1619

原创 osggeometryshaders例子

SomePoints继承Geometry,绘制了八个点,关闭了光照,设置点的大小为6.然后应用的了shader,添加了"u_anim1"这个变量,并且添加了SineAnimation更新回调。先来看createShader()这个函数,创建Program,添加了顶点着色器、片元着色器和几何着色器。几何着色器介绍: Geometry Shader Tutorials:http://a

2013-03-22 06:16:15 1908

原创 osggeometry例子

本例子演示了绘制不同的几何图元。osg::PrimitiveSet::POINTS对应OpenGL中的GL_POINTS绘制单独的点osg::PrimitiveSet::LINES对应OpenGL中的GL_LINES绘制每两点连接的线osg::PrimitiveSet::LINE_STRIP对应OpenGL中的GL_LINE_STRIP绘制依次连接各点的线osg::Primitiv

2013-03-21 06:59:34 8565

原创 osggeodeme例子

该例子演示了geo这个插件,读取geo后缀的文件,这里不做介绍。

2013-03-21 06:43:15 954

原创 osggameoflife例子

本例子主要内容在GameOfLifePass类中。在穿件Geometry时候createScene,通过golpass->getOutputTexture()绑定了纹理,在主程序run的时候,每一帧之后golpass->flip();        // attach the proper output to view       geomss->setTextureAttri

2013-03-20 08:12:47 1018

原创 osgfxbrowser例子

该例子演示了osgFX特效osgViewer::Viewer::ThreadingModel 设置四种线程模式,每种线程的意思和用途我们之前都有说过,在《最长的一帧》中,有详细的说明。osg::DisplaySettings::instance()->setMinimumNumStencilBits(1);在创建图形上下文之前设置DisplaySettings,对应Traits中的

2013-03-18 07:55:05 2057

原创 osgfpdepth例子

看看这几个handler的作用:StatsHandler统计场景信息(s键)WindowSizeHandler窗体大小操作(f键)ScreenCaptureHandler场景截图(c键)AppState类,应用程序的状态,在构造函数中添加了几个文本显示,并通过Projection节点实现HUD,Projection这个节点以后我们分专题再进行仔细的研究,setRenderBinDe

2013-03-18 06:40:48 1535

原创 osgforest例子

这个例子很长,我们还是要从main函数开始,一点点的研究。ForestTechniqueManager这个类是主要内容,里面有个Tree类和一个Cell类。Tree属性有位置,颜色,长宽和类型。Cell里面管理所有的Tree,并且管理着一颗Cell树状结构。createTerrain函数创建一个地形。createTreeList函数创建了很多的Tree,通过和地形求交获取Tre

2013-03-10 09:54:01 2269

原创 osgfont例子

该例子很简单,运行时候添加simhei.ttf 20黑体20号createOrthoCamera这个函数创建了一个HUD在屏幕的最下面显示文字。geode->addDrawable(createLabel(ss.str(), args[1], *i));添加了文字标签,把命令行的参数传进去,args[1] = simhei.ttf *i=20。然后添加到场景中显示。

2013-03-09 22:15:42 971

原创 osgfadetext例子

这个例子演示了褪色文字createEarth这个函数创建了一个地球节点,球的半径是osg::WGS_84_RADIUS_POLAR,先大概的说一下CoordnateSystemNode这个类,这是一个具有坐标系的节点,里面主要有一个EllipsoidModel,EllipsoidModel就可以理解为一个椭球,定义了长短半轴的椭圆,在这个椭圆中可以进行世界坐标和经纬度坐标转换,而地

2013-03-09 22:02:25 2274 1

原创 osgdrawinstanced例子

该例子属于效果方面的,用的了shader,接下来我们仔细的研究一下。如果要变换geometry一定要 geom->setUseDisplayList( false );    geom->setUseVertexBufferObjects( true );用定点缓冲对象。 osg::BoundingBox bb( -1., -.1, -1., 49., 1., 49. );

2013-03-09 21:43:11 2377

原创 osgdistortion例子

该例子实现了模型放大时,产生变形,模型夸张。主要的功能在setDomeCorrection(viewer, arguments);、 setDomeFaces(viewer, arguments);、createDistortionSubgraph( loadedModel, viewer.getCamera()->getClearColor());这三个函数中。接下来设置了一下光源模

2013-03-08 07:52:54 2523

原创 osgdepthpeeling例子

好久没有写osg的例子了,不知不觉osg已经升级到3.1.4了,本人参考的还是3.0.1。不多说了,继续osg例子之路。camera除了继承自Transform之外,还继承CullSettings,相机除了变换位置外还需要一些本身的设置,这个CullSettings就是剔除的设置,它的子类有Camera、CullStack、SceneView。首先看setComputeNearFa

2013-03-04 21:33:31 3182

原创 osgdepthpartition例子

先来看看ShapeDrawable,这个类继承Drawable,是用来绘制简单的几何体。在Drawable中定义了ref_ptr          _shape;几何体的类型基类,class Sphere;class Box;class Cone;class Cylinder;class Capsule;class InfinitePlane;class Trian

2013-02-01 20:32:02 1995

原创 osgdelaunay例子

本例子演示了delaunay三角网。makedelaunay这个函数演示了创建三角网的方法,DelaunayTriangulator这个类,创建delaunay三角网,DelaunayConstraint是三角网的约束。读取二维纹理,通过getpt这个函数获取点。std::vector pyrlist;    osg::ref_ptr wc; // This example

2013-01-30 07:31:29 2783

原创 osgdatabaserevisions例子

本例子演示了设置文件缓存。首先加载了"http://www.openscenegraph.org/data/earth_bayarea/earth.ive"网络的这个文件,这个是个地球节点,通过VPB生成的,里面通过四叉树和PagedLOD进行管理。可以把这个文件下载到本地,然后转换成osg格式打开,看看里面的内容:CoordinateSystemNode {  name "e

2013-01-29 20:21:59 2847

原创 osgcubemap例子

本例子演示高光立体贴图。看看void create_specular_highlights(osg::Node *node)这个函数:TextureCubeMap继承Texture,Texture继承StateAttribute,是OSG的一个状态属性,一维纹理、二维纹理、三维纹理、立体纹理等都继承Texture。Texture是纯虚类,实现OpenGL的纹理贴图。看看Textur

2013-01-29 07:15:56 2580

原创 osgcopy例子

例子演示了osg中的拷贝,深拷贝和浅拷贝。浅拷贝只拷贝指针,指向同一个内容。深拷贝,指针和所指向的内容都拷贝。拷贝的全部内容都在CopyOp中,看看这个类吧:enum Options        {            SHALLOW_COPY                = 0,        DEEP_COPY_OBJECTS           = 1

2013-01-28 07:45:37 1840

原创 osgcompositeviewer例子

这个例子演示了多视窗的例子。今天我们刨根问底,看看窗体的创建过程中都干了什么。CompositeViewer中多了typedef std::vector > RefViews;实现多view。viewer和compositeviewer都是继承自view。如果命令行是-1,则只增加一个view,并且这个view设置view->setUpViewAcrossAllScreens();

2013-01-27 20:36:50 3797 3

原创 osgcluster例子

该例子演示了osg的场景同步。需要多台电脑操作演示,一台主机,多台从属机器,通过操作主机,实现多台从属机器的同步操作。broadcaster这个类用于主机发送信息。receiver这个类用于从属机器接收信息。里面主要是socket,计算机之间的通讯,就不做研究,只需记住他们的功能。STAND_ALONE表示单机,不参与信息的接收于发送;MASTER主机,发送信息;SLA

2013-01-25 07:53:32 1824 1

原创 osgclip例子

本来自演示了ClipNode。主要的内容都在decorate_with_clip_node中。Clip在OpenGL中是定义裁剪面,然后glEnable,设置使用裁剪,于是在OpenGL的固定管线中就根据指定的裁剪面裁剪。才以上分析我们可以指定,在OSG中Clip属于一种状态,因此,定义裁剪就是设置一个StateSet。OSG中会根据设置了节点StateSet构

2013-01-23 07:56:48 2939

原创 osgcatch例子

本例子是一个小游戏。这个例子有点长,但我们必须一点一点的去研究。看看Character这个类,人物类,人物就需要控制人物左右移动,就需要有生命数,这里还有所接的物体(catchs),这里人物是一个PositionAttitudeTransform,用于控制左右的移动,生命值显示,接住的物体显示用Switch。创建人物的代码: osg::Geometry* geometry = os

2013-01-23 07:10:01 1942

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除