搜档网
当前位置:搜档网 › OSG拖拽器Dragger简介之一

OSG拖拽器Dragger简介之一

OSG拖拽器Dragger简介之一
OSG拖拽器Dragger简介之一

OSG拖拽器Dragger简介之一——初识Dragger

作者:Simbaforrest邮箱:forrestgump@https://www.sodocs.net/doc/bc10201233.html,

注意:本文基于osg 2.4,参考了其example目录下的osgManipulator例子,引用请注明出处

本人水平有限,任何不妥或谬误敬请指正:)

一、什么是Dragger

Dragger,顾名思义即为拖拽器,可以使得用户通过鼠标交互的方式对场景数据进行操作(如平移,缩放等等)。

这里我们要注意“场景数据”这几个字很关键,这意味着它和我们平时见到的Manipulator如TrackballManipulator不同,Dragger操纵的是数据,这个时候,我们的视点是不会变动的,而Manipulator一般是针对场景相机进行的操纵,所以虽然两者在屏幕显示上有一定的类似,但实际上Manipulator是不会更改场景数据的,这一点我们可以通过一个实验来证明:

1.打开osg自带的example里的osgManipulator例子程序:

D:\OsgChina\OpenSceneGraph\bin>osgmanipulator.exe cow.osg

2.启动后出现如下左图场景

拖动鼠标,这是使用的是Manipulator转动相机,得到右图场景

这时按下空格键,我们发现场景变回到了左图,这说明Manipulator改变的只是相机的位置与姿态而非场景数据(具体原因请参考Manipulator内的home函数)

3.按下Tab键,进入拖拽状态

这时若是在拖拽器(即屏幕中出现的TrackBall)外部拖动鼠标,我们发现场景根本不会变化,因为这时相机的Manipulator操作所需的消息已经被Dragger所截获(这一点从osgManipulator的源码可以看到)并使用,因此Manipulator此时处于屏蔽状态。

现在我们点击TrackBall进行拖拽,将场景进行旋转

4.再次按下Tab键,退出拖拽状态

这时我们再按空格键复位,我们发现场景不再恢复为开始的左图状态,而是保持着我们退出拖拽时的状态了:)

二、如何使用Dragger

这一点具体可见我的代码注释osgManipulator

1.申请一个osgManipulator::CommandManager对象,用于链接dragger和selection

osg::ref_ptr cmdMgr = new

osgManipulator::CommandManager;

2.申请并配置相应dragger对象以及selection对象

osgManipulator::Dragger* dragger = new osgManipulator::TrackballDragger();

dragger-> setupDefaultGeometry();

osgManipulator::Selection* selection = new osgManipulator::Selection;

设置dragger的大小,比如使其比要拖拽的场景稍大一点

float scale = scene->getBound().radius() * 1.6;

dragger->setMatrix(osg::Matrix::scale(scale, scale, scale) *

osg::Matrix::translate(scene->getBound().center()));

将selection对象作为我们需要进行拖拽的场景或部分场景的父节点

selection->addChild(scene);

再将dragger和selection分别添加为场景根节点的子结点

root->addChild(dragger);

root->addChild(selection);

3.通过cmdMgr->connect(*dragger, *selection)将dragger和selection链接,是的后者可

以相应于前者进行变换

cmdMgr->connect(*dragger, *selection);

4.编写GUIEventHandler类,在内部重写handle函数,将消息传入dragger,写自己的

handler时可以借鉴osgManipulator的例子

5.将该handler添加至viewer的handler列表,至此完成了dragger和selection联合使用

的设置,接下来就可以运行viewer进行拖拽啦:)

三、OSG内置Dragger的简介

拖拽器名称及简介效果示意图TabPlaneDragger

平面拖拽器

其边、顶点上都有拖拽点,可以进行某个2D

平面上的缩放以及操作

TabPlaneTrackballDragger

平面轨迹球拖拽器

顾名思义,除了平面拖拽器的功能外,还多了个轨迹球拖拽功能

TrackballDragger

轨迹球拖拽器

这个就是只有旋转的功能,而没有缩放的功能

Translate1DDragger

一维平移拖拽器

显然这个只能在一条线上进行拖拽

Translate2DDragger

二维平移拖拽器

这个就是只能在某个平面上对模型进行拖

动,它与TabPlaneDragger平面拖拽器的区别

