osgEarth的Earth格式文件说明

Earth 格式文件说明(初学者,请斧正)

地图 Map

MAP是根节点。

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

    <options>
    <image>
    <elevation>
    <model>
    <mask>
    <libraries>
Property Description
name 名字节点,不影响渲染。
type

座标系类型。

geocentric: 画一个椭圆球体。
projected: 渲染“平面”投影贴图。
version 文件版本号。默认为 “2”,这样设置可以加载旧版本文件。

地图选项 Map Options

这些 options选项控制 地图模型以及整个地图渲染过程涉及的参数。

<map>
    <options lighting                 = "true"
             elevation_interpolation  = "bilinear"
             overlay_texture_size     = "4096"
             overlay_blending         = "true"
             overlay_resolution_ratio = "3.0" >

        <profile>
        <proxy>
        <cache>
        <cache_policy>
        <terrain>
属性 描述
lighting 是否允许照明着色器影响贴图
elevation_interpolation

重采样高程源数据时要使用的算法:

nearest: 最近相邻
average: 相邻值平均值
bilinear: 两轴线性插值
triangulate: Interp 遵循三角坡度
overlay_texture_size 设置要用于覆盖的纹理大小(投影纹理)
overlay_blending 覆盖几何体是否在覆盖期间与地形混合(投影纹理)
overlay_resolution_ratio 对于覆盖几何体,是指靠近摄影机的投影纹理的分辨率与远离摄影机的分辨率的比率。增大该值可改善靠近摄影机的外观,同时牺牲更远几何体的外观。注意:如果你使用一个支持侧翻的摄影机操纵器,你可能需要将其设置为1.0;否则你将得到覆盖物!这是一个已知的问题。

地形 选项 Terrain Options

这些选项控制地形曲面的渲染。

<map>
    <options>
        <terrain driver                = "rex"
                 lighting              = "true"
                 min_tile_range_factor = "6"
                 first_lod             = "0"
                 blending              = "false"
                 color                 = "#ffffffff"
                 tile_size             = "17"
                 normalize_edges       = "false"
                 compress_normal_maps  = "false"
                 normal_maps           = "true"
                 min_expiry_frames     = "0"
                 min_expiry_time       = "0" >
属性 说明
driver 要加载的地形引擎插件类型。 默认是“rex”。请参阅“驱动程序”参考指南,了解每个插件的特定属性。
lighting 地形是否接受照明(如果存在)。默认是:true
min_tile_range_factor

最小瓦片范围因子:对于某个大小的瓦片,想要能看到时候的最小距离。例如某个瓦片半径是10KM,这个MTRF因子为7,那么瓦片在大约70公里时候可见。默认是6.0。

first_lod

地形图上将会显示瓦片的最低的级别。如果在更低的 LOD级别上就不会显示瓦片。

blending

Set this to true to enable GL blending on the terrain’s underlying geometry. This lets you make the globe partially transparent. This is handy for seeing underground objects.

这个值设置为true可以让GL渲染地表以下的地理环境,可以让地球变得部分透明,这样就可以方便的看到地下的一些物理。

tile_size

The dimensions of each terrain tile. Each terrain tile will have tile_size X tile_size vertices. Default=17

地形瓦片的尺寸。每个瓦片都将有 tile_size * tile_size个顶点。默认是17。

normalize_edges 沿地形瓦片的边缘计算法线向量,以便从一个瓦片到另一个瓦片的照明会更平滑。默认设置为false
normal_maps

是否生成和使用法线贴图代替几何体法线。法线贴图与照明一起使用,创建的地形会比单独使用三角形表示的分辨率更高。默认值取决于引擎。

compress_normal_maps 是否在将法线贴图发送到GPU之前压缩法线贴图。您必须在OpenSceneGraph 库BUILD时候,内置NVIDIA纹理工具图像处理器插件。默认值为false
min_expiry_frames 地形瓦片在可以考虑过期之前没有看到的帧数。默认值为0
min_expiry_time 地形瓦片在可以考虑过期之前未被剔除的秒数。默认值为0

图层 Image Layer

图层:覆盖在地球几何体上的光栅图像。

