数字展示在线欢迎您! 服务热线 :0755-23761247登录免费注册

OUR NEWS | 新闻资讯

当前位置:首页 > 新闻动态 > 虚拟现实引擎与技术结构分析

虚拟现实引擎与技术结构分析

发布时间:2015-1-1 12:33:10

一提到虚拟现实,大家肯定会想到“灵境”、“Virtual Reality”、“幻真”....什么的,这些概念现传的到处都是,很多行业内的公司企业网站上也都是用这些概念来装点页面!但是大家有没有认真考虑过到底什么真正的虚拟现实及其存在的意义呢?

总是去学习别人的东西是一种缓慢的进步,快速的进步是认认真真的做好总结,得到自己想要的东西。

虚拟现实”,先从字面上理解这个概念。在这个词汇中,虚拟是定语,现实是关键字。说白了就是“虚拟了的现实”,可见重点是“现实”。也就是说我们要将现实世界中的真实环境通过某种手段虚拟演示模拟出来,达到以假乱真的目的。这里的现实对应的就是“真实世界”。真实世界这个范围很大,比如物理学、医学、地理信息、天体运行等,所涉及的专业知识就是我们整个世界的知识体系。在这个基础上研究虚拟现实才会有更广阔的发展方向和实际意义。

从广义角度来讲,虚拟现实本身也不仅仅局限于计算机技术。举个最简单的例子,比如魔术,我们都知道看到的东西其实是假的,但是我们却真真切切的感受到那是真的,这是不是一种虚拟现实、虚拟演示呢?

计算机的出现我们本身就可以理解为是以一种虚拟演示现实技术的发展过程。首先,计算机的出现就是为了模拟人脑的工作流程,替代人工大量而繁琐的计算工作。操作系统本身也是按人类的语言和思维方式设定的输入输出过程:字符界面的dos、unix、os/2等都是模拟人类的语言方式来操作的。到了桌面操作系统就更明显,windows中的“桌面”、“我的电脑”、“网上邻居”等等都是在通过真实世界的思维方式来管理计算机资源。计算机程序设计发展也是这样,汇编语言是机器语言,非常不适应人类的思维习惯,所以到现在也只有CPU底层研发人员或专业人士才能使用。后来有了面向过程的pascal、c等面向过程的编程语言,这时候就非常符合人类的思维方式了,所以应用软件才开始大发展。现在程序设计的基本思想是“面向对象”,把计算机里面的每个资源、设备或者是数据都归纳为以一个一个的类,我们使用的时候就是创建某个类的一个实例,这就是对象。通过设置对象的属性、调用对象的方法等来实现操作数据的管理。整个计算机软件的发展可以说就是一个越来越完善的虚拟演示应用。这也非常符合人类在对现实世界事物管理、分析的思维方式。

在计算机系统的前提下探讨虚拟演示现实技术,我们就离不开计算机理论。首先,我们都知道,计算机的核心部分是操作系统。计算机操作系统是人机交互、资源管理的一个中心控制平台。大家都知道本身计算机里面都是二进制的0、1代码。这些数据通过存储这些0、1代码不同序列来实现我们所说的数据存储。那么操作系统通过什么来管理这些数据呢?那就是文件系统。只有定义了文件系统之后、操作系统才能更好的、有效的管理这些数据。计算机系统还包括各式各样的外围设备—输入输出设备,这些设备也同样是被定义成计算机系统中的资源,通过操作系统来管理。

这个计算机系统的模型我们可以延伸到虚拟现实领域。可以类推,虚拟现实系统中的核心部分应该是虚拟现实引擎,这个引擎控制管理整个系统中的数据、外围设备等资源。与计算机系统一样,根据不同的应用领域所选择的计算机操作系统、外围设备等也不同。比如专业数据库系统一般用unix和oracle、专业的图形系统诸如苹果等。同样的,虚拟现实系统中也针对不同的应用应该选择不同的引擎(或者说是虚拟现实的操作系统VROS[Virtual Reality Operation System])。比如我们做路面驾驶模拟就要选择能够处理真实世界物理学数据的VROS,同时需要控制管理外围设备的输入输出。在医学方面,就必须要求能够处理数字化人体数据以及想用的医学模拟设备。在数字地球方面、就必须能处理空间信息数据等。这样我们就可以有针对性的选择适合应用的VROS(虚拟现实操作系统或者说是引擎)。

这里要说明的是,所谓数字化绝不是仅仅通过3D建模就能完成的。3D建模只是整个虚拟现实系统的一个辅助工作。比如数字化的人体是通过人体切片扫描,得到人体内血管、骨骼等人体结构详细的位置、空间数据,并根据不同的对象设置不同的属性,如对虚拟手术刀的力反馈系数等。在数字城市或者数字地球中也是这样,如何空间遥感测绘数据、并生成可供实时输出的图像。城市设施等数据如电力线路、地下管道等,如何根据相关管理部分的数据生成适合人们查看的图形图像。当然仅仅生成图像然人们看还远远不够,更主要的是可以管理,譬如修改、更新、查询等。这种情况下,如果没有专业数据得支撑,一个是会产生大量的重复劳动,二就是做出来的东西不准确,没有实际应用的价值。

