OSG环境配置指导

OSG环境配置指导
OSG环境配置指导

OSG在VS2008下的配置安装

一、准备工作

下载相关的工具软件:

1,最新版的OSG库:OpenSceneGraph-2.8.2.zip。

2,安装源代码所需要的工具:cmake-2.6.4-win32-x86.zip

3, Windows支持的图像库:3rdParty_Win32Binaries_vc90sp1.zip,因为我用的是vc2008,如果用vc05应该有其它针对的版本

4,数据文件包:OpenSceneGraph-Data-2.8.0.zip

二、编译准备

为了编译的顺利进行,将下载的文件组织如下:

在C盘建立一个OSG的文件夹,然后其他文件如下放置:

C:\OSG\OpenSceneGraph(放置OSG最新库文件)

C:\OSG\3rdParty(放置图像库)

C:\OSG\data(放置OpenSceneGraph-Data-2.8.0.zip的加压数据),主要用于examples 演示

三、用cmake生成Project & Solution files

1,在C:\OSG\OpenSceneGraph下新建两个文件夹,分别命名为build, bin,用于放置编译文件

2,解压cmake-2.6.4,打开bin/CMakeSetup.exe,将C:\OSG\OpenSceneGraph下的CMakeLists.txt拖到界面上,

3,设置where is the source code 为:C:\OSG\OpenSceneGraph

和where to build thebinnaries.为:C:\OSG\OpenSceneGraph\build

4,设置相关的cache value参数,这里主要设置的参数包括:

ACTUAL_3RDPARTY_DIR,:设置为前面的C:\OSG\3rdParty

BUILD_OSG_EXAMPLES :ON,即编译实例

CMAKE_INSTALL_PREFIX:C:/OSG/OpenSceneGraph/bin ,设置编译成功后,相关的库文件存放的地址,切勿忘记

5,点击configure按钮,进行第一次配置

6,第一次配置完成后,将右上角的show advanced values 复选框选择上,将mfc example 设置为on

7,点击configure按钮进行第二次配置,ok按钮变为可用,就可点击ok按钮开始生成

四、在VS下编译库文件

1,到C:\OSG\OpenSceneGraph\build文件夹下打开OpenSceneGraph.sln,选择对于的版本(debug,release)

2,按F7生成,生成完成后,在解决方案栏下找到install工程,点击右键->build

五、设置环境变量

右击我的电脑->属性->高级->环境变量,添加相应的环境变量如下:

用户变量:OSG_FILE_PATH = C:\OSG\data

系统变量path下添加;C:\OSG\OpenSceneGraph\bin\bin ,主要用于dll的调用

六、设置VS

打开VS2008,工具->选项->项目解决方案->VC++目录,分别设置OSG的头文件及库文件包含文件里添加:C:\OSG\OpenSceneGraph\bin\include

库文件添加:C:\OSG\OpenSceneGraph\bin\lib

七、新建OSG项目测试

(1)打开VS2008,创建一个WIN32控制台程序。

(2)注意:请选空项目,在源程序中添加一个新项,添加一个C++文件(cpp)。

(3)在这个CPP文件中输入代码:

#include

#include

int main( int, char ** )

{

osgViewer::Viewer viewer;

viewer.setSceneData( osgDB::readNodeFile( "fountain.osg" ) );

return viewer.run();

}

(4)打开项目属性的链接器,输入里加上:

OpenThreadsd.lib

osgd.lib

osgDBd.lib

osgUtild.lib

osgGAd.lib

osgViewerd.lib

osgTextd.lib

注意:我这里编译的是debug版本,所以编译的库都有的命名为*d.lib,如果是release版本,这里要略做修改。

(5)运行程序,一个喷泉三维效果:

资料参考:

1,https://www.360docs.net/doc/0f17080456.html,/projects/osg/wiki/Support/PlatformSpecifics/ VisualStudio

2, https://www.360docs.net/doc/0f17080456.html,/blog/static/25849015200951911248687/

HumanCAD入门教程翻译 人体建模

