查看: 33861|回复: 102

地形DEM的等高程分级色彩渲染

[复制链接]

该用户从未签到

发表于 2013-8-20 13:44:28 | 显示全部楼层 |阅读模式
本帖最后由 VR_user_happy 于 2015-2-5 16:51 编辑

直接用OSG 读取地形文件,和影像文件,创建地形;
并实现不同高度的色彩渲染,结果展示给大家!
原始数据:
cea.tif
cea.jpg
cea.jpg

直接用地形和影像JPG渲染得到的地形:
Dem_heightColor_0.jpg

地形影像同时,做了地形6级分级高程渲染得到结果:(不同颜色代表不同的海拔高度)
Dem_heightColor_1.jpg

Dem_heightColor_3.jpg
图中的牛是我自己加的3D模型,表明参照,其他的模型不受地形颜色分级影响!

再看只做3级分级地形高程的地形实时渲染结果:

Dem_heightColor_6.jpg

是不是对地形的结构看的更清楚了.

自建的数字高程DEM地形工具,实现的高程地形体渲染
Trrn_V_4.jpg

Trrn_V_2.jpg

Trrn_V_1.jpg

Trrn_V_3.jpg

Trrn_v_river_3.jpg

Trrn_v_river_4.jpg

trrn_river_C_1.jpg

trrn_river_C_2.jpg

Trrn_30m_C-01.jpg

Trrn_30m_C-02.jpg

Tr_V_2.jpg

Tr_V_1.jpg

Tr_V_3.jpg

该用户从未签到

 楼主| 发表于 2013-9-29 16:12:56 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-12-10 14:13 编辑

地形工具插件:(含可以写出的地形模型插件)



前面的地形工具没有检查写出的插件是否齐全,现在补上:
上几次写出地形的插件不全,所以可能生成不了*.IVE模型,现在加上!

该用户从未签到

 楼主| 发表于 2013-8-23 11:43:48 | 显示全部楼层
上面是使用的坐标体系是OSG当地的投影坐标体系(PROJECTED coordinate systems)
下面在看使用椭球体的坐标系映射贴图(GEOCENTRIC coordinate systems)模式下地形的显示效果:
   这种模式下系统会自动建立一个地球椭球体坐标系
Terrain_project_1.jpg

Terrain_project_2.jpg

地形会投影到这个地球椭球体表面上

该用户从未签到

发表于 2013-8-23 12:49:44 | 显示全部楼层
赞,顶一个。

该用户从未签到

 楼主| 发表于 2013-8-23 17:05:27 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-8-23 17:10 编辑

正在制作地形编辑器:
目前的可以实现MFC的图形界面地形生成,只有一个图像层的地形生成!
1.可以自由选取地形高程文件
2.贴图纹理也可自由选取(目前只支持一个图像层)
3.可以设置和显示地形的等高程色彩分级,色彩设置用外部文件的方式,可狠容易控制不同高程的显示颜色!
4.可以对某些有问题的高程地形文件做边界校订
界面如下图所示:(哈哈,初级产品,但很实用,自己用很方便生成地形)
不需要分解地图,最终也只生成一个地形模型

MFC界面地型生成器.jpg

以后再加进地形高程掩码处理(地形挖空,呵呵)

下面就给出一个生成的地形cea.ive打包模型

terrain001.rar (399.52 KB, 下载次数: 226)

该用户从未签到

 楼主| 发表于 2013-8-26 13:48:22 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-8-26 13:49 编辑

再给大家展示OSG自己类函数实现的类登高线效果:

ContourLine_1.jpg

其中整数倍的登高线可以自定义不同颜色实现

ContourLine_3.jpg

是不是现实地形的效果更好些了呢?哈哈

该用户从未签到

 楼主| 发表于 2013-8-27 00:52:25 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-8-27 01:29 编辑

通过两种等高线模式,判断地形,地物:
不用等高颜色显示(注意这里是用了边界校订处理过的,否则地形显示会不正常):
Terrain_Cont_org_1.jpg

用高程颜色分级:
Terrain_Cont_color_1.jpg

Terrain_Cont_color_4.jpg

用等高线方式:

Terrain_Cont_Line_2.jpg

出地形上的颜色分区很明显这是个港口市镇:有河流,拦水坝,堤岸,高楼等!
从等高线可看出,高于100米的高楼很多(蓝色为50米登高线)


再给另一个地形看等高色彩分级显示效果:
Ter_Con_color_2.jpg

