基于有限元和虚拟现实的桥梁垮塌事故
场景模拟初探

许镇,卢啸,陆新征

(清华大学土木工程系,土木工程安全与耐久教育部重点试验室,北京 100084)

2010年全国桥梁学术会议论文集,2010.11,南京: 921-927

下载全文/Download PDF version

摘要】为准确认定桥梁垮塌事故责任,需要科学而真实的重现垮塌的事故过程。有限元分析可以保证事故过程力学模拟的科学性,而基于虚拟现实的场景模拟可提供具有充分真实感的图像。本文在有限元软件MSC.Marc中对某一桥梁因车辆超载导致垮塌的过程进行了模拟。基于MSC.Marc模拟结果,提出了在图形引擎OSG(Open Scene Graph)中实现了桥梁垮塌真实感场景动画的方法。该方法使场景模拟中桥梁垮塌过程与有限元结果一致,保证了模拟的科学性。同时,本文开发了OSG环境下的桥梁垮塌场景漫游系统。该系统基于桥梁垮塌场景模型构建了具有真实感和科学性的桥梁垮塌场景,更加准确而逼真的还原了桥梁垮塌事故过程。文中工作为实现基于有限元和虚拟现实的场景模拟的提供参考,同时也为桥梁垮塌事故鉴定提供技术支持。

关键词】桥梁 垮塌 有限元 虚拟现实 场景模拟

1.引言

近些年来,国内外发生了多起桥梁垮塌事故[1][2],如2006516日,甘肃岷县北门洮河大桥(双曲石拱桥)突然全部垮塌;20078,在建的湖南凤凰大桥发生坍塌,造成62人死亡;200781日,美国密西西比河I-35W钢桁架拱桥在交通晚高峰时发生垮塌,造成13人死亡,145人受伤。这些事故造成了重大的人员伤亡和财产损失,同时也引起了广大工程人员的关注与思考。科学、高效、准确的桥梁垮塌事故鉴定,对国家建设、经济运行、社会安定,具有非常重要的意义。

美国“911”事件中世贸大厦及Khobar Towers的事故鉴定过程中使用了大量计算机模拟技术[3][4],已经表明基于计算机模拟技术在结构垮塌事故鉴定调查具有可行性强、高效、准确等优点。在桥梁垮塌事故中,美国国家交通安全委员会对美国明尼苏达州密西西比河I-35W桥事故进行有限元建模分析,并根据影像资料和检测资料修正有限元模型,再现了桥梁倒塌过程,准确而高效的确定了桥梁垮塌的原因[5]I-35W事故的准确鉴定表明了计算机模拟技术在桥梁垮塌事故鉴定中的具有重要的应用价值。

桥梁事故鉴定需要通过计算机模拟技术科学而真实的再现桥梁垮塌过程。有限元技术已经在桥梁垮塌力学模拟上已经有不少成功的案例[6][7][8],有限元技术可以保证垮塌模拟具有科学性,但是有限元模拟结果较为抽象,缺乏真实感,特别是非力学专业的人员理解有一定困难。因此,有必要将虚拟现实技术与有限元结合,实现具有科学性和真实感的桥梁垮塌场景模拟,以更加准确而逼真的还原桥梁垮塌过程,用于桥梁垮塌事故分析与结果展示。

目前,有限元与虚拟现实结合主要用于虚拟制造和虚拟医学手术等方面等[9][10],主要侧重于基于有限元提高虚拟现实系统的交互性能。在土木建筑领域,Igor等人研究了实时虚拟环境下弹性体的模拟,提升了具有大量结点的有限元模型的渲染效率[11]。此外,对有限元的可视化后处理技术研究较多[12],如陈俊涛等开发的地下结构的有限元图形系统,来表现应力云图等有限元计算结果[13]。以上研究在提高虚拟现实系统交互性、模型渲染效率和有限元模型的表现技术上都有一定突破,但都不侧重于提高有限元模拟结果的真实感。

本文基于MSC.Marc有限元软件进行了桥梁垮塌力学模拟。在此基础上,在图形平台OSG中实现了基于MSC.Marc数据的桥梁垮塌过程的场景动画,使桥梁垮塌场景模拟与科学的有限元模拟结果保持一致。同时开发了桥梁垮塌场景漫游系统,构建了具有真实感和科学性的桥梁垮塌场景,以还原桥梁垮塌过程,用于桥梁垮塌事故鉴定。

