vega prime 浅谈

                                     vega prime 浅谈

  理解VP,不能只从VP本身来理解,如果没有理解VSG,也就不可能真正理解VP;当然OpenGL也不能一窍不通。

  VSG是一种Scene Graph,与VSG相同重量级的Scene Graph比较常见的有Open Performer,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 Scene Graph,比如文本显示,格式支持等,自然,与开放源码的东西相比,它不开放源码,自然也可以看作是一个缺点。VSG对中文的支持就是没有,声音的支持等于没有。还有一点,可能是我没有深究,VSG自己搞了一套泛型接口,像容器类的VUVector等等,Open Scene Graph就没有,VSG这样搞似有重床叠架之嫌

  然后谈谈Lynx Prime,其实Lynx Prime就是一个构建在VSG Extension上的界面而已,界面基于QT,单纯谈Lynx Prime,没有任何意义,关键还是VSG Extension那些类,VPApp啊,VPkernal啊,这些类,可以说层次结构,概念相当清楚,以至于完全可以把Lynx Prime看作是VSG Extension的图形化调试工具。

  现在的Vega Prime,功能上没有任何指得炫耀的地方,跨平台性也没有很好,如果但论功能,效率,跨平台性,估计比不过其他软件,但是Vega Prime背后有实力强大的MP公司,多年的积累使得高级功能的增添相当简单,很多都只需从Vega中移植过来就行了,所以我对VP的概括是较为先进的架构,光明的前途,但是尚未成熟,发展中的软件,评价大抵如此,结局就难说了,取决与商业行为的一般多余技术。论技术,铱星还不先进?到最后摩托罗拉还不是吃了大亏?

  最后再多几句,之所以说是较为先进的架构,言外之意自然有更先进的东西,现在有一种趋势是出现了专门的图形语言,如NVidia的GL,SGI的OpenGL Shading Language等等,我也只是听说而已,但是很难判断其发展前景,所以就不多聊了。

  vp一个很大的优势在于plug in 架构;几乎比较好的实时三维方面的软件,都很容易地作为一个模块和vp集成在一起,并且几乎都有这样的模块,这样开发一个比较好的应用不会费很大力气。例如动态地形,物理引擎等等,都是其他软件所没有的。

  directx在vp2.0里会加强,cg调用也会加强.hdsl一样,不过vp2.0优先考虑的是opengl1.4,opengl2.0支持估计还早,因为要考虑到大家显卡的支持性能。
不管是VP的基础Vega Scene Graph,开放源码项目Open Scene Graph,还是SGI Open Performer,它们都是Scene Graph-场景图。

  所谓的“Scene Graph”库,允许用户以图数据结构表述场景中的物体,这样就能将共享某些属性的相关物体组织为group,如此就能在一个地方指定整个group 的共同属性。
Scene Graph能够自动管理如实绘出场景的所需的东西(如LOD),并且忽略那些减缓场景中硬件图形显示的不必要细节。

  一个Scene Graph应该能屏蔽底层的绘图函数库(OpenGL,DirectX)。

  VSG自己搞了一套泛型接口,像容器类的VUVector等等,Open Scene Graph就没有,VSG这样搞似有重床叠架之嫌

  后来想想,应该是这样的:VC6不需要STLPort就能支持VP,要做到这样,VSG的重床叠架就可以理解了。VSG内部开发用了STLPort,直接把那些泛型容器拿出来,在VC6里面编译都通不过,就像现在VC.net编译不了VP一样,所以重床叠架是没办法时候的办法。应该是VP开发计划比较早,软件开发规划又出了一点问题,以至于现在VP还不支持.net,还重床叠架地提供了那些泛型容器。

  谈到这里,其实我是和Open Scene Graph作比较的,OSG已经推荐用VC 7.1开发了,自然没有那些重床叠架的泛型容器了;针对VC6,OSG也支持,只要VC6装了STLPort就可以了。

  其实不论是VSG还是OSG,对开发人员的要求都很高,难道这些开发人员连STLPort都不会装吗?相信VP的未来版本中,会直接支持VC .net,自然那些重床叠架的泛型容器最终会消失。

  Scene Graph就是一颗树-简单常用又好用的数据结构。它开始于最顶端的node,这个node可以是二维或是三维的,包含了整个虚拟世界。整个世界被表述为一node的层次结构,可以是控件对象的group, 对象位置的设置, 对象的动画, 或者是对象之间逻辑关系的定义比如管理交通灯不同状态的逻辑关系的义. Graph的叶子代表了物理上的对象本身 ,可绘出的geometry 和它们的材质属性。 

  Scene Graph并不是完整的游戏或模拟引擎,当然它可以成为这些引擎的主要部分。Scene Graphit的主要目标是表述三维世界,相关的高效渲染. 物理模型,碰撞检验等,而声音部分则留给用户用其他集成的开发库去处理了。事实上Scene Graph 并不一定集成所有特性,反而是一件好事:Scene Graph提供了与客户的应用程序和工具的互操作,这样,Scene Graph就能在游戏, 虚拟仿真,虚拟现实,科学商业可视化,模拟游戏训练中大展宏图。

  Scene Graph的核心功能,先想到如下几点:

一个Scene Graph的核心功能应该包括以下方面:

1.内存管理,对象的参考计数
2.基础的数据结构封装,如二维,三维,四维向量的封装,用于裁剪的边界盒,边界球的封装等等。
3.封装低层图形API(OpenGL或是DirectX)
4.场景图结构中树层次的实现(Node,Group,Leaf),以及在这个层次上的操作(遍历,更新,渲染等等)。
其中,第四点是核心中的核心。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值