在于:前者不能缩放只能平移,后者则两种

操作均可执行

TranslateAxisDragger

三维平移拖拽器

即可在三个轴上进行平移

TabBoxDragger

盒式拖拽器

由6个平面拖拽器构成,可以在各个面上进

行缩放平移

ScaleAxisDragger

None 三维缩放拖拽器

None Scale2DDragger

二维缩放拖拽器

None Scale1DDragger

一维缩放拖拽器

RotateSphereDragger

None 旋转球拖拽器

None RotateCylinderDragger

旋转圆柱拖拽器

OSGEARTH + VS2010 安装

一、准备工作 下载: https://www.sodocs.net/doc/bc10201233.html,/wiki/Downloads 1. CURL (curl-7.21.7.tar.gz): http://curl.haxx.se/download.html 2. GDAL(gdal-1.8.0.tar.gz): https://www.sodocs.net/doc/bc10201233.html,/gdal/wiki/DownloadSource 3. GEOS(geos-3.2.2.tar.bz2):https://www.sodocs.net/doc/bc10201233.html,/geos/ 4. Expat(expat-win32bin-2.0.1.exe): code: https://www.sodocs.net/doc/bc10201233.html,/projects/expat/ exe文件:https://www.sodocs.net/doc/bc10201233.html,/eaglezhao/expat-win32bin-2.0.1.rar 5. libzip(libzip-windows.zip): code:http://nih.at/libzip/ 编译好的包供下载: vs2008: https://www.sodocs.net/doc/bc10201233.html,/trac/osgearth/raw-attachment/wiki/Downloads/libzip-windows.zip vs2010: https://www.sodocs.net/doc/bc10201233.html,/eaglezhao/libzip(vs10).rar 6. OSGEARTH(SVN上下载):svn: https://www.sodocs.net/doc/bc10201233.html,/gwaldron/osgearth.git(目前最新版是osgearth 2.0) 二、安装 1. CURL 使用CMAKE进行配置: 生成.sln后编译即可 编译好后将目录下的include/curl下文件拷到E:\OSG\3rdparty\include\curl ,进行覆盖编译好后将目录下的lib下的libcurl.dll文件拷到E:\OSG\3rdparty\bin ,进行

osgearth,个人笔记

智能指针使用: osg::Geode* geode=new osg::Geode;//新建Geode指针 osg::ref_ptrgeodePtr=geode;//构造一个新的ref_ptr对象,并将Geode指针分配给它。新建Geode对象geode的引用计数值变为1 Osg::ref_ptr geode1=new osg::Geode;//实现上述两句功能,不会产生内存泄露,当ref_ptr的生命周期结束时会自动释放引用对象 结论:①osg中新创建的场景对象建议使用ref_ptr进行内存的分配和管理 ②对于不使用ref_ptr的对象,引用计数值将变的没有意义,并且它无法自动从场景中卸载 ③新建对象作为函数结果返回时,建议使用realease()传递,并尽快引入到别的场景对象中 叶节点Geode 1、OSG 定义了osg::Drawable 类,用于保存要渲染的数据。Drawable 是一个无法直接实例化的虚基类。 OSG 核心库从Drawable 派生出三个子类:①osg::DrawPixels,封装了glDrawPixels()的相关功能;②osg::ShapeDrawable,提供了一些已经定义好的几何体的使用接口,如圆柱体和球;③osg::Geometry。setVertexArray() ,setColorArray() ,setNormalArray()用户程序可以使用它们来指定顶点数组,颜色,以及法线数据。setVertexArray()和setNormalArray()均使用一个Vec3Array 指针作为输入参数,而setColorArray()使用一个Vec4Array 指针。 官方OSG四个程序: 1 osgViewer模型查看工具 osgViewer是这四个程序当中用的最多的OSG程序,代码也非常入门与浅显易懂,在开始->运行->CMD中就可以直接启动osgViewer,因为path中添加了它的路径。下面来看一下osgViewer的功能,如表2.1 表2.1 osgViewer的功能表 命令:注意有的双杠功能 --image 读取纹理文件,比如:osgViewer --image Images/skymap.jpg --dem 以高程图的形式渲染一个镜像/DEM 比如osgViewer --dem a.img -h或--help 命令行参数功能帮助 --help-env 所有可用的环境变量帮助 --help-keys 所有可用键帮助 --help-all 展示所有帮助信息 --SingleThreaded 为viewer选择单线程模式 --CullDrawThreadPerContext 为viewer选择CullDrawThreadPerContext线程模式 --DrawThreadPerContext 为viewer选择DrawThreadPerContext线程模式 --CullThreadPerCameraDrawThreadPerContext 为viewer选择—CullThreadPerCameraDrawThreadPerContext线程模式

