background image

B=v1,v2,

…,vn。 

  (

2)根据计算 V 的质心 c。 

  (

3)显示 c,如果 c 不在期望的裁片中,允许用户选则裁片中的另外一点 c

’。 

  (

4)按逆时针方向围绕 c 排序 V,设 W=w1,w2,

…,wn 是排序后的顶点集。 

  (

5)Fori=1ton,应用 Line Drawing 算法寻找顶点集组成的边(wi,w(i+1)mod 

n),将属于边(wi,w(i+1)mod n)的顶点加入到集合 B,这样就获得了裁片的边界点
集。

   (6)在集合 B 定义的区域中应用 4-近邻边界填充算法。 

  (

7)如果有必要,手动对结果进行优化。例如,为了防止产生锯齿装的边缘,得到平

滑的边缘外观,用户可以根据需要选择正确的边界顶点。并以选择顶点作为控制点,生成相
应的

Bezier 样条曲线。 

  图

1 显示了生成 T 恤裁片的具体步骤。在图 1 中,(a)定义边界角顶点;(b)应用

Bresenham 的 Line Drawing  算法连接边界角顶点;(c)应用边界填充算法后的结果;

d)沿边界切割;(e)定义平滑边界;(f)对边界进行平滑处理;(g)定义领子边界

和袖窿;(

h)提取领子边界和袖窿;(i)平滑处理。 

  

3 服装模拟 

  要做到服装效果仿真,系统必须具备数值积分功能。随着时间的推移,构成服装布料的
布粒子的位置的计算需要考虑作用在布料上的力。作用在布片上的力可以分为外力和内力:
内力又叫做弹簧力;外力是布料与环境的相互作用,包括重力和碰撞力。

 

  

3.1 缝合 

  各个服装裁片在身体周围的准确位置确定之后,裁片缝合过程就是在裁片接缝之间施
加力量调用。接缝可以看作是吸引两个裁片到一起的力量源,在这个意义上,可以把接缝看
成是弹性力量源。然而,弹性力的确切行为模拟是相当耗时的工作,另外一种更简单的启发
式方法可以有效地解决该问题。启发式的方法应用对称的力量,让接缝将两个裁片进行吸附,
具体如公式(

1)所示。 

  两个服装裁片互相吸引,直到它们被碰撞力约束。在缝合过程中,没有任何其他的力被
应用到服装裁片上。当两个裁片

p1 和 p2 相互靠近,达到某个阈值,缝合过程就结束,两个

裁片合为一个裁片。

 

  接缝是通过定义两个服装裁片的边缘顶点来实现的。在实现过程中,先手工选择一个裁
片的边缘线,裁片生成算法会在另一个裁片上找到最近的顶点,并在两个裁片的边缘之间
添加接缝。接缝的处理如图

2 所示,其中(a)是 2D 视图,(b)是在人体模型上的 3D 视

图。

 

  

3.2 碰撞处理 

  为了获得逼真的模拟结果,我们需要执行衣服和人体的皮层之间的碰撞的处理。碰撞的
处理分为两个阶段:碰撞检测和碰撞响应。碰撞检测算法测试服装模型的轴对齐包围盒

Axis Aligned Bounding Box,AABB)和人体模型的包围盒之间的所有交叉点 [6]。对

AABB 模型进行遍历,直到叶节点被遍历完。一旦发现两个包围盒相交,就应用几何碰撞检
测方法来测试三角形之间的碰撞,用同样的方法检测服装的自碰撞。两多边形之间的碰撞检
测是通过检查点的三角形相交和接近来完成的,类似于服装与人体的碰撞检测。为了避免边
缘的碰撞检测,我们扩大服装裁片模型的包围盒。

 

  碰撞检测后,使用速度和位置校正。速度矫正类似于文献

[7]中的速度矫正方法,将碰

撞检测后的速度修改为:

 

  其中和是摩擦系数和反射系数,是人体模型的速度,和是布粒子相对于人体的相对速
度的切线和法线分量。

 

  如果某个点已通过裁片多边形的底部或点到人体表面的距离低于某个阈值,就要使用