• 首页
  • 科学成果
  • VR – 一种基于图像的方法“虚拟环境导航”-单羽博士

VR – 一种基于图像的方法“虚拟环境导航”-单羽博士

2023-08-15

Vrui(虚拟现实用户界面)是一个C++开发工具包,用于高度交互和高性能的VR应用程序,旨在生产完全独立于环境的软件。Vrui 不仅隐藏了显示系统和多管道渲染方法之间的差异,而且还将应用程序与任何环境中可用的输入设备分开。Vrui 应用程序不是直接引用输入设备,例如按名称引用,而是使用中间工具层,在更高的语义级别表达与输入设备的交互。这允许环境集成商提供工具,以最有效和直观的方式将可用的输入设备映射到语义事件,如选择、位置、拖动、导航、菜单选择等。因此,Vrui应用程序可以在各种不同的VR环境中有效运行,从只有键盘和鼠标的桌面系统到具有多个6自由度输入设备的完全沉浸式多屏幕系统。桌面上的 Vrui 应用程序不是在“模拟器”模式下运行的,这种模式主要用于调试,而是完全可用,外观和感觉类似于本机桌面应用程序。


抽象

传统上,虚拟现实系统使用3D计算机图形建模和实时渲染虚拟环境。这种方法通常需要费力的建模和昂贵的专用渲染硬件。呈现质量和场景复杂性往往受到限制,因为实时约束。本文提出了一种新的方法使用360度圆柱形全景图像组成虚拟环境。全景图像是数字扭曲的实时模拟相机的平移和变焦。的全景图像可以通过计算机渲染来创建,专门的全景相机或“拼接”在一起用普通照相机拍摄的重叠照片,走在一个空间中目前是通过“跳跃”来完成的全景点。基于图像的方法已应用于商业产品QuickTime VR,一个虚拟现实扩展到苹果电脑的QuickTime数字多媒体框架。本文介绍了该系统的体系结构、文件格式、创作过程和VR的互动玩家系统。除了全景观看,该系统还包括从不同的方向观察物体并进行碰撞测试通过与方向无关的热点。


1、介绍

在大多数虚拟现实系统中的一个关键组件是执行虚拟环境演练的能力不同的观看位置和方向。预排的需要将虚拟环境与之综合模拟一个虚拟摄像机在环境中移动最多6个自由度。合成和导航是通常用以下两种方法之一来完成。


1.1:3D建模与渲染

传统上,虚拟环境被合成为三维几何实体的集合。几何实体是实时呈现的,通常是在特殊目的的帮助下3D渲染引擎,3D建模和渲染方法主要有三种问题。首先,创建几何实体是一项费力的工作手动过程。第二,因为演练需要在实时执行时,渲染引擎通常放置一个限制场景复杂性和渲染质量。第三,需要一个特殊用途的渲染引擎限制了虚拟现实对大多数人的可用性必要的硬件并不普遍可用,尽管计算机图形软件和硬件在过去,大多数虚拟现实系统仍然面临着以上问题。

3D建模过程是非常耗费人力的操作,真正的时间渲染问题仍然存在,因为实际上没有渲染质量或场景复杂性的上限。


1.2:分支的电影

另一种在虚拟中合成和导航的方法环境,它在视频中被广泛使用游戏产业是电影的分支。多个电影片段描绘空间导航路径连接在一起选定的分支点。允许用户继续移动到只在这些分支点上有不同的路径。这种方法通常使用摄影或计算机渲染来创建电影。计算机驱动的模拟或数字视频播放器用于交互式回放。一个早期的例子方法是电影地图[1],其中城市的街道每隔10英尺拍摄一次在播放时,使用两个视盘播放机检索相应的视图模拟在街上行走的效果。

使用数字视频探索与数字视频交互技术[2]。DVI演示用户可以在帕伦克的玛雅遗迹中漫步使用光盘上的数字视频播放。一个“虚拟基于计算机渲染图像和CD-ROM的博物馆[3]中描述。的选定点博物馆,一个360度的平移电影被渲染让用户环顾四周。从一个点走向另一个点是用一个双向转换电影来模拟的,哪个在两个方向上的每一步都包含一个框架连接两点的路径。

