林业科学  2004, Vol. 40 Issue (4): 80-83   PDF    
0

文章信息

王霓虹.
Wang Nihong.
林业三维地形图软件构件设计的探讨
Approach to Software Component Design of Three-dimension Topographic Map in Forestry
林业科学, 2004, 40(4): 80-83.
Scientia Silvae Sinicae, 2004, 40(4): 80-83.

文章历史

收稿日期:2004-09-23

作者相关文章

王霓虹

林业三维地形图软件构件设计的探讨
王霓虹     
东北林业大学 哈尔滨 150040
摘要: 本文提出了一种面向对象的支持林业三维地形图软件构件(Software Component)设计方法,分析了构件的性能、设计方法和图元算法。实现了基于OpenGL的支持三维虚拟场景、建模和运动仿真的构件设计,描述了实体的运动层次链接关系和数据结构,并实现了虚拟环境的林业建模和运动仿真。
关键词: 软件构件    OpenGL    三维图形    
Approach to Software Component Design of Three-dimension Topographic Map in Forestry
Wang Nihong     
Northeast Forestry University Harbin 150040
Abstract: This article puts forward a kind of designing method of O O (Object Oriented) and supported for software component of three-dimension topographic map in forestry, and the capability, designing method, and the algorithm of graphic cell were analyzed. The component design of three-dimension virtue-scenes based on OpenGL, module construction, and movement-simulation have been realized. In this article, the movement-hierarchy link relation of entities and data structure have been described, the constructing modele and movement-simulation of the virtue environment in forestry have also been realized.
Key words: Software component    OpenGL    Three-dimension graphics    

人类的生产方式由单件生产进化到工业生产,其决定性的飞跃就是出现了标准化的零部件,产品是由零部件装配而成,使生产走上了规模化。随着信息技术的不断发展和时代的需求,软件也正在逐渐脱离传统的生产模式,转向基于在标准化软件构件基础上的高效的新型生产方式。软件构件化可以说是跨世纪软件技术发展的一大热点,其目的是彻底改变软件生产方式,从根本上提高软件生产的效率和质量,提高开发商品化大型软件系统的成功率。当前,“数字地球”、“数字省”、“数字城市”、“数字校园”、“数字农业”等是信息技术领域的热门话题。笔者在进行“数字林业”研究中发现对地形的三维图形处理具有共性,是可通用的,它对于森林资源、森林防火、森林生态和林地动植物保护等领域的研究工作,都具有很强的辅助决策功能。因此,研究、开发森林地形的三维图形处理软件构件具有重要的意义。本文针对三维图形在林业中的应用,从代码的可移植性、场景、模型数据的易管理性,实现了基于OpenGL基本函数库的可重用的支持三维建模和三维交互的构件。

1 软件构件技术

软件构件要面对的问题首先是定义一个构件,即如何在实际的应用领域和模型中找出有共性、可通用的部分。其二是多个构件相互之间的集成和装配。为使构件集成具体的应用系统,使构件能够装配互换,须有一个统一的标准,如跨平台的开放标准CORBA(公共对象调用中介结构)等。其三是如何实现构件之间的接口、解决数据共享的问题。其四是构件化系统如何继承非构件化系统的数据?如何实现这一过渡和转变?这些都是软件构件化技术在发展路途中面临的重要问题。

一个软件构件按功能可分为3层:基础层为基本数据类和系统支撑构件;中间层为各种通用的中间件;顶层则为针对各种领域的专用构件或子系统构件。从粒度看通常底层的粒度为较小,而顶层的粒度为较大(Van Dam et al., 1998)。总之,软件构件应是具有预制性、封装性、透明性、互换性、通用性的一个软件单元。

2 OpenGL技术

OpenGL最早是由SGI(Silicon Graphics Incorporated)公司推出了GL(graphic library)三维图形库,现已经发展成为OpenGL,目前各大公司都采用了OpenGL图形标准。它可以运行在多种操作系统之上。各种编程语言如Visual C++、Visual Basic、Delphi和Java等都可以调用OpenGL中的库函数,OpenGL完全独立于各种网络协议和网络拓扑结构(Brian Paul, 1997)。OpenGL是高性能图形和交互式视景处理的标准,是一种图形与硬件的接口,它不仅加速了3D应用程序的开发,而且使应用程序的可移植性更好。0penGL提供了数百个库函数,可方便地绘制具有真实感3D图形(张涛等,2001)。OpenGL工作流程如图 1

图 1 OpenGL工作流程图 Fig. 1 OpenGL working flow idagram

