三维人体建模及显示

上传人:奇异 文档编号:101091460 上传时间:2022-06-04 格式:DOCX 页数:12 大小:249.37KB
返回 下载 相关 举报
三维人体建模及显示_第1页
第1页 / 共12页
三维人体建模及显示_第2页
第2页 / 共12页
三维人体建模及显示_第3页
第3页 / 共12页
点击查看更多>>
资源描述
基于单目视觉测量的人体建模与显示盛光有1,姜寿山1, X 欣 2(1.XX 工程大学 电子信息学院, 710048;2.XX 工程大学 服装与艺术设计学院, 710048 )摘要 :以一种基于单目视觉测量原理的三维人体扫描装置获得的人体数据为来源, 运用三角面片法构建人体外表, 并把人体模型保存为一种标准的模型格式文件OBJt件,获取了三维人体模型。然后在Visual C+的编程环境中采用OpenGL Open Graphics Library 作为三维图形接口,编程实现了三维人体模型,获得了可视化的人体模型。关键词 :三维人体模型;虚拟试衣; OpenGL ;人体显示随着人们对服装的舒适性, 合体性和款式的个性化的要求越来越高。 传统的二维服装 CAD 软件暴露出了种种缺乏之处,如号型难以适应不同形态的人体,不能在衣片设计阶段就看到成衣后的效果,需要反复修改等。根据个人体型进展单量单裁的量身定制方式(Made To Measure简称MTM)应运而生,由于能满足个性特殊需求, 这种方式深受人们欢送。 法国力克公司推出了一种服装量身定制系统 1,按照客户具体要求量身定制,做到量体裁衣,使服装真正做到合体舒适. 德国TechMath 公司的 FitNet 软件系统针对该顾客的体型,从人体数据库中直接搜索出相近的体型及配套服装样板,并提供了进一步根据顾客体型和穿着习惯修改样板的功能2。还有英国的Baird MenswearH服公司,其销售到国内和国际市场的西服中有80是通过量身定制系统完成的,并且服装系列涵盖了不同款式、颜色和规格的组合3。而国内的三维服装 CAD技术远远落后于西方兴旺国家,近几 年来国内的一些院校和公司也都在研究这方面的技术。 其中获得可视的三维人体 模型的是三维虚拟试衣系统和三维服装 CAD系统中的关键技术。本文以一种人 体扫描仪所获取的三维人体数据为数据为根底,采用三角面片法构建了人体外表 模型,并编程实现了人体模型的真实感显示。1 三维人体模型构建1.1 数据获取目前,获取用于三维人体模型重建的数据, 主要用两种途径。一种是从Poser, Maya和3DSMax等软件系统导出人体模型数据,另外一种是采用非接触测量方法,通 常是采用非接触式人体扫描仪获取人体外表的三维数据。本为获取数据的方法属于第二种。本文中人体建模用到的数据来源于一种基于单目视觉的双扫描头人体扫描仪 所测得的4。由于获得的原始数据点云数量很大,并且排列不太规那么,因此对 原始点云进展了一定的处理,有效地减少了数据点云的数量和增加了点云数据的 规律性。关于数据处理的细节不是本文的所讨论的重点,在此不讨论。处理之后的点云如图1所示。图1经过处理的人体点云1.2 人体模型构建方法的选取人体模型主要分为划分为线框模型、 外表模型、实体模型、基于物理的模型等咒使用线框模型的方法对人体建模时,它是将人体轮廓用线框图形和关节表示,由于包含的信息有限,因此该建模方法无法实现三维人体模型的真实感显示;外表模型是用组成物体的外表来表示物体。使用这种方法对人体建模时, 曲面模型能提供三维人体的外表信息,并进展隐藏线消除和真实感三维人体模型显示;用实体模型的方法对人体建模时, 由于它增加了三维人体的实心局部表达, 使其信息更加完备, 但是计算量大,稳定性差。 基于物理的模型在建模过程中引入了人体自身的物理信息, 所以基于物理的模型具有更加真实的表达效果, 能对人体的动态过程进展有效地描述,但和前面几种相比,在计算上要复杂得多。综合了几种模型的优缺点,本文采用外表模型表达人体。使用三角面片、BEZIER 曲面、 NURBS 曲面等都可以构成物体的外表,其中用得比拟多的是NURBS曲面,但考虑到NURBS技术的复杂性,本文采用小三角面片表示人体 曲面。这种方法具有表达简单、计算方便等优点。1.3 人体模型的构建前面已经介绍本文将采用一系列三角面片来表示人体外表, 通过三维数据点集去构建这些三角面片的过程就叫做三角剖分,也称为三角网格化6 。目前,关于三维散乱点集的三角剖分理论和算法尚不能尽如人意。 然而由于本文中的点云已经处理为图 1的形式,此时的人体外表是用一层层的轮廓线描述的。因此只要设法将人体相邻两截面用三角面片连接起来,就完成了三角网格化的过程。构造连接相邻两截面轮廓线的三角面片的过程也叫做轮廓连接。 连接的方法有许多, 目前常用方法主要有最短对角线法,最大体积法,相邻轮廓线同步前进法。由于相邻轮廓线同步前进法, 只需要沿着轮廓线进展同步前进,灵活性较好并且计算不复杂, 也很少出现狭长三角形等较差外表, 因此本文选用这种方法来构建人体模型。这一方法的主要思想是,在用三角面片连接相邻两条轮廓线上的点列时,使得连接操作在两条轮廓线上尽可能同步进展。如图2所示,假设上下轮廓分别为P、Q, P、Qj(0m, 0&n)分别为上下轮廓的各点,定义巾i、山分别为上下轮廓 线线段长度除以该线段所在轮廓线的周长所得的值,同时假设也表示上轮廓线中已经存在的轮廓线线段长度之和的标称值,小j表示下轮廓线中已经存在的轮廓线 线段长度之和的标称值。假设此时应判断选择三角形PiPi+iQj或三角形PiQjQj+i,那 么当| i+缶“|/山“时,沿上轮廓线前进,选择三角形 RPi+iQj,否那么沿下 轮廓线前进。图2相邻轮廓线同步前进法构建三角面片示意图人体扫描仪所测得的人体数据分为六个局部,即左右腿,左右臂,躯干以及 头部。按照上述方法,分别重构了这六个局部。为了获得完整的人体,还必须对 这分割后的六个局部进展曲面拼接。 包括左右腿和躯干的拼接,左右臂以及躯干 和头部的拼接。首先需要考虑的就是相邻截面轮廓线的对应问题。以左右臂以及躯干和肩头部的拼接为例,需要首先将肩头部的第一层截面用 Ch表示分成三 局部,分别对应左右臂以及躯干局部的最后一层截面分别用 Cl、Cr、Cm表示。 对应的方法为比拟Ch上各点x坐标与左右腋窝点的x坐标,假设某点x坐标小于右 腋窝点的X坐标,那么将该点对应于Cr,假设某点X坐标大于左腋窝点的X坐标, 那么将该点对应于Cl,剩余点对应于Cm.。在将两截面轮廓线对应后,再次按照轮廓线同步前进法分别连接各个别离的局部,那么完成了人体模型的构建。构成的三角向形网格如图3所示图3构建的三角形网格1.4 人体模型的存储在建立人体模型之后,需要将其以一定格式的文件进展存储,以利于应用程 序对图形进展处理以及系统以后的扩展。 OBJ文件是 Wavefront公司开发的一种 文件格式,该文件以纯文本形式存储了模型的顶点、法线、纹理坐标和材质等信 息,而且构造非常简单,同时它也是一种标准的3D模型文件格式,很适合用于3D软件模型之间的互导,通用性较好,再者也可以方便系统将来在诸如反求工 程等领域的扩展及系统的进一步开发。因此本文选用 OBJ文件格式存储人体数据 信息。如果三维人体显示时不经光照的浓淡处理,看到的人体模型就像平面图,没有立体效果。为了有立体效果,必须进展光照处理,这是因为物体在光的照射下 其对光的一面和背光的一面呈现的效果不同, 只有把这种效果反映出来,二维显 示器上的三维模型才有逼真的立体感。通常我们进展人体模型绘制过程中,在进展光照处理时,必须计算面或点的法线向量才能看到效果。在本课题中以三角片来逼近模仿人体外表,就表现为计 算每个三角面片法向量,采用这种方法计算量少。但是这种情况下, 当数据点很 少,很难模仿人体的光滑皮肤。因此为了得到一个更加真实的人体模型, 使人体 模型更生动、真实,还需要计算各个点的法向量。下面我们分别介绍一下三角片法向量和顶点法向量的的计算方法,如图4所示:O, P, Q, R, S, U, V, W是三角片顶点,P是一个中心顶点,它周围有 7个三角片,三角片的法线向量分别是 n1,n2, n3,必,n5, n6, n7;其它点是边 界点。图4求法向量示意图对于任意三角片,根据平面法线向量定义,三角片的法线向量等于三角片两 条向量边的叉乘积,例如三角形 OQP,它的面法向量可以这样计算ni OQ OP 1对于中心点P法线向量np可以用平均法线向量计算:np (ni n2 n3 m n5 n6 n7)/7 2对与边界点Q的法线向量nQ可以用下面公式计算:s ni3si其中s表示经过它的三角片的面积,汴表示该三角片法线向量。在 OpenGL 中,所使用的法线要求是规 X化的向量,所以求得法线还必须规 X化。这样, 通过采用上面的方法计算,各个顶点的法向量是逐渐变化的,经过光照计算, 视 觉上的效果会很不同。如图5从左到右分别是人体腿部一局部没加光照、加光照 但只计算面法向量、加光照并计算点法向量的比照效果。rn(a) (b)(c)图5大腿的光照效果比照图按照OBJ格式的要求,分别将人体外表各点,各点的法线向量以及三角面片写入OB戊件。写入OBJ文件时,各三角形顶点索引号的写入顺序,使其满足右手准那么,也就是使构成的三角形法线向外。生成的 OBJ文件形式如图6所示ft Trie tfertexs of tiuman body 林八口 normalV -33.86999 0.300000 13-119967-Q,19a3U6F uertexsU -33.81779U3占。屿55 u -33-2179*8 v -32-706059u -32-0769620.300000 13.209346(1 -0.199346 0.300000 13.311008-Q.19934& 6 00909 13-Q.26786S屯.3。后00。13,535613 -0-2G7S69 0.3 00900 13 .650763-Q. 2 078690.980096S.9SD096S.990Q96 g.950698 0-956698 0.96698-fl.008364 -6.DB8964 -0.006361! -8.203767 -G.203767 -6-203767a构成三角形的各顶点(b)各个顶点对应的法线 tt Trlanguldr facets F 1/1 57/S7 2/72 f 2/2 5Z/57 5S/28 f 2/2 S8/58 3/73 F 3/3 58/5B 5959 F 3/3 59/759 44 f W/4 59/759 55c三角形面片图6生成的OBJTt件片段2人体模型可视化虚拟环境的搭建OpenGLOpen Graphics Library,是从 SGI 公司的 GL(graphics library根底上 开展起来的一套独立于硬件、 独立于窗口系统的三维图形库。 目前 ,OpenGL 在图 形设计领域已经成为工业标准,被广泛地应用于图形与动画绘制、虚拟现实技术和计算机可视化等三维图形设计领域7 ,而 VC+ 也提供了与OpenGL 的接口从而结合二者的特点 ,能很好地进展交互式三维应用程序的开发。所以本文采用OpenGL作为三维图形接口,以 Visual C+6.0作为开发环境,来显示人体模型。实现 VC+6. 0 和 OpenGL 之间图形接口的机制是像素格式设置以及关联DC与RC。在创立一个绘图描述表 RC之前,首先要设置像素格式,完成像素格式 的设置后,需要为OpenGL建立RC,只有建立RC后,OpenGL才能调用绘图原语在 窗口中绘出图形。RC是以线程为单位的,每个线程必须使用一个 RC作为当前RC 才能执行 OpenGL 绘图原语 . 在 VC+6. 0 中的 MFC 中实现 OpenGL 编程的大致 步骤如下:(1)建立工程文件利用MFC AppW izard(exe创立一个单文档的新工程。(2)OpenGL 的根底库设置在菜单中选择Project f Settings,最后选择LINK 选项,然后在 “bject/LibraryModules 下 增 加 OpenGL 所 需 的 库 程序 ,具 体 库程 序 是OpenGL32.lib、glu32.lib laux. lib.每个程序开场要包含OpenGL所使用的库的头 文件:#include “glgl. h , #include “glglu. h ,#include “glglaux.h。(3)设置OpenGL 支持的 Windows 窗口风格OpenGL 需要窗 口具有 WS_ CLI PCHILDREN 和 WS_CLI PSIBLI NG S风格。 前者是创立父窗口使用的 Windows风格,后者是创立子窗口使用的 Windows风格。 主窗口的创立函数 PreCreateWindow(CREATESTRUCT & c济添加下面的代码: cs. style = WS _ CLIPSIBLINGS| WS _CLIPCHILDREN 。(4)设置像素格式和关联DC 和 RC每个 Windows 应用程序都必须处理设备描述表。在创立设备描述表之前,要设置设备的像素格式,设置图形界面的属性,包括图形界面的颜色模式,颜色值的位数 ,使用单缓存还是双缓存,深度缓存的位数等,以及其它一些图形信息。利用OpenGL 绘制的窗口也必须设置像素格式。 因为 ,缺省设置的像素格式是Windows的 GDI( 图形用户接口)。对一个窗口只能设置一次像素格式,像素格式的设置,放在响应 WM_CREATE消息的OnCreateCS数中实现。设置像素格式,首先应填充 PIXELFORMAT-DESCRIPTOR 构造,包括26 个属性信息,然后调用处理像素格式的Win32函数关联DC和RC。设置像素格式与关联 DC和RC的细节可以参 考一下 OpenGL 编程方面的书籍。(5)重载OnSizeQS数重载和 OnDestroy函数在OnSize(加,主要完成对窗口大小变化的响应。当窗口的大小改变改变时,必须重新设置图形显示模式, 使其适合应用程序窗口大小, 否那么会导致图像变形;在程序退出时应该清空当前使用的着色上下文,并删除所创立的着色上下文。(6)在Ondraw()函数中完成绘图工作以上完成了 OpenGL在Visual C+环境下编程的有关设置。调用OpenGL有 关绘图原语就可以进展编程了。绘图代码一般在Ondraw() 函数中完成。至此,显示人体的虚拟环境就搭建好了。3 三维人体显示在 VC+ 的文档 / 视构造中,应用程序的数据是作为成员变量保存在文档类对象中的 ,视图类对象通过指针来访问文档类的成员变量。文档类的一个主要任务就是管理文档 的数据磁盘存取,在文档 类中实现磁盘存取的关键函数是 CDocument二 Serialize 的数。本文就是重载 CDocument: Serialize 的数,在 File菜 单的Open命令的消息响应函数中调用 CWinApp二0nFile0pen ()S数实现OBJ文档 读入的。然后按照前面所讲的,利用MFC AppW izard(exe创立一个单文档的新工程 SingleModel.然后建立OpenGL与VC+应用接口以及设置 OpenGL的绘图环境。 然后在Ondraw()中编写绘图代码。本文所显示的人体外表是有一定数量的三角面 片构成的。 所以绘图的主要工作是调用 OpenGL 函数绘出这些三角形面片。 程序 的核心局部是就是指定三角形的定点和法线。为了增强所显示人体的真实感, 启用了 OpenGL 中的光照功能。在OpenGL中使用光照的步骤如下:(1) 定义每个物体的每个顶点的法线向量。这些法线决定了物体相对于光源的方向;(2) 创立一个或多个光源,并设置它们的位置;(3) 创立和选择光照模型, 它定义了全局环境光的层次以及观察点的有效位置 (便于进展光照计算)。(4)定义场景中的物体的材料属性8 。另外为了能从各个方面观察所显示的人体,本文实现了所显示的人体可以绕X , Y , Z 轴旋转, 并能实现缩放功能。 在 OpenGL 中调用glTranslate(,) glRotate(),glScale出函数很容易实现物体的平移,旋转,缩放。综合以上各点,成功实现了OBJ三角网格文件的读取及0penGL下的显示。不同角度下的人体显示效果如图 9所示:(a)(b) (c)(d)图9不同角度下的人体显示4完毕语本文给出了一种三位人体模型的重建方法, 采用三角面片法构建了三维人体外表模型,并把建立的人体模型保存一种标准的 3D模型文件一OBJ文件。介绍了在Visual C+环境下的OpenGL编程的接口,利用搭建起来的虚拟环境,成功实现了三维虚拟人体的真实感显示, 得到了可视化的三维人体模型。 本文获得三维人体模型为后续虚拟着装效果展示系统的研发提供了前提, 也可用于游戏开发虚拟现实等领域,有一定的实用价值。参考文献:1 常丽霞 , X 欣 . 非接触三维人体测量技术在服装工业中的应用 J. 国际纺织导报, 2004(4): 76-79.2 X 中启 , X 欣 , X 书云 . 基于量身定制的女式裘皮服装关键技术探讨J.XX 工业大学学报,2008,27(1):42-45.3 徐继红 . MTM 与服装定制最优裁剪方案的研究J. XX 职业大学学报 , 2003, 12(4) :28.4 舒方法.基于单目视觉的便携式量体定制系统研究D. : XX 工程大学, 2008.5 X 树芹 .三维虚拟试衣系统中参数化人体建模技术的研究D. 华中科技大学,硕士,2006.6 袁夏 .三维激光扫描点云数据处理及应用技术D.XX 理工大学,硕士, 2006.7 王兰美,赵继成,秦华东. OpenGL 及其在 VC+ 开发环境下的编程实现J. XX 理工大学学报 (自然科学版),2006,20(4):37-38.8 Dave Shreiner, Mason Woo, Jackie Neider ,Tom Davis 著,徐波 等译 . OpenGL 编程指南第 5版 M. :机械工业, 2006: 115-143.Modeling and Display of 3D Human Body Based on MonocularVisionMeasurementSHENG Guang-you1, JIANG Shou-shan1 , ZHANG Xin 2(1. College of Electronic and Information, Xi an Polytechnic U,Snhivaearsnixtyi7,1X0i048, China an2. Apparel&Art Design College, Xi an Polytechnic UniversiStyh,Xaianxi710048, C hinaan),Abstract:Triangular facets are used to construct the surface of the human body based on the data messured by a 3D human body scanner .The model is saved in OBJ file which is a standard 3D model format file. In the Visual C + programming environment, OpenGL is used to display the3D human model , and obtains thevisual human model.Keywords:3D human model; virtualfittingsystem; OpenGL; human model display
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!