三维人体建模与显示

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单目视觉测量的人体建模与显示

盛光有1,姜寿山1,欣2

(1.工程大学电子信息学院,710048;

2.工程大学服装与艺术设计学院,710048 )

摘要:以一种基于单目视觉测量原理的三维人体扫描装置获得的人体数据为来源,运用三角面片法构建人体表面,并把人体模型保存为一种标准的模型格式文件OBJ文件,获取了三维人体模型。然后在Visual C++的编程环境中采用OpenGL (Open Graphics Library)作为三维图形接口,编程实现了三维人体模型,获得了可视化的人体模型。

关键词:三维人体模型;虚拟试衣;OpenGL;人体显示

随着人们对服装的舒适性,合体性和款式的个性化的要求越来越高。传统的二维服装CAD软件暴露出了种种不足之处,如号型难以适应不同形态的人体,不能在衣片设计阶段就看到成衣后的效果,需要反复修改等。根据个人体型进行单量单裁的量身定制方式(Made To Measure,简称MTM)应运而生,由于能满足个性特殊需求,这种方式深受人们欢迎。法国力克公司推出了一种服装量身定制系统[1],按照客户具体要求量身定制,做到量体裁衣,使服装真正做到合体舒适. 德国TechMath公司的FitNet软件系统针对该顾客的体型,从人体数据库中直接搜索出相近的体型及配套服装样板,并提供了进一步根据顾客体型和穿着习惯修改样板的功能[2]。还有英国的Baird Menswear西服公司,其销售到国和国际市场的西服中有80%是通过量身定制系统完成的,并且服装系列涵盖了不同款式、颜色和规格的组合[3]。而国的三维服装CAD技术远远落后于西方发达国家,近几年来国的一些院校和公司也都在研究这方面的技术。其中获得可视的三维人体模型的是三维虚拟试衣系统和三维服装CAD系统中的关键技术。本文以一种人体扫描仪所获取的三维人体数据为数据为基础,采用三角面片法构建了人体表面模型,并编程实现了人体模型的真实感显示。

1 三维人体模型构建

1.1 数据获取

目前,获取用于三维人体模型重建的数据,主要用两种途径。一种是从Poser, Maya 和3DSMax等软件系统导出人体模型数据,另外一种是采用非接触测量方法,通常是采用非接触式人体扫描仪获取人体表面的三维数据。本为获取数据的方法属于第二种。本文中人体建模用到的数据来源于一种基于单目视觉的双扫描头人体扫描仪所测得的[4]。由于获得的原始数据点云数量很大,并且排列不太规则,因此对原始点云进行了一定的处理,有效地减少了数据点云的数量和增加了点云数据的规律性。关于数据处理的细节不是本文的所讨论的重点,在此不讨论。处理之后的点云如图1所示。

图1 经过处理的人体点云

1.2 人体模型构建方法的选取

人体模型主要分为划分为线框模型、表面模型、实体模型、基于物理的模型等[5] 。使用线框模型的方法对人体建模时,它是将人体轮廓用线框图形和关节表示,由于包含的信息有限,因此该建模方法无法实现三维人体模型的真实感显示;表面模型是用组成物体的表面来表示物体。使用这种方法对人体建模时,曲面模型能提供三维人体的表面信息,并进行隐藏线消除和真实感三维人体模型显示;用实体模型的方法对人体建模时,由于它增加了三维人体的实心部分表达,使其信息更加完备,但是计算量大,稳定性差。基于物理的模型在建模过程中引入了人体自身的物理信息,所以基于物理的模型具有更加真实的表达效果,能对人体的动态过程进行有效地描述,但和前面几种相比,在计算上要复杂得多。

综合了几种模型的优缺点,本文采用表面模型表达人体。使用三角面片、BEZIER 曲面、NURBS 曲面等都可以构成物体的表面,其中用得比较多的是NURBS 曲面,但考虑到NURBS技术的复杂性,本文采用小三角面片表示人体曲面。这种方法具有表达简单、计算方便等优点。