Ter_Con_color_3.jpg

等高线显示
Ter_Cont_Line_1.jpg

是不是效果很棒!

好了,下面就把高程文件和贴图文件及经过边界校订得到的地形模型文件一起打包,看你能否生成类似的高程地形!
地形高程原始文件2:
ASTGTM_S01E009X_DEM_UTM.rar (4.49 MB, 下载次数: 240)

HeightData.rar

816.09 KB, 下载次数: 124

该用户从未签到

 楼主| 发表于 2013-8-29 18:23:31 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-8-29 18:25 编辑

自己编的地形MFC工具,获取地形高程文件的地理坐标经纬度及相关参数,详见下图:

TerrainTool-1.jpg

目前只是做了地理坐标系的参数显示,对于投影坐标以后再添加

该用户从未签到

发表于 2013-8-31 01:21:24 | 显示全部楼层
很不错!!

该用户从未签到

 楼主| 发表于 2013-9-2 18:36:09 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-9-2 18:47 编辑

自制的地形创建和显示工具:
今天在工具上增加了地形挖空掩码的创建、和地形掩码剔除的功能;
地形效果展示给大家:
用圆形域和矩形域组合挖空:

Terr_Mask-1.jpg

用不同的掩码组合挖空:

Terr_Mask_2.jpg

生成的地形可以自己的需求创建掩码,再进行地形的挖空!

terr_Mask-3.jpg

该用户从未签到

 楼主| 发表于 2013-9-3 09:20:51 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-9-3 10:36 编辑

前面讲的是地形挖空,现在反过来运用———地形的形状截取

不多讲上个图例证:

Terr_Rev_Mask-1.jpg

Terr_Rev_Mask-2.jpg

Terr_Rev_empty_mask_1.jpg

实际上这种截取,就是地形高程数据掩码的反向运用得到的结果

Terr_Mask_tool-1.jpg

把生成的截取的地形打包作为例证:

terrain_Rev_Mask_001.rar (937.7 KB, 下载次数: 57)

该用户从未签到

发表于 2013-9-3 17:14:06 | 显示全部楼层

该用户从未签到

 楼主| 发表于 2013-9-3 22:59:55 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-9-3 23:40 编辑

上次说到高程地形文件的地理坐标系下地经纬度的获取显示,现在把地理坐标转换为投影坐标系下地投影坐标(即常用的经纬度坐标,如:东经103.5度,北纬23.5度)
上图看具体:

Terr_prorerty_Proj-2.jpg

投影坐标系下地正负号表示:
   经度:+表示为“东经”,常用“E”表示;
            -表示为“西经”,常用“W”表示;
  纬度:+表示为“北纬”,常用“N”表示;
           -表示为“南纬”,常用“S”表示;

为了数值传递便利,我在这就不用E、W、N、S表示了


Terr_prorerty_Proj-1.jpg

当然也可以换算得到高程文件某个像素点对应的投影坐标系下地精纬度,这里就不再具体显示了

地形文件名称S01E008L和数据对(7.99970992832435,-0.999890404098145)

看看对比换算的结果还是和地形文件名称相匹配的哟,呵呵!

该用户从未签到

 楼主| 发表于 2013-9-4 12:36:34 | 显示全部楼层
现在谈谈地形的边界处理:
有时候地形文件原始数据并不是全地形域有效:
原始数据来源,国家数据服务平台
高程地形数据:
ASTGTM_N25E118F_DEM_UTM.img
纹理数据:
ASTGTM_N25E118F_DEM_UTM.jpg
现将原始数据打包:
ASTGTM_N25E118F_DEM_UTM.rar (6.04 MB, 下载次数: 69)

该用户从未签到

 楼主| 发表于 2013-9-5 21:25:09 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-9-5 21:47 编辑

下面再谈谈地形的地理位置放置问题:
前面提到过生成地形的2种模式:
一种是:地的投影坐标体系(PROJECTED coordinate systems)
    这种模式下地地形,实际上是把地球的表面当成一个无线大的平面,生成的地形就是直接投影到这个平面坐标,也就是把地球表明的曲面展开成一个平面!
对于小的地区,基本可以不考虑周边环境影响时,只考察区域内的地形形态,就适应用PROJECTED 投影坐标体系。
   第二种模式: 椭球体表明映射坐标系(GEOCENTRIC coordinate systems)
