您的位置:首页 > 其它

OSG入门即osgEarth建立一个地球的详细步骤

2014-10-06 15:50 218 查看
OSG入门即osgEarth建立一个地球的详细步骤

转:/article/2091630.html

最近在学习有关osg的知识,刚开始一头雾水,幸好在老师的指导下才茅塞顿开,同时又结合网上的多个资料总结

一下作为一个初学者入门的经验。希望广大初学者少走弯路!

开始osg编程之前要做osg的编译准备,这里作为初学者最好选择简单的方法先熟悉为主。我们先下载一个编译好的VS2010+OSGEarth,注意大家看到这里可能会有许多不解,我当时也是这么认为,待我们一步一步地来实现。

第一步、下载编译包

OSG3.1.4和osgEarth2.3 VC10编译包
下载地址:
http://pan.baidu.com/share/link?shareid=107009&uk=2801833827

第二步、建立目录

在你的硬盘里建立一个目录,我就在E盘建立一个osgearth的目录,并把下载的压缩包复制到E:\osgearth\

中并且解压,解压后发现E:\osgearth\OSG里的文件如下图所示:



第三步、设置环境变量

做为一个初学者我在这一步里遇到了很多麻烦,为了不让大家重蹈覆辙我们这里很详细的介绍。

1、如何设置环境变量

右击我的电脑—>属性 ,如下图所示:



这是点其中的“高级” 选项卡如下图所示:



在完成上述步骤之后会出现下图:



这是在点击下方的“环境变量”选项如下图所示:



这是会出现下图:



2、设置具体环境变量值

我们设置的环境变量值是在系统变量中,



这时我要点击“新建”创建相应的选项,之后出现:



变量名:OSG_ROOT
变量值:E:\osgearth\OSG
这里的变量值是根据你的创建的目录来定,之后确定就好。新建玩着一项后,我们还要用同样的办法新建几个选项如下:
(1) 变量名:OSG_FILE_PATH
变量值:E:\osgearth\OSG\data 注意这里也是根据具体情况定的

(2)变量名: OSG_WINDOW

变量值:600 15 800 800 注意这个值可以固定就用这个无关紧要
完成上述步骤之后接下来的一步有些不同,这次我们不是新建而是编辑其中的选项内容,编辑的选项如下图所示:



从图中可知就是编辑Path选项,选中之后点击下面编辑键,出现下图:



把变量值改成E:\osgearth\OSG\bin即可,注意这里我的是改好的,你们的刚开始可能不一样不要紧的。这些改好之后就点确定就行直到退出环境变量设置。
第四步、设置文件目录属性

打开vs2010新建一个名为osgVR的控制台应用程序,之后进行设置,

设置项目属性,添加包含文件目录和库文件目录

这里仅设置Debug版为例,Release版与此类似

需要注意的是:Debug版此时对于链接器输入lib文件名后缀比Release版多一个字母d,表示debug版,

右击弹出菜单选择“属性”



其中“配置(C)”项说明是对Debug还是Release版,根据需要选择



需要设置三项分别是包含文件目录include、lib库文件目录和链接器





附加依赖项为,其中并没有加入osgEarth相关

[plain] view plaincopy

OpenThreadsd.lib

osgd.lib

osgDBd.lib

osgFXd.lib

osgGAd.lib

osgManipulatord.lib

osgParticled.lib

osgShadowd.lib

osgSimd.lib

osgTerraind.lib

osgTextd.lib

osgUtild.lib

osgViewerd.lib



第五步、编写代码

print?

#include "stdafx.h"

#include <osgViewer/viewer>

#include <osg/Node>

#include <osg/geode>

#include <osg\group>

#include <osgDB/readfile>

#include <osgDB/writefile>

#include <osgUtil\optimizer>

int _tmain(int argc, _TCHAR* argv[])

{

osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer();

osg::ref_ptr<osg::Group> root=new osg::Group();

osg::ref_ptr<osg::Node> node=osgDB::readNodeFile("mymap.earth");

root->addChild(node.get());

osgUtil::Optimizer optimizer;

optimizer.optimize(root.get());

viewer->setSceneData(root.get());

viewer->realize();

viewer->run();

return 0;

}

这个代码编写完之后还要编写mymap.earth文件,这里用NotePad++软件编辑,内容如下:

<map name="MyMap" type="geocentric" version="2">

<image name="bluemarble" driver="gdal">

<url>world.tif</url>

</image>

</map>

编辑好之后把mymap.earth文件复制到你项目所在目录,深度和我的一样即可:E:\vs2010Progam Files\osgVR74\osgVR74,同时也要把world.tif这个tif文件放在和mymap.earth同一级目录下面。

完成这些时就可以编译执行,成果如下所示:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: