【技术实现步骤摘要】
基于HRBFs的人体与服装模型碰撞检测和处理方法
本专利技术涉及基于HRBFs的人体与服装模型碰撞检测和处理方法。
技术介绍
在虚拟试衣系统中,服装模型具有丰富的褶皱细节、且极易变形,不可避免的会与人体模型产生碰撞、互相穿透,因此碰撞检测和处理是决定试衣效果的关键因素。如何快速检测出服装与人体模型之间的碰撞并做出符合物理规律的响应是影响试衣体验的关键问题。碰撞检测实质是判断服装模型与人体模型的基本组成元素在三维空间是否相交,一般分为连续碰撞检测和离散碰撞检测。1、离散碰撞检测方法:主要是检测某一时刻T的两个静态模型是否发生穿插,并返回具体的碰撞信息,如穿插深度、发生穿插的多边形网格的序号等。目前常用的经典算法有基于层次包围盒的碰撞检测算法、基于空间分解的碰撞检测算法、基于图像空间的碰撞检测算法。2、连续碰撞检测方法:主要是检测两个模型在一段时间间隔的运动过程中有没有碰撞,如果发生碰撞就返回第一次碰撞的具体信息。碰撞处理是通过改变发生碰撞的基本元素的位置,来矫正服装与人体模型的相交、穿透,并尽量使变形的服装模型符合实际现象。针对动态,静态的物体模型有不同的处理方式。1、基于物理模型的碰撞处理方法:运用物理学原理来实现仿真,如质点-弹簧法、有限元法、无网格法等。2、基于几何模型的碰撞处理方法:本质是将发生碰撞的基本元素在三维空间移动,直至无碰撞,在此基础上改进的优化网格变形算法则是同时考虑了非碰撞元素的随动情况。近年来,有大量学者在研究碰撞检测算法。有学者对刚性体的
【技术保护点】
1.基于HRBFs的人体与服装模型碰撞检测和处理方法,其特征在于,包括如下步骤:/n步骤1,根据骨架参数构建人体模型;/n步骤2,构建人体隐式曲面函数;/n步骤3,构建人体、服装模型层次包围盒树;/n步骤4,进行服装与人体间的碰撞检测;/n步骤5,进行碰撞处理和网格变形;/n步骤6,布料模拟并展示渲染结果。/n
【技术特征摘要】
1.基于HRBFs的人体与服装模型碰撞检测和处理方法,其特征在于,包括如下步骤:
步骤1,根据骨架参数构建人体模型;
步骤2,构建人体隐式曲面函数;
步骤3,构建人体、服装模型层次包围盒树;
步骤4,进行服装与人体间的碰撞检测;
步骤5,进行碰撞处理和网格变形;
步骤6,布料模拟并展示渲染结果。
2.根据权利要求1所述的方法,其特征在于,步骤1包括:
读取人体骨架关节点和特征尺寸的文件,将人体划分成静态区块和动态区块;
静态区块是使用插值样条曲面建立的适合于人体尺寸的三维曲面模型,以关节点为基准,根据特征尺寸和骨架比例关系,采用插值样条曲面对人体静态区块构建曲面模型,同时获得人体各部位模型生成点的法向量;
动态区块是根据关节点位置以及对应两端静态区块的端口截面来生成的一系列连接截面,这些沿着骨骼方向的一系列连接截面最终构成连接各静态区块的网格模型;
在静态和动态区块构建完成后,将其拼接得到一个闭合的三维人体模型,进一步对拼接处进行平滑优化处理,得到最终的三维人体网格模型。
3.根据权利要求2所述的方法,其特征在于,步骤2包括:
三维人体网格模型有N个顶点,将所有顶点作为采样点,在三维空间中,有N个已知的Hermite数据xi是采样点的坐标,ni是顶点的法向量,每个Hermite数据带有一个值fi,该值描述了采样点和隐式曲面的位置关系;
接下来的目标是要找到一个隐式曲面函数f来描述三维人体曲面模型,必须满足如下条件:有f(xi)=fi并且找到一个使能量函数最小的解,即最小广义插值函数f*,并且这个最优解是唯一的,形式如下:
其中,是f(xi)的导数,x表示空间中的任意一点,ψ(x)=φ(||x||)是径向基函数;其中未知的标量系数和向量系数由f*(xi)=fi和这两个插值条件唯一确定:
其中H是Hessian算子,xj是第j个顶点;(H)ij代表H的第i行第j列元素;
接下来需要求解αi和βi得到f*的具体表达式,通过组装相关矩阵得到形如Aα=c的形式:有:
然后解线性方程组就能求得未知系数αi和βi;
将系数带入(1)得到人体的隐式曲面函数f*(x),f*(x)=0即隐式曲面函数的0等值面描述了人体模型的网格表面;对于空间中任意一点x,f*(x)>0说明点在曲面外部,f*(x)<0说明点在曲面内部,由此能够判断一个点和人体三维网格模型的位置关系。
4.根据权利要求3所述的方法,其特征在于,步骤3包括:读取服装模型文件,并指定服装类型,服装模型是由三角面片组成的网格模型,三角面片的法线指向模型表面外侧;服装模型是流形;服装模型文件为obj格式;
根据服装模型的类型初始化服装模型的基本信息;
自上而下的构建人体、服装模型的18-dops层次包围盒树,18-Dops包围盒是一种由一组半空间Hi确定其面的封闭几何空间,18个固定的方向集(D1,D2,......,D18)决定了半空间的外法向;选取方向完全相反且共线的向量对作为固定法向,则只使用了9个方向,正方向为(1,0,0)、(0,1,0)、(0,0,1)、(1,1,0)、(1,0,1)、(0,1,1)、(1,-1,0)、(1,0,-1)、(0,1,-1),反方向为(-1,0,0)、(0,-1,0)、(0,0,-1)、(-1,-1,0)、(-1,0,-1)、(0,-1,-1)、(-1,1,0)、(-1,0,1)、(0,-1,1),用矩阵形式来表示半方向集D:
将一个三角面片的三个顶点与半方向集D中第一个方向(1,0,0)分别做点积,得到的最大值就是该方向上的最大延伸;
计算半方...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。