Vega Prime入门

VegaPrime 提供真正跨平台、可扩展的开发环境,来高效创建和配置视景仿真、城市仿真、基于仿真的训练、通用可视化应用。它既具有强大的功能来满足当今最为复杂的应用要求,又具备高度的易用性来提高效率。

Vega Prime简介

VegaPrime 基于VSG(Vega Scene Graph——MPI 公司先进的跨平台场景图形API),底层(OpenGL),同时包括Lynx Prime GUI (用户图形界面)工具,让用户既可以用图形化的工具进行快速配置,又可以用底层场景图形API 来进行应用特定功能的创建。它将先进的功能和良好的易用性结合在一起,帮助用户快速、准确地开发实时三维应用,加速成果的发布。基于工业标准的XML 数据交换格式,能与其它应用领域进行最大程度的数据交换。

针对用户特定要求,VegaPrime 还设计了多种功能增强模块,和VegaPrime 结合在一起,更进一步提升了应用开发的效率和适用性。

VegaPrime的特性

☆跨平台性:它支持Microsoft Windows、SGI IRIX、Linux、Sun MicrosystemsSolaris等操作系统,并且用户的应用程序也具有跨平台特性,用户可在任意一种平台上开发应用程序,而且无须修改就能在另一个平台上运行。
☆与C++STL(Standard Template Library)标准模板库 兼容。
☆支持双精度浮点数。
☆可定制用户界面和可扩展模块:VegaPrime可扩展的插件式体系结构采用了最复杂的技术,提供了最简单的使用方法,它可进行最大可能的定制,用户可根据自己的需求来调整三维应用程序,能快速设计并实现视景仿真应用程序,用最低的硬件配置获得高性能的运行效果。此外,用户还可开发自己的模块,并生成定制的类。
☆同时支持OpenGLDirect3D
☆高效的生产率:VegaPrime是对普通视景仿真应用的高级抽象,它提供了许多高级功能,能满足现今绝大部分视景仿真应用的需要,同时还具有简单易用的特性,因此具有高效的生产率,它可让用户把精力集中于解决与特定应用领域相关的问题。
☆支持MetaFlight文件格式:MetaFlight是MultiGen-Paradigm公司基于XML的数据描述规范,它使运行数据库能与简单或复杂的场景数据库相关连。MetaFlight极大地扩展了OpenFlight的应用范围。

Vega Prime入门_第1张图片
VP三维视景仿真
Vega Prime入门_第2张图片
VP三维视景仿真

VegaPrime的基本模块

VegaPrime包括Lynx Prime图形用户界面配置工具和Vega Prime的基础VSG(Vega SceneGraph)高级跨平台场景渲染API。此外,VegaPrime还提供了多个针对不同应用领域的可选模块,使其能满足特殊的行业仿真的需要,还提供了用户开发自己模块的功能。

(1)LynXPrime的图形环境

LynXPrime是一种可扩展的跨平台的单一的GUI工具,为用户提供了一个简单的直接明了的开发界面,如图1所示,可根据仿真需要快速开发出合乎要求的视景仿真应用程序。LynxPrime基本上继承了Lynx的功能,同时又增加了一些新功能。它具有向导功能,能对VegaPrime的应用程序进行快速创建、修改和配置,从而大大提高了生产效率;它基于工业标准的XML数据交换格式,能与其他应用领域进行最大程度的数据交换;它可以把ACF(Application Configuration File) 自动转换为C++ 代码。


Vega Prime入门_第3张图片
LynXPrime图形开发环境

图1 开发界面

(2)VSG的应用程序接口

VSG[1](Vega Scene Graph)是高级的跨平台的场景渲染API,是Vega Prime的基础,VegaPrime包括了VSG提供的所有功能,并在易用性和生产效率上作了相应的改进。在为视景仿真和可视化应用提供的各种低成本商业开发软件中,VSG具有最强大的功能,它为仿真、训练和可视化等高级三维应用开发人员提供了最佳的可扩展的基础。VSG具有最大限度的高效性、优化性和可定制性,无论用户有何需求,都能在VSG基础之上快速高效地开发出满足需要的视景仿真应用程序,VSG是开发三维应用程序的最佳基础。
VSG具有以下特性:
☆帧频率控制;
☆内存分配;
☆内存泄漏跟踪;
☆基于帧的纹理调用;
☆异步光线点处理;
☆(优化的)分布式渲染;
☆跨平台可扩展的开发环境,支持Windows、Irix、Linux和Solaris;
☆与C++ STL相兼容的体系结构;
☆强大的可扩展性,允许最大程度的定制,使得用户可调整VSG来满足应用需求,而不是根据产品的限制来调整应用需求;
☆支持多处理器多线程的定制与配置;
☆应用程序也具有跨平台性,用户在任意一种平台上开发的应用程序无须修改就能在另一个平台上运行;
☆支持OpenGL和Direct3D的优化的渲染功能,应用程序能基于OpenGL或Direct3D运行,其间无须改动程序代码;
☆支持双精度浮点数,使几何物体和地形在场景中精确地放置与表示;
☆支持虚拟纹理、软件实现图像的动态查阅,使高级功能与平台无关。