<map>
    <image name              = "my image layer"
           driver            = "gdal"
           nodata_image      = "http://readymap.org/nodata.png"
           opacity           = "1.0"
           min_range         = "0"
           max_range         = "100000000"
           attenuation_range = "0"
           min_level         = "0"
           max_level         = "23"
           min_resolution    = "100.0"
           max_resolution    = "0.0"
           max_data_level    = "23"
           enabled           = "true"
           visible           = "true"
           shared            = "false"
           shared_sampler    = "string"
           shared_matrix     = "string"
           coverage          = "false"
           min_filter        = "LINEAR"
           mag_filter        = "LINEAR"
           blend             = "interpolate"
           altitude          = "0"
           texture_compression = "none" >

        <cache_policy>
        <proxy>
属性 说明
name 名字。引擎用不到。
driver 用于为此层创建瓦片的插件。请参阅驱动程序参考指南,了解每个插件的特定属性。
nodata_image

如果数据源没有数据,则用此URI地址的图片。如果osgEarth使用了此图像,则说明数据源没有找到数据。

opacity 图层的不透明度: [0..1].
min_range

到摄像机的最小可见距离(米),如果距离太小了,则不可见。

max_range 到摄像机的最大可见距离(米),如果距离太大了,则不可见。
attenuation_range 向最小范围或最大范围渲染的距离。(文本或图标不支持,仅支持几何图形)
min_level 细节的最小可见级别。
max_level 细节的最大可见级别。
min_resolution 绘制瓦片的最小源数据分辨率。源数据是几个单位,这里每像素就是几个单位。
max_resolution 绘制平铺的最大源数据分辨率。源数据是几个单位,这里每像素就是几个单位。
max_data_level

此图像层可以使用新源数据的最大详细级别。通常驱动会报告这些信息。但你可能回希望自己限制一下。这对于一些没有分辨率限制的驱动程序来说尤其如此,例如光栅化驱动程序(聚集体)。

enabled 是否在地图中包含此图层。您只能在加载时设置它;这只是在地球文件中“注释掉”图层的一种简单方法。
visible 图层是否可见。
shared 为该层生成辅助的专用采样器,以便自定义着色器可以全局访问它。
shared_sampler 对于共享图层,将在GLSL代码中使用的采样器统一名称。
shared_matrix 对于共享图层,将在GLSL代码中使用的纹理矩阵的统一名称,您可以使用该名称访问上面shared_sampler的正确纹理座标。
coverage

指示这是一个覆盖层,即,用特定语义传递离散值的层。例如,“土地利用”层,其中每个像素都有一个值,该值指示该区域是否为草地、沙漠等。将一个层标记为覆盖将禁用任何插值、滤波或压缩,因为这些将损坏GPU上的采样数据值。

min_filter 用于此层的OpenGL纹理缩小过滤器。选项包括:NEAREST, LINEAR, NEAREST_MIPMAP_NEAREST, NEAREST_MIPMIP_LINEAR, LINEAR_MIPMAP_NEAREST, LINEAR_MIPMAP_LINEAR
mag_filter 用于此层的OpenGL纹理放大过滤器。选项同上
texture_compression “auto” 表示自动在GPU上压缩纹理; “none” 禁用. “fastdxt” 使用 FastDXT 算法实时DXT 压缩器
blend

“modulate”将像素与帧缓冲区相乘;“interpolate”基于alpha(def)与帧缓冲区混合

altitude 渲染图层的海拔。可以使用这个参数在地面以上渲染天气或者云层,再比如, 一个视觉助手. 默认是0

高程层 Elevation Layer

高程图层为地形引擎提供高度地图栅格。osgEarth引擎将把所有的高程数据合成一个单一的高度图,并使用它来构建地形图块。

<map>
    <elevation name            = "text"
               driver          = "gdal"
               min_level       = "0"
               max_level       = "23"
               min_resolution  = "100.0"
               max_resolution  = "0.0"
               enabled         = "true"
               offset          = "false"
               nodata_value    = "-32768"
               min_valid_value = "-32768"
               max_valid_value = "32768"
               nodata_policy   = "interpolate" >
