一种基于图像截取的仪表显示方法技术

技术编号:37139639 阅读:23 留言:0更新日期:2023-04-06 21:43
本发明专利技术公开了一种基于图像截取的仪表显示方法,实现提高在虚幻引擎5下的仪表显示效率。本发明专利技术方法在虚幻引擎5程序外部单独进行仪表的开发,开发完成后的仪表形成单独显示的窗口,并具有自己的窗口句柄;在虚幻引擎5的程序中开启独立线程,独立线程中设置截图和缓存函数,用于循环从仪表程序窗口截取图像并存为位图格式,存入虚幻引擎5的图片缓存中,在虚幻引擎5中创建图片显示接口将仪表显示在屏幕上;对多个仪表,按照次序依次根据所截取图像进行仪表显示。本发明专利技术采用截取式显示仪表,保证了仪表程序的独立性和复用性,减少了虚幻引擎5程序的开发难度,提高了仪表显示效率。提高了仪表显示效率。提高了仪表显示效率。

【技术实现步骤摘要】
一种基于图像截取的仪表显示方法


[0001]本专利技术属于计算机和虚拟现实
,具体涉及虚幻引擎5下关于仪表以及类似的带屏幕有显示内容的物体的显示技术,具体涉及一种基于图像截取的仪表显示方法。

技术介绍

[0002]在飞行仿真领域中,随着计算机图形学和硬件性能的高速发展,虚拟现实设备逐渐发挥越来越大的作用。相比于传统飞行模拟机,虚拟现实设备在价格、运营维护成本、使用灵活性上都有着显著的优势,甚至具有部分传统模拟机难以实现的训练功能:
[0003](1)对于飞行学员,或者复训飞行员进行的流程训练,使用高等级FTD(Fixed Training Devices,基座固定式模拟机)或FFS(Full Flight Simulators,全动模拟器)进行训练过于昂贵,并且没有必要。
[0004](2)传统模拟机训练更加注重的是飞行技能的训练,难以关注到飞行过程中飞行员注意力分配的问题。
[0005](3)对于一部分通航飞机,由于模拟机研制、运营成本相比实飞训练成本还要高,导致没有模拟机厂商愿意研制该型号模拟机。
[0006](4)不同于传统飞行模拟机,一台设备只能对应一个型号飞机,虚拟现实设备能够通过软件灵活配置飞机型号、训练科目等内容,具有传统模拟机难以比拟的灵活性。
[0007]而在虚拟现实程序开发领域,虚幻引擎5具有功能强大,运行效率高,开发成本低等优势。因此飞行仿真等项目可以选择使用虚幻引擎5进行虚拟现实程序的开发。其中在虚拟现实程序中显示仪表类物体如高度表、空速表、地平仪等是模拟系统中不可缺少的一部分。通常在虚幻引擎5中显示仪表选用直接绘制的方式,即使用引擎中内置的类与函数进行仪表显示的开发。然而这种方式存如下缺陷:
[0008](1)仪表显示屏上的内容通常较复杂且需要大量的专业参数对仪表显示进行实时更新,使得在虚幻引擎5之下需要复杂的图像处理与逻辑处理,而由于处理较复杂,仪表显示会拉低程序整体运行效率。
[0009](2)因为虚幻引擎5的特性,针对仪表显示内容的显示与更新的开发工作困难较大,因此降低了项目的开发效率。
[0010](3)仪表程序与虚幻引擎5程序耦合性较大,维护成本较高。
[0011](4)无法使用已有系统中已经开发完成的仪表,增加了重复的工作量。
[0012](5)开发后虚幻引擎5程序内的仪表不具备复用性,在虚幻引擎5引擎中仪表开发完成之后,难以在其他工作环境下发挥作用。

技术实现思路