这种模式下生成的地形,就是符合如地球上真实的地形类似的地形。
它考虑了椭球体因素,建立了一个椭球体曲面坐标系,然后把地形放在这个椭球体坐标系的中心位置。
   第一种模式很简单,中规中矩。
  第二种模式比较有地理特质,空间的经纬度等相关!
下面主要讲第二种模式下地形
  先看图,为了表明这种模型特质我把生成的模型经纬度2个方向同时放大1000倍,如下图:

Terrain_GeoCent_02.jpg

Terrain_GeoCent_03.jpg


椭球体曲面很明显
由于拉伸放大的影响,它的高程地形所以不明显

再看没有放大拉伸的

Terrain_GeoCent_04.jpg

Terrain_GeoCent_05.jpg
  

椭球体曲面不明显了,但朝向球心地面还是向内凹的

这种地形实际上已经有了空间形态,但他的中心实际上是原始的直角坐标系的原点(0,0,0) ;
怎样才能放到 真实的地球表面呢?
就需要有
1。建立的椭球体坐标系(这个建立地形对象时是就可以得到)
2。地形中心的经纬度
3.椭球体的参数半径
这些都可以通过对地形高程文件的解析和坐标系转换中获取得到

Terrain_GeoCent_06.jpg

图中的地理信息:
   投影坐标系:UTM Zone 50
                    WGS 84
经纬度坐标:600066.8125,2765331.5(117.99161625298,25.0001604779901)
  地球半径参数 R:6378137

用直角坐标系计算会有一点偏差,但影响不大,最好用椭球体坐标系!

该用户从未签到

 楼主| 发表于 2013-9-6 12:55:07 | 显示全部楼层
本帖最后由 VR_user_happy 于 2013-9-6 13:23 编辑

地形的重采样和高程比例放大:
    地形只有关联了Terrain后,才可很容易的进行高程的重新采样和比例放大

高程比例放大:

Terr_Samp_1.jpg

Terr_Samp_2.jpg


地形重新采样:

Terr_Samp_4.jpg

Terr_Samp_3.jpg

Terr_samp_5.jpg

高程比例缩小及重采样组合:

Terr_samp_6.jpg

Terr_samp_7.jpg

Terr_samp_8.jpg

这种关联到Terrain 对象的做法,主要针对小的地形模型,是比较可行的

