桥梁三维造型及其视景仿真
陆铁坚, 蒋友良, 余志武
(中南大学 土木建筑学院, 湖南 长沙, 410075)
摘要: 研究在计算机上实现桥梁三维造型和视景仿真的关键技术。以面向对象理论为基础,在VC++平台上结合OpenGL图形库开发仿真应用系统。根据桥梁结构的特点,确定以扫描法和参数化特征造型为桥梁模型的主要造型方法,半边数据结构为模型的数据结构。提出设计成果共享的3个层次,基于数据库的设计是共享的最高层次,建立标准构件数据库和常用数据构件库。研究结果表明:仿真系统能实现对场景真实感图形的绘制和实时漫游,为场景增加了材质、光照及纹理等效果;实现了漫游的平移和采用四元组表达的旋转控制。
关键词: 桥梁CAD; 三维建模; 视景仿真; 设计共享
中图分类号:U442.5+4 文献标识码:A 文章编号: 1672-7207(2005)03-0501-05
Research on three dimensional-modeling and scene simulation
LU Tie-jian, JIANG You-liang,YU Zhi-wu
(School of Civil and Architectural Engineering, Central South University, Changsha 410075, China)
Abstract: The key technologies of realizing bridge 3D-modeling and scene simulation were studied on computer, and the simulating application system was developed at VC++ platform combining OpenGL graphic library based on objected-orient theory. According to the characteristics of bridge, the methods of sweeping and parameter feature model were determined as the main methods of the bridge 3D-modeling’s, half-edge data structure as the data structure of the model. Then, three levels of sharing design production were proposed and the database based design was the highest, the bridge standard components database and conventional components database were constructed. The results show that simulating system can realize scene realistic image render and real-time roaming, and increase special effects of materials, lighting and texture on scene, and realize moving control and rotation control by quaternion during roaming.
Key words: bridge CAD; 3D-modeling; scene simulation; design share
由于桥梁型号多样,结构和形式复杂,标准化程度低,所以,桥梁的三维造型及视景仿真比较困难。目前,国内桥梁CAD系统很少具有三维造型功能,更没有成熟的桥梁视景仿真系统[1]。若能进行桥梁结构的三维造型和场景的实时交互式漫游,则能为桥梁的方案论证、建成后的美学效果、工程招投标、设计汇报等提供有力的工具。此外,三维模型数据是后继桥梁空间静、动力计算,有限元分析,概预算,施工模拟等桥梁设计各阶段的基础。随着计算机硬件技术的迅猛发展和工程CAD所依赖的软件技术的发展与成熟,新一代CAD系统正在各个行业被开发和研究[1-4]。在此,作者对实现桥梁视景仿真中的三维造型、场景绘制、漫游控制等关键技术进行研究,并在此基础上开发应用系统,实现桥梁的三维造型和视景仿真。
1 系统设计
1.1 开发工具选择
OpenGL是一套独立于操作系统和硬件环境的开放式三维图形库,目前已广泛应用于可视化技术、实体造型、CAD/CAM及模拟仿真等领域。OpenGL图形库由几百条指令或函数组成,提供基于三维空间的基本几何元素的造型函数及对模型的基本操作、变换、管理;提供如深度测试、反走样、融合、蒙板、明暗处理、纹理贴图及像素操作等高级功能。应用OpenGL图形库能创建接近光线追踪算法的高质量静态或动画的彩色图像,而所需时间显著缩短[5, 6]。
OpenGL具有独立性,它并不提供界面元素创建、文件的操作等系统中必须包含的功能。OpenGL不是一门程序设计语言,不提供程序流控制。因此,需要一门程序语言对OpenGL进行控制,并将其与操作系统连接,在此,作者选择C++语言下的MFC程序框架。MFC是进行Windows程序开发广泛使用的应用程序框架。支持文件操作,对用户界面进行创建和管理,弥补了OpenGL的不足。VC++是一种功能强大的Windows应用程序开发工具。以VC++为开发平台,能将OpenGL和MFC两者结合起来,很好地完成目标。
1.2 总体结构
系统以面向对象的思想方法为基础,按“功能独立”原则将系统划分为多个模块。图1所示为系统的各个功能模块。各个模块可以进一步细分,如桥梁的上部结构建模可分为主梁、行车道板、桥面铺装、栏杆等构件的建模。
图 1 系统功能模块
Fig. 1 General function modules of system
2 桥梁三维造型
2.1 造型方法
三维造型技术发展至今,出现了许多适用于不同应用环境的方法,其中主要有分解表示、构造表示和边界表示3类。构造表示又包含扫描法、CSG法和参数化特征造型。作者根据桥梁结构和构件造型,给出了其合适的造型方法。
通过考察桥梁结构各个构件的三维特征,得到如下结果:桥梁的主梁、防撞栏杆及桥面铺装等桥梁组件的横截面基本特征不变;此三维实体可以由截面模板沿桥梁纵向平移扫描而成;可将重力式桥墩或圆形墩柱视为母线沿墩中心旋转扫描整个圆周而成。因此,采用扫描表示法可以方便地生成桥梁结构的一大类构件。
对于桥梁结构的另一大类构件,如“U”型桥台及人行道栏杆等,其外形比较复杂,不适合用扫描表示法生成;而且,这类构件在设计过程中非常适合于使用参数化的特征造型技术。系统依据设计规范和设计习惯将不适合于用扫描法表示的构件进行参数化,用户仅需输入设计参数,系统便可生成各个构件的三维模型。
所以,基于参数化的特征造型和扫描表示法的桥梁三维模型构建方式,能够高效、快捷地建立桥梁的三维模型,用户无需了解造型细节。图2所示为采用扫描表示法生成的箱梁模型。
图 2 扫描表示法生成的箱梁
Fig. 2 Box girder generated by
sweeping method
2.2 桥梁构件库
2.2.1 成果共享的3个层次
在进行桥梁设计时,从头至尾全新设计一座桥梁很困难,也没有必要,这就需要借鉴前人已有的成果。作者认为,原有设计成果的利用与共享程度可以分为以下3个层次:
a. 在CAD系统广泛应用之前,设计人员查阅相近类型桥梁纸质图集,确定设计参数,绘制设计图纸。这种方式较旧,工作效率低,绘图工作量大。
b. 桥梁CAD的广泛应用实现了电子文件的共享,这种方式对已有成果的利用程度主要取决于CAD系统的性能。对于广泛使用的AutoCAD,新版AutoCAD支持多文档、块插入;对于尺寸标注与被标注对象,支持关联修改。电子文件共享存在很多缺陷,如在大量图集中查找需要的信息十分困难;同一CAD系统存在不同版本,不同CAD系统之间存在兼容性等问题。总之,这只是原始文件级别的信息利用与共享,没有对已有的设计成果加以提炼和管理,而这正是工程数据库所要解决的问题。
c. 基于数据库技术的工程成果的管理是成果共享的第3个层次,也是未来发展的方向。国内部分学者对此进行了研究[7, 8]。工程数据库管理不仅需要对电子图集进行归档、分类、检索及图片预览等,还需要对标准构件和已有的设计成果进行参数化、变量化,以数值的形式将其储存于数据库中,复用时支持尺寸驱动。将工程数据库与桥梁设计的专家知识库和人工智能结合,可以实现桥梁的自动化设计。
2.2.2 桥梁数据库
按照面向对象原则建立桥梁结构中的标准构件及常用构件的数据库。采用Access作为开发工具,建立桥梁的标准构件库和用户自定义构件库,数据库中存储了构件对象中各成员变量的值和检验规则。在系统的运行过程中,允许用户从标准构件库及自定义构件库中读入各种构件的参数信息作为实际工程构件的基本参数,再在此基础上修改以满足实际工程的具体需求。同时,对实际工程设计的各个构件允许写入用户构件库,以备下次使用,以提高已有成果的共享程度。系统采用ADO组件技术统一对数据库进行管理和访问。
2.3 基于半边数据结构表达的边界模型
寻求一种高效、精确的方法将数据库中的桥梁三维模型用图形的方式表达是系统研究的目的之一。作者在比较各种三维实体表达方式后,提出采用边界表示法作为桥梁模型的表示方式。边界表示法包括实体的几何信息和拓扑信息,原因主要有:
a. 边界表示法的实体绘制速度快,容易确定几何元素间的连接关系,在传统的工程绘图中应用广泛;
b. 边界表示法是一种精确的表示方法,能够为后续的桥梁结构分析等提供有效的数据。
边界表示法常用的数据结构有翼边数据结构和对称结构等。翼边数据结构是基于边表示的数据结构,较好地描述了点—边—面之间的拓扑关系,但它存在2个与边相邻的环,没有明确边正向的缺陷。许多学者提出了改进算法,其中M.Mantyla等提出的半边数据结构具有代表性[9, 10]。系统采用半边结构作为三维模型的数据结构。半边数据结构具有体—面—环—半边—顶点的层次关系,每个层次关系所表达的几何及其拓扑信息的结构需要支持动态查询、删除及添加等操作。在数据结构中,链表储存结构最适合。在链表的实现上,采用CTypedPtrList〈 class BASE_CLASS, class TYPE>模板类实现系统有关数据的存储。
根据半边数据结构的层次关系,从面向对象的思想考虑,每个层次对应于一个类。作者设计基于OpenGL半边数据结构的6个C++类:三维实体类CGLSolid,面类CGLFace,环类CGLLoop,边类CGLEdge、半边类CGLHalfEdge以及顶点类CGLVertex,并且用MFC的模板集合类CtypedPtrList实现。图3所示为这些类的层次关系。CGLSolid的定义代码段如下:
class CGLSolid : public CObject
{
virtual void DrawSelf(void); // 绘制函数
CTypedPtrList〈CObList, CGLFace*> m_FaceList; //面集合;
CTypedPtrList〈CObList, CGLEdge*> m_EdgeList; //边集合
CTypedPtrList〈CObList, CGLVertex> m_VertexList; //顶点集合}。
图 3 半边数据层次结构
Fig. 3 Inherited relationship of half-edge
structure
2.4 场景模型
桥梁的三维模型建立后,若要进行桥梁的视景仿真,必须建立桥梁周围景观的三维模型。在建立周围的地形、河流的水体、天空、线路旁边的树木等对象的三维模型后,观察桥梁建成后的协调效果图。整个场景的建立过程如图4所示。
图 4 场景三维造型过程
Fig. 4 Process of scene 3D-modeling
3 场景绘制
3.1 场景光照与材质
光照模型是根据光学物理定律,计算画面上景物表面各点投射至观察者眼中的光亮度和色彩组成的公式。通过光照模型可获得可见面元二维影像的明暗值,从而形成模型的浓淡渲染图。光照模型是生成真实感图形的基础。
Phong光照模型考虑了环境光、朗伯漫反射光和镜面反射光等效应,虽然它是一个根据光学物理原理对实际光照进行简化的经验公式,但是,其计算量小、效果较好,因而得到了广泛应用。作者采用Phong光照模型进行桥梁的视景仿真研究。
在同样的光照条件下,混凝土的颜色和钢材的颜色不同,这是因为各种不同的材质对光的吸收率、反射率和投射率等光学性质不同。系统给出了混凝土和钢材等桥梁建设中常用材料的光学参数,用户只要选择合适的材料,赋给相应的构件即可。
3.2 纹理映射
使用上述光照模型能生成视觉上具有立体感的光顺物体表面,但由于缺乏对物体表面细节的模拟,所以,模拟场景与真实场景存在较大差别。要真实地模拟物体表面的复杂细节,纹理映射是相对简单且有效的方法。自20世纪70年代中期E.Catmull采用纹理映射生成景物表面纹理细节以来,纹理映射技术得到了广泛的研究和应用[11]。作者采用大量的纹理模拟桥梁的各个构件表面的细节,采用纹理模拟蓝天白云、河水、树木和周围地形的地表。
4 实时漫游
实时漫游是仿真的一个重要方面。实时漫游是指用户通过键盘和鼠标调整对整个场景的观察方式,即观察位置和观察角度,实时地绘制每个时刻场景效果图。实时漫游的关键在于根据用户的键盘、鼠标输入的信息不断地改变观察坐标系后绘制场景,并且绘制需要达到实时要求。
在第一人称的视觉下,用户可控制的变量有6个:沿着观察坐标系3个轴的平移和转动,但每个轴又有正、负之分,所以,可将6个可控变量扩充至12个。漫游时一般采用键盘控制平移,鼠标控制方向(旋转)。
平移较容易实现,根据用户的键盘消息,沿观察坐标系3个轴平移其原点,从而产生前进、后退、跳跃等效果。在漫游旋转时,观察者眼睛位置(视点)不变,改变的是视线中心矢量,即改变观察参考点的位置,从而产生左右摇头、仰视或俯视的效果。这可归结为空间任意点绕任意轴旋转的问题,系统使用四元组来实现旋转功能。使用四元组表示旋转能避免旋转时坐标被锁死的现象,具有容易实现中间插值、平滑旋转过程等优点[12]。
5 结 语
a. 桥梁三维造型及仿真系统以面向对象的思想方法为设计基础,以VC++与OpenGL和MFC相结合为开发工具。面向对象设计避免了传统方法在设计与应用之间的脱节现象,隐蔽了操作和信息的细节,用户能在更高等级上与系统交互,达到了用户无需实体造型和图形绘制方面的基础知识就能方便快捷地建立桥梁三维模型并进行实时仿真的目的。
b. 采用扫描表示法和参数化特征造型技术作为桥梁三维造型的主要方法,半边数据结构作为实体表达的数据结构;设计成果共享程度分为3个层次;建立了桥梁的标准构件数据库和常用构件库。
c. 实现基于OpenGL的场景真实感图形绘制和动态仿真,为场景增加了材质、光照、纹理、雾化等效果,实现了漫游的平移和旋转控制。
参考文献:
[1]蒋友良.桥梁三维建模及可视化设计关键技术研究与实现[D].长沙:中南大学土木建筑学院,2004.
JIANG You-liang. Research on and implementation of key technologies of bridge 3D-modeling and visual design[D]. Changsha: School of Civil and Architectural Engineering, Central South University,2004.
[2]贾明涛,侯林惠,潘长良,等.基于Open-GL组件技术的采矿模拟系统[J].中南工业大学学报(自然科学版),2003, 34(1): 11-15.
JIA Ming-tao,HOU Lin-hui,PAN Chang-liang, et al. Mining simulation system based on the OpenGL visualized components techniques[J]. Journal of Central South University of Technology (Science and Technology), 2003, 34(1): 11-15.
[3]王卫东,詹振炎.道路路基横断面数据库及其辅助设计[J].中南工业大学学报(自然科学版), 2002, 33(5): 462-465.
WANG Wei-dong,ZHAN Zhen-yan. Database construction and road cross section computer aided design[J]. Journal of Central South University of Technology (Science and Technology), 2002, 33(5): 462-465.
[4]王卫东,刘武成.基于GIS的公路地质灾害信息管理与决策支持系统[J].中南工业大学学报(自然科学版), 2003, 34(3): 303-306.
WANG Wei-dong,LIU Wu-cheng. Road’s geological hazards information management and decision making support system research based on GIS[J]. Journal of Central South University of Technology (Science and Technology),2003,34(3):303-306.
[5]廖朵朵,张华军.OpenGL三维图形设计[M].北京:星球地图出版社,1996.
LIAO Duo-duo, ZHANG Hua-jun. OpenGL 3D-graphic design[M].Beijing:Earth Map Press,1996.
[6]向世明.OpenGL编程与实例[M].北京:电子工业出版社,1999.
XIANG Shi-ming. OpenGL programming and instances[M].Beijing:Electronic Industry Press,1999.
[7]王兴波,尚守平.一个可用于集成化建筑CAD系统的工程数据库模型[J].建筑科学, 1998, 14(6): 52-55.
WANG Xing-bo, SHANG Shou-ping. An engineering database model available for integrated building CAD system[J]. Building Science, 1998, 14(6): 52-55.
[8]顾宁,林宗楷,郭玉钗.工程数据库管理系统设计、实现的几个关键问题[J].软件学报,1997,8(6):183-189.
GU Ning, LIN Zong-kai, GUO Yu-cha.Several key research results in design and implementation of engineering database management system[J].Journal of Software, 1997, 8(6): 183-189.
[9]Mantyla M. An introduction to solid modelling[M]. Maryland: Computer Science Press, 1988.
[10]严宁,李启炎.半边结构的三维实体在OpenGL中的表示[J].微型电脑应用, 2002, 18(9): 51-53.
YAN Ning, LI Qi-yan. 3D solid objects with half-edge structure represented in OpenGL[J]. Microcomputer Applications, 2002, 18(9): 51-53.
[11]Catmull E.Subdivision algorithm for computer display of curved surfaces[D]. Salt Lake City: Department of Computer Science, University of Utah, 1974.
[12]Grubin C. Derivation of the quaternion scheme via the euler axis and angle[J]. Spacecraft, 1970(7): 1251-1263.
收稿日期:2004 -07 -22
基金项目:国家自然科学基金资助项目(50208018)
作者简介:陆铁坚(1963-),男,湖南岳阳人,副教授,从事可视化及结构仿真研究
论文联系人: 陆铁坚,男,副教授;电话:0731-2655016(O);E-mail:tiejian@mail.csu.edu.cn