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

2023-10-27

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

21、分页瓦片加载器子节点的作用((十二)中问题)

22、分页瓦片卸载器子节点的作用((十二)中问题)

23、栅格化器子节点的作用((十二)中问题)

24、地形子节点的作用((十二)中问题)

25、绑定渲染器的作用((十二)中问题)

26、地图回调函数的作用((十二)中问题)

27、如何将地图图层添加到rex引擎中((十二)中问题)

28、选择信息的作用((十二)中问题)

29、瓦片包围盒修改回调函数的作用((十二)中问题)

30、刷新rex引擎((十二)中问题)

31、刷新边界作用((十二)中问题)

32、osgEarth::Metrics类的意义((十四)中问题)

33、请求合并队列_mergeQueue((十四)中问题)

34、分页瓦片加载器在更新遍历时对请求处理过程((十四)中问题)

35、分页瓦片加载器在更新遍历时对已处理请求裁剪过程((十四)中问题)

36、已处理的请求队列_requests((十四)中问题)

37、DatabasePager中的_fileRequestQueue和_httpRequestQueue((十六)中问题)

38、瓦片请求的生成到处理过程详解((十六)中问题)

39、瓦片节点TileNode的创建过程((十七)中问题)

40、request请求加载瓦片优先级的含义((十七)中问题)

41、request的_internalHandle的作用((十七)中问题)

42、DatabaseRequest中_objectCache含义((十七)中问题)

42、osgEarth的多线程分析((十七)中问题)

43、osgEarth的缓存及其结构((十七)中问题)

44、DatabaseThread从缓存加载数据过程((十七)中问题)

45、DatabaseThread从文件加载数据过程((十七)中问题)

46、决定创建TileNode的时机条件((十七)中问题)

47、TerrainEngineNode的createTileModel过程详解((十七)中问题)

48、DatabaseThread中CompileSet的含义((十七)中问题)

48、PagerLoader的traverse过程详解((十七)中问题)

49、DatabaseThread的run过程详解((十七)中问题)

50、LoadTileData的invoke过程详解((十七)中问题)

51、TileNode的cull过程详解((十七)中问题)

52、遮罩生成器osgEarth::Drivers::RexTerrainEngine::MaskGenerator((十八)中问题)

53、RexTerrainEngineNode::traverse过程详解((十八)中问题)

54、TileNode节点下的场景树分析((十八)中问题)

55、地形瓦片大小尺寸和LOD的关系((十八)中问题)

56、TileNode的_tileKeyValue作用((十八)中问题)

57、TileNode的_morphConstants作用((十八)中问题)

58、TileNode的_stitchNormalMap作用((十八)中问题)

59、TileNode的_renderModel作用((十八)中问题)

60、初始化高程栅格过程详解((十八)中问题)

61、LoadTileData中的CreateTileModelFilter作用((十八)中问题)

62、TileNode节点何时会从场景树中移除((十八)中问题)

63、osgEarth::Map的Profile创建过程((二十)中问题)

64、osgEarth::TerrainTileModelFactory添加颜色层和影像层的区别((二十一)中问题)

65、osgEarth::PatchLayer修补层的作用((二十一)中问题)

66、osgEarth::TerrainLayer中的_memCache(osgEarth::MemCache)详解((二十一)中问题)

67、osgEarth::Layer::RenderType图层渲染类型的作用((二十一)中问题)

68、osgEarth::TerrainLayer中TileSource的作用((二十一)中问题)

69、earth文件没有设置高程图层会不会有默认高程层(高程均为0)((二十一)中问题)

70、TerrainTileModelFactory::addColorLayers过程详解((二十一)中问题)

71、TerrainTileModelFactory::addElevation过程详解((二十一)中问题)

72、osgearth中可能用到的几个全局实例对象(osgDB::Registry osgEarth::Registry osg::Timer osg::DisplaySetting)((二十三)中问题)

73、osgEarth::Map::addLayer过程详解((二十三)中问题)

74、TileNode::setDirty过程详解((二十三)中问题)

75、请求四个状态的含义(IDLE RUNNING MERGING FINISHED)((二十三)中问题)

76、什么时候删除TileNode节点,不会一直增加吧((二十三)中问题)

77、寄存器中请求状态活动记录的含义Registry::instance()->endActivity( req->getName() )((二十三)中问题)

78、瓦片TileNode的生命周期流程详解((二十三)中问题)

79、rex引擎如何将瓦片构造成地球形状((二十五)中问题)

80、高程、影像文件格式详解((二十五)中问题)

81、TileNode的merge过程详解((二十六)中问题)

