本文提出了一种面向对象的支持林业三维地形图软件构件(SoftwareComponent)设计方法,分析了构件的性能、设计方法和图元算法。实现了基于OpenGL的支持三维虚拟场景、建模和运动仿真的构件设计,描述了实体的运动层次链接关系和数据结构,并实现了虚拟环境的林业建模和运动仿真
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.
全 文 :第 ws卷 第 w期
u s s w年 z 月
林 业 科 学
≥≤∞× ≥∂ ∞ ≥≤∞
∂²¯1ws o²1w
∏¯ qou s s w
林业三维地形图软件构件设计的探讨
王霓虹
k东北林业大学 哈尔滨 txsswsl
摘 要 } 本文提出了一种面向对象的支持林业三维地形图软件构件k≥²©·º¤µ¨ ≤²°³²±¨ ±·l设计方法 o分析了构件的
性能 !设计方法和图元算法 ∀实现了基于 ³¨ ±的支持三维虚拟场景 !建模和运动仿真的构件设计 o描述了实体
的运动层次链接关系和数据结构 o并实现了虚拟环境的林业建模和运动仿真 ∀
关键词 } 软件构件 o ³¨ ±o三维图形
中图分类号 }≥ztt o≥zxz 文献标识码 } 文章编号 }tsst p zw{{kusswlsw p ss{s p sw
收稿日期 }ussv p s| p uv ∀
Αππροαχη το Σοφτωαρε Χοµ πονεντ ∆εσιγν οφ Τηρεε2διµενσιον Τοπογραπηιχ Μαπ ιν Φορεστρψ
• ¤±ª¬«²±ª
k Νορτηεαστ Φορεστρψ Υνιϖερσιτψ Ηαρβινtxsswsl
Αβστραχτ } ׫¬¶¤µ·¬¦¯¨ ³∏·¶©²µº¤µ§¤®¬±§²©§¨¶¬ª±¬±ª °¨ ·«²§²© k¥¨¦·µ¬¨±·¨§l ¤±§¶∏³³²µ·¨§©²µ¶²©·º¤µ¨ ¦²°³²±¨ ±·
²©·«µ¨ 2¨§¬°¨ ±¶¬²±·²³²ªµ¤³«¬¦°¤³¬±©²µ¨¶·µ¼o¤±§·«¨ ¦¤³¤¥¬¯¬·¼o§¨¶¬ª±¬±ª °¨ ·«²§o¤±§·«¨ ¤¯ª²µ¬·«° ²©ªµ¤³«¬¦¦¨¯¯ º¨ µ¨ ¤±2
¤¯¼½¨ §q׫¨ ¦²°³²±¨ ±·§¨¶¬ª± ²©·«µ¨ 2¨§¬°¨ ±¶¬²± √¬µ·∏¨2¶¦¨±¨ ¶¥¤¶¨§²± ³¨ ±o°²§∏¯¨¦²±¶·µ∏¦·¬²±o¤±§°²√¨ °¨ ±·2¶¬°∏¯¤2
·¬²± «¤√¨ ¥¨ ±¨ µ¨¤¯¬½¨ §q±·«¬¶¤µ·¬¦¯¨ o·«¨ °²√¨ °¨ ±·2«¬¨µ¤µ¦«¼ ¬¯±®µ¨ ¤¯·¬²±²© ±¨·¬·¬¨¶¤±§§¤·¤¶·µ∏¦·∏µ¨ «¤√¨ ¥¨ ±¨ §¨¶¦µ¬¥¨§o
·«¨ ¦²±¶·µ∏¦·¬±ª°²§¨¯¨ ¤±§°²√¨ °¨ ±·2¶¬°∏¯¤·¬²± ²©·«¨ √¬µ·∏¨ ±¨√¬µ²±°¨ ±·¬±©²µ¨¶·µ¼ «¤√¨ ¤¯¶² ¥¨ ±¨ µ¨¤¯¬½¨ §q
Κεψ ωορδσ} ≥²©·º¤µ¨ ¦²°³²±¨ ±·o³¨ ±o׫µ¨ 2¨§¬°¨ ±¶¬²± ªµ¤³«¬¦¶
人类的生产方式由单件生产进化到工业生产 o其决定性的飞跃就是出现了标准化的零部件 o产品是由零
部件装配而成 o使生产走上了规模化 ∀随着信息技术的不断发展和时代的需求 o软件也正在逐渐脱离传统的
生产模式 o转向基于在标准化软件构件基础上的高效的新型生产方式 ∀软件构件化可以说是跨世纪软件技
术发展的一大热点 o其目的是彻底改变软件生产方式 o从根本上提高软件生产的效率和质量 o提高开发商品
化大型软件系统的成功率 ∀当前 o/数字地球0 !/数字省0 !/数字城市0 !/数字校园0 !/数字农业0等是信息技
术领域的热门话题 ∀笔者在进行/数字林业0研究中发现对地形的三维图形处理具有共性 o是可通用的 o它对
于森林资源 !森林防火 !森林生态和林地动植物保护等领域的研究工作 o都具有很强的辅助决策功能 ∀因此 o
研究 !开发森林地形的三维图形处理软件构件具有重要的意义 ∀本文针对三维图形在林业中的应用 o从代码
的可移植性 !场景 !模型数据的易管理性 o实现了基于 ³¨ ±基本函数库的可重用的支持三维建模和三维
交互的构件 ∀
t 软件构件技术
软件构件要面对的问题首先是定义一个构件 o即如何在实际的应用领域和模型中找出有共性 !可通用的
部分 ∀其二是多个构件相互之间的集成和装配 ∀为使构件集成具体的应用系统 o使构件能够装配互换 o须有
一个统一的标准 o如跨平台的开放标准 ≤
k公共对象调用中介结构l等 ∀其三是如何实现构件之间的接
口 !解决数据共享的问题 ∀其四是构件化系统如何继承非构件化系统的数据 如何实现这一过渡和转变
这些都是软件构件化技术在发展路途中面临的重要问题 ∀
一个软件构件按功能可分为 v层 }基础层为基本数据类和系统支撑构件 ~中间层为各种通用的中间件 ~
顶层则为针对各种领域的专用构件或子系统构件 ∀从粒度看通常底层的粒度为较小 o而顶层的粒度为较大
k∂¤± ⁄¤° ετ αλqot||{l ∀总之 o软件构件应是具有预制性 !封装性 !透明性 !互换性 !通用性的一个软件单元 ∀
u ³¨ ±技术
³¨ ±最早是由 ≥k≥¬¯¬¦²± µ¤³«¬¦¶±¦²µ³²µ¤·¨§l公司推出了 kªµ¤³«¬¦ ¬¯¥µ¤µ¼l三维图形库 o现已经发
展成为 ³¨ ±o目前各大公司都采用了 ³¨ ±图形标准 ∀它可以运行在多种操作系统之上 ∀各种编程语
言如 ∂¬¶∏¤¯ ≤ n n !∂¬¶∏¤¯
¤¶¬¦!⁄¨ ³¯«¬和 ¤√¤等都可以调用 ³¨ ±中的库函数 o³¨ ±完全独立于各种网
络协议和网络拓扑结构k
µ¬¤± °¤∏¯ ot||zl ∀ ³¨ ±是高性能图形和交互式视景处理的标准 o是一种图形与
硬件的接口 o它不仅加速了 v⁄应用程序的开发 o而且使应用程序的可移植性更好 ∀s³¨ ±提供了数百个库
函数 o可方便地绘制具有真实感 v⁄图形k张涛等 ousstl ∀ ³¨ ±工作流程如图 t }
图 t ³¨ ±工作流程图
ƒ¬ªqt ³¨ ±º²µ®¬±ª©¯²º ¬§¤ªµ¤°
其中顶点数据包括模型的顶点集 !线集 !多边形集 o这些数据经过流程图的上部 o包括运算器 !逐个顶点操作
等 ~图像数据包括象素集 !影像集 !位图集等 o图像象素数据的处理方式与几何顶点数据的处理方式是不同
的 o但它们都经过光栅化 !逐个片元kƒµ¤ª°¨ ±·l处理直至把最后的光栅数据写入帧缓冲器 ∀ ³¨ ±中 o显示
列表技术是一项重要的技术 ∀ ³¨ ±要求把所有的几何图形单元都用顶点来描述 o这样运算器和逐个顶点
计算操作都可以针对每个顶点进行计算和操作 o然后进行光栅化形成图形碎片 ~对于象素数据 o象素操作结
果被存储在纹理组装用的内存中 o再象几何顶点操作一样光栅化形成图形片元k白云等 ousssl ∀ ³¨ ±支
持网络 o³¨ ±作为一个与硬件独立的图形接口 o它不提供与硬件密切相关的设备操作函数 o是独立于操作
系统和硬件环境的三维图形软件库 ∀
图 u 层次结构
ƒ¬ªqu ¤¼¨ µ¦²±©¬ª∏µ¤·¬²±
林业地形基本节点层
ƒ²µ¨¶·µ¼·²³²ªµ¤³«¼ ¥¤¶¬¦±²§¨
节点绘制与交互层
²§¨p§µ¤º¬±ª¤±§±²§¨p¤¯·¨µ±¤·¬±ª
图形对象层
°¤ª¨ ²¥¨¦·¶ ¤¯¼¨ µ
基础函数与对象层
ƒ∏±§¤° ±¨·¤¯ ©∏±¦·¬²±¶¤±§²¥¨¦·¶
³¨ ±°
v 林业三维地形图软件构件的设计与实现
311 设计的基本思想
为了使林业三维地形图构件在使用时具有更大的灵活性 o在设计
构件时采用了一种层次结构k图 ul ∀
按照构件所提供的功能进行划分 o高一层的构件可以使用较低层
构件所提供的功能 o但低层的构件不能使用较高层构件所提供的功能 ∀
这种层次结构使用户可以在不同层次上使用该构件所提供的功能 o同
时具有良好的可扩展性 o表现在横向扩展有两种 }其一是各层可方便地
增加新的构件 ~其二是两个或多个已存在的构件可合并成一个更大的
构件 ∀纵向扩展是指在林业地形基本设计构件上再扩展新的开发工
具 ∀
由于微软公司的视窗界面是目前最为流行的 o因此我们的设计是
基于该操作系统的 ∀
地形图的数据由 ≥提供 o近年 ≥厂商与数据库厂商的合作 o已
开发出多种接口软件 o如 ∞≥k ±¨√¬µ²±°¨ ±·¤¯ ¶¼¶·¨°¶µ¨¶¨¤µ¦«¬±¶·¬·∏·¨美国环境系统研究所l公司的 µ¦≥⁄∞等 o
因此可以采用通用的 ⁄
≤k²³¨ ± §¤·¤¥¤¶¨ ¦²±±¨ ¦·¬√¬·¼l°k¤³³¯¬¦¤·¬²± ³µ²ªµ¤°°¬±ª¬±·¨µ©¤¦¨l来从数据库中获取
t{ 第 w期 王霓虹 }林业三维地形图软件构件设计的探讨
地形数据 o对一些不常用的地形数据格式 o可以采取事先处理的方式来解决 o如 ∞≥公司的 µ¦¬¶或 ≥¤©¨
≥²©·º¤µ¨公司的 ƒ∞ussv÷u等 ∀
312 实现的基本功能
基础函数与对象层矢量 !矩阵与四元组运算 o鼠标跟踪球算法 ~点阵字体与三维矢量字体输出 ~图像输入
输出以及纹理映射 ∀支持 ≥常用数据格式和
° !ƒ !°∞ !×等图像格式 ∀
图形对象层 常用几何图元的绘制 o如圆锥 !圆柱 !球 !环等 ~常用几何对象 o如长方体 !圆锥体 !圆柱体 !
球体和圆环体等 ∀多边形模型对象 o可用于绘制 v⁄≥模型等 ∀
节点绘制与交互层 场景图中的各节点采用树形结构表示 o节点的绘制采用从根节点开始深度优先的
方法 ~交互层主要完成节点的选取 !移动 !旋转 !放大 !缩小等操作以及视点的变化 ∀
林业地形基本节点层 基本节点包括各类水系 !公路 !铁路 !行政边界等 ~林政节点包括各居民点 !了望
塔 !检查站 !各种设施等 ~地理节点包括林场 !林班 !林地可燃物 !坡度 !坡向等 ~林木节点包括各类树种等 ∀
313 地形三维显示技术
地形数据有 u种格式 }规则格网k⁄l和不规则网k×l ∀地形三维显示的主要方法是将地形分剖为
若干个三角形 o三角形间用法向量进行平滑处理 ∀由于等距分析等的需要 o因此规则格网用得多一些 ∀
使用数字化高程模型产生地形起伏阴影的方法是作为改进地图可视性质量的一种重要技术 o这种表达
方法主要是以人们视觉的生理本能为前提 o人们对物体阴阳面反差的视觉感应会产生立体的视觉映射 o为了
产生这种效果要考虑太阳照射地形起伏的阴影模型 o来模拟地表在一定的地面坡向 !坡位 !太阳方位及具体
的时间和季节条件下所表现的视觉观察亮度 ∀笔者在研究中也充分考虑了这个技术 ∀
314 实现步骤
v qw qt 数据准备 矢量或 ⁄∞k§¬ª¬·¤¯ ¨¯ √¨¤·¬²± °²§¨ ¶¯数字高程模型l格式 ∀
v qw qu 投影变换方式 正射投影变换和透视投影变换 o见图 v和图 w ∀
v qw qv 参数设置 光源参数设置 }光源性质 !位置 !颜色 !强度等 o颜色 o明暗处理 !纹理影射 !视点位置 !视线
方向等 ∀
v qw qw 地形模型 三维地形的几何构造要素是三角形 o为提高显示速度 o应将三角形组织成三角形带 ∀
图 v 正射投影视景体
ƒ¬ªqv µ·«²ªµ¤³«√¬¨º
图 w 透视投影视景体
ƒ¬ªqw ≥¦¨±²ªµ¤³«√¬¨º
315 三维漫游技术
有 u种 }其一是视点固定 o目标交互移动 ~其二是目标固定 o视点移动 ∀
第 t种 }先设置初始场景 o再实时改变基本模型变换 o如平移 !旋转 !缩放等参数 ∀
第 u种 }改变视点和视线方向 o重新计算视点坐标 !视线方向和透视变换 ∀
316 构件的实现
构件是利用 ≥ ∂¬¶∏¤¯ ≤ n n中的 ×k¤¦·¬√¨ ·¨°³¯¤·¨ ¬¯¥µ¤µ¼活动模板库l建立的基于 ≤ 的组件库 o在
利用 ×向导生成组件本质上是 ≤ 组件对象 o其他程序在向 ≤ 对象发请求必须知道其所支持的操作 !
类型 !对象的接口规定 o对象所支持的操作和类型 o也就定义了可向该对象提供的请求 ∀对象的接口由 ⁄
k¬±·¨µ©¤¦¨ §¨©¬±¨ ¤¯±ª∏¤ª¨ l来描述 o⁄的特点就是其语言独立性 o通过映射使得对象接口的定义与对象的实现
分开 o允许对象用不同的程序设计语言实现但应能保持之间的通信 ∀ ×向导自动生成了 ⁄到其他具体
u{ 林 业 科 学 ws卷
语言的映射 o用户只要将类的函数加入到 ⁄映射即可被其他语言所调用 ∀
在构件的设计中主要利用 ³¨ ±基本函数库以几何顶点为基础来生成新的图元 ∀如直线 !几何平面 !
球面 !圆锥面 !正方体 !圆环曲面等 o扩展构成新的图元库 o便于程序开发者简单迅速地开发出三维场景和实
体三维模型 ∀每一个图元是用类来封装的 o图元的实例化即生成构成实体部件的体素 ∀
317 实例
三维林业地形软件构件是以 ≤ 组件的形式提供的 o利用该组件在 •¬±§²º¶平台下使用 ∂¬¶∏¤¯ ≤ n n !
⁄¨ ³¯«¬等开发工具 o笔者在东北林业大学实验林场和实验基地开发了/数字林业0中的/森林防火辅助决策系
统0k王霓虹等 oussul o利用基本的地理信息图层k地形 !河流 !公路 !林相等l和数字高程模型k⁄∞l o通过在
该系统中使用三维林业地形软件构件 o展现的局部三维图中可清晰地显示出山脉的坡度 !坡向 !河流和公路 o
森林防火指挥人员通过旋转 !多个观察点的变化以及放大缩小等方法 o逼真地把真实世界展现在眼前 o对如
何派兵 !确定进入火场路线和扑火方案等决策起到了很好的辅助作用 o也使人们充分体会到面向对象和构件
式程序设计带来的好处 ∀日前 o笔者曾采用软件重用k¶²©·º¤µ¨ µ¨±¶¨l技术取得过一些经验 o现在得益于现代
信息技术的飞速发展 o软件构件技术将对软件业的高效率和高质量产生重要的影响 ∀
图 x 地形 !河流 v维图
ƒ¬ªqx ׫µ¨ p¨§¬° ±¨¶¬²± °¤³²©·²³²ªµ¤³«¼ ¤±§µ¬√ µ¨¶
w 结束语
目前 o在三维造型 !三维虚拟场景k√¬µ·∏¤¯ ¶¦¨±¨ l等方面 o有许多商业软件 o但遗憾的是一般都是集成在某
个软件包中 o无法单独提取 o与用户的自编程序很难结合在一起使用 o给开发和设计带来了许多不便 ∀本文
针对三维图形在林业地形图中的应用 o从代码的可移植性 !场景 !模型数据的易管理性 o实现了基于 ³¨ ±
基本函数库的可重用的支持三维建模和三维交互的构件 o使得编程工作量大大降低 o而且便于对三维场景中
物体的过程运动进行控制和管理 o可以在不同的集成开发环境中重复利用 ∀基于 ³¨ ±的林业三维地形
图构件是一个面向林业领域 o基于 •¬±§²º¶的交互式三维图形软件构件 o该构件具有以下特点 }ktl提供了底
层的基本图形对象 o使设计更加灵活 ~kul提供了地形的基本图形对象 o使设计更加简单 ~kvl提供了大量的人
机交互接口 o使交互设计更加容易 ~kwl采用 ≤ 技术 o使构件与编程语言无关 o应用面更广 ∀
由于软件构件技术在我国尚处于起步阶段 o笔者的水平有限及实际应用时间较短 o目前开发的构件还存
在一些问题 o如数据格式的限制 ~缺乏灵活性 ~显示速度以及与其它构件的接口等 o有待今后逐步完善 ∀
参 考 文 献
白 云 o金 锋 o林 锐等 1基于 ³¨ ±的交互式三维图形软件开发工具 q计算机工程 ousss okttl }tx{ p tys
林 锐 o石教英 1 基于 ³¨ ±的可复用软构件库与三维交互设计 1 计算机研究与发展 ousss ovzkttl }tvys p tvyy
王霓虹 1基于 • ∞
与 v≥技术的森林防火智能决策支持系统的研究 1 林业科学 oussu ov{kvl }ttw p tt|
薛 安 o马蔼乃 o李天宏 1 基于 ³¨ ±实现真实感地形表现的研究 q中国图象图形学报 ousst ok{l }{ss p {sx
张 涛 o陈一民 o薛广涛 1 基于 °≤和 ³¨ ±的全景图象 vys度漫游技术 1 计算机工程与应用 ousst okzl }{{ p |t
µ¬¤± °¤∏¯ q ³¨ ±¤±§ •¬±§²º ≥¼¶·¨° ±·¨ªµ¤·¬²±1±}≥ °. |z ≤²∏µ¶¨ uw ot||z
∂¤± ⁄¤° o°∏® ⁄1׫¨ «¬¶·²µ¼ ²©¦²°³∏·¨µªµ¤³«¬¦¶¶·¤±§¤µ§¶§¨√¨¯²³° ±¨·1≤²°³∏·¨µµ¤³«¬¦¶ot||{ ovuktl }vw p v{
v{ 第 w期 王霓虹 }林业三维地形图软件构件设计的探讨