二、建模技术
用户与虚拟现实系统的交互都是在虚拟场景中进行的,用户沉浸在虚拟场景之中,所以虚拟场景的建模是虚拟现实技术的核心内容。虚拟现实系统的建模与传统的图形建模有相似之处,但虚拟场景是动态的并且能按照自身的规律产生复杂的行为或与用户交互。因此,除了三维模型建模之外,虚拟现实系统中的建模还包括物理建模和行为建模。三维建模仅仅是对虚拟现实环境中物体模型几何形状的表示,而物理建模则涉及物体的物理属性,行为建模还会涉及三维模型的物理本质及其内在工作机理。
(一)三维建模技术
目前,三维建模技术主要有基于几何的建模(Geometrical-Based Modeling)和基于图像的建模(Image-Based Modeling)两种。
1.基于几何建模
基于几何的建模技术通过计算机来表示、控制和输出几何模型,主要处理的信息分为几何信息和拓扑信息两类。几何信息指几何模型在空间中的形状、大小、位置等,拓扑信息指拓扑元素(顶点、边、面)的数量及其连接关系。虚拟现实系统要求物体的几何建模必须快捷和易于显示,这样才能保证交互的实时性。
目前,在微观上,常用的几何模型方法包括面片表示法和体素表示法(图2-6)。面片表示法用多边形面片表示模型的表面形状,一般采用三角面片。这种方法操作简单、技术成熟。体素表示法将几何模型细分为三维空间中的微小颗粒,这些颗粒可以是球体、四面体、立方体等。体素化建模需要保持拓扑的合理性和一致性,既不能出现拓扑自相矛盾,又要确保物体的离散拓扑和物体的连续模型具有相同的拓扑结构。体模型比面模型能够描述模型的内部信息,便于表达模型在外力作用下的特征(变形、分裂等),但计算时间和空间复杂度较高。
图2-6 面片表示法和体素表示法几何建模
在宏观上,几何模型的表示方法包括层次表示法和属主表示法。
层次表示法利用树形结构来表示物体的各个组成部分。树形结构不仅提供了一种简便自然的分割复杂物体的方法,而且对模型的修改也十分有利。以人的手臂模型为例,层次表示法可以将其分割为上臂、下臂、手掌和手指等层次节点。当上臂节点移动时,将会带动手臂模型的所有子节点(下臂、手掌、手指)一起移动;而当手指节点移动时,只要描述该节点相对于其父节点(手掌)的方位即可。
属主表示法的思想是,让同一种对象拥有同一个属主,属主包含了该类对象的详细结构。当要建立某个属主的一个实例时,只要复制指向属主的指针即可。以汽车的车轮模型为例,一辆车的所有车轮应该具有相同结构。因此,可以建立一个车轮的属主模型,以后每当需要制作车轮时,只要创建一个指向该属主的指针即可。
手动建模可以通过OpenGL, VRML等专业建模语言或AutoCAD,3DS Max, Maya等建模软件来完成。手动建模的成本较高,时间较长,操作人员必须对相应软件非常熟悉。利用三维扫描仪等图形硬件也可实现自动三维建模,需要注意的是,这些软件和硬件都有自己特定的文件格式,在导入虚拟现实系统时需要做适当的文件格式转换。
2.基于图像建模
基于图像的建模(Image-Based Modeling)目的是研究如何从图像中恢复出物体或场景的三维几何信息,并构建其几何模型。根据计算机视觉理论,图像是真实物体或场景在一定的光照环境作用下,通过相机镜头的光学投射变换得到的结果。图像中包含了大量的视觉线索信息,如轮廓、亮度、明暗度、纹理、特征点、清晰度等,而基于图像的几何建模研究如何通过运用上述视觉线索信息,并结合估计得到的相机镜头与光照环境参数,进行光学投射变换的逆变换运算,恢复出物体或场景的三维几何信息,并得到其三维几何模型表示的过程,主要方法如下所述。
1)基于立体视觉的方法
此方法利用三维视觉技术从已知的参考图像中合成相对于新的视点的图像。它从已经获得的2D图像中恢复形体的3D几何特征和光照、材料特性,由于采样图像中已经包含了当时的几何、光照、材料的综合效果,所以利用这些信息,可以合成不同视角图像的信息,在虚拟现实环境中从不同的角度来观察物体。使用这种方法不存在大量的内存冗余,但是需要建立很多的特征对应(比如特征点的对应),而且处理的数据量过大,实现起来有一定的困难。
2)基于全视函数的方法
基于全视函数的方法也称为基于全景函数的方法。它把空间任意点、任意时间和覆盖任意波长范围的可见光束命名为全景函数,它是基于图像的具有水平360°及上下空间的图形组织环境,是一种全新的图像信息模式,它可以完整地表达周围环境的信息,相当于人们从一个固定点向四周转一圈所看到的景象,如图2-7所示。此方法建模简单,但是由于现有技术不成熟,对图像噪声比较敏感,所以为了保证图像立体匹配的正确性,不仅需要用户指定一些对应关系,还要求对输入图像密集采样,使相邻的两幅图像间的差别很小。
图2-7 360°全景图
3)基于拼图和分层的方法
基于拼图和分层的方法就是对于采样的图像(这些图像通常具有很多的重叠区域),把这些图像统一投影到某一个曲面上,然后确定两相邻图像间的重叠范围,最后按照特定的算法将它们拼接在一起,而且拼接时候一般要求是无缝拼接,达到最终得到新视图的要求。该方法主要用于拼接柱面全景图,它利用图像的相关性原理寻找最大相关性来对齐重叠图案。该方案简单、有效,但有时因为重叠区域特征不明显,需人工干预对齐,导致对齐误差。
4)基于图形和图像的混合建模技术
基于图形与图像的混合建模技术可以集两种建模方法的优点于一体,目的是解决人与虚拟场景中物体自然交互的问题,是混合现实实现的基础。基于图形图像的混合建模主要涉及虚拟几何实体对象与虚拟环境的空间关系与透视匹配、亮度及阴影的光照匹配、融合与动态掩模等技术。受传感设备和传感器技术发展水平的制约,该方法在实现上有待于进一步完善,完善后的混合建模技术将是未来的图像建模技术的主导。
(二)物理建模技术
虚拟现实系统中的模型不是静止的,而是有一定的运动方式。当与用户发生交互时,也会有一定的响应方式。这些运动方式和响应方式必须遵循自然界中的物理规律,例如,物体之间的碰撞反弹、物体的自由落体、物体受到用户外力时朝预期方向移动等。上述这些内容就是物理建模技术需要解决的问题,即如何描述虚拟场景中的物理规律及几何模型的物理属性。物理建模技术需要重点解决如下问题。
(1)设计数学模型。数学模型是指描述虚拟对象行为和运动的一组参数方程,包括运动学方程和动力学方程。运动学方法是通过几何变换,如物体的平移或旋转等来描述运动。在运动控制中,无须知道物体的物理属性。在关键帧动画中,运动是通过显示指定几何变换来表现的。首先设置几个关键帧,用于区分关键的动作,其他动作根据各关键帧可通过内插等方法来完成。由于运动学方法产生的运动是基于几何变换的,复杂场景的建模将显得比较困难。
动力学仿真法运用物理定律而非几何变换来描述物体的运动。也就是说,物体的状态是通过物体的质量和惯性、力和力矩以及其他物理作用计算出来。这种方法更适于物体间交互作用较多的虚拟环境建模。
(2)创建物理效果。对虚拟对象创建物理效果的方法是从几何模型出发,将时间、长度、质量和力等过程抽象处理后,与图形学中的元素,如帧、绝对坐标、节点和面等结合起来,搭建出一个表现基本物理量的三维场景。具体来说,首先确定物理过程,即作用在虚拟对象上的物理现象,接着利用软件仿真算法描述上述物理过程,最后通过计算机程序语言实现上述仿真算法,由此表达出模型质量、密度等物理属性和力的概念。
(3)实时碰撞检测。碰撞检测技术要能随时检测虚拟场景中是否有碰撞发生,还要检测碰撞发生的位置,以及根据数学模型和物理属性计算出碰撞发生后的反应。虚拟现实系统要求碰撞检测具有较高的实时性和精确性,所以其技术难度很高。目前,较成熟的碰撞检测算法有层次包围盒法和空间分解法等。
层次包围盒法的基本思想是利用体积略大而几何特性简单的包围盒将复杂几何对象包裹起来。在进行碰撞检测时,首先进行包围盒之间的相交测试,只有包围盒相交时,才对其所包裹的对象做进一步求交计算。在构造碰撞体的包围盒时,若引入树状层次结构,可快速剔除不发生碰撞的元素,减少大量不必要的相交测试,从而提高碰撞检测效率。比较典型的包围盒类型有沿坐标轴的包围盒、包围球、力向包围盒、固定方向凸包等。层次包围盒方法应用得较为广泛,适用于复杂环境中的碰撞检测。图2-8显示了基于包围盒碰撞检测方法的效果。
空间分解法是将整个虚拟空间划分成相等体积的小单元格,只对占据同一单元格或相邻单元格的几何对象进行相交测试。比较典型的方法有K-D树、八叉树、BSP树、四面体网、规则网等。空间分解法通常适用于稀疏的环境中分布比较均匀的几何对象间的碰撞检测。
图2-8 基于包围盒的碰撞检测方法
(三)行为建模技术
虚拟环境中物体的行为一般可分为物理行为和智能行为。物理行为一般指研究物体运动的处理,通过运动学或动力学描述物体运动轨迹或姿态。智能行为一般指具有生命特征的物体所表现出来的反应、思考和决策等行为,这种物体也被称为虚拟角色。虚拟角色的行为往往会体现出不确定性。对智能虚拟角色的不确定性行为进行建模,可以增强虚拟现实系统的真实度和可信度。图2-9是几个著名VR游戏中的虚拟角色。
图2-9 虚拟环境中的智能虚拟角色
目前,行为建模技术受到高度重视,发展起了许多不同的建模技术,主要有基于有限状态机(FSM)的建模方法、基于规则系统(RBS )的建模方法、基于控制论的建模方法和基于智能体(Agent)技术的建模方法。行为建模研究的核心问题是如何生成真实可信的智能行为,由于虚拟环境的复杂性,使得一般建模方法很难适应行为建模的需要。为了满足虚拟角色能自主或半自主行动,并能够与环境和其他智能体交换数据且能模拟人的交互行为进行协作和协商的目标,目前越来越多的系统采用基于智能体或多智能体的建模方法。
智能体具有自治性、反应性、面向目标性(主动性)和社会性四个主要特性。与传统的其他仿真建模方法比较,智能体技术采用“自底向上”的建模方法,系统没有集中式的控制,智能体通过相互间的协作和竞争,独立追求实现自己的目标,其结果是一个动态变化的环境,很适宜于对复杂自适应系统的建模与仿真,是虚拟环境中进行行为模拟的理想方法。
为了利用认知智能体和反应式智能体的优势,同时简化设计,采用复合智能体体系结构。结合智能体的实现特点,以虚拟战场环境中计算机生成兵力(Computer Generated Forces, CGF)实体为例,其智能行为框架如图2-10所示。
图2-10 智能体框架结构
行为模型分为感知、通信协调和执行三个基本模块,感知代表对虚拟战场环境的观察和认知能力,通信模块代表与环境内外其他智能体的通信,行动模块通过一系列的行为模式实现各种动作,表现为一系列的动作序列。人的智能因素通过智能体内部环境状态和决策规划模块实现,内部环境状态既保存虚拟实体对外部环境认知的符号表示,又表示个性特点和能力。