为了达到更逼真的效果,目前的虚拟现实系统在视觉、触觉、听觉等方面也引进了更多的方式以及相应的外围设备。通过这些设备我们就可以更好的模拟人类在真实世界中的感官体验。我们依然按照计算机理论的构架来分析虚拟现实系统,请看下图:

      

所谓“虚拟现实”无论如何也脱离不了“现实”这个关键字,有了我们这个真实世界的数据,然后通过视景仿真来让人产生视觉效果,通过力反馈、运动平台等模拟真实世界中对人体的作用力,同时还有其他诸如嗅觉、味觉等方面的模拟。有了真实世界的真实数据,我们也可以通过软、硬件把它转化为计算机图形或者其他形式输出,这之后我们还面临一个问题,那就是这些数据的管理。

好的虚拟演示现实引擎系统我想应该具有以下特质:

1、可视化管理界面:这个可视化界面不是我们在制作虚拟现实项目时所使用的那个工作界面,而是制作完以后提供给最终用户的那个界面。这里举个例子,早前我们用的visual C++ 或者是 Delphi 6.0 等,他们本身的开发界面也是可视化的,但是这个界面是提供给开发者的,而不是给最终用户。提供给最终用户的界面是要可以通过可视化的操作来管理客户的数据,比如Delphi基于数据库系统的 OA 、CRM等管理软件,客户可以根据需求来操作数据库系统中的数据表、数据记录等,实现系统的查询、更新、删除、修改、添加等。客户感受到的是在可视化界面中的操作,而对数据库系统的操作是内置模块完成的,对于客户来说是不可见的或者说是封的。虚拟现实引擎也应该有实现这个过程的方法,比如在数字城市中通过可视化客户端添加建筑物、并同时更新数据库系统的中位置、面积、高度等数据。这一点我们在玩游戏的时候可能是非常清楚的,比如你建造了一个兵工厂,在图形环境中出现这样一个兵工厂之外,游戏程序还在地图上做好标记并实时更新了其数据记录,以供可能的存储(保持游戏)、删除(被敌人打掉)、修改(破坏、维修)等操作。

2、二次开发能力:没有二次开发能力的引擎系统的应用会有极大的局限性。所谓“二次开发”就是指引擎系统必须能够提供管理系统中所有资源的程序接口,就是常说的API。可能有人认为,可以通过可视化操作实现这些功能就ok了,比如可以用鼠标拖拽一个3D模型到我的场景中来。我要说的是这样做是一种方式,如果仅仅提供这一种方式还远远不够。首先,这俩者并不冲突,系统的API 是可视化开发的一个最大补充,且API才是开发者自由发挥的最佳武器。我们每天都在使用windows操作系统给,我们发现基本上我们通过鼠标的一下简单操作就可以实现windows下的基本的资源管理。做过windows应用开发的应该知道,其实我们每天所作的windows下的操作都可以通过调用windows API来实现,也就是说可以通过调用windows API来实现整个windows下所有的资源管理。同样的在windows 下的visual studio 也提供了各式各样的内置对象、函数、方法等,可以实现开发项目的资源管理。试想一下,如果visual studio 中我们只能拖拽几个按钮、对话框等放到窗口上而没有任何二次开发能力,这样做出来的应用程序有何意义?

3、数据兼容性:可以说,任何计算机程序都离不开数据的管理。比如一个简单的记事本要实现基本的字符串操作,办公系统中要管理人力资源、财务数据、客户信息、业务流程等数据。游戏中要实现环境中的每个角色、建筑物、地图这些对象的名称、位置、生命值等属性的管理。这里所说的兼容性就是指程序在管理本系统以外数据的能力。这一点对于虚拟现实引擎来说很重要,因为虚拟现实引擎最终处理的是真实数据,而真实数据在人类活动国中已经积累了很多并可能已经一各式各样的方式和数据格式存在了,这时候虚拟现实引擎就要至少处理比较主流的数据格式。比如,在数字城市建设过程中,一个中型城市的建筑物、街道、河流、商业区等,我们用手工去做可能做出来的永远都是城市的一角。但是在测绘领域这些数据可能已经非常完善了,我们就要通过我们引擎的数据处理模块把这些数据做某种算法处理,供本系统使用。而这些数据根据当初测绘、采集等的方式、工具不同而格式不同,这就需要我们认真对待这个数据兼容性。

当然还有很多,诸如图形运算能力、外围设备的接口控制能力、海量数据的处理能力等等。我们在选择虚拟现实引擎系统时候也要跟你据自己的应用方向,综合考虑其开放性、数据处理能力和后续开发的延续性。

免责声明:该文由四川中信远景科技有限公司发布,该文观点仅代表作者本人,数字展示在线系信息发布平台,数字展示在线仅提供信息存储空间服务。