购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第2章
变革与颠覆

科幻作家刘慈欣的《三体》三部曲,将中国人们的科技水平和科幻想象力水准,大大提升到了世界一流的程度。当然,《三体》所畅想的科幻未来大大超越了虚拟现实技术的范畴。而同样作为新科技的代表,虚拟现实又将带领我们领略怎样的未来世界呢?那将是一幅站在全球互联网和光纤数字时代的基础上,领悟和体会未来量子时代的全面数字化的社会图景。

在第1章里,阐述了虚拟现实技术的基本概念和原理,虚拟现实技术的应用和功能,这个融合了多种高新科技的新技术,的确让人心潮澎湃。

前几年,科幻作家刘慈欣的《三体》三部曲,将中国人的科技知识水平和科幻想象力水准,大大提升到了世界一流的程度。《三体》里面所写到的那些卓绝未来技术,当然是大大超越了我们要讲的虚拟现实技术。但是,只要人类还有梦想,别说虚拟现实技术,就是宇宙战舰和光速武器,也不是不可能的。

回到本书的主题。本章的重点,是将虚拟现实技术的科学基础和理论突破,进行逐一阐述。让读者们站在全球互联网和光纤数字时代的基础上,去领悟和体会未来量子时代的全面数字化的社会图景。

首先客观而论,目前虚拟现实技术所取得的成就,还仅仅是建立于高性能计算机的现有计算能力之上。而与人类互动的虚拟现实环境,也只是做到了三维图像显示和简单的人机交互。未来全面的接入人体感知系统和感官反馈,还根本未涉及。只有真正开始做到那一步的时候,人和信息系统间的通道,才算被彻底地打通了。

但我们期待有这么一天,虚拟现实系统成为人类掌握数字信息的强大工具,人类能够坐在家里一日千里、跨越高山大海、无所不能,并借助虚拟现实技术大大提升人类的思维能力,彻底地改变社会形态。

有一个很著名的科技笑话是这样说的:“宇宙是虚拟的,随着人类的视线越来越远,上帝也需要更加强大的计算机来生成宇宙图片,用来把人类蒙混过去。”

这句话对不对?其实有可能对。因为人类现在的确无法判断自己所在的宇宙,是不是一个超级先进的虚拟现实环境。

接下来,我们将从三维显示器、语音识别等这些外设开始,把虚拟现实技术在科学理论基础上的很多卓越之处,进行介绍和阐述。相信了解了这些积累人类智慧的文明成果,你会和我一样的激动。

首先,虚拟现实技术的核心运作和协调管理,会是一个怎么样的东西?前者就像计算机的中央处理器(CPU),后者就像是智能机器人系统。试想一下,如果一个虚拟现实系统,能够让人实现真实的感触。那这个虚拟现实系统,实际上就是一个完全人格化的仿真机器人系统啊!这两者之间是互通的!把远在太平洋那边的女朋友通过虚拟现实拉到你身边,和机器人模拟出一个女朋友来陪你,技术上并没有太大的差别。

我们先来谈虚拟现实技术的核心运行管理。虚拟现实系统在执行时期的行为模式,由仿真管理器(simulation manager)来控制整体的模拟过程。它控制系统在执行时期的模式(run-time model)。而一般的执行时期模式,可分为三大类︰仿真循环模式(simulation loop model)、事件驱动模式(event-driven model)以及同步模式(concurrent model)。

在仿真循环模式中,系统中的运作包括互动、数值运算、数据处理以及3D显像都在一个反复执行的循环中完成;在事件驱动模式中,系统的运作只发生在响应事件的产生,而事件的产生通常由使用者来触发;在同步模式中,系统中的不同运作分散到不同的处理程序,而这些处理程序分散到单个或数个处理器进行排程。

对一般的应用,事件驱动模式较不适用,因为在同一时间,多个由使用者所触发的事件可能同时发生,而这些事件的意义和优先权可能彼此相关,因而增加控制与管理整体模拟过程的困难度;目前被广泛采用的模式为仿真循环模式,许多商用的虚拟现实发展软件都采用这种模式;至于同步模式则是未来发展的主要趋势,其好处在于系统中运算速度较慢的处理程序不至于影响其他的程序。当然一个虚拟现实系统的仿真管理器要采用何种模式最主要还是跟所使用的计算机平台以及操作系统密切相关。