[0013]为了克服现有技术中仪表运行效率低、开发困难、复用性差的缺陷,本专利技术提供了一种基于图像截取的仪表显示方法,实现单独开发仪表,之后通过程序将画面截取并映射至虚幻引擎5的程序中的方式完成仪表内容的显示。
[0014]本专利技术提供的一种基于图像截取的仪表显示方法,包括以下步骤:
[0015]步骤1:对要显示的仪表,虚幻引擎5获取独立的仪表程序的窗口的图像,包括:
[0016]在虚幻引擎5中设置截图函数,所述截图函数通过窗口名获取仪表程序窗口句柄,之后通过仪表程序窗口句柄计算窗口的宽与高,并通过宽高得到被获取的仪表程序窗口的显示范围,最后根据显示范围得到位图句柄。执行截图函数获取当前仪表程序窗口显示范围内的图像。
[0017]步骤2:虚幻引擎5基于所获取的位图句柄计算位图相关数据;
[0018]在虚幻引擎5中设置缓存函数,所述缓存函数实现的功能包括:获取当前设备(系统)中位图文件中单个像素所占的字节数、设置调色板尺寸、设置位图的信息头的结构、为位图的内容分配内存、设置位图文件头、缓存位图文件头与文件内容。执行缓存函数之后将步骤1中截取的仪表程序窗口显示范围内的图像转换为位图格式缓存至内存中。
[0019]步骤3:在虚幻引擎5中创建新的图片类,用于显示图片;
[0020]在虚幻引擎5程序中创建新的图片类,并在该新类的代码中调用步骤1的截图函数和步骤2的缓存函数。
[0021]在虚幻引擎5编辑器中创建继承自该新类的蓝图类,在蓝图脚本中添加图片控件用于显示图片。在虚幻引擎5编辑器中添加新创建的蓝图类为图片对象。
[0022]在虚幻引擎5编辑器中设置图片的位置、旋转、缩放。在蓝图脚本中设置图片的尺寸和分辨率。
[0023]步骤4:在新的图片类的对象的帧循环中添加图片加载函数与图片刷新函数;
[0024]在帧循环中判断是否存在旧的图片数据,如果存在则释放旧的图片数据。之后运行图片加载函数将新的图片数据加载进图片纹理容器中。之后运行图片刷新函数,将图片纹理容器中的图片数据刷新至屏幕中。
[0025]步骤5:在虚幻引擎5程序中加入多线程代码;
[0026]对每个显示的仪表使用一个独立线程,在每个独立线程中运行一个截取函数与缓存函数代码。程序运行时将使截图和缓存函数代码不占用主线程运行时间,而在独立线程中运行。当存在多个仪表时,采用每次循环执行上述步骤进行一个仪表的显示,按照次序依次渲染所有仪表的方式以提高运行效率。
[0027]相比现有技术,本专利技术的优点和积极效果在于:
[0028](1)本专利技术方法采用了仪表单独开发与绘制的形式,由于对绘制的程序没有特别要求,因此在开发技术、软件工具、实现方案等具体使用技术上无特别限制,从而避免了使用虚幻引擎5开发仪表困难的问题。
[0029](2)采用本专利技术方法实现了仪表与虚幻引擎5程序的解耦,解决了仪表的通用性问题,同时提高了仪表程序代码的可维护性。
[0030](3)采用本专利技术方法可以快速复用已经由例如OpenGL单独开发好的仪表界面并将其用于到虚拟现实程序中,降低开发成本。
[0031](4)由于通过本专利技术方法实现将仪表的绘制交由独立程序进行,因此在虚幻引擎5中只需要得到结果图像即可,不需要进行仪表数据的处理,降低了仪表图像在虚幻引擎5中渲染的复杂度,提升了仪表的渲染效率。
[0032](5)本专利技术方法实现的图像截取方式更轻量化、效率更高、实时性更好,解决了传
统推流方案延迟高、实时性差、无法保证人在回路的飞行仿真过程中延迟小于150ms的要求等问题。
附图说明
[0033]图1为本专利技术的基于图像截取的仪表显示方法的实现流程图;
[0034]图2为本专利技术实现的仪表显示窗口与UE5实现的窗口的逻辑关系图。
具体实施方式
[0035]下面结合附图,以使用OpenGL单独开发的仪表为例,对本专利技术的基于图像截取的仪表显示方法进行说明,对如何将仪表映射至虚幻引擎5程序做了详细说明。具体步骤如下:
[0036]本专利技术的基于图像截取的仪表显示方法分如下5个步骤来说明,整体如图1所示。
[0037]步骤1:虚幻引擎5获取独立的仪表程序的窗口的内容数据。
[0038]仪表程序为独立于虚幻引擎5程序之外进行开发的。开发完成后的仪表形成单独显示的窗口,并具有自己的窗口句柄。在存在多块仪表的场合,通过不同的窗口名称进行区别。...

【技术保护点】

【技术特征摘要】
1.一种基于图像截取的仪表显示方法,其特征在于,包括如下步骤:步骤1:虚幻引擎5对要显示的仪表,获取该仪表独立的仪表程序窗口内的图像;在虚幻引擎5中设置截图函数,所述截图函数获取仪表程序窗口句柄,通过仪表程序窗口句柄计算窗口的宽与高,由宽与高得到被获取的仪表程序窗口的显示范围,根据显示范围得到位图句柄;执行截图函数获取当前仪表程序窗口显示范围内的图像;步骤2:虚幻引擎5基于所获取的位图句柄计算位图相关数据;在虚幻引擎5中设置缓存函数,所述缓存函数实现的功能包括:获取当前设备或系统的位图文件中单个像素所占的字节数,设置调色板尺寸,设置位图的信息头的结构,为位图的内容分配内存,设置位图文件头,缓存位图文件头与文件内容;执行缓存函数将步骤1所获取的图像转换为位图格式缓存至内存中;步骤3:在虚幻引擎5中创建新图片类,用于显示图片;设置新图片类的代码中调用所述截图函数和所述缓存函数;在虚幻引擎5编辑器中创建继承自该新图片类的蓝图类,在蓝图脚本中添加图片控件;在虚幻引擎5编辑器中添加新创建的蓝图类为图片对象,设置图片的位置;在蓝图脚本中设置图片的分辨率和尺寸;步骤4:在新的图片类的对象的帧循环中添加图片加载函数与图片刷新函数;在帧循环中判断是否存在旧的图片数据,如果存在则释放旧的图片数据;然后运行图片加载函数将新的图片数据加载进图片纹理容器中;再运行图片刷新函数,将图片纹理容器中的图片数据刷新至屏幕中;步骤5:在虚幻引擎5程序中加入多线程代码,对每个显示的仪表使用一个独立线程,在每个独立线程中运行一个截图函数与缓存函数代码;当要显示仪表超过1个时,按照次序循环执行上述步骤,依次进行仪表显示。2.根据权利要求1所述的基于图像截取的仪表显示方法,其特征在于,所述的步骤2,在计算位图文件中单个像素所占的字节数时,计算当前设备或系统的当前显示分辨率下每个像素所占字节数,当所述字节数小于...

【专利技术属性】
技术研发人员:张旭莫宇诚杨阳郭树河刘学敏
申请(专利权)人:北京东方瑞丰航空技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1