82、osgEarth支持的空间参考坐标系详解(osgEarth::SpatialReference、osgEarth::CubeSpatialReference、osgEarth::TangentPlaneSpatialReference)((二十九)中问题)

83、osgEarth地球椭球体ellipsoid 大地基准面datum 地图投影Projection详解((二十九)中问题)

84、空间参考坐标系和坐标系统类型的关系(geocentric projected)((二十九)中问题)

85、proj4是什么((二十九)中问题)

86、为什么要删除设置过的垂直水准面((二十九)中问题)

87、osgEarth如何对投影坐标系和大地坐标系进行显示处理的((二十九)中问题)

88、TileNode的节点构成,一个surface、tilenode((三十)中问题)

89、MapFram和MapInfo的关系((三十)中问题)

90、ModifyBoundingBoxCallback的使用时机和场合((三十)中问题)

91、MapFrame为什么要单独存放高程层_elevationLayers,而不是放在图层_layers中((三十)中问题)

92、MapFrame和Map中高程池的作用osg::ref_ptr<ElevationPool> _elevationPool((三十)中问题)

93、osgEarth::Drivers::RexTerrainEngine::TileDrawable分析((三十)中问题)

94、请求读取地理信息失败会如何处理((三十二)中问题)

95、RexTerrainEngineNode的遍历过程详解((三十三)中问题)

96、osgEarth::Drivers::RexTerrainEngine::TerrainCuller的apply过程详解((三十三)中问题)

97、RexTerrainEngineNode的updateState过程详解 设置了很多着色器变量((三十三)中问题)

98、什么时候分配opengl资源((三十三)中问题)

99、TileNode释放opengl资源过程releaseGLObjects详解((三十三)中问题)

100、最近一次遍历的帧号和时间是怎么设置呢(在渲染遍历里),怎么就不会再渲染遍历该瓦片节点了((三十三)中问题)

101、osg::State和osg::StateSet的关系((三十四)中问题)

102、osgEarth::SpatialReference和osgEarth::Profile的关系((三十六)中问题)

103、osgEarth的Geographic、Geodetic、Geocentric和Project的关系((三十六)中问题)

104、TileNode绘制过程详解((三十七)中问题)

105、如何控制父子TileNode节点的显隐((三十七)中问题)

106、GeometryPool的createGeometry过程详解((三十七)中问题)

107、TileNode如何从地图中提取与其分辨率相适应的图像数据((三十七)中问题)

108、如何定制椭球体并进行椭球体间坐标转换((四十五)中问题)

109、Horizon Cull是什么意思((四十五)中问题)

110、osgEarth::Drivers::RexTerrainEngine::DrawState的作用((四十五)中问题)

111、osgEarth的线程分析((四十五)中问题)

112、从osgEarth到osg到Opengl((四十五)中问题)

113、osg::Program与osgEarth::VirtualProgram的关系((四十五)中问题)

114、rex引擎shader文件中的#pragma vp_entryPoint vp_location等含义((四十五)中问题)

115、rex引擎的着色器如何区分顶点和片段((四十五)中问题)

116、osg::Program是如何对着色器及其变量进行管理的((四十五)中问题)

117、osg的窗口是如何与opengl集成的((四十五)中问题)

118、osg是如何实现opengl的初始化的((四十五)中问题)

119、CGCS2000余WGS84坐标系的比较((四十六)中问题)

120、着色器代码文件到着色器程序的过程((五十一)中问题)

121、osgEarth::VirtualProgram默认出现在哪些位置((五十一)中问题)

122、rex引擎默认的几个着色器功能分析((五十一)中问题)

123、osgEarth::TileRasterizer功能详解((五十二)中问题)

124、osgEarth::ImageLayer如何使用VirtualProgram((五十二)中问题)

125、osgEarth::ShaderFactory osgEarth::ShaderLoader关系((五十四)中问题)

126、osgEarth::URI和osgEarth::URIContext的作用((五十四)中问题)

127、RexTerrainEngineNode中_renderBindings的作用((五十四)中问题)

128、Rex引擎如何给shader文件中的uniform变量赋值((五十四)中问题)

129、osgEarth中多个着色器的源代码的编译链接过程((五十四)中问题)

130、osgEarth::ShaderFactory osgEarth::ShaderLoader关系((五十四)中问题)

131、TileNode与DrawTileCommand的关系((五十五)中问题)

132、如何提取出指定范围的高程网格((五十五)中问题)

133、从earth文件加载高层图层的过程((五十五)中问题)

134、TerrainTileModel与TileRenderModel的关系((五十五)中问题)

135、EngineContext的作用((五十五)中问题)

136、几个uniformmap的关系((五十五)中问题)

137、DrawTileCommand中的采样器((五十五)中问题)

