基于Matlab的三维服装设计
2014-04-02余庆
余 庆
(上饶职业技术学院,江西 上饶 334001)
引言
现代计算机辅助设计技术的迅速发展,带来了设计制造业的深刻变革。早在上世纪70年代,法国达索系统公司和美国IBM公司就联合开发三维CAD系统CATIA[1],CATIA最早应用于航空航天等尖端领域。2002年,他们推出V5版本,完成了从UNIX操作系统到WINDOWS的对接。目前CATIA在全球拥有三万多个客户,主要集中在国防工业领域,是全球应用最为广泛的三维CAD系统。
上世纪我国CAD软件市场基本被外国公司垄断。2000年后,北京数码大方科技股份有限公司(CAXA)发布了具有自主知识产权软件的国产三维CAD系统。CAXA的三维实体设计是国家 863计划重点支持项目,今天其在国内设计制造业大公司里已经拥有广泛的用户基础和影响。
但是,服装方面的专门GCAD软件国内还是欠缺。关键在于三维服装CAD的基础是三维人体数据的采集测量,三维人体测量一般利用光栅,通过光敏设备非接触捕捉数据[2]。尽管国外三维人体测量技术已很成熟,但是此设备以及其对接的GCAD软件价格不菲,中小服装设计公司以及生产企业难于承受。有些企业花费大量外汇引进三维数字化设计系统,因测量系统等技术上以及其他诸多因素,大多处于闲置或使用率低的状态。
本文提出的基于matlab软件的计算机辅助设计方法,利用其强大矩阵计算和三维绘图功能,不但能够有效的解决人体测量的经济性问题,较好的满足个体的要求,而且能够准确的完成立体服装到到二维平面版型的转换。
1 MATLAB建模的三维服装设计流程
1.1 原始数据的采集,插值加密。
如果采用是三维GCAD针对个体进行服装设计,首先当然要进行人体测量,数据采集,非接触三维光敏
测量仪能够不到一分钟内测量出8万基准点数据[3],但是光敏人体测量仪价格一般在几十万元以上,加上转换对接的三维GCAD软件,对一般中小企业而言,成本远高于其所能带来的价值。
如果使用MATLAB进行人体建模,只需要对个体进行不到五十个基准点的数据测量,甚至一根软尺测量人体横向(1前、侧、后颈点,颈根围;2.左右肩端点,肩宽;3.后左右腋窝,背宽;4. 胸左右腋窝,胸宽;5. B/P点,胸围;6.腰凹点,脐点,腰围;7.臀尖点,臀围)、人体纵向(1.肩颈点,乳点,腰节线,前身长;2.肩胛凸点,后身长;3.乳下度;4腰长;5.胯尖点)等数据即可,根据数学模型公式转换成三维数据[3][5],然后进行双二次矩形元(或者三角有限元)插值加密。[图1、基准点的数据]={data}=(x,y,z);[图2、基准点线性插值效果];立方矩形插值加密命令如下:
[X,Y,Z]=griddata (x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'cubic');
Pcolor (X,Y,Z);figure,surf (X,Y,Z);shading interp;axis off
若使用三角有限元法,可仿pdetool内核有限元法程序,即可以生成如下:
[图3、cubic插值加密效果图 ]
图1 基准点数据 图2 线性插值 图3 三角有限元插值
1.2 构成人体基面,建立松弛系统函数,构建服装面(廓形)模型。
对原始数据进行插值加密预处理后,我们可以得到人体基面(曲面)函数z=f(x,y),渲染效果见图4;服装曲面z1=f(x,y)+s(x,y),其中s(x,y)为关于基面的一个松弛函数;当s(x,y)=0时,即为人体曲面。
一般地,松弛函数关于人体曲面在大部分区域往外法线方向为常数(即服装曲面相对人体基面进行均匀偏移)如图5,在胸围,腰围,臀围和服装的下摆等部位为简单对应数据拉直锥面(截面为圆锥曲线)[4],服装曲面的效果(可以设计出不同廓形的服装)如图6。
1.3 反演服装曲面,生成平面裁片。
生成服装曲面后,从袖窿线垂直切割,分离出袖锥体;从两肩线,胸线,腰线,臀围线,进行水平截面,生成若干个近似圆台。我们以胸线与臀围线所夹的简化模型为例,实际上下截面为近似两个半椭圆(分别对应为前后裁片沿线),侧身线近似为双曲。若记胸线平面到腰线平面距离为c1,腰线平面到臀围线平面距离为c2,腰宽的一半为a, 腰凹点到剖面距离为b1,脐点到剖面距离为b2,腋窝点和腰凹点连线的斜率为k1,腰凹点到臀线点斜率为k2;则前片(胸线与臀围线所夹部分)模拟方程可以统一简化为:
图4 人体曲面 图5 均匀偏移 图6 服装曲面(廓形)
其中XoY平面为竖直分前后片截面(剖面)。
类似的,后片(胸线与臀围线所夹部分)模拟方程可以统一简化为:
以上方程MATLAB命令程序如下:
x=-c1:h:0;y=-a:h:a;[x,y]=meshgrid(x,y);z=sqrt(k1*a.^2*(x.^2/(a.^2)-y.^2/(b2.^2)+1));mesh(x,y,z,'EdgeColor','k');hold on;
x=0:h:c2;y=-a:h:a;z=sqrt(k2*a.^2*(x.^2/(a.^2)-y.^2/(b2.^2)+1)),
mesh(x,y,z,'EdgeColor','k');hold off ;axis off
以84 a标准人台胸线与臀围线所夹部分的数据生成如下:(图7,图8,图9)
图7 前片 图8 后片 图9 整体
服装曲面z=F(x,y)完成后,以适当密度的平行z轴且垂直XoY平面的裁面族与服装曲面相交生成曲线进行求长展开并依次平铺,即利用展开算法[4],我们就可以得到服装裁片。我们可以在MATLAB编制若干个函数包,分别输入对应部分的(分割后的)服装曲面数据,再进行各个对应部分平面组合,由此即可完成服装曲面模型的1∶1的平面裁片格式。
2 结束语
利用matlab进行三维服装设计,因为MATLAB强大的数据计算和绘图功能,最大的优点是人体测量简易高效,以及由立体反演成平面裁片的快速准确性;其针对个体的形体或特殊要求尤其擅长,无需引进昂贵的三维光敏测量仪进行数据采集。其欠缺就是所有的操作必须在MATLAB界面下进行键盘输入,尽管我们可以编制函数包简化操作,但是对于一般的服装设计方面的人员来说,还是有一定的复杂度。如果开发出利用鼠标操作的图形界面,就更具有广泛的应用前景。
参考文献:
[1] 甘应进,陈东生,等. 非接触式人体计测现状[J].纺织学报.2005,(6):145-146.
[2] 彭三城,孙星明,刘国华,等. 三维人体自动测量技术综述[J].计算机应用研究,2005,(4):1-5.
[3] 王媚,陆国栋. 服装CAD 中三维人体建模技术的研究及应用[J].工程图学学报,2007,(1):1-6.
[4] Schne.iderpj, Eberly.Ydh. 计算机图形学几何工具算法详解[M].北京:电子工业出版社, 2005.
[5] Wan g J,Lu g d, Li w l,. Interactive 3D garmen design with cons trained cont our curves and style curves [J]. Computer-Aided Design , 2009, 41( 9) : 614 -625.