基于OpenGL的汽车转向三维模型设计

2009-9-22 作者: 陈家琪 曹晨光 来源: 万方数据

关键字: OpenGL 汽车转向 轨迹模型 三维模型 

汽车转向过程杭迹的计算比较复杂,需要使用汽车动力学诸多会式进行复杂的数学建模。汽车3D虚拟系统实时性要求较高,因此对汽车转向模型进行简化,同时控制汽车轨迹的误差。使用OpenGL设计汽车三维模型,通过估算横摆角速度得出简化的转向轨迹模型_据此设计汽车转向三维动画.实验结果表明汽车轨迹和姿态都取得了较好的可视化效果。

  汽车模型设计有着广泛的应用。汽车电子控制系统如ABS、ESP等性能测试平台需要建立汽车模型,虚拟驾驶系统和汽车3D虚拟系统需要建立汽车模利和运动轨迹模型。

  汽车性能测试平台、虚拟驾驶系统等研究性应用要求建立严格的数学模型,用户的输入通过传感器等硬件设备传人系统,可以提ff{特定的要求,如安装Matlab等软件和一些板卡等硬件。汽车3D虚拟系统对实时性和交互件要求较高,因此必须进行汽车模犁和轨迹模型的简化,同时必须控制汽车姿态和轨迹的误差,为汽车碰撞检测和地形踞配提供有效的数据。

  OpenGL是数百个函数的集合,提供了图形硬件接口,光照、雾化、反走样、纹理等渲染技术的应用可以获得较高的真实感。同时可利用Windows定时器等机制实现动画,通过消息机制实现与用户交互。显示列表等性能优化技术提高了运行效率。因此在3D虚拟系统开发中广泛应用。

  1、汽车三维模型

  1.1 OpenGL三维模型的一般形式

  OpenGL的函数库中有许多绘图函数用于绘制摹本图元和各种几何体,还可以导入其它工具制作的三维模型。通过基本图元、几何体、基本模型的组合和变换,形成目标模型。

  设制作一个三维模型需n个基本模型,定义操作序列P=M1(O1)M2(O2)·Mi(Oi)·Mn(On)。

  Oi为要绘制的第i个基本模型,可以是基本图元、几何体、其它工具制作的基本模型,也可以是一个操作序列。Mi(Oi)为绘制Oi之前的一系列矩阵操作。Mi=C1×C2×··Cm。Cj(j=l,2,·,m)为基本模型变换操作,以4x4的矩阵表示。

  OpenGL中连续两个模型变换一般不可交换顺序,模型变换的执行顺序和函数调用顺序相反。OpenGL是一个状态机,绘制Oi时还受一系列模型变换M1M2·Mi-1的影响。令Mi=(MiMj+1,Mi-1)-1C,恢复到Mj(j=1,2,…i-1)状态后,再执行模型变换C和基本模型的绘制。

  使用C=R{·,0,0,1}表爪绕Z轴逆时针旋转·,C=R{·,0,1,0}表示绕Y轴逆时针旋转·,C=R{·,1,0,0}表示绕X轴逆时针旋转·。使用C=T{x,y,z}表示沿X轴正向平移x单位,沿Y轴正向平移y单位,沿Z轴正向平移z单位。使用C=S{x,y,z}表示沿X轴方向缩放x倍,沿Y轴方向缩放y倍,沿Z轴方向缩放z倍。

  1.2基于OpenGL的汽车三维模型

  汽车组成十分复杂,只能抽取其中一部分进行建模。由于只关注汽车的姿态和运行轨迹,忽略质量、悬挂、发动机等。汽车三维模型南车身、底盘和四个车轮组成。

  车身安装在底盘上,其位置和姿态由底盘决定.和底盘的位置是相对固定的,i维模型建立时和底盘作为整体考虑。车身的绘制使用Bezier曲线和曲面完成。

  四个车轮转速、方向决定了汽车的位置和姿态,由用户通过键盘、鼠标等输入。模型在转向过程中主要考虑轮子质心的位置和速度,不考虑风阻、摩擦,滑移率等闲素,轮子转速与汽车线速度成正比,前轮转向角完全决定汽车转向。

  汽车规格丰要包括轮距、轴距。轮距即两个前轮(后轮)质心的距离。轴距即汽车前后两根轴之间的距离。根据汽车规格,确定其相对位置,从而使用模型,变换制作出相应的三维模型。四个车轮和汽车相对位置关系如图1所示。

  其中,Z轴垂直纸向向外。W为轮距, L为轴距,C为汽车质心,D为汽车后轴中点。β为车身到Y方向的夹角。P1、P2、P3、P4为轮子质心,也是前后轴的顶点,·为轮子转向与车身正前方的夹角。同时需要另外考虑轮子的转动,设Pi绕X轴转动的角度为φi。

  由图1得到制作基本汽车模型的步骤P =M1(O1M2O2M3O3M4O4M5O5);其中O1:车身和底盘;O2:轮子P4;O3:轮子P3; O4:轮子P2; O5:轮子P1;变换矩阵为:

  若Oi的绘制过程进行了模型变换,绘制完毕后必须进行逆变换,消除后续模型的影响。汽车模型建立完毕后,使用三投影技术获取实现汽车模型运动视景,获得良好的沉浸感。




<<首页 <上一页  1  2  3  下一页>  末页>>  
责任编辑:熊东旭