2.系统介绍

桥梁垮塌事故鉴定不仅需要逼真的桥梁垮塌过程的场景模拟,而且还需要一定的场景交互操作功能,因此一个完整的桥梁垮塌场景模拟系统应该具有良好的模拟效果和交互性能。对于场景模拟,一方面需要有限元数据的支持,作为科学模拟的保证,另一方面由于真实感的需要,模拟场景也需要具有地形模型、纹理数据、垮塌特效等多种要素,并根据桥梁事故鉴定需要开发相应的漫游操作和交互操作。为此,本文将桥梁垮塌场景模拟系统分为界面层、功能层、实现层、模型层、数据层、支撑层及一个外部层,其架构见图1。其中,有限元模拟作为外部层,模拟的结果数据和模型数据将应用到该系统中。有限元数据来源于有限元软件MSC.Marc力学模拟得到的桥梁倒塌计算结果,包括节点坐标和单元拓扑关系,以及节点的位移时程。将节点坐标和单元拓扑在OSG中建立桥梁模型,再利用节点位移时程数据实现桥梁垮塌动画,最后在利用桥梁的垮塌模型建立基于OSG的桥梁场景漫游系统,更具真实感的表现桥梁垮塌场景

图1 桥梁垮塌场景模拟系统架构图

1 桥梁垮塌场景模拟系统架构图

3.桥梁垮塌有限元模拟

某钢筋混凝土大桥全长191.6m,主桥上部结构为混凝土组合桁架拱桥,跨径138m,用途为公路桥,如图2

图2 某钢筋混凝土桥梁立面示意图

2 某钢筋混凝土桥梁立面示意图

MSC.Marc软件中建立桥梁的非线性有限元模型,为模拟该钢筋混凝土桥因超载工况导致垮塌的过程,特意将模型中的标准车(55吨)后四轴轴重增加近一倍,形成总轴重为107吨的特重车,并由5辆特重车组成的车队,驶上桥梁,构成超载工况,得到的有限元模型如图3所示:

图3 MSC.Marc中的桥梁有限元模型

3  MSC.Marc中的桥梁有限元模型

有限元方法适用于连续体,在垮塌过程中,对于破碎、分离等非连续力学行为一般采用生死单元法进行处理。在垮塌模拟过程中,当混凝土达到压碎应变或钢筋被拉断,则相应的有限元单元会被杀死。在MSC.Marc的桥梁垮塌模拟完成后,MSC.Marc软件可以输出四种文件,用于虚拟现实模块进行场景真实度模拟,见表1

1 MSC.Marc软件提供的数据类型

编号

名称

格式

数据信息

1

DelElem

txt

记录垮塌过程中每个时间步上被“杀死”的单元编号

2

DispOut

txt

记录垮塌过程每个时间步上每个顶点的位移

3

Elem

txt

记录每个单元的类型和顶点编号

4

Node

txt

记录每个顶点的三维坐标

4.桥梁垮塌场景动画

本文的桥梁垮塌场景模拟一方面要结合有限元数据,这就要求要进行大量开发以实现基于有限元数据对场景模拟中的模型、动画等场景要素的控制;另一方面场景模拟是基于虚拟现实技术的,这就要求场景过程要使用纹理技术、场景特效等高级图形功能。所以本文场景模拟所需要的图形引擎一方面需要是较大的开发权限,最好是开源,以便于最大程度的控制场景要素;另一方面要有很多高级图形功能,避免从底层进行开发,降低开发效率。

OSG (Open Scene Graph)是一个基于OpenGL的开源的三维图形引擎,提供了一套C++API,具有较完整的高级三维图形功能和丰富的功能插件,满足本文场景模拟的要求。为了精确的表现MSC.Marc计算的桥梁垮塌过程,OSG中的桥梁场景模型根据MSC.Marc中的有限元模型建立,并在垮塌动画实现过程中引入MSC.Marc的位移数据和杀死单元数据,以实现有限元数据对垮塌动画的控制。

4.1 桥梁场景建模

桥梁场景建模的是根据MSC.Marc的文件在OSG中建立桥梁的场景模型,需要保证两模型的一致性,才能实现精确的桥梁垮塌场景动画。合理的桥梁场景模型是实现模拟过程有效控制垮塌的基础。因此,建模过程中要充分考虑桥梁场景模型的控制要素。