这是个人在学习osgEarth时根据体会或从别的地方看到的做

这是个人在学习osgEarth时根据体会或从别的地方看到的做的一个简单整理,有些东东就是官方文档翻译过来的,都是根据自己的需要感觉需要记录下来什么东西就随便记录下来了,也没有个条理,都是用到哪记到哪,别见怪。对个人在初期使用osgEarth时有很多帮助,所以特发上来,希望对大家也有帮助osgEarth学习笔记1. 通过earth文件创建图层时,可以指定多个影像数据源和多个高程数据源,数据源的顺序决定渲染顺序,在earth文件中处于最前的在渲染时处于最底层渲染;所以如果有高低精度不同的影响数据或者高程数据,在创建earth 文件时要将粗精度的数据放在上方xml节点,高精度的放在其下面的节点;2. osgEarth自带多种驱动器,不同的驱动器驱动不同的数据源,自己也可以扩展驱动器读取相应的数据; 3. 可以通过profile属性指定数据的投影方式或者数据分页方式以及地理空间延展;osgEarth通过profile创建数据四叉树,每个四叉树节点数据瓦片通过TileKey类来标示;一个地形数据能否正常工作要看创建它的驱动器是否能够创建和对应profile兼容的数据瓦片;比如,如果要生成地球数据,就需要指定global-geodetic 或者global-mercator profile,相应的数据源要能够在这种profile下生成相应的地形数据; 4. 通过earth文件,最基本的也是最主要的功能是我们可以指定生成地形的坐标属性(地理坐标或投影坐标)影像数据、高程数据、矢量数据、模型数据、以及缓冲位置,通过这些基本要

素就可以轻易生成我们想要的地形;5. osgEarth只能使用16或32位的高程数据源;6. 如果直接使用原始的影像、高程以及矢量数据,可以用GDAL驱动器,在这种情况下需要注意几个性能的问题。第一,将数据源预先进行坐标变换,变换为目标地形坐标,否则osgEarth会对源数据进行坐标投影变换,这将降低数据的加载及处理速度。如果预先已经将数据源进行正确的坐标变换,osgEarth就可以省略这个步骤,从而提高其实时处理速度;第二,预先对影像数据进行瓦片处理,比如tiff格式的影像数据,它是逐行扫描存储的,而osgEarth是每次读取一个瓦片数据,如果预先对影像数据进行瓦片处理,在动态过程中osgEarth就不需要每次读取整个大块影像数据然后提取其需要的瓦片数据,而可以直接读取相应的瓦片数据即可,这样就大大提高了瓦片数据的读取速度。可以通过gdal_translate 工具对影像数据进行瓦片处理;第三,创建金字塔数据集可以使osgEarth读取数据更加高效,可以用gdaladdo工具创建金字塔数据集;总之,要想提高osgEarth的处理效率,就要预先创建高效的数据瓦片结构,除了用gdal、vpb等工具外,也可以通过osgEarth的数据缓冲机制创建预处理的瓦片数据集。比如我们可以创建一个如下的earth文件将数据缓冲到指定的目录:map name=bluemarble type=geocentric version=2 !--Add a reference to the image -- image name=bluemarble

OSGEarth学习

