菜单
  

     
    图4.12    汽车贴地行驶
    4.4.2  汽车与房子碰撞检测
    OpenGVS提供了两个物体之间的碰撞检测函数int GV_geo_inq_obi_collision( GV_Obi object1, GV_Obi object2, G_Boolean * collision_out ); OpenGVS中每个物体都会有一个包围盒,两个物体之间的碰撞检测实际上是检测物体的包围盒是否碰撞,如果有交集说明碰撞了,否则没有碰撞。当场景中物体数目很多时,这种方法不适合用于通用碰撞检测;但是对于特定的物体之间的碰撞,检测速度很快。
    在本系统中,汽车和房子都是两个特定的物体,每要前进一步,先用碰撞检测函数检测前进以后是否会发生碰撞,如果有碰撞则汽车不前进,将当前没有碰撞的位置赋给汽车;否则,继续前进。
    其关键代码为:
    GV_geo_inq_obi_collision( vehicle, farmhouse,&collision ); //检测车与房子是否碰撞
        if(collision)//如果碰撞
        {
            GV_obi_set_position( vehicle, &vehicle_pos );//将当前的位置赋给汽车
            GV_obi_set_rotation( vehicle, &vehicle_rot );//将当前的姿态角赋给汽车
            return status;
        }
    这个函数是在GV_user_proc()函数中调用的,所以可以实时响应。
    图4.13    汽车与房子碰撞
    结  论
    本课题研究虚拟汽车驾驶模拟系统的开发,在开发过程中是利用OpenGVS开发平台开发的。建立一个人机交互式的界面,人可以通过键盘切换驾驶视角,通过移动鼠标来控制汽车的行驶,有较好的立体感,达到了虚拟现实的作用。取得的具体成果有以下几个(一)实现了一个可视化的人机交互平台;(二)可以在OpenGVS中导入一个地形数据库及三文模型;(三)场景的渲染;(四)通过鼠标可以控制汽车行驶及通过键盘切换驾驶视角;(五)汽车可以贴地行驶并撞上障碍物时可以停止。
    尽管本课题取得了一些成果,但不可否认,本课题还是存在着一些问题的。主要体现在两个方面,第一,由于调入的地形数据库是一个整体,所以我只能通过加入一个房子实体来验证物体与物体间的碰撞,但是汽车还是可以穿过树及栅栏,这是不符合实际的;第二,在实现汽车与房子的碰撞过程中,存在bug,汽车前进的步长不能及时变小,需要缓慢下降,即会出现鼠标往回移动时,汽车可能会向前移动一小步。这其实与汽车速度设置有关。
  1. 上一篇:MATLAB雷达有源干扰建模与仿真+文献综述
  2. 下一篇:Multisim在电子电路分析中的应用研究
  1. 超大规模集成电路中软模块的布局

  2. 光电系统近似模型研究

  3. PID控制在非线性时延离散混沌系统中的应用

  4. 基于差分进化算法的自动...

  5. 基于混沌的图像加密通信...

  6. MPS模块化生产系统的开发及研究+PLC梯形图

  7. HFSS的SIR微带带通滤波器设计

  8. 杂拟谷盗体内共生菌沃尔...

  9. java+mysql车辆管理系统的设计+源代码

  10. 乳业同业并购式全产业链...

  11. 电站锅炉暖风器设计任务书

  12. 大众媒体对公共政策制定的影响

  13. 酸性水汽提装置总汽提塔设计+CAD图纸

  14. 河岸冲刷和泥沙淤积的监测国内外研究现状

  15. 十二层带中心支撑钢结构...

  16. 中考体育项目与体育教学合理结合的研究

  17. 当代大学生慈善意识研究+文献综述

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回