CN105303608A - 一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法 - Google Patents

一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法 Download PDF

Info

Publication number
CN105303608A
CN105303608A CN201510762854.8A CN201510762854A CN105303608A CN 105303608 A CN105303608 A CN 105303608A CN 201510762854 A CN201510762854 A CN 201510762854A CN 105303608 A CN105303608 A CN 105303608A
Authority
CN
China
Prior art keywords
coordinate
point
model
leftsleeve
trousers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510762854.8A
Other languages
English (en)
Other versions
CN105303608B (zh
Inventor
杨若瑜
黄璐宸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN201510762854.8A priority Critical patent/CN105303608B/zh
Publication of CN105303608A publication Critical patent/CN105303608A/zh
Application granted granted Critical
Publication of CN105303608B publication Critical patent/CN105303608B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法。该方法主要针对3D服装模型,通过对服装模型和人体模型的三维图形学计算,以实现服装模型和人体模型的自动对齐,并通过仿真试穿来判断服装尺寸大小是否能够被人体穿上,给出试穿效果。该方法的主要步骤包括判断服装模型、上衣模型自动对齐、裤子模型自动对齐、碰撞检测和处理、尺寸判断和给出试穿结果。本发明能够对某一类的服装模型达到自动对齐的效果,不需要给定参数或进行手动调整,具有一定的通用性和实用性。

Description

一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法
技术领域
本发明属于计算机图形学技术领域,尤其涉及到一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法。
背景技术
近几年,虚拟试衣已经成了虚拟现实领域的热点问题,在网络购物越来越流行的今天,虚拟试衣系统可以为消费者提供更加便捷的服务,消费者无需不耐其烦地取、脱、换、穿一件件服装,更无需长时间排队。
在虚拟试衣技术中,一个重要的环节就是试穿,在该过程中如何进行人体模型和服装模型的对齐则是第一步。在目前的国内外研究情况中,大多都是采用二维服装裁剪片缝合在三维人体模型上,形成三维服装初始形态,服装的构建过程为,先自动生成服装裁片,再对裁片进行修正,最后对裁片进行缝合。然而,目前也有很多精美的3D服装模型(如文件后缀为obj、max、3ds、ma的文件),3D服装模型相较于二维服装裁剪片而言更加形象,并且给人以直观的感受。而在国内外的虚拟试衣中使用3D服装模型进行试穿的研究尚不多。
文献1:ZhongY,XuB.Three-dimensionalGarmentDressingSimulation[J].TextileResearchJournal,2009,79(9):792-803.中使用的3D试穿方法分为三个主要阶段:初始定位、包裹和悬垂,首先将各个衣片放入三维空间中,虚拟人体周围,然后将衣片包裹住人体,包括了衣袖的自卷处理,通过自适应缝合力将各个衣片进行缝合,施加重力、风力等外力,观察服装的穿着效果。这种方法存在一个缺陷,对应的缝合点并不只是受到缝合力的作用,它们还受到各自关联的弹簧的弹力作用,因此它们在缝合过程中的运动轨迹不可能在同一条直线上。
文献2:GroβC,FuhrmannA,LuckasV.Automaticpre-positioningofvirtualclothing[C]//Proceedingsofthe19thspringconferenceonComputergraphics.ACM,2003:99-108.中提出了自动化的预置位方法来实现虚拟试衣,使用CAD服装数据,基于几何进行预定位,基于物理进行最终定位,从而达到给人体穿衣的效果。这种试衣方法虽然达到了较好的试衣效果,但是需要使用CAD系统提供的服装数据,上向量和特征点的位置需要手动插入,但是不幸的是,现有的CAD系统并不能直接提供文献中所需要的特征点。
文献3:陈燕,薛原,杨若瑜.任意衣物和人体的3D试穿实时仿真[J].计算机应用,2014,34(1):124-128.DOI:doi:10.11772/j.issn.1001-9081.2014.01.0124.中服装模型为3D服装模型,使用的试衣方法是先通过服装y坐标值最大的点和后脑勺上高度合适的点进行全局位置的对齐,再对局部姿态进行调整,通过计算服装模型和人体模型的夹角,将服装绕x轴旋转达到合适的位置。但是在这里的对齐方法中并没有实现自动对齐,这里的位移向量、旋转角度等等不能适应于所有的服装模型,针对不同的模型,在进行全局位置对齐和局部姿态调整后还要添加微调参数,通过不断地实验,查找到微调参数的合适的值。因此这样的方法并不能达到自动对齐的效果。
综上,现有方法的缺点主要有:使用CAD服装数据,将衣片进行位置预置,需要较多的CAD服装数据,但是某些特征点无法由CAD系统直接提供,需要手动插入,达不到“自动”的效果,在使用缝合力进行缝合时,容易由于缝合点处其他作用力的影响,缝合点的运动轨迹出现偏差;使用3D服装模型,在进行对齐时对不同的服装模型需要使用多次实验查找合适微调参数的方式来进行对齐,不具有普遍性,同时也达不到“自动”的效果。另外在目前的研究中,鲜有根据材质等自动判断某大小的服装能否穿上,因此本发明中提供的方法具有一定的创新性。
发明内容
发明目的:本发明的目的是针对以上技术问题,提供一种计算机中适用于3D服装模型的服装模型自动对齐并进行尺寸判断的方法。
为了解决上述技术问题,本发明公开了一种计算机中虚拟试衣服装模型自动对齐及尺寸判断的方法,包括如下步骤:
步骤1,载入服装模型,如读取计算机某一目录下的衣服模型文件“男士短袖衬衫.3ds”,判断衣服模型的类型,若为上衣模型则将服装模型的类型标记为0,若为裤子模型则将服装模型的类型标记为1,读取服装模型的信息,并为其构造邻接表,所述服装模型为三维服装模型,根据已知的服装模型的类型,若为上衣模型,则执行步骤2,若为裤子模型,则执行步骤3;所述服装模型的信息包括顶点信息和三角面片信息,所述人体模型为根据人体特征点和特征尺寸获得型值点,使用插值样条曲面对人体各部位建立曲面模型并进行光顺拼接得到的人体网格模型;
步骤2,根据步骤1的人体模型和上衣模型,进行对齐操作,完成上衣模型和人体模型在三维空间上的位置预处理;
步骤3,根据步骤1的人体模型和裤子模型,进行对齐操作,完成裤子模型和人体模型在三维空间上的位置预处理;
步骤4,位置预处理后,对服装模型和人体模型进行碰撞检测和碰撞处理;
步骤5,根据服装材质以及服装的尺寸大小来判断用户是否能够穿上服装,在步骤4中,若根据服装材质的各项参数计算服装模型质点位置时,服装模型质点位置仍然在人体模型内,即服装模型的质点无法通过碰撞处理将其拉伸到人体模型外,则标记服装模型无法被人体模型穿上,否则标记为服装能够穿上;
步骤6,给出判断用户是否能够穿上服装的结果,若穿不上,则给用户反馈,若能穿上则进行动态仿真并显示试穿效果。
其中,步骤2包括如下步骤:
步骤2-1,遍历上衣模型邻接表中的顶点坐标,得到上衣模型的三维空间范围,根据上衣模型的三维空间范围,建立上衣模型AABB包围盒(AxisAlignedBoundingBox,轴对齐包围盒);
步骤2-2,设定八叉树的深度,以上衣模型的AABB包围盒为范围建立八叉树,树节点存储该树节点上的顶点个数和顶点坐标,使用上衣模型的邻接表,将上衣模型的顶点放入八叉树的树节点中;
步骤2-3,以人体模型的特征点会阴点作为原点,原点向头部特征点的方向为y轴方向,建立右手定则的三维坐标系,查找上衣模型的中心轴,实现上衣模型x轴和z轴方向上的对齐;
步骤2-4,查找上衣模型的肩的位置,将其和人体模型的肩的位置进行对齐,实现上衣模型y轴方向上的对齐;
步骤2-5,对服装模型构造质点-弹簧模型,通过人体部位标记服装模型对应的部位,确定上衣模型上每个质点所属人体的部位,进行标记,所述人体部位分为躯干、臀部、右大腿、左大腿、右小腿、左小腿、右大臂、左大臂、右小臂以及左小臂10个部分,则左大臂所对应的衣服模型的部位即为上衣模型的左侧袖子;
步骤2-6,查找到上衣模型的左侧袖子部位,使用袖子上端中心点对上衣位置进行y轴和z轴方向的微调;
步骤2-7,根据胳膊的中心轴和袖子的中心轴计算胳膊旋转后的终止位置坐标,调用人体模型胳膊旋转的函数,使得胳膊的中心轴和袖子的中心轴重合。
其中,步骤2-3包括如下步骤:
步骤2-3-1,使用步骤2-2中建立的八叉树查找上衣模型下摆点中x坐标值最大的点hem_xmax和x坐标值最小的点hem_xmin
步骤2-3-2,使用步骤2-2中建立的八叉树查找上衣模型左右两边各自的y坐标值最大的点ymaxleft和点ymaxright
步骤2-3-3,由步骤2-3-1中得到的点hem_xmax和点hem_xmin来计算上衣模型下摆的中心点bottom,中心点bottom为点hem_xmax和点hem_xmin的中间点,由步骤2-3-2中得到的点ymaxleft和点ymaxright来计算上衣模型最上方的中心点top,中心点top为点ymaxleft和点ymaxright的中间点,由点top和点bottom构成的轴即为上衣模型的中心轴ClothAxis;
步骤2-3-4,将经过人体模型的头部特征点和腰部特征点所在的直线作为人体模型的中心轴HumanAxis,由步骤2-3-3中得到的上衣模型的中心轴ClothAxis与人体模型的中心轴HumanAxis进行对齐,完成上衣模型在x轴和z轴方向上的对齐。
其中,步骤2-4包括如下步骤:
步骤2-4-1,使用步骤2-2中建立的八叉树查找上衣模型中所有x坐标值小于点hem_xmin的x坐标值的点,将其中y坐标值最大的点作为上衣模型肩部最高点shoulder_cloth,人体模型的肩部点shoulder_human则是人体模型左大臂和躯干衔接处y坐标值最大的点;
步骤2-4-2,使用步骤2-4-1中得到的上衣模型肩部最高点shoulder_cloth和人体模型的肩部点shoulder_human对上衣模型进行在y轴方向上的对齐;
步骤2-4-3,根据经验值对z轴方向的对齐进行微调,减少上衣模型顶点的z坐标值,经验值取0.4,使得微调后上衣模型z坐标值减小0.4,为之后的对齐计算减少误差。
其中,步骤2-6包括如下步骤:
步骤2-6-1,由步骤2-5查找到上衣模型中的左侧袖子部位,由于服装模型和人体模型都是左右对称的,因此只需要计算一侧的袖子和胳膊即可,在计算时选用了左侧袖子和左侧胳膊,遍历所有袖子部位的点,查找到y坐标值最大的点leftsleeve_y1max和y坐标值最小的点leftsleeve_y0min
步骤2-6-2,遍历袖子部位所有的点,查找到x坐标值和点leftsleeve_y1max的x坐标值相差小于0.08的点中y坐标值最小的点,记为leftsleeve_y1min,查找到x坐标值和点leftsleeve_y0min的x坐标值相差小于0.08的点中y坐标值最大的点,记为leftsleeve_y0max(这里的0.08为一个经验值,由于袖子部位本身并不大,所以在设置经验值的时候不能过大,经验值过大会导致误差很大,但是经验值过小又可能导致这个范围内不存在点,找不到预期的点,通过实验发现0.08是一个比较符合要求的经验值);
步骤2-6-3,由点leftsleeve_y1min和点leftsleeve_y1max计算得到中点leftsleeve_top,由点leftsleeve_y0min和点leftsleeve_y0max计算得到中点leftsleeve_bottom,将点leftsleeve_top和点leftsleeve_bottom所在的直线作为左侧袖子的轴LeftSleeveAxis;
步骤2-6-4,由人体模型获取人体左侧大臂根部(左侧大臂和躯干的衔接处)和手肘部(左侧大臂和小臂的衔接处)的中心点,分别为点leftarm_top和点leftarm_bottom,得到左侧大臂的中心轴LeftArmAxis,保持服装模型的x轴方向位置不动,向y轴方向和z轴方向通过微调向量进行平移微调,使得微调后点leftsleeve_top和点leftarm_top的y坐标值、z坐标值分别相等,微调的向量adjust如下:
a d j u s t = 0 , l e f t a r m _ b o t t o m . y - l e f t a r m _ t o p . y l e f t a r m _ b o t t o m . x - l e f t a r m _ t o p . x * ( l e f t s l e e v e _ t o p . x - l e f t a r m _ t o p . x ) + l e f t a r m _ t o p . y - l e f t s l e e v e _ t o p . y , l e f t a r m _ b o t t o m . z - l e f t a r m _ t o p . z l e f t a r m _ b o t t o m . x - l e f t a r m _ t o p . x * ( l e f t s l e e v e _ t o p . x - l e f t a r m _ t o p . x ) + l e f t a r m _ t o p . z - l e f t s l e e v e _ t o p . z ;
其中leftarm_bottom.x表示点leftarm_bottom的x坐标值,leftarm_bottom.y表示点leftarm_bottom的y坐标值,leftarm_bottom.z表示点leftarm_bottom的z坐标值,leftsleeve_top.x表示点leftsleeve_top的x坐标值,leftsleeve_top.y表示点leftsleeve_top的y坐标值,leftsleeve_top.z表示点leftsleeve_top的z坐标值,leftarm_top.x表示点leftarm_top的x坐标值,leftarm_top.y表示点leftarm_top的y坐标值,leftarm_top.z表示点leftarm_top的z坐标值;
步骤2-7,根据左侧大臂的中心轴LeftArmAxis和左侧袖子的中心轴LeftSleeveAxis计算胳膊旋转后的终止位置坐标destPoint,公式如下:
d e s t P o int = l e f t s l e e v e _ t o p . x - ( l e f t s l e e v e _ t o p . x - l e f t s l e e v e _ b o t t o m . x ) * l e f t a r m _ l e n g t h l e f t s l e e v e _ l e n g t h , l e f t s l e e v e _ t o p . y - ( l e f t s l e e v e _ t o p . y - l e f t s l e e v e _ b o t t o m . y ) * l e f t a r m _ l e n g t h l e f t s l e e v e _ l e n g t h , l e f t s l e e v e _ t o p . z - ( l e f t s l e e v e _ t o p . z - l e f t s l e e v e _ b o t t o m . z ) * l e f t a r m _ l e n g t h l e f t s l e e v e _ l e n g t h ,
其中leftsleeve_bottom.x表示点leftsleeve_bottom的x坐标值,leftsleeve_bottom.y表示点leftsleeve_bottom的y坐标值,leftsleeve_bottom.z表示点leftsleeve_bottom的z坐标值,leftarm_length为左侧大臂的中心轴LeftArmAxis的长度即为点leftarm_top和点leftarm_bottom间的距离长度,leftsleeve_length为左侧袖子的中心轴LeftSleeveAxis的长度即为点leftsleeve_top和点leftsleeve_bottom间的距离长度,分别通过如下公式计算:
l e f t a r m _ l e n g t h = ( l e f t a r m _ t o p . x - l e f t a r m _ b o t t o m . x ) 2 + ( l e f t a r m _ t o p . y - l e f t a r m _ b o t t o m . y ) 2 + ( l e f t a r m _ t o p . z - l e f t a r m _ b o t t o m . z ) 2 ,
l e f t s l e e v e _ l e n g t h = ( l e f t s l e e v e _ t o p . x - l e f t s l e e v e _ b o t t o m . x ) 2 + ( l e f t s l e e v e _ t o p . y - l e f t s l e e v e _ b o t t o m . y ) 2 + ( l e f t s l e e v e _ t o p . z - l e f t s l e e v e _ b o t t o m . z ) 2
调用人体模型胳膊旋转的函数SetArmToNewPosition,使得胳膊的中心轴和袖子的中心轴重合。函数SetArmToNewPosition是根据函数参数newPosition来修改人体模型左右手肘处的特征点,从而达到修改人体模型胳膊位置的目的。
其中,步骤3包括如下步骤:
步骤3-1,遍历裤子模型邻接表中所有点,得到裤子模型x轴方向坐标值最小的点trousers_xmin,x轴方向坐标值最大的点trousers_xmax,y轴方向坐标值最大的点trousers_ymax,z轴方向坐标值最小的点trousers_zmin,z轴方向坐标值最大的点trousers_zmax
步骤3-2,由步骤3-1中查找到的点trousers_xmin和点trousers_xmax得到裤子模型在x轴方向上的中心点trousers_xmiddle,中心点trousers_xmiddle即为点trousers_xmin和点trousers_xmax的中间点,由步骤3-1中查找到的点trousers_zmin和点trousers_zmax得到裤子模型在z轴方向上的中心点trousers_zmiddle,中心点trousers_zmiddle即为点trousers_zmin和点trousers_zmax的中间点,根据点trousers_xmiddle的x坐标值和点trousers_zmiddle的z坐标值进行x轴方向和z轴方向上的对齐。
步骤3-3,使用由步骤3-2中查找到的点trousers_ymax的y坐标值和人体模型的腰部特征点waist_human的y坐标值进行对齐,从而达到y轴方向上的对齐。
其中,步骤4包括如下步骤:
步骤4-1,根据邻接表建立服装质点弹簧模型,共包含三种弹簧:结构弹簧、剪切弹簧和弯曲弹簧;
步骤4-2,根据不同材质的服装对每种弹簧设置不同的弹簧参数,如弹性系数、阻尼系数、弹簧最大伸长率、大弯曲弹簧设置弹簧原长等,根据材质不同设置不同的碰撞响应系数、静摩擦系数和动摩擦系数。例如对弹簧设置不同参数,棉质服装的拉伸和剪切弹簧设置较大的弹性系数(200~300)、阻尼系数(40~60),并对大弯曲弹簧设置较大的弹性系数(100~150)和阻尼系数(20~30),以实现一定硬度的褶皱效果。丝质服装的拉伸和剪切弹簧设置较大的弹性系数(500~600)、较小的阻尼系数(1~2),弹性服装的拉伸和剪切弹簧设置较小的弹性系数(30~40)、中等的阻尼系数(4~10)。拉伸、弯曲和剪切弹簧设置弹簧最大伸长率以避免产生超弹性,棉质和丝质的最大伸长率较小(0.001~0.002),弹性质地的最大伸长率较大(0.05~0.1),大弯曲弹簧设置弹簧原长(0.9~0.95)。对材质设置不同的碰撞响应系数、静摩擦系数和动摩擦系数,棉质和弹性的摩擦系数较大(分别为0.3和0.15),丝质的摩擦系数较小(0.05),棉质材质密度较大,因此碰撞响应系数较大(2.0~4.0),丝质和弹性的碰撞响应系数较小(1.2~1.5);
步骤4-3,对服装模型上的所有质点进行力的计算,包括质点所受的内力和外力,并进行数值积分计算,其中外力为重力,内力包括弹力Fspring和阻尼力Fdamp,弹力Fspring通过如下公式计算:
其中,ks为拉伸常量,为弹簧两端点即两个服装质点之间的距离,Lorigin为弹簧原长,即构造弹簧模型时服装质点间的初始距离,
阻尼力Fdamp通过如下公式计算:
其中,kd为阻尼常量,为服装质点速度,
由服装质点所受外力和内力的合力Ft和质点的质量m的比值得到服装质点当前的加速度at
at=Ft/m,
使用Verlet积分进行质点位置迭代计算,对于服装模型质点在下一个积分步长的位置Sn+1和服装模型质点在上一个积分步长的位置Sn-1,使用泰勒公式:
S n + 1 = S n + v n Δ t + a t Δt 2 2 ! + O ( Δt 3 ) ( 1 ) S n - 1 = S n - v n Δ t + a t Δt 2 2 ! + O ( Δt 3 ) ( 2 ) ,
其中,Sn表示服装模型质点在当前积分步长的位置,Δt为积分步长,每个积分步长相当于仿真中的一帧,O为泰勒公式的余项,公式(1)加上公式(2),变形得到下一时间步长的位置表达式:
Sn+1=2Sn-Sn-1+atΔt2+O(Δt3),
上述公式计算出下一时间步长位置,并在积分后进行校正;
步骤4-4,人体模型和服装模型进行碰撞检测和碰撞处理;
步骤4-5,根据服装模型质点当前速度和加速度计算下一时间步长速度,通过如下公式计算当前时间步长的速度vn
vn=(Sn+1-Sn-1)/(2Δt)+O(Δt2);
步骤4-6,修改服装模型质点的位置和速度信息,重复步骤4-3~步骤4-5,直到当前服装模型质点与人体发生碰撞则停止对服装模型质点的积分计算。
其中,步骤4-4包括如下步骤:
步骤4-4-1,对人体的每个部分建立OBB包围盒(OrientedBoundingBox,有向包围盒),碰撞检测过程中,服装模型质点首先与OBB包围盒进行检测,排除不可能与人体表面碰撞检测的质点;
步骤4-4-2,使用距离场方法对人体网格点向外扩张,产生虚拟的人体模型,得到扩张人体模型,进行碰撞检测时,只与扩张人体模型进行碰撞检测;
步骤4-4-3,对于检测为碰撞的服装模型质点P,首先将P投影至所属人体部位的中轴,求得其在中轴处的投影点Pproj,反向延长Pproj和P之间的连线,会与扩张人体模型表面产生一个交点,该点记为碰撞响应点vrespond,将质点的最终位置Pposition修改为:
pposition=vrespond+k·Nnormal
k是阈值参数,k的取值范围为0.005~0.3,用于弥补计算过程中的计算精度缺失,Nnormal是碰撞响应点所在三角面片的单位法向量。
本发明通过一些纯图形学的计算来使得服装模型和人体模型在三维空间位置上进行对齐,使用Verlet积分对服装模型质点进行数值积分计算,并进行碰撞检测和碰撞处理,增加试衣真实感,另外根据材质设置不同的参数,并根据这些材质参数来判断服装模型能否穿在人体模型上,给出试穿结果。
有益效果:
1)自动对齐不再是局限于一种模型对应一种对齐方式或是一组对齐参数,而是对某一类的服装模型均可以使用本发明的方法来实现自动地对齐;
2)在进行袖子的对齐时使用的是移动人体模型中胳膊的方法,使其与上衣模型的袖子对齐,这符合人们日常生活中穿衣的习惯思维;
3)在完成服装模型和人体模型的自动对齐后,进行尺寸判断,给出试穿结果,在虚拟试衣中有着较大的实用意义,可以帮助用户选择合适的尺寸大小的服装;
4)该方法具有较高的通用性和实用性,可以将其实施在实际的应用上。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是本发明的整体步骤图。
图2是本发明的上衣对齐步骤图。
图3是本发明袖子对齐时查找关键点的示意图。
具体实施方式
本发明的方法可分为六大步骤,如图1所示,包括:步骤1判断服装模型;步骤2上衣模型自动对齐;步骤3裤子模型自动对齐;步骤4碰撞检测和处理;步骤5尺寸判断;步骤6给出试穿结果。
本发明的具体步骤如下:步骤1,载入服装模型,如读取计算机某一目录下的衣服模型文件“男士短袖衬衫.3ds”,判断衣服模型的类型,若为上衣模型则将服装模型的类型标记为0,若为裤子模型则将服装模型的类型标记为1,读取服装模型的信息,并为其构造邻接表,所述服装模型为三维服装模型,根据已知的服装模型的类型,若为上衣模型,则执行步骤2,若为裤子模型,则执行步骤3;所述服装模型的信息包括顶点信息和三角面片信息,所述人体模型为根据人体特征点和特征尺寸获得型值点,使用插值样条曲面对人体各部位建立曲面模型并进行光顺拼接得到的人体网格模型;
步骤2,根据步骤1的人体模型和上衣模型,进行对齐操作,完成上衣模型和人体模型在三维空间上的位置预处理;
步骤3,根据步骤1的人体模型和裤子模型,进行对齐操作,完成裤子模型和人体模型在三维空间上的位置预处理;
步骤4,位置预处理后,对服装模型和人体模型进行碰撞检测和碰撞处理;
步骤5,根据服装材质以及服装的尺寸大小来判断用户是否能够穿上服装,在步骤4中,若根据服装材质的各项参数计算服装模型质点位置时,服装模型质点位置仍然在人体模型内,则标记服装模型无法被人体模型穿上,否则标记为服装能够穿上;
步骤6,给出判断用户是否能够穿上服装的结果,若穿不上,则给用户反馈,若能穿上则进行动态仿真并显示试穿效果。
其中,如图2所示,步骤2包括如下步骤:
步骤2-1,遍历上衣模型邻接表中的顶点坐标,得到上衣模型的三维空间范围,根据上衣模型的三维空间范围,建立上衣模型AABB包围盒(AxisAlignedBoundingBox,轴对齐包围盒);
步骤2-2,设定八叉树的深度,以上衣模型的AABB包围盒为范围建立八叉树,树节点存储该树节点上的顶点个数和顶点坐标,使用上衣模型的邻接表,将上衣模型的顶点放入八叉树的树节点中;
步骤2-3,以人体模型的特征点会阴点作为原点,原点向头部特征点的方向为y轴方向,建立右手定则的三维坐标系,查找上衣模型的中心轴,实现上衣模型x轴和z轴方向上的对齐;
步骤2-4,查找上衣模型的肩的位置,将其和人体模型的肩的位置进行对齐,实现上衣模型y轴方向上的对齐;
步骤2-5,对服装模型构造质点-弹簧模型,通过人体部位标记服装模型对应的部位,确定上衣模型上每个质点所属人体的部位,进行标记,所述人体部位分为躯干、臀部、右大腿、左大腿、右小腿、左小腿、右大臂、左大臂、右小臂以及左小臂10个部分,则左大臂所对应的衣服模型的部位即为上衣模型的左侧袖子;
步骤2-6,查找到上衣模型的左侧袖子部位,使用袖子上端中心点对上衣位置进行y轴和z轴方向的微调;
步骤2-7,根据胳膊的中心轴和袖子的中心轴计算胳膊旋转后的终止位置坐标,调用人体模型胳膊旋转的函数,使得胳膊的中心轴和袖子的中心轴重合。
其中,步骤2-3包括如下步骤:
步骤2-3-1,使用步骤2-2中建立的八叉树查找上衣模型下摆点中x坐标值最大的点hem_xmax和x坐标值最小的点hem_xmin
步骤2-3-2,使用步骤2-2中建立的八叉树查找上衣模型左右两边各自的y坐标值最大的点ymaxleft和点ymaxright
步骤2-3-3,由步骤2-3-1中得到的点hem_xmax和点hem_xmin来计算上衣模型下摆的中心点bottom,中心点bottom为点hem_xmax和点hem_xmin的中间点,由步骤2-3-2中得到的点ymaxleft和点ymaxright来计算上衣模型最上方的中心点top,中心点top为点ymaxleft和点ymaxright的中间点,由点top和点bottom构成的轴即为上衣模型的中心轴ClothAxis;
步骤2-3-4,将经过人体模型的头部特征点和腰部特征点所在的直线作为人体模型的中心轴HumanAxis,由步骤2-3-3中得到的上衣模型的中心轴ClothAxis与人体模型的中心轴HumanAxis进行对齐,完成上衣模型在x轴和z轴方向上的对齐。
其中,步骤2-4包括如下步骤:
步骤2-4-1,使用步骤2-2中建立的八叉树查找上衣模型中所有x坐标值小于点hem_xmin的x坐标值的点,将其中y坐标值最大的点作为上衣模型肩部点shoulder_cloth,人体模型的肩部点shoulder_human则是人体模型左大臂和躯干衔接处y坐标值最大的点;
步骤2-4-2,使用步骤2-4-1中得到的上衣模型肩部最高点shoulder_cloth和人体模型的肩部点shoulder_human对上衣模型进行在y轴方向上的对齐;
步骤2-4-3,根据经验值对z轴方向的对齐进行微调,减少上衣模型顶点的z坐标值,经验值取0.4,使得微调后上衣模型z坐标值减小0.4,为之后的对齐计算减少误差。
其中,如图3所示,步骤2-6包括如下步骤:
步骤2-6-1,由步骤2-5查找到上衣模型中的左侧袖子部位,由于服装模型和人体模型都是左右对称的,因此只需要计算一侧的袖子和胳膊即可,在计算时选用了左侧袖子和左侧胳膊,遍历所有袖子部位的点,查找到y坐标值最大的点leftsleeve_y1max和y坐标值最小的点leftsleeve_y0min
步骤2-6-2,遍历袖子部位所有的点,查找到x坐标值和点leftsleeve_y1max的x坐标值相差小于0.08的点中y坐标值最小的点,记为leftsleeve_y1min,查找到x坐标值和点leftsleeve_y0min的x坐标值相差小于0.08的点中y坐标值最大的点,记为leftsleeve_y0max(这里的0.08为一个经验值,由于袖子部位本身并不大,所以在设置经验值的时候不能过大,经验值过大会导致误差很大,但是经验值过小又可能导致这个范围内不存在点,找不到预期的点,通过实验发现0.08是一个比较符合要求的经验值);
步骤2-6-3,由点leftsleeve_y1min和点leftsleeve_y1max计算得到中点leftsleeve_top,由点leftsleeve_y0min和点leftsleeve_y0max计算得到中点leftsleeve_bottom,将点leftsleeve_top和点leftsleeve_bottom所在的直线作为左侧袖子的轴LeftSleeveAxis;
步骤2-6-4,由人体模型获取人体左侧大臂根部(左侧大臂和躯干的衔接处)和手肘部(左侧大臂和小臂的衔接处)的中心点,分别为点leftarm_top和点leftarm_bottom,得到左侧大臂的中心轴LeftArmAxis,保持服装模型的x轴方向位置不动,向y轴方向和z轴方向通过微调向量进行平移微调,使得微调后点leftsleeve_top和点leftarm_top的y坐标值、z坐标值分别相等,微调的向量adjust如下:
α d j u s t =
0 , l e f t a r m _ b o t t o m . y - l e f t a r m _ t o p . y l e f t a r m _ b o t t o m . x - l e f t a r m _ t o p . x * ( l e f t s l e e v e _ t o p . x - l e f t a r m _ t o p . x ) + l e f t a r m _ t o p . y - l e f t s l e e v e _ t o p . y , l e f t a r m _ b o t t o m . z - l e f t a r m _ t o p . z l e f t a r m _ b o t t o m . x - l e f t a r m _ t o p . x * ( l e f t s l e e v e _ t o p . x - l e f t a r m _ t o p . x ) + l e f t a r m _ t o p . z - l e f t s l e e v e _ t o p . z ;
其中leftarm_bottom.x表示点leftarm_bottom的x坐标值,leftarm_bottom.y表示点leftarm_bottom的y坐标值,leftarm_bottom.z表示点leftarm_bottom的z坐标值,leftsleeve_top.x表示点leftsleeve_top的x坐标值,leftsleeve_top.y表示点leftsleeve_top的y坐标值,leftsleeve_top.z表示点leftsleeve_top的z坐标值,leftarm_top.x表示点leftarm_top的x坐标值,leftarm_top.y表示点leftarm_top的y坐标值,leftarm_top.z表示点leftarm_top的z坐标值;
步骤2-7,根据左侧大臂的中心轴LeftArmAxis和左侧袖子的中心轴LeftSleeveAxis计算胳膊旋转后的终止位置坐标destPoint,公式如下:
d e s t P o int = l e f t s l e e v e _ t o p . x - ( l e f t s l e e v e _ t o p . x - l e f t s l e e v e _ b o t t o m . x ) * l e f t a r m _ l e n g h t l e f t s l e e v e _ l e n g h t , l e f t s l e e v e _ t o p . y - ( l e f t s l e e v e _ t o p . y - l e f t s l e e v e _ b o t t o m . y ) * l e f t a r m _ l e n g h t l e f t s l e e v e _ l e n g h t , l e f t s l e e v e _ t o p . z - ( l e f t s l e e v e _ t o p . z - l e f t s l e e v e _ b o t t o m . z ) * l e f t a r m _ l e n g h t l e f t s l e e v e _ l e n g h t ,
其中leftsleeve_bottom.x表示点leftsleeve_bottom的x坐标值,leftsleeve_bottom.y表示点leftsleeve_bottom的y坐标值,leftsleeve_bottom.z表示点leftsleeve_bottom的z坐标值,leftarm_length为左侧大臂的中心轴LeftArmAxis的长度即为点leftarm_top和点leftarm_bottom间的距离长度,leftsleeve_length为左侧袖子的中心轴LeftSleeveAxis的长度即为点leftsleeve_top和点leftsleeve_bottom间的距离长度,分别通过如下公式计算:
l e f t a r m _ l e n g t h = ( l e f t a r m _ t o p . x - l e f t a r m _ b o t t o m . x ) 2 + ( l e f t a r m _ t o p . y - l e f t a r m _ b o t t o m . y ) 2 + ( l e f t a r m _ t o p . z - l e f t a r m _ b o t t o m . z ) 2 ,
l e f t s l e e v e _ l e n g t h = ( l e f t s l e e v e _ t o p . x - l e f t s l e e v e _ b o t t o m . x ) 2 + ( l e f t s l e e v e _ t o p . y - l e f t s l e e v e _ b o t t o m . y ) 2 + ( l e f t s l e e v e _ t o p . z - l e f t s l e e v e _ b o t t o m . z ) 2
调用人体模型胳膊旋转的函数SetArmToNewPosition,使得胳膊的中心轴和袖子的中心轴重合。函数SetArmToNewPosition是根据函数参数newPosition来修改人体模型左右手肘处的特征点,从而达到修改人体模型胳膊位置的目的。
其中,步骤3包括如下步骤:
步骤3-1,遍历裤子模型邻接表中所有点,得到裤子模型x轴方向坐标值最小的点trousers_xmin,x轴方向坐标值最大的点trousers_xmax,y轴方向坐标值最大的点trousers_ymax,z轴方向坐标值最小的点trousers_zmin,z轴方向坐标值最大的点trousers_zmax
步骤3-2,由步骤3-1中查找到的点trousers_xmin和点trousers_xmax得到裤子模型在x轴方向上的中心点trousers_xmiddle,中心点trousers_xmiddle即为点trousers_xmin和点trousers_xmax的中间点,由步骤3-1中查找到的点trousers_zmin和点trousers_zmax得到裤子模型在z轴方向上的中心点trousers_zmiddle,中心点trousers_zmiddle即为点trousers_zmin和点trousers_zmax的中间点,根据点trousers_xmiddle的x坐标值和点trousers_zmiddle的z坐标值进行x轴方向和z轴方向上的对齐。
步骤3-3,使用由步骤3-2中查找到的点trousers_ymax的y坐标值和人体模型的腰部特征点waist_human的y坐标值进行对齐,从而达到y轴方向上的对齐。
其中,步骤4包括如下步骤:
步骤4-1,根据邻接表建立服装质点弹簧模型,共包含三种弹簧:结构弹簧、剪切弹簧和弯曲弹簧;
步骤4-2,根据不同材质的服装对每种弹簧设置不同的弹簧参数,如弹性系数、阻尼系数、弹簧最大伸长率、大弯曲弹簧设置弹簧原长等,根据材质不同设置不同的碰撞响应系数、静摩擦系数和动摩擦系数。例如对弹簧设置不同参数,棉质服装的拉伸和剪切弹簧设置较大的弹性系数(200~300)、阻尼系数(40~60),并对大弯曲弹簧设置较大的弹性系数(100~150)和阻尼系数(20~30),以实现一定硬度的褶皱效果。丝质服装的拉伸和剪切弹簧设置较大的弹性系数(500~600)、较小的阻尼系数(1~2),弹性服装的拉伸和剪切弹簧设置较小的弹性系数(30~40)、中等的阻尼系数(4~10)。拉伸、弯曲和剪切弹簧设置弹簧最大伸长率以避免产生超弹性,棉质和丝质的最大伸长率较小(0.001~0.002),弹性质地的最大伸长率较大(0.05~0.1),大弯曲弹簧设置弹簧原长(0.9~0.95)。对材质设置不同的碰撞响应系数、静摩擦系数和动摩擦系数,棉质和弹性的摩擦系数较大(分别为0.3和0.15),丝质的摩擦系数较小(0.05),棉质材质密度较大,因此碰撞响应系数较大(2.0~4.0),丝质和弹性的碰撞响应系数较小(1.2~1.5);
步骤4-3,对服装模型上的所有质点进行力的计算,包括质点所受的内力和外力,并进行数值积分计算,其中外力为重力,内力包括弹力Fspring和阻尼力Fdamp,弹力Fspring通过如下公式计算:
其中,ks为拉伸常量,为弹簧两端点即两个服装质点之间的距离,Lorigin为弹簧原长,即构造弹簧模型时服装质点间的初始距离,
阻尼力Fdamp通过如下公式计算:
其中,kd为阻尼常量,为服装质点速度,
由服装质点所受外力和内力的的合力Ft和质点的质量m的比值得到服装质点当前的加速度at
at=Ft/m,
使用Verlet积分进行质点位置迭代计算,对于服装模型质点在下一个积分步长的位置Sn+1和服装模型质点在上一个积分步长的位置Sn-1,使用泰勒公式:
S n + 1 = S n + v n Δ t + a t Δt 2 2 ! + O ( Δt 3 ) ( 1 ) S n - 1 = S n - v n Δ t + a t Δt 2 2 ! + O ( Δt 3 ) ( 2 ) ,
其中,Sn表示服装模型质点在当前积分步长的位置,Δt为积分步长,每个积分步长相当于仿真中的一帧,O为泰勒公式的余项,公式(1)加上公式(2),变形得到下一时间步长的位置表达式:
Sn+1=2Sn-Sn-1+atΔt2+O(Δt3),
上述公式计算出下一时间步长位置,并在积分后进行校正;
步骤4-4,人体模型和服装模型进行碰撞检测和碰撞处理;
步骤4-5,根据服装模型质点当前速度和加速度计算下一时间步长速度,通过如下公式计算当前时间步长的速度vn
vn=(Sn+1-Sn-1)/(2Δt)+O(Δt2);
步骤4-6,修改服装模型质点的位置和速度信息,重复步骤4-3~步骤4-5,直到当前服装模型质点与人体发生碰撞则停止对服装模型质点的积分计算。
其中,步骤4-4包括如下步骤:
步骤4-4-1,对人体的每个部分建立OBB包围盒(OrientedBoundingBox,有向包围盒),碰撞检测过程中,服装模型质点首先与OBB包围盒进行检测,排除不可能与人体表面碰撞检测的质点;
步骤4-4-2,使用距离场方法对人体网格点向外扩张,产生虚拟的人体模型,得到扩张人体模型,进行碰撞检测时,只与扩张人体模型进行碰撞检测;
步骤4-4-3,对于检测为碰撞的服装模型质点P,首先将P投影至所属人体部位的中轴,求得其在中轴处的投影点Pproj,反向延长Pproj和P之间的连线,会与扩张人体模型表面产生一个交点,该点记为碰撞响应点vrespond,将质点的最终位置Pposition修改为:
pposition=vrespond+k·Nnormal
k是阈值参数,用于弥补计算过程中的计算精度缺失,Nnormal是碰撞响应点所在三角面片的单位法向量。
本发明提供了一种计算机中虚拟试衣服装模型自动对齐及尺寸判断的方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方案,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