1)场景层次

OSG中,场景管理是分层次的,所有的场景数据都会加入到一个Group当中,Group内可以包含很多Node。其中,几何图元作为一种需要绘制的对象有一个专门的Geode节点。绘制几何体的一般层次是,设置Geometry类,添加到Geode,然后在Geometry设置顶点坐标、法线、纹理等属性[14]

由于在桥梁场景模拟过程中,一些有限元的单元会被杀死,所以在OSG中每个单元都设为一个Geometry,整个桥梁模型为一个Geode。在场景模型中,可以通过Geode.getDrawable(unsigned int i)来获得Geometry的指针。其中,getDrawable(i)中的参数i表示在Geode中第iGeometry,与绘制顺序有关。因此,为了控制每个单元,Geometry的绘制顺序应该与Geometry代表的单元编号一致。

2)建模方法

在本系统中,Node文件中包含的是单元顶点的坐标都要储存在OSG中三维向量osg::Vec3的数组中,然后根据Elem文件获得单元顶点编号,在三维向量数组中调用相应的向量构成单元的顶点向量数组VertexArray,并储存在Geometry中,最后通过DrawArrays()进行图形绘制。

有限元模型中,包括长方体、面、线三种不同类型的单元。在绘制线和面时,通过DrawArrays()进行绘制并不造成Geometry顶点重复,因为面和线的顶点和绘制所需要的顶点数量相同。但是在绘制体单元时,DrawArrays()无法直接绘制长方体,需要依次画出6个面,共需24个顶点。事实上,长方体只需要8个顶点。为了避免重复,节省内存,同时也为在模拟过程中控制体单元变形,在绘制体单元时,采用引索数组方式DrawElementsUInt()进行图形绘制。采用引索数组后,每个体单元只储存8个顶点坐标,而且改变某一个顶点时,该顶点相关的面都会改变。由于MSC.Marc中未能提供法线信息,法线向量需要根据顶点坐标计算。为了避免由于法线错误造成的单元不可见,需要获取面单元的渲染状态集StateSet,在StateSet中关闭背面剔除,并且通过setTwoSided()设置双面光源。

3)场景模型

MSC.Marc桥梁和车辆有限元模型中,包括体、面、线三种不同类型单元,共计2万多个单元。根据上述方法,在OSG中建立桥梁的场景模型如图4所示。通过图3和图4进行对比,OSG的桥梁场景模型和MSC.Marc中桥梁有限元模型是一致的。

图4 基于MSC.Marc数据的OSG桥梁场景模型

4 基于MSC.Marc数据的OSG桥梁场景模型

4.2 桥梁垮塌动画

OSG的桥梁垮塌动画的实现过程中,主要包括两部分工作:通过MSC.MarcDispOut文件实现桥梁垮塌变形控制和根据DelElem文件实现对特定单元的杀死模拟。

1)垮塌动画控制

OSG中,有专门用于制作动画Animation类,但是,Animation类一般不适合单元数量巨大的有限元模型的变形动画。因此,本文利用OSG的更新回调机制来实现桥梁变形动画[15]

OSG通过回调(CallBack)完成每一帧的系统中所需工作。在OSG中,设有节点(Node)、几何体(Drawable)、镜头(Camera)等多种回调机制,在几何体回调中有一种几何体更新遍历(DrawableUpdateCallback) 可以通过重载函数update(),实现几何体的内容更新[16]

继承DrawableUpdateCallback 类,建立新的DisplaceUpdate类。在DisplaceUpdate类中重载update()函数,在每一步回调中,通过getVertexArray()函数获得Geometry的顶点数组,然后将有限元的顶点位移数据在顶点数组中更新,最后通过dirty()函数更新顶点数组,经过回调后,每个Geometry的变形就实现了。

通过GeodegetDrawable()函数可以获得每一个Geometry的指针,然后可以通过setUpdateCallback()可以将每个Geometry关联到重载的update()函数,可以实现整个桥梁模型的变形动画。在update()可以通过osg::Timer::instance()->tick()获取开始执行时时间和更新完成时间,以实现动画的时间控制,见图5。此外,为了动态调用顶点的内存,桥梁场景模型建模时,要使用VBO(Vertex Buffer Object)模式,关闭默认的显示列表模式。