分支电影方法的一个明显问题是它的可导航性和交互性有限,它还需要一个大的所有可能的电影的存储空间量。然而,该方法解决了三维中的上述问题的方法。电影方法不需要3D建模并对现有场景进行渲染;它可以使用照片或电影,即使是电脑合成的场景基于电影的方法将呈现与交互分离回放。基于电影的方法允许渲染以最高的质量和最大的复杂性执行不影响播放性能。它还可以使用于播放的廉价和普通的视频设备。


1.3:目标

由于现有方法的不充分,我们于是决定探索一种新的创作方法虚拟环境导航。具体来说,我们想开发一个满足以下目标的新系统。

首先,系统应该以交互速度播放现在大多数的个人电脑都没有硬件加速度。我们不希望系统依赖特殊输入或输出设备,如数据手套或头戴式耳机显示,虽然我们不排除他们的使用。

第二,系统应该兼顾现实和现实合成场景。现实世界的场景包含着极其丰富的内容细节通常很难用计算机建模和渲染。我们希望系统能够直接使用现实世界的风景无需通过计算机建模和渲染。

第三,系统应该能够显示高质量独立于场景复杂性的图像。许多虚拟现实系统通常通过显示低质量的图像来妥协和/或简化环境,以满足实时性显示约束。我们希望系统的显示速度是独立于渲染质量和场景复杂性。


2、相关工作

基于电影的方法需要每个可显示的视图要在创作阶段创建并存储。每个场景都使用了4台摄像机点,因此,给用户的能力平移到左边和每一点都是正确的。虚拟博物馆存储了45个视图每个360度全景电影[3]。这导致了平滑的平移运动,但代价是更多的存储空间和帧创建时间。

这是基于web方法的另一个示例。与电影地图或虚拟博物馆不同,效果和旋转物体是一样的,平移看一个场景以同样的方式完成。不同视图方向的场景视图只要视角方向改变,视点改变静止的:静止的,如相机围绕其节点旋转的情况点(即光学投影中心),所有的帧从平移运动可以映射到正则投影。这投影称为环境图,它可以是被认为是与方位无关的场景视图。一次生成一个环境图,任意视图场景,只要视点不动,都可以通过将环境映射重新投影到新环境来计算视图平面。

环境图最初是在计算机上使用的图形来简化镜面反射的计算在远处一个闪亮的物体上[6][7][8]。场景是这样的首先投影到以物体为中心的环境地图上。该地图由镜面反射方向索引到计算对象上的反射。既然现场很远去掉,物体中心和表面反射点可以忽略。各种类型的环境地图已被用于虚拟环境的交互式可视化。

在电影地图中,变形图像是光学或电子的处理后可获得360度观看[1],[9]。一个项目叫做“导航”,使用了一个全景网格来航行模拟[10]。实时重投影环境地图被用来形象化周围的场景和创造交互式演练[11],[12]。一种用于环境地图查找实现了一个虚拟现实系统[13]。渲染环境映射是微不足道的计算机,从摄影图像创建它需要额外的工作。Greene和Heckbert描述了一种技术合成多个图像流与已知的相机进入鱼眼视野[14]。自动登记可用于将多个源图像合成为一个图像增强视野[15][16][17]。

当视点开始移动时,一些物体在附近,就像相机绕着一个物体旋转的情况一样帧不能再映射到规范投影,视点的移动会造成视点之间的“差异”同一物体的不同视角。这种差异是当视点移动时,图像空间中的深度变化(围绕其节点旋转相机不会产生深度改变)。由于这种差异,单一的环境地图是不足以容纳所有的视图。的电影方法只是存储所有的帧。视图插值由Chen和Williams提出的方法[18]只存储少量关键帧和合成的缺失帧的飞行插值。然而,这种方法需要额外的的信息,如深度缓冲区和相机参数每个关键帧。自动或半自动方法已经开发注册和插值图像具有未知深度和相机信息[16][19][20]。


3、基于图像的渲染

