osgEarth的Rex引擎原理分析(九十五)地形变形(Terrain morphing)

本文详细探讨了osgEarth的Rex引擎中地形变形(Terrain morphing)的实现原理和控制方法。地形变形用于在视域边界处平滑过渡不同级别纹理的颜色和高程,提供更流畅的视觉体验。主要涉及两级纹理数据的获取、着色器中的混合渐变以及如何通过earth文件控制这一特性。
摘要由CSDN通过智能技术生成

目标:(十二)中的问题14

morphing翻译为渐变(或混合)比较合适。

先看两张图,左图是使用了Image morphing,右图没有使用。morph的作用是使视域边界处的瓦片颜色和高程均匀变化。Image morphing控制颜色,Terrain morphing控制高程。这个功能是osgEarth的rex区别与mp的主要点之一。

1、实现原理

1.1获取两级纹理数据,在TileNode的merge中

1.2在着色器中对两级纹理进行混合渐变,在RexEngine.Morphing.vert.glsl(负责计算混合系数)和RexEngine.frag.glsl(负责颜色混合)文件中

2、如何控制

2.1程序控制

思路:阻止获取父纹理数据

答案:无法程序控制,因为无法操控isActive中的_unit

osgEarthDrivers/engine_rex/TileNode.cpp
void
TileNode::refreshInheritedData(TileNode* parent, const RenderBindings& bindings)
{
if (s == SamplerBinding::COLOR_PARENT && bindings[SamplerBinding::COLOR_PARENT].isActive())
                {
}
}

默认Image morphing、Terrain morphing均为true。

osgEarthDrivers/engine_rex/RexTerrainEngineOptions
RexTerrainEngineOptions( const ConfigOptions& options =ConfigOptions() ) : TerrainOptions( options ),
            _skirtRatio             ( 0.0f ),
            _color                  ( Color::White ),
            _expirationThreshold    ( 300 ),
            _progressive            ( false ),
            _highResolutionFirst    ( true ),
            _normalMaps             ( true ),
            _normalizeEdges         ( false ),
            _morphTerrain           ( true ),
            _morphImagery           ( true ),
            _mergesPerFrame         ( 20 ),
            _expirationRange        ( 0 )
        {
            setDriver( "rex" );
            fromConfig( _conf );

            // override.
            enableMercatorFastPath().init( false );
        }

 2.2earth文件控制

<terrain driver="rex">
      	<vertical_scale>1.0</vertical_scale>
      	<morph_imagery>false</morph_imagery>
      </terrain>

 

 

待继续分析列表:

9、earth文件中都有哪些options((九)中问题)

10、如何根据earth文件options创建不同的地理信息引擎节点((九)中问题)

11、rex地理信息引擎的四梁八柱((九)中问题)

12、osgEarth::TerrainEngineNode中setMap方法作用((十二)中问题)

13、RexTerrainEngineNode中_mapFrame的作用((十二)中问题)

14、地形变形(Terrain morphing)((十二)中问题)

15、地球瓦片过期门限的含义((十二)中问题)

16、高分辨率优先的含义((十二)中问题)

17、OSGEARTH_DEBUG_NORMALS环境变量的作用((十二)中问题)

18、活跃瓦片寄存器的作用((十二)中问题)

19、资源释放器子节点的作用((十二)中问题)

20、共享几何图形池子节点的作用((十二)中问题)</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值