当前位置: 首页 > 专利查询>南京大学专利>正文

基于HRBFs的人体与服装模型碰撞检测和处理方法技术

技术编号:28626838 阅读:23 留言:0更新日期:2021-05-28 16:23
本发明专利技术提供了基于HRBFs的人体与服装模型碰撞检测和处理方法,该方法以三维服装、人体模型为对象,利用hermit径向基函数对多个三维模型进行碰撞检测,结合网格形变算法进行碰撞处理,最终通过布料仿真来实现计算机中三维人体试衣的效果。该方法的主要步骤包括:利用人体特征尺寸和关节点信息生成三维人体模型;对所有选择的服装模型和人体模型进行碰撞检测和处理;对服装模型进行布料仿真,并展示人体试衣效果。本发明专利技术能够使互相穿透的人体、服装模型达到无碰撞的效果,不需要进行手动调整,具有一定的通用性和实用性。

【技术实现步骤摘要】
基于HRBFs的人体与服装模型碰撞检测和处理方法
本专利技术涉及基于HRBFs的人体与服装模型碰撞检测和处理方法。
技术介绍
在虚拟试衣系统中,服装模型具有丰富的褶皱细节、且极易变形,不可避免的会与人体模型产生碰撞、互相穿透,因此碰撞检测和处理是决定试衣效果的关键因素。如何快速检测出服装与人体模型之间的碰撞并做出符合物理规律的响应是影响试衣体验的关键问题。碰撞检测实质是判断服装模型与人体模型的基本组成元素在三维空间是否相交,一般分为连续碰撞检测和离散碰撞检测。1、离散碰撞检测方法:主要是检测某一时刻T的两个静态模型是否发生穿插,并返回具体的碰撞信息,如穿插深度、发生穿插的多边形网格的序号等。目前常用的经典算法有基于层次包围盒的碰撞检测算法、基于空间分解的碰撞检测算法、基于图像空间的碰撞检测算法。2、连续碰撞检测方法:主要是检测两个模型在一段时间间隔的运动过程中有没有碰撞,如果发生碰撞就返回第一次碰撞的具体信息。碰撞处理是通过改变发生碰撞的基本元素的位置,来矫正服装与人体模型的相交、穿透,并尽量使变形的服装模型符合实际现象。针对动态,静态的物体模型有不同的处理方式。1、基于物理模型的碰撞处理方法:运用物理学原理来实现仿真,如质点-弹簧法、有限元法、无网格法等。2、基于几何模型的碰撞处理方法:本质是将发生碰撞的基本元素在三维空间移动,直至无碰撞,在此基础上改进的优化网格变形算法则是同时考虑了非碰撞元素的随动情况。近年来,有大量学者在研究碰撞检测算法。有学者对刚性体的碰撞检测进行了研究,通过求解碰撞方程判定是否发生碰撞,但求解过程耗时。Manocha等人提出给基本图元标记特征三角对,避免重复测试。国内学者提出通过基于层次剔除的碰撞检测来减少不必要的精确计算,提高柔性织物模拟中的碰撞检测效率。又有学者研究根据三维模型的拓扑信息构建层次包围盒,可以排除大多数没有发生碰撞的三角对。大多数碰撞处理方法是基于历史的,不能处理预先存在的碰撞。空气网格方法就是一种基于历史的碰撞处理模型,它能记住预处理时的无碰撞状态。然而,预先存在的碰撞经常出现在虚拟试衣系统和服装合成等应用中,由于没有无碰撞的初始状态供参考,因此需要进行预处理。Volino等人提出了一种交叉轮廓最小化方法,它既不依赖于历史也不依赖于方向,可以处理任何类型的轮廓。然而忽略了在没有历史记录和方向的情况下,将两个碰撞表面分开经常会表现出不可预测的收敛行为。有学者提出使用三角形法线判断一个顶点是否穿透其他物体,但没有给出实现细节。还有学者提出了一个非常详细的算法,致力于解决如何将穿透人体的布料顶点移出人体的问题。对于每个布料碰撞点,找到与它最接近的人体模型顶点,然后将布料碰撞点沿着该人体模型顶点的法向量方向移动。因为仅处理碰撞点而不考虑全局,此方法不稳健,但值得参考改进。
技术实现思路
专利技术目的:本专利技术所要解决的技术问题是针对现有技术的不足,提供基于HRBFs的人体与服装模型碰撞检测和处理方法,该方法以三维服装、人体模型为对象,利用hermit径向基函数对多个三维模型进行碰撞检测,结合网格形变算法进行碰撞处理,最终通过布料仿真来实现计算机中三维人体试衣的效果。该方法的主要步骤包括:利用人体特征尺寸和关节点信息生成三维人体模型;对所有选择的服装模型和人体模型进行碰撞检测和处理;对服装模型进行布料仿真,并展示人体试衣效果。本专利技术能够使互相穿透的人体、服装模型达到无碰撞的效果,不需要进行手动调整,具有一定的通用性和实用性。基于HRBFs的人体与服装模型碰撞检测和处理方法,包括以下步骤:包括如下步骤:步骤1,根据骨架参数构建人体模型;步骤2,构建人体隐式曲面函数;步骤3,构建人体、服装模型层次包围盒树;步骤4,进行服装与人体间的碰撞检测;步骤5,进行碰撞处理和网格变形;步骤6,布料模拟并展示渲染结果。步骤1包括:读取人体骨架关节点和特征尺寸的文件,将人体划分成静态区块和动态区块。静态区块是使用插值样条曲面建立的适合于人体尺寸的三维曲面模型,以关节点为基准,根据特征尺寸和骨架比例关系,采用插值样条曲面对人体静态区块构建曲面模型,同时获得人体各部位模型生成点的法向量;动态区块是根据关节点位置以及对应两端静态区块的端口截面来生成的一系列连接截面,这些沿着骨骼方向的一系列连接截面最终构成连接各静态区块的网格模型;在静态和动态区块构建完成后,将其拼接得到一个闭合的三维人体模型,进一步对拼接处进行平滑优化处理,得到最终的三维人体网格模型。步骤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说明点在曲面内部,由此能够判断一个点和人体三维网格模型的位置关系。步骤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:...

【技术保护点】
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)分别做点积,得到的最大值就是该方向上的最大延伸;
计算半方...

【专利技术属性】
技术研发人员:史迪杨若瑜
申请(专利权)人:南京大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1