第一章OSGEarth学习 这是个人在学习osgEarth时根据体会或从别的地方看到的做的一个简单整理,有些东东就是官方文档翻译过来的,都是根据自己的需要感觉需要记录下来什么东西就随便记录下来了,也没有个条理,都是用到哪记到哪,别见怪。对个人在初期使用osgEarth时有很多帮助,所以特发上来,希望对大家也有帮助osgEarth学习笔记 1. 通过earth文件创建图层时,可以指定多个影像数据源和多个高程数据源,数据源的顺序决定渲染顺序,在earth文件中处于最前的在渲染时处于最底层渲染;所以如果有高低精度不同的影响数据或者高程数据,在创建earth文件时要将粗精度的数据放在上方xml节点,高精度的放在其下面的节点; 2. osgEarth自带多种驱动器,不同的驱动器驱动不同的数据源,自己也可以扩展驱动器读取相应的数据; 3. 可以通过profile属性指定数据的投影方式或者数据分页方式以及地理空间延展;osgEarth通过profile创建数据四叉树,每个四叉树节点数据瓦片通过TileKey类来标示;一个地形数据能否正常工作要看创建它的驱动器是否能够创建和对应profile兼容的数据瓦片;比如,如果要生成地球数据,就需要指定global-geodetic 或者global-mercator profile,相应的数据源要能够在这种profile下生成相应的地形数据; 4. 通过earth文件,最基本的也是最主要的功能是我们可以指定生成地形的坐标属性(地理坐标或投影坐标)影像数据、高程数据、矢量数据、模型数据、以及缓冲位置,通过这些基本要素就可以轻易生成我们想要的地形; 5. osgEarth只能使用16或32位的高程数据源; 6. 如果直接使用原始的影像、高程以及矢量数据,可以用GDAL驱动器,在这种情况下需要注意几个性能的问题。第一,将数据源预先进行坐标变换,变换为目标地形坐标,否则osgEarth会对源数据进行坐标投影变换,这将降低数据的加载及处理速度。如果预先已经将数据源进行正确的坐标变换,osgEarth 就可以省略这个步骤,从而提高其实时处理速度;第二,预先对影像数据进行瓦片处理,比如tiff格式的影像数据,它是逐行扫描存储的,而osgEarth是每次读取一个瓦片数据,如果预先对影像数据进行瓦片处理,在动态过程中osgEarth就不需要每次读取整个大块影像数据然后提取其需要的瓦片数据,而可以直接读取相应的瓦片数据即可,这样就大大提高了瓦片数据的读取速度。可以通过gdal_translate工具对影像数据进行瓦片处理;第三,创建金字塔数据集可以使osgEarth读取数据更加高效,可以用gdaladdo工具创建金字塔数据集;总之,要想提高osgEarth的处理效率,就要预先创建高效的数据瓦片结构,除了用gdal、vpb等工具外,也可以通过osgEarth的数据缓冲机制创建预处理的瓦片数据集。比如我们可以创建一个如下的earth 文件将数据缓冲到指定的目录: c:/data/bluemarble.tif c:/osgearth_cache

osgEarth编译

以下文档是osg和osgearth的编译过程,系统要求如下: 操作系统:win7 home basic x64 编译器:vs2010 〇前言 本文档编译成功后会形成4个目录,分别为: 1Open Scene Graph, C:\Open Scene Graph 2OpenSceneGraph, C:\OpenSceneGraph 3OSG, D:\OSG 4osgEarth, D:\osgEarth 第一个存放osg软件,用于只使用osg软件用。文件夹大小199M 第二个存放osg+osgearth软件,用于使用osgearth和osg用。文件夹大小626M 第三个存放osg编译过程文件,用于对osg软件升级开发用。文件夹大小3.6G 第四个存放osgEarth编译过程文件,用于对osgEarth软件升级开发用。文件夹大小2.54G 先编译 一osg编译 1.1 文件目录构建 第一步:我们在D盘编译OSG,首先建立一个文件夹:D:\OSG; 第二步:把源代码拷贝进OSG文件夹:D:\OSG\OpenSceneGraph-3.0.1 第三步:把3rdParty第三方库拷贝到OSG文件夹:D:\OSG\3rdParty 第四步:重新组织3rdParty,把x86文件夹中的内容拷贝到3rdParty中,把x86,x64删除。 如下图所示: 第五步:把数据文件Data拷贝到OSG文件夹:D:\OSG\Data 通过以上五步,所需准备完毕,文件目录组织情况如下:

1.2 Qt和wxWidgets安装 下载qt和wxWidgets安装文件:qt-win-opensource-4.8.4-vs2010.exe和wxMSW-2.8.12-Setup.exe,如图所示: 1.3 cmake设置 第一步:把cmake程序拷贝到C盘,C:\cmake-2.8.11-win32-x86 第二步:打开cmake程序 第三步:直接在source code文本框中输入D:/OSG/OpenSceneGraph-3.0.1 第四步:在OSG文件夹中建立Build目录,用于存放编译工程文件 第五步:直接在build the binaries文本框中输入D:/OSG/Build

osgearth学习文档