人类目前的技术,还处于仿真循环模式的阶段。在模拟的过程中,仿真管理器须侦测每一感知接口设备是否被触发,并且把相关传感器的数据进行更新和处理,比如虚拟物体的位置、形状或者速度及与其他虚拟物体的互动等。最后,虚拟场景的新的图形信息就会透射在HMD或计算机的屏幕上。再加上其他如声音、触觉、力回馈等效果的同步反馈,便完成了一个模拟周期。

跟计算机系统一样,外设(I/O)系统,也是虚拟现实技术特别重要的组成部分。各种传感器和追踪器,各种输入设备、输出设备和互动设备,都是虚拟现实系统的核心部分。

在虚拟现实应用中,追踪使用者的位置是很重要的。在过去,设计者只关心追踪器是不是能提供足够的更新率,然而现在却要考虑其他因素,包括静态准确度(static accuracy,测定物体位置的准确度),动态准确度(dynamic accuracy,测定移动量的准确度)和时相延迟(phase lag)等。

特别是时相延迟,由于现在的追踪器都有处理器进行运算,如果物体持续移动,输出结果将永远不等于目前位置。如果输出和目前位置差太多,使用者会感觉出不真实,甚至产生不快与头晕。此外,由于追踪器和头戴式显示器常一起使用,定位(registration,真实和回报的位置之对应关系)也很重要。如果我们看到的动作和实际的步调不一致,那会产生很多问题,如两人怎么样也无法握手,因为他们看到的手和他们手的实际动作并不能配合。

为了改善显示的及追踪到的动作不一致问题,目前主要是采用电压计及光译码器测量仪器中各关节的转动角度、再计算受测物的位置的机械式;由三个正交的发信器发出磁场,经由三组接收器接收,可由收发的信号变化计算出受测物的位置的电磁式;利用红外线和激光技术测定位置的光学式;由发声器发出超音波,让麦克风接收,经由测定时间差来计算受测物距离的超音波式等。

未来,可能会采用惯性式及重力式的原理,来设计虚拟现实的各种交互系统了。这种基于动作惯性和陀螺仪测量三轴转动量的技术,相比于其他的,科技含量更高,也更加精准。

智能人机交互领域,是虚拟现实技术的关键核心部分,如果一台计算机运算能力再强,但没有完美的人机互动,也是没有实际作用的。从键盘和鼠标开始,人类其实一直在努力做到更好。目前,最新的数据手套追踪装置,已经可以用来辨识手的各种动作。预先将光纤置于手套中,利用光在光纤中反射的角度及强度变化,求出各关节弯区角度,从而可得出手势数据。

头戴式显示器可说是一提到虚拟现实,大家就会想到的东西。它是由计算机算出左右两眼的影像,将之显示于显示器内的液晶屏幕上。头戴式显示器和人的眼睛、耳朵十分贴近,可有效排除外界干扰,看起来似乎是虚拟现实的最佳选择。

然而,由于头戴式显示器和人眼的距离很短,人眼可以清楚地看到液晶屏幕上的颗粒。当然这个随着视网膜屏幕的进步,会不复存在。然后,就是解决人体生理性的挑战了。

人的眼睛和显示器的互动中,会不会产生散焦?会不会发出漫射?怎么跟随眼球运动调整视角?如何解决头戴式显示器的重量和显示效果之间的矛盾,这些都是未来需要慢慢解决的问题。

谷歌眼镜,是超越时代的革命性产品,但由于还没有处理好视线和屏幕的关系,总给人一种斜眼看天的感觉,也影响了它的普遍应用。

虚拟现实技术,最核心也是最具想象力和挑战性的,还是三维图形显像技术。因为,人类最重要的是通过视觉来观察外界实物空间,并利用眼睛和大脑的计算,实现三维空间的各种判断和运动。那么,三维图形的显像,就是虚拟现实技术的成败之举。

三维图形显像技术目前用于虚拟现实系统的,大多是以多边形为处理对象的着色(shading)与贴图(texture mapping)两种作法。此外,也有以整体照明(global illumination)为基础的光迹追踪法(ray tracing)与热辐射法(radiosity)等。

对虚拟现实技术而言,处理场景复杂度愈来愈高,每秒钟所需处理的多边形数量几乎是呈几何级在大幅增加,因此,人类在现有的图像生成技术基础上,重点发展了遮蔽性消除(visibility culling)、多层次精细度模型(level-of-detail modeling,LOD)和影像快取式显像技术(image caching rendering)等。

