查看: 23364|回复: 38

VirtualPlanetBuilder入门简介

[复制链接]

该用户从未签到

发表于 2008-3-2 19:04:36 | 显示全部楼层 |阅读模式
VirtualPlanetBuilder入门简介


注:本文你可以任意转载,不过,请附上作者和出处               
                                                                 ――作者:FlySky



简介

自从OpenSceneGraph2.0后,osgdem已从OSG中移出,作为单独的一个部分VirtualPlanetBuilder来发展。随着VirtualPlanetBuilder的不断发展,最终有可能成为OSG处理地形的等的专用工具。下面先介绍一下VirtualPlanetBuilder:
VirtualPlanetBuilder是一种地形数据库创作工具,是能够阅读各种地理图象和高程数据并建立小面积地形数据库,乃至大规模如整个地球的庞大数据库。 这些数据库可以上传到互联网,并能够提供象在线googleearth一样的风格漫游整个地球的数据库,或保持对本地磁盘高速接入等所需的专业飞行模拟器。 前面所讲的VirtualPlanetBuilder建立的数据库,如果要运行该数据库产生一个可视化的场景,那么你将需要一个基于openscenegraph的应用程序。其实,VirtualPlanetBuilder本身是一个基于openscenegraph实时图形工具箱,它可以创建基于openscenegraph的二进制的最高效率的数据库。如果你的应用程序不是基于openscenegraph,而你要使用OSG中的数据库的话,那么你需要写一个后处理的工具来把该数据库从openscenegraph的格式转换为你自己的格式。 VirtualPlanetBuilder已经从原来的传最初的数据叶生成工具逐渐的完善了,现在它只是其中的一个部分而已!现在官方计划进一步的对它进行扩展和完善,以便有可能创建几十千兆的数据页,并通过网上电脑间的传输来创建他们,让每台参与的工作的电脑一起来创造完整的数据库。 我们也将提供对数据库的支持,以便优化低带宽限制,实现基于web数据库的三维可视化。对未来的发展详情请看:
http://www.openscenegraph.org/pr ... ki/DevelopmentPlans


编译

VirtualPlanetBuilder是基于OSG2.0以上的版本发展的,如果你要想编译VirtualPlanetBuilder的话,所以你用的OSG版本应该是2.0以上的版本,如果不是,请自行下载安装包或者自己编译一下。下面是编译的步骤:

