World Wind学习总结

来源:百度文库 编辑:神马文学网 时间:2024/04/27 17:14:56
 WW的纹理,DEM数据,及LOD模型

   earth为例:

 

1.地形数据:

    默认浏览器纹理数据存放在\Cache\Earth\Images\NASALandsat Imagery\NLTLandsat7 (VisibleColor),和高程数据一样分层存储,从服务器下载的图像为JPG格式,512*512像素,下载完毕后转换为DDS格式,DTX3压缩,所占空间会增大一倍多,但据说运行时可节约50%内存,下载的临时文件后缀为jpg.tmp,下载出错后会多一个0字节的jpg.txt文件。国界数据存放在Cache\Earth\Boundaries\CountryPolitical Boundaries,为PNG的图片格式,更详细的地界现在只有US的:Cache\Earth\Boundaries\USState Political Boundaries,均为512*512像素的PNG图片转为DDS格式。

2.  DEM数据存放在Cache\Earth\SRTM

3.分层原理:

     以地球360度经度和180度纬度为标准,第一层以36度划分,如下图:

 

    共分为(360/36)*(180/36) =50层,第二层以18度,第三层以9度以次类推。

 

 

    这也是1.41.4.1版本LOD模型的基础四叉树,由于按平面展开层层划分,所以在WW里用到一个row,col的概念,类MathEngine封装了从行、列,到经,纬度值的转换,这也是WW进行纹理贴图的依据划分后的每个方格对应一个1所说的512*512的,对应Level的纹理,有了这些信息,再加上高度值就可以实时渲染三维图像。

4.如何取得高度值:

      在类TerrainAccessor和NltTerrainAccessor封装了通过行列,或者经纬度值读取Cache\Earth\SRTM对应层次BIL文件的高程信息的函数GetElevationAt等直接返回该点的高度值。

5. LOD模型:

   1.3.5以前的版本,使用了VORM算法的LOD模型(类BinaryTriangleTree),地形数据存储在二叉树的数据结构中,对整个地形划分成块后,对每个矩形区域,都对角线连接形成两个两角形,再对每个三角形进行递归分裂,这种模型容易引起数据冗余,渲染和下载了视角以外的地形。

141.4.1版本采用四叉树的数据结构,参照3的图解,Level 0把地球按36度划分成50个区域,第0层的每一块分裂为四个子树,这一层为Level1层,

 

    每个块都有四个子树,包括本身信息,数据定义为:

       public doubleWest;     // 四个方向的平面笛卡尔坐标值

       public double East;

       public double North;

       public double South;

       public Angle CenterLatitude;

       public Angle CenterLongitude;

       public double LatitudeSpan;

       public double LongitudeSpan;

       public int Level;   // 层次Level

       public intRow;    // 行,列

   public int Col;

// 子树

       protected QuadTile northWestChild;

       protected QuadTile southWestChild;

       protected QuadTile northEastChild;

   protected QuadTilesouthEastChild;

   每一块对应当前Level的一个512*512的纹理,每一块的每条边分为40等份(这里是固定不知为何),生成41*4143*43个顶点,再结合高度信息实时绘制。

  由于分层分块的结构,对地形数据的加载和实时渲染时,只需要从服务器下载需要层次,区域的纹理图片、高程信息,还可以对有些图片进行预处理成三维果的图片直接贴图,不需要高程信息。

过渡处理:

    如下图Leveln+1级未下载完未能处理的图片,仍然显示Level n级的效果:

 

 

 

 

分享 阅读评论 收藏(0)转载 打印举报 已投稿到: 排行榜 圈子

转载列表:

转载前一篇:林肯的奋斗后一篇:World Wind学习总结二评论重要提示:警惕虚假中奖信息      光棍节活动火热进行中,不要对象要小浪!      关注每日最热门博客 [发评论]

  • 新浪网友2009-01-21 21:24:39 [举报]

    我在world wind 1.40中加载了3D模型, 显示出来了, 但是一点击Images, 3D模型就被Images图层所覆盖,请问如何避免被覆盖,让其能在Images图层上显示出来? 谢谢!

  • 不大雅之堂2009-12-20 15:47:15 [举报]

    我一个人在家,无聊呀! 看了您的博文,受益非浅!喜欢,顶一下