而在虚拟现实中的动态环境的显像技术,则主要是采用动态热辐射法和动态阴影产生法来实现。

具体来说,在图像着色技术中,光源和物体之间的行为反应以照明模型(illumination model)来描述。它把光直接打在物体上之后产生的复杂反应简化为反射、漫射与环境的光,再计算出物体表面所应该呈现的颜色。

为了决定多边形内部的颜色,着色的技术把多边形的端点颜色信息先用照明模型算出,多边形内部的点的颜色信息则利用内插法求出,或者先把着色计算所需的多边形内部点的法向量值透过已知的端点法向量值由内插法求得后,再依该点的法向量值计算出该点的颜色信息,这两种不同的方法分别称为Gouraud shading和Phong shading。上述的着色技术仅能处理一般局部照明(local illumination)的效果,因为它们都只考虑光源直接对物体的作用,而未能考虑光在物体间甚至在物体内部的交互作用,所以产生的影像并不真实。然而整体照明的技术目前都很耗时,因此一般的虚拟现实系统通常利用贴图的技术来配合只考虑局部照明的着色技术。贴图的技术简单地说就是直接把真实物体的影像置于场景中的物体上以期达到真实的组合影像,所以使用贴图时通常物体的几何精细度可粗糙些,也就是可降低场景中多边形的数目;然而贴图所能提供的真实度毕竟有限,无法完全将整体照明的效果考虑进来。要达到整体照明的效果,我们必须采用考虑整体照明效果的算法,如光迹追踪法与热辐射法。

如何跟踪人的运动规矩和目光视线,来虚拟出逼真的周围环境呢?用光迹追踪法。这种方式是应用光的可逆性,由投射在视平面的点,反向模拟光的行为,发出一道计算的射线,收集所得到的能量,来表示由视点所看到场景中的物体所带给视平面上每一点的颜色信息;这种做法的最大特性在于要得到最后的显像结果,必须光迹追踪视平面上的每一个像素(pixel);此外,它有和视点相关的特点,因此一旦视点、视角或场景有所变化,整个过程便需重新计算。对于一般虚拟现实的应用而言,光迹追踪法这种运算量过高的整体照明算法并不适用。热辐射法是模拟整个环境中能量在物体间互相转移的一种方法。物体表面的亮度是由物体表面所散发出的能量决定的,因此显像的过程具有和视点无关的特性。换言之,在对静态环境做巡访(walkthrough)之前只要先行计算场景里所有物体的热辐射值就可以在视点改变后,很快地计算出具有整体照明效果的影像。整个热辐射法的运作过程可以简单地分为热辐射计算与着色这两个主要步骤,而热辐射计算是与视点无关,因此热辐射法可以容易地应用在静态的虚拟现实系统中;但应用在动态环境中,那么在环境有所改变时,如物体的移动、物体数量的增减或光源的变化等,就必须更新受到影响而改变的热辐射值。这部分的技术目前尚未臻成熟,并不能应用在实时、互动的虚拟现实系统中。如何将整体照明的算法适宜地应用在虚拟现实环境中是未来的趋势与研究的主流。

如今,用来加速图形显像的技术可以分为三个主要的范畴,即遮蔽性消除(visibility culling)、多层次精细度模型(level-of-detail modeling,LOD)和影像快取显像技术(image caching rendering)。

什么是遮蔽性消除?这种技术就是只给你看你能看到的,你看不到的地方全部省略。为了加速显像速度,必须尽可能地将视点所看不到的几何部分在显像前即予排除。在一般3D场景中,要减少所需处理几何的数目,最常利用的做法为称作视锥体消除法(view-frustum culling)的技术,意即在显像之前,把不在视点与视角所形成的锥体内的几何部分给予排除,如此显像时只需处理在视锥体内的数据。

另外有所谓的背平面消除法(back-face culling)的技术,做法是把和视角同向的几何面去除,它们的目的都在于务求将显像时需处理的图形量降低;背平面消除法对每个多边形而言,虽然计算简单,但应用到复杂的场景时仍是个负担。

