osgearth,个人笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能指针使用:
osg::Geode* geode=new osg::Geode;//新建Geode指针
osg::ref_ptr
Osg::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
--dem
-h或--help 命令行参数功能帮助
--help-env 所有可用的环境变量帮助
--help-keys 所有可用键帮助
--help-all 展示所有帮助信息
--SingleThreaded 为viewer选择单线程模式
--CullDrawThreadPerContext 为viewer选择CullDrawThreadPerContext线程模式
--DrawThreadPerContext 为viewer选择DrawThreadPerContext线程模式
--CullThreadPerCameraDrawThreadPerContext 为viewer选择—CullThreadPerCameraDrawThreadPerContext线程模式
想用osgEarth做三维地球浏览器,可是一直都不知道osgEarth具体是做什么的,有关的资料也都是英文的,于是就把osgEarth网站上的内容翻译了一下
osgEarth--所需地形
osgEarth是一个为OSG提供的可升级的地形工具包。创建一个简单的XML文件,用形象化的描述、立体图、矢量数据来指明内容,并将其加载到你所喜爱的OSG应用中。osgEarth支持所有类型的数据、并附带很多例子来帮助你研究和运行。
osgEarth可以很容易部署可升级的地形模型:
∙创建地形模型——无论是在本地电脑,或者动态载入
∙不用书写任何代码便可加载整个地球地形
∙分层描述所形成的高分辨率插入物
∙结合多种描述、立体图和飞行模式下的矢量数据源
∙建立地图块缓存来最大限度的利用性能
∙为多重纹理效果调整图形的不透明度
但是osgEarth不仅仅可以提供地形:
∙在不同的参考坐标系中重新投影数据
∙用长坐标来放置额外的模型
∙可以做快速的交叉测试
∙把新数据合并到现有的VPB数据库中(不用重新生成)
∙可直接访问地形块儿
特定驱动器属性设置,驱动器分为影像/高程驱动器、模型驱动器、特征驱动器、缓冲驱动器以及地形引擎驱动器5大类;
影像/高程驱动器
agglite驱动器,该驱动器将矢量数据栅格化为位图然后然后将其转换为地形瓦片纹理层
ArcGis驱动器
复合驱动器
GDAL驱动器
osg驱动器,直接通过osg的文件读写插件读取相应类型的影响数据或高程
/tilecache驱动器,读取tilecache磁盘缓存数据,通过tilecache工具可以从WMS服务器创建或缓存地图数据到磁盘,然后通过该驱动器进行离线读取。
tileservice驱动器,从NASA服务器读取数据
tms驱动器,通过tms服务的方式读取数据
wms驱动器,通过wms服务的方式读取数据
VPB驱动器,从vpb生成的地形数据库读取相应的影像和高程数据,注意,osgEarth只能读取适用VPB 使用—terrain选项创建的地形数据库。
模型驱动器:
feature_geom驱动器,该驱动器就是将矢量数据创建成几何对象进行渲染
feature_overlay驱动器,该驱动器采用osgSim::OverlayNode将矢量数据作为投影纹理覆盖到地形上。这种覆盖节点的方式对于平面投影坐标模式是很适合的,但对于球体地心。