图5 桥梁垮塌动画实现流程

5 桥梁垮塌动画实现流程

2杀死单元模拟

在有限元模拟中,在某些时间点上一些单元会因为变形过大而被杀死,在场景模拟中表现为单元不可见。本文采用开关节点(Switch)控制杀死单元的显隐特效来实现生死单元的模拟[15]

Switch节点的作用是在场景运行的某一时刻,它的某些子节点被隐藏和忽略,另一些子节点显示并执行相应功能,类似图层的概念[16]。在模拟过程中,可以利用Node的更新回调,将每个时间步上杀死单元,通过addChild()添加到Switch节点中,然后利用setValue()来设置杀死单元和其他单元的显隐性。利用Switch节点进行生死单元模拟一方面保持了Geode中单元顺序与有限元单元编号一致,也一方面隐藏的单元被忽略,降低了系统资源的消耗。

4.3垮塌动画实现

根据本文的方法,使用MSC.Marc模型文件在OSG中建立桥梁场景模型,通过MSC.Marc模拟数据实现了桥梁垮塌过程的场景模拟动画。本文将桥梁垮塌的MSC.Marc模拟结果和OSG桥梁垮塌动画进行对照,整个倒塌过程持续时间为9.4 s,三种不同时刻的垮塌情况如图6~8

图6 MSC.Marc模拟结果和OSG桥梁垮塌动画(2.3s) 图6

6 MSC.Marc模拟结果和OSG桥梁垮塌动画(2.3s)

图7 MSC.Marc模拟结果和OSG桥梁垮塌动画(7.8s) 图7

7 MSC.Marc模拟结果和OSG桥梁垮塌动画(7.8s)

图8 MSC.Marc模拟结果和OSG桥梁垮塌动画(9.4s) 图8

8 MSC.Marc模拟结果和OSG桥梁垮塌动画(9.4s)

从图6-8可以看出,基于OSG 的桥梁垮塌动画与MSC.Marc有限元的模拟结果是一致的。基于OSG的桥梁垮塌动画具有科学性,同时,在OSG 场景中桥梁垮塌动画具有场景模拟的优势。在场景模型中,可以通过纹理、光照技术等增加桥梁模型的真实感,还可以加入垮塌过程中桥梁破碎、烟尘等特效,同时还可以加入地形、周边环境等场景,形成更为逼真的桥梁垮塌场景模拟。

5.桥梁垮塌场景漫游

桥梁垮塌事故鉴定及桥梁力学研究都需要对桥梁垮塌过程进行详细的了解,因此要求在虚拟场景中充分的观察桥梁垮塌情况。本文开发了桥梁垮塌场景漫游系统,可以任意路径、任意角度对桥梁垮塌情况进行观察。

漫游系统首先需要定义漫游操作,如按“W”键前进、按“A”键左移等。漫游的过程可以简单描述为触发事件、事件响应和场景改变三个步骤,在OSG中对应的三个类,管理触发事件类osgGA::GUIEventHandler,管理事件响应并联系场景控制的类osgGA::MatrixManipulator,场景管理的核心类是osg::Viewer。在OSG中,采用osgGA::MatrixManipulator作为基类定义Walkthrough类,在类中定义场景控制要素和与场景管理类osg::Viewer的接口,并且重载osgGA::GUIEventHandler中的handle()函数来定义触发事件,如鼠标移动、按键盘等。最终,利用viewer.setCameraManipulator(new Walkthrough())载入Walkthrough类一个实例就可以实现场景漫游操作了。在漫游系统中,还需要设置碰撞检测,以增加漫游的真实感。

本文对基于MSC.Marc数据生产的桥梁垮塌模型赋予简单材质,并且加入水面、地形、天空等环境要素,构成具有一定真实感的场景。将该场景载入到本文开发的桥梁垮塌场景漫游系统,系统中不同的漫游场景见图9

图9

图9

a.远观

b.近观

图9

图9

c.侧面1

d.侧面2

9 基于OSG的桥梁垮塌漫游场景

通过图9可以看出桥梁场景漫游系统可以实现对垮塌桥梁多角度、多方位的观察,同时构建了一个具有真实感和科学性的桥梁垮塌场景,为桥梁垮塌事故鉴定和事故结果展示提供了技术支持。但是,桥梁垮塌模型纹理技术和垮塌特效技术还有待于进一步研究。