Claims (8)

1.一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法,其特征在于,包括以下步骤:
步骤1,载入服装模型和人体模型,判断服装模型的类型,若为上衣模型则将服装模型的类型标记为0,若为裤子模型则将服装模型的类型标记为1,读取服装模型的信息,并为其构造邻接表;根据已知的服装模型的类型,若为上衣模型,则执行步骤2,若为裤子模型,则执行步骤3;所述服装模型为三维服装模型,服装模型的信息包括顶点信息和三角面片信息;所述人体模型为根据人体特征点和特征尺寸获得型值点,使用插值样条曲面对人体各部位建立曲面模型并进行光顺拼接得到的人体网格模型;
步骤2,根据步骤1的人体模型和上衣模型,进行对齐操作,完成上衣模型和人体模型在三维空间上的位置预处理;
步骤3,根据步骤1的人体模型和裤子模型,进行对齐操作,完成裤子模型和人体模型在三维空间上的位置预处理;
步骤4,位置预处理后,对服装模型和人体模型进行碰撞检测和碰撞处理;
步骤5,根据服装材质以及服装的尺寸大小来判断用户是否能够穿上服装,在步骤4中,若根据服装材质的各项参数计算服装模型质点位置时,服装模型质点位置仍然在人体模型内,则标记服装模型无法被人体模型穿上,否则标记为服装能够穿上;
步骤6,给出判断用户是否能够穿上服装的结果,若穿不上,则给用户反馈,若能穿上则进行动态仿真并显示试穿效果。
2.如权利要求1所述的一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法,其特征在于,步骤2包括如下步骤:
步骤2-1,遍历上衣模型邻接表中的顶点坐标,得到上衣模型的三维空间范围,根据上衣模型的三维空间范围,建立上衣模型AABB包围盒;
步骤2-2,以上衣模型的AABB包围盒为范围建立八叉树,树节点存储该树节点上的顶点个数和顶点坐标,使用上衣模型的邻接表,将上衣模型的顶点放入八叉树的树节点中;
步骤2-3,查找上衣模型的中心轴,实现上衣模型在x轴和z轴方向上的对齐;
步骤2-4,查找上衣模型的肩的位置,将其和人体模型的肩的位置进行对齐,实现上衣模型在y轴方向上的对齐;
步骤2-5,对服装模型构造质点-弹簧模型,通过人体部位标记服装模型对应的部位,确定上衣模型上每个质点所属人体的部位,进行标记,所述人体部位分为躯干、臀部、右大腿、左大腿、右小腿、左小腿、右大臂、左大臂、右小臂以及左小臂10个部分,则左大臂所对应的衣服模型的部位即为上衣模型的左侧袖子;
步骤2-6,查找到上衣模型的左侧袖子部位,使用袖子上端中心点对上衣位置进行y轴和z轴方向的微调;
步骤2-7,根据胳膊的中心轴和袖子的中心轴计算胳膊旋转后的终止位置坐标,调用人体模型胳膊旋转的函数,使得胳膊的中心轴和袖子的中心轴重合。
3.如权利要求2所述的一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法,其特征在于,步骤2-3包括如下步骤:
步骤2-3-1,使用步骤2-2中建立的八叉树查找上衣模型下摆点中x坐标值最大的点hem_xmax和x坐标值最小的点hem_xmin
步骤2-3-2,使用步骤2-2中建立的八叉树查找上衣模型左右两边各自的y坐标值最大的点ymaxleft和点ymaxright
步骤2-3-3,由步骤2-3-1中得到的点hem_xmax和点hem_xmin来计算上衣模型下摆的中心点bottom,中心点bottom为点hem_xmax和点hem_xmin的中间点,由步骤2-3-2中得到的点ymaxleft和点ymaxright来计算上衣模型最上方的中心点top,中心点top为点ymaxleft和点ymaxright的中间点,由点top和点bottom构成的轴即为上衣模型的中心轴ClothAxis;
步骤2-3-4,将经过人体模型的头部特征点和腰部特征点所在的直线作为人体模型的中心轴HumanAxis,由步骤2-3-3中得到的上衣模型的中心轴ClothAxis与人体模型的中心轴HumanAxis进行对齐,完成上衣模型在x轴和z轴方向上的对齐。
4.如权利要求3所述的一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法,其特征在于,步骤2-4包括如下步骤:
步骤2-4-1,使用步骤2-2中建立的八叉树查找上衣模型中所有x坐标值小于点hem_xmin的x坐标值的点,将其中y坐标值最大的点作为上衣模型肩部最高点shoulder_cloth,人体模型的肩部点shoulder_human则是人体模型左大臂和躯干衔接处y坐标值最大的点;
步骤2-4-2,使用步骤2-4-1中得到的上衣模型肩部最高点shoulder_cloth和人体模型的肩部点shoulder_human对上衣模型进行在y轴方向上的对齐;
步骤2-4-3,对z轴方向的对齐进行微调,使得微调后上衣模型z坐标值减少。
5.如权利要求4所述的一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法,其特征在于,步骤2-6包括如下步骤:
步骤2-6-1,由步骤2-5查找到上衣模型中的左侧袖子部位,遍历所有袖子部位的点,查找到y坐标值最大的点leftsleeve_y1max和y坐标值最小的点leftsleeve_y0min
步骤2-6-2,遍历袖子部位所有的点,查找到x坐标值和点leftsleeve_y1max的x坐标值相差小于0.08的点中y坐标值最小的点,记为leftsleeve_y1min,查找到x坐标值和点leftsleeve_y0min的x坐标值相差小于0.08的点中y坐标值最大的点,记为leftsleeve_y0max
步骤2-6-3,由点leftsleeve_y1min和点leftsleeve_y1max计算得到中点leftsleeve_top,由点leftsleeve_y0min和点leftsleeve_y0max计算得到中点leftsleeve_bottom,将点leftsleeve_top和点leftsleeve_bottom所在的直线作为左侧袖子的轴LeftSleeveAxis;
步骤2-6-4,由人体模型获取人体左侧大臂根部即左侧大臂和躯干的衔接处和手肘部即左侧大臂和小臂的衔接处的中心点,分别为点leftarm_top和点leftarm_bottom,得到左侧大臂的中心轴LeftArmAxis,保持服装模型的x轴方向位置不动,向y轴方向和z轴方向通过微调向量进行平移微调,使得微调后点leftsleeve_top和点leftarm_top的y坐标值、z坐标值分别相等,微调的向量adjust如下: a d j u s t = 0 , l e f t a r m _ b o t t o m . y - l e f t a r m _ t o p . y l e f t a r m _ b o t t o m . x - l e f t a r m _ t o p . x * ( l e f t s l e e v e _ t o p . x - l e f t a r m _ t o p . x ) + l e f t a r m _ t o p . y - l e f t s l e e v e _ t o p . y , l e f t a r m _ b o t t o m . z - l e f t a r m _ t o p . z l e f t a r m _ b o t t o m . x - l e f t a r m _ t o p . x * ( l e f t s l e e v e _ t o p . x - l e f t a r m _ t o p . x ) + l e f t a r m _ t o p . z - l e f t s l e e v e _ t o p . z
其中leftarm_bottom.x表示点leftarm_bottom的x坐标值,leftarm_bottom.y表示点leftarm_bottom的y坐标值,leftarm_bottom.z表示点leftarm_bottom的z坐标值,leftsleeve_top.x表示点leftsleeve_top的x坐标值,leftsleeve_top.y表示点leftsleeve_top的y坐标值,leftsleeve_top.z表示点leftsleeve_top的z坐标值,leftarm_top.x表示点leftarm_top的x坐标值,leftarm_top.y表示点leftarm_top的y坐标值,leftarm_top.z表示点leftarm_top的z坐标值;
步骤2-7,根据左侧大臂的中心轴LeftArmAxis和左侧袖子的中心轴LeftSleeveAxis计算胳膊旋转后的终止位置坐标destPoint,公式如下: d e s t P o int = l e f t s l e e v e _ t o p . x - ( l e f t s l e e v e _ t o p . x - l e f t s l e e v e _ b o t t o m . x ) * l e f t a r m _ l e n g t h l e f t s l e e v e _ l e n g t h , l e f t s l e e v e _ t o p . y - ( l e f t s l e e v e _ t o p . y - l e f t s l e e v e _ b o t t o m . y ) * l e f t a r m _ l e n g t h l e f t s l e e v e _ l e n g t h , l e f t s l e e v e _ t o p . z - ( l e f t s l e e v e _ t o p . z - l e f t s l e e v e _ b o t t o m . z ) * l e f t a r m _ l e n g t h l e f t s l e e v e _ l e n g t h ,
其中leftsleeve_bottom.x表示点leftsleeve_bottom的x坐标值,leftsleeve_bottom.y表示点leftsleeve_bottom的y坐标值,leftsleeve_bottom.z表示点leftsleeve_bottom的z坐标值,leftarm_length为左侧大臂的中心轴LeftArmAxis的长度即为点leftarm_top和点leftarm_bottom间的距离长度,leftsleeve_length为左侧袖子的中心轴LeftSleeveAxis的长度即为点leftsleeve_top和点leftsleeve_bottom间的距离长度,分别通过如下公式计算:
l e f t a r m _ l e n g t h = ( l e f t a r m _ t o p . x - l e f t a r m _ b o t t o m . x ) 2 + ( l e f t a r m _ t o p . y - l e f t a r m _ b o t t o m . y ) 2 + ( l e f t a r m _ t o p . z - l e f t a r m _ b o t t o m . z ) 2 ,
l e f t s l e e v e _ l e n g t h = ( l e f t s l e e v e _ t o p . x - l e f t s l e e v e _ b o t t o m . x ) 2 + ( l e f t s l e e v e _ t o p . y - l e f t s l e e v e _ b o t t o m . y ) 2 + ( l e f t s l e e v e _ t o p . z - l e f t s l e e v e _ b o t t o m . z ) 2 ,
调用人体模型胳膊旋转的函数SetArmToNewPosition,使得胳膊的中心轴和袖子的中心轴重合。
6.如权利要求5所述的一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法,其特征在于,步骤3包括如下步骤:
步骤3-1,遍历裤子模型邻接表中所有点,得到裤子模型x轴方向坐标值最小的点trousers_xmin,x轴方向坐标值最大的点trousers_xmax,y轴方向坐标值最大的点trousers_ymax,z轴方向坐标值最小的点trousers_zmin,z轴方向坐标值最大的点trousers_zmax
步骤3-2,由步骤3-1中得到的点trousers_xmin和点trousers_xmax得到裤子模型在x轴方向上的中心点trousers_xmiddle,中心点trousers_xmiddle即为点trousers_xmin和点trousers_xmax的中间点,由步骤3-1中查找到的点trousers_zmin和点trousers_zmax得到裤子模型在z轴方向上的中心点trousers_zmiddle,中心点trousers_zmiddle即为点trousers_zmin和点trousers_zmax的中间点,根据中心点trousers-xmiddle的x坐标值和中心点trousers_zmiddle的z坐标值进行x轴方向和z轴方向上的对齐;
步骤3-3,使用由步骤3-1中得到的点trousers_ymax的y坐标值和人体模型的腰部特征点waist_human的y坐标值进行对齐,从而达到y轴方向上的对齐。
7.如权利要求6所述的一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法,其特征在于,步骤4包括如下步骤:
步骤4-1,根据邻接表建立服装模型质点弹簧模型;
步骤4-2,根据不同材质的服装对每种弹簧设置不同的弹簧参数,根据材质不同设置不同的碰撞响应系数、静摩擦系数和动摩擦系数;
步骤4-3,对服装模型上的所有质点进行力的计算,包括质点所受的内力和外力,并进行数值积分计算,其中外力为重力,内力包括弹力Fspring和阻尼力Fdamp,弹力Fspring通过如下公式计算:
其中,ks为拉伸常量,为弹簧两端点即两个服装质点之间的距离,Lorigin为弹簧原长,即构造弹簧模型时服装质点间的初始距离,
阻尼力Fdamp通过如下公式计算:
其中,kd为阻尼常量,为服装质点速度,
由服装质点所受外力和内力的合力Ft和质点的质量m的比值得到服装质点当前的加速度at
at=Ft/m,
使用Verlet积分进行质点位置迭代计算,对于服装模型质点在下一个积分步长的位置Sn+1和服装模型质点在上一个积分步长的位置Sn-1,使用泰勒公式:
S n + 1 = S n + v n Δ t + a t Δt 2 2 ! + O ( Δt 3 ) ( 1 ) S n - 1 = S n - v n Δ t + a t Δt 2 2 ! + O ( Δt 3 ) ( 2 ) ,
其中,Sn表示服装模型质点在当前积分步长的位置,Δt为积分步长,每个积分步长相当于仿真中的一帧,O为泰勒公式的余项,公式(1)加上公式(2),变形得到下一时间步长Sn+1的位置表达式:
Sn+1=2Sn-Sn-1+atΔt2+O(Δt3)
上述公式计算出下一时间步长位置,并在积分后进行校正;
步骤4-4,人体模型和服装模型进行碰撞检测和碰撞处理;
步骤4-5,根据服装模型质点当前速度和加速度计算下一时间步长速度,通过如下公式计算当前时间步长的速度vn
vn=(Sn+1-Sn-1)/(2Δt)+O(Δt2);
步骤4-6,修改服装模型质点的位置和速度信息,重复步骤4-3~步骤4-5,直到当前服装模型质点与人体模型发生碰撞则停止对服装模型质点的积分计算。
8.如权利要求7所述的一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法,其特征在于,步骤4-4包括如下步骤:
步骤4-4-1,对人体的每个部分建立OBB包围盒,碰撞检测过程中,服装模型质点首先与OBB包围盒进行检测,排除不可能与人体表面碰撞检测的服装模型质点;
步骤4-4-2,使用距离场方法对人体网格点向外扩张,产生虚拟的人体模型,得到扩张人体模型,进行碰撞检测时,只与扩张人体模型进行碰撞检测;
步骤4-4-3,对于检测为碰撞的服装模型质点P,首先将P投影至所属人体部位的中轴,求得其在中轴处的投影点Pproj,反向延长Pproj和P之间的连线,所述连线与扩张人体模型表面产生一个交点,该点记为碰撞响应点vrespond,将质点的最终位置Pposition修改为:
pposition=vrespond+k·Nnormal
k是阈值参数,用于弥补计算过程中的计算精度缺失,Nnormal是碰撞响应点所在三角面片的单位法向量。
CN201510762854.8A 2015-11-10 2015-11-10 一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法 Active CN105303608B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510762854.8A CN105303608B (zh) 2015-11-10 2015-11-10 一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510762854.8A CN105303608B (zh) 2015-11-10 2015-11-10 一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法