最近有研究将场景的多边形以阶层式的架构组织起来以支持实时的背平面消除法。接下来,是要把视锥体内看不到的几何去除即所谓的完全遮蔽性(exact visibility),这部分运算通常叫作隐蔽面消除法(hidden surface removal,HSR);然而,在复杂的环境中,给定一个视点,要求得完全遮蔽性的代价纵使有硬件(如z-buffer)的帮助仍是十分昂贵;相反的,利用少许对现在视点造成最大遮蔽的阻挡物或几何,花费比较少的时间代价而把大多数看不见的部分先予以排除而求得较保守的保守遮蔽性(conservative visibility),然后再把多边形几何数据丢给显像硬件,是个可行的作法。

保守遮蔽性的求法,是利用称作阻挡物消除法(occlusion culling)的技术,首先对空间进行切割,并对每个子空间决定数个潜在的适当阻挡物,而进行模拟时,则根据视点所在的子空间,决定数个适当的阻挡物,并以视点和这些适当的阻挡物产生阴影锥形体(Shadow frustum),最后再将这些锥形体内的被阻挡物所遮蔽的几何予以排除。像建筑物的模型,整个模型被墙分隔成一个个区间(cell),区间之间仅透过像入口(portal)或窗户(window)相通,若只利用视锥体消除法的做法仍不足够。

此做法可分为三个步骤,①区间分割(cell segmentation);②区间至区间遮蔽性(cell-to-cell visibility);③视点至区间遮蔽性(eye-to-cell visibility)。在求区间至区间遮蔽性步骤中,延着模型中主要的不透明部分做分割;然后对于分割后的每一个区间做区间至区间遮蔽性的测试,即当一条视线(sight-line)存在于一个区间中的任一点到另一区间的任一点时,此两个区间之间的区间至区间遮蔽性就建立了。

如此,对于每一个区间,可以建立以此区间为根的结构树(stab tree);最后在巡访中,根据使用者所在区间的位置、角度以及它本身的视角对前一步骤所建的stab tree进一步做遮蔽物消除的工作,而获得视点至区间遮蔽性,而得到所谓潜在可见集合(potential visibility set,PVS),再将之丢到计算机绘图硬件中做遮蔽面消除法和显像。这方法的缺点是只能用于室内建筑场景之中,而不适用于一般的室外场景。

在环境中每一个物体皆具有数个不同层次精细度的多边形表示数据,而于视觉仿真中显像时,显像软件再根据使用者和物体之距离及其视角等决定物体该使用何种精细度之数据做显像。其用意在于:因为物体模型是以多边形的方式呈现,因此只要减少在复杂的虚拟环境中的多边形面总数,便可加速显像速率,达成交互式显像速率。对于那些离观视点较远的物体,因其投影在视平面上可能只含少数像素,故以较低精细度的模型显像产生的影像和采用完整精细度的模型显像产生的影像相差细微,视觉上不易感受两影像间的差异,但计算速度却有相当大的提升。我们可以针对那些离观视点较远、较偏离视线的或较不重要的物体,采用较为粗糙、简单的模型来代替,使得整个场景的多边形数较以所有物体都采用完整精细度模型少了许多,因此可大量减少硬件所需处理的多边形个数而大大地改善显像整个场景的速率。

目前来说,虚拟现实技术的软件平台,都必须在仿真前产生数套不同精细度的简化模型提供给系统使用。此种做法我们称之为静态多层次精细度模型。因为两显像画面间多层次精细度模型的选取与切换很难达到理想,所以另一发展的趋势是在模拟中,在时间控制的条件下,我们动态地、依据视点视角调整场景模型的精细度,实时产生显像所需的几何模型,这称之为动态多层次精细度模型。

什么又是影像快取显像技术呢?由于多层次精细度模型的技术对于同一物体必然产生多组不同精细度的模型,因此它须作前置处理并且耗费大量储存空间。且由于物体的几何复杂度被牺牲了,而造成显像时的失真;而影像快取显像技术不但没有上述的缺点,还可以体现多层次精细度模型技术的好处。所谓的影像快取显像技术,是指将物体以几何方式产生的影像或以其他方式所获得的真实影像数据以阶层式的架构保存起来,留待后面几个画面以此影像代替几何数据在进行显像时使用。

它的基本做法为首先利用二元分割树(BSP tree)作空间分割,显像时,在二元分割树中的任一个节点上的物体都可显像在节点本身的影像快取(image cache)上,再利用二元分割树具备的深度排序功能来进行显像。而视点移动之后,上一个画面所产生的快取影像(cached image)依照某一准则来评估,若此快取影像还有效,则使用它以代替该节点上的几何数据显像;否则就产生一新的快取影像。此外,这种影像快取显像技术也容易配合多层次精细度模型的技术,如在同一结点储存多个层次精细度的模型,与利用画面间的相依性(frame coherence)的特性,在近观视点的节点内用多层次精细度模型的几何数据显示,以达到加速的目的。然而此种方法最大的限制在于它只在于静态环境中且对比较深远的场景才能真正发挥其效果。目前关于这方面的研究方向与趋势仍在于如何成功地把显像技术应用在动态环境中。

在实用的虚拟现实系统中,势必要加入能处理动态环境的技术。对于常见的以局部照明算法为基础的系统无法直接处理阴影计算,使得显像出的画面在整体空间感的表现上就比较差。于是出现了一些在局部照明的架构下产生阴影的算法。在这些算法中,常引用到阴影体积(shadow volume)的概念。所谓的阴影体积其实就是物体在挡住光源后会形成一光源无法直接照射的空间。若有其他物体接触此空间,则该物体就会有阴影产生。基本上,这些算法都十分耗时,且和场景复杂度及光源数都很有关系。这种情况对动态的虚拟现实应用并不适合。所以目前一般虚拟现实应用软件并没有真实的阴影处理,而只有提供简单的、粗糙的阴影以加强视觉效果,如只对某平面作投影。目前有个趋势就是把阴影产生的处理用硬件来做,如透过OpenGL的模板缓存器(stencil buffer)可协助阴影的产生。因此如何把阴影产生法成功地应用在动态环境中是当前一个主要的课题。

对整体照明算法而言,把热辐射法应用在动态环境中的作法,近年来一直有相关的研究提出,却都无法满足虚拟现实实时互动的需求。

目前动态热辐射法的技术有两大类,其中一类的方法是延伸渐进收敛式热辐射法(prOGREssive refinement)来满足动态环境的需求,其主要的观念在于能量的重新分配,即根据物体移动前后的形式因子(form factor)的变化量来重新分配已散发出去的能量,而有所谓的正能量和负能量被分配到环境中;另一类的方法是延伸阶层式热辐射法(hierARChical radiosity)。延伸阶层式热辐射法将环境中的多边形作阶层式的切割,并在有效的误差控制下,在适当的阶层之间建立能量的连接,代表环境中能量的转换与传递。而动态阶层式热辐射法利用有效的算法把受环境变化影响的连接迅速地确认出来,并作适当的更新以反映环境中能量的变化。

但对现阶段而言,这两类热辐射法的技术仍尚待突破,才能成功地应用在实际的虚拟现实系统中。

最后,最牛的黑科技,终于来了!对时间的控制!

为什么对时间的控制如此重要,因为这是一切的基础!三维画面、交互体验、感触体验、浸入式体验,都是由时间的同步来控制的。

在一般的虚拟现实的应用里,维持一个稳定且快速的显像速率(frame rate)是绝对必需的;否则不仅会使得整体运作的效能降低,还会造成使用者身体上的不适,导致许多和虚拟环境之间互动的困难。为了达成具有稳定且快速的显像速率,必须作一有效的时间控制,使得虚拟现实系统中的各项运算资源都能合理分配给各项的系统单元,以期系统中的各类运作或运算都能在各自的临界时间(critical time)内完成,这就是所谓的临界时间计算(time-critical computing)。

临界时间计算的主要概念为,在使用者给定整体系统运作效能或一个固定的显像速率之下,找出在各项质量因素中的一个平衡点(系统运作的时间也为各项质量因素之一);因此,为了达到一个迅速的运作的时间,其他的质量因素,如显像质量与运算结果的准确性,必须在有效的控制下适度地牺牲。

在一个事先给定的时间内,具有临界时间计算的系统必须在此一时间内完成系统中各项的运算。如果给予的时间并不足以完成所需的各项运算的话,临界时间计算的机制则必须能降低各项的运算质量以达成在给予的时间内完成所有运算的要求。因此,一个具有临界时间计算的系统必须要具备运算时间预测、降低各项的运算质量和排程各项运算三大特性。