VegaPrime的可选模块

VegaPrime为了满足特定应用开发的需求,除了上述的基本模块之外,还提供了功能丰富的可选模块。VegaPrime的可选模块基本上覆盖了Vega的可选模块,包括:
☆Vega Prime FX:爆炸,烟雾,弹道轨迹,转轮,等等;
☆Vega Prime:分布式渲染;
☆Vega Prime LADBM:非常大的数据库支持;
☆DIS/HLA:分布交互仿真;
☆Blueberry :3D开发环境;
☆DI-GUY:三维人体;
☆GL-Studio:仪表;
☆Vega Prime IR Scene:传感器图像仿真;
☆Vega Prime IR Sensor:传感器图像实际效果仿真;
☆Vega Prime RadarWorks:基于物理机制的雷达图像仿真;
☆Vega Prime Vortex:刚体动力学模拟;
☆Vega Prime marine:三维动态海洋。

关于VP与VSG

理解VP,不能只从VP本身来理解,如果没有理解VSG,也就不可能真正理解VP;当然OpenGL也不能一窍不通。
VSG是一种Scene Graph,与VSG相同重量级的Scene Graph比较常见的有OpenPerformer,Open GVS,Open Scene Graph等等。
 MP公司把战略方向从Performer调整到VSG上,自然是非常明智的。第一,Performer毕竟不是自家的东西,而MP现在有实力慢慢开始另起炉灶了,VSG是自己的,自己的东西,好处自然不用多说了;第二,Performer在架构上慢慢开始落伍了,只能支持OpenGL(OpenGL现在商业前景不明朗),C接口的API也略显老套(并不是说C不如C++,只是老套一些),VSG我研究了一下,现在应该还不能支持DirectX,但是显然是留了余地的,我就看到了一两个常数名称中有DirectX。此外,VSG是用C++开发的,溶入了许多现代C++的即时髦又实用的特性和技术:泛型,设计模式等等,这些特性和技术,我认为是非常powerful的。
  但是,VSG也不是完美的,它还相当不成熟,有些地方不如开放源码的Open SceneGraph,比如文本显示,格式支持等,自然,与开放源码的东西相比,它不开放源码,自然也可以看作是一个缺点。VSG对中文的支持就是没有,声音的支持等于没有。还有一点,可能是我没有深究,VSG自己搞了一套泛型接口,像容器类的VUVector等等,OpenScene Graph就没有,VSG这样搞似有重床叠架之嫌
  然后谈谈Lynx Prime,其实Lynx Prime就是一个构建在VSGExtension上的界面而已,界面基于QT,单纯谈Lynx Prime,没有任何意义,关键还是VSGExtension那些类,VPApp啊,VPkernal啊,这些类,可以说层次结构,概念相当清楚,以至于完全可以把LynxPrime看作是VSG Extension的图形化调试工具。下图就是LP的操作界面:

Vega Prime入门_第4张图片
Vega Prime入门

  现在的VegaPrime,功能上没有任何值得炫耀的地方,跨平台性也不是很好,如果单论功能,效率,跨平台性,估计比不过其他软件,但是VegaPrime背后有实力强大的MP公司,多年的积累使得高级功能的增添相当简单,很多都只需从Vega中移植过来就行了,所以我对VP的概括是较为先进的架构,光明的前途,但是尚未成熟,发展中的软件,评价大抵如此,结局就难说了,取决与商业行为的一般多余技术。论技术,铱星还不先进?到最后摩托罗拉还不是吃了大亏?
  vp一个很大的优势在于plug in架构;几乎比较好的实时三维方面的软件,都很容易地作为一个模块和vp集成在一起,并且几乎都有这样的模块,这样开发一个比较好的应用不会费很大力气。例如动态地形,物理引擎等等,都是其他软件所没有的。
VP对于GLstudio的支持也是一个很强大的优势,它可直接调用GLstudio生成的DLL来实现对其开发的虚拟仪表的内嵌。效果如下:

Vega Prime入门_第5张图片
Vega Prime入门

  directx在vp2.0里会加强,cg调用也会加强.hdsl一样,不过vp2.0优先考虑的是opengl1.4,opengl2.0支持估计还早,因为要考虑到大家显卡的支持性能。 不管是VP的基础VegaScene Graph,开放源码项目Open Scene Graph,还是SGI Open Performer,它们都是SceneGraph-场景图。
  所谓的“SceneGraph”库,允许用户以图数据结构表述场景中的物体,这样就能将共享某些属性的相关物体组织为group,如此就能在一个地方指定整个group的共同属性。 Scene Graph能够自动管理如实绘出场景的所需的东西(如LOD),并且忽略那些减缓场景中硬件图形显示的不必要细节。
  一个Scene Graph应该能屏蔽底层的绘图函数库(OpenGL,DirectX)。
  VSG自己搞了一套泛型接口,像容器类的VUVector等等,Open SceneGraph就没有,VSG这样搞似有重床叠架之嫌。
  后来想想,应该是这样的:VC6不需要STLPort就能支持VP,要做到这样,VSG的重床叠架就可以理解了。VSG内部开发用了STLPort,直接把那些泛型容器拿出来,在VC6里面编译都通不过,就像现在VC.net编译不了VP一样,所以重床叠架是没办法时候的办法。应该是VP开发计划比较早,软件开发规划又出了一点问题,以至于现在VP还不支持.net,还重床叠架地提供了那些泛型容器。
  谈到这里,其实我是和Open Scene Graph作比较的,OSG已经推荐用VC7.1开发了,自然没有那些重床叠架的泛型容器了;针对VC6,OSG也支持,只要VC6装了STLPort就可以了。当然VP2.0之后也支持VC7.1以及VC8.0开发了。
VP2.2的海洋效果:

Vega Prime入门_第6张图片
Vega Prime入门
Vega Prime入门_第7张图片
Vega Prime入门
Vega Prime入门_第8张图片
Vega Prime入门

SceneGraph就是一颗树-简单常用又好用的数据结构。它开始于最顶端的node,这个node可以是二维或是三维的,包含了整个虚拟世界。整个世界被表述为一node的层次结构,可以是控件对象的group,对象位置的设置, 对象的动画, 或者是对象之间逻辑关系的定义比如管理交通灯不同状态的逻辑关系的义.Graph的叶子代表了物理上的对象本身 ,可绘出的geometry 和它们的材质属性。
  Scene Graph并不是完整的游戏或模拟引擎,当然它可以成为这些引擎的主要部分。SceneGraphit的主要目标是表述三维世界,相关的高效渲染.物理模型,碰撞检验等,而声音部分则留给用户用其他集成的开发库去处理了。事实上Scene Graph并不一定集成所有特性,反而是一件好事:Scene Graph提供了与客户的应用程序和工具的互操作,这样,SceneGraph就能在游戏, 虚拟仿真,虚拟现实,科学商业可视化,模拟游戏训练中大展宏图。
  Scene Graph的核心功能,先想到如下几点:
一个Scene Graph的核心功能应该包括以下方面:
1.内存管理,对象的参考计数
2.基础的数据结构封装,如二维,三维,四维向量的封装,用于裁剪的边界盒,边界球的封装等等。
3.封装低层图形API(OpenGL或是DirectX)
4.场景图结构中树层次的实现(Node,Group,Leaf),以及在这个层次上的操作(遍历,更新,渲染等等)。其中,第四点是核心中的核心。
总体来说,VegaPrime 在虚拟仿真技术领域已经相当强大,它超强的VSG库已经基本满足我们日常仿真所需!希望本文对你有所启发!


  1. 它是一个跨平台实时工具。它构建在VSG(Vega Scene Graph)框架之上,是VSG的扩展API,包括了一个图形用户界面Lynx和一系列可调用的、用c++实现的库文件、头文件。Vega Prime在不同层次上进行了抽象,并根据功能不同开发了不同的模块,每个应用程序由多个模块组合而成。它们都由VSG提供底层的支持。VSG分为三个部分:(1)vsgu(Utlity library),提供内存分配等功能;(2)vsgr(Rendenring library),底层的图形库抽象,比如OpenGl或D3D;(3)vsgs(Scene graph library)。在内核中,Vega Prime使用vsgs,vsgs使用vsgr,它们都使用vsgu。现在的Vega Prime,功能上没有任何指得炫耀的地方,跨平台性也没有很好,如果但论功能,效率,跨平台性,估计比不过其他软件,但是Vega Prime背后有实力强大的MP公司,多年的积累使得高级功能的增添相当简单,很多都只需从Vega中移植过来就行了,所以VP是较为先进的架构,光明的前途,但是尚未成熟,发展中的软件。 ↩

你可能感兴趣的:(Vega Prime入门)