基于osgEarth的相控阵雷达搜索屏三维绘制方法
文章目录
关于相控阵雷达搜索屏的定义参见博文《基于工作模式的相控阵雷达功能仿真方法》。相控阵雷达的搜索屏是由多个分区组成的,而每个分区的数据结构与博文《基于osgEarth的雷达作用范围绘制方法》基本一致,因此每个分区的绘制完全可以采用类似该文的技术加以实现。但考虑到分区本身的特点,做了一些设计,但完全使用上述技术也可以勉强使用。
由于跟踪区域不涉及分区,因此其绘制完全使用前述博文技术,但在三维环境下,由于同时显示搜索屏和跟踪区域,显然比较多余,因此跟踪区域在显示配置上多以线框图的形式为主。
一、TAS远近分区模式搜索屏的绘制
设计了几种不同的绘制模式,区分在2点:是否写入Z缓存,是否将分区合并。如果写入z缓存,还可以选择博文《基于深度纹理的复杂透明对象稳定绘制方法》进行绘制。这几种方式各有优缺点。
1.不写入Z缓存
不写入Z缓存,但是进行了背面裁剪,各分区分别绘制的效果如图所示
可以看出,由于不写入Z缓存,所以背面的网格线也都绘制出来,其效果是好是坏见仁见智。但其特点是比较稳定,不会出现写入Z缓存时可能出现的依赖于图元顺序问题。
将分区合并后绘制如图所示
可以看出,此时相当于看不出分区了,此种显示方式用处不大。
2.写入Z缓存
当写入Z缓存时,也同时进行了背面剔除,各分区分别绘制如图所示
可以看出,其背面的网格线不再显示,而且分区的分界面清晰可见。由于搜索屏的厚度一般较薄,因此大多数情况下单个分区的形状即使不是凸的,形状也不会出现很明显的凹状,不太容易出现前述博文所提及的绘制顺序导致的自身显示效果“类似绘制错误”的现象。
但当雷达指向改变时,却会出现下图的效果
可以看出,此时分区之间的分界面看不见了。其原因如下:由内向外绘制各分区,在正确显示分界面的图中,先绘制了内分区的外侧面,再绘制外分区,因此显示正确;在不显示分界面的图中,先绘制了外分区,内分区的外侧面被遮挡了。
因此,构造了另外一种绘制的方式:首先生成所有的分界面(生成除最后一个分区之外所有分区的外侧面), 然后再生成所有分区合并后的形状(取第一个分区的最小距离和最后一个分区的最大距离,方位角、俯仰角与分区相同);先绘制分界面,后绘制合并形状。
采用此技术,有效避免了上述分区绘制顺序所导致的分区分界面不显示问题
二、TAS方位分区模式搜索屏的绘制
同样,也设计了Z缓存是否写入和分区合并等技术。
1.不写入Z缓存
当不写入Z缓存时,方位分区模式搜索屏绘制效果如下
同样,可以看到背面的网格线会显示,分区之间的分界面也会突出显示。之所以突出显示是由于相应部分绘制了2次。因此,可以看出突出显示的不仅仅是分界面,还会包括一小块分区外侧面。
构造算法,将各个分区合并为一个整体,其效果如下
从上图可以更明确地看到有2个小块被重复绘制了。
分区合并的算法就是生成不包含分界面的各个面:对于每个分区,其内、外、上、下4个面直接输出;生成左侧面时,与其左分区的最大距离进行比较,如果当前分区的最大距离r0小于左侧分区最大距离r1,则不生成左侧面,否则按[r1,r0]生成左侧面,第一个分区的左侧分区最大距离视为0;右侧面同样处理。
2.写入Z缓存
写入Z缓存时,直接绘制各个分区,绘制效果如图
可以看出,背面线不再绘制,分界面也清晰可见。
但是当雷达指向改变时,会出现如下效果
可以看出,分界面不见了。其原因也远近分区是类似的,是由于各个分区的绘制顺序所导致的。
采用的办法仍然是生成分界面数据和合并分区,然后绘制,效果如下
可以看出,分界面再次可见了,但是仍然会出现部分非分界面图元重复绘制的现象。
尝试以《基于深度纹理的复杂透明对象稳定绘制方法》技术绘制,效果如下
并不能彻底解决问题,仍然有残留的非分界面图元重复绘制。分析原因,应该是fragment过于接近,Z缓存精度不足以区分。如想彻底解决,只有在shader中计算遮挡了。
另外,写入Z缓存的合并分区绘制效果如下图所示。
三、TAS高低双屏模式搜索屏的绘制
高低双屏的时候,不涉及分区合并,均是各分区独立绘制。
1.不写入Z缓存
效果如图所示
可以看出,背面线会显示。高屏的弯曲程度较高,因此很易于出现部分区域的重复绘制次数多。
2.写入Z缓存
效果如图所示
可以看出,背面线不再显示,但是高屏的重复绘制现象也还是会出现。
使用《基于深度纹理的复杂透明对象稳定绘制方法》技术进行绘制,效果如图
上述实现中,是把高低2屏的geometrys作为一个整体进行处理的,因此整体没有重复绘制的部分了。
总体而言,各种技术的显示都有其合理之处,也有可能在某个情况下效果不够理想,但大致都可以接受。一般情况下写入Z缓存、合并图元并生成分界面的方式效果会更好些,希望以其他效果显示可以通过手动的设置进行调整。