的,因此,质点的质量可由衣片总质量除以质点总数得到,a(i,j)是该点加速度,f外力(i,j)是该点所受的外力,f内力(i,j)是该点所受的内力。为了简化模型,在我们三维服装cad系统中,只考虑两种外力:缝合力和重力。可以用以下公式来表示:f外力(i,j)=f缝合力(i,j)+f重力(i,j) 在衣片缝合过程中,为了将不同的衣片缝在一起,我们在衣片对应缝合边上加载缝合力。在模型中,缝合力被定义成对应缝合点之间距离的线性函数。对两个缝合点pi,j和qi,j间的缝合力,可以按如下公式计算:f缝合力(i,j)=cs dis(pi,j,qi,j) npi,j-qi,j式中cs为缝合力系数,该系数与织物的缝合性能有关,通常,较难变形的布料采用较大的缝合力系数;dis(pi,j,qi,j)表示两缝合点pi,j和qi,j间的距离;npi,j-qi,j表示从pi,j点指向qi,j点的单位方向矢量。为了获得较真实的仿真效果,我们在变形模型中考虑了衣片所受的重力。质点所受的重力可按如下公式计算:f重力(i,j)=mi,j g式中mi,j为质点pi,j的质量。在弹簧质点模型中,唯一考虑的弹性内力是弹簧的弹性变形力,由于采用的是理想的弹簧质点系统,可以利用胡克(hooke)定律来计算弹簧的弹性变形力:f内力(i,j)=-∑(k,l)∈rk(pi,jpk,l-∥pi,jpk,l∥0pi,jpk,l∥pi,jpk,l∥)其中,k是弹簧的弹性变形系数,r是p(i,j)邻点的集合,∥pi,jpk,l∥0表示质点p(i,j)与质点p(k,l)之间的原始距离,弹簧的弹性变形系数k可以依据所选用织物的材料性能参数曲线确定。
2.3织物变形模型的求解我们选择显式欧拉方法来求解织物变形模型。求解公式如下:ai,j(t+△t)=1mi,jfi,j(t)vi,j(t+△t)=vi,j(t)+△tai,j(t+△t)pi,j(t+△t)=pi,j(t)+△tvi,j(t+△t)其中,fi,j是质点p(i,j)所受所有力的合力,mi,j(t)是质点p(i,j)的质量,ai,j(t)、vi,j(t)和pi,j(t)分别是质点p(i,j)在时间t的加速度,速度和位置。△t是系统选定的时间步长。
3基于aabb树层次包围盒的碰撞检测
3.1建立aabb树一个碰撞体的aabb被定义为包含该碰撞体,且边平行于坐标轴的最小六面体。因此,描述一个aabb,仅需六个标量。在构造aabb包围盒时,需沿着碰撞体局部坐标系统的轴向(x,y,z)来构造,所以所有的aabb包围盒具有一致的方向。
aabb树是基于aabb的二叉树,按照由上至下的递归细分方式构造生成的。在每一次递归过程中,要求取最小的aabb,需沿所选择的剖分面将碰撞体分为正负两半,并将所对应的原始几何元素(如三角面)分别归属正、负两边,整个递归过程类似于空间二叉剖分,只是每次剖分的对象是aabb,而不是空间区域。递归细分一直要进行到每一个叶子节点只包容一个原始几何元素为止,所以具有n个原始几何元素的aabb树具有n-1个非叶子节点和n个叶子节点。对于剖分面的选择,在本文中,选择垂直aabb的最长轴,且平分该轴的平面。经试验证明,这种方式,在大多数情况下的算法复杂度仅为o(nlogn),较其它的剖分面选择方法有了极大的提高。至于原始几何元素的归属则应依据几何元素的重心p在最长轴上的投影坐标。若投影坐标大于剖分面的坐标(mid),则在剖分面的正向,否则在负向,如图2所示。图2三角面归属负区域,因为其质心投影坐标小于剖分面的基准坐标
3.2aabb的相交判断aabb间的相交测试比较简单,两个aabb相交当且仅当它们在三个坐标轴上的投影区间均相交。通过投影,我们即将三维求交问题转化为一维求交问题。而对一维求交问题,我们则采用sat(separatingaxestest)[2]法。因sat无需求交计算,只需比较两个包围盒分别在三个轴向上投影的重叠情况,即可得出相交测试结果,非常简单。现以在一个轴向上的投影情况为例说明:图3aabbs在x轴向相交判断。
设a,b为两包围盒,x为投影轴,ca,cb分别为a,b的中心点,pa,pb为点ca,cb在x上的投影。ra,rb分别为包围盒a,b在x上的投影。若ra+rb
papb,(如图3所示)则在轴向x上a和b不相交,反之在轴向x上a和b邻接或相53第5期高成英等:虚拟穿衣中织物模型的建立和碰撞检测的处理交。当包围盒a,b在三条轴向上的投影均相交时,则a,b相交。定义aabb的六个最大最小值分别确定了它在三个坐标轴上的投影区间,因此aabb间的相交测试最多只需六次比较运算,非常简单快速。
3.3aabb树的更新当衣片移动、旋转后,需要对aabb进行更新,根据定义aabb的6个最大最小值的组合,可以得到aabb的8个顶点,对这8个顶点进行相应的旋转和平移变化,并根据变化后的顶点计算新的aabb。当衣片发生变形时,需要重新计算aabb树中发生变形了的叶结点的aabb,再利用变形叶节点的新aabb来重新计算它们父节点的aabb。这种计算必须严格按照从下到上的方式进行。父节点aabb的具体求法为:令(xmax1,xmin1,ymax1,ym
上一页 [1] [2] [3] [4] 下一页