其中顶点数据包括模型的顶点集、线集、多边形集,这些数据经过流程图的上部,包括运算器、逐个顶点操作等;图像数据包括象素集、影像集、位图集等,图像象素数据的处理方式与几何顶点数据的处理方式是不同的,但它们都经过光栅化、逐个片元(Fragment)处理直至把最后的光栅数据写入帧缓冲器。OpenGL中,显示列表技术是一项重要的技术。OpenGL要求把所有的几何图形单元都用顶点来描述,这样运算器和逐个顶点计算操作都可以针对每个顶点进行计算和操作,然后进行光栅化形成图形碎片; 对于象素数据,象素操作结果被存储在纹理组装用的内存中,再象几何顶点操作一样光栅化形成图形片元(白云等,2000)。OpenGL支持网络,OpenGL作为一个与硬件独立的图形接口,它不提供与硬件密切相关的设备操作函数,是独立于操作系统和硬件环境的三维图形软件库。

3 林业三维地形图软件构件的设计与实现 3.1 设计的基本思想

为了使林业三维地形图构件在使用时具有更大的灵活性,在设计构件时采用了一种层次结构(图 2)。

图 2 层次结构 Fig. 2 Layer configuration

按照构件所提供的功能进行划分,高一层的构件可以使用较低层构件所提供的功能,但低层的构件不能使用较高层构件所提供的功能。这种层次结构使用户可以在不同层次上使用该构件所提供的功能,同时具有良好的可扩展性,表现在横向扩展有两种:其一是各层可方便地增加新的构件;其二是两个或多个已存在的构件可合并成一个更大的构件。纵向扩展是指在林业地形基本设计构件上再扩展新的开发工具。

由于微软公司的视窗界面是目前最为流行的,因此我们的设计是基于该操作系统的。

地形图的数据由GIS提供,近年GIS厂商与数据库厂商的合作,已开发出多种接口软件,如ESRI(environmental systems research institute美国环境系统研究所)公司的ArcSDE等,因此可以采用通用的ODBC(open data base connectivity)API(application programming interface)来从数据库中获取地形数据,对一些不常用的地形数据格式,可以采取事先处理的方式来解决,如ESRI公司的ArcGis或Safe Software公司的FME2003X2等。

3.2 实现的基本功能

基础函数与对象层矢量、矩阵与四元组运算,鼠标跟踪球算法;点阵字体与三维矢量字体输出;图像输入输出以及纹理映射。支持GIS常用数据格式和BMP、GIF、JPEG、TGA等图像格式。

图形对象层        常用几何图元的绘制,如圆锥、圆柱、球、环等;常用几何对象,如长方体、圆锥体、圆柱体、球体和圆环体等。多边形模型对象,可用于绘制3DS模型等。

节点绘制与交互层        场景图中的各节点采用树形结构表示,节点的绘制采用从根节点开始深度优先的方法; 交互层主要完成节点的选取、移动、旋转、放大、缩小等操作以及视点的变化。

林业地形基本节点层        基本节点包括各类水系、公路、铁路、行政边界等;林政节点包括各居民点、了望塔、检查站、各种设施等;地理节点包括林场、林班、林地可燃物、坡度、坡向等; 林木节点包括各类树种等。

3.3 地形三维显示技术

地形数据有2种格式:规则格网(GRID)和不规则网(TIN)。地形三维显示的主要方法是将地形分剖为若干个三角形,三角形间用法向量进行平滑处理。由于等距分析等的需要,因此规则格网用得多一些。

使用数字化高程模型产生地形起伏阴影的方法是作为改进地图可视性质量的一种重要技术,这种表达方法主要是以人们视觉的生理本能为前提,人们对物体阴阳面反差的视觉感应会产生立体的视觉映射,为了产生这种效果要考虑太阳照射地形起伏的阴影模型,来模拟地表在一定的地面坡向、坡位、太阳方位及具体的时间和季节条件下所表现的视觉观察亮度。笔者在研究中也充分考虑了这个技术。

3.4 实现步骤 3.4.1 数据准备

矢量或DEM(digital elevation models数字高程模型)格式。

3.4.2 投影变换方式

正射投影变换和透视投影变换,见图 3图 4

图 3 正射投影视景体 Fig. 3 Orthograph view
图 4 透视投影视景体 Fig. 4 Scenograph view
3.4.3 参数设置

光源参数设置:光源性质、位置、颜色、强度等,颜色,明暗处理、纹理影射、视点位置、视线方向等。

3.4.4 地形模型

三维地形的几何构造要素是三角形,为提高显示速度,应将三角形组织成三角形带。

3.5 三维漫游技术

有2种:其一是视点固定,目标交互移动;其二是目标固定,视点移动。

第1种:先设置初始场景,再实时改变基本模型变换,如平移、旋转、缩放等参数。