osgEarth::Drivers::TMSOptions Class Reference 通过程序加载数据 赶紧进入正题,程序加载各种数据,首先介绍一下总体的方式 /*这里XXXOptions 是根据不同的数据类型选择不同驱动,比如加载本地数据可以使用GDALOptions ,加载TMS数据可以使用TMSOptions(注意TMSOptions可以加载本地也可以加载网上数据),WMSOptions可以加载网上数据(注意这个options主要加载影像和图片数据),ArcGISOptions加载ArcGIS Server发布数据。*/ osgEarth::Drivers::XXXOptions XXXLayer; /*这里就是加载的数据路径,如果加载的本地数据就是本地数据的路径,如果加载是网上数据就是相应的网址*/ XXXLayer.url()=osgEarth::URI("................................."); /*加载的数据是分层管理,每加载进来一个数据在earth上就是一个数据层,这里给数据层付个名字。*/ std::string LayerName="earth"; /*osgearth里layer主要有三种类型ImageLayer、ElevationLayer和ModleLayer ,前两个大家从字面就可以知道第一个是加载影像和第二个是加载高程数据的,第三个是主要用来加载shp数据,至少我是这样用的,不知道还能否加载其他数据类型。确定加载用的驱动、数据源位置(路径)、数据层名和初始化了数据层,接下来就是把数据层加到地球中如下所示。*/ osg::ref_ptr layer =new osgEarth::XXXLayer(osgEarth::XXXLayerOptions(LayerName,XXXLayer)); m_pMap->addImageLayer(layer.get());

osgEarth数据加载及组织解析

osgEarth数据加载及组织解析 1.osgEarth的数据加载流程 由前文可知,用户可以使用osgEarth自己的earth文件,简单指定各种数据源,而不用关心数据如何渲染,便能在三维球上显示各种地形数据。本节,将会解读osgEarth如何解析earth 文件,利用用户提供的数据源,来构建三维球上的各种地形。 图3.1所示是加载数据的整体流程,本节将就这四个步骤进行具体的解读。 图3.1 osgEarth数据加载整体流程 1.1 读取earth文件 osgEarth继承了OSG的插件机制,所以osgEarth提供了专门读取earth文件的osgdb_earth 插件。通过查找并调用此插件,达到读取earh文件的目的。图3.2展示了查找读取earth插件的具体流程:

图3.2 查找读取earth插件的具体流程 这个具体流程展示了osgEarth如何找到读取earth的插件——osgdb_earth.dll。这个流程其实也是osg插件机制中的具体流程,主要在read函数中根据文件后缀名查找读写插件,查找策略见前文2.1.3的OSG插件机制,找到插件后便根据文件名构建ReadNodeFunctor的仿函数,然后调用doRead()函数来具体读取。 无论读取earth文件,还是读取影像数据、高程数据或一般的文字,都是这样一个流程,通过找到具体插件后调用插件里的doRead函数。 在osgdb_earth中,主要就是将earth文件中的内容转换成后面构造map需要的conf对象。图3.3展示了一个包含标签比较全面的earth文件,图3.4为转换后的conf结果结构图:

OSGEarth编译与测试

第一章OSGEarth编译与测试 2.1 OSGEarth编译 第一步:配置系统环境变量。 新设置OSG_FILE_PATH变量,值为E:\OSGearth\OSGEARTH\data; E:\OSGearth\GDAL\data; 向PATH添加值: E:\OSGearth\3rdParty\bin; E:\OSGearth\OSGEARTH\bin\Debug; E:\OSGearth\OSGEARTH\bin\Release; 第二步:使用“生成”->“批生产”,选择all_build(debug|win32和release|win32)进行生成。 在编译过程中存在4个文件无法编译成功,但是不影响正常的测试。 第三步:修改这些错误。 上述错误的问题主要出现在 E:\osgearth\osgearth\src\applications\osgearth_imageoverlay\osgearth_imageoverlay.cpp文件的36-39行。

原因是OSG_MIN_VERSION_REQUIRED(2,9,6)限制了osg的版本。本文使用了v3.0.1版,因此需要添加需要添加ImageOverlayEditor文件。 (目前还没有解决) 2.2 OSGEarth测试 测试release版本: 1.打开cmd窗口,进入E:\osgearth\osgearth\vs2010\bin\Release; 2.输入命令:osgearth_viewer.exe E:\osgearth\osgearth\tests\gdal_tiff.earth;会出现一个提示 3.复制所需的dll到E:\osgearth\osgearth\vs2010\bin\Release文件夹中。可能需要重复好多次。 4.测试成功会出现下面界面:

