- CIGI是什么?
在介绍CIGI之前,需要提到一个在视景仿真中比较流行的概念, IG(Image Generator),我把它翻译为图像生成器。 顾名思义:它的作用就是用于生成图像。 主要的用途是模拟器训练,硬件设备训练等。
- IG的特点是
1) 图像生成器可以接受外部的驱动指令,生成一帧一帧的图像,并且是基于3D图形理论构建的图像生成器。
2) 图像生成器不具有仿真逻辑、游戏逻辑,即它不包含人工智能,飞机轨道计算的功能。
3 )图像生成器具备显示图像、显示地形、模型,实体与地形的匹配、显示天气、改变视点,视场角等
4)外部的驱动指令:可以包括:Socket, HLA/RTI(其实这也是一种Socket),
- IG与OSG和Vega Prime的区别
OSG是三维渲染引擎, Vega Prime也是常用的三维渲染工具,不具备外部驱动功能,IG图像生成器可以基于 OSG, OpenGL, Vega Prime构建。
- 比较常见的IG
我知道的有 VR-Vangage IG(当然VantageIG的功能要弱很多了,汗。。。) 和 EPX。
IG的功能可以概括为:
接受外部驱动指令--->高保真的显示图像--->并将图像通过PCI、DVI 等硬件接口传出其他显示设备。
- IG的设计思想与作用 IG的设计思想是: 对比传统的交互式的三维显示系统,比如游戏魔兽争霸,它可以接受鼠标与键盘, 英雄攻击目标,需要计算目标的血量等。但是IG是用于实时和高保证的生成图像, 且有些图像需要传送到特殊的显示设备,比如佩戴头盔等才可以观察。所以为了保证高速的生成,它一般不接受鼠标和键盘的响应,同时也不处理场景和目标的逻辑,比如飞机的飞行轨道的计算等,全部来自外部输入。
底层通信可以选择通过以太网(低速)、内存反射网(光纤,高速)等高速设备传入和更新数据。
具体的网络层为socket UPD或则是Ge 公司的内存反射卡API。
- CIGI的作用与起源
CIGI 全称是:
Common Image Generator Interface , 通用的图像生成器接口
在以往的国外模拟器训练仿真系统中对于步骤1:
接受外部驱动指令--->高保真的显示图像;
因为图像渲染引擎不同,接受的外部驱动指令也不相同。
举个例子如:
send Add terrrain 给图像生成器发送指令,添加地形。
Example 1:
选择的驱动指令可能就是: send terrain name "boston.flt" lat lon ... 等
也可能是:send name "boston.flt" lat, lon terrain ;
这样对于图像生成器就比较麻烦了, 因为它需要做不同的通信接口 ,来解析不同的驱动指令, 这个时候,老美就发扬了它一贯的传统,制定了一个标准。
波音公司,对就是那个著名的飞机制造与设计公司, 制定了一个标准的接口规范,用于统一驱动指令;
统一驱动指令包括: 驱动指令的数据传输格式、 一些常见的传输内容(添加地形、添加实体,更新位置、修改大气环境、设置设点,添加传感器等)。
这样,对于各种图像生成器和驱动器,Serve和Client均保证实现CIGI的接口协议,就可以了。
以后替换图像生成器,比如把OpenGL替换为DX的,接口部分就不需要修改了,服务器端也可以保持不变。
CIGI的具体内容:
cigi的网址在:http://sourceforge.net/projects/cigi/?source=dlp
它包含了如下图所示的内容:
CIGI 3 Host Emulator 是一个图像指令驱动器, 这是波音预先提供的一个做好的图像指令驱动器, 包含了 *.def的配置文件,一些常用的图像驱动指令, 支持windows和RTx(实时操作系统模式),这是一个基于MFC的程序
CIGI Multi-PurPose Viewer是一个图像生成器,即IG ,这是一个基于OSG渲染引擎的图像生成器。实现了CIGI的SDK。
CIGI Class Library 是CIGI的接口协议实现SDK, 可以采用静态链接和动态链接,支持windows和linux;
CIGI ICD似乎是GICI的接口协议文档
MPV Content是 CIGI Multi-PurPose Viewer图像生成器,运行时的数据部分,包括地形、模型、粒子特效,hud等。
本想补充一个cigi的PPT,更好的介绍CIGI的结构体系图,但是无奈sourceforge的网址总是被墙 ,只好先整理这些了。