一般而言,要得到完全准确的运算时间预测是不可能的,原因是我们并无法得知系统中的一个程序何时终结。此外,进行运算时间预测所花费的时间必须比真正花在运算上的时间要短,如此才有剩余的时间来进行运算;而为了使进行运算时间预测所花时间尽可能地低,利用经验法则及只考虑几个重要的变量来预测运算时间是常见可行的做法。

当预测所得的运算时间大于使用者所给定的运算时间时,临界时间计算的机制必须有能力对系统中的各项运算作简化,以达到在临界时间内完成所需运算的要求,因而一些运算的质量必须牺牲;要达到此目标,必须找出系统中的质量要素及改变的方式。一般改变的方式分为两类,即连续与离散方式,如系统的更新频率为连续方式而多边形的分辨率改变为离散方式;另外各项简化运算所花费的代价也必须评估,而代价较低的质量要素则首先考虑被牺牲。

在给定的时间内,各项的运算必须要通过排程控制器来作协调。为了适当分配时间给各项运算,排程控制器必须利用上述预测所得的结果来进行排程。如果运算单元无法在排程控制器所给定的时间内完成运算的话,则牺牲运算的质量来简化运算。因此,排程控制器要有能力决定各项运算的重要性与优先级,及运算质量的牺牲程度。

一个实用的虚拟现实系统,必须要有临界时间计算的能力才能达到实时、互动的需求;然而对于临界时间计算的研究,现阶段仍在起步当中,目前的虚拟现实系统皆尚未有临界时间计算的机制。

而这一切,都依靠一个基础的公用的处理协调系统:动态处理系统。

在虚拟现实的相关技术中,我们首先考虑的是如何建构物体的实体模型及如何真实地把它们显示在屏幕上。一旦要将这些技术应用到真实世界的模拟时,还必须考虑一些自然法则的模拟。其中最重要的就是物体碰撞的仿真,这包含碰撞侦测(collision detection)与碰撞反应(collision response)。

早期碰撞侦测的应用是在机器人的运动上,用以确保机器人行走的轨迹不会和空间中其他固定物体发生碰撞,一般称为路径规划。而近年来,碰撞侦测技术也成为虚拟现实等仿真系统的核心技术。常见应用如飞行模拟,用来计算飞机的飞行轨迹是否会和其他障碍物相撞;如驾驶训练中用来判断使用者在环境中行进的路径是否可接受;另外在巡访系统中可防止使用者穿越墙壁。

碰撞侦测的技术可分为两种,一是解决碰撞侦测的问题时只考虑每个侦测的瞬间物体是否重迭以判断两者是否发生碰撞。这类的方法只计算侦测瞬间物体是否发生碰撞,所以在时间轴上只考虑一个一个时间取样点而非连续的时间线,因此我们称这类方法为离散时间之碰撞侦测(discrete-time collision detection)。很明显,离散时间之碰撞侦测只在离散的时间点上去侦测物体在静态时的重迭情形,两侦测瞬间内产生的碰撞无法侦测到。所以除了离散时间之碰撞侦测外,还须考虑在两个侦测瞬间内(或者说两个frame间)物体移动的轨迹是否发生碰撞,以避免上述碰撞会遗漏的情形。而另一类的方法在时间轴上不是考虑一个个时间取样点而是连续的时间都纳入考虑,称为连续时间之碰撞侦测(continuous-time collision detection)。

第一类的方法重点在于静态物体的重迭测试。当两个物体占据同一个空间,则这两个物体重迭,碰撞已发生。对物体存在的环境作空间分割来判断是一个直观的加速办法,如均匀空间分割法(uniform space subdivision):将空间分成一个个大小固定的子空间(cell),一旦有两个物体同时占据一个子空间,则它们很有可能重迭,需再做进一步的计算。另外也有八元树(octree)的分割方式,将空间作阶层式的分割形成一棵八元树;当在分割的过程中,假如有一子空间中的物体数小于某个值,则不再分割下去,而作进一步的重迭测试;反之继续分割。还有其他阶层式的分割方式,如k-d tree及以BSP为基础的分割方式等;此外,系统也利用具有阶层式架构表示物体几何数据,并以球或六面体当作各子物体的包围体(bounding volume),如此当发现物体位于同一个子空间中要计算两者是否重迭时,可以利用其包围体快速地把没有重迭的物体对去除。若物体对的包围体重迭,则继续检查其子物体对。