osgEarth加载谷歌卫星地图的源码案例

osgEarth加载谷歌卫星地图的源码案例 2014-12-24 11:51 242人阅读评论(0) 收藏举报osgEarth谷歌卫星地图 一、准备工作 安装水经注万能地图下载器,如果没有安装本软件,可以百度“水经注软件”到官方网站下载。 编译OSG、OSGEarth和第三方插件等,这里有一个已经编译好的vs2010+osgearth,下载地址 “https://www.sodocs.net/doc/bc10201233.html,/share/link?shareid=107009& uk=2801833827”。 二、下载地图 首先需要把谷歌卫星地图下载下来,这里以“郫县”为例。 启动水经注万能地图下载器,点击“框选下载区域”,双击下载区域,选择级数,如下图。 image001.jpg(269.3 KB, 下载次数: 0) 下载附件保存到相册 2014-12-23 16:01 上传 在级别列表中,你可以选择任何级别,但一般来讲城区选择19级,郊区选择16级比理想,但选择级别之前,最好在在线地图浏览中先查看所想要下载的级别是否有数据,这里我们以10级为例。选择好级别后,点击确定开始下载。 下载完成后会弹出对话框询问是否要立即导出,选择“是”,然后显示“导出图片数据”对话框,如下图所示。

在该对话框中,不需要作任何设置,点击“输出”按钮以默认参数导出数据即可。默认导出路径为“D:\SGDownload\tt1_拼接[默认]\L10”。 三、VS2010创建应用程序 解压编译包后还不能直接使用,需要设置环境变量: OSG_ROOT X:\OSG OSG_FILE_PATH %OSG_ROOT%\data OSG_WINDOW 600 15 800 800 Path %OSG_ROOT%\bin;

osgearth记录文本(编辑)

osgEarth学习笔记 这是个人在学习osgEarth时根据体会或从别的地方看到的做的一个简单整理,有些东东就是官方文档翻译过来的,都是根据自己的需要感觉需要记录下来什么东西就随便记录下来了,也没有个条理,都是用到哪记到哪,别见怪。对个人在初期使用osgEarth时有很多帮助,所以特发上来,希望对大家也有帮助 osgEarth学习笔记 1. 通过earth文件创建图层时,可以指定多个影像数据源和多个高程数据源,数据源的顺序决定渲染顺序,在earth文件中处于最前的在渲染时处于最底层渲染;所以如果有高低精度不同的影响数据或者高程数据,在创建earth文件时要将粗精度的数据放在上方xml节点,高精度的放在其下面的节点; 2. osgEarth自带多种驱动器,不同的驱动器驱动不同的数据源,自己也可以扩展驱动器读取相应的数据; 3. 可以通过profile属性指定数据的投影方式或者数据分页方式以及地理空间延展;osgEarth通过profile创建数据四叉树,每个四叉树节点数据瓦片通过TileKey类来标示;一个地形数据能否正常工作要看创建它的驱动器是否能够创建和对应profile兼容的数据瓦片;比如,如果要生成地球数据,就需要指定global-geodetic 或者global-mercator profile,相应的数据源要能够在这种profile下生成相应的地形数据; 4.通过earth文件,最基本的也是最主要的功能是我们可以指定生成地形的坐标属性(地理坐标或投影坐标)影像数据、高程数据、矢量数据、模型数据、以及缓冲位置,通过这些基本要素就可以轻易生成我们想要的地形; 5. osgEarth只能使用16或32位的高程数据源;

osg和osgearth编译

Ubuntu12.04下osg,osgearth编译全步骤 1.安装文件夹拷贝到/home目录下 2.su -命令切换到root,然后检测Linux环境是否是Linux64位 3.检测ffmpeg是否存在,若存在则移除ffmpeg 4.检测QT是否存在,若存在则移除QT

删除QT 5.更新源和直接用命令安装其他依赖的软件 更新源: apt-get update -y apt-get upgrade -y 安装依赖软件: apt-get install gcc –y

apt-get install g++ -y apt-get install yasm–y apt-get install cmake–y apt-get install cmake-gui–y apt-get install curses-gui–y apt-get install cmake-curses-gui–y apt-get build-depopenscenegraph–y