HumanCAD? V1.2 入门教程 NexGen人机工程研究公司 6600 Trans 加拿大高速公路 750号公寓 蓬特克莱尔(蒙特利尔),魁北克H9R 4S2 加拿大 电话:5146858593 传真:5146858687 电子邮箱:techsupport@https://www.360docs.net/doc/0f17080456.html, 网址:https://www.360docs.net/doc/0f17080456.html, 最后修订:2008-10-30 未经NexGen人机工程研究公司许可,不得以任何形式任何手段(电子、机械、或其他方式),包括复印和录音与该资料或录音系统有关的文件。 NexGen人机工程研究公司2008保留所有权

导言 本教程提供给您一种快捷简单的资源来向您介绍HumanCAD?的各种功能。通过简化一步一步的指示、解释和说明,你将塑造属于你自己的三维人物,揭露你自己的各种人性化功能和CAD工具。HumanCAD ?可以提供给任何设计师,工程师或人为因素的专业。 第一步,通过本教程熟悉HumanCAD ?的主要功能,按键和屏幕的命令。第二个是介绍了一些应用程序和软件的功能。 本教程的第三步也就是最后一步,是以各种姿势、划线和导入不同的三维物体来创建自己的个性化三维人物,应用和编辑有外部负载的模特儿的身体和执行了一系列的生物力学分析,包括预测和NIOSH (美国职业安全及健康研究所)的计算和模拟。 首先,比如一个常见的被称为“举箱子”的动作(看下图),可以看出本教程是非常的简单。这个例子用一中简单的方法来理解了一些应用HumanCAD ?及其各职能。

目录 HumanCAD?的基本操作原理 (4) 主屏幕的所有相关信息 (5) 菜单选项 (6) HumanCAD?速成教程 (11) 1.1.达到量和视觉锥 (13) 1.2.分析模特儿的视野...................................................................... (14) 1.3.样本人机工程学问题 (16) 1.4. 让我们创建一个模特儿 (18) 1.5.让我们构造和操纵模特儿......................................................... . (19) 1.6. 现在让我们来绘制三维对象 (21) 1.7.将力作用在模特儿身上 (22) 1.8.分析模特儿身上的作用力 (23) 1.9.应该成载多大的重量 (24) 关于NexGen人机工程研究公司 (25)

最长的一帧

最长的一帧 王锐(array) 这是一篇有关OpenSceneGraph源代码的拙劣教程,没有任何能赏心悦目的小例子,也不会贡献出什么企业级的绝密的商业代码,标题也只是个噱头(坏了,没人看了^_^)。 本文写作的目的说来很简单,无非就是想要深入地了解一下,OSG在一帧时间,也就是仿真循环的一个画面当中都做了什么。 对OSG有所了解之后,我们也许可以很快地回答这个问题,正如下面的代码所示:while (!viewer.done()) viewer.frame(); 就这样,用一个循环结构来反复地执行frame()函数,直到done()函数的返回值为true 为止。每一次执行frame()函数就相当于完成了OSG场景渲染的一帧,配置较好的计算机可以达到每秒钟一二百帧的速率,而通常仿真程序顺利运行的最低帧速在15~25帧/秒即可。 很好,看来笔者的机器运行frame()函数通常只需要8~10ms左右,比一眨眼的工夫都要短。那么本文就到此结束吗? 答案当然是否定的,恰恰相反,这篇繁琐且可能错误百出的文字,其目的正是要深入frame()函数,再深入函数中调用的函数……一直挖掘下去,直到我们期待的瑰宝出现;当然也可能是一无所获,只是乐在其中。 这样的探索要到什么时候结束呢?从这短短的10毫秒中引申出来的,无比冗长的一帧,又是多么丰富抑或无聊的内容呢?现在笔者也不知道,也许直到最后也不会明了,不过相信深入源代码的过程就是一种享受,希望读者您也可以同我一起享受这份辛苦与快乐。 源代码版本:OpenSceneGraph 2.6.0;操作系统环境假设为Win32平台。为了保证教程的篇幅不致被过多程序代码所占据,文中会适当地改写和缩编所列出的代码,仅保证其执行效果不变,因此可能与实际源文件的内容有所区别。 由于作者水平和精力所限,本文暂时仅对单视景器(即使用osgViewer::Viewer类)的情形作出介绍。 转载请注明作者和https://www.360docs.net/doc/0f17080456.html, 本文在写作过程中将会用到一些专有名词,它们可能与读者阅读的其它文章中所述有所差异,现列举如下: 场景图形-SceneGraph;场景子树-Subgraph;节点-Node;摄像机-Camera;渲染器-Renderer;窗口-Window;视口-Viewport;场景-Scene;视图-View;视景器-Viewer;漫游器-Manipulator;访问器-Visitor;回调-Callback;事件-Event;更新-Update;筛选-Cull;绘制-Draw。 第一日 好了,在开始第一天的行程之前,请先打开您最惯用的编程工具吧:VisualStudio?CodeBlocks?UltraEdit?SourceInsight?Emacs?Vim?或者只是附件里那个制作低劣的记事本……总之请打开它们,打开OpenSceneGraph-2.6.0的源代码文件夹,打开