1.3 人体模型的构建

前面已经介绍本文将采用一系列三角面片来表示人体表面,通过三维数据点集去构建这些三角面片的过程就叫做三角剖分,也称为三角网格化[6]。目前,关于三维散乱点集的三角剖分理论和算法尚不能尽如人意。然而由于本文中的点云已经处理为图1的形式,此时的人体表面是用一层层的轮廓线描述的。因此只要设法将人体相邻两截面用三角面片连接起来,就完成了三角网格化的过程。

构造连接相邻两截面轮廓线的三角面片的过程也叫做轮廓连接。连接的方法有许多,目前常用方法主要有最短对角线法,最大体积法,相邻轮廓线同步前进法。由于相邻轮廓线同步前进法,只需要沿着轮廓线进行同步前进,灵活性较好并且计算不复杂,也很少出现狭长三角形等较差表面,因此本文选用这种方法来构建人体模型。

这一方法的主要思想是,在用三角面片连接相邻两条轮廓线上的点列时,使得连接操作在两条轮廓线上尽可能同步进行。如图2所示,假设上下轮廓分别为P、Q,P i、Q j(0≤i

图2 相邻轮廓线同步前进法构建三角面片示意图

人体扫描仪所测得的人体数据分为六个部分,即左右腿,左右臂,躯干以及头部。按照上述方法,分别重构了这六个部分。为了获得完整的人体,还必须对这分割后的六个部分进行曲面拼接。包括左右腿和躯干的拼接,左右臂以及躯干和头部的拼接。首先需要考虑的就是相邻截面轮廓线的对应问题。以左右臂以及躯干和肩头部的拼接为例,需要首先将肩头部的第一层截面(用C h表示)分成三部分,分别对应左右臂以及躯干部分的最后一层截面(分别用C l、C r、C m表示)。对应的方法为比较C h上各点x坐标与左右腋窝点的x坐标,若某点x坐标小于右腋窝点的x坐标,则将该点对应于C r,若某点x坐标大于左腋窝点的x坐标,则将该点对应于C l,剩余点对应于C m.。在将两截面轮廓线对应后,再次按照轮廓线同步前进法分别连接各个分离的部分,则完成了人体模型的构建。构成的三角向形网格如图3所示。

放大

图3 构建的三角形网格

1.4 人体模型的存储

在建立人体模型之后,需要将其以一定格式的文件进行存储,以利于应用程序对图形进行处理以及系统以后的扩展。OBJ 文件是 Wavefront公司开发的一种文件格式,该文件以纯文本形式存储了模型的顶点、法线、纹理坐标和材质等信息,而且结构非常简单,同时它也是一种标准的3D模型文件格式,很适合用于3D 软件模型之间的互导,通用性较好,再者也可以方便系统将来在诸如反求工程等领域的扩展及系统的进一步开发。因此本文选用OBJ文件格式存储人体数据信息。

如果三维人体显示时不经光照的浓淡处理,看到的人体模型就像平面图,没有立体效果。为了有立体效果,必须进行光照处理,这是因为物体在光的照射下其对光的一面和背光的一面呈现的效果不同,只有把这种效果反映出来,二维显示器上的三维模型才有逼真的立体感。

通常我们进行人体模型绘制过程中,在进行光照处理时,必须计算面或点的法线向量才能看到效果。在本课题中以三角片来逼近模仿人体表面,就表现为计算每个三角面片法向量,采用这种方法计算量少。但是这种情况下,当数据点很少,很难模仿人体的光滑皮肤。因此为了得到一个更加真实的人体模型,使人体模型更生动、真实,还需要计算各个点的法向量。

下面我们分别介绍一下三角片法向量和顶点法向量的的计算方法,如图4所示:O,P,Q,R,S,U,V,W是三角片顶点,P是一个中心顶点,它周围有7个

三角片,三角片的法线向量分别是n

1,n

2

,n

3

,n

4

,n

5

,n

6

,n

7

;其它点是边界点。

相关文档
最新文档