本文提出的基于图像的方法解决了在摄影技术中对虚拟相机运动的模拟计算机合成空间。摄像机的运动有六个自由度。自由度分为三个部分类。首先,三个转动自由度,称为“摄像机旋转”,是指旋转摄像机的观看方向同时保持视点静止。这类运动可以通过环境的重新投影来完成吗地图和图像旋转。第二,让相机绕轨道运行对象,同时保持视图方向以对象为中心称为“对象旋转”,因为它相当于旋转对象。这种类型的运动需要的运动视点,不能实现与环境地图。

第四,相机在空间中的自由运动,称为“相机”“运动”,既需要改变观点,也需要改变行为方式观看方向和所有六个自由度。除了对于上述运动,改变相机的视野,称为“相机变焦”,可以通过多分辨率图像缩放。在不丧失一般性的前提下,假定环境为在接下来的讨论中保持静态。然而,一个人可以将此方法推广到通过使用时间变化的环境地图(如环境地图电影)来包含运动或者360度电影。


3.1:相机旋转

相机有三个旋转自由度:俯仰(围绕水平轴旋转),(围绕水平轴旋转)(垂直轴)和滚转(绕与轴垂直的轴旋转视图平面)。相机滚动可以很容易地实现图像旋转。俯仰和偏航可以完成环境地图的重投影。环境地图是将场景投影到简单的形状。通常,这种形状是立方体或球体[6],[7]。重新投影环境地图来创作小说视图取决于环境映射的类型。

对于一个立方体环境地图,重投影只是显示视图中六个纹理映射正方形的可见区域飞机。对于球面环境地图,非线性图像需要进行翘曲。如果不需要完整的360度平移,则其他环境地图的类型,如圆柱形,鱼眼或可以使用广角平面图。圆柱形地图允许360度水平平移,小于180度垂直平移。鱼眼图或半球形图允许180度双向倾斜,平面图允许两个方向的倾斜度都小于180度。


3.2:物体旋转

如前所述,将相机绕着一个物体旋转,相当于物体绕其中心旋转,不能简单地使用环境地图即可完成。一种方式解决这个问题的方法是可导航电影方法。电影包含了所有允许的帧对象的方向。对于一个全360度的物体在一个方向旋转,在另一个方向旋转140度10度增量,电影需要504帧。如果我们以256 × 256像素的分辨率存储帧,每帧是压缩后大约10K字节。整部电影消耗大约5mb的存储空间。这个空间量的容量很大,但并不不切实际每张CD-ROM大约650 MB。视图插值方法[18]只需要存储对象的几个关键视图。新视图是在上从关键视图实时插入的,这也意味着旋转角度可以是任意的。


3.3:摄像机运动

摄像机在一个场景中自由移动涉及到的变化视点和视野方向。视图方向可以改变通过使用环境映射完成。的改变观点更难实现。视点更改的一个简单解决方案是约束摄像机只移动到特定的位置环境地图可用。对于线性摄像机来说运动,比如走在走廊上,环境地图可以为点创建一些沿着路径的小间隔。存储环境映射的成本大致为存储普通演练影片的成本是其六倍使用立方贴图。由此产生的效果就像从一个行驶中的火车窗外。移动路径是固定的,但是乘客可以随意环顾四周。

环境地图电影类似于一些特殊格式的电影,如Omnimax(180度鱼眼)或CircleVision(360度圆柱形)电影,其中记录了比平常更广阔的视野。在观察过程中,观察者可以控制观察方向播放时间。对于在2D或3D空间中穿行,环境地图可以排列形成二维或三维晶格。空间中的视点是简单地量化到最近的网格点来近似运动)。然而,这种方法需要更大的为了获得需要存储的环境映射的数量光滑的运动。更可取的方法可能是视图插值方法[18]或近似能见度方法[12],它从粗网格中生成新的视图环境地图。而不是限制运动到网格点,附近的环境地图被插值生成一条平滑的路径。


3.4:镜头缩放

改变相机的视野相当于在图像空间中放大和缩小。但是,使用图像放大放大不能提供更多细节。通过图像缩小缩小可能会产生混叠当采样率低于奈奎斯特极限时产生伪影。一个解决方案是多分辨率图像缩放。金字塔形的或为每个要提供的图像创建四叉树结构不同级别的分辨率。适当的分辨率是根据缩放因子动态选择。