apt-get install libboost1.48-all-dev –y apt-get install gtk-2.0 –y apt-get install libgtkglext1-dev –y

6.修复boost头文件位置 cp–r /usr/include/boost /usr/local/include/ 7.安装QT 进入qt安装包所在目录,开始安装 配置环境变量: (1)gedit/etc/profile 打开配置文件,在末尾中添加: OSG_FILE_PATH=/home/GeoVisEnvironmentUbuntu/osg/OpenSceneGraph-Data-3.0.0 QTDIR=/opt/Qt5.4.0/5.4/gcc_64 PATH=/opt/Qt5.4.0/Tools/QtCreator/bin:$QTDIR/bin:$PATH export OSG_FILE_PATH export QTDIR export PATH (2)gedit/etc/ld.so.conf.d/libc.conf,在末尾添加:

osgearth论坛问题集锦

刚接触osgearth,想请教大家:怎么获取osgearth支持的影像数据到本地,包括一些层级不高的不需要很精确的全球影像和层级较高的较清晰的部分城市的影像(像Google earth 那样有地名的),以.earth文件中读取本地数据?谢谢大家! 使用osgEarth的缓存插件,设置缓存路径就可以了 这个方法知道,但不知道从哪可以获取到符合要求(类似Google earth 有位置标签)的影像数据。 可以用谷歌地图下载器下载,然后使用GDAL插件加载 可以用GDAL插件加载吗?好像不行哎,你试验成功过嚒? 得修改GDAL插件? 图片是没有坐标的,所以得人为制定坐标包围盒? 这个看着有些抽象 osgearth在局域网上的配置问题 由于个人电脑不能上外网,所以只能在单位内部网络上自行加载地形和影像数据。在服务器端加载了地形和影像,客户端用.earth文件配置来读取,提示can not initialize TileSource for layer west.tif http://192.168.150/world.tif http://192.168.150/srtm.tif 我在服务器端没有编译gdal。客户端有编译好的gdal。请各位指点一下,谢谢! 建议看一下gdal插件是否支持联网读取tif,大的tif不建议联网读, tms 和vpb的ive使用联网读取比好好 通过gdalOption 读入一块栅格图片,请问如何获得该栅格图片的坐标范围

osgEarth编译总结

首先在osg的编译上有一点记录一下: 1 我们下载的第三方依赖3rdParty_x86_x64 这个文件对于VS2008和VS2010来说可能VS2008的提供库要全一些。 2 对于3rdParty_x86_x64文件夹下的x86和x64来说我们的系统如果是32位的应该就只能选x86 对于x64来说我们两个包都是可以选择的,据说在64位的系统上的32位程序是模拟运行的。如果我们编译时选择直接编译。那最好是选x86那个包。在这次的选择中选择x64包结果编译到osgDB库的时候出现了错误。如果想编译出来的程序只是用于x64 那么可以尝试在x64包的基础上对VS进行相关的设置,应该是不会有很大问题的。下面主要是对osgEarth进行编译 由于osgEarth没有对第三方依赖进行打包,所以我们就不得不自己进行配置相关的依赖。首先下载源码包,我们进入官网https://www.sodocs.net/doc/bc10201233.html,/wiki/Downloads 下载源码简单明了。接下来我们下载第三方依赖: 1 GDAL下载:https://www.sodocs.net/doc/bc10201233.html,/gdal/wiki/DownloadSource 在这里我们选择1.8.1版本,因为在1.9.0版本使用中出现了编译不能通过的情况。当然我们也可以自己将编译过程中出现的问题解决。在这里我们只是为了编译GDAL“不节外生枝” 下面我们来对这个库进行编译: 对于这个版本有两种方法可以编译 1 它里面有两个.sln,使用其中之一编译就行 2 下载完GDAL的源码后,还需要先运行makegdal_gen.bat这个文件,然后打开X:\Program Files\Microsoft Visual Studio\VC98\bin\VCVARS32.BAT,X代表你VS的安装盘.打开后用cd命令切换到你GDAL的目录下执行命令,nmake /f makefile.vc MSVC_VER=1500 BUILD_DEBUG=YES,其中1500代表VS版本2008,当然你也可以进入nmake配置文件修改. 文件编译完成后我们有两种不同的处理方法

相关主题