目标:(十二)中的问题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、共享几何图形池子节点的作用((十二)中问题)</