OSGEARTH + VS2010 安装

一、准备工作 下载: https://www.360docs.net/doc/0f17080456.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.360docs.net/doc/0f17080456.html,/gdal/wiki/DownloadSource 3. GEOS(geos-3.2.2.tar.bz2):https://www.360docs.net/doc/0f17080456.html,/geos/ 4. Expat(expat-win32bin-2.0.1.exe): code: https://www.360docs.net/doc/0f17080456.html,/projects/expat/ exe文件:https://www.360docs.net/doc/0f17080456.html,/eaglezhao/expat-win32bin-2.0.1.rar 5. libzip(libzip-windows.zip): code:http://nih.at/libzip/ 编译好的包供下载: vs2008: https://www.360docs.net/doc/0f17080456.html,/trac/osgearth/raw-attachment/wiki/Downloads/libzip-windows.zip vs2010: https://www.360docs.net/doc/0f17080456.html,/eaglezhao/libzip(vs10).rar 6. OSGEARTH(SVN上下载):svn: https://www.360docs.net/doc/0f17080456.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 ,进行

OSG(美国海军NPS)教程学习加实践(2)

在编程开始前要认识一下*.tga后缀的文件: TGA格式(Tagged Graphics)是由美国Truevision公司为其显示卡开发的一种图像文件格式,文件后缀为“.tga”,已被国际上的图形、图像工业所接受。 TGA的结构比较简单,属于一种图形、图像数据的通用格式,在多媒体领域有很大影响,是计 算机生成图像向电视转换的一种首选格式。 TGA图像格式最大的特点是可以做出不规则形状的图形、图像文件,一般图形、图像文件都为四方形,若需要有圆形、菱形甚至是缕空的图像文件时,TGA可就派上用场了! TGA格式支持压缩,使用不失真的压缩算法。 在工业设计领域,使用三维软件制作出来的图像可以利用TGA格式的优势,在图像内部生成一个Alpha(通道),这个功能方便了在平面软件中的工作。 ========================================================================== ======== #include #include #include #include #include #include #include #include #include using namespace std; osg::Geode* createPyramid() { osg::Geode* pyramidGeode = new osg::Geode(); osg::Geometry* pyramidGeometry = new osg::Geometry(); pyramidGeode->addDrawable(pyramidGeometry); // 指定顶点 osg::Vec3Array* pyramidVertices = new osg::Vec3Array; pyramidVertices->push_back( osg::Vec3(0, 0, 0) ); // 左前 pyramidVertices->push_back( osg::Vec3(2, 0, 0) ); // 右前 pyramidVertices->push_back( osg::Vec3(2, 2, 0) ); // 右后 pyramidVertices->push_back( osg::Vec3( 0,2, 0) ); // 左后 pyramidVertices->push_back( osg::Vec3( 1, 1,2) ); // 塔尖 // 将顶点数组关联给几何体 pyramidGeometry->setVertexArray( pyramidVertices ); // 根据底面的四个顶点创建底面四边形(QUAD) osg::DrawElementsUInt* pyramidBase =

Contextcapture建模流程修订版V3.0

Contextcapture建模流程 初学篇 1 新建工程 新建工程,设置工程路径 2 导入照片 导入本机照片。如需集群处理,则需要导入网络路径下的照片,详见6.2工程设置:

导入照片 Set downsampling(设置采样率):该参数只会在空三的过程中对照片进行重采样空三,建模时仍旧使用原始分辨率影像。 Check image files...(检查航片完整性):建模失败的时候可以用此功能进行数据完整性检查。 Import positions...(导入POS):导入POS格式如下, a.如果有多个照片组(Photogroup)则必须保证每个照片组中的照片名称唯一,否则会导入失败; b.POS路径必须为英文;

