赞
踩
本文为北京理工大学学堂在线上的慕课——虚拟现实与增强现实技术的学习笔记,仅供学习,不做商用,如有侵权,联系我删除即可。
一、绪论
虚拟现实有着多种定义,较为常用的有以下定义:
虚拟现实是典型的交叉学科,涉及图形图像学、计算机视觉、实时分布系统、光学、电子学、控制学、心理学等多个学科。
虚拟现实的特征曾被Burdea和Langrana概括为著名的VR三角形,或称3I。
Intelligence(智能化):随着时代的发展,引进第四个I,即智能化。
增强现实是虚拟现实的一个重要分支,与虚拟现实的区别在于增强现实不是把使用者与真实世界隔离开,而是将计算机生成的虚拟物体或其他信息叠加到真实场景中,从而实现对现实的“增强”。
课程主要在军事、航空、航海、航天、科研、工业、医疗、文化、生活领域简单介绍了一些应用实例。
二、虚拟现实软件技术基础
碰撞检测可分为近似检测和精确检测两类。
近似检测又称为包围盒碰撞检测,使用三维区域进行检测,测试三维空间两个包围盒是否相交。
包围盒:包围给定三维图像所有顶。包围盒可分为方向包围盒和轴向包围盒。
发生碰撞时,除了发生碰撞的位置发生变化外,表面形体也要发生弯曲或者凸起的变化。
改变顶点的位置,但不改变顶点之间的关系。
改变顶点位置的同时,改变顶点之间的关系。
粒子效果等物理效果仿真可以极大的提高人在虚拟环境中的真实感和沉浸感。
随着深度学习和强化学习技术的发展,当前很多行为建模是通过网络计算的方式实现的。
当场景比较简单时,可以使用美工手绘的方式,但是当要创造一个更为真实的场景的时候,手工创建量就会变得非常大,一般会采用三维扫描的形式来进行数据获取。由于三维扫描的数据量非常大,实际使用时都是用三角面构成的几何体。
需要把三维点云首先进行数据清理,把一些多余的点进行去除,剩下一些关键的三维点,根据他们的相邻关系,构建成一个个的三角面,并最终根据一些表面的优化(如平面可以优化为几个点的表示形式,球面剔除中间的部分等),根据精度的要求再进行一次简化,最终就可以得到几何体。
通过对体素进行集合运算而得到的新的形体的一种表示方法。体素可以是长方体、柱体、锥体、球、环或封闭的自由曲面等等,也可以是半空间;其运算为几何变换或正则集合运算;通过对物体的正则并、交或差集合运算生成一个新物体。
通过传统的几何造型系统来实现,如螺纹等,可以用更加复杂的三维函数表达。
该方法适合创建人工的对象,但不太适合创建基本的像岩石、人脸的对象。
通过贝叶斯函数来表达一个贝塞尔表面来构建几何体的。
贝塞尔表面的好处是可以构建一个无缝的完全光滑的表面。
在表达非光滑表面时会变得复杂,即存在不能在光滑和非光滑之间来回切换的问题。
由于三角形是最小的表示图形,对一个复杂图形无论怎么切分,最后都可以看作是三角形的拼接。因此,可以把任何一个物体的表面全部用差值的方式切分成三角面。
对物体的精致程度的要求不同,采用不同的三角剖分。无论是光滑还是非光滑,都可以表示。
在数据存储时,可以连续的存储三角形的序列,从而可以少存一些点,把重复的顶点进行优化。
计算机图形学是虚拟现实技术的核心基础,它是一门将我们的三维世界进行数据化,并且进行渲染和呈现的技术,主要是使用数学的方法将二维或三维的图形转化为计算机显示器的栅格形式的科学。计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理和算法。
虚拟现实在一般情况下理解为把我们的真实世界1:1的浮现在虚拟世界中,但实际上在做计算机图形学的渲染时,不一定完全按照真实世界的情况来渲染,而是可以超越我们的真实世界,甚至可以创造出一个如梦如幻的风格的世界。
计算机图形学的研究范围可以大致分为四点:
渲染:将储存在计算机中的三维数据生成一个二维图像,让用户看到的过程
早期只用CPU进行渲染操作,现在使用显卡进行渲染,显卡的核心是GPU,GPU最开始设计的时候就是为了能够实现并行处理以及大量的浮点运算。
渲染管线:固化下来的渲染的过程。
固化下来的最基本的渲染过程为:
渲染管线:
前两步为三维数据,光栅化计算后为二维数据。其中顶点处理和像素处理是最关键的两个环节。
Shading Language:专门在GPU上跑的语言
把三维空间三角形上面的所有信息填充到二维三角形对应的每一个像素上。这些信息包括三角形上每个位置对应的颜色以及它的纹理坐标。
纹理填充:在保存数据的时候在三角形的内部是没有保存它的颜色的,只是在顶点上保存了它的颜色,内部的颜色是不确定的,一般来说是由计算机采用双线性插值的方式获得颜色,但这样会导致色彩不够丰富。因此使用纹理贴图来解决这个问题。
纹理贴图:构建的三角形的顶点包含颜色和纹理坐标,纹理坐标表达的是这个顶点在一幅二维贴图上的位置,通过拉伸变换,可以实现纹理从纹理空间到屏幕空间的映射。当所有三角形的内部纹理依次填充完了之后,就会得到最终生成的图像。
通过纹理映射的方式,可以补齐所有顶点之间三角形内部的像素颜色,最终实现三维数据到二维空间的渲染。
虚拟现实中经常会用到数字人和我们的环境进行互动的。
希望能够通过摄影测量的方式,能够在场景中创建一个和真人完全一致的、具有智能的数字人。
当前数字人技术存在三个主要的难点:
为了解决以上难点,提出采用摄影测量学的方式:通过光场采集设备,对一个演员的各种表情进行获取,当对这个演员的多个表情进行采集之后,可以基于这些数据进行分析,通过深度学习的方式,把他的一些肌肉变化、脸部变化进行提取,重新再组合之后就可以得到一个高逼真数字人。
除了对几何形状的获取,还需要得到纹理表面非常细节的信息,甚至是毛孔等的信息,这种我们需要用光学测量的方式来获得。
让人物动起来的方式采用的是演员驱动的方式。
而像数字人身上穿着的衣物,还有一些交互的内容,需要通过基于物理的方式对它进行建模,这样当它做出特定动作时,它的衣服会随着它的动作产生真实的褶皱以及一些变化。
数字人的功能和智能:第三方的大脑(第三方AI云服务)+数字人的小脑(通过深度学习进行训练,将标准的文本接口转化为数字人的动作)
在虚拟现实和增强现实中,我们的需求主要是实现把数字人以实时可交互的形式放到虚拟世界中。
三维引擎(或叫虚拟现实引擎),是构建虚拟现实系统最重要的一个软件基础。
任务:从软硬件的输入输出设备中读取到数据、访问与任务相关的数据库以及模型、能够实时的更新以及渲染三维世界,最终把结果反馈给用户(输出显示设备)。
构建一个实时的三维系统,至少应该有30帧左右的刷新速度。
常见的三维引擎:unity3D(开发快速内容)、UNIGINE(早期影视内容)、Unreal(虚幻引擎或UE引擎,当前主流开发大型游戏),所有的三维引擎的底层都是帮助我们去和硬件打交道。
早期所有的游戏和可视化程序的开发者都需要自己去和显卡打交道。通过在显卡里面编程完成整个数据处理和渲染的过程。
即便如此,开发者依然需要学习大量基础编程的内容,同时要对硬件底层有非常大的了解,才能去开发一些复杂的程序。
因此,三维引擎的出现主要是为了减低开发者的主要的工作强度。
如今虚拟现实的内容构建时,更多的时候需要程序员和开发者考虑的是场景的表现,包括它的美术风格,不能让程序员花费大量的精力在技术实现上。所以为了简化整个开发过程,整个三维引擎起到的就是将我们之前的所有软硬件基础开发内容进行封装,通过一种非常方便的工具化的方式呈现给开发者。
常见的DCC工具包括:
还有像声音素材、文字素材、视频素材、材质素材等,都是由DCC工具辅助完成。由DCC工具创建的所有内容都是在引擎中进行一个完整的结合的。
对于一个引擎的架构来说,最核心的内容是场景管理模块。
三、增强现实技术基础
增强现实是虚拟现实技术自身不断发展过程中延伸出的一个重要分支,也是近年来的一个研究热点。增强现实就是增强用户对现实的感知和认知的一种技术。
现实-虚拟连续统一体
最左端是人类所处的现实世界,依次是增强现实、增强虚拟,最终到达最右端的由计算机渲染绘制的虚拟世界,即虚拟现实。
增强现实和增强虚拟合在一起,被称为混合现实。
对增强现实而言,计算机渲染绘制的信息是对用户真实场景的一种补充。
增强现实从原理上来说,就是对现实的增强,而不是对真实环境的取代。
增强信息是服务于虚拟世界的。
AR和AV所强调的重点不同。
AR强调计算机绘制渲染的信息服务于现实世界;而在AV中,现实世界的信息是服务于虚拟场景的。
AR和AV都属于MR的范畴,即允许真实元素和虚拟元素在不同程度上叠加。
1997年,北卡大学的罗纳德·阿祖玛教授概括了AR的三个典型特点:
由于AR是VR的分支,因此具有和VR相同的技术难点,此外,还有AR自身所具有的挑战性的技术难点:
增强现实对跟踪定位技术的要求不仅包括跟踪定位的精度、数据的刷新率以及系统的延时,更重要的是要实现精确标定虚拟环境坐标系、真实环境坐标系以及用户本身视觉坐标系之间的关系,实现它们之间的精确对准,以及在运动过程中正确的维持这种关系。
虚实场景的融合显示是增强现实系统的核心技术之一。
虽然AR系统对融合显示设备的要求不再局限于虚拟环境的浸没感,但也不是要将虚拟环境和真实环境简单地进行叠加,它还需要解决虚拟和真实环境间的光照一致性、遮挡一致性以及头盔显示器自身的显示分辨率、视场角等多种因素。
按融合显示方式:视频透视式AR、光学透视式AR,以头戴头盔显示器为例进行说明。
视频透射式AR:是由相机获取真实环境的图像或者视频流,计算机通过跟踪定位、融合渲染等技术将所要添加的虚拟信息叠加在相机所拍摄的实时信号之上,从而实现虚拟场景和真实场景的融合,最后在显示屏上呈现给用户。
光学透视式AR:真实场景是用户透过安装在眼前的半反半透镜直接看到的。虚拟场景是将微型显示器上的图像经过光学系统放大,再通过半反半透镜反射进入到用户的眼睛。
从技术原理的角度来看,视频透视式AR和光学透视式AR是完全不同的。
在合成场景的灵活性方面
在显示视场角方面
在时间延时的匹配方面
在光强度匹配方面
在安全性方面
增强现实系统中所需要解决的关键问题之一是视觉一致性问题。
视觉一致性包括几何一致性、光照一致性等,缺少任何一种一致性,都会削弱用户的体验感。
对光学透射式AR头盔的显示设备
为了实现空间位置上的对准,首先需要对用户的眼睛以及AR显示设备所组成的整个系统进行标定。由于光学透射式AR头盔可以直接透过光学的系统用眼睛看到真实世界的场景,计算机是没有办法获取用户视网膜上的图像进行处理的,所以要对光学透射式头盔显示器进行标定,需要额外的借助摄像机,来获得真实场景的图像。
因此,光学透射式头盔显示器的标定技术要解决的就是用户的眼睛、头盔显示器的跟踪系统以及显示系统三者之间坐标系的转换以及模型参数求解的问题。
最经典的手动标定方法是单点主动对准方法(SPAAM:Single Point Active Alignment Method)
SPAAM算法是将头盔显示器的透镜组和用户的眼睛组合在一起作为一个系统来处理,使用的是针孔相机模型来参数化整个标定的过程。用户可以通过控制头显像面上的二维图像点和真实场景坐标系下的三位点进行多角度的匹配来获取标定数据,最后使用多组3D-2D匹配点,来求解一个3×4的投影矩阵参数。
首先,标准的SPAAM是在环境中放置平面靶标来作为被跟踪的目标,靶标中央位置设置一个十字叉,来作为标定数据获取阶段的真实靶标点。SPAAM算法就是为了实现虚拟像面上的十字叉与真实场景中靶标上的十字叉对齐。
四个坐标系:世界坐标系W,头显(跟踪相机)坐标系C,头显像平面坐标系,人眼和头盔显示器光学镜片组合在一起而形成的虚拟相机坐标系E
要实现虚拟像面上的十字叉与真实场景中靶标上的十字叉对齐,需要明确虚拟像面上的十字叉在头盔显示器像面坐标下的二维坐标是如何跟空间中的三维坐标去对齐的。
PE和K是待求解的,将PE和K合在一起,用PG代替表示。
SPAAM就是采用手工对齐Xs和Xw的方式来求解出PG,这样一旦知道了匹配的空间点的坐标,就可以通过跟踪定位的方式知道Pc,进而PG就可以求出来了。
是
是
是
是
是
四、信息获取和显示技术
在虚拟现实和增强现实的应用过程当中,用户带着头戴式显示进行转动,对应视角的图像信息就可以呈现给用户,当用户在虚拟空间中进行移动,也需要对环境信息进行全面感知。
传统四五十度视场角的相机无法满足虚拟现实和增强现实应用的需求。
实现360°成像的一个简单的方案就是使用一台普通相机,绕它的光心进行旋转,可以在三脚架上或者手持使用,在算法上可以通过图像匹配、计算单应、图像投影、图像融合,将一系列照片拼接形成全景图像。
缺点:无法实现动态的视频、拼接过程存在曝光不同、渐晕差异或者是由于抖动而导致的光心不对齐的问题。
传统相机镜头的根据视场角的大小可以分为远摄(长焦)镜头、标准镜头、广角(短焦)镜头(80°以上)。实现更大的视场角的镜头被称为鱼眼镜头。进一步优化,扩大相机的视场角超过180°,达到210°甚至310°,就可以覆盖水平的360°视场。
在透射式镜头前面加入反射表面同样可以实现水平360°成像。反射面型可以是抛物面、双曲面、球面以及高次非球面。
还有一种方案是将反射表面引入光学系统进行优化,并增加反射表面,形成折返式的全景成像系统。
折返式全景系统往往存在中央盲区,除了水平环带的区域、垂直南北极的区域的信息无法获取。针对中央盲区成像,在反射结构件中心区域镀半透半反膜,在成像CCD或CMOS中间区域获得中央盲区的信息,而四周是环形水平的360°的信息。两个区域在视场上有所重叠,以方便图像的拼接。
为了实现全部4Π立体角空间信息的获取,单个相机是不够用的。
可以将两个视场角超过180°的鱼眼镜头背靠背来使用,两个相机交叠的区域要进行拼接融合。
理想情况下全景信息的获取是从一个视点出发,但是通过两个鱼眼镜头进行拼接,两个鱼眼镜头的视点并不重合,会导致不同深度下拼接参数不同,因此,在拼接过程当中,需要预先计算重叠区域场景的深度和视点的位置,针对不同深度场景,用不同的参数进行图像融合,否则就会出现全景图像的缺失或者重复。
但这样的过程会耗费大量的计算资源,因此,在消费产品中,往往选择一个特定的深度,直接使用查找表的方式来进行全景的拼接,而在真实世界当中不在该深度的物体就会出现缺失和重复,因此,在光学系统设计过程中,两个相机的视点之间的距离越小,拼接的效果就会越好。
拼接的过程就是选择一个深度球面,通过空间场景和相机像素之间的对应关系,建立查找表,实现拼接。这些相机可以实现视频的拍摄和实时的拼。
为了获得更高的分辨率,更多的相机被使用进行全景的拼接。
在虚拟现实应用过程当中,深度信息的获取也很重要,在获得全景信息的过程当中,通过设计,使得每个视场范围的场景都有至少两个相机拍到,利用立体视觉的基本原理,实现全景深度的重建,也可以简单地将相机分为两组或多组,组和组之间的光心距离固定,每个组的图像分别进行拼接形成全景图,这样就可以形成多个视点的全景信息。
为了获得更多视角、更逼真的全景信息,光场的概念也被引入到全景的拍摄当中,在获取全景信息的同时,获取空间场景不同视点的信息。
如何实现高逼真三维显示一直以来是虚拟现实增强现实领域的重要技术之一。
真实场景通过人眼成像在视网膜上,再经过人类的视觉感知系统,处理形成三维的深度感知。这种可以引起视觉感知呈现深度感的信息被称为深度暗示。
深度暗示可以分为心理暗示和生理暗示。
三维显示技术就是通过深度暗示来实现用户对三维的感知。
目前,单深度悬浮显示广泛运用于舞台、广告和展览展示当中,这种显示被称为佩珀尔幻想或者是佩珀尔投影,通过一个半透半反镜的反射,使得显示器上的物体形成一个二维的虚像,让用户产生一个悬浮的感觉。半透半反镜的悬浮成像技术,虚像往往是在镜子后边,距离用户比较远。
目前也有很多学者提出用不同的技术手段,实现单深度悬浮显示,如通过旋转的LED阵列快速进行刷新显示,实现图像的呈现;利用回反射的设备或者结构,实现光线的折转。
实际上,生理暗示是人类进行视觉感知的直接要求,而且生理暗示在三维深度呈现的作用方面远大于心理暗示,因此,在探索和研究三维信息获取和显示方法的过程当中,更多地会考虑生理暗示。
在生理暗示的方式当中,双目视差对深度的感知影响最大,因此,目前绝大部分的商用三维显示技术都是基于双目视差的。
原理上,三维显示设备通过系统设计,分别提供给左眼和右眼不同的视差图象,具体实现方法上又分为主动式和被动式。
为了实现裸眼3D显示的效果,需要使用类似于视差栅栏或者柱面光栅的结构,将空间分成不同的视区,在每个视区中,能看到的像素并不重叠,这样可以将对应视差的图像呈现给正确的视区,观看者在正确的位置上就能体验到三维显示的效果。相比于二维显示,分辨率会有所降低。
基于双目视差的深度显示并不能完全实现全部深度暗示,并不完全符合人眼观察真实世界的过程,这样就催生了真实感三维显示的研究工作。
物体处在不同的深度上,人眼聚焦的平面以及双目视差的辐辏获得的深度平面应该是一致的,目前商用的视差型的三维显示系统在空间当中只构建了一个深度平面。眼睛会聚焦到这个屏幕上,三维显示物体通过视差作用让用户双目通过辐辏感知在不同的深度上,这样会导致眼睛的聚焦和辐辏的位置是不一致的。这是人目前观察三维显示获得疲劳感的主要原因。
将真实感三维显示和悬浮成像相结合,可以实现更好的呈现效果。
基于体三维显示、全息显示以及光场显示,结合光学成像,通过大尺寸的光学成像系统,可以将构建的真实感场景成像在空中。
通过定向散射屏或者偏光光线元件,可以实现水平周视的悬浮显示。
头戴式显示(近眼显示)由光学目镜和显示源构成。
光学目镜:将显示源的图像放大成像到远处。
在设计参数上,出瞳越大可以保证眼球在较大范围内移动,出瞳距离决定佩戴的舒适性,视场角、分辨率以及光学目镜的成像质量决定显示的效果。
所以在头戴式显示的设计过程中,我们的目标是在于大的出瞳,长的出瞳距离,大的视场角和高的成像质量。
VR头戴式显示在结构上可分为半沉浸式和全沉浸式。
AR头戴显示根据光学目镜的结构不同,可分为:
光波导的结构:
根据耦出端的不同,光波导的结构可以分为四种形式:
与裸眼三维显示技术类似,绝大部分商业化的头戴式显示产品,在空间中都仅构建了一个显示深度平面,在使用过程中,眼睛就会聚焦到这个屏幕上,通过双目视差的方式,让用户通过辐辏感知在不同的深度上,这样会导致眼睛的聚焦和辐辏的位置是不一致的,与人们观察真实世界是不同的。这是人们目前产生疲劳感的主要因素。
人眼在进行聚焦调节的时候,没有聚焦在物体的深度位置,就会出现离焦模糊。如果让虚拟物体直接成像在视网膜上,无论人眼聚焦到什么位置,虚拟场景的清晰程度不会发生改变,这样可以作为缓解聚焦和辐辏失配难题的方案。
有学者提出一种方案是通过改变光源或者照明系统,使得进入人眼的光束特别细,在人眼晶状体进行调节的时候,离焦模糊并不敏感,似乎是光线不经过人眼晶状体成像,直接投影在视网膜上。这种方案的结构和眼科学的麦克斯韦观察法相似,因此也被称为麦克斯韦观察法头戴式显示技术。
由于视网膜投影的方案在人眼入瞳位置形成的光斑远小于人眼的瞳孔大小,因此,当使用过程中,如果人眼没有对准这个光斑,或者眼球转动,就会导致虚拟图像发生缺失。
学者提出很多方案来解决这个问题,如通过眼球跟踪设备来追踪眼瞳的位置;或者通过机械或电子控制将这个聚焦广版移动到眼瞳的位置;也可以在空间中通过时分复用或者空分复用的方式,形成多个聚焦光斑,通过每一个聚焦光斑,都可以看到全部的虚拟图像。
多焦面头戴显示
时分复用的多焦面显示:通过动态元件快速刷新深度位置实现了多个深度的重建。
空分复用的多焦面显示:多屏通过半透半反结构在眼前实现多深度呈现。
通过多深度焦面的方式,实现体三维成像的效果,只有两三个深度平面只能缓解辐辏聚焦失配的问题,如果想要真正实现真实感呈现,需要更多的深度重建。
光场头戴显示
在出瞳位置重建三维场景的密集光场,通过微透镜阵列或者微孔阵列等元件调制形成光场。
在光场头戴式显示方法的实现过程中,显示器上的像素不仅用于空间分辨率的呈现,而且为了重建深度,也需要实现角度分辨率的再现。分辨率并不高,有学者使用迭代优化多层液晶显示的方式来优化空间光场,来提高显示分辨率或引入动态光学元件,通过时分复用的方式来提高分辨率。
全息头戴显示
目前,全息显示元件的显示面积和衍射角度都较小,而这两个物理量的乘积在实现真实感头戴显示的过程中往往不会增加,因此,想要获得较大的视场角,往往它的出瞳直径就很小,目前还很难得到一个商业化的效果。
在光学目镜的设计过程当中,不仅要考虑到人眼的观察区域(出瞳),而且需要优化三维场景的成像质量。
未完待续
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。