任意衣物和人体的3D试穿实时仿真-精品文档
- 格式:doc
- 大小:20.00 KB
- 文档页数:5
任意衣物和人体的3D试穿实时仿真
0引言
近年来,三维动画游戏或电影中对虚拟服饰的真实感要求越来越高。
同时,网购的盛行则激发了对虚拟衣物试穿的研究,并不断对其效果提出更高的要求。
事实上,基于物理的服装仿真动画技术一直受到国内外研究学者的广泛关注。
Fuhrmann等[1]和Goldenthal等[2]利用约束和迭代求解系统控制方程代替大型平面逼近的方法来加速衣物模拟。
Stumpp等[3]在预处理中将布料网格分割为一组重叠的簇集以便仿真时将质点与之进行匹配,从而确定质点位置及偏移。
该方法在簇集规模不大时计算效率较高。
Volino等[4]则对真实布料本身的拉伸弹力进行实验测试,获取数据再进行仿真,可有效计算静态窗帘和动态动画。
Chen等[5]提出一种基于网格插值的纯几何方法,并采用能量最小化方法求解布料或服装的最终悬垂状态,该方法稳定性较好。
Feng等[6]通过捕捉两步之间衣物形变的关系提高仿真效率。
Rohmer等[7]利用几何方法模拟了服装面上褶皱,采用隐式变形器计算最终精化的变形平面。
孙守迁等[8]引入约束凸包简化和预计算外围映射体的方法提高了质点穿透判断和碰撞响应求解的速度。
Guan等[9]将二维衣片信息输入成熟的仿真软件来获得静态的褶皱等效果,再对不同姿势或体型的人体模型穿衣后的静态仿真结果进行训练,最终实现多样化
的试穿仿真。
毛天露等[10]通过骨架驱动变形(SkeletonDrivenDeformation,SDD)方法模拟了紧贴人体皮肤的局部区域的服装变形。
石敏等[11]对弹性变形模型进行了各种不同的改进或约束,以尽可能趋近于布料的真实变形行为。
上述方法都在不断改进,但很多都着眼于局部算法效率提高[1~7,11]而非设计完整系统。
孙守迁等[8]和Guan[9]的方法是以衣服试穿为目标的,但前者旨在获得较高的仿真效率,而未将重点放在人体和衣物的任意性上;而后者的思路是通过大量的数据训练来获得良好的仿真效果。
而毛天露等[10]使用的SDD方法虽然简单且速度较快,但拟定各控制点的权值需要大量额外的时间。
另外,基于已有的技术,出现了一些试衣镜系统[12-13],但由于受到算法效率和数据来源等限制,文献[12]仅将衣服的二维图片贴在人物的身上,文献[13]中在侧面可发现前后两片衣服缝合处有缺陷,而带袖子的衣服在袖子处与人体不匹配。
综上,衣物试穿仿真技术在以下几个方面还有待进一步提高:
1)真实人体与人体模型之间缺乏逼真和灵活的匹配对应。
2)衣服模型获取困难且衣服类型有限。
早期方法仅用矩形布料模型做实验;另一部分采用自定义的几种衣服模型,常见的如短袖T恤、半身裙等;还有一些通过二维衣片缝合生成三维衣服。
不够实用和灵活,有时还需要额外软件介入处理。
3)人体或衣物模型的复杂性使得碰撞检测时间过长,很多
对网格面片进行基于误差矩阵的简化算法本身也较耗时;三角形求交计算和内点判断问题也还有提高的空间。
针对以上问题,本文提出了用参数控制的非均匀有理B样条(NonUniformRationalBSpline,NURBS)曲面来构造任意三维人体,并对人体各部位建立包围盒和圆柱映射表;然后在任意可下载的3DMAX衣服模型基础上构造邻接表并提出了一种更快速实
用的衣服网格简化算法,避免了迭代积分计算过程中简化模型与原模型运动不一致的问题;最后通过优化的求交、内点判断算法来提高碰撞检测效率,最终完成实时试穿仿真。
1人体网格生成
本文按系统内部设置的体型参数自动生成由NURBS曲面构
成的可形变人体模型。
人体共分为头部、身体、左/右大(小)臂、左/右大(小)腿这10个部位。
每个部分都是由两个NURBS 曲面(前后两面)构成。
通过修改各部位自身参数和部位间的连接参数,就生成了不同体型和姿态的人体曲面,然后在曲面上获取任意多个点生成任意粒度的人体网格模型。
2衣服模型预处理
2.1质点弹簧模型的构造
首先,根据衣服模型具有的点和面片信息构造邻接表;其次,依据邻接表信息建立衣服的质点弹簧模型,共包含三种弹簧:结构弹簧、剪切弹簧和弯曲弹簧。
从3DMAX模型恢复的网格有如下规律:1)边v0v2和v1v2
属于“近似直角边”,而v2v0则是“近似斜边”;2)与斜边v2v0相邻接的“上”“下”两个三角形的三个顶点的排序如图3所示。
据此拟定弹簧构造规则如下:
1)所有“近似直角边”都作为结构弹簧,所有“近似斜边”都作为剪切弹簧。
2)将“近似斜边”的两个邻接三角面片的第2个顶点连接形成另一部分剪切弹簧。
3)在构造邻接表时,已经为每个点v的邻接点添加了不同标记,以表明是在v的“垂直方向”还是“水平方向”,如图3所示,分别将垂直方向的点之间、水平方向的点之间连接得到弯曲弹簧。
2.2衣服模型的简化
衣服模型一般都会有2000以上个顶点、4000以上个三角面片,碰撞检测十分耗时。
因此本文设计了简单的三角面片折叠方法对其进行有效的简化。
主流的网格模型三角面片简化算法[8,14-15]是计算出一个新顶点并使一个三角面片消减成该顶点之后,其误差最小,这类方法耗时多,而且新顶点不一定在三角面片上。
3衣物试穿仿真
本系统最终的试穿仿真通过对人体和衣服模型进行对齐、动力学微分方程数值求解、碰撞检测和碰撞处理来完成。
3.2质点位置求解和校正
由于隐式积分法每步计算较复杂耗时,相对而言,显式积分法更适于衣物仿真等应用。
本文采用Verlet积分算法(VerletIntegrationAlgorithm)进行质点位置迭代计算,相比其他显式积分法(欧拉法等)更具稳定性。
首先,对衣服上的每个质点进行力的计算。
实验中,只将重力和空气阻力作为外力,不考虑风力的存在,而对于内力,本系统采用孙守迁等[8]的方法:将内力作为一个相对约束条件通过弹簧迭代校正过程来体现,可有效避免弹簧刚性问题,保持系统稳定性。
5结语
本文设计并实现了一个完整的衣服试穿系统。
该系统通过自定义任意人体模型和直接使用任意已有的3DMAX衣服模型来增加试穿的灵活性和真实性:优化了衣服模型简化方法和碰撞求交后的内点判断算法,提高了仿真效率,从而在处理较复杂的人体和衣物时,能达到更好的实时效果。
在以后的工作中,本系统将针对动态人体、尺寸模拟和衣物特殊效果这三方面做进一步的研究和改进。