6.结论

本文通过MSC.Marc对某钢筋混凝土桥梁垮塌过程进行了模拟,基于Marc数据在OSG平台上实现了桥梁垮塌场景动画,并开发了具有一定真实感的桥梁垮塌场景漫游系统。桥梁场景动画与Marc模拟结果一致,表明文中基于OSG的桥梁垮塌场景动画方法的有效性。基于文中桥梁垮塌漫游系统构建的桥梁垮塌虚拟现实场景,更加科学、真实的还原了桥梁垮塌场景,为准确的桥梁垮塌事故鉴定提供技术支持。

参考文献:

[1]       陈明宪. 从凤凰堤溪大桥事故谈石拱桥[J]. 公路工程. 2008.06,33(3):1-9.

[2]       Zhu, S., Levinson, D., Liu, H. and Harder, K. The traffic and behavioral effects of the I-35W Mississippi river bridge collapse[C]. Transportation Research Board Annual Meeting 2009 Paper #09-2164, 2009.

[3]       NIST. Final report on the collapse of world trade centre building 7[R], 2008,11.

[4]       Baylot, JT. Numerical Simulation of Alternate Scenario for Khobar Towers[C].Proceedings of 68th Shock and Vibration Symposium (Limited Distribution), Hunt Valley MD, 1997.

[5]       National Transportation Safety Board. Highway Accident Report - Collapse of Interstate 35W Highway Bridge[EB/OL]. http://www.ntsb.gov/events/2008/minneapolis-mn/presentations.htm ,2010--8-19.

[6]       D. Isobe, M. Tsuda. Seismic collapse analysis of reinforced concrete framed structures using the finite element method[J]. Earthquake Engineering and Structural Dynamics, 2003,32(13):2027-2046.

[7]       陆新征,叶列平,江见鲸等.考虑地震行波效应大型高架桥梁破坏模拟[J].工程抗震与改造加固,200729(3)1-5

[8]       Kumar P and Bhandari NM. Non-linear Finite Element Analysis of Masonry Arches for Prediction of Collapse Load[J], Structural Engineering International, 2005,15(3): 166-175.

[9]       吴祚宝,肖田元.虚拟制造环境下有限元分析的应用[J].清华大学学报(自然科学版)200040(7)66-69.

[10]    吴鹏,赵龙,王勇军等.一种于基于有限元的形变模型算法[J].系统仿真学报,200113(5)674-677.

[11]    Igor N. et al.. Real-time simulation of elastic objects in virtual environments using finite element method and precomputed Green's functions, Proceedings of the workshop on virtual environments 2002 (Wolfgang S. and Stefan M., editors), Barcelona, Spain, 2002,47-52.

[12]    于巍,吴炜煜.三维可视化仿真技术与灾害虚拟表现[J].中国体视学与图像分析,20016(2) 122-127.

[13]    陈俊涛,肖明,郑永兰.用OpenGL开发地下结构工程三维有限元图形系统[J].岩石力学与工程学报200625(5)1015-1020.

[14]    肖鹏,刘更代,徐明亮.OpenSceneGraph三维渲染引擎编程指南[M].北京:清华大学出版社,2010.

[15]    许镇,任爱珠,陆新征.基于MarcOSG的桥梁垮塌场景模拟研究[C].第十五届全国工程设计计算机应用学术会议论文集,哈尔滨,2010(已录用).

[16]    王锐,钱学雷.OpenSceneGraph三维渲染引擎设计与实践[M].北京:清华大学出版社,2009.

作者信息

许镇 博士生

清华大学土木工程系

北京市海淀区清华大学土木工程系 100084

手机:13811243637 E-mailmartin31567@gmail.com

卢啸 博士生

清华大学土木工程系

北京市海淀区清华大学土木工程系 100084

手机:010-62795364 E-mailx-lu08@mails.tsinghua.edu.cn

陆新征 副教授

清华大学土木工程系

北京市海淀区清华大学土木工程系 100084

手机:010-62795364 E-mailxinzheng.lu@gmail.com

个人信息
研究工作
实际工程
论文工作
教学工作
资料下载
专题
其他

 

我们的实验室

抗倒塌专业委员会