为了实现在连续变焦中质量最好,这两个层次绑定当前的缩放因子可以插值,类似在纹理映射[21]中使用贴图来抗锯齿。为了避免加载整个高分辨率图像在内存放大的同时,可以对图像进行分割,使内存需求与缩放系数无关。作为变焦系数增大,百分比越小越大图像可见。反之,百分比越大越低需要显示分辨率图像。因此,数字源图像所需的像素数大致恒定,为只与显示的像素数有关。一种方式分割图像就是对图像的多个层次进行分割变成同样大小的瓷砖。图像的分辨率越高更多的瓷砖,反之亦然。这样,当放大因子更改时,只需要访问固定数量的瓷砖。不同层次的决议不需要来自同样的图像。详细的图像可能来自另一个图像实现效果如“无限变焦”[22][23]。


4、QUICKTIME虚拟现实

基于图像的方法已在中实现一款名为QuickTime VR的商业产品,它建立在苹果的基础之上计算机的QuickTime数字多媒体框架。目前的实现包括连续相机平移缩放,跳转到选定的点和对象旋转使用帧索引。

目前,QuickTime VR使用圆柱形环境地图或全景图像,以完成相机旋转。的选择圆柱形地图而不是其他类型的地图是基于因子的数量。它更容易捕捉圆柱全景比其他类型的环境地图。可以用在大多数Macintosh和Windows平台上运行的市售的全景相机有一个旋转垂直狭缝。

需要开发了一个工具自动“缝合”在一起的一组重叠照片创建无缝全景。的圆柱形地图只向一个方向弯曲,所以有效地执行图像扭曲。QuickTime VR包括一个交互式环境,其中采用基于软件的实时图像处理引擎进行空间导航和创作环境虚拟现实的电影。交互式环境被实现为操作系统组件,可以被任何QuickTime 2.0兼容的应用程序。互动环境包含两种类型的玩家。全景电影播放器允许用户平移,缩放和导航现场。

它还包括一个“热点”选择功能。热点是图像中允许用户交互的区域。对象影片播放器允许用户旋转对象或从不同的观察方向观察物体。球员们的全景创作环境由一套工具组成进行全景图像拼接,热点标记,连接,切块和压缩。创建对象影片配有运动可控摄像机。以下部分简要介绍了电影格式,玩家和制作电影的过程。


4.1:电影格式

QuickTime VR目前包括两种不同的类型

电影:全景和对象。


4.1.1:全景电影

传统的QuickTime电影是一维的按时间索引的压缩序列。每个QuickTime电影可能有多个轨道。每个轨道可以存储一种类型的线性媒体,如音频、视频、文本等。每种轨道类型可能都有它有自己的播放器来解码音轨中的信息。播放通常在时间上平行运行的音轨与一个共同的时间尺度同步。QuickTime允许新的类型的轨道和球员将被添加到扩展其功能。

全景电影是多维事件驱动的spatially-oriented电影。全景电影允许用户平移,缩放和移动在一个空间互动。为了改造全景电影进入现有的线性电影框架,添加了新的全景履带类型。全景轨道存储所有关联的链接和附加信息用全景电影。实际的全景图像是存储在一个常规的QuickTime视频轨道利用现有的视频处理能力。显示了一个全景电影文件的示例。

全景轨道分为三个节点。每个节点对应于空间中的一个点。节点包含信息关于自身和链接到其他节点。节点存储在三个轨道中:一个全景轨道和两个视频轨道。全景轨道保存图形信息和指向其他两个轨道的指针。第一个视频轨道保存节点的全景图像。的第二个视频轨道保存热点图像,是可选的。热点用于识别全景的区域用于激活适当链接的图像。这三首歌同样的长度和时间尺度。