相机参数 每个照片组(Photogroup)都会有一个相机参数,可以在右键菜单中导入或导出相机检校参数(特别对CC4.4以后版本有用)。 3 空中三角测量 3.1常规空三流程 空三参数设置,如第一次使用,则建议直接按照默认参数,只需“下一步”即可,如欲了解其中参数意义则进入如下内容: (1)设置名称,最好根据飞行架次或项目信息进行设置

(2)参与空三的照片,默认使用全部照片。 (3)照片定位或地理参考设置

(4)空三参数设置,通常默认参数即可 a.对于地名拍摄照片,可能会修改“Keypoints density”、“Pair selection mode”、“Component construction mode”三个选项; b.对于航空拍摄照片,通常使用默认参数,如果多个架次且存在航高不一致的情况,则可能会修改“Pair selection mode”、“Component construction mode”两个 选项;(实例:百里峡漂流两个架次航高不一致)

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线程模式

FlightGear2016.4.1+VS2015编译指南

FlightGear2016.4.1+VS2015编译指南 前言:本人之前也看了许多网上的教程,但编译一直出现各种问题(和操作系统位数,第三方库文件版本,VS版本,FlightGear版本都有一定的关系),花了两个星期终于编译成功了。因此整理了教程,希望能对大家有所帮助。 一、编译前准备工作 1、Cmake下载安装:上cmake官网https://https://www.360docs.net/doc/0f17080456.html,/download/下载CMAkE并安装,我用的版本是cmake3.6.3 2、OSG二进制文件下载:(自己编译也可以,但是耗时不说,还容易出现不兼容的问题),可以从官方的编译教程里面下载https://www.360docs.net/doc/0f17080456.html,/Building_using_CMake_-_Windows,如下图所示: 3、第三方库3rdParty及Boost下载:一样的也是从官方的编译教程里面下载(注意若要编译64位的程序要下载3rdParty.x64)https://www.360docs.net/doc/0f17080456.html,/Building_using_CMake_-_Windows,如下图所示:

4、simgear2016.4.1、flightgear2016.4.1源码和fgdata(程序启动时加载的地形、机场、飞机模型文件等都在这里面)下载:链接https://https://www.360docs.net/doc/0f17080456.html,/projects/flightgear/files/release-2016.4/,下载划线的三项,如下图所示: 5、构建编译目录:我在C盘下建立一个根文件夹FlightGear,然后把上面下载的编译所需文件的压缩包都解压到这个文件夹中,并新建两个文件夹:分别重命名为simgear-build和flightgear-build用来存放Cmake生成的可编译文件,如下图所示:(PS:plib和freeglut如果需要的话也可以自己去下载)

这是个人在学习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

OSG虚拟可视化图形开发简介

