张泊平,女,硕士,副教授,中国计算机学会高级会员,毕业于郑州大学电子信息工程学院。现任许昌学院信息工程学院数字媒体技术系主任。长期从事数字媒体技术、虚拟现实等领域的科研和教学工作。近年来主持省部级项目10项,发表学术论文30余篇,出版专著2部。获得河南省教学大奖赛一等奖,获得河南省优秀教师、教学标兵、优秀青年骨干教师等荣誉称号。
第3章虚拟现实三维建模技术
在虚拟现实系统中构造一个具有真实感的三维虚拟场景非常重要。这就需要建设三维模型,它是指在三维空间中对场景表面以及地表以上的各种自然与人工地物三维模拟表现,以便产生与真实场景相同体验、感知与印象的数字景观。因此,三维场景模型建立的任务,是依据不同类型地物的各自特点,建立能够反映各自特征的三维模型,以尽可能真实地表现区域真实景观。
三维场景需要由多种数据来进行构造,包括数字化高程模型、遥感影像数据、二维矢量数据、图片数据、三维模型数据等。三维场景建造质量的高低直接关系到实时三维漫游的效果。要在计算机中模拟现实世界,就必须构建出在外形、光照、质感等各方面都与真实对象相似的对象模型。
3.1精确三维建模方法
虚拟现实建模技术应用主要是考虑到模型的精确性,为了准确真实地对工程施工过程进行仿真模拟,就必须使虚拟模型满足工程应用需要的精度。为了获得足够精确的DWG 模型,一般采用逆向建模技术进行模型重建。
3.1.1逆向建模技术
逆向建模主要通过三维扫描技术来获得实体表面的三维点云数据并得到对应点的纹理来构建虚拟现实模型,从而利用计算机技术对虚拟模型进行分析、模拟。逆向建模过程主要包括4个环节,分别是实体工程点云数据采集、点云数据处理、模型重构、模型修饰,如图31所示。
图31逆向建模过程
1. 工程点云数据采集
目前,工程点云数据主要有接触式和非接触式两种采集方式。
接触式主要使用三坐标测量机进行,通用性强,精度相对较高,对所测物体的材质和表面色泽无特殊要求,已经广泛应用到电子、机械制造、汽车和航空航天等领域。但在测量柔软物体时有很大局限性,而且会损伤仪器和被测物体,对工作环境要求也很高。
非接触式主要是利用某种与物体表面发生相互作用的物理现象来获取实体的三维信息。利用光学原理发展起来的三维测量形状的方法应用*为广泛,如三维激光扫描仪投影光栅法、激光线结构光扫描、数字照相系统等方法,以及新出现的切层法、计算机断层扫描(CT)法等。非接触式测量具有测量速度快以及不用和实物接触等优点,在实际中得到广泛应用,它利用三维激光扫描仪采集点云数据,在进行测点布置时要遵循以下原则。
(1) 扫描区域要在扫描仪控制的角度和量程范围内。
(2) 测点密度分布均匀、合理。
(3) 每站扫描目标必须有公共区域和明显的特征点以便后续模型拼接。
(4) 高温或者大风等天气不宜进行数据采集。
(5) 在没有明显的特征点时可以做合适的站标作为特征点。
(6) 测点*好布置在硬化路面上,保持扫描仪稳定。
虚拟现实理论与实践第3章虚拟现实三维建模技术2. 三维模型重构
任何测量设备在进行数据采集时,都会有一定的范围和距离限制,同时由于非扫描目标遮挡,特别是对大型的土建工程进行三维扫描,一次扫描是不可能获得较为完整的点云数据,因此,就必须对扫描目标进行多次、重复的测量,获得多组扫描数据结果,利用相关点云处理技术或相关软件对采集的数据进行拼接、整合、模型接缝处理、非扫描目标点云数据删除等数据处理,将数据统一到同一坐标系统下,从而构建目标对象的三维点云数据模型。
3. 点云数据处理
目前使用的扫描仪种类繁多,输出数据的质量参差不齐,因此需要通过编辑以获得高质量的数据。此外,即使数据的质量很高,仍然需要在曲面重构之前对这些数据进行编辑,一般需要完成包括噪点删除、数据调整、数据光顺、区域修剪、复制、数据密度修改、尖角保留等步骤方可使用,数据处理过程要结合实际情况,同时依赖于操作者的经验;特别要避免因初始数据改变而造成得形状扭曲和精度降低等问题。一般要进行以下几个方面的工作。
(1) 噪点删除。
噪点大致可分为两类: *类,扫描目标上的奇异点集;第二类,非扫描目标的点集,即所在目标之外的对象点云数据。在修改*类噪点时,需将奇异点调回至“原位”,而第二类噪点需要做删除处理。删除噪点的方法通常是先通过图形交互,采用手工删除处理,但此法不适用于数据量大的点云数据处理。除此之外,还可以采用下述方法来删除噪点。
① 将测量点沿特定方向平移,消除数据波动,修改范围一般由用户通过图形交互设定。
② 考虑两个连续点之间的角度,若某点与它前一点的角度超过某一规定值,则剔除该点。
③ 把奇异点移到平均位置。
(2) 数据插补。
受测量设备和测量方法的影响,必然产生测量数据点分布密度和范围不均的结果。
在扫描盲区,缺少测量数据,图形拟合时容易失真所以在重构模型时需要对数据进行加密、插值,否则会产生较大的波动。因此,对于某些局部数据的不足,可用相邻点插值和屏幕方式等方法来进行插补。
(3) 数据点精简。
数据精简可以根据一定要求精简测量点的数量来提高点云数据在曲面重构时的效率和质量。精简方式要根据点云类型加以选择,*小包围区域法和等分布密度法适用于网格化点云数据精简。随机采样方法适用于散乱点云数据精简;而等间距精简、量精简等和倍率精简等方法则适用于扫描线点云和多边形点云数据精简。
(4) 数据平滑。
数据平滑通常采用标准平均(Averaging)、高斯(Gaussian)等滤波算法。平均滤波算法采用数据点的统计值的平均值,在消除数据尖楞时效果较好;若要较为完整地保存原始数据形貌,则采用高斯算法较好,因为其对数据的平均化小。实际操作时,需点云质量及以后建模要求灵活选择滤波算法。
(5) 数据分割。
数据分割是根据实物外形曲面的组成类型,将同一子曲面类型的数据划分为互不重叠而又特征单一的数据组,为后续模型重建提供方便。目前数据分割方法主要有: 基于边、面、群簇的方法。
① 基于边。
主要是根据数据点的局部几何特性集中检测到边界点后对边界点进行连接,再根据检测的边界将整个数据分割为多个独立的点集。不过,该方法计算量大,过程也相对烦琐。
② 基于面。
该方法是根据指定的曲面方程通过自下而上或自上而下的方法迭代拟合数据点集。自下而上的方法是从特征点开始拟合,按某种规则不断加进周围点;自上而下的方法是假设所有点属于同一个面,拟合过程中误差超出要求时,则把原集合分为两个子集。此方法的难点在于分割阈值的选择和控制,为了简化拟合过程可采用直线分割。
③ 基于群簇。
该方法通过群簇技术把局部几何特征参数相似的数据点聚集为一类,但聚类方法需要预先指定分类的个数,容易出现细碎而片,往往要对碎片进一步处理。
(6) 冗余数据。
随着测量精度要求的提高,三维激光扫描仪获取的点云数据包含了大量的冗余数据,必须对数据进行筛选和压缩处理。一般的筛选和压缩方法就是设定一个*小距离,然后沿扫描线方向比较相邻两点的距离,小于阈值的就删除;还可以连接扫描线首末两点,从中间点中选取与两点距离*接近的点作为中断点,然后以*点与中间点之间、中间点与*后一点之间重复上述过程,直到所求的距离小于设定阈值,然后再将点重新排序即可。斜率法和曲率不连续法也常用作数据点的判断筛选方法。
4. 三维模型数据导出与AutoCAD导入
目前通过三维激光扫描仪获得的海量点云数据信息,可以通过扫描仪本身的软件进行数据的格式转换,转换到的格式如XYZRGBI、3DV、BLF、IVA、PTX、RAW、XYZ等格式。本系统针对海量点云数据的转换格式XYZRGBI、3DV、BLF、IVA、PTX、RAW、XYZ分别进行了的格式研究,进行转换生成DXF标准格式,提供AutoCAD使用。其转换流程如图32所示。
图32三维模型转换流程3.1.2AutoCAD等其他软件三维建模
基于CAD的建模方法是采用AutoCAD、3ds Max等建模软件建立三维城市模型,三维模型已经成为三维场景的一个重要数据来源。一个三维模型由一个或多个多边形模型构成,它能够表达建筑物详细的几何特征。在CAD系统中,物体三维模型的信息是通过对图形进行实体拉伸和计算各种设计参数来实现的。CAD系统在三维空间数据处理方面的应用已经取得较大的进展,其在图形处理与三维建模方面具有独特的技术优势,基于CAD建模的优点是可以逼真表示规划设计成果的精细结构和材质特征,这种方法可以达到较高水平的细节程度,但缺点是CAD三维模型的建模过程包含复杂的人机交互过程和大量的手工操作,建模时间长、成本高。
3.1.3基于遥感影像的三维城市建模方法
利用数字航空摄影系统进行三维量测和成图是目前城市三维数据采集的核心方法。基于遥感影像的建模方法是利用立体影像数据和数字摄影测量技术,根据影像间的相互关系得到地物点坐标,建立数字地表模型,然后通过纹理映射,建立建筑物模型。遥感影像数据能够提供下列数据建筑物的三维几何模型和数字正射影像。数字摄影测量系统的推出为三维城市数据的获取提供了经济、快捷的方法,摄影测量方法使得同时获取大量复杂的三维城市模型之几何信息和纹理信息的自动化成为可能,特别是随着近年来高分辨率遥感技术和计算机图形图像处理技术的发展,数字摄影测量被普遍认为是当前*适于用来获取大范围高精度三维城市模型数据的主要手段。但是,基于遥感影像建立的三维建筑模型不能详细描述建筑物表面所有细节和特征,难以满足用户近距离观察和室内漫游的需求。因此该方法在城市初次建立三维空间模型时可考虑使用。
3.1.4基于激光、雷达的建模方法
随着GPS和惯性导航系统(INS)技术的不断成熟和发展,利用激光、雷达等技术快速获取建筑物平面和高度数据的方法日益成熟并得到快速应用。*近几年,激光扫描系统在多等级三维空间目标的实时获取方面取得了较为广泛的应用。根据搭载平台的不同,激光扫描系统可以分为机载激光扫描系统、车载激光扫描系统和地面激光扫描系统,后者往往又称为近距离激光扫描系统。将地面与车载激光扫描系统用于三维城市重建和局部区域空间信息获取,已经成为激光扫描技术发展的一个重要方向。
3.1.5图形数据格式转换
由于虚拟现实场景多是基于一些虚拟现实平台,国外的如Unity3D、Quest3D、Virtools等,国内的如VRP、Convers3D等来实现的,而这些平台所支持的比较好的模型格式多为3DS、OBJ等,为了更好地在这些平台运行建立好的三维模型就需要进行数据格式转换。本书虚拟现实场景采用国际知名虚拟现实引擎Unity3D,Unity3D的建模工具采用3ds Max,而3ds Max的标准模型数据格式为3DS,采用逆向建模技术建立三维模型时可以先利用三维扫描仪获得三维数据并结合AutoCAD进行建模,*终得到模型格式为DWG,必须转为3DS,才能进行模型优化和材质处理,进而得到较为真实的纹理。DWG文件是AutoCAD绘图文件格式,可以导入3ds Max会自动将其转换为3DS格式。
3.2辅助三维建模方法
辅助三维建模方法分为使用三维软件手动建模方法和程序建模两种,下面以3ds Max为例进行说明。
3.2.13ds Max人工建模
3ds Max人工建模方法大体可以分为几何体建模、修改器建模、网格建模、NURBS建模、面片建模、多边形建模。各种建模方法各有优缺点,在三维建模时选择合适的建模方法有利于高效地进行建模,下面就这几种建模方法做一简单介绍。
(1) 几何体建模。在3ds Max中几何体分为标准几何体和扩展几何体,标准几何体主要有Box(长方体)、Sphere(球体)、Cone(椎体)、Cylinder(圆柱体)、Torus(圆环体)等;扩展几何体则有Hedra(异面体)、Capsule(胶囊体)、Prism(软管)等,利用已有的几何体可以实现参数化和快速构建场景中规则的物体,配合修改器可建立更为复杂的物体。
(2) 修改器建模。所谓修改器建模就是指给已创建的对象添加相应的修改器命令,然后对修改器的相关参数进行修改已达到编辑效果。其功能主要有以下几点。
① 改变对象的几何造型,如Bend、Taper 修改器。
② 改变对象的创建参数。
③ 将对象转换为可编辑物体,如Edit Mesh、Edit Poly 等修改器。
④ 对对象的次物体进行编辑。
(3) 网格建模。创建了几何体后,可以给几何体添加“编辑网格”命令或者直接转换为EditMesh,即“可编辑网格”物体,这样几何体变为一个网格对象,可以对网格对象的点、边、面、多边形等次物体进行编辑。网格对象有点、边、面、多边形和元素5个次物体级别,可分别对其进行点的位移变换操作、焊接、切角,边的切角、分割,多边形的切割、挤压和倒角等,这些次物体的编辑是网格建模的关键。
(4) NURBS建模。NURBS是NonUniform Rational BSplines(非均匀有理B样条曲线)的缩写,是纯粹的计算机图形学的数学概念,是用数学表达式构建的,NURBS数学表达式则是一种复合体。NURBS是一种非常优秀的建模方式,NURBS能够比传统的网格建模方式更好地控制物体表面的曲线度,从而能够创建出更逼真、生动的造型。
NURBS曲线和NURBS曲面在传统的制图领域是不存在的,是为使用计算机进行3D建模而专门建立的。在3D 建模的内部空间用曲线和曲面来表现轮廓和外形。
(5) 面片建模。面片是多边形网格和NURBS之间的一种建模类型。在许多建模方法里,面片优于普通的网格对象。面片的边是Bezier曲线,因此面片可以变形。面片对象的另外一个优点是能有效地表示对象的几何形状。因为面片网格只在每个面片的角上有一个控制顶点,而每个面片能包含若干个面。
(6) 多边形建模。这种建模技术,用三角形、矩形或其他多边形等小平面来对曲面进行模拟,从而简单、方便和快速地构建各种形状的三维物体,但是在构建光滑曲面时显得稍有不足,比较适合于形状规则的物体的构建。如果对模型结构的把握程度和对模型网格分布控制得较好的,此种建模应该是虚拟现实建模的理想选择。
3.2.23ds Max程序建模
MaxScript语言是为了扩展3ds Max功能而专门设计的一种脚本语言,是面向对象编程语言中的一种。MaxScript可以运用各种数学工具来完成高级复杂的程序设计任务,可以对含有大量对象的集合进行操作。例如,在复杂的场景中选择物体,可以把大量物体放置在精确的位置上,如在山或路边放置一些树木,使用MaxScript 操作起来非常方便。
3ds Max程序建模是指利用3ds Max自带的脚本语言MaxScript 实现精确建模,但其应用范围相对人工建模要狭窄很多,主要用来创建一些形状规则、结构简单、多重排列的单体模型,同时还可以对其位移、位置、角度、缩放等进行参数化精确控制,这是其相对于人工建模的一大优势。MaxScript建模为3ds Max精确建模提供一个很好的发展方向,也为3ds Max实现工程精确建模的应用提供一个可能的平台。
3.3三维建模纹理数据的获取
除了建筑物的几何模型,构建三维建筑物还需要纹理数据。生成真实感的三维模型需要在城市地物模型表面粘贴真实的纹理影像。获取纹理数据的方法除了利用贴图素材库和实地拍摄采样,*经济的方法是从遥感影像中提取。建筑物模型表面纹理影像主要来源于航空影像,由于航空影像是从空中向下投影,因此屋顶纹理可以很方便地在航空影像上直接提取。而建筑物的墙面在航空影像上却是不可见的,此时则需要采用实地近景拍摄的影像。
建筑物的三维纹理获取主要依靠数码相机拍摄,在拍摄的过程中要注意以下几点。
(1) 选择天气比较晴朗的天气拍摄,这样获取的纹理数据比较美观。
(2) 尽量拍摄建筑物的正面,便于下一步的修图工作。
(3) 采集完整的建筑物的纹理,如果某些面有遮挡物,需要换视角拍摄一幅以上的影像,后期再进行拼接处理。
(4) 为了保证后面纹理处理时对建筑物整体结构的把握,对每一地物必须在不同方向拍摄一定数量的全貌照片。
(5) 纹理的文件名在整个数据采集区域必须是*的,因为纹理必须与三维模型的每一个面一一对应。
纹理数据获取后,接下来需对三维建筑纹理数据进行处理。一般采用Photoshop等软件对图像进行复原和裁剪,确保建筑物主要立面的纹理完整真实,减少降低图像清晰度的操作,消除地物纹理阴影的遮挡,并保持工作区内所有纹理影像色调的均衡。在处理贴图时应该注意纹理数据的大小与命名原则。一般而言,一个建筑物建模完成需要几种甚至十几种纹理,如果每一种纹理数据增加一点,那么整个三维模型增加的就是海量数据,影响系统后期的管理与应用。但纹理数据过小又会影响建筑模型的精细质量。因此,在实际工作中通过认真的研究,确定纹理数据大小的原则为简单的纹理数据应小于20K,如单色的墙面、瓦等纹理,这类纹理在粘贴纹理时主要用平铺的方法,所以像素的大小应设置为2n×2n,复杂的纹理单张数据*好不超过1024×1024。
接下来就需要考虑如何将纹理映射到相关的建筑物上,纹理映射是用图像来替代物体模型中的可模拟或不可模拟细节,纹理影像映射也是至关重要的一个环节。纹理映射技术是把二维的纹理图像映射到三维物体表面,其关键点就是建立物体空间坐标与纹理空间坐标之间的对应关系。在进行各种类型三维地物的面与纹理影像映射过程中,只有确保纹理数据与面映射的正确性,才能真实地模拟现实建筑物,从而提高显示的逼真度和速度。纹理映射技术是一个简化复杂几何模型的有效办法,可以生成真实的视觉效果,真正做到虚拟现实。
3.4材质灯光技术
在场景中赋予物体贴图纹理是为了再现物体原貌,然而这种再现与现实中的物体还有差距,因为在现实世界中所有物体都有是光照的,光源的不同物体展现的面貌也就不同。这一思想应用到三维建模技术上是为了场景更加真实,所以场景中不仅要给物体添加贴图,也需要给场景建立灯光,这就是材质灯光技术。在三维场景里灯光不仅仅是为了照亮物体,而是要利用灯光增强物体的纹理和真实感,有时灯光也烘托一种气氛。所以不同的物体和场景要进行不同的贴图和灯光设置,比如白天和夜晚、阴天和晴天、玻璃、水、木质、石头等。
如果说三维世界的肉体是建模,那么三维世界的灵魂则是灯光。灯光在弥补模型细节不足、增强艺术氛围中始终扮演着不可或缺的角色。3ds Max默认场景有两盏灯,是帮助人们创建模型的,当人们创建新的灯图33灯光设置
光后,默认两盏灯则会自动关闭。3ds Max共由8种灯光组成,其中使用频率*高的是目标聚光灯和泛光灯。目光聚光灯有发射点和目标点,呈锥形向外反射,犹如日常生活中手电筒的发射光线。目标平行光也包括发射点和目标点,灯光呈圆筒形发射。泛光灯的光线向外发射,犹如灯泡或太阳光。天光则与泛光灯相异,灯光从360°方向向内发射,犹如阴天的天光。由于是反方向的向内发射,天光则没有角度与位置差异。例如,某室内灯光做如下设置,室外合适的位置放置一个泛光灯,将阴影设置为光线跟踪,适当调整亮度,如图33所示。
……