车辆模型几何驱动技术研究

2014-10-27 01:48
西安航空学院学报 2014年1期
关键词:坐标系交通事故车身

周 扬

(西安航空学院 车辆与医电工程系,陕西 西安 710077)

1 引言

在道路交通事故再现领域,运用计算机对事故进行模拟分析已经成为处理事故的一种有效方法。使用计算机对事故进行再现时,一种常用的方法是利用3DMAX建模软件对事故中包含的车辆、行人、现场环境进行建模,然后在VC++及OpenGL环境下将模型导入并在可视窗口中进行显示。然而对于一起事故的模拟,重点是要看到其整个动态的发生过程,因此对于车辆的运动模拟就显得尤为重要。本文主要研究了3DS车辆模型在VC++环境下的驱动问题,利用几何驱动技术实现了模型所在坐标系固定的前提下正确对模型进行驱动。

2 车辆模型的几何驱动技术研究

事故的三维演示中最重要的部分就是对事故中车辆的运动进行演示,目的是使车辆能够按照给定的轨迹参数进行运动。在三维空间下,模型的任何运动具体都可以分解为沿三个坐标轴轴向的平动以及绕三个坐标轴的转动,对于模型的驱动即就是要使得模型能够实现这六种运动,也可称之为车辆模型的六自由度运动。在计算机中,运动实际上是由连续播放一幅幅静止的画面而在人眼中形成的连续的效果,那么要实现车辆模型的六自由度运动,则要求车辆模型能够在任意六自由度下进行显示。

在OpenGL函数库中包含了一些模型变换函数,如glTranslate()、glRotate()、glScale()函数,使用这些函数可以轻松的对模型进行平移、旋转、拉伸、收缩等操作,然而这些函数的原理是使模型所在的坐标系发生平移、旋转等改变,以使模型产生变换的效果。如图所示,图1为glTranslatef(-2,2,-3)效果,图2为glRotatef(45.0,0.0,0.0,1.0)效果。

在使用计算机辅助分析道路交通事故并进行事故演示时,要求要有一个固定的坐标系,以方便给出车辆的运动轨迹坐标。若使用上述OpenGL函数对车辆模型进行驱动,由于其实质是驱动车辆模型所在的坐标系,则驱动时坐标系会不断改变,很难给出正确的车辆运动轨迹坐标,从而无法对事故进行正确演示。因此,要实现对车辆模型的正确驱动,须针对模型自身进行驱动。

要针对模型自身进行驱动,即可对组成模型的元素进行驱动,由于在3DMAX中建立的车辆模型是由对顶点组成,本文则通过对模型的顶点进行某种几何变换来实现对模型整体的驱动。其原理是:对于任意点 A(a,b,c),分别沿 X,Y,Z轴平移x,y,z距离,绕X,Y,Z轴分别旋转α,β,γ角度,得到点B(a1,b1,c1),则A与B点的坐标几何关系可以表述为矩阵形式,如式(1):

图1 移动坐标系

图2 旋转坐标系

由式(1)可知任意一点在给定六自由度为(x,y,z,α,β,γ)条件下,经过几何变换后的坐标。因此可根据此公式对车辆模型的顶点做上述几何变换,则其整体也会产生对应的变换,那么车辆模型就能够按照任意给定的六自由度正确显示,通过这样的方法也就实现了车辆模型的正确驱动,该驱动方式就是车辆模型的几何驱动。

另外,为了观察方便以及节省建模时间,对于车辆模型的显示比例,应实现可自由设定,使得模型可按比例随意放大缩小。可对组成模型的顶点坐标加上一个控制变量HI30,这样就可以根据HI30的值,决定整个模型的显示比例。

在实现了上述车辆模型的几何驱动以及显示比例自由设定后,对于任意一个车辆模型,假设其初始的顶点坐标集为A,在任意给定六自由度(x,y,z,α,β,γ)及显示比例 HI30的情况下,其坐标应变为B,则

这时,对于一起交通事故,通过对事故现场的调查、测量与计算,最终可得到事故过程中车辆的轨迹坐标。在事故演示时,只需要将一组组的坐标输入并连续播放,即可得到完整的事故演示动画。

3 车辆模型的车身颜色参数化研究

在实际道路交通事故中,同一种车型也可能有多种车身颜色,而对于每种车身颜色分别在3DMAX中建模显然很浪费时间。因此需考虑实现在程序中改变车身的颜色,实现车身颜色的参数化设定,这里的颜色改变指的是车身的颜色能改变,而其它部分的颜色不变,比如轮胎、车灯,其颜色要求固定不变。要实现这个目的,需经过两个步骤:

(1)提取车身颜色信息。在VC++中对车辆模型进行读取后,模型的颜色信息包括模型各个面的颜色RGB值、透明度等都已经被保存到相应数组中。要对车身颜色进行设定,而保持其它部分颜色不变,必须首先找到车身对应的颜色信息并提取出来。在车辆建模过程中,可将车身颜色设为一个固定值,在程序中对保存模型颜色信息的数组进行筛选,找到储存车身颜色信息的数组。

(2)对车身颜色进行参数化设定。找到储存车身颜色信息的对应数组后,即可通过对这些颜色信息进行赋值以实现在程序中自由改变车身的颜色。在对话框设定菜单选项,根据需要来选择车身的颜色。

4 实例

本文最终实现了对一起实际发生的交通事故进行模拟再现,该事故是发生于2012年8月26日的延安“8.26”特大交通事故。一辆满载乘客的双层卧铺客车与一辆运送甲醇的重型罐车在延安市境内的包茂高速公路化子坪服务区南出口200米处发生追尾碰撞,再现结果如图3-图6:

图3 事故再现关键帧(1)

图4 事故再现关键帧(2)

图5 事故再现关键帧(3)

图6 事故再现关键帧(4)

5 结语

本文介绍了对于道路交通事故再现中车辆模型驱动技术的研究,解决了车辆模型在固定坐标系下的驱动问题以及车身颜色的参数化设定问题,使得事故演示更加的准确、方便、快捷。

[1]舒强.道路交通事故三维模拟演示平台的研究与实现[D].西安:长安大学,2010.

[2]李一兵,陈云刚,吴卫东,等.道路交通事故再现模拟分析系统的研究[J],汽车工程,2001,4(23):226-229.

[3]魏朗,陈荫三.车对车碰撞事故再现计算机模拟系统的研究[J].中国公路学报,1996(4):105-110.

[4]王小飞.基于OpenGL的交通事故三维再现研究与程序实现[D].西安:长安大学,2007.

[5]李国超,刘爽,张延超,等.VC环境下基于OpenGL与3DS的三维场景重绘[J].电脑知识与技术,2010,6(35):10131-10133.

[6]常洪强,刘爽.基于OpenGL的3DS文件解析及视点移动和三维选择的实现[J].电子设计工程,2011,19(20):16-17.

[7]刘鹏程,何宗宜.利用OpenGL显示列表技术实现GIS对象的符号化[J].测绘信息与工程,2005,30(6):26-27.

[8]毕硕本,张国建,侯荣涛,等.三维建模技术及实现方法对比研究[J].武汉理工大学学报,2010,32(16):26-30.

猜你喜欢
坐标系交通事故车身
基于BPNN-AdaBoost的隧道交通事故数预测研究
独立坐标系椭球变换与坐标换算
预防交通事故
坐标系背后的故事
三角函数的坐标系模型
求坐标系内三角形的面积
事故车维修中的车身防腐(三)
中国交通事故的统计分析及对策
卡板在车身修复过程中的作用
车身塑料件的焊接修复方法