1. 引言
21世纪的今天,人们生活节奏日益加快。人们不再愿意花更多的时间出门逛街购买自己喜欢和合适的衣服,因此人们选择在网上购买衣服,而网上买衣服又常常面临款式是否舒服、大小是否合适、穿上是否合身等问题。所以我们设计了一款插件,它能附着于镜子上,与手机相连接,从而进行网上模拟试衣。此插件能很好的解决上述问题,降低卖家与买家之间纠纷的可能,帮助更多网民买到称心的衣服。现如今的模拟试穿系统存在丢失或卡顿的现象,使用体验不太流畅。并且,现有的试衣系统没有根据人体跟踪能力,不可适应不同的身体角度以及身体移动,从而没有达到十分真实的试穿效果。我们的洗衣系统希望能够克服这些问题,给人更加真实的体验。传统网购中,只有图片或视频,而没有试穿体验;“AR虚拟试穿”通过增强现实体验感,刺激消费者下单购买行为,降低网购退货率,将会成为未来零售行业中不可或缺的服务之一。
2. 三维人体建模及实现
2.1. Java 3D简介
Java 3DAPI是Sun定义的用于实现3D显示的接口。Java 最大的特点在于它的平台无关性,所以Java3D 是适用于网络环境的跨平台的三维图形开发工具包。并且Java3D把OpenGL和DirectX这些底层图形库技术进行封装 [1] 。这种全新的设计使3D技术变得不再繁琐并且可以加入到J2SE、J2EE的整套架构,保证了Java 3D技术强大的扩展性和高效的执行效率。由于Java 3D强大的功能性,可以生成简单或复杂的形体,并且用来生成三维场景的Applet可以方便的从服务器传送到客户端,具有优良的可传输性。所以构造出来的形体具有颜色、透明效果、贴图。正因如此,我们才用Java 3D来构造三维人体建模。
2.2. Poser软件简介
利用Poser进行角色创作的过程较简单,主要为选择模型、姿态、体态设计三个步骤,内置了丰富的模型,这些模型以库形式存放在资料板中 [2] 。
人物模型包括裸体的男性、女性和小孩,穿衣的男性、女性和小孩,无性的人体模型、骷髅、木头人。动物模型包括狗、猫、马、海豚、蛙、蛇、扁鱿、狮子、狼和猛禽,在绝大多数情况下,我们都可以从内置的模型中选出创作某角库色所需的模型。
一个的角色造型都有特定的姿态和体态,Poser的模型及构成模型的各组成部分,如人的手、脚、头等,都带有控制参数盘,通过对参数盘的设置,我们可以随意调整模型的姿态、体态,从而创作出所需的角色造型。姿态一般是指人物或动物在现实生活中的移动方式以及位置移动的过程,而体态则是指人物或动物身、体及其各部位的比例、大小等,对模型进行弯曲、旋转、扭曲。必要时还可以输入其它工具设计的模型从模型库中移掉。对模型进行姿态调整时,一方面可以结合编辑工具设置参数盘以获得某种姿态,另一方面可以将现有的姿态赋予模型或再作相应调整。
已有人员成功研究出使用Poser5.0制作运动损伤防治实验多媒体课件库,通过制作多个部位的模拟损伤动画,形成运动损伤多媒体课件库,从而有效地保证了运动损伤防治实验课的教学质量。
2.3. 人体数据获取
由于人体形状为复杂的曲面,要对其进行较为精确的测量并获得全面细致的人体数据是很困难的。所以在实现人体建模的过程中,我们根据人体的生理形态特征,将人体分成头、颈、躯干等17个部分 [2] 。如下表1所示。
Table 1. Human body parameters table
表1. 人体参数表
在本文中,选择了一种非常简单方便的获取人体曲面数据的方法。通过研究分析Poser软件导出的3DS文件结构,获取有用的人体曲面顶点信息 [1] 。如图1所示。
2.4. 人体建模算法
在人体建模中,常见的算法主要有曲面建模,物理特性建模等。本文主要采用曲面建模。曲面建模又称表面建模。曲面建模也称为NURBS建模,NURBS是Non-Uniform Rational B-Splines的缩写,是“非统一均分有理性B样条”的意思 [3] 。因为衣服和人不是规则的图形,其边界是不规则曲线,对此要进行更高难度的离散化。通过分析NURBS的优缺点,我们采用算法相对简单的曲面三角形逼近的三维人体建模方法。空间三角剖分是以平面三角剖分算法为基础,由平面点扩展到三维空间散乱数据点。“空间三角剖分可分为对应三维散乱数据投影域的剖分和在空间直接剖分两种,然而当那些散乱的教据有一定规律的时候,或者经过我们的预处理,变的比较有规律的时候,比如三维人体的躯干、手臂和大小腿等部分,其基本形状为圆柱体,其上顶点分布比较有规律,我们就可以采用一种简单的空间数据点三角创分方法,实现由二维轮廓线到三维人体的重构。”
基本思想为:在人体表面作横向截面线,当截面线比较密集的时候,假设两条相邻的横向截面轮廓线如下图2,上轮廓线上的点列为P0,P1,…,Pm−1;下轮廓线上的点列为Q0,Q1,…,Qn−1。点列均按逆时针方向排列。如果将上述点列分别依次用直线连接起来,则得到这两条轮廓线的多边形近似表示。每一个直线段PiPi+1或QiQi+1称为轮廓线线段。如图2所示,连接上轮廓线上一点与下轮廓线上一点的线段称为跨距。很显然,一条轮廓线线段,以及将该线段两端点与相邻轮廓线上的一点相连的两段跨距构成了一个三角面片,成为基本三角面。而该两段跨距则分别成为左跨距和右跨距。实现对所有数据点的三角剖分就是要用一系列的互相连接的基本三角面将所有相邻的二维轮廓线连接起来。连接上、下两条轮廓线上各点所形成的众多基本三角面必须满足以下两个条件:每一个轮廓线线段必须而且只能在一个基本三角面片中出现;如果一个跨距在某一基本三角面中为左跨距,则该跨距是而且仅是另一个基本三角面片的右跨距 [1] 。
2.5. java3D人体模型编程实现
参数介绍:
IndexedTriangleArray类实现数据点三角剖分,根据人体对称性将三维人体分为头、颈、胸、腹、上臂、下臂part1-part19等17个部分分别运用IndexedTriangleArray类实现三维重构。
Figure 2. Triangulation between adjacent contour lines
图2. 相邻轮廓线间三角剖分
vertexCount:IndexedTriangleArray类的对象中包含的总的顶点数;vertexFormat:表是这些顶点的格式;
COORDINATES:表示在该GeometryArray数组中包含顶点的坐标;
NORMALS:表示包含每个顶点的法向量;
COLOR_3或COLOR_4:表示每个顶点的颜色;
indexCount:该参数是指从总的顶点数中选择出的顶点总数,允许项点重复使用,允许indexCount超ivertexCount的值 [3] ;
具体程序如下:
IndexedTriangleStripArrayline = newIndexedTriangle
Stripdrray(vert.length,IndexedIriangleStripArray.COORDINTES|IndexedIriansleStripArray.NORMALS|IndexediriangleStripimnar.COLOR_3,index.length,count); [1]
2.6. 虚拟试衣
将上述人体3D建模的功能放入插件中,将手机与插件进行无线连接。然后在手机上选用衣服,最后在镜子上来观察衣服合不合身。
3. 实验与问题
首先衣服和人不是规则的图形,其边界是不规则曲线,对此要进行更高难度的离散化;其次,构建一个三维人体模型,这个三维人体模型的构建除了简单的三维建模技术外,还需要提供人体调节功能,而且人体又依据各个地区人们的体型特点而有所区别,人体调节除了各个部位维度的调节外,还要有整体的调节;企业会保存用户的人体数据,以便再次使用该数据,但随着人体数据的增多,计算机配置与内存也需要不断升级;面料仿真的几何仿真应用较广泛,但质感和悬垂性等均与实物有差异,难以达到真实效果。
4. 行业技术发展与行业前景
在虚拟试衣技术快速发展的今天,基于各种技术来完成虚拟试衣也在日益变换。而如今增强现实技术则是转变用户购衣消费体验的一个重要的工具。目前,增强现实作为一个较为新颖的方向,AR试衣的相关技术还不成熟,已经实现的应用大多还停留在将二维服装面片融合真实场景的解决方案上,用户得不到直观的衣物与人体之间交互的响应,衣物布料的渲染缺乏物理真实感。
同时面料仿真技术Pierce于20世纪30年代提出了面料质感可测量的设想。面料仿真技术包含几何建模、物理建模、综合建模三种模拟方法,而在3D试衣中主要使用综合建模 [3] 。而且,Kinect体感技术也在飞速发展,体感技术分为惯性感测、光学感测以及惯性及光学联合感测三类 [4] ,应用于虚拟试衣的主要是惯性及光学联合感测。一方面,体感技术对人体进行数据采集后,能够准确识别到人体的动作,及时进行反馈并做出回应;另一方面,该技术利用专属的体感套件可以实时展示衣物的特点与外观,并随着用户的动作进行物理层面的改变,实现3D虚拟试衣的动态变化,极大地提高了用户的体验,可以无死角地欣赏衣物穿着效果,增加了虚拟试衣的趣味性和用户与产品的互动体验。将体感技术与人体工程学结合,还可以获得更加真实的人体运动轨迹,在不影响试衣效果的同时改善建模呆板的缺点。
线上试衣的虚拟性与服装的真实性二者之间的矛盾还有待解决,虚拟试衣的底层技术也缺乏突破式创新。因此,虚拟试衣系统未来更加网络化、标准化、高仿真化、智能化。当前,以人体数据为基础的虚拟试衣平台、基于人体识别的虚拟试衣服务仍在不断完善 [5] 。与此同时,为用户推荐服装穿搭,提供形象设计也能良好地融入到虚拟试衣功能中,以此完善配套服务,创造更多可能性,从而缩减虚拟与现实的差距,向用户提供更加真实的试衣体验。相信在不久的未来,虚拟试衣将成为移动互联网用户购买服装过程中不可或缺的流程工具。
5. 结语
本文运用Java 3D,人体建模,三维建模,无线连接,人体调节等实现了一个虚拟智能试衣系统。通过该系统,用户可以选择自己喜欢的服装,将选择的服装“穿”到自己的身上,进而大大节约了用户的时间与精力,也增强了用户的购物体验与购物效率。对销售商而言,良好的购物体验能够减少退货率,降低物流与成本。线下的模拟试衣还能帮助销售商吸引顾客,商户也可以根据用户的反馈来进一步完善系统的功能。现在市场竞争越来越激烈,这也使得越来越多的企业开始关注自己的品牌形象建设,以便在激烈的行业竞争中获得一定的优势。为了帮助企业提高各种服装和子产品的促销效果,虚拟试衣APP软件可以在其中发挥作用。一方面可以帮助企业建立网络营销渠道,制定营销计划和其他活动,另一方面有助于企业快速树立良好的品牌形象,提高企业在市场中的竞争力。本系统最大的优势是,可以根据不同身材的用户进行调节,不同尺码的衣服“穿”上的效果也不一样,从而让用户找到最适合自己的尺码;并且当用户移动起来的时候,衣服也会随着身体的移动而移动,从而让用户拥有最真实的试衣体验!