玩家使用每个节点的起始时间值来查找节点的另外两个对应的是全景和热点图像的痕迹。热点轨道类似于命中测试轨道虚拟博物馆[3]。热点用于激活事件或导航。热点图像对热点id进行编码数字作为颜色。然而,与虚拟博物馆不同的是热点需要存在于同一对象的每个视图中热点图像以全景形式存储,因此是orientation-independent。热点图像穿过与全景图像相同的图像翘曲过程。因此,热点将与它们附着的物体保持在一起无论相机如何平移或变焦。


4.1.2物体电影

对象影片通常包含一个二维帧数组。每一帧对应一个观看方向。如果有多个帧,则电影具有多于两个维度为每个方向存储。额外的帧允许对象具有时变行为。目前,每个假设方向具有相同的帧数。

对象帧存储在常规视频轨道中。附加信息,如帧数方向和行数、列数,是存储用的电影标题。框架被组织为最小化在水平旋转物体时寻找时间。就像全景电影,没有帧间的压缩帧,因为旋转的顺序是事先不知道的。然而,帧间压缩可以用于多帧每个观看方向内的帧。


4.2:互动环境

交互环境目前由两种类型组成播放器:全景播放器和对象播放器。

全景播放器允许用户连续播放在垂直和水平方向平移。因为全景图像有小于180度垂直场视图,玩家不允许看所有的方式或下来。目前还不能旋转观看方向支持。玩家执行连续缩放前面提到的图像放大和缩小。如果玩家可以使用多个级别的分辨率根据当前内存、CPU的使用情况选择合适的级别性能,磁盘速度和其他因素。多能级缩放目前没有实现在QuickTime VR全景播放器,全景播放器允许用户控制视图定向并显示透视正确的视图扭曲全景图像。全景图像通常是压缩的存储在硬盘或CD-ROM上。压缩图像需要首先解压缩到屏幕外缓冲区。的屏幕外缓冲区通常比全景图小因为在任何时候,只有一小部分的全景是可见的。

如前所述,全景图像被分割成瓷砖。只有与当前视图方向重叠的贴图解压缩到屏幕外缓冲区。上的可见区域然后将屏幕外缓冲区扭曲以显示正确的透视图。只要这个区域在屏幕外缓冲区,不需要额外的解压缩。来尽量减少磁盘访问,最近的磁贴可能会被缓存在主存储器中。

玩家也在空闲时执行预分页以读取相邻磁贴尽量减少交互平移的延迟。图像扭曲,它重新投影图像的部分将圆柱形图像转换为平面视图,实时计算采用基于软件的双通道算法。其中由纱线包围的区域全景图像中的黄色框被扭曲以创建一个下面是透视图。玩家的表现取决于许多因素比如平台、色彩模式、平移模式等因素还有窗口大小。

玩家目前被优化为以16位彩色模式显示。以下是下面给出了不同的处理器。这些数字显示在640x400像素的窗口中每秒更新的次数16位颜色模式。因为翘曲是用两步算法,平移在一维比全二维更快平移。请注意,Windows版本有不同的写入显示的实现,这可能会影响性能。

玩家可以执行图像扭曲在不同的水平质量。质量较低的设置执行较少的过滤和图像更加参差不齐,但速度更快。做到最好平衡质量和性能,玩家自动调整质量水平以保持恒定更新速度。当用户移动时,玩家切换到较低的质量来跟上用户。当用户停止时播放器更新图像在更高的质量。在空间中移动目前是通过跳跃来完成的附加全景图像的点。

为了保持运动的连续性,视线的方向需要是跳转到相邻位置时保持。全景图通过匹配它们的方向连接在一起手工在创作阶段,导航的默认用户界面使用组合一个2D鼠标和一个键盘。当光标移动到窗口时,其形状变化以反映允许的作用当前光标位置。允许的操作包括:二维连续平移;连续放大和缩小(由键盘控制);移动到另一个节点;和激活一个热点。单击鼠标将启动相应的行动。按住鼠标并拖动鼠标执行连续平移。

控制平移速度由距离相对于鼠标点击位置。除了交互式控制之外,还可以放置导航在脚本的控制下。HyperCard外部命令并编写了一个Windows DLL来驱动播放器。任何应用程序与外部命令或DLL兼容即可用脚本控制播放。一个C运行时库接口将可用于从程序直接控制。


4.2.2对象玩家

而全景播放器被设计成环顾四周从空间内部来看,玩家是用来观看物体的对象从外部。对象播放器是基于可导航的电影方法。的二维数组适应对象旋转的帧。对象框架是创建一个恒定的颜色背景,以方便在其他背景上合成。对象播放器允许用户可以使用鼠标抓取对象,并使用虚拟球形接口。物体可以向内旋转两个方向对应于相机的轨道经度和纬度方向。如果每个方向存储了多个帧,则多个帧连续循环,而对象是被旋转。循环使对象具有循环随时间变化的行为(例如,闪烁的蜡烛或水流)瀑布)。


5、结论及未来发展方向

基于图像的方法利用环境地图,尤其是圆柱全景图像,要构图现场。环境地图是与方向无关的图像,它允许用户在任意视图中环顾四周说明:通过使用实时图像处理。-多个环境映射可以链接在一起来定义一个现场。用户可以在场景中通过跳过地图。该方法可以扩展到包括带的运动时变环境图。另外,方法使用二维帧数组来查看不同方向的物体。

基于图像的方法也提供了一个解决方案三维虚拟现实显示中的细节层次问题系统。理想情况下,一个对象应该显示得不那么详细当它离得更远时,当它靠近时,它会更详细观察者。但是,自动改变细节级别对于大多数基于多边形的对象来说是非常困难的。在实践中,同一对象通常在不同的细节级别上建模根据一些选择合适的显示查看标准和系统性能。这方法的成本很高,因为需要多个版本的对象被创建和存储。因为一个人无法预测一个物体如何是否会提前陈列,是否难以储存足够级别包括所有可能的观看条件。

基于图像的方法自动提供适当的细节水平。这些图像是一个场景的视图从不同的地点。当视点从一个移动位置到另一个范围内,与图像相关联检索新位置。就这样,场面总是以适当的详细级别显示。

这个方法是QuickTime的底层技术虚拟现实,一种创造和与虚拟互动的系统环境。这个系统满足了我们的大部分目标在引言中描述。播放环境支持大多数计算机,不需要特殊的硬件。它使用图像作为一个共同的表示,因此可以适应真实和想象的场景。显示速度与场景复杂性和渲染质量无关。在相当短的时间内制作《星际迷航》(不到2个月的时间生成所有的全景电影企业号)已经证明了该系统的相对易用性创造一个复杂的环境。

该方法的主要限制是要求场景是静态的,运动是局限于特定的点。第一个限制可能会随着使用而有所缓解时变环境图。环境地图可能会在局部地区有议案,比如开门。运动可以由一个事件触发,也可以连续触发循环。因为运动主要局限于一些在局部区域,可以有效地压缩运动帧具有帧间压缩。

静态环境约束的另一个解决方案是结合图像翘曲和3D渲染。因为大多数背景是静态的,它们可以有效地生成环境地图。随时间变化或事件驱动可以使用3D渲染实时渲染。的渲染对象被合成到生成的地图上背景实时使用分层,交互对象的数量需要实时渲染的是很小的,因此,即使是一个基于软件的3D渲染器可能足以完成任务。能够在摄影场景中自由移动更加困难。对于计算机渲染的场景,视图插值方法可能是一种解决方案。这种方法需要深度和用于自动图像配准的相机信息。这从照片中获取信息不容易场景。

当前全景播放器的另一个限制是由于使用的限制,直接向上或向下看圆柱形全景图像。这个限制是可以消除的如果其他类型的环境映射,如立方或球形地图,是常用的。然而,捕获一个立方体或球形地图在摄影上可能比一个圆柱形的更困难。当前的播放器不需要任何额外的输入和输出设备,而不是那些通常可用的个人电脑。然而,输入设备与多两个自由度可能是有用的,因为导航不仅仅是二维的。类似地,沉浸式立体与3D音效相结合的显示器可能会增强体验的导航。

虚拟现实的终极目标之一将会实现当一个人无法分辨什么是真实的,什么是虚拟的。与将真实场景的照片用于虚拟的能力导航,我们技术商业应用可能又近了一步。