GLStudio在仪表仿真开发中的关键技术研究
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关键词:GL Studio;复用性组件;开发流程;纹理;逻辑结构 中图分类号:TP302.1 文献标识码:A 文章编号:1003-7241(2008)10-0076-04
Instrument Simulation Development Based on GL Studio
XU Ying-hui, YANG Feng
图 4 GL studio 开发流程
3.1 纹理生成技巧
在设计开发初期, 通常使用照片级的图片资料进行 处理, 生成虚拟仪表任务需要的纹理图片。图形艺术家 可以使用各种图形处理软件(如:PhotoShop 等),按照 GL Studio 的纹理图片的要求进行处理。
基于 GL Studio 开发虚拟仪表面板,纹理的生成具 有如下特点:
1 引言
目前, 虚拟现实技术广泛应用于机械、电力、航空 以及军事训练等领域[3]。以针对军事训练的视景仿真系 统开发为例, 越来越多的高技术武器参与训练, 就要求 更真实准确的表现飞机、坦克、潜艇等重要装备工具的 性能以及工作状态, 因此虚拟仪表仿真系统的真实程度 直接决定了整个系统的训练效果[ 7 ] 。然而, 针对这些装 备驾驶座舱的系统复杂, 操作面板大, 需显示的仪器仪 表多, 各种仪表间逻辑关系复杂等问题, 无论是使用 O p e n G L 语言生成图形, 还是使用诸如 3 D M a x 、 SolidWorks 建模工具,或是用脚本语言描述逻辑,除了 工作量大, 效率低, 难以维护等问题, 系统对计算机硬件 的要求较高、复用性差。GL Studio 是一种专业的仪表 仿真平台[ 6 ] 。它作为一个独立平台的快速原型工具, 用 来创建实时的、三维的、照片级的互动图形界面。它能 与 H L A / D I S 仿真应用相连, 生成的 C + + 和 O p e n G L 源 代码可以单独运行, 也可以嵌入到其它应用程序中。它
仪器仪表与检测技术
Instrumentation and Measurement
《自动化技术与应用》2008 年第 27 卷第 10 期
把设计器设计的模板对象以 C++ 代码形式生成,其代码 运用了 GL Studio 运行时间类结构,此结构提供图形对 象、显示列表和用户界面对象的框架。由于这些便捷功 能使得 GL Studio 生成的代码可以独立于平台运行,并 能被集成到仿真应用程序中。
adiDevice->Testing(value); altimeterDevice->Testing(value); mfdDevice->Resource("Testing") << value; …… 在代码中, 箭头前面是各个仪表组件的名称。针对 gls 组件,直接调用组件中的属性函数,予以赋值。任何 属性参数都用此种方式进行操作。针对 dll 组件,需要 使用 G L S t u d i o 提供的函数 R e s o u r c e ( ) 或是函数 SetResource(),使用方式如上所示。另外这两个函数的 使用上,还需小小的注意:SetResource()只可用于传递的 属性参数值为字符型, 例如: …… mfdDevice->SetResource("Mode", _newMFDMode); ——① mfdDevice->Resource("Altitude") << _newAltitude; ——② …… 在代码行①中,参数 _newMFDMode 的类型为 std:: string,可以使用SetResource(),亦可以使用函数Resource ();而在代码行②及上述 TEST 控制代码中,属性参数的 类型分别为float及bool,都只能使用函数Resource()实 现面板与组件间的参数传递。 在基于 GL Studio 平台进行仪表仿真系统开发时,RSO 特点是不可忽视的, 这一特点的合理有效使用, 会使整个 开发更高效, 结构更清晰, 后期的调试会更方便。这也使 GL Studio 在仪表仿真开发领域更优于其他的制胜法宝。
2 GL Studio 的特点
GL Studio 是 DISTI 公司为仪表仿真软件开发提供 的一套系统解决方案[5]。用户利用其图形交互界面以所 见即所得的方式来完成仪表面板的制作, 通过代码编辑 器来完成仪表内部逻辑仿真。其代码生成器能够将用 户的编辑结果自动生成 C + + 和 O p e n G L 源代码, 避免了 大量繁琐的底层 OpenGL 开发。
78 | Techniques of Automation & Applications
图 5 逻辑结构示意图
示意图中每个带数字的圆圈代表一种控制, 控制打开 即逻辑变量为“真”, 反之为“假”。从图中可以总结出三 种基本的控制逻辑表示: 一是直接控制, 用直线连接表示。 二是多种状态共同控制, 如由④和⑦两个逻辑变量同时为 真时(即两个开关同时打开),可置⑧的逻辑变量为真(即 触发相应的行为时间)。 三是选择性控制,如在①逻辑实 现后,可选择性的利用②或③来为后续逻辑创造实现条件。
某实验仪表面板中包含三个仪表盘, 从左至右分别 ADI、Altimeter、MFD,因此系统中需包含三个子组件。系 统开发中,ADI 和 Altimeter 为 gls 文件,MFD 为 dll 文件。 在对三个仪表盘进行实验开关(TEST)控制时,实现如下:
…… _testing = value;
收稿日期:2008-03-16 76 | Techniques of Automation & Applications
运行于 WindowsNT、TRIX 和 Linux 操作系统上。使用 GL Studio 进行虚拟仪表仿真系统的开发,能够大大降 低建模难度, 减小工作量, 提高工作效率, 降低对计算机 硬件要求。
3.2 逻辑结构
在图片处理人员与软件设计人员的协同工作后, 基 于 GL Studio 虚拟仪表的各部分实体已经抽象化为各实 体节点,以树状结构存放于 GL Studio 的结构显示窗口。 这只是节点数据在系统内部的存储结构。软件开发人员 在进行虚拟仪表的行为设计前, 重要任务是进行仪表真 实逻辑来设计实。以某驾驶舱仪表板开发为例, 真实的 逻辑就具体为各开关对各个仪表盘的控制逻辑。仪表盘 是设备属性显示的终端, 开关则是控制各仪表盘的工作 状态。图 2 所示,为仪表板的控制关系逻辑结构示意图。
基于纹理的创建特点, 不仅需要图形艺术家对外观 表现的把握, 亦需要及时与软件设计人员进行沟通。在 各仪表图形的设计, 各仪表实体、控制实体、显示实体 等的命名,组建的创建这些关键步骤上,设计不仅基于真 实形象的外观要求, 还需要为后期的仪表逻辑的代码实 现做好准备, 以期望最佳外观表现和更高效的后期开发。
(School of Mechanical Electronic & Information Engineering, China University of Mining & Technology, Beijing 100083 China) Abstract: Recently, Virtual Simulation has been used for Military Training widely. And instrument simulation is the key technology
of all kinds of weapon’s simulation. In Order to implement the instrument panel more effectively, the Reused Software Object of GL Studio is introduced in the paper. An application example is presented. The logical structure and development flow are also given. Key Words: GL Studio; RSO; development flow; texture; logical structure
《自 动 化 技 术 与 应 用 》2 0 0 8 年 第 2 7 卷 第 1 0 期
仪器仪表与检测技术
Instrumentation and Measurement
GL Studio 在仪表仿真开发中的关键技术研究
许颖慧,杨 峰 (中国矿业大学(北京)机电与信息工程学院,北京 100083)
摘 要:虚拟仿真技术广泛运用于军事训练,仪表仿真成为各种武器装备仿真模拟的关键难题。为了实现对仪表面板高效快捷的仿真, 着重介绍 GL Studio 的组件复用特点,详细阐述复用性组建的具体应用。结合 GL Studio 开发环境的介绍,具体分析仪表仿 真系统的设计规律,和开发流程。基于本文的研究,将使仪表仿真系统的开发更为高效,效果更为真实美观。
图 2 某实验仪表面板
3 仪表仿真系统的设计开发
Techniques of Automation & Applications | 77
《自 动 化 技 术 与 应 用 》2 0 0 8 年 第 2 7 卷 第 1 0 期
仪器仪表与检测技术
Instrumentation and Measurement
2.1 组件复用性
基于 GL Studio 进行仪表仿真,需要深入了解组件复 用性特点, 并将其灵活运用于系统开发中。复用性组件, 即 RSO(Reused So源自文库tware Object) 。组件不同于普通的节 点对象, 它将图形实体表现以及其行为逻辑表现融为一体 [2]。由于需要的不同,所包含的内容也不同。小至一个节 点组件, 大到一个完整项目, 也会表现为单一仪表、面板 等等。对于复用性组件在生成和使用时存放的形式也不 同:当需要代码公开化、可更改时,存放为.gls 格式;嵌入 其他应用程序时,生成为.dll或.so;当作为Active插件使用 时,将其封装为.cab 文件;当然当组建独立运行存在时,以 生成.exe 形式。另外还存在有针对 Java 的一些表现形式。
GL Studio 工具包分为三部分,2D/3D 图形编辑器, 完整 C + + 代码生成器, 相关插件。其他包括安全临界 C++ 代码生成器,Java 代码生成器,GLsMap 工具包等等 附件。对于开发人员来说,GL Studio 提供了最简单直 接的开发环境——设计器和生成器。设计器根据实际 需要创建仪表和控制面板类的模板对象。代码生成器
图 1 RSO 生命周期[2] 复用性的本质在于重复有效地使用, 使系统开发更 高效。下图描述了 RSO 在系统开发全过程的生命周期。 2.2 RSO在仿真系统中的应用
在仪表仿真系统的开发过程中,RSO 的生成及再利用 是关键的应用环节。RSO 的生成状态上述列举了很多种格 式,但通常使用的主要为gls和dll两种形式。gls为GL Studio 的项目基本文件。DLL 为项目生成的动态库。两种不同的 格式决定了,前者是可修改的,后者只作为封装使用。二者 在具体的系统开发中, 存在着明显差异。如上图 2 所示。
在开发任何仪表仿真系统中, 多种仪表盘的外形表 现以及之间复杂逻辑关系的实现, 是重点也是难点。如 下图某驾驶舱仪表板仿真系统。
从直观的视觉上, 数量繁多的仪表盘和控制开关, 也许会使开发者无从下手,因此合理的仪表仿真系统设 计开发流程是关键。
图 3 某驾驶舱仪表面板仿真系统 从 GL Studio 的开发流程图中,可以直观简单的了 解到使用此软件设计虚拟仪表需要两种不同类型的设 计者——图形艺术家和软件开发者。
1.纹理格式为.png; 2 .纹理的像素大小以 2 的 n 次幂为最优; 3 .同一面板(即整个仪表面板)的各种不同部件 纹理最好综合放置于一张纹理图片上, 如此可以避免各 种纹理图片的比例不一,在使用时造成较为繁琐的调整; 4. 仪表显示窗体的大小, 面板节点大小, 与面板纹 理大小相一致。可以避免开发与运行显示效果的差异, 节约开发时间。
Instrument Simulation Development Based on GL Studio
XU Ying-hui, YANG Feng
图 4 GL studio 开发流程
3.1 纹理生成技巧
在设计开发初期, 通常使用照片级的图片资料进行 处理, 生成虚拟仪表任务需要的纹理图片。图形艺术家 可以使用各种图形处理软件(如:PhotoShop 等),按照 GL Studio 的纹理图片的要求进行处理。
基于 GL Studio 开发虚拟仪表面板,纹理的生成具 有如下特点:
1 引言
目前, 虚拟现实技术广泛应用于机械、电力、航空 以及军事训练等领域[3]。以针对军事训练的视景仿真系 统开发为例, 越来越多的高技术武器参与训练, 就要求 更真实准确的表现飞机、坦克、潜艇等重要装备工具的 性能以及工作状态, 因此虚拟仪表仿真系统的真实程度 直接决定了整个系统的训练效果[ 7 ] 。然而, 针对这些装 备驾驶座舱的系统复杂, 操作面板大, 需显示的仪器仪 表多, 各种仪表间逻辑关系复杂等问题, 无论是使用 O p e n G L 语言生成图形, 还是使用诸如 3 D M a x 、 SolidWorks 建模工具,或是用脚本语言描述逻辑,除了 工作量大, 效率低, 难以维护等问题, 系统对计算机硬件 的要求较高、复用性差。GL Studio 是一种专业的仪表 仿真平台[ 6 ] 。它作为一个独立平台的快速原型工具, 用 来创建实时的、三维的、照片级的互动图形界面。它能 与 H L A / D I S 仿真应用相连, 生成的 C + + 和 O p e n G L 源 代码可以单独运行, 也可以嵌入到其它应用程序中。它
仪器仪表与检测技术
Instrumentation and Measurement
《自动化技术与应用》2008 年第 27 卷第 10 期
把设计器设计的模板对象以 C++ 代码形式生成,其代码 运用了 GL Studio 运行时间类结构,此结构提供图形对 象、显示列表和用户界面对象的框架。由于这些便捷功 能使得 GL Studio 生成的代码可以独立于平台运行,并 能被集成到仿真应用程序中。
adiDevice->Testing(value); altimeterDevice->Testing(value); mfdDevice->Resource("Testing") << value; …… 在代码中, 箭头前面是各个仪表组件的名称。针对 gls 组件,直接调用组件中的属性函数,予以赋值。任何 属性参数都用此种方式进行操作。针对 dll 组件,需要 使用 G L S t u d i o 提供的函数 R e s o u r c e ( ) 或是函数 SetResource(),使用方式如上所示。另外这两个函数的 使用上,还需小小的注意:SetResource()只可用于传递的 属性参数值为字符型, 例如: …… mfdDevice->SetResource("Mode", _newMFDMode); ——① mfdDevice->Resource("Altitude") << _newAltitude; ——② …… 在代码行①中,参数 _newMFDMode 的类型为 std:: string,可以使用SetResource(),亦可以使用函数Resource ();而在代码行②及上述 TEST 控制代码中,属性参数的 类型分别为float及bool,都只能使用函数Resource()实 现面板与组件间的参数传递。 在基于 GL Studio 平台进行仪表仿真系统开发时,RSO 特点是不可忽视的, 这一特点的合理有效使用, 会使整个 开发更高效, 结构更清晰, 后期的调试会更方便。这也使 GL Studio 在仪表仿真开发领域更优于其他的制胜法宝。
2 GL Studio 的特点
GL Studio 是 DISTI 公司为仪表仿真软件开发提供 的一套系统解决方案[5]。用户利用其图形交互界面以所 见即所得的方式来完成仪表面板的制作, 通过代码编辑 器来完成仪表内部逻辑仿真。其代码生成器能够将用 户的编辑结果自动生成 C + + 和 O p e n G L 源代码, 避免了 大量繁琐的底层 OpenGL 开发。
78 | Techniques of Automation & Applications
图 5 逻辑结构示意图
示意图中每个带数字的圆圈代表一种控制, 控制打开 即逻辑变量为“真”, 反之为“假”。从图中可以总结出三 种基本的控制逻辑表示: 一是直接控制, 用直线连接表示。 二是多种状态共同控制, 如由④和⑦两个逻辑变量同时为 真时(即两个开关同时打开),可置⑧的逻辑变量为真(即 触发相应的行为时间)。 三是选择性控制,如在①逻辑实 现后,可选择性的利用②或③来为后续逻辑创造实现条件。
某实验仪表面板中包含三个仪表盘, 从左至右分别 ADI、Altimeter、MFD,因此系统中需包含三个子组件。系 统开发中,ADI 和 Altimeter 为 gls 文件,MFD 为 dll 文件。 在对三个仪表盘进行实验开关(TEST)控制时,实现如下:
…… _testing = value;
收稿日期:2008-03-16 76 | Techniques of Automation & Applications
运行于 WindowsNT、TRIX 和 Linux 操作系统上。使用 GL Studio 进行虚拟仪表仿真系统的开发,能够大大降 低建模难度, 减小工作量, 提高工作效率, 降低对计算机 硬件要求。
3.2 逻辑结构
在图片处理人员与软件设计人员的协同工作后, 基 于 GL Studio 虚拟仪表的各部分实体已经抽象化为各实 体节点,以树状结构存放于 GL Studio 的结构显示窗口。 这只是节点数据在系统内部的存储结构。软件开发人员 在进行虚拟仪表的行为设计前, 重要任务是进行仪表真 实逻辑来设计实。以某驾驶舱仪表板开发为例, 真实的 逻辑就具体为各开关对各个仪表盘的控制逻辑。仪表盘 是设备属性显示的终端, 开关则是控制各仪表盘的工作 状态。图 2 所示,为仪表板的控制关系逻辑结构示意图。
基于纹理的创建特点, 不仅需要图形艺术家对外观 表现的把握, 亦需要及时与软件设计人员进行沟通。在 各仪表图形的设计, 各仪表实体、控制实体、显示实体 等的命名,组建的创建这些关键步骤上,设计不仅基于真 实形象的外观要求, 还需要为后期的仪表逻辑的代码实 现做好准备, 以期望最佳外观表现和更高效的后期开发。
(School of Mechanical Electronic & Information Engineering, China University of Mining & Technology, Beijing 100083 China) Abstract: Recently, Virtual Simulation has been used for Military Training widely. And instrument simulation is the key technology
of all kinds of weapon’s simulation. In Order to implement the instrument panel more effectively, the Reused Software Object of GL Studio is introduced in the paper. An application example is presented. The logical structure and development flow are also given. Key Words: GL Studio; RSO; development flow; texture; logical structure
《自 动 化 技 术 与 应 用 》2 0 0 8 年 第 2 7 卷 第 1 0 期
仪器仪表与检测技术
Instrumentation and Measurement
GL Studio 在仪表仿真开发中的关键技术研究
许颖慧,杨 峰 (中国矿业大学(北京)机电与信息工程学院,北京 100083)
摘 要:虚拟仿真技术广泛运用于军事训练,仪表仿真成为各种武器装备仿真模拟的关键难题。为了实现对仪表面板高效快捷的仿真, 着重介绍 GL Studio 的组件复用特点,详细阐述复用性组建的具体应用。结合 GL Studio 开发环境的介绍,具体分析仪表仿 真系统的设计规律,和开发流程。基于本文的研究,将使仪表仿真系统的开发更为高效,效果更为真实美观。
图 2 某实验仪表面板
3 仪表仿真系统的设计开发
Techniques of Automation & Applications | 77
《自 动 化 技 术 与 应 用 》2 0 0 8 年 第 2 7 卷 第 1 0 期
仪器仪表与检测技术
Instrumentation and Measurement
2.1 组件复用性
基于 GL Studio 进行仪表仿真,需要深入了解组件复 用性特点, 并将其灵活运用于系统开发中。复用性组件, 即 RSO(Reused So源自文库tware Object) 。组件不同于普通的节 点对象, 它将图形实体表现以及其行为逻辑表现融为一体 [2]。由于需要的不同,所包含的内容也不同。小至一个节 点组件, 大到一个完整项目, 也会表现为单一仪表、面板 等等。对于复用性组件在生成和使用时存放的形式也不 同:当需要代码公开化、可更改时,存放为.gls 格式;嵌入 其他应用程序时,生成为.dll或.so;当作为Active插件使用 时,将其封装为.cab 文件;当然当组建独立运行存在时,以 生成.exe 形式。另外还存在有针对 Java 的一些表现形式。
GL Studio 工具包分为三部分,2D/3D 图形编辑器, 完整 C + + 代码生成器, 相关插件。其他包括安全临界 C++ 代码生成器,Java 代码生成器,GLsMap 工具包等等 附件。对于开发人员来说,GL Studio 提供了最简单直 接的开发环境——设计器和生成器。设计器根据实际 需要创建仪表和控制面板类的模板对象。代码生成器
图 1 RSO 生命周期[2] 复用性的本质在于重复有效地使用, 使系统开发更 高效。下图描述了 RSO 在系统开发全过程的生命周期。 2.2 RSO在仿真系统中的应用
在仪表仿真系统的开发过程中,RSO 的生成及再利用 是关键的应用环节。RSO 的生成状态上述列举了很多种格 式,但通常使用的主要为gls和dll两种形式。gls为GL Studio 的项目基本文件。DLL 为项目生成的动态库。两种不同的 格式决定了,前者是可修改的,后者只作为封装使用。二者 在具体的系统开发中, 存在着明显差异。如上图 2 所示。
在开发任何仪表仿真系统中, 多种仪表盘的外形表 现以及之间复杂逻辑关系的实现, 是重点也是难点。如 下图某驾驶舱仪表板仿真系统。
从直观的视觉上, 数量繁多的仪表盘和控制开关, 也许会使开发者无从下手,因此合理的仪表仿真系统设 计开发流程是关键。
图 3 某驾驶舱仪表面板仿真系统 从 GL Studio 的开发流程图中,可以直观简单的了 解到使用此软件设计虚拟仪表需要两种不同类型的设 计者——图形艺术家和软件开发者。
1.纹理格式为.png; 2 .纹理的像素大小以 2 的 n 次幂为最优; 3 .同一面板(即整个仪表面板)的各种不同部件 纹理最好综合放置于一张纹理图片上, 如此可以避免各 种纹理图片的比例不一,在使用时造成较为繁琐的调整; 4. 仪表显示窗体的大小, 面板节点大小, 与面板纹 理大小相一致。可以避免开发与运行显示效果的差异, 节约开发时间。