范文山,周建亮
(北京航天飞行控制中心,北京100094)
航天试验任务星体外观可视化方法研究
范文山,周建亮
(北京航天飞行控制中心,北京100094)
摘要:针对航天试验任务中地球、月球等大尺度星体的真实感可视化问题,提出了新型的四叉树相容的金字塔模型,以解决可视化系统中多分辨率遥感影像的存储、调度和实时绘制问题;设计了视感正确的三维地形绘制方法,在统一的纹理框架下管理、调度高程数据,在GPU端执行地形信息的逐像素恢复。实验结果表明,该算法计算开销小、存储容量低,能在通用微机平台上实现大规模、复杂天体的实时绘制。
关键词:航天试验任务;可视化;星体外观;GPU;实时
航天飞行试验任务可视化系统,需要对飞行器空间环境进行三维真实感显示。作为构成空间环境的基本天体,如何实现地球、月球的正确、真实绘制,是测控可视化系统首先要解决的问题。
在航天任务中可视化全球规模的星体对象,主要面对两方面的困难。第一,为了正确绘制星体地貌,需要应用实测的遥感影像数据。随着遥感技术的发展,获取全地球、月球规模的高分辨率影像数据已经成为可能。但是,由此出现了数据爆炸问题。以1 km分辨率全地球卫星影像为例,其数据规模即达到约2 GB,其图像分辨率每增加1倍,数据的存储容量将增加4倍,在当前图形硬件设备上,无法一次性地完整显示如此规模的影像数据。尤其考虑星体的其它属性,如地形信息,以及多天体同时显示的情况,硬件设备的能力与数据需求之间的矛盾更为突出。第二,航天任务的全程可视化中,既要处理全局视点下,全球规模宏观星体的绘制,也要考虑局部视点下,星体表面细节的详实绘制,要求实时可视化系统解决算法的计算和访存效率问题,以满足不同规模场景下,多分辨率、视点连续的星体外观可视化需求。
目前在实时大规模的复杂场景绘制中,通常采用两种方法提高实时性。一种基于视点相关的自适应层次细节技术(LOD)[1]简化整个场景的复杂度,该方法能够以1~2个幂级的程度有效降低每一帧绘制多边形的数目,并在提高帧频的同时,减小生成图像的失真。另一种方法是采用可见性剔除技术,包括视域剔除[2-3]、背向面剔除[4]和遮挡剔除[5]。通过对场景执行低开销的预计算,获取场景中有效元素的可见子集,达到降低场景复杂度、加速绘制性能的目的。
在构建星体的表面细节方面,由于航天任务可视化系统的特殊性,必须采用真实数据,绘制外观正确的星体特征。其中最基本的方法是应用遥感卫星图片显示地貌信息。由遥感系统生成的二维图像经过校正、投影处理后,作为纹理,叠加到理想的几何球面。这种方法实现简单,尽管是真实星体的近似,但能够满足航天任务大场景下全局星体可视化的需要。然而对局部地表的细节绘制,这种简单球面叠加纹理的方法可视化效果难以满足实际任务需要,为了精确绘制星体形体特征,需要应用数据高程模型,构建三维网格,表达地形特征,这些方法中,典型的如ROAM[6]、PBDAM[7]、Geometry Clipmap[8]。但星球规模的三维地形实时构建与绘制技术算法复杂、数据吞吐量大,影响可视化系统的实时性能。
2.1 总体框架
本文提出的星体外观可视化算法总体框架是两阶段过程,包括纹理数据的离线处理及场景显示的实时计算两部分,如图1所示。
图1 算法框架Fig.1 The framework of the proposed algorithm
1)离线预处理部分。以原始图像数据为初始输入,并作为最高分辨率纹理,在其上应用四叉树规则采样,生成各分辨率纹理层级,形成金字塔结构,并对每个层级分片生成小片的数据分块(Tile),便于运行时的硬件换入/换出操作。
2)实时运行部分。在实时运行阶段,系统采用多线程机制,主线程的根据视点参数,基于屏幕空间误差算法[9]计算块纹理的LOD层级,进行可见性剔除。子线程负责数据分块的换入换出,将有效数据从外存中载入。最后,换入的有效数据进入绘制流水线,在GPU上执行定制片元程序,逐点计算颜色值,送帧缓存显示。
2.2 表面细节信息预处理方法
2.2.1 海量影像数据预处理
在简单球体表面应用高分辨率遥感影像是绘制高质量天体可视外观的最直接的方法。全球规模高分辨率影像数据的尺寸大,一次性整体调入系统影响显示性能;此外,在航天任务可视化系统中,用户需要与系统实时交互,在不同空间视角,浏览星体表面特征,需要系统具备多细节、多层级绘制能力。
为了适应上述需求,在预处理阶段,算法对原始遥感影像执行视点无关的上采样(up-sampling),生成不同分辨率的细节纹理。首先将遥感影像的原始数据定义为分辨率最高的L层级。之后,按照算法四叉树划分规则执行上采样,即分别沿影像的u、v维度,将邻近的两个像素构成的2×2区域,共四个像素滤波合并为对应的上一层级中的一个像素。在完整的L层级的数据完成采样后,得到分辨率低一级的第L-1层纹理数据。应用同样的方法,算法依次生成其它层级的数据,最终得到如图2所示的纹理数据金字塔结构。
图2 纹理金字塔结构Fig.2 Pyramid structure of textures
将海量影像数据完整调入到主存效率低,在当前硬件条件下甚至不可能,为此,通常做法将完整图片划分为等尺寸的多个分块(Tile)[9],在实时绘制阶段,按需调入。本文算法在纹理采样阶段中应用了四叉树策略,因此逻辑结构上,纹理金字塔结构的顶层即为四叉树层级的根节点,每一级节点都是下一级四个孩子的父节点,且父节点u、v维度分辨率与孩子节点保持为2的比例关系。基于这一属性,算法在纹理层级的每个维度上应用2k的划分方案,相应地,其邻接的孩子层级应用2k+1划分。
在上述处理中,算法对纹理的采样和分割应用了四叉树策略,既满足了层级间纹理分辨率的连续性需要,又保证了各层级纹理分片尺寸的一致性,保持换入换出过程IO吞吐量的稳定;更重要的是,可以在实时绘制阶段,应用四叉树结构实现基于层级的快速剔除,提高系统的实时性能,具体实现见2.3.1节。
2.2.2 高程信息封装到纹理
三维地形是空间天体的基本可视属性,是绘制真实感天体的关键要素。目前NASA提供了全地球90米分辨率高程数据,可满足中低分辨率地球的绘制需要;而对就位勘测等需要航天器与环境交互的活动,甚至需要厘米级地形数据构建精确的非结构化实验环境。但是实时构建三维地形网格计算开销大,为了避免其对系统实时性的影响,本文算法基于法矢图技术[10],将数字高程模型(DEM)的地形信息打包(pack)到细节纹理中,在实时绘制阶段,提取纹理中的信息,在简单几何球体表面,恢复高程细节。其实现过程如图3所示。
图3 基于细节纹理的地形效果绘制过程Fig.3 The method of visually correct terrain recovering by mapping normal map on simple geometry
算法在预处理阶段,首先基于高程数据构建法矢图。在高程数据中,每个元素存储了一个单独的无符号数值,对应该像素位置处的高度。转换期间,对高程数据的每个元素,以及它正上方和右方的元素采样得到高度值,然后计算两个差分向量。如图4所示。
图4 通过邻接像素计算法矢Fig.4 Normal calculation by sampling its adjacent pixels
第一个差分向量是[1, 0, Hr⁃Hg],其中Hg是给定纹理元素的高度,Hr是给定纹理元素右边纹理元素的高度;第二个差分向量是[0, 1,Hr⁃Hg],其中Ha是给定纹理元素正上方的纹理元素高度。两个差向量的外积定义第三个向量,它指向高度域的外表面方向。如式(1)所示,归一化这个向量,可以创建一个适用于高程细节纹理的法向量n。
之后,对法矢分量的数值进行范围调整,将有符号的法矢值,映射到无符号的细节纹理中(x、y、z分别映射到r、g、b分量,并且将(-1,1)映射为(0, 255)区间)。算法使用GDAL库[11]的栅格操作功能执行细节纹理的读写访问。
原始细节纹理生成后,应用2.2.1节影像纹理的处理算法和同样的处理参数,对细节纹理执行上采样和分割,生成各个分辨率的纹理分块,构建相应的金字塔层级。
本算法设计的细节纹理处理方式,将高程信息和影像数据纳入到统一的管理框架下,实时计算阶段,系统采用一遍计算即可实现高程和影像数据的访问,简化了影响系统性能的海量数据访存模块的设计,降低了访问地形数据的计算开销。
2.3 地表细节信息实时绘制
星体表面特征实时绘制过程包括CPU端的场景剔除和GPU上的逐像素绘制两部分工作。
2.3.1 基于四叉树的可见性剔除
在可视化场景图中,算法采用四叉树层级结构表示多分辨率星体节点,根节点对应于最低分辨率的完整球体。在实时运行阶段,系统采用多线程机制提高性能,其中主线程根据视点参数计算块的LOD层次。根据层级结果,从当前节点开始,动态构建其四个孩子节点,相应地,对从属于当前节点的球面等分为四个子球面,分配给新生成的四叉树孩子节点。
在动态构建四叉树的过程中,算法同步执行视锥体的可见性剔除操作。视锥体为根据视点参数定义的平头椎体,如下图所示的A′B′C′D′⁃AB⁃CD。其中,P1, P2, P3分别代表对象与视椎体的外、内、相交三种关系。
图5 根据视锥体判断场景可见性Fig.5 Scene visibility test.
视锥体具有六个裁剪平面,分别是近(前)裁剪平面、远(后)裁剪平面、左裁剪平面、右裁剪平面、上裁剪平面和下裁剪平面。这六个面的平面方程定义为式(2):
其中,Ai、Bi、Ci、Di为相应的视锥体平面系数,x、y、z为对象中心点坐标。算法利用六个剪裁平面与模型之间的相互关系确定可见性。
考虑到球体面片为单调凸体,本算法的剔除操作首先执行分离面计算(separate-plane)。选择球面上的任一点,构建与其相切的平面,则该球面片完全位于平面的内侧。之后,基于点-平面关系,依次判断平头视锥体的8个顶点与该分离面的空间关系。若全部8个顶点完全落在平面的外侧,显然该面片不可见,终止对该节点的四叉树分割,遍历终止;否则,存在潜在的可见性。执行视锥体-球面的相交测试,即依次计算球体中心到六个裁剪面的距离(含方向),根据距离的绝对值与球体半径的关系以及距离的正负确定物体是否可见,即判断式(3)是否成立:
其中r为星体半径。
“很多问题要等监管层的明确批示。”上述银行资管部门经理告诉《中国经济周刊》记者,目前有很多细节还没有确认,尤其是涉及到存量产品和存量业务转移的具体事宜。此外,缺人也成为眼下成立理财子公司的银行面临的主要问题。“且不论新产品的开发和新业务的展开,仅是目前的存量业务,原有负责人员肯定不可能全部转去理财子公司。现在在市场上,权益投资、固收投资等方面的人才,几家银行全都在抓紧招聘。”
通过测试的可见面片,由换页线程根据坐标位置计算编号,形成影像和细节纹理的唯一标识,调入系统主存,送入图形绘制流水线。
2.3.2 逐像素地表细节信息绘制
在实时绘制阶段,算法设计GPU程序(shader),融合地表颜色和地形信息,逐点绘制星体表面细节。颜色信息可以在片元shader中,根据纹理坐标,调用内置函数获取。GLSL中的该函数形式如式(4):
其中,TexID为细节纹理对象ID,u、v为纹理坐标, col为获取的高程细节纹理信息。
地形信息的绘制根据Blinn-Phong[12]模型计算。计算公式如式(5):
其中,Ia为环境光照强度,Ka为环境光反射系数, Kd为漫反射系数,Il为光照强度, LTS为光照方向, NTS为封装到细节纹理中的法矢, HTS为半向量,由视点方向矢量和光线方向矢量决定。
由于法矢图所使用的坐标定义在纹理空间系统,而光向量和视向量通常在世界空间中处理,为了实现正确的光照计算,需要将光向量、视向量与法向量转换到同一个坐标系统。因为与在一个法矢图中调整每个法向量相比,旋转两个方向向量到另一个坐标系统的工作量要少得多,所以简单起见,系统实现中,将光向量和视向量都统一变换到纹理空间,该空间也称为切平面空间[13],如图6所示。
图6 切面空间与物体空间Fig.6 Tangent space and object space
这一个过程需要构建一个切平面空间坐标系的基矩阵来对光向量和视向量进行变换。首先,在法矢图中检索到顶点处的法线n,然后找到一个与n互相垂直的表面切向量t,它的方向沿着两个纹理轴u和v中任意一个方向。第三个向量为副法线b,可以通过一个简单的叉乘得到:b=n×t。将得到的所有向量进行归一化处理,就可以构建出式(6)所示切平面空间坐标系基矩阵。
之后,应用物体坐标空间到世界坐标空间变换矩阵的逆矩阵将光源位置和视点位置变换到物体空间,再根据式(7)再将它们转换到切平面空间中:
其中,LOS是物体空间中的光向量,LTS是切平面空间中的光向量。应用相同的变换过程,可以得到视向量VOS在切空间中向量VTS,完成以上步骤后,法向量、光向量、视向量、半向量(由LTS和VTS计算得到)都统一到同一个坐标系中。
算法在顶点shader中对每个顶点执行并行的坐标转换,以提高系统性能。之后对每个顶点处的光向量、半向量插值,再传递到片元shader中。
得到切面空间中的法矢向量、光照向量和半向量后,片元shader应用Blinn-Phong公式,计算当前像素处包含地理信息的明暗值,并与地貌的纹理颜色进行调和,输出最终结果,送帧缓存显示输出。
本文基于C++语言和OpenGL图形接口实现了星体外观可视化实时绘制算法,在配备Intel 3.5GHz CPU、4G主存,NVIDIA GeForce GTX 560显卡的微机平台进行了性能测试。
试验中,应用NASA Blue Marble项目的卫星遥感图片、SRTM的高程数据处理生成6级纹理金字塔层级,合成地球可视化效果。应用NASA LRO项目的遥感卫星影像和高程数据处理生成7级纹理金字塔层级,进行月球可视化绘制。
图7分别为全局视点下地球和月球的绘制效果。其中地球外观除了地表细节外,基于GLSL语言实现了大气散射的实时绘制,并叠加了云图效果。该云图在纹理调度算法中统一管理。其中,图7(a)视点高度约22,000 km,调度第2层级纹理数据;图7(b)视点高度约5,000 km,调度第2层级纹理数据。
图7 全局视点下的星体可视化效果Fig.7 The synthesized images of the global Earth and Luna
图8为视点临近星体时,本文方法绘制的星体表面效果,可见山脉、陨石坑等细节特征。其中图8(a)视点高度约500 km,应用第4层纹理数据绘制;图8(b)视点高度约300 km,应用第5层纹理数据绘制。
真实感地形构建与实时渲染是研究人员长期关注的难点问题。传统方法通常依赖复杂数据结构实现,如ROAM技术[11],ChunkLOD[7]方法等,由于其复杂性,难以满足大规模实时应用需要;为了提高算法性能,研究人员近来基于多CPU、GPU等技术,设计了并行算法,如Geometry clipmaps[8],改善系统实时性能。但现有的方法主要针对地理信息、娱乐游戏等需求,解决局部的、平面地形的构建显示问题。且算法在对象空间构建三维地形,算法性能依赖场景的复杂度。
本文算法采用纹理预处理与GPU实时绘制技术,在图像空间,实现了星体规模多分辨率地形外观的实时可视化,与传统方法相比,具有实现简单、性能不依赖场景复杂度的特点。算法对典型的空间任务场景进行了性能测试,帧频达到了35 帧/秒。数据表明,本文提出的算法,能够在通用微机平台上实现视感真实的、表面细节丰富的星体的实时三维可视化,满足大规模、复杂航天试验任务中真实感星体外观渲染需要。
图8 局部视点下的星体表面细节可视化效果Fig.8 The synthesized images of the local surface on Earth and Luna
大规模真实感星体外观绘制一直是航天任务可视化系统的难点问题,通常的做法对高程数据构建三角形网格,表示地形三维信息,但是算法开销大、计算复杂度高,严重影响系统的实时性能。本文基于纹理技术,在预处理阶段将高程信息编码到细节纹理中,并结合影像纹理,采用四叉树策略,构建金字塔层级;在实时绘制阶段,利用GPU的纹理访问能力,应用Blinn-Phong模型,逐像素计算颜色信息,合成视感真实的三维星体外观。算法具有计算开销低、数据吞吐量小、性能与场景复杂度无关等优点。满足最普遍的卫星、飞船等在轨运行的航天活动中,复杂星体真实感绘制的需要。
本文提出的算法构建了视感正确的星体外观,满足了大规模三维星体可视化的需要。而对就位勘测等需要地形环境参与计算的航天实验活动而言,必须要基于高程数据构建高精度的三维地形网格。后续工作中,拟对这类基于网格表示的、星体规模的三维地形实时构建和显示算法进行研究,进一步提高可视化系统的星体绘制质量与计算能力。
参考文献(References)
[1] De Floriani L, Puppo E.Hierarchical triangulation for multiresolution surface description[J].ACM Transactions on Graphics (TOG), 1995, 14(4):363-411.
[2] Cohen-Or D, Chrysanthou Y L, Silva C T, et al.A survey of visibility for walkthrough applications[J].Visualization and Computer Graphics, IEEE Transactions on, 2003, 9 (3):412-431.
[3] Slater M, Chrysanthou Y.View volume culling using a probabilistic caching scheme[C]/ / Proceedings of the ACM symposium on Virtual reality software and technology.ACM, 1997:71-77.
[4] Kumar S, Manocha D, Garrett B, et al.Hierarchical backface culling[J].Computers and Graphics, 1995, 23(5):681-692.
[5] Toledo R, Gattass M, Velho L.QLOD:A data structure of interactive terrain visualization[R].VISGRAF Laboratory TR-2001-13, IMPA, 2001.
[6] Duchaineau M, Wolinsky M, Sigeti D E, et al.ROAMing terrain:real-time optimally adapting meshes[C]/ / Proceedings of the 8th Conference on Visualization'97.IEEE Computer Society Press, 1997:81-88.
[7] Cignoni P, Ganovelli F, Gobbetti E, et al.Planet-sized batched dynamic adaptive meshes (P-BDAM)[C]/ / Proceedings of the 14th IEEE Visualization 2003 (VIS'03).IEEE Computer Society, 2003:20.
[8] Losasso F, Hoppe H.Geometry clipmaps:terrain rendering using nested regular grids[J].ACM Transactions on Graphics (TOG), 2004, 23(3):769-776.
[9] Ulrich T.Rendering massive terrains using chunked level of detail control[C]/ / Proceedings of the ACM SIGGRAPH 2001.
[10] Krishnamurthy V, Levoy M.Fitting smooth surfaces to dense polygon meshes[C]/ / Proceedings of the 23rd annual conference on Computer graphics and interactive techniques.ACM, 1996:313-324.
[11] GDAL - Geospatial Data Abstraction Library[OB/ EL].http:/ / www.gdal.org/
[12] Blinn J.F.Models of light reflection for computer synthesized pictures[C]/ / Proceedings of the 4th annual conference on Computer graphics and interactive techniques.ACM New York, 1977:192-198
[13] Thorpe J A.Elementary Topics in Differential Geometry[M].Springer, 1994
·基础研究·
Research on Visualization Method of Planet Appearance in Aerospace Experiments
FAN Wenshan,ZHOU Jianliang
(Beijing Aerospace Control Center,Beijing 100094,China)
Abstract:The realistic rendering for large scale planets in visualization system of aerospace experiments is a key issue.In this paper,a novel quad-tree based pyramid model was proposed and the problems of storage,scheduling and rendering of the huge volume and multi-resolution images were resolved.A visually correct terrain rendering algorithm was introduced in which the DEM data and texture were managed in a coherent framework,and 3D height information was rendered on GPU with per-pixel style.The feasibility of rendering complex scene of aerospace experiments on the current commercial computer was evaluated.The results demonstrated the effectiveness of the proposed visualization method.
Key words:aerospace experiments;visualization;planet appearance;GPU;real-time
作者简介:范文山(1975-),男,博士,工程师,研究方向为实时渲染算法、GPU并行算法。E-mail:phoenix2fly@sohu.com
收稿日期:2015-07-06;修回日期:2016-02-14
中图分类号:TP39
文献标识码:A
文章编号:1674-5825(2016)02-0227-06