第2种:改变视点和视线方向,重新计算视点坐标、视线方向和透视变换。

3.6 构件的实现

构件是利用MS Visual C++中的ATL(active template library活动模板库)建立的基于COM的组件库,在利用ATL向导生成组件本质上是COM组件对象,其他程序在向COM对象发请求必须知道其所支持的操作、类型、对象的接口规定,对象所支持的操作和类型,也就定义了可向该对象提供的请求。对象的接口由IDL(interface define language)来描述,IDL的特点就是其语言独立性,通过映射使得对象接口的定义与对象的实现分开,允许对象用不同的程序设计语言实现但应能保持之间的通信。ATL向导自动生成了IDL到其他具体语言的映射,用户只要将类的函数加入到IDL映射即可被其他语言所调用。

在构件的设计中主要利用OpenGL基本函数库以几何顶点为基础来生成新的图元。如直线、几何平面、球面、圆锥面、正方体、圆环曲面等,扩展构成新的图元库,便于程序开发者简单迅速地开发出三维场景和实体三维模型。每一个图元是用类来封装的,图元的实例化即生成构成实体部件的体素。

3.7 实例

三维林业地形软件构件是以COM组件的形式提供的,利用该组件在Windows平台下使用Visual C++、Delphi等开发工具,笔者在东北林业大学实验林场和实验基地开发了“数字林业”中的“森林防火辅助决策系统”(王霓虹等,2002),利用基本的地理信息图层(地形、河流、公路、林相等)和数字高程模型(DEM),通过在该系统中使用三维林业地形软件构件,展现的局部三维图中可清晰地显示出山脉的坡度、坡向、河流和公路,森林防火指挥人员通过旋转、多个观察点的变化以及放大缩小等方法,逼真地把真实世界展现在眼前,对如何派兵、确定进入火场路线和扑火方案等决策起到了很好的辅助作用,也使人们充分体会到面向对象和构件式程序设计带来的好处。日前,笔者曾采用软件重用(software rense)技术取得过一些经验,现在得益于现代信息技术的飞速发展,软件构件技术将对软件业的高效率和高质量产生重要的影响。

图 5 地形、河流3维图 Fig. 5 Three-dimension map of topography and rivers
4 结束语

目前,在三维造型、三维虚拟场景(virtual scene)等方面,有许多商业软件,但遗憾的是一般都是集成在某个软件包中,无法单独提取,与用户的自编程序很难结合在一起使用,给开发和设计带来了许多不便。本文针对三维图形在林业地形图中的应用,从代码的可移植性、场景、模型数据的易管理性,实现了基于OpenGL基本函数库的可重用的支持三维建模和三维交互的构件,使得编程工作量大大降低,而且便于对三维场景中物体的过程运动进行控制和管理,可以在不同的集成开发环境中重复利用。基于OpenGL的林业三维地形图构件是一个面向林业领域,基于Windows的交互式三维图形软件构件,该构件具有以下特点:(1)提供了底层的基本图形对象,使设计更加灵活;(2)提供了地形的基本图形对象,使设计更加简单;(3)提供了大量的人机交互接口,使交互设计更加容易;(4)采用COM技术,使构件与编程语言无关,应用面更广。

由于软件构件技术在我国尚处于起步阶段,笔者的水平有限及实际应用时间较短,目前开发的构件还存在一些问题,如数据格式的限制;缺乏灵活性;显示速度以及与其它构件的接口等,有待今后逐步完善。

参考文献(References)
白云, 金锋, 林锐, 等. 2000. 基于OpenGL的交互式三维图形软件开发工具. 计算机工程, (11): 158-160.
林锐, 石教英. 2000. 基于OpenGL的可复用软构件库与三维交互设计. 计算机研究与发展, 37(11): 1360-1366.
王霓虹. 2002. 基于WEB与3S技术的森林防火智能决策支持系统的研究. 林业科学, 38(3): 114-119.
薛安, 马蔼乃, 李天宏. 2001. 基于OpenGL实现真实感地形表现的研究. 中国图象图形学报, (8): 800-805. DOI:10.3969/j.issn.1006-8961.2001.08.017
张涛, 陈一民, 薛广涛. 2001. 基于PC和OpenGL的全景图象360度漫游技术. 计算机工程与应用, (7): 88-91. DOI:10.3321/j.issn:1002-8331.2001.07.029
Brian Paul. OpenGL and Window System Integration.In: SIGGRAPH'97 Course 24, 1997
Van Dam A, Puk D. 1998. The history of computer graphics standards development. Computer Graphics, 32(1): 34-38. DOI:10.1145/279389.279434