在第二类方法中,有人将物体的轨迹参数化,并以数值求根法(root-finding)求碰撞点,但很费时。目前已提出利用碰撞预测的方式来加速连续时间碰撞侦测。一物体对的碰撞预测时间为其球形包围体(bounding sphere)间的碰撞时间。碰撞预测的时间经排序后大致仿真真实碰撞的顺序。所以从此排序最先的物体对作碰撞侦测,若真正碰撞时间在第二对预测时间之前,则我们已经找到最先碰撞的物体对;否则,我们只需计算第二对的真正碰撞时间,并与第一对碰撞时间相比。若碰撞预测足够准确,我们只需计算前面几对即可求得最先碰撞的时间。而一对物体之真正碰撞时间计算中,我们可以将物体各自分解成子物体,再计算子物体对的碰撞时间并求取最小者,此法可以递归方式做下去。另外,我们亦可对子物体对做碰撞预测,且将预测时间纳入全景物体对碰撞预测时间之排序,即我们将子物体视为一般物体。这两种做法,每一物体需有一阶层式树状架构包围体(bounding volume tree)以方便做分解。

在一般的虚拟漫游环境中,多是用如前所述的3D绘图方式实行。然而,如果漫游的范围广大,环境景观复杂,为了求得逼真的效果,需要建构内含多达数十万甚至数百万个多边形的模型。在每秒至少需24次更新频率的要求下,也只有超级计算机才可能办到,这对于虚拟现实的普及化来说实在不是个好消息。这种情形下,遂有另一种解决方式,就是影像式虚拟现实。

影像式虚拟现实的观念很简单。假设我们在一个蒙古包内,而蒙古包内壁贴满了蒙古包四周的风景照片,如果照片贴得天衣无缝,看上去就和没有这个蒙古包是一样的。为了要将照片贴得天衣无缝,拍摄取景时要留意特别留下重复部分,以便将图接合。当然,接图时也要用一些算法将图形作些变形,才能接得顺畅。此外,以台湾大学资讯工程系的影像式虚拟现实(photo VR)为例,利用锯齿线平滑技术(anti-aliasing),使静态画面质量更好。除了环状接合,球状接合能使天空及脚底都清楚呈现出来。

至于图片的接合,我们假设来源照片都是标准的透视投影,相机焦距不变,且每张照片中心都在同样的水平高度上。利用影像比对(image matching)可以算出两张照片的重复部分,将之消去,并将影像柔化(smoothing)以消除两张相片间的亮度差异。当然,原始影像质量仍然要尽量好,以增进接图后的质量。

目前,这方面的产品有Apple的Quick Time VR,RealSpace的RealVR及PanoVR等。此种做法已成功的用到静态环境,如美术馆/博物馆的浏览系统。而此做法若要成功的用到其他VR应用,必须能有效的处理使用者与场景或场景内物体间的互动,且必须去除使用者参观路径的限制,这些应用皆需利用深度数据计算遮蔽性消除。这是目前尚待努力突破的。

以前,虚拟现实技术主要是以单机和单人为主,随着互联网的发展,现在最热门的虚拟现实应用也向网络化迈进,目前的应用以网络漫游及网络会议为主。在网络会议方面,现在可以透过网络,将与会者的脸的影像传输以让其他人能透过HMD看到,并可任选虚拟场景,甚至可以将参与者的动作也显现出来。此外,MPEG-4也以视讯会议为导向,计划用模型的方式,大幅减少频宽需求,这方面的研究还在持续中。网络漫游,较大的问题在于使用的人数,要能让这些人所见能同步,人数越多需要的计算就越多。而前面所说的影像式VR也常用在网络虚拟现实技术的应用中。

看到此处,相信读者已经是彻底晕菜。同样,作为科普作家的笔者,也是有些不知所以然。但是我们依然保持激动的是,虚拟现实技术,作为人类科技树上最高最尖的哪一枝,真的充满了各种高新科技的挑战和各种极端技术的突破。

试想一下,假如我们的宇宙真的是上帝所虚拟出来的虚拟现实,那么我们的每一步科技进步,都向上帝提出了新的一步挑战。作为人类来讲,能够有这么崇高的理想和意义,真的是值得万世荣耀。 MzfAamtHSS+i9u6nEOqQV8K2OfddxTaIECan0hmutDkUTFJflEfuxlP+v3MYH+aJ

点击中间区域
呼出菜单
上一章
目录
下一章
×