基于OPENGL 标准的地学信息可视化
1 前言
以计算机应用为主要技术手段的地质科学信息化已经成为时代的潮流[ 1 ]。由于大量三维
空间数字形式的地质勘查信息不断积累, 地质科学也已逐步从传统的定性描述发展到定量研
究阶段。长期以来, 因计算机软硬件技术水平的限制, 地质信息处理只能以批处理方式进行, 而
不能进行交互式分析。当向计算机输入数据后, 使用者就不能再对计算过程进行干预和引导,
只能被动地等待计算结果的输出, 而大量的输出结果只能采用人工方式直接处理, 过程十分冗
繁, 所花费时间往往是计算时间的几倍, 甚至几十倍, 不仅不能及时得到有关计算结果的直观、
形象的整体概念, 而且还可能丢失大量信息, 因而对现有数据的处理方式及演示手段提出了挑
战。
科学计算可视化技术是解决这一问题的重要途径。它充分利用了计算机图形学和图像处
理技术, 将科学计算过程中产生的数据及计算结果转换为二维、三维图形或图像在屏幕上显
示, 进行互式处理, 其优点十分明显, 不仅大大加快数据资料的处理速度, 使目前每时每刻都在
产生的庞大资料得到充分利用, 而且还可以实现计算过程的引导和控制, 通过友好的人机交互
手段改变计算所依据的条件, 并观察其影响, 在人与数据、人与人之间实现图形、图像通信, 而
不是目前的文字通信或数字通信。更重要的是将计算过程以图形形式动态、立体地表现, 结果
形象生动, 大大提高了目前数据解释水平和推测准确性, 实现科学计算工具和环境的进一步现
代化, 从而使科学研究工作的面貌发生根本性的变化[ 2, 3 ]。
事实上, 地质科学可视化是近年来科学计算可视化研究和应用的重要方面。国外三维数字
地质模型静态图示软件已经商品化, 三维多边形域柱状图编制技术趋于成熟, 任意形状复杂地
质模型立体图示技术也已取得了巨大进展[ 4, 5 ]。但我国却较少开展多维图示技术的基础软件开
发, 多数利用国外商品化软件作二次开发。其面临的主要难题是国内地层模型定量化研究程度
不够, 特别在地质勘查数据升维内插、外推方法, 地质过程数学模拟过程研究严重不足, 同时又
缺乏图形技术的硬件开发接口及软件技术底层接口, 因而至今未能有所突破。
近年来, 在三维图示方面崭露头角的各种技术标准层出不穷, 较著名的有SG I 公司的
OpenGL , 3Dfx 公司的Glide,M icro sof t 公司的D irectX⋯⋯, 这些标准均定义了一系列与具体
显示硬件无关的编程接口, 直接利用这些接口进行开发, 不需要从底层进行矩阵变换等一系列
三维坐标交换、透视交换和光照模型处理, 在很大程度上提高了图形处理的效率, 因而可以借
助于普通微机实现三维图形的动态生成与实时漫游, 极大地扩展了各领域内图形软件的开发
和应用。
其中, 由SG I 公司领导制定的三维图形开发环境OpenGL , 由于其接近真实感的高超表现
能力, 准实时性的动态显示性能, 独立于各平台的可移植性, 良好的前瞻性, 伸缩性和可扩展
性, 赢得了用户的广泛赞誉。OpenGL 实际上就是一个三维图形和模型库, 诸如IBM、SG I、
M icro sof t、DEC、SUN、HP 等世界著名计算机厂商都将其作为自己的图形标准, 从而使
OpenGL 成为应用最为广泛的新一代三维图形工业标准[ 6 ]。
为了使W indow s 平台上的用户能够欣赏到OpenGL 带来的精彩三维世界,M icro sof t 公
司与SGL 公司合作共同开发了OpenGL 的W indow sN T 版本, 后来又集成于W indow s 95 中
(O SR2 及以后版本)。目前,OpenGL 以动态链接库形式(OpenGL 321DLL 和Glu321DLL ) 挂
接到W indow s N T 3151、W indow s N T 410、W indow s95 (O SR2)、W indow s98 等环境中, 开发者
可以在各种硬件平台及操作系统下方便地利用该图形库, 同时为了利用可视化开发工具
V isual C+ + 的强大功能来实现对OpenGL 三维图形的绘制,V isual C+ + 210 以上版本中, 提供
了OpenGL 的静态库和开发库(SDK) , 并支持新版OpenGL 中的一些新功能, 如: 改进的打印
机支持, 三维纹理映射等, 这些都为在微机上实现高品质交互式三维图形开发提供了良好的便
利条件。
2 Op enGL 的工作原理
OpenGL 的工作原理类似于“状态机”, 即各项属性均保持上一次设定时的状态, 除非使用
者显式地改变这种状态。因而多数的可视化系统均采用一种称为“可视化流水线”
(V isualizat ion p ipeline) 模型(图1) , 该模型将整个可视化过程划分为建模、坐标及透视变换、
光照和材质、纹理映射、双缓存交换等5 个步骤, 每个步骤的作用阐述如下:
双缓建模坐标及透视交换光照和材质纹理映射存交换
图1 可视化流水线示意图
211 建模
地质体的物质组成、结构构造直至动态演化极为复杂, 非常规的数学方法所能准确描述,
同时还受制于地质数据在空间上的可利用性。如利用三维人工地震所形成的地下真三维数据
体, 很容易实现地质模型的立体、动态显示, 但其它地质勘查手段所获取的数据, 往往是一维的
点源数据和线数据(如钻孔、测井数据) , 要实现三维立体动态显示, 首先解决数据升维问题。由
于观测点之间, 钻孔之间和测线之间通常有较大的距离, 而地质体在空间展布又极不规则, 且
变化复杂, 因而必须经过复杂的内插和外推。近20 年来, 迅速发展起来的地质统计学, 为地质
数据的空间插值, 提供了一条解决之道。与常规插值方法相比, 由于考虑了空间相关性和各向
异性, 而使得插值结果与地质实际有着较好的匹配性。但同时, 它也是一种光滑的插值方法, 因
而在一定程度上过滤了地质数据中所包含的高频信息。在此方面分形技术却提供了一个新的
思路, 因而今后加强分形、小波与地质统计学的结合, 可能会较好地解决地质数据的空间插值
问题。
212 坐标及透视变换
表现一个立体模型的常用方法是先采用透视原理进行坐标变换。透视成图方法主要有3
种: 平行透视法、成角透视法和倾斜透视法。这些方法都是从三维空间到二维空间的变换, 其中
成角视法又称二点透视法, 采用此法绘制的图形有两个消失点, 图形各个面的视平线不平行,
而垂直面始终与水平面保持垂直, 但长度有所变化。用该方法绘制的图形有较强的立体感, 更
接近人眼对实际物体的观察效果, 因此是自动绘制立体图的常用透视画法。OpenGL 即提供了
包括成角透视法在内的一系列基本透视变换, 在图形绘制过程中, 只需设定投影、坐标、几何和
视点变换方法, 剩下工作均由系统自动完成。
213 光照和材质
光照是真实感图形表现的重要组成部分。在现实世界中, 当光线照在非完全透明物体上
时, 部分光线被物体吸收, 剩余部分则被反射, 人眼就依靠这种反射光线来感知物体的形状、颜
色及其它细节。但光与物体的相互作用十分复杂, 虽然现有多种算法已成功应用于真实感图形
表现, 如Cook2To rrance 模型适合于表现物体表面材质效果, To rrance2Sparrow 模型适合于
非常光滑的反射表现, Hall 模型能够精确表现物体表面透射特性, 但上述方法均存在一个问
题就是算法异常复杂, 计算量大, 难以实时模拟[ 7 ]。OpenGL 在光照的真实效果和实时绘制速
度之间采取一种折衷的处理方法, 以一种近似的光照模型来模拟现实世界的光照效果。它将光
线细分为4 个独立的组成部分: 辐射光、环境光、散射光和反射光, 分别来模拟现实世界中的物
体自辐射光线、环境背景光线、物体对特定光源的散射和反射光线。它将这4 个部分单独计算,
然后再合并在一起, 表现物体的最终效果, 能够比较真实地实时再现自然界的物体。
214 纹理映射
地质信息的真实表现, 还面临另一巨大挑战, 即地质数据显示很大部分是对自然现象的模
拟表现, 但真实物体的纹理特征很难以计算机模拟, 更多的时候, 这种表现还得来自于现实世
界物质的纹理图象。在具体的三维模型制作过程中, 在模型表面叠加上现实世界中物体的纹
理, 可使模型更加生动、自然, 这就是所谓的纹理映射技术。例如可以在一个三维数字地形模型
(DTM ) 表面映射对应地区的卫星遥感图象, 使模型与相应地区的现实特征表现一致, 从而增
强了地形的真实感和生动性。另一方面也可以使用这种方法来可视化模拟某种地质特征, 如将
颜色分级表现的地温数据映射到对应立体模型内部, 从而形象地表示了地温的空间分布特征。
OpenGL 直接提供了有关纹理映射的A P I 函数, 开发者只需定义纹理图象, 并给定与模型匹
配的控制点, 系统即可直接实现这一效果, 从而为地质数据可视化提供了很大的帮助。
215 双缓存交换
地质过程的动态演示可以通过双缓存交换来实现, 在绘制图形以前, 先分配两个颜色缓冲
区, 在执行绘制任务时, 在一个缓冲区中执行绘制命令的时候, 在另一个缓冲区中进行图形显
示, 这样就可以使所显示的图形连续变化。但因地质模型的巨大数据量, 使得在现有的硬件技
术下, 立体动态显示十分艰难, 在多数情况下, 仍需特殊硬件(3D 图形加速卡) 支持。
另外, 由于地质体经历过长期而复杂的演化历程, 地质过程的重塑和再造涉及复杂的指导
理论和分析模型, 现有地质过程的数学模拟研究还远未达到实用阶段, 模型过于简化, 常忽略
系统内各参数之间的反馈控制关系, 与地质实际严重脱节, 这才是真正困扰地质过程计算机模
拟应用的根本原因。因此, 今后的动态模拟研究, 一方面有待于计算机硬件的提高, 另一方面还
应加强对实际地质过程的分析, 并与地质过程数学模拟结合起来, 提高地质模型研究的深度和
广度。
基于以上原理, 在W indow s N T 410 平台上, 采用VC+ + 610 作为前台开发工具, 实现了某
地地形的三维立体表现。模型数据是在该地离散高程数据点基础上, 采用带有二次漂移的泛克
立格法内插, 得到该地地形的三维规则格网数据, 纹理使用相应地区1∶215 万TM 543 遥感
影象, 其效果具有明显的立体真实感(图2)。
图2 O pe nGL 环境下的三维表面图
计算机技术与地质学相结合是近20 年来的重要研究方向, 同时, 地球资源与环境科学是
21 世纪最重要的研究领域之一。面临地学中时间跨度大, 难以观测的难题, 将计算机信息工程
和地质过程模拟相结合, 是一条很好的出路。三维可视化技术为地质工作者提供了一个三维逼
真的动态交互环境, 使我们对研究区域地质状况的认识更加全面、迅速、详细。当然, 本文的讨
论还仅是OpenGL 初步功能, 若要进一步提高图形真实感, 还要应用到雾化、深度域效果、分
形模拟和实时交互等技术。相信随着计算机模拟技术在地质领域内的成熟应用, 必将给地质学
研究带来前所未有的飞跃。
参考文献:
[1 ]吴冲龙1 计算机技术与地矿工作信息化[J ]1 地学前缘, 1998 (4) : p 3431
[2 ]唐泽圣1 科学计算可视化及其应用[N ]1 计算机世界报, 1998, 6, 291
[3 ]石教英1 面向21 世纪的可视化技术展望[N ]1 计算机世界报, 1998, 6, 291
[4 ]李裕伟1 空间信息技术的发展及其在地球科学中的应用[J ]1 地学前缘, 1998 (4) : p 335
[5 ]Joes1 在地质领域内应用的三维空间信息系统的数据结构[J ]1 华东地院学报, 1993 (9) : p 2631
[6 ]彭晓明1OpenGL 深入编程与实例揭秘[M ]1 北京: 人民邮电出版社, 1999, 61
[7 ]彭群生等1 计算机真实感图形的算法基础[M ]1 北京: 科学出版社, 1999, 61
[8 ]张一伟1 陆相油藏描述[M ]1 北京: 石油工业出版社, 1997, 51
[9 ]黄健全1 实用计算机地质制图[M ]1 北京: 地质出版社, 1998, 121
以计算机应用为主要技术手段的地质科学信息化已经成为时代的潮流[ 1 ]。由于大量三维
空间数字形式的地质勘查信息不断积累, 地质科学也已逐步从传统的定性描述发展到定量研
究阶段。长期以来, 因计算机软硬件技术水平的限制, 地质信息处理只能以批处理方式进行, 而
不能进行交互式分析。当向计算机输入数据后, 使用者就不能再对计算过程进行干预和引导,
只能被动地等待计算结果的输出, 而大量的输出结果只能采用人工方式直接处理, 过程十分冗
繁, 所花费时间往往是计算时间的几倍, 甚至几十倍, 不仅不能及时得到有关计算结果的直观、
形象的整体概念, 而且还可能丢失大量信息, 因而对现有数据的处理方式及演示手段提出了挑
战。
科学计算可视化技术是解决这一问题的重要途径。它充分利用了计算机图形学和图像处
理技术, 将科学计算过程中产生的数据及计算结果转换为二维、三维图形或图像在屏幕上显
示, 进行互式处理, 其优点十分明显, 不仅大大加快数据资料的处理速度, 使目前每时每刻都在
产生的庞大资料得到充分利用, 而且还可以实现计算过程的引导和控制, 通过友好的人机交互
手段改变计算所依据的条件, 并观察其影响, 在人与数据、人与人之间实现图形、图像通信, 而
不是目前的文字通信或数字通信。更重要的是将计算过程以图形形式动态、立体地表现, 结果
形象生动, 大大提高了目前数据解释水平和推测准确性, 实现科学计算工具和环境的进一步现
代化, 从而使科学研究工作的面貌发生根本性的变化[ 2, 3 ]。
事实上, 地质科学可视化是近年来科学计算可视化研究和应用的重要方面。国外三维数字
地质模型静态图示软件已经商品化, 三维多边形域柱状图编制技术趋于成熟, 任意形状复杂地
质模型立体图示技术也已取得了巨大进展[ 4, 5 ]。但我国却较少开展多维图示技术的基础软件开
发, 多数利用国外商品化软件作二次开发。其面临的主要难题是国内地层模型定量化研究程度
不够, 特别在地质勘查数据升维内插、外推方法, 地质过程数学模拟过程研究严重不足, 同时又
缺乏图形技术的硬件开发接口及软件技术底层接口, 因而至今未能有所突破。
近年来, 在三维图示方面崭露头角的各种技术标准层出不穷, 较著名的有SG I 公司的
OpenGL , 3Dfx 公司的Glide,M icro sof t 公司的D irectX⋯⋯, 这些标准均定义了一系列与具体
显示硬件无关的编程接口, 直接利用这些接口进行开发, 不需要从底层进行矩阵变换等一系列
三维坐标交换、透视交换和光照模型处理, 在很大程度上提高了图形处理的效率, 因而可以借
助于普通微机实现三维图形的动态生成与实时漫游, 极大地扩展了各领域内图形软件的开发
和应用。
其中, 由SG I 公司领导制定的三维图形开发环境OpenGL , 由于其接近真实感的高超表现
能力, 准实时性的动态显示性能, 独立于各平台的可移植性, 良好的前瞻性, 伸缩性和可扩展
性, 赢得了用户的广泛赞誉。OpenGL 实际上就是一个三维图形和模型库, 诸如IBM、SG I、
M icro sof t、DEC、SUN、HP 等世界著名计算机厂商都将其作为自己的图形标准, 从而使
OpenGL 成为应用最为广泛的新一代三维图形工业标准[ 6 ]。
为了使W indow s 平台上的用户能够欣赏到OpenGL 带来的精彩三维世界,M icro sof t 公
司与SGL 公司合作共同开发了OpenGL 的W indow sN T 版本, 后来又集成于W indow s 95 中
(O SR2 及以后版本)。目前,OpenGL 以动态链接库形式(OpenGL 321DLL 和Glu321DLL ) 挂
接到W indow s N T 3151、W indow s N T 410、W indow s95 (O SR2)、W indow s98 等环境中, 开发者
可以在各种硬件平台及操作系统下方便地利用该图形库, 同时为了利用可视化开发工具
V isual C+ + 的强大功能来实现对OpenGL 三维图形的绘制,V isual C+ + 210 以上版本中, 提供
了OpenGL 的静态库和开发库(SDK) , 并支持新版OpenGL 中的一些新功能, 如: 改进的打印
机支持, 三维纹理映射等, 这些都为在微机上实现高品质交互式三维图形开发提供了良好的便
利条件。
2 Op enGL 的工作原理
OpenGL 的工作原理类似于“状态机”, 即各项属性均保持上一次设定时的状态, 除非使用
者显式地改变这种状态。因而多数的可视化系统均采用一种称为“可视化流水线”
(V isualizat ion p ipeline) 模型(图1) , 该模型将整个可视化过程划分为建模、坐标及透视变换、
光照和材质、纹理映射、双缓存交换等5 个步骤, 每个步骤的作用阐述如下:
双缓建模坐标及透视交换光照和材质纹理映射存交换
图1 可视化流水线示意图
211 建模
地质体的物质组成、结构构造直至动态演化极为复杂, 非常规的数学方法所能准确描述,
同时还受制于地质数据在空间上的可利用性。如利用三维人工地震所形成的地下真三维数据
体, 很容易实现地质模型的立体、动态显示, 但其它地质勘查手段所获取的数据, 往往是一维的
点源数据和线数据(如钻孔、测井数据) , 要实现三维立体动态显示, 首先解决数据升维问题。由
于观测点之间, 钻孔之间和测线之间通常有较大的距离, 而地质体在空间展布又极不规则, 且
变化复杂, 因而必须经过复杂的内插和外推。近20 年来, 迅速发展起来的地质统计学, 为地质
数据的空间插值, 提供了一条解决之道。与常规插值方法相比, 由于考虑了空间相关性和各向
异性, 而使得插值结果与地质实际有着较好的匹配性。但同时, 它也是一种光滑的插值方法, 因
而在一定程度上过滤了地质数据中所包含的高频信息。在此方面分形技术却提供了一个新的
思路, 因而今后加强分形、小波与地质统计学的结合, 可能会较好地解决地质数据的空间插值
问题。
212 坐标及透视变换
表现一个立体模型的常用方法是先采用透视原理进行坐标变换。透视成图方法主要有3
种: 平行透视法、成角透视法和倾斜透视法。这些方法都是从三维空间到二维空间的变换, 其中
成角视法又称二点透视法, 采用此法绘制的图形有两个消失点, 图形各个面的视平线不平行,
而垂直面始终与水平面保持垂直, 但长度有所变化。用该方法绘制的图形有较强的立体感, 更
接近人眼对实际物体的观察效果, 因此是自动绘制立体图的常用透视画法。OpenGL 即提供了
包括成角透视法在内的一系列基本透视变换, 在图形绘制过程中, 只需设定投影、坐标、几何和
视点变换方法, 剩下工作均由系统自动完成。
213 光照和材质
光照是真实感图形表现的重要组成部分。在现实世界中, 当光线照在非完全透明物体上
时, 部分光线被物体吸收, 剩余部分则被反射, 人眼就依靠这种反射光线来感知物体的形状、颜
色及其它细节。但光与物体的相互作用十分复杂, 虽然现有多种算法已成功应用于真实感图形
表现, 如Cook2To rrance 模型适合于表现物体表面材质效果, To rrance2Sparrow 模型适合于
非常光滑的反射表现, Hall 模型能够精确表现物体表面透射特性, 但上述方法均存在一个问
题就是算法异常复杂, 计算量大, 难以实时模拟[ 7 ]。OpenGL 在光照的真实效果和实时绘制速
度之间采取一种折衷的处理方法, 以一种近似的光照模型来模拟现实世界的光照效果。它将光
线细分为4 个独立的组成部分: 辐射光、环境光、散射光和反射光, 分别来模拟现实世界中的物
体自辐射光线、环境背景光线、物体对特定光源的散射和反射光线。它将这4 个部分单独计算,
然后再合并在一起, 表现物体的最终效果, 能够比较真实地实时再现自然界的物体。
214 纹理映射
地质信息的真实表现, 还面临另一巨大挑战, 即地质数据显示很大部分是对自然现象的模
拟表现, 但真实物体的纹理特征很难以计算机模拟, 更多的时候, 这种表现还得来自于现实世
界物质的纹理图象。在具体的三维模型制作过程中, 在模型表面叠加上现实世界中物体的纹
理, 可使模型更加生动、自然, 这就是所谓的纹理映射技术。例如可以在一个三维数字地形模型
(DTM ) 表面映射对应地区的卫星遥感图象, 使模型与相应地区的现实特征表现一致, 从而增
强了地形的真实感和生动性。另一方面也可以使用这种方法来可视化模拟某种地质特征, 如将
颜色分级表现的地温数据映射到对应立体模型内部, 从而形象地表示了地温的空间分布特征。
OpenGL 直接提供了有关纹理映射的A P I 函数, 开发者只需定义纹理图象, 并给定与模型匹
配的控制点, 系统即可直接实现这一效果, 从而为地质数据可视化提供了很大的帮助。
215 双缓存交换
地质过程的动态演示可以通过双缓存交换来实现, 在绘制图形以前, 先分配两个颜色缓冲
区, 在执行绘制任务时, 在一个缓冲区中执行绘制命令的时候, 在另一个缓冲区中进行图形显
示, 这样就可以使所显示的图形连续变化。但因地质模型的巨大数据量, 使得在现有的硬件技
术下, 立体动态显示十分艰难, 在多数情况下, 仍需特殊硬件(3D 图形加速卡) 支持。
另外, 由于地质体经历过长期而复杂的演化历程, 地质过程的重塑和再造涉及复杂的指导
理论和分析模型, 现有地质过程的数学模拟研究还远未达到实用阶段, 模型过于简化, 常忽略
系统内各参数之间的反馈控制关系, 与地质实际严重脱节, 这才是真正困扰地质过程计算机模
拟应用的根本原因。因此, 今后的动态模拟研究, 一方面有待于计算机硬件的提高, 另一方面还
应加强对实际地质过程的分析, 并与地质过程数学模拟结合起来, 提高地质模型研究的深度和
广度。
基于以上原理, 在W indow s N T 410 平台上, 采用VC+ + 610 作为前台开发工具, 实现了某
地地形的三维立体表现。模型数据是在该地离散高程数据点基础上, 采用带有二次漂移的泛克
立格法内插, 得到该地地形的三维规则格网数据, 纹理使用相应地区1∶215 万TM 543 遥感
影象, 其效果具有明显的立体真实感(图2)。
图2 O pe nGL 环境下的三维表面图
计算机技术与地质学相结合是近20 年来的重要研究方向, 同时, 地球资源与环境科学是
21 世纪最重要的研究领域之一。面临地学中时间跨度大, 难以观测的难题, 将计算机信息工程
和地质过程模拟相结合, 是一条很好的出路。三维可视化技术为地质工作者提供了一个三维逼
真的动态交互环境, 使我们对研究区域地质状况的认识更加全面、迅速、详细。当然, 本文的讨
论还仅是OpenGL 初步功能, 若要进一步提高图形真实感, 还要应用到雾化、深度域效果、分
形模拟和实时交互等技术。相信随着计算机模拟技术在地质领域内的成熟应用, 必将给地质学
研究带来前所未有的飞跃。
参考文献:
[1 ]吴冲龙1 计算机技术与地矿工作信息化[J ]1 地学前缘, 1998 (4) : p 3431
[2 ]唐泽圣1 科学计算可视化及其应用[N ]1 计算机世界报, 1998, 6, 291
[3 ]石教英1 面向21 世纪的可视化技术展望[N ]1 计算机世界报, 1998, 6, 291
[4 ]李裕伟1 空间信息技术的发展及其在地球科学中的应用[J ]1 地学前缘, 1998 (4) : p 335
[5 ]Joes1 在地质领域内应用的三维空间信息系统的数据结构[J ]1 华东地院学报, 1993 (9) : p 2631
[6 ]彭晓明1OpenGL 深入编程与实例揭秘[M ]1 北京: 人民邮电出版社, 1999, 61
[7 ]彭群生等1 计算机真实感图形的算法基础[M ]1 北京: 科学出版社, 1999, 61
[8 ]张一伟1 陆相油藏描述[M ]1 北京: 石油工业出版社, 1997, 51
[9 ]黄健全1 实用计算机地质制图[M ]1 北京: 地质出版社, 1998, 121