138、TileNode中的_surface(SurfaceNode)作用是什么((五十五)中问题)

139、stateset中的adduniform、setTextureAttribute等最后是如何反应到opengl上的((五十五)中问题)

140、状态树和渲染树的关系((五十五)中问题)

141、TileRenderModel中的RenderingPass和RenderBindings((五十五)中问题)

142、高程瓦片的绘制过程((五十五)中问题)

143、如何从高程影像变成高程网格((七十一)中问题)

144、osg::StateSet中的_binMode作用((七十二)中问题)

145、rex的瓦片高程影像和高程文件中的影像尺寸如何对应((七十二)中问题)

146、osgEarth::TerrainLayerOptions高程层选项中参数的含义((七十二)中问题)

147、从高程文件读取的高程信息如何填充rex的高程瓦片((七十二)中问题)

148、地图下载器实现原理((七十二)中问题)

149、RexTerrainEngineNode和TerrainCuller中_terrain的关系((七十二)中问题)

150、TileNodeRegistry和LayerDrawable中_tiles的关系((七十二)中问题)

151、rex引擎中绘制瓦片的调度过程原理((七十二)中问题)

152、晕眩图的制作与实现((七十八)中问题)

153、如何将高层场保存为tif、MBTiles等((七十八)中问题)

154、如何将tif和MBTiles进行格式转换((七十八)中问题)

155、如何加载百度、高德、谷歌、微软的在线地图((七十八)中问题)

156、osgEarth运行起来为什么很占CPU资源((七十九)中问题)

157、wmts与xyz、quadtree、tms的关系((七十九)中问题)

158、获取的高程图像为什么除了设置纹理还要设置栅格((八十)中问题)

159、rex引擎创建图层的过程((八十一)中问题)

160、如何设置高度单位(m、km等)((八十二)中问题)

161、网络资源加载失败还会不会继续加载((八十二)中问题)

162、rex引擎打开图层的过程((八十二)中问题)

163、osgEarth::MemCache详解((八十二)中问题)

164、OGR与GDAL的关系((八十二)中问题)

165、osgEarth::Map的cache创建过程((八十三)中问题)

166、osgEarth跨平台的头文件包含设置((八十三)中问题)

167、rex引擎如何实现淹没分析((八十八)中问题)

168、rex引擎如何实现挖方分析((八十八)中问题)

169、rex引擎如何实现地形整平((八十八)中问题)

170、rex引擎如何绘制矢量图形((八十八)中问题)

170、rex引擎如何绘制等高线((八十八)中问题)

171、rex引擎如何显示瓦片的边界((八十八)中问题)

172、边界处瓦片颜色混合的实现((九十)中问题)

173、rex自带的着色器代码会硬编码进动态库吗((九十一)中问题)

174、rex在渲染时会不会纹理单元内容频繁更改((九十一)中问题)

175、如何显示瓦片编号((九十四)中问题)

176、缓存文件复用、弃用的判决((九十五)中问题)