1.下载VirtualPlanetBuilder0.91的源代码,下载地址为:http://www.openscenegraph.org/pr ... .9.1.zip?format=raw     
注:当前的最新版本为VirtualPlanetBuilder0.95需要OSG2.3x以上的版本,编译方法是一样的。(http://www.openscenegraph.org/projects/VirtualPlanetBuilder/ )

2.下载,编译&安装GDAL(http://www.gdal.org/)
set GDAL_INSTALL = true
export OSG_DEPENDENCIES=/home/billgates/my_osg_dependencies

3.作为UNIX用户,首先把Make/dependencies拷一份并且改变GDAL_INSTALL值为真:
set GDAL_INSTALL = true
随后通过改变OSG_DEPENDENCIES其值为你文件夹的绝对路径告诉构建者使用你自己定义的依赖:
export OSG_DEPENDENCIES=/home/billgates/my_osg_dependencies

4.用CMake编译VirtualPlanetBuilder的源代码后,然后用VS编译并执行,最终可得到osgdem.exe。

参数说明

正确编译VirtualPlanetBuilder后,接下来就是如何使用了,首先我来说一下这些参数的含义:

//-d <filename> 指定要处理的高程图   
//-t <filename> 指定要处理的纹理文件
//-m <filename> 指定要处理的模型文件(这条命令行在新的版本中已经删除,不过,可以通过修改源代码修改后使用)   
//-a <archivename> 指定一个所有文件将被写入存档文件,即指定目标文件的文件名   
//-o <outputfile> 指定所产生的数据页的输出文件名   
//-l <numOfLevels> 指定生成模型的LOD等级     
//--image-ext <ext> 指定图像的输出格式,通常的格式有.rgb,.dds,.jp2,.jpeg
//--levels <begin_level> <end_level> 在指定的级别内,这一纹理或者DEM将启用
   //--layer <layer_num> 在指定的某一层,这一纹理将被启用   
//-e <x> <y> <w> <h> 指定产生的模型尺寸范围
//-h or --help 显示帮助信息
//--cs <coordinates system string> 设置源高程图像数据、dem数据以及目标数据的坐标系统,这些坐标系应该是常用的,例如,GDAL/OGR forms, complete WKT, PROJ.4,EPS等
//--wkt <WKT string> 为图或是dem指定wkt坐标系统(in WellKownText form.)     
//--wkt-file <WKT file> 用一个包含WKT坐标系统的文件来完成上面的操作      
//--skirt-ratio <float> 指定裙高的比率(这里涉及到它的拼接方式)   
//--HEIGHT_FIELD 创建HEIGHT_FIELD 高程数据   
//--POLYGONAL 创建POLYGONAL高程数据   
//--LOD 创建LOD数据
//--PagedLOD 创建LOD数据页   
//-v 指定垂直比率(涉及到地形的起伏时,需要设置该参数,默认为1.0)
//--compressed 使用OpenGL RGB压缩图像作为目标单元格图像(这里涉及到的是它的读取调度方式)   
//--compressed 使用OpenGL RGBA压缩目标单元格图像作为目标单元格图像   
//--RGB-16 使用16位RGB图像作为目标单元格图像
//--RGBA-24 使用24位RGBA图像作为目标单元格图像   
//--RGB-16 使用16位RGB图像作为目标单元格图像
//--RGBA-32 使用32位RGBA图像作为目标单元格图像
//--vector 说明输入的数据是一系列的矢量数据   
//-raster 说明输入的数据是一系列的光栅数据,其中默认输入也是如此的
//--max-visible-distance-of-top-level 指定最大视距(这里涉及到它基于视点的四叉树处理数据的方法)   
//--no-terrain-simplification  禁用地形简化   
//--default-color <r,g,b,a> 指定一种默认的地形颜色   
//--radius-to-max-visible-distance-ratio 指定最大的可视距离比率   
//--no-mip-mapping 禁用mip-mapping纹理   
//--mip-mapping-hardware 使用mip-mapping纹理,保证有相应数据在指定位置上。   
//--mip-mapping-imagery 使用mip-mapping纹理,且在图像中产生mipmaps .   
//--max-anisotropy 定义纹理显示级别,默认为1.0
//--bluemarble-east 设定接下来的纹理或dem数据为地球的东半部分
    //--bluemarble-west 设定接下来的纹理或dem数据为地球的西半部分
//--whole-globe 设定接下来的纹理或者dem为地球整个球部分   
//--geocentric 设置以地心为坐标坐标系
//--xx --xt --yy --yt --zz --zt 指定每个像素所指的大小
//--version 显示当前的VPB版本信息
//--version-number 显示当前的VPB版本数字      
//--tile-image-size 指定单片图片大小(涉及分块读入)   
//--tile-terrain-size 指定单片地形大小(涉及四叉树管理模型)   
//--comment 往顶部点的文件加一个注释描述什么的


知道这些参数如何使用后,我们来举几个例子吧,让大家明白如何使用:

一:生成一小块地形

数据下载地址:
http://www.cc.gatech.edu/projects/large_models/ps.html  

Download Elevation Map: 16385  16385 PNG: 188MB
Download Texture Map: 16384  16384 PNG: 268MB

依次使用的命令行是:
gdal_translate ps_height_16k.png ps_height_16k.tif
gdaladdo -r average ps_height_16k.tif 2 4 8 16 32

gdal_translate ps_texture_16k.png ps_texture_16k.tif
gdaladdo -r average ps_texture_16k.tif 2 4 8 16 32

osgdem --xx 10 --yy 10 -t ps_texture_16k.tif --xx 10 --yy 10 -d ps_height_16k.tif -l 6 -v 0.1 -o puget.ive -a pegout.osga
(注: l的值我们通常不设为8或更大的值,那样一般是需要很大的缓存的,当然如果你的机器够牛的话,可以自行选择)

二:生成一个漂亮的小地球

数据下载地址:
ftp://veftp.gsfc.nasa.gov/bluemarble/land_shallow_topo_east.tif
ftp://veftp.gsfc.nasa.gov/bluemarble/land_shallow_topo_west.tif

命令行:osgdem --bluemarble-west -t land_shallow_topo_west.tif --bluemarble-east -t land_shallow_topo_east.tif --geocentric -l 12 -o earth.ive -a earth.osga
运行这个命令行后,我们将很快就能得到一个非常漂亮的小地球,呵呵~

关于VirtualPlanetBuilder

VirtualPlanetBuilder中主要使用了一些地形处理非常关键的技术,例如坐标系转化,分块调度,裙拼接,四叉树管理,多重纹理等,期待有更多的人来研究,同时也期待有更多的人与我交流。以后有时间的话,希望可以写更多的文档给大家参考。由于本人水平有限,文档中可能会有不少的错误,如果发现,请指出,谢谢~~有什么问题的话,可以联系我:
qq: 28492884, OSG地形研究者:49668412
email: zzuxp@163.com

该用户从未签到

 楼主| 发表于 2008-3-3 00:16:07 | 显示全部楼层


以下是基于OSG2.2下,VirtualPlanetBuilder0.91下编译的OSGDEM,发上来供大家参考使用~~~~~~~



osgdem.rar (1.46 MB, 下载次数: 3838)
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-3-3 07:21:22 | 显示全部楼层
    VPB0.95有些毛病,不建议大家使用~~~~
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-3-3 07:22:11 | 显示全部楼层
    VPB0.95非常不稳定,在执行指令时会产生一些莫明其妙的错误,稳定版0.91则没有这回事~

    该用户从未签到

    发表于 2008-3-3 19:18:56 | 显示全部楼层

    回复 楼主 的帖子

    分析的太精辟了。。
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-3-3 19:31:26 | 显示全部楼层
    回楼上:Fly是这方面专家,那是相当精僻

    该用户从未签到

    发表于 2008-3-3 22:35:01 | 显示全部楼层

    建议

    搞一个专家讲堂吧,期待ing

    该用户从未签到

    发表于 2008-3-4 13:55:43 | 显示全部楼层
    非常不错!
    由于涉及gdal的一些命令,顺便把本人整理的gdal和ogr的chm帮助附上供参考..

    lilin_GDAL笔记.rar (222.75 KB, 下载次数: 2860)

    该用户从未签到

    发表于 2008-3-4 14:01:14 | 显示全部楼层

    gdal帮助

    这里是比较完整的英文帮助文件.

    GDAL_OGR.rar (1.8 MB, 下载次数: 3609)

    该用户从未签到

     楼主| 发表于 2008-3-4 16:34:13 | 显示全部楼层
    楼上的GDAL文档很不错呀~~~~~~~~ :) :)

    该用户从未签到

    发表于 2008-4-8 08:58:45 | 显示全部楼层
    非常感谢.......

    该用户从未签到

    发表于 2008-7-2 17:12:32 | 显示全部楼层

    多地形比例尺和多影像分辨率

    如果是多地形比例尺和多影像分辨率应该怎么处理?

    该用户从未签到

     楼主| 发表于 2008-7-2 19:29:10 | 显示全部楼层
    多地形比例尺和多影像分辨率
    如果是多地形比例尺和多影像分辨率应该怎么处理?


    那就直接指定在某一层某一纹理或者DEM将被启用~~~~~~~~

    该用户从未签到

    发表于 2008-10-10 13:16:28 | 显示全部楼层
    楼主的 “命令行:osgdem --bluemarble-west –t land_shallow_topo_west.tif.........”
    有点问题,那个 '–t', 应为 '-t', 格式不对, 如果懒人直接复制命令的话,就惨了。

    该用户从未签到

     楼主| 发表于 2008-10-10 13:19:45 | 显示全部楼层
    楼主的 “命令行:osgdem --bluemarble-west –t land_shallow_topo_west.tif.........”
    有点问题,那个 '–t', 应为 '-t', 格式不对, 如果懒人直接复制命令的话,就惨了。


    已经修正,,当时是中文输入,没仔细看~~~~~如果文中有什么错误,敬请指出,谢谢~~~~~~~

    该用户从未签到

    发表于 2008-12-3 07:30:27 | 显示全部楼层
    楼主有没有基于OSG2.7编译好的VPB? :L :L

    该用户从未签到

     楼主| 发表于 2008-12-3 10:53:43 | 显示全部楼层
    楼主有没有基于OSG2.7编译好的VPB?  


    我有OSG2.6编译好的,,,需要的话,跟我联系~~~~

    该用户从未签到

    发表于 2009-3-25 16:53:51 | 显示全部楼层
    确实是个好东东!

    该用户从未签到

    发表于 2009-12-31 15:50:31 | 显示全部楼层
    好东东呀

    该用户从未签到

    发表于 2010-4-9 13:06:52 | 显示全部楼层
    研究研究!~~~~

    该用户从未签到

    发表于 2010-9-13 18:28:55 | 显示全部楼层
    按照楼主的第一个例子生成了pegout.osga,可是用MFC_OSG_Viewer观看的时候只是一个很模糊的图形。
    没有动态加载的痕迹,pegout.osga有200M,为什么啊?我是新手请指点!

    该用户从未签到

    发表于 2010-9-13 18:45:48 | 显示全部楼层
    楼上有没有拉近看呢,动态调度也是根据视点距离进行的~~

    该用户从未签到

    发表于 2010-9-13 18:49:16 | 显示全部楼层
    拉近啦   没有用

    该用户从未签到

    发表于 2010-9-13 19:11:47 | 显示全部楼层
    楼主,第一个例子是不是生成的只有一个文件 pegout.osga.
    有没有什么附属文件?

    该用户从未签到

    发表于 2010-9-13 19:44:12 | 显示全部楼层
    都不是一个文件啊,有个文件夹,里面是具体的分层数据

    该用户从未签到

    发表于 2010-9-13 21:41:06 | 显示全部楼层
    这个文件夹在什么位置啊?

    该用户从未签到

    发表于 2010-9-13 21:41:33 | 显示全部楼层
    实在是郁闷啊   新手什么都不懂

    该用户从未签到

    发表于 2011-1-5 09:38:33 | 显示全部楼层
    刚入手,什么都不会,学习了!

    该用户从未签到

    发表于 2011-1-5 09:38:44 | 显示全部楼层
    刚入手,什么都不会,学习了!

    该用户从未签到

    发表于 2011-1-12 12:43:36 | 显示全部楼层
    多一些例子
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    OSG中国官方论坛-有您OSG在中国才更好

    网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

    联系我们

    • 工作时间:09:00--18:00
    • 反馈邮箱:1315785073@qq.com
    快速回复 返回顶部 返回列表