如果是个很大的地形,由于重新作高程采样和比例缩放,会耗费额外的内存,而且内存开销很大,就不适用了。
当地形很大事,应该直接引用高程地形对象,对高程文件进行比例缩放和重新采样差值计算,不需要太多的额外内存,这样才比较科学!
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2013-9-9 11:31:13 | 显示全部楼层
    小伙子,我很看好你。

    该用户从未签到

     楼主| 发表于 2013-9-9 12:57:56 | 显示全部楼层
    本帖最后由 VR_user_happy 于 2013-9-9 13:02 编辑

    呵呵,谢谢大家的支持
    现在再说一下高程文件中地形的某个点对应的经纬度和高程:
    1.地形的高程范围:
    这些需要osg对应的插件支持:GDAL和OGR
    这是根据地形最大高程和最小高程值,再设定地形的色彩分级得到的地形,上图:

       Terr_HeigtColor_01.jpg

    根据色彩,可以清晰地判断得出地形形态 :此地形中洋流特征十分明显

    Terrain_Cont_color_02.jpg

    Terrain_Cont_color_03.jpg

    这是用了不同比例的(长宽压缩5倍)色彩分级

    2.地行中的点的经纬度,和高程
    利用插件机制,混合OSG函数功能,就可很容易的得到地形中的某点的经纬度和高程;
    同理,如果你使用的地形是规范化生成的地形对象(terrian),也可反求出对应的高程层中的参数特性,并计算出对应的点经纬度和高程:
      用自己编的地形工具,得到的地形中心点经纬度和地形高程范围,如下图

    Terr_HeightValue-0.jpg

    当然也可计算出地形中任意点的高程和经纬度

    该用户从未签到

     楼主| 发表于 2013-9-9 18:46:29 | 显示全部楼层
    本帖最后由 VR_user_happy 于 2013-9-9 18:53 编辑

    好了,我现在就给大家发一款第一版的地形工具吧:
       比较简陋,单功能还行,目前还不是很完善!
      说明:
           1.目前还不支持中文路径名称,以后再加,按spaceship空格键查看地形模型整体!
           2. 生成的输出地形模型文件:名称与地形高程文件基本一致,后缀为*.ive   ,放在了\HeightData目录下。
           3.\config\目录下,是地形高程分级的20级的颜色数据;你可以更改每一级颜色值;登高线文件,也存放了颜色值和整数高程的倍数,你也可以修改!
          4.大小写V键位地形的顶点高程缩放,大小写R为地形的重新采样!
          5. 小写p键捕捉图片,放在\Mode\texture目录下,图片名称为CaptureView_1为第一张,_2为第二张,只有重新启动程序后,复原为_1。

    TerrainTool_V1-01.jpg
         
    地形工具下载包:
         
    TerrainTool_FreeGragonBird_v01_00_01.rar (5.43 MB, 下载次数: 223)

    该用户从未签到

     楼主| 发表于 2013-9-13 17:18:22 | 显示全部楼层
    本帖最后由 VR_user_happy 于 2013-9-13 17:30 编辑

    好了现在在探讨一下地形的拼接问题:
    1.如果在3D 空间直接用2个地形模型相连摆放,不管怎样,它都是有一定的相邻差异,很多地形可能会存在边界的异样数据,可能导致两个相邻地形连接是会出现异样的空值域(或是没法绘制图元的区域)

    2.怎样才能使得地形很好的拼接呢?
    地形拼接有两个方面:
            一个是高程数据网格地形;
            另一个是图像纹理贴图;
    地形纹理贴图其实如果使用地形合并形成一个模型,这个纹理,其实可以手工在PHOTOSHOP中很容易的实现。
    但是地形网格高程数据合并就是个关键的难点了!
    下面就讲讲高程数据网格地形:
    高程数据网格地形的合并:
         首先,要将两个网格点统一归一化;
         其次,需要高程数据的融合。

    下面就把我自己编写的工具实现高程地形的合并结果给大家展示一下:
        工具的界面MFC:
            
    Terr_Merge_0.jpg

    如果直接相邻连接,如果不进行相邻边界处理,如果两个相邻高程本身文件地形匹配对应较好,就不会存在地形边界问题。
    但很多情况下并不完整,这就需要边界处理:

    Terr_Merge_1.jpg

    上图是 两个高程地形边界一点也不匹配的地形简单的高程地形合并得到的结果。(可以看到地形中间有一条空的直线把地形分开)
    下面把边界校正加上,看看效果怎样(只做了一次边界修订):部分的边界已经连接成一个整体

    Terr_Merge_3.jpg

    再看做了多次边界修订的结果:

    Terr_Merge_2.jpg

    是不是地形已经没有出现边界中间的空断直线已经消失不见了,这里主要采用了边界均值校正处理。

    下面再谈谈大地形(高精度)的合并问题:

    在作大地形高精度的合并时,如果两个地形单独加载都不会出现异常,但是内存已经接近饱和状态,这样的两个地形合并,一起加载就会出现内存异常崩溃,所以就要考虑对大地形进行比例采样了。

    对地形进行比例采样,适当的降低了数据精度,但仍然能够保持地形的整体形态。地形整合时就先要进行比例采样,降低精度,来满足大地形的合并要求!
    下面就是用自动比例采样实现的大地形合并:

    Terr_Merge_4.jpg

    这是用2个ASTGTM_S01E014W_DEM_UTM.img的30米精度的大地形拼接的地形图,纹理就使用了随便对应的单个地形的纹理,做合并后的纹理。

    当然,如果把合并后的高程文件写出成新的高程地形DEM文件,就可以不断的扩展地形合并了!

    该用户从未签到

     楼主| 发表于 2013-9-14 14:46:12 | 显示全部楼层
    上次的地形工具,没有开放掩码处理功能,现在开放,并开放地形合并工具。
    同时增加大地形的比例采样,及合并高程地形文件的写出。
    地形生成工具(掩码开放,和大地形比例采样开放),如下图:

    TerrainTool-2.jpg

    地形合并工具,暂时只支持高程地形合并,同时可以写出合并高程地形,如下图:

    TerrainTool-3.jpg

    合并后的高程地形文件,可以用高程地形创建打开,生成新的地形,如下图:

    Terr_tool_mer_1.jpg

    Terr_tool_mer_2.jpg

    好了,现在就把工具压缩包发给大家试用,(于前一版的只是EXE文件变化,其他不变)

    地形工具:

    TerrainTool_FreeGragonBird_v01_00_02.rar (5.44 MB, 下载次数: 284)

    该用户从未签到

     楼主| 发表于 2013-9-16 11:59:47 | 显示全部楼层
    本帖最后由 VR_user_happy 于 2013-9-16 17:30 编辑

    对地形工具进行了改进:
      1.增加了创建地形的高程文件写出(有变化的,如边界校订、掩码处理或比例采样);
           这样就可以对边界异常的地形合并时(用边界校订的高程文件),就可以不用再考虑原来的边界问题了。
      2.增加了地形输出的高程文件的写出带投影信息(原来写出的合并文件不带投影信息);
      
      3.纠正了合并文件(由于生成合并地形时行、列高程值相反)造成的地形错误。

    Terr_tool_3.jpg

    下面是纠正后的地形合并(同样在创建单一地形中,也能够对写出的合并高程地形打开操作):

    Terr_Mere_RC_1.jpg


    地形工具:(只发更新的可执行EXE文件,其他的不变可再前面的版本中下载)

    osgTerrianTool_V01_00_03.rar (160.95 KB, 下载次数: 181)

    该用户从未签到

    发表于 2013-9-16 16:50:12 | 显示全部楼层

    该用户从未签到

     楼主| 发表于 2013-9-16 18:09:09 | 显示全部楼层
    本帖最后由 VR_user_happy 于 2013-9-16 18:17 编辑

    本地形工具是用gdal和osg结合开发的:
      
    1. 地形高程文件能够读取的格式
            支持GDAL涉及的的所能支持的所有格式
             带高程和地理信息的(一种特殊的GeoTIFF)    *.tif
            Erdas Imagine (HFA)                               *.img
            美国地质调查局的ASCII DEM / CDED             *.dem
            日本数字高程模型                                     * .mem
               ......

            等等100很多种的光栅格式文件,具体参见:
               
              GDAL光栅格式.rar (14.03 KB, 下载次数: 56)

    该用户从未签到

     楼主| 发表于 2013-9-23 15:29:57 | 显示全部楼层
    本帖最后由 VR_user_happy 于 2013-9-23 15:38 编辑

    地形的Overlay节点覆盖渲染:

    使用osgSim:: overlayNode 节点,可以将某个模型节点的空间影像垂直投影到目标节点上覆盖,有点类似于RTT,单他只是做垂直方向的色彩投影,这个投影可以根随原始投影目标的位置变化而一同更新变化,只要参数设置正确!
    下面就看一下静态使用此类节点,做地形的渲染:

    Terr_overlay_2.jpg

    Terr_overlay_1.jpg

    Terr_overlay_3.jpg

    Terr_overlay_4.jpg

    原始投影节点模型可以是任何形态的空间节点模型

    该用户从未签到

     楼主| 发表于 2013-9-26 13:35:32 | 显示全部楼层
    本帖最后由 VR_user_happy 于 2013-9-26 16:41 编辑

    地形任意形状的截取:
       这里只给大家提供思路,自己实现!
    1.用photoShop,绘制一张只用黑白2色(2种差别很大的颜色也可以)的填充边界差异明显图,这个边界就是用来做任意形状剪裁边界。
           相当于制作界限路径,只是用2个颜色分界实现。

    2.用此影像图生成地形高程网格对象。
        osg自带的例子中可以找到相关的应用(这个是重点之一)

    3.生成的地形网格高程集合对象,由于颜色差值,必定存在两个高程差值悬殊的区块。  通过重新赋值,过滤掉某一色块对应的高程值,并对需要保留的形状的高程设定同一掩码,形成新的高程掩码模板;
        这个区块的像素的大小,要和你需要套取地形的高程文件相匹配,使得两个高程域像素一一对应区域的像素(为以后的叠加做准备)。
        相当于制作一个模板,用来套取地形!(这个是重点之二)

    4,对原来需要做形状截取的地形高程文件,做同样大小的掩码叠加处理,并重新写出新截取出来的高程地形文件。
          就是做套取模板的动作。

    5.绑定纹理图片,   生成输出最终地形。


    6.如果地形过大(这只有在大区域时才会碰到):
        A就要先拆分,并重写地形高程文件为小地形高程文件;
        B并分别建立对应的地形过滤模板掩码;
        C再分别叠加,生成新的形状截取的新的小地形高程文件;
        D最后两两合并,重采样;知道合并生成最终的大地形高程文件;
        E 将最终的高程地形文件与合并后的纹理文件绑定,一同输出!

    现在看补充的任意形状截取地形图片:

    1.准备的2色地形JPG图片(用作边界截取的路径图片):
       
    cea_shape.jpg

    2. 使用不同的地形文件
       同一形状的模板*.JPG 路径文件(但不同的像素大小),对不同地形进行形状的截取

    terr_shapeCut_1.jpg

    terr_shapeCut_2.jpg

    由于比例放大的因素(原始掩码像素宽度小于放大比例时),截取的地形边缘会出现不同程度的锯齿;
    3.本次生成的地形高程掩码模板,没有使用前面说到的OSG自带的高程影像高程地形文件生成,而是采用了读取图片像素色彩值处理的。
         
    4. 当然 再生成的地形掩码,生成反向掩码,就会产生反向的效果

    terr_shapeCut_3.jpg

    边缘是像素斜边比例放大锯齿造成的。

    该用户从未签到

    发表于 2013-9-28 06:50:18 | 显示全部楼层
    下载了,看了,VR_user_happy这个没有使用VPB做,挺好的,支持支持。

    该用户从未签到

     楼主| 发表于 2013-9-29 15:38:28 | 显示全部楼层
    本帖最后由 VR_user_happy 于 2013-9-29 15:39 编辑

    根据经纬度坐标,在地球表面添加模型:

    1.建立或者获取一个建立的地球模型,得到地球模型所建立好的对应的局部坐标系osg:: CoordinateSystemNode;

    2根据这个局部坐标系创建椭球体坐标系osg:: EllipsoidModel;

    3.根据模型中心的经度坐标、纬度坐标、地表高程,获取世界坐标系下地模型位姿矩阵osg:: Matrix;

    4. 根据位姿矩阵osg:: MatrixTransform将模型添加到场景;

    terr_earth_put_1.jpg

    terr_earth_put_2.jpg

    terr_earth_put_3.jpg

    这个模型时放大了100倍然后放到对应的经纬度坐标上的

    terr_earth_put_4.jpg

    terr_earth_put_5.jpg

    terr_earth_put_6.jpg

    这个是另一个地形模型经纬度不同

    该用户从未签到

     楼主| 发表于 2013-9-30 16:29:12 | 显示全部楼层
    本帖最后由 VR_user_happy 于 2013-9-30 16:46 编辑

    //添加地形到地球响应的坐标位置的方法:

    osg::CoordinateSystemNode* csn = new osg::CoordinateSystemNode;
        csn->setEllipsoidModel(new osg::EllipsoidModel());
        csn->addChild(geode);

            //设定椭球体坐标系
            osg::EllipsoidModel* ellipsoid = csn->getEllipsoidModel();
            if (ellipsoid)
            {
                            //得到原有矩阵位置
               // osg::Matrix inheritedMatrix;
               // inheritedMatrix=pEarthNode->getTransform();
                
                            //创建位姿矩阵      
                //osg::Matrixd matrix(inheritedMatrix);
                            osg::Matrixd matrix;

                //设定到椭球体坐标系的矩阵
                ellipsoid-computeLocalToWorldTransformFromLatLongHeight(dLatitude,dLongtitude,dHeight,matrix);
               //
            osg::ref_ptr<osg::MatrixTransform> mt= new osg::MatrixTransform;       
                            mt->setMatrix(matrix);
                            mt->addChild(pDemNode);

            //添加到地球节点下
            pEarthGroup->addChild(mt);
          
            }

    该用户从未签到

     楼主| 发表于 2013-9-30 16:40:18 | 显示全部楼层
    本帖最后由 VR_user_happy 于 2013-9-30 16:42 编辑

    地形OVERLAY方法:
       
    //创建组节点
            osg::Group* pRoot = new osg::Group;

            //定义OverlayNode的技术类型
            osgSim::OverlayNode::OverlayTechnique technique = osgSim::OverlayNode::OBJECT_DEPENDENT_WITH_ORTHOGRAPHIC_OVERLAY;

            //创建Overlay节点
            osgSim::OverlayNode* overlayNode = new osgSim::OverlayNode(technique);

            //设置Overlay节点
            overlayNode->setContinuousUpdate(true);
            overlayNode->setOverlaySubgraph(pOrgNode);
            overlayNode->setOverlayBaseHeight(fHeight);
            overlayNode->addChild(pOverlayObjNode);

        // 添加到组节点
        pRoot->addChild(overlayNode);
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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