Publications (2)

Publication Number Publication Date
CN105303608A true CN105303608A (zh) 2016-02-03
CN105303608B CN105303608B (zh) 2017-11-07

Family

ID=55200825

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510762854.8A Active CN105303608B (zh) 2015-11-10 2015-11-10 一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法

Country Status (1)

Country Link
CN (1) CN105303608B (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354959A (zh) * 2016-08-31 2017-01-25 北京维盛视通科技有限公司 三维服装与人体模型的碰撞检测方法及装置
CN106372344A (zh) * 2016-09-05 2017-02-01 中山大学 一种基于特征尺寸约束的三维服装变形方法及其系统
CN106502399A (zh) * 2016-10-31 2017-03-15 江西服装学院 虚拟试衣方法、装置及系统和三维面料材质库建立方法及装置
CN106600361A (zh) * 2016-11-23 2017-04-26 中国科学院声学研究所 一种实现虚拟试衣方法及装置,电子终端
CN106910115A (zh) * 2017-02-20 2017-06-30 宁波大学 基于智能终端的虚拟化试衣方法
CN106934688A (zh) * 2017-02-20 2017-07-07 宁波大学 基于3d体态参数提取的服装加工方法
CN107134001A (zh) * 2017-05-26 2017-09-05 厦门幻世网络科技有限公司 用于3d动画材料的图像处理的方法、装置、设备及介质
CN108230455A (zh) * 2018-01-31 2018-06-29 东南大学 一种基于骨骼驱动的虚拟服装变形仿真方法
CN110992417A (zh) * 2019-11-22 2020-04-10 上海闻泰电子科技有限公司 人体尺码测量方法、装置、计算机设备以及存储介质
CN112734936A (zh) * 2020-12-09 2021-04-30 北京维盛视通科技有限公司 虚拟服装穿戴方法、穿戴比例计算方法及装置、电子设备
CN114818373A (zh) * 2022-05-20 2022-07-29 天工信创(广州)信息科技有限公司 一种基于缝合关系的版片网格顶点对齐方法和存储介质
CN115761143A (zh) * 2022-12-07 2023-03-07 武汉纺织大学 一种基于2d图像的3d虚拟换装模型生成方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101620745A (zh) * 2009-08-06 2010-01-06 东华大学 面向大型电子商务环境虚拟服装的仿真方法
CN104881557A (zh) * 2015-06-19 2015-09-02 南京大学 一种计算机中人体服装动态仿真实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101620745A (zh) * 2009-08-06 2010-01-06 东华大学 面向大型电子商务环境虚拟服装的仿真方法
CN104881557A (zh) * 2015-06-19 2015-09-02 南京大学 一种计算机中人体服装动态仿真实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CLEMENS GROSS ET AL: "《Automatic Pre-Positioning Of Virtual Clothing》", 《PROCEEDINGS OF THE 19TH SPRING CONFERENCE ON COMPUTER GRAPHICS》 *
陈燕等: "《任意衣物和人体的3D 试穿实时仿真》", 《计算机应用》 *

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354959A (zh) * 2016-08-31 2017-01-25 北京维盛视通科技有限公司 三维服装与人体模型的碰撞检测方法及装置
CN106372344A (zh) * 2016-09-05 2017-02-01 中山大学 一种基于特征尺寸约束的三维服装变形方法及其系统
CN106502399A (zh) * 2016-10-31 2017-03-15 江西服装学院 虚拟试衣方法、装置及系统和三维面料材质库建立方法及装置
CN106502399B (zh) * 2016-10-31 2019-08-23 江西服装学院 虚拟试衣方法、装置及系统和三维面料材质库建立方法及装置
CN106600361A (zh) * 2016-11-23 2017-04-26 中国科学院声学研究所 一种实现虚拟试衣方法及装置,电子终端
CN106910115A (zh) * 2017-02-20 2017-06-30 宁波大学 基于智能终端的虚拟化试衣方法
CN106934688A (zh) * 2017-02-20 2017-07-07 宁波大学 基于3d体态参数提取的服装加工方法
CN106910115B (zh) * 2017-02-20 2021-01-29 宁波大学 基于智能终端的虚拟化试衣方法
CN106934688B (zh) * 2017-02-20 2021-01-29 宁波大学 基于3d体态参数提取的服装加工方法
CN107134001B (zh) * 2017-05-26 2020-05-15 厦门黑镜科技有限公司 用于3d动画材料的图像处理的方法、装置、设备及介质
CN107134001A (zh) * 2017-05-26 2017-09-05 厦门幻世网络科技有限公司 用于3d动画材料的图像处理的方法、装置、设备及介质
CN108230455A (zh) * 2018-01-31 2018-06-29 东南大学 一种基于骨骼驱动的虚拟服装变形仿真方法
CN110992417A (zh) * 2019-11-22 2020-04-10 上海闻泰电子科技有限公司 人体尺码测量方法、装置、计算机设备以及存储介质
CN110992417B (zh) * 2019-11-22 2023-08-11 上海闻泰电子科技有限公司 人体尺码测量方法、装置、计算机设备以及存储介质
CN112734936A (zh) * 2020-12-09 2021-04-30 北京维盛视通科技有限公司 虚拟服装穿戴方法、穿戴比例计算方法及装置、电子设备
CN112734936B (zh) * 2020-12-09 2023-07-11 北京维盛视通科技有限公司 虚拟服装穿戴方法、穿戴比例计算方法及装置、电子设备
CN114818373A (zh) * 2022-05-20 2022-07-29 天工信创(广州)信息科技有限公司 一种基于缝合关系的版片网格顶点对齐方法和存储介质
CN114818373B (zh) * 2022-05-20 2024-08-02 广州杉缔智衣科技有限公司 一种基于缝合关系的版片网格顶点对齐方法和存储介质
CN115761143A (zh) * 2022-12-07 2023-03-07 武汉纺织大学 一种基于2d图像的3d虚拟换装模型生成方法及装置
CN115761143B (zh) * 2022-12-07 2023-09-19 武汉纺织大学 一种基于2d图像的3d虚拟换装模型生成方法及装置

Also Published As

Publication number Publication date
CN105303608B (zh) 2017-11-07

Similar Documents

Publication Publication Date Title
CN105303608A (zh) 一种计算机中虚拟试衣服装模型自动对齐及尺寸判断方法
Liu et al. 3D interactive garment pattern-making technology
CN104881557B (zh) 一种计算机中人体服装动态仿真实现方法
Liu et al. Optimization design of cycling clothes’ patterns based on digital clothing pressures
Wibowo et al. DressUp: a 3D interface for clothing design with a physical mannequin
CN108230455A (zh) 一种基于骨骼驱动的虚拟服装变形仿真方法
CN101620745B (zh) 面向大型电子商务环境虚拟服装的仿真方法
CN106372344A (zh) 一种基于特征尺寸约束的三维服装变形方法及其系统
CN103325146A (zh) 一种基于人体截面环数据的衣物面片三维映射方法
CN113361180A (zh) 一种运动状态下运动文胸穿着受力状态分析方法
Huang et al. Automatic alignment for virtual fitting using 3D garment stretching and human body relocation
Wu et al. Archaeological and digital restoration of straight-front robe of Mawangdui Han Dynasty Tomb based on 3D reverse engineering and man-machine interactive technologies
Fontana et al. A CAD-oriented cloth simulation system with stable and efficient ODE solution
Liu et al. Reconstruction and Digital Display Design of Women’s Clothing in Jiangnan Area of Yuan Dynasty under Digital
Ren et al. Digital twin of overseas opera relics: case study of arhat costumes in the collection of the metropolitan museum of art
CN107194990B (zh) 一种三维服装自适应着装方法
Shi et al. Digital Inheritance of Traditional Mongolian Robes of the Nayman Tribe
CN109645611B (zh) 一种基于纸模的成衣压褶造型方法
NAKAYAMA et al. 3D Distance Field-Based Apparel Modeling
Choi A case study on manufacturing processes for virtual garment sample
CN206836231U (zh) 一种t型平面结构零浪费服装
Kim et al. Static and dynamic insulation values for cold weather protective clothing
Zhang et al. Calculation of the body measurements after analyzing the historical pattern block
Li et al. A More Practical Automatic Dressing Method for Clothes Animation
Wang et al. Ease distribution in relation to the X-line style jacket. Part 2: Application to pattern alteration

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant