我们在虚拟环境中看到的三维场景是怎么来的?为什么我们玩VR会眩晕、呕吐?学习完本节课的实时动态绘制技术的相关知识,你们就会有答案了。

什么是实时动态绘制技术?

实时动态绘制技术是指利用计算机为用户提供一个能从任意视点及方向实时观察三维场景的手段,它要求当用户改变视点时,图形显示速度必须跟得上视点的改变速度,否则就会产生迟滞现象。实时动态绘制技术所期望的是图像帧速高而等待时间短。

三维立体图形所含信息量比二维平面图形要大得多,特别是在进行消隐、浓淡、阴影及纹理等处理时,都必须通过大量、快速的计算来实现,而且虚拟环境越复杂,每秒产生的帧数就越少。因此,当生成虚拟环境的视图时,必须要设计出好的数据空间和视频图像,使计算机系统尽快运行,每秒生成足够数量的新帧,从而保证系统刷新频率不低于20~30帧/秒。

此外,等待时间是实时动态绘制技术的另一个关键指标,它指用户动态的开始与在显示器上出现这一动作的响应反馈时间的时长。除了与图像帧速有关外,等待时间还要再计入跟踪定位系统的过渡时间以及应用程序的运行时间。对于VR系统来说,如果等待时间过长,新视点场景就不能及时更新,会产生人动景未动,或人未动而景动的视觉交叉错位现象。这不但大大降低了用户的沉浸感,严重的还会产生“仿真病”,即由于人脑对于视觉与体感上的差错无法协调而导致出现眩晕、呕吐等症状。

分为基于图形和基于图像的两种绘制技术

1、基于图形的实时动态绘制技术

在VR系统中,为保证几何图形的实时快速生成,至少要求图形的刷新频率不低于20~30帧/秒,它取决于画面的照明度、阴影、纹理和图形的复杂度等因素。因此,如何选择合适的算法来降低场景的复杂度是关键问题。目前用于降低场景复杂度、提高实时动态绘制速度的常用方法有场景分块、可见消隐与细节选择等。

【场景分块】是指把一个复杂的场景划分为多个相互之间几乎或完全不可见的子场景。例如可以把一栋建筑物按房间分为多个子部分,当用户在某个房间浏览时,只能看到房内场景和与之相连的房间,而与它相距较远和其他楼层的房间场景则处于不可见状态。这样系统就能大量减少在某一时刻需要显示的多边形数目,从而有效降低可视场景的复杂度。

【可见消隐】在三维场景的绘制过程中,基于给定的视点和视线方向,决定场景中哪些物体的表面是可见的,哪些是被遮挡而不可见的,称为场景的可见消隐。用此方法能使系统仅显示用户当前能看见的场景,与场景分块区别是:场景分块仅与用户的所处场景位置有关,而可见消隐则与用户的视点密切相关。

【细节选择】即为每个事物建立多个相似的模型,不同模型对物体的细节描述不同。对物体细节的选择越精确,模型就越复杂。VR系统根据物体在屏幕上所占区域的大小及用户视点等因素自动地为各物体选择不同的细节模型,从而减少所需显示的多边形数目。此方法可用于封闭空间模型也可用于开放空间模型。

2、基于图像的实时动态绘制技术

用图像合成代替几何建模来创建复杂场景,不但真实感强,而且整个过程都可以在二维空间中进行,其绘制时间不取决于场景的复杂度,而只与显示分辨率有关。目前基于图像的绘制技术主要有全景技术和图像的插值及视图变换技术两种,此外还有基于分层表示及全视函数等方法。

【全景技术】是指在一个场景中的一个观察点,用相机每旋转一下角度就拍摄一张照片所得到的一组照片,再在计算机中采用工具软件拼接成一个全景图像,适用于桌面式系统。全景技术建模速度快,但一般一个场景只有一个观察点,所以交互性较差,只能在指定的观察点进行漫游。

【图像的插值及视图变换技术】根据不同视察点所拍摄的图像,交互地给出或自动得到相邻两个图像的对应点,采用插值或视图变换的方法,求出对应于其他点的图像,生成新的视图,可实现多点漫游的要求。

转自 VR必修课