177、RenderingPasses和RenderBindings((九十五)中问题)

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Java BigInteger的使用

    前言 在Java中 由CPU原生提供的整型最大范围是64位 long 型整数 使用 long 型整数可以直接通过CPU指令进行计算 速度非常快 但是如果我们使用的整数范围超过了 long 型怎么办 这个时候 就只能用软件来模拟一个大整数 j
  • unity 3D RPG高级教程(十)

    目录 声明 1 Action Button 快捷栏按键 2 Stats Info 显示 Player 相关信息 3 Change Animator 切换动画控制器 4 Item Tooltip 物品信息显示栏 5 Loot Items 掉落
  • misc.func.php,完美解决 discuz 您的管理面板已经锁定!

    出现 对不起 由于您多次输入错误密码 所以管理面板暂时锁定 您现在无法进入管理面板 15 分钟以后 锁定会自动解除 的提示 是出于安全的考虑 在您连续输入五次密码 仍然没有成功登陆的情况下所提示的 并且会在 15 分钟内禁止此 IP 再次登
  • mysql怎样设置默认值约束_MySQL默认值约束怎么用

    本篇文章将介绍default 默认约束 如何使用和改动后的效果 常用数据库约束 default 默认约束 not null 非空约束 指定某列不为NULL unique 唯一约束 指定某列和几列组合的数据不能重复 primary key 主
  • 【C/C++多线程编程之九】pthread读写锁

    多线程编程之读写锁 Pthread 是 POSIX threads 的简称 是POSIX的 线程标准 pthread读写锁把对共享资源的访问者分为读者和写者 读者只对共享资源进行读访问 写者只对共享资源进行写操作 在互斥机制 读者和写者都需
  • 详解Nodejs中的模块化

    Nodejs是一个基于Chrome V8引擎的JavaScript运行时环境 它允许开发者使用JavaScript在服务器端运行代码 在Nodejs中 模块化是一种组织和重用代码的重要方式 模块化允许我们将代码拆分成小块 使得代码结构更清晰
  • Windows10访问Ubuntu子系统(WSL)的桌面环境

    Windows10访问Ubuntu子系统 WSL 的桌面环境 文章目录 Windows10访问Ubuntu子系统 WSL 的桌面环境 Why Linux Why WSL 开启WSL Ubuntu换源 更新与升级 安装桌面环境xubuntu
  • Pytorch-YOLOV4-火焰目标检测

    首先感谢大佬提供的代码bubbliiiing 0 效果展示 1 所需环境 torch 1 2 0 2 注意事项 代码中的yolo4 weights pth是基于608x608的图片训练的 代码中的默认anchors是基于608x608的图片
  • SystemC在Ubuntu16.04上安装测试

    使用SystemC进行硬件仿真 环境 linux x86 64 bash g 下载解压SystemC SystemC下载地址 解压下载的包 tar zxvf systemc 2 3 3 tar gz 进入解压出来的目录 准备编译安装 cd
  • 自动控制原理快速入门+理解

    用最简单的话认识全貌 PS 默认都是线性系统 即输入和输出之间是线性的 默认你知道什么是线性 初步认识控制 假设你在推箱子 你推的力气是 f f f 箱子位移是 x x x 质量是
  • 09-----检测对方网络是否正常在线的方法

    1 使用ping ping是我们经常检测对方能否正常通信的方法 它使用的协议是传输层中的ICMP 下面是我自己抓包的内容 2 使用telnet telnet一般是检测某个端口是否开放 格式为 telnet ip port 3 使用nc命令
  • 汇编语言DW、DB和DD的区别

    DW 是定义2字节空间的意思 DW属于汇编的一个伪指令 DW定义字类型变量 一个字数据占2个字节单元 读完一个 偏移量加2 DB定义字节类型变量 一个字节数据占1个字节单元 读完一个 偏移量加1 DD定义双字类型变量 一个双字数据占4个字节
  • 7.26 二进制练习题

    给你个礼物你能收到吗 打开这个exe文件后 我们看到了它让我们输入礼物提取码 我们先随便输入数据 按回车显示提取码错误还有输错的次数 我们发现这里存在着一个循环 然后我们在IDA里面打开这个文件 int cdecl main int arg
  • 大模型微调代码解析,哪些方法可以加速训练?

    近期大模型层出不穷 大家对于大模型的微调也在跃跃欲试 像Lijia的BELLE 斯坦福的Alpaca 1 清华的ChatGLM 2 中文的Chinese Vicuna 3 让我这样的普通玩家也能训练自己的微调模型 在微调和推理的时候仍然需要
  • Vim快速教程

    Vim快速教程 Vim教程 vimtutor 命令模式 Esc 视图模式 v 编辑模式 i Vim plug Vim教程 vimtutor 命令模式 Esc 快捷键 全称 功能 H J K L 方向键 前面加数字代表移动多少行或列 synt
  • 使用docker部署mysql

    1 拉取mysql 最新版本mysql docker pull mysql latest 拉取5 7版本mysql docker pull mysql 5 7 2 启动容器镜像 docker run id name mysql p 3307
  • Android Shape 的使用

    目录 什么是Shape shape属性 子标签属性 corners 圆角 solid 填充色 gradient 渐变 stroke 描边 padding 内边距 size 大小 特殊属性 rectangle 矩形 oval 椭圆 line
  • 如何在pycharm格式化请求头信息

    如何在pycharm格式化请求头信息 1 以格式化文档形式存放请求头信息 2 使用快捷键Ctrl r 输入 替换 1 2 点击Replace all 3 第2步 完成效果如下 4 去掉文档字符串的引号 使用快捷键Ctrl Alt L 让它变
  • TCP连接的状态详解以及故障排查

    1 TCP状态 LISTENING 侦听来自远方的TCP端口的连接请求 首先服务端需要打开一个socket进行监听 状态为LISTEN 有提供某种服务才会处于LISTENING状态 TCP状态变化就是某个端口的状态变化 提供一个服务就打开一
  • osgEarth的Rex引擎原理分析(九十五)地形变形(Terrain morphing)

    目标 十二 中的问题14 morphing翻译为渐变 或混合 比较合适 先看两张图 左图是使用了Image morphing 右图没有使用 morph的作用是使视域边界处的瓦片颜色和高程均匀变化 Image morphing控制颜色 Ter