OSG虚拟可视化图形开发简介 OSG诞生于大概是1997年,可以在osgChina[https://www.360docs.net/doc/0f17080456.html,]上查阅到关于OSG的来龙去脉。笔者使用OSG也已经有三到四年的时间了。当初偶然接触OSG到现在,OSG已经在国内外得到广泛的应用,国内已经有好几家专门使用OSG的公司,他们分布在杭州、西安、深圳以及还有一些我不知道的地方。然而,更让人兴慰的是国内的各重点院校与研究所都已经开始使用OSG。 我做为一直使用OSG做开发的图形工作者,感觉非常兴慰。当每一次在群里或论坛说OSG 又有什么什么消息时,看到很多人说:看来选OSG是选对了,OSG明天更好等等类似的话,我热泪盈框。OSG进入中国已经有七到八年了,在这期间,OSG经历了数次变迁,青丝变白发。使用OSG的开发者从无到有,从草根开发者到成立专门使用OSG的公司。 1.1 OSG简介 1.1.1 OSG的诞生 在1997年时,Don Burns由于喜欢滑翔机运动且对计算机图形学非常熟悉,在LINUX上写了一个控制滑翔机的小引擎,这便是OSG的最初雏形。后来在1998年,Don Burns在滑翔机爱好者邮件列表中遇到了Robert Osfield,对OSG的命运起到了决定性的改变。我们现在在邮件列表中也会经常看到Robert的名字,从98年至今,Robert一直担当OSG开发组长,权衡OSG的各种利弊。有很多人在刚开始接触OSG时感觉到非常痛苦,咋一看一点儿都看不懂,疑是什么鬼怪新语言。其实OSG是语法是标准C++的。您可以登录:https://www.360docs.net/doc/0f17080456.html,/ 与https://www.360docs.net/doc/0f17080456.html,查看关于OSG历史的更多信息。也可以查阅《OSG快速入门指南》[]的第一章的相关章节来获得OSG的发展更详细信息。 1.1.2 OSG在中国 OSG在2000年或更早时候进入的中国,据个人了解,FLMN在2003年接触的OSG,并在2005年创立了VRDEV[https://www.360docs.net/doc/0f17080456.html,]网站。VRDEV是国内OSG爱好者交流的中心,把无数OSG爱好者引入大门。3DVRI[https://www.360docs.net/doc/0f17080456.html,]是基于OSG的VR引擎,在大中院校及公司得到广泛的应用。关于3DVRI的相关案例可以查看osgChina的企业展示版面[https://www.360docs.net/doc/0f17080456.html,/projects/osgChina/enterprise.php]。在今年初二,由FreeSouth牵头,联合国内众多爱好者共同建立了OSG中国官方网站[https://www.360docs.net/doc/0f17080456.html,],以及OSG中国讨论区[https://www.360docs.net/doc/0f17080456.html,],组建了OSG在中国的大本营。 目前在国内使用OSG的大概有上千人,专做OSG相关项目的公司有三到五家。各高校与研究所与仿真相关的实验室等等都在不同程度的在OSG这个方向上投入人力与物力。您可以登录https://www.360docs.net/doc/0f17080456.html,查看OSG国内爱好者使用OSG的历程,也可以登录https://www.360docs.net/doc/0f17080456.html, 来查看最新的讨论。 1.2 如何学习OSG 1.2.1 OSG的书籍 OSG官方出过两本书,一本是《OpenSceneGraph参考手册》[OpenSceneGraph Reference Manuals],这本书有基于1.2与2.20双版本。该书大概成于07年六月左右,当时记得是在五一的时候,我当时正在家中吃饭,朋友通知说出书了。然而就在今天中午,3DVRI的唐先生刚刚打电话来告知喜讯,说他们方才已经购买到了这本书。这是我听到的第一个购买到这本书的相关消息。这本书是一本参考大全,大家应该有不少都看过C语言参考大全,C++参考大全,PowerBuilder参考大全。 换句话说,里面介绍的是函数与函数说明,并不涉及原理的讲述与案例。当然从某种意

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

Contextcapture保姆级教程

Contextcapture保姆级使用教程 初学篇 1 新建工程 新建工程,设置工程路径 2 导入照片 导入本机照片。如需集群处理,则需要导入网络路径下的照片,详见6.2工程设置:

导入照片 Set downsampling(设置采样率):该参数只会在空三的过程中对照片进行重采样空三,建模时仍旧使用原始分辨率影像。 Check image files...(检查航片完整性):建模失败的时候可以用此功能进行数据完整性检查。 Import positions...(导入POS):导入POS格式如下, a.如果有多个照片组(Photogroup)则必须保证每个照片组中的照片名称唯一,否则会导入失败; b.POS路径必须为英文;

相机参数 每个照片组(Photogroup)都会有一个相机参数,可以在右键菜单中导入或导出相机检校参数(特别对CC4.4以后版本有用)。 3 空中三角测量 3.1常规空三流程 空三参数设置,如第一次使用,则建议直接按照默认参数,只需“下一步”即可,如欲了解其中参数意义则进入如下内容: (1)设置名称,最好根据飞行架次或项目信息进行设置

(2)参与空三的照片,默认使用全部照片。 (3)照片定位或地理参考设置

(4)空三参数设置,通常默认参数即可 a.对于地名拍摄照片,可能会修改“Keypoints density”、“Pair selection mode”、“Component construction mode”三个选项; b.对于航空拍摄照片,通常使用默认参数,如果多个架次且存在航高不一致的情况,则可能会修改“Pair selection mode”、“Component construction mode”两个选项;(实例:百里峡漂流两个架次航高不一致)

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结果结构图:

FlightGear2016.3.1+VS2015编译指南v2

参考pdf,FlightGear2.10编译。但是尝试了两个多星期,并未成功,可能是各种版本不匹配问题。但上面这个pdf有指导性意义!!! 主要编译三大块OSG,simgear,flightgear。另外,需要的附加库有boost,3rdparty,openal,plib。 flightgear-data是在编译成功后启动项目时候用。 之后,在win10 64位系统下,下载了网友的3rdparty.x64 - vs2015和OSG-vs2015-x64-debug,然后自己在官网下载了2016.3.1版本的源码以及其他附加库。 环境变量的设置中OSG的路径要设到其文件夹下的/bin中,否则最后运行的时候会找不到某些.dll。环境变量修改后注销即可生效。 如果想完全重新编译,需从OSG源码开始!!!注意:先删除之前的其他Flightgear有关的环境变量。 最重要的事情是,附加的库既不能少也不能多!!!版本匹配,特别是和VS 文编译环境在win10 64位、VS2015 pro。 新建文件夹FlightGear将来放整个项目!我建在了C盘。 一、各种源码包准备 (1)先来准备第三方库 最好是下载附件提供的3rdparty.x64 - vs2015,想自己下也行。方法如下,下载出来的文件会多一点。文本教程写的命名是3rdparty.x64,这个无所谓,自己对应就好。 https://https://www.360docs.net/doc/0f17080456.html,/p/flightgear/windows-3rd- party/ci/master/tree/msvc140/3rdParty.x64/ 这个网站直接下载不好下的话,用Git下载,安装Git,默认安装即可,各种下一步,然后自己建立一个空文件夹。准备clone上面网址的代码用。准备好后,在命令行用git clone 网址这条命令即可将源码克隆下来。目前可以用如下网址,之后可能有更改。 git clone git://https://www.360docs.net/doc/0f17080456.html,/p/flightgear/windows-3rd-party flightgear-windows-3rd-party Windows键+R进入运行,输入cmd后回车,进入命令行,然后输入如下图东西: 自己建的文件夹名可以不命名为clone,随意。克隆出来的文件夹即flightgear-windows-3rd-party

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.360docs.net/doc/0f17080456.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;

osg初级教程

几何体的绘制 概述 本章将介绍一些创建几何体元素的方法。通常我们有这样几种处理几何体的手段:底层手段是使用松散封装的OpenGL基元;中级手段是使用 OpenSceneGraph的基本几何体;高级手段是从文件读入模型。本章教程将主要介绍底层手段的实现方法。这种实现具有很强的灵活性,相应的工作量也比较大。应用于场景图形级别的几何体通常是从文件读入的,因而顶点的跟踪和处理工作将由文件读取插件完成。 背景 下面将对几个常用的类作简要的介绍: ?Geode类 Geode类派生自Node节点类。节点类(包括Geode)可以作为场景图形的叶节点添加。Geode 类的实例可以与任意多个可绘制对象Drawable类相关联。 ?Drawable类 作为可绘制对象基类的Drawable类是一个纯虚类,它有六个派生类。其中Geometry类中可以直接指定顶点数据,或者指定任意数目的几何基元PrimitiveSet类与其关联。 顶点和顶点属性数据(颜色,法线,纹理坐标)是保存在数组中的。多个顶点可以共享同一种颜色,法线和纹理坐标,同时我们还可以使用索引将顶点数组映射给颜色,法线或纹理坐标的数组。 ?PrimitiveSet类 这个类松散地封装了OpenGL的绘图基元,包括点(POINTS),线(LINES),多段线(LINE_STRIP),封闭线(LINE_LOOP),四边形(QUADS),多边形(POLYGON)等。 代码 下面的代码将设置一个用于显示场景的视窗,一个作为场景图形根节点的Group类实例,一个用于记录可绘制对象(Drawable)的几何体节点(Geode),以及一个记录顶点和顶点相关数据的Geometry类实例。本例中我们将渲染一个金字塔的形状。 ... int main() { ... osg::Group* root = new osg::Group(); osg::Geode* pyramidGeode = new osg::Geode(); osg::Geometry* pyramidGeometry = new osg::Geometry();

相关文档
最新文档