一种飞行器的三维视景仿真系统的制作方法
【技术领域】
[0001]本发明属于计算机三维仿真技术领域,更为具体地讲,涉及一种飞行器的三维视景仿真系统。
【背景技术】
[0002]随着计算机三维仿真技术和飞行器技术的快速发展,飞行器的三维可视化仿真研宄在飞行器研宄领域起着举足轻重的作用。通过三维仿真系统,研宄人员对数据的分析方式发生了根本变化,不再停留在大量复杂的数值曲线研宄上,而是通过三维动画来反映飞行器的实时飞行状况,更加直观形象地验证飞行方案设计的正确性及准确性。
[0003]目前,对于飞行器视景仿真系统的研宄已经有了一些研宄成果,市面上也有一些比较专业的视景仿真软件,例如FlightGear、Vega、Vega Prime、VTree等,用户可以在此基础上进行二次开发,这种方式需要对该软件进行系统地分析研宄,但是大部分商业软件价格昂贵,并且代码不开源,所需成本较高,并且存在重复开发问题。
[0004]为了解决这些问题,专利CN103093047A典型飞行器视景仿真系统中提出了一种适用于各种飞行器的三维视景仿真系统,但是在这个系统中也存在着一些不足:
[0005]1、该系统只支持3ds文件格式的飞行器模型。飞行器的3D模型可能有多种文件格式,虽然这些格式的模型都可以通过相关软件转化成3ds格式,但是格式转化过程中可能会导致某些模型数据的丢失。
[0006]2、该系统中的数据可视化模块基于编辑框控件实现,可以对飞行器的各种属性进行实时数值和曲线显示。这种基于控件绘制曲线的方式比较复杂,因为MFC类库中没有数值曲线显示控件,通过控件绘制数值曲线需要调用画笔构造显示环境。
[0007]3、该飞行仿真系统采用UDP通讯方式,只能接收局域网上位机的数据传递,无法接收飞行器实际飞行数据。只能验证控制算法,而不能修正控制算法。
[0008]4、该仿真系统不能设置特定的飞行模式,只能以一种视角跟随飞行器运动,没有设计三维场景漫游功能。
[0009]5、该仿真系统没有考虑碰撞检测问题。
【发明内容】
[0010]本发明的目的在于克服现有技术的不足,提供一种飞行器的三维视景仿真系统,通过实时仿真和回放仿真的方式,从而满足用户的基本仿真要求。
[0011]为实现上述发明目的,本发明一种飞行器的三维视景仿真系统,其特征在于,包括:
[0012]一人机交互模块,用于处理用户的界面操作和系统操作的信息显示;
[0013]三维视景仿真系统启动后,用户通过点击开始按钮对三维视景仿真系统解锁,再点击人机交互模块上相应按钮进行系统设置;
[0014]一模型配置模块,包括控制对象配置和仿真场景配置;在控制对象配置中加载用户需要的3D模型,在仿真场景配置中加载对应的飞行场景模型,加载完成后,系统将自动启动碰撞检测算法模块,并通过视景显示模块对加载的3D模型和飞行场景模型进行初始化显示;
[0015]一碰撞检测模块,利用基于图像空间的碰撞检测优化算法,在视景显示模块的实时仿真过程中对模型配置模块中加载的3D模型和飞行场景模型进行实时计算,用于实时检测飞行器与仿真场景是否发生碰撞,得到碰撞检测结果,存储在数据存储模块;
[0016]一视景显示模块,包括实时显示模块和回放显示模块;
[0017]实时显示模块将通信模块与MATLAB引擎或飞行器间的通信数据通过纯数值、数值曲线和三维动画三种方式显示,其中,三维动画显示时,调用数据存储模块中的碰撞检测结果,碰撞检测模块再次监测飞行器和飞行场景是否发生碰撞,如果发生碰撞,则停止实时仿真,人机交互模块产生警报,如果不发生碰撞,则将该次仿真数据存储在数据存储模块;
[0018]回放显示模块通过读取数据存取模块中的数据进行纯数值、数值曲线和三维动画显不;
[0019]在同一时刻,视景显示模块只能选择一个显示模块工作,每个显示模块可以选择三种显示方式中的一种或两种或三种同时显示,具体可以通过人机交互模块的显示模式按钮选择;
[0020]一通信模块,包括UDP通信模块和串口通信模块,采用数据双向传递方式;通信模块根据视景显示模块选择的显示模块确定出通信模块的工作方式;
[0021]如果视景显示模块选择实时显示模块,则通信模块进入实时飞行仿真通信模式;此时,启动m)P通信模块或串口通信模块工作,其中,UDP通信模块用于接收和传递三维视景仿真系统与MATLAB引擎间的数据,串口通信模块用于接收和传递三维视景仿真系统与飞行器间的数据;UDP通信模块和串口通信模块在接受数据时均需要通过时间戳判断是否出现数据掉包,如果发生掉包,则由数据的平均值补齐,再将接收的数据传递给视景显示模块,同时存储到数据存储模块;
[0022]如果视景显示模块选择回放显示模块,则通信模块进入回放飞行仿真通信模式;此时,通信模块自动关闭,视景显示模块直接从数据存储模块中读取数据进行相应显示;
[0023]—数据存储模块,用于存储三维视景仿真系统与MATLAB引擎或飞行器间的通信数据,以及碰撞检测模块得到碰撞检测结果;
[0024]—三维场景漫游模块,用户通过鼠标、键盘在三维场景漫游模块中控制摄像机的移动和旋转,从而改变用户观察飞行器和场景的视角;
[0025]三维视景仿真系统的工作流程如下所述;
[0026]三维视景仿真系统启动后,用户通过点击开始按钮对三维视景仿真系统解锁,再点击人机交互模块上相应按钮进行系统设置;
[0027]点击人机交互模块的模型加载按钮,模型配置模块利用开源库加载飞行器的3D模型和飞行场景模型,同时启动碰撞检测模块,并对加载的模型进行初始化显示;在初始化显示时,启动三维场景漫游模块,用户通过鼠标、键盘可以控制用户观察视角的变化;
[0028]点击人机交互模块的实时仿真按钮,三维视景仿真系统进入实时仿真阶段;此时,还要选择通信模块中的UDP通信或者串口通信;
[0029]点击UDP通信按钮,UDP通信开始接收、传递三维视景仿真系统与MATLAB引擎间的数据;
[0030]点击串口通信按钮,串口通信模块开始接收、传递三维视景仿真系统与飞行器间的数据;
[0031]在同一时刻,只能点击一个通信按钮,UDP通信或者串口通信下的通信数据均存储在数据存储模块,同时发送给视景显示模块,通过纯数值、仿真曲线和三维动画三种方式显示,三种显示方式均可点击对应的按钮,选择开启或者关闭;在三维动画显示时,启动三维场景漫游模块,用户通过鼠标、键盘可以控制用户观察视角的变化;
[0032]点击人机交互模块的回放仿真按钮,三维视景仿真系统进入回放仿真阶段;此时,通信模块自动关闭,视景显示模块直接从数据存储模块中读取数据,通过纯数值、仿真曲线和三维动画三种方式显示,三种显示方式均可点击对应的按钮,选择开启或者关闭;此时,在三维动画显示时,启动三维场景漫游模块,用户也可以通过鼠标、键盘可以控制用户观察视角的变化。
[0033]本发明的发明目的是这样实现的:
[0034]本发明飞行器的三维视景仿真系统,包括人机交互模块、模型配置模块、碰撞检测模块、视景显示模块、通信模块、数据存储模块和三维场景漫游模块,并行处理用户的仿真操作;具体讲,利用MFC类库完成人机交互界面的开发,利用ProEssential和OpenGL分别完成纯数值、数值曲线和三维动画的仿真,通信模块采用UDP通信和串口通信技术,碰撞检测算法模块采用了基于图像的碰撞检测优化算法,从而使整个系统能够满足用户的基本仿真要求。
[0035]同时,本发明飞行器的三维视景仿真系统还具有以下有益效果:
[0036]1、使用第三方开源库Open Asset Import Library来导入模型文件,第三方开源库支持多种格式的3D模型加载,增强了系统的通用性和扩展性;
[0037]2、利用图标制作软件ProEssential绘制二维曲线,应用程序中使用较为便捷,绘制速度快,外形美观且易修改;
[0038]3、实时仿真模式和飞行回放模式同时开发,通信模块中包含UDP通信和串口通信,实现了飞行器实时仿真和离线三维仿真功能;
[0039]4、本系统的仿真形式包含飞行器属性参数的纯数值、数值曲线和三维动画等多种仿真显示形式,增强了系统的扩展性;
[0040]5、三维场景漫游功能增加了用户虚拟环境沉浸感,通过人机交互能够使用户更好的体验虚拟场景,用户可以从多个视角观察飞行器三维仿真;
[0041]6、增加了基于图像空间的碰撞检测优化算法,利用GPU加速技术减轻CPU负担,三维视景仿真系统中加入该模块进行避障和碰撞检测,具有一定的创新性。
【附图说明】
[0042]图1是飞行器的三维视景仿真系统总体框架图;
[0043]图2是图1所示视景显示模
块的结构框图;
[0044]图3是图1所示的通信模块工作流程图;
[0045]图4是碰撞检测算法流程图;
[0046]图5是广度优先策略对两个层次二叉树同时递归遍历的示意图;
[0047]图6是图1所示三维场景漫游模块流程图。
【具体实施方式】
[0048]下面结合附图对本发明的【具体实施方式】进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
[0049]实施例
[0050]为了方便描述,先对【具体实施方式】中出现的相关专业术语进行说明:
[0051]PCS (Potential Collis1n Detect1n Set):潜在碰撞检测集合;
[0052]OBB(Oriented Bounded Boxes):有向包围盒;
[0053]UDP (User Datagram Protocal):用户数据报协议;
[0054]图1是飞行器的三维视景仿真系统总体框架图。
[0055]在本实施例中,如图1所示,飞行器的三维视景仿真系统包括人机交互模块、模型配置模块、碰撞检测模块、视景显示模块、通信模块、数据存储模块和三维场景漫游模块。其中,如图1所示,模型配置模块又包括控制对象配置和仿真场景配置,通信模块又包括UDP通信模块和串口通信模块,视景显示模块又包括实时显示模块和回放显示模块。
[0056]下面结合图1对三维视景仿真系统的工作流程进行详细说明,在本实施例中,三维视景仿真系统的工作流程包括以下步骤:
[0057]S1、启动三维视景仿真系统
[0058]三维视景仿真系统启动后,用户通过点击人机交互模块上的开始按钮对三维视景仿真系统解锁,再通过人机交互模块处理用户的界面操作和系统操作的信息显示;
[0059]S2、加载模型
[0060]点击人机交互模块上的模型加载按钮,模型配置模块利用第三方开源库OpenAsset Import Library,在控制对象配置中加载用户需要的3D模型,在仿真场景配置中加载对应的飞行场景模型,模型加载完成后,人机交互模块将自动显示加载信息,同时启动碰撞检测模块,并对加载的模型进行初始化显示;在初始化显示时,可以启动三维场景漫游模块,用户通过鼠标、键盘可以控制用户观察视角的变化;
[0061]在本实施例中,第三方开源库Open Asset Import Library支持多种格式的3D模型加载,例如obj、3ds、md2、dae等格式;在仿真场景配置中存在几种比较经典的场景,如天空、山地、城市、机场、海洋等,用户也可以进行二次开发,添加用户需要的3D模型和对应的飞行场景模型,这样增强了系统的通用性和扩展性;
[0062]S3、碰撞检测
[0063]模型加载完成后,三维视景仿真系统自动启动碰撞检测模块,
[0064]利用基于图像空间的碰撞检测优化算法,在视景显示模块的实时仿真过程中对模型配置模块中加载的3D模型和飞行场景模型进行实时计算,用于实时检测飞行器与仿真场景是否发生碰撞,得到碰撞检测结果,存储在数据存储模块;
[0065]S4、仿真
[0066]点击人机交互模块的实时显示按钮,三维视景仿真系统进入实时仿真阶段;此时,还要选择通信模块中的UDP通信或者串口通信,如果选择UDP通信,则接收、传递三维视景仿真系统与MATLAB引擎间的数据;如果选择串口通信,则接收、传递三维视景仿真系统与飞行器间的数据;同一时刻,通信模块中只能选择一种通信方式,通信的数据均会存储在数据存储模块中;
[0067]如图2所示,实时仿真通过视景显示模块选择纯数值显示、仿真曲线显示和三维动画显示三种显示方式,三种显示方式均可单独选择开启或者关闭;其中,三维动画显示时,调用数据存储模块中的碰撞检测结果,碰撞检测模块再次监测飞行器和飞行场景是否发生碰撞,如果发生碰撞,则停止实时仿真,人机交互模块产生警报,如果不发生碰撞,则将该次仿真数据存储在数据存储模块;
[0068]点击人机交互模块的回放显示按钮,三维视景仿真系统进入回放仿真阶段;此时,通信模块自动关闭,视景显示模块直接从存储模块中读取数据,再进行纯数值显示、数值曲线显示和三维动画显示,三种显示方式也可以单独选择开启或者关闭;
[0069]其中,在三维动画显示时,用户也可以启动三维场景漫游模块,通过鼠标、键盘可以控制用户观察视角的变化;
[0070]综上,实时显示模块与通信模块和碰撞检测模块进行联合仿真,回放显示模块与数据存取模块和碰撞检测模块进行联合仿真。
[0071]在本实施例中,纯数值显示是利用MFC中的编辑控件进行显示,仿真曲线显示是利用工业绘图软件ProEssential绘制曲线,三维动画显示是利用OpenGL开源图形库,基于关键帧和插值算法实现。
[0072]图3是图1所示的通信模块工作流程图。
[0073]在本实施例中,如图3所示,通信模块有两种工作方式,S卩UDP通信和串口通信。其中,UDP通信采用Socket套接字网络编程,与局域网中的其他主机进行IP地址和端口绑定,完成三维视景仿真系统和MATLAB控制系统进行数据交换。串口通信用于三维视景仿真系统和数传电台间的数据传输,这样便于三维视景仿真系统和飞行器间通信。
[0074]UDP通信模块和串口通信模块在接受数据时均需要通过时间戳判断是否出现数据掉包,如果发生掉包,则由数据的平均值补齐,再将接收的数据传递给视景显示模块,同时存储到数据存储模块。
[0075]图4是碰撞检测算法流程图。
[0076]在本实施例中,在碰撞检测模块中,采用基于图像空间的碰撞检测算法对3D模型和飞行场景进行计算,如图4所示,其具体的步骤为:
[0077]I)、首先利用表面凸分解技术对3D模型和飞行场景模型进行凸分解,得到凸块集合;在本实施例中,采用Qhull软件来进行表面凸分解技术;
[0078]2)、为3D模型和飞行场景模型分别构建层次二叉树,层次二叉树的树节点为凸块集合中的凸块,记为凸块节点;在本实施例中,层次二叉树为现有技术,具体可以参考霍滨焱.基于图像空间的碰撞检测[D].哈尔滨:哈尔滨工程大学,2005,在此不再赘述;
[0079]利用自顶向下策略,为每棵层次二叉树的凸块节点构建OBB包围盒,再利用三角形带编码技术对凸块节点进行编码;
[0080]3)、利用广度优先策略对两个层次二叉树同时递归遍历,如图5所示,遍历过程如下:
[0081](a)、将两层次二叉树根节点设置为当前节点对(K Btl),再利用该凸块节点的OBB包围盒检测,判断当前节点对所对应的OBB包围盒之间是否相交,如果这两个OBB包围盒之间不相交,则两模型不会发生碰撞,遍历终止;如果两OBB包围盒之间相交,则进入步骤(b);
[0082](b)、从上至下遍历当前节点对的子节点,两棵层次二叉树的子节点之间形成节点对,如图5所示,即形成(An,B11), (A111B12), (A12, B11), (A12, B12)四个节点对,依次将每一个节点对设置为当前节点对,例如,先将(An,Bn)设置为当前节点对,再利用该凸块节点的OBB包围盒检测,在检测过程中,如果当前节点对(A11, B11)所对的OBB包围盒之间不相交,则该节点对下面层次的子节点不再进行遍历,即(A21, B21), (A21, B22), (A22, B21), (A22, B22)不再进行遍历,同时将同层次的下一个节点对(An,B12)设置为当前节点对,继续进行检测;如果当前节点对所对的OBB包围盒之间相交(An,B11),则递归遍历该过程,8卩:先遍历(An,B11)的子节点,再返回同层遍历下一个节点对,直到两个层次二叉树的最后一个相交叶子节点对,再进入步骤4);
[0083]4)、利用步骤3)中发生碰撞的节点对,建立了 3D模型层次二叉树中每个发生碰撞的叶子节点A2k的潜在碰撞集合PCS k,k的可能取值为1、2、3和4其中,潜在碰撞集合PCSk中的元素为飞行场景模型层次二叉树中对应的叶子节点B2i,i的可能取值为1、2、3和4 ;
[0084]5)、利用基于图像空间的碰撞检测算法对潜在碰撞集合PCSk进行检测,即分别将叶子节点A2k所对应的凸块与PCS k中所有叶子节点B 2i所对应的凸块进行基于图像空间的碰撞检测算法的碰撞检测,同时在代码逻辑层次进行优化,得到碰撞检测结果。
[0085]图6是图1所示三维场景漫游模块流程图。
[0086]在本实施例中,用户可以在模型加载完成后初始化显示,及实时、回放仿真后通过三维动画显示时,启用三维场景漫游模块,通过鼠标、键盘可以控制用户观察视角的变化。如图6所
示,下面进行详细说明,如下:
[0087]三维场景漫游模块的构建时,需要预先选择能够实现本发明功能的摄像机,其满足条件为:本摄像机需具有两个自由度控制轴,其中一个沿着向量(0,1,0)可以旋转360°,角度称作水平角,向量为垂直轴。另一个向量为水平轴,始终垂直于摄像机瞄准方向向量(Target向量),同时平行于地面(xoz平面),水平轴是一个变化的向量且沿着水平轴旋转的垂直角角度值是有限的。
[0088]如图6所示,首先新建一个Camera类来封装摄像机的所有操作,该类保存摄像机的参数,基于接收的事件来改变这些参数,从而控制摄像机的运动。在Camera类中创建两个成员函数,分别用来处理键盘事件和鼠标事件,即=KeyboardCB函数用来处理键盘事件,例如按下方向上键时,则会增加Target方向的值,摄像机将会沿着Target方向前进,同理,当按下方向右键时,则会增加向右的位置向量,摄像机将向右移动;PassiveMouseCB函数用来处理鼠标事件,例如鼠标左右移动来改变水平角,上下移动来改变垂直角,实现鼠标控制摄像机的方位。
[0089]尽管上面对本发明说明性的【具体实施方式】进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于【具体实施方式】的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
【主权项】
1.一种飞行器的三维视景仿真系统,其特征在于,包括: 一人机交互模块,用于处理用户的界面操作和系统操作的信息显示; 三维视景仿真系统启动后,用户通过点击开始按钮对三维视景仿真系统解锁,再点击人机交互模块上相应按钮进行系统设置; 一模型配置模块,包括控制对象配置和仿真场景配置;在控制对象配置中加载用户需要的3D模型,在仿真场景配置中加载对应的飞行场景模型,加载完成后,系统将自动启动碰撞检测算法模块,并通过视景显示模块对加载的3D模型和飞行场景模型进行初始化显示; 一碰撞检测模块,利用基于图像空间的碰撞检测优化算法,在视景显示模块的实时仿真过程中对模型配置模块中加载的3D模型和飞行场景模型进行实时计算,用于实时检测飞行器与仿真场景是否发生碰撞,得到碰撞检测结果,存储在数据存储模块; 一视景显示模块,包括实时显示模块和回回放显示模块; 实时显示模块将通信模块与MATLAB引擎或飞行器间的通信数据通过纯数值、数值曲线和三维动画三种方式显示,其中,三维动画显示时,调用数据存储模块中的碰撞检测结果,碰撞检测模块再次监测飞行器和飞行场景是否发生碰撞,如果发生碰撞,则停止实时仿真,人机交互模块产生警报,如果不发生碰撞,则将该次仿真数据存储在数据存储模块; 回放显示模块通过读取数据存取模块中的数据进行纯数值、数值曲线和三维动画显示; 在同一时刻,视景显示模块只能选择一个显示模块工作,每个显示模块可以选择三种显示方式中的一种或两种或三种同时显示,具体可以通过人机交互模块的显示模式按钮选择; 一通信模块,包括UDP通信模块和串口通信模块,采用数据双向传递方式;通信模块根据视景显示模块选择的显示模块确定出通信模块的工作方式; 如果视景显示模块选择实时显示模块,则通信模块进入实时飞行仿真通信模式;此时,启动UDP通信模块或串口通信模块工作,其中,m)P通信模块用于接收和传递三维视景仿真系统与MATLAB引擎间的数据,串口通信模块用于接收和传递三维视景仿真系统与飞行器间的数据;UDP通信模块和串口通信模块在接受数据时均需要通过时间戳判断是否出现数据掉包,如果发生掉包,则由数据的平均值补齐,再将接收的数据传递给视景显示模块,同时存储到数据存储模块; 如果视景显示模块选择回放显示模块,则通信模块进入回放飞行仿真通信模式;此时,通信模块自动关闭,视景显示模块直接从数据存储模块中读取数据进行相应显示; 一数据存储模块,用于存储三维视景仿真系统与MATLAB引擎或飞行器间的通信数据,以及碰撞检测模块设定的飞行器飞行边界范围; 一三维场景漫游模块,用户通过鼠标、键盘在三维场景漫游模块中控制摄像机的移动和旋转,从而改变用户观察飞行器和场景的视角; 三维视景仿真系统的工作流程如下所述; 三维视景仿真系统启动后,用户通过点击开始按钮对三维视景仿真系统解锁,再点击人机交互模块上相应按钮进行系统设置; 点击人机交互模块的模型加载按钮,模型配置模块利用开源库加载飞行器的3D模型和飞行场景模型,同时启动碰撞检测模块,并对加载的模型进行初始化显示;在初始化显示时,启动三维场景漫游模块,用户通过鼠标、键盘可以控制用户观察视角的变化; 点击人机交互模块的实时仿真按钮,三维视景仿真系统进入实时仿真阶段;此时,还要选择通信模块中的m)P通信或者串口通信; 点击UDP通信按钮,UDP通信开始接收、传递三维视景仿真系统与MATLAB引擎间的数据; 点击串口通信按钮,串口通信模块开始接收、传递三维视景仿真系统与飞行器间的数据; 在同一时刻,只能点击一个通信按钮,启动m)P通信或者串口通信,并将UDP通信或者串口通信下的通信数据均存储在数据存储模块,同时发送给视景显示模块,通过纯数值、仿真曲线和三维动画三种方式显示,三种显示方式均可点击对应的按钮,选择开启或者关闭;在三维动画显示时,启动三维场景漫游模块,用户通过鼠标、键盘可以控制用户观察视角的变化; 点击人机交互模块的回放仿真按钮,三维视景仿真系统进入回放仿真阶段;此时,通信模块自动关闭,视景显示模块直接从数据存储模块中读取数据,通过纯数值、仿真曲线和三维动画动画三种方式显示,三种显示方式均可点击对应的按钮,选择开启或者关闭;此时,在三维动画显示时,启动三维场景漫游模块,用户也可以通过鼠标、键盘可以控制用户观察视角的变化。2.根据权利要求1所述的飞行器的三维视景仿真系统,其特征在于,所述的纯数值显示是利用MFC中的编辑控件进行显示;所述的仿真曲线显示利用工业绘图软件ProEssential绘制数值仿真曲线;所述的三维动画显示是利用OpenGL开源图形库,基于关键帧和插值算法实现。3.根据权利要求1所述的飞行器的三维视景仿真系统,其特征在于,所述的所述的碰撞检测模块中,基于图像空间的碰撞检测算法对3D模型和飞行场景模型进行计算的步骤为: 3.1、首先利用表面凸分解技术对3D模型和飞行场景模型进行凸分解,得到凸块集合;3.2、为3D模型和飞行场景模型分别构建层次二叉树,层次二叉树的树节点为凸块集合中的凸块,记为凸块节点; 利用顶向下策略,为每棵层次二叉树的凸块节点构建OBB包围盒,再利用三角形带编码技术对凸块节点进行编码; 3.3、利用广度优先策略对两个层次二叉树同时递归遍历,遍历过程如下: (a)、将两层次二叉树根节点设置为当前节点对,再利用该凸块节点的OBB包围盒检测,判断当前节点对所对应的OBB包围盒之间是否相交,如果这两个OBB包围盒之间不相交,则两模型不会发生碰撞,遍历终止;如果量OBB包围盒之间相交,则进入步骤(b); (b )、从上至下遍历当前节点对的子节点,两棵层次二叉树的子节点之间形成节点对,依次将每一个节点对设置为当前节点对,再利用该凸块节点的OBB包围盒检测,在检测过程中,如果当前节点对所对的OBB包围盒之间不相交,则该节点对下面层次的子节点对不再进行遍历,同时将同层次的下一个节点对设置为当前节点对,继续进行检测;如果当前节点对所对的OBB包围盒之间相交,则递归遍历该过程,直到两个层次二叉树的最后一个相交叶子节点对,再进入步骤(3.4); 3.4、利用步骤(3.3)中发生碰撞的节点对,建立了 3D模型层次二叉树中每个发生碰撞的叶子节点的潜在碰撞集合PCS,PCS中的元素为飞行场景模型层次二叉树中对应的部分或全部叶子节点; 3.5、利用基于图像空间的碰撞检测算法对潜在碰撞集合PCS进行检测,即分别将3D模型层次二叉树中发生碰撞的叶子节点所对应的凸块与PCS中所有叶子节点所对应的凸块进行基于图像空间的碰撞检测算法的碰撞检测,同时在代码逻辑层次进行优化,得到碰撞检测结果。
【专利摘要】本发明公开了一种飞行器的三维视景仿真系统,包括人机交互模块、模型配置模块、碰撞检测模块、视景显示模块、通信模块、数据存储模块和三维场景漫游模块,并行处理用户的仿真操作;具体讲,利用MFC类库完成人机交互界面的开发,利用ProEssential和OpenGL分别完成纯数值、数值曲线和三维动画的仿真,通信模块采用UDP通信和串口通信技术,碰撞检测算法模块采用了基于图像的碰撞检测优化算法,从而使整个系统能够满足用户的基本仿真要求。
【IPC分类】G06F17/50, G06F9/455
【公开号】CN104881518
【申请号】CN201510217615
【发明人】李 瑞, 王力行, 郑钊
【申请人】电子科技大学
【公开日】2015年9月2日
【申请日】2015年4月30日
转载请注明原文地址:https://www.famiwei.com/read-8138558.html