属性 说明
name 名字,引擎用不到。
driver 绘图驱动的名字。
min_level 最小可见级别
max_level 最大可见级别
min_resolution 最小分辨率。Minimum source data resolution at which to draw tiles. Value is units per pixel, in the native units of the source data.
max_resolution 最大分辨率。Maximum source data resolution at which to draw tiles. Value is units per pixel, in the native units of the source data.
enabled 是否显示这一层。
offset Indicates that the height values in this layer are relative offsets rather than true terrain height samples.
nodata_policy What to do with “no data” values. Default is “interpolate” which will interpolate neighboring values to fill holes. Set it to “msl” to replace “no data” samples with the current sea level value.
nodata_value 看到这个值就是没有数据。
min_valid_value 如果任何小于此值的,都视为无数据。
max_valid_value 如果任何大于此值的,都视为无数据。

模型层 Model Layer

把3维的模型也作为一个图层来渲染绘制。

<map>
    <model name    = "my model layer"
           driver  = "simple" >
Property Description
name 名字
driver 驱动

模型层还允许您定义剪切蒙版(cut-out mask)。地形引擎将在地形表面上切割一个孔,并与您提供的边界几何图形相匹配。可以使用工具osgearth_boundarygen创建这样的几何体。

如果您有一个外部地形模型,并且希望将其插入到osgEarth地形中,这将非常有用。

模型必须与地形处于同一座标系中。

<map>
    <model ...>
        <mask driver="feature">
            <features driver="ogr">
                ...

蒙版可以接受任何多边形特征作为输入,可以使用内嵌几何图形指定遮罩几何图形:

<features ...>
    <geometry>POLYGON((120 42 0, 121 41 0, 121 40 0))</geometry>

或者,你可以使用shapefile或其他特征数据,这时会使用指定的驱动加载。

请参考 mask.earth 例子。

简况  Profile

告诉osgEarth空间参考系统、地理空间范围和它应该用于渲染瓦片的平铺方案。

<profile srs    = "+proj=utm +zone=17 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"
         vdatum = "egm96"
         xmin   = "560725.500"
         xmax   = "573866.500"
         ymin   = "4385762.500"
         ymax   = "4400705.500"
         num_tiles_wide_at_lod_0 = "1"
         num_tiles_high_at_lod_0 = "1">
Property Description
srs Spatial reference system of the map. This can be a WKT string, an EPSG code, a PROJ4 initialization string, or a stock profile name. Please refer to Spatial References for details.
vdatum Vertical datum of the profile, which describes how to treat Z values. Please refer to Spatial References for details.
xmin, xmax, ymin, ymax Geospatial extent of the map. The units are those defined by the SRS above (usually meters for a projected map, degrees for a geocentric map).
num_tiles_*_at_lod_0 Size of the tile hierarchy’s top-most level. Default is “1” in both directions. (optional)

Cache

为瓦片数据设置缓存.

<cache driver = "filesystem"
       path   = "c:/osgearth_cache" >
Property Description
driver 缓存使用的驱动方式, filesystem 或者 leveldb.
path 相对路径,或者绝对路径,缓存目录或者文件。

CachePolicy

确定“给定元素”与“配置的缓存”交互的策略.

<cache_policy usage="no_cache">
Property Description
usage

缓存策略

read_write: 如果配置就使用。默认值是这个
cache_only: 仅仅从缓存读数据,忽略数据源数据;离线渲染时候有用。
no_cache: 忽略缓存,仅仅从数据源加载。
max_age 单位是秒,早于此值 的缓存都视为超时过期了。

Proxy Settings

Proxy 设置可以让大家设置数据的代理服务器,比如科学上网。

<proxy host     = "hostname"
       port     = "8080"
       username = "jason"
       password = "helloworld" >

这些属性根据字面意思,大家都理解。

Libraries

预先加载某些库.

<libraries>a</libraries>

多个库可以使用分号 ‘;’ 来分隔。

<libraries>a;b;c;d;e</libraries>

在osg库路径中搜索库,库名需要遵循osg nodekit库名约定(后缀加上osg库版本号)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章