1、系统仿真学报系统仿真学报Journal of System Simulation第 35 卷第 9 期2023 年 9 月Vol.35 No.9Sep.2023基于人体骨骼特征的三维服装碰撞模拟基于人体骨骼特征的三维服装碰撞模拟陈园园1,淮永建1,2*,聂笑盈1,郎柯1(1.北京林业大学 信息学院,北京 100083;2.吉林动画学院虚拟现实工程中心,吉林 长春 130012)摘要摘要:为了提升实时布料模拟过程中服装与人体碰撞的真实感,提出一种基于包围盒与网格法的自动化人体拟合的碰撞方法。结合人体骨骼结构和服装类型,有效优化参与碰撞模拟的骨骼信息,方便获取人体各部位特征点,并进行语义分割。依据
2、蒙皮动画的特点,生成简单胶囊体和网格包围体拟合人体的几何形状,并实现碰撞体的动态跟随。使用生成的胶囊体代替人体进行粗略碰撞,排除较远端不可能发生碰撞的网格,基于网格方法实现精细化碰撞模拟,有效减少人体与服装模型之间的相互穿透。在弯曲时变形较大导致网格覆盖不全的关节处采用球体拟合,避免局部穿模。实验结果表明,文中方法可以自适应地生成拟合人体的碰撞体。粗略碰撞与精确碰撞结合的方法不仅有效提高服装与人体碰撞模拟的逼真度,而且能够确保高效的三维服装实时模拟效果。关键词关键词:碰撞;布料模拟;骨骼;特征点;网格;碰撞检测中图分类号:TP391.41 文献标志码:A 文章编号:1004-731X(2023
3、)09-2023-12DOI:10.16182/j.issn1004731x.joss.22-1406引用格式引用格式:陈园园,淮永建,聂笑盈,等.基于人体骨骼特征的三维服装碰撞模拟J.系统仿真学报,2023,35(9):2023-2034.Reference format:Chen Yuanyuan,Huai Yongjian,Nie Xiaoying,et al.3D Garment Collision Simulation Based on Human Skeletal FeaturesJ.Journal of System Simulation,2023,35(9):2023-2034
4、.3D Garment Collision Simulation Based on Human Skeletal FeaturesChen Yuanyuan1,Huai Yongjian1,2*,Nie Xiaoying1,Lang Ke1(1.School of Information Science and Technology,Beijing Forestry University,Beijing 100083,China;2.Virtual Reality Engineering Center of Jilin Animation Institute,Changchun 130012,
5、China)Abstract:In order to enhance the realism of garment and human body collision in real-time fabric simulation,an automated human body fitting collision method based on the bounding box and mesh method is proposed.According to the human skeletal structure and garment type,the skeletal information
6、 involved in collision simulation is effectively optimized,so as to better obtain the feature points of the human body and semantically segment them.According to the characteristics of skinning animation,simple capsule colliders and mesh colliders are generated to fit the geometric shape of the huma
7、n body,and the dynamic following of colliders is realized.The generated capsule colliders can realize rough collision instead of the human body and eliminate meshes that are unlikely to collide at distant ends.It achieves accurate collision simulation based on the mesh method and effectively reduces
8、 the penetration between the human body and the garment model.Sphere fitting is used at joints where large deformation during bending results in incomplete mesh coverage to avoid local model penetration.The experiment results demonstrate that the proposed method can generate colliders that fit the h
9、uman body 收稿日期:2022-11-23 修回日期:2023-02-06基金项目:中央高校基本科研业务费专项资金(BLX202142)第一作者:陈园园(1997-),女,硕士生,研究方向为计算机图形学与虚拟现实。E-mail:通讯作者:淮永建(1970-),男,教授,博士,研究方向为计算机图形学与虚拟现实。E-mail:第 35 卷第 9 期2023 年 9 月Vol.35 No.9Sep.2023系统仿真学报Journal of System Simulationhttp:/www.china-automatically.The method of combining rough
10、collision with a precise collision can not only effectively improve the fidelity of collision simulation between garment and human body but also ensure efficient real-time 3D garment simulation effect.Keywords:collision;fabric simulation;skeleton;feature points;mesh;collision detection0引言引言动态服装模拟一直是
11、计算机图形学的一个热门方向,而服装与人体的碰撞处理是决定仿真效果真实感和提升计算效率的重要因素。目前主流的服装碰撞检测算法有层次包围盒方法、空间分解法。前者可以快速定位到碰撞区域,但是需要频繁的数据更新,层次结构较深,计算量偏大。后者采用哈希表进行数据存储,提升了计算速度,但该方法在大步长时间模拟时不稳定,一般被用于布料的自相交碰撞。两种方法都偏向于精确碰撞,计算时间长。近年来,为达到布料的实时模拟效果,多使用椭球体、球体、胶囊体等简单几何体去拟合人体服装碰撞,有效地加速了计算。但是人体形态结构不均匀,在拟合单元数量较少的情况下,会失去人体的部分特征细节,导致服装与人体碰撞的效果严重失真。以上
12、方法各有侧重,无法实现精度与效率的平衡。为了解决上述碰撞检测方法无法兼顾逼真度与性能的问题,本文提出了一种包围体与三角形网格碰撞相结合的方法。为获取人体精确的形态特征,使用遍历骨骼层次的方法采样特征点,生成拟合人体的胶囊体和网格包围体。为了实现碰撞的实时性,使用胶囊体与布料顶点进行粗略的碰撞检测剔除了较远的碰撞单元,提升效率。进一步使用人体网格包围体检测碰撞,用于提升碰撞的准确性。最后,采用包围球碰撞的方法解决局部人体变形严重无法使用网格包围体的问题。实现了服装与人体碰撞的高效计算与精确碰撞。1相关工作相关工作虚拟服装模拟过程中除了布料的动态表现,人体与服装的碰撞极大的影响了模拟的真实感。此外
13、,碰撞检测算法是布料行为模拟中非常消耗计算量的部分1,优化布料碰撞检测的算法对提高服装布料模拟的效率有重要意义2。目前常用的布料人体碰撞方法有基于层次包围盒的轴对齐包围盒(axis-aligned bounding box,AABB)、有向包围盒(oriented bounding box,OBB)方法和将整个空间划分成等体积大小的空间分解法3。其中,基于层次包围盒的碰撞方法被广泛应用在各种复杂场景的碰撞。空间分解法主要应用于稀疏环境且分布较为均匀的几何对象,常见的算法有 k-d 树(k-dimensional tree,k-d tree)、八叉树、BSP 树(binary space par
14、titioning tree,BSP tree)、四面体网格等,在布料模拟中常用于自碰撞计算。层次包围盒的方法可以剔除不必要的碰撞计算,提高检测效率4。由于层次包围盒的结构复杂性,不适用于GPU的并行计算。文献5对此进行了并行优化,把两个AABB树拆分成子树,利用多核并行的优势,缩短碰撞检测的时间。除了尽可能利用硬件的计算能力,优化层次结构也可以有效的加速计算。文献6将AABB方法与链式结构结合,设计了3个链表分别存储层次包围盒在X、Y、Z坐标轴的位置,避免不必要检测的同时实现了层次包围盒的并行运算。文献7采用B+树的存储结构存储AABB包围盒的信息,减少结点的存储容量缩短了检测时间。此外,有
15、效地剔除明显不相交的碰撞对象可以显著提升碰撞检测的效率。文献8利用球体的方向无关性,将球体与OBB方法结合起来,首先用球体进行初步计算排除不相交的物体,然后进行精确计算,找到碰撞的对象,加速了碰撞的计算。近年来,也有学者采用层次包围盒与深度神经网络结合的方法 2024第 35 卷第 9 期2023 年 9 月Vol.35 No.9Sep.2023陈园园,等:基于人体骨骼特征的三维服装碰撞模拟http:/www.china-加速了包围盒的相交检测,提高碰撞检测时的剔除率,有效地降低了模拟时间9。在虚拟服装模拟时,常将人体的各部分抽象成椭球体、球体、胶囊体等简单几何体的组合去逼近人体体型,以实现快
16、速碰撞。其中,因为包围球与运动方向无关,运动时只需要更新球心位置以及碰撞计算简单的特性,经常被用来拟合逼近物体。文献10-11通过在层次包围盒中生成球体实现了快速的内部填充球体。文献12使用三维模型体素化方法构建内部球,通过改进基于测地距离的计算实现了内部球的聚类,可用于模型的语义分割。但是相对于其他形状的包围体,包围球的空间不够紧凑,导致碰撞的精确不高。文献13对球体进行插值变形,提出了球体-网格去逼近动画网格的方法,能拟合多种物体,具有普适性,但在拟合人体时表现不强。文献14用球体和胶囊体去拟合人体躯干和四肢与服装布料进行碰撞计算。文献15-16根据人体的身高尺寸和人体结构提取特征点,采用
17、K均值聚类方法生成最小体积包围椭球体,高度的拟合了人体模型。上述采用聚类去生成几何体逼近物体的方法具有模型分割的通用性,但是聚类的质量依赖于初始簇中心的选取,容易受到噪声数据的影响。人体模型相较其他物体而言,包含的信息更为丰富,不必局限于使用聚类的方法进行语义分割。在虚拟人体的骨骼层次结构中,每个子节点都保留了父节点的三维变换信息,子节点的完整变换是其父节点的三维变换与自身变换的乘积,可以利用人体的骨骼结构分割人体。文献17使用骨架信息构建椭圆体层次结构,提出了最大法线距离的方法,评估人体表面与边界椭圆体之间的距离误差,并根据试穿的服装类型调整碰撞的阈值。文献18提取与骨骼方向垂直的截面信息,
18、获取人体模型各部分的特征多边形,使用球体和胶囊体拟合人体,实现了实时的服装模拟。几何体虽然能在大概形态上逼近人体,但人体本身是不规则的,这种方法无法避免会出现碰撞上的误差。上述方法在服装与人的碰撞处理上取得了良好的效果,但在实际应用上仍有可以探索改进的地方。首先,服装是一种柔软易变形的物体,使用几何体去拟合人体与服装发生碰撞,难免失去部分人体特征,造成服装表现失真。其次,人体形状不规则,若使用层次包围盒的方法取得精确的碰撞效果,需要加深层次结构使包围物体的空间逐渐紧凑,计算量也随之增加。因此,需要在视觉逼真度和效率提升方面寻找平衡。2自适应人体模型拟合自适应人体模型拟合为了拟合人体模型,需要将
19、人体划分成多个区域。虚拟人物的肢体动作主要由骨骼驱动蒙皮运动,因此,在人体模型语义分割时选择通过骨骼关节点的信息去划分人体区域,并采样人体各部分的信息。不同平台虚拟人体的骨骼结构有所不同,这里采用GB/T 41419-2022数字化试衣-虚拟人体用术语和定义中的骨骼结构19。根据人体骨骼的层级结构特征,将每对父子关节点连接的区域作为人体划分的各个区域。在此基础上对关节点的位置稍作更改。最后,通过在关节点处向垂直骨骼方向发射射线的方法采样对应的人体特征点信息,并分别生成锥形胶囊体和网格包围体去拟合人体。2.1 关键骨骼提取关键骨骼提取人体的骨骼层次结构类似于多叉树结构,遍历骨骼关节点,并将每对父
20、子关节的信息存储在集合M=m1m2mN,其中每个元素mi存储了父子节点的位置信息,父节点的旋转信息,目的是保证拟合物体跟随父节点运动。人体的四肢部分形态均匀,且层次结构简单,易于拟合。臀部、胸部与肩部这些躯干形状不规则,直接利用现有的骨骼结构进行拟合会发生部分碰撞体的相交重合,需要对提取到的部分骨骼信息进行修改,具体更改情况如图1所示,其中臀部由盆骨与左右大腿骨组成,沿垂直骨骼方向发射射线生成碰撞 2025第 35 卷第 9 期2023 年 9 月Vol.35 No.9Sep.2023系统仿真学报Journal of System Simulationhttp:/www.china-体,会造成
21、左右两个碰撞体重叠,优化方法为将左大腿骨与右大腿骨的位置相加合并成一个节点;胸部只需要下部与上部节点的信息即可生成碰撞体,删除多余的左右胸部节点信息;肩颈区域的关节点较多,为避免颈部和肩部的碰撞体重合,只保留下颈部节点与肩部的节点,并降低下颈节点位置。此外,在预处理阶段,可以根据服装覆盖人体的情况手动删除不会发生碰撞的节点信息,如短裙只涉及到与大腿和臀部的碰撞,可以删除上身关节点与小腿关节点。对骨骼关节点进行提取修改之后,得到最终的关键节点信息集合M。2.2 采样特征点信息采样特征点信息将提取到的关键骨骼点位置作为碰撞体的中心参考点,接下来需要采样人体特征点生成锥形碰撞体的半径和网格包围体的顶
22、点数据。文献18根据语义特征从激光扫描的三维无序组织中构建人体的特征曲线。文献18的方法只需要使用关节处的骨骼横截面特征点信息,对于本文这种建立网格包围体的方法还需要再提取关节中间的特征点。参考文献20等在生成人体模型时的方法。具体方法是在人体站立姿态下,遍历上一步获取的关节点数据,将每对父子关节点分段,如图2(a),分段点的位置集合为C=c1c2c5,从ci处沿垂直于骨骼方向,每隔 20发射一条射线,如图2(b)。使用射线检测的方法获取人体各部分的网格顶点数据作为特征点:p=ci+sddDmaxci+sDmax dDmax(1)式中:ci为射线的起点;s为射线的方向;d为射线探测到人体的距离
23、;Dmax为射线探测的最大长度。根据不同部位的语义信息,调整Dmax的数值。例如腹部和臀部范围更大,需要提高Dmax的数值,肩部范围小,就需要适当减小Dmax的数值。记录每条射线检测到的首个碰撞点即皮肤边缘的位置,若无碰撞点则记录射线检测的最远点。图2(c)展示了提取到的特征点,将特征点保存到点集P=p1p2pN中。使用记录下来的采样特征点绘制锥形胶囊体和网格包围体。2.2.1 基于锥形胶囊体的人体粗拟合基于锥形胶囊体的人体粗拟合用来粗略碰撞检测的简单几何体选择两个半径大小不一的球体组合而成的锥形胶囊体,摒弃传统AABB、OBB包围盒使用的长方体或包围球。图1 骨骼结构与部分关节信息更改Fig
24、.1 Skeletal structure and local joint information change 2026第 35 卷第 9 期2023 年 9 月Vol.35 No.9Sep.2023陈园园,等:基于人体骨骼特征的三维服装碰撞模拟http:/www.china-首先在计算上,胶囊体只需要计算点和线的关系而长方体需要计算的是点和面的关系,减少了计算量。其次在形态上,胶囊体的组合更靠近人体形状,二十几个胶囊体就可以模拟人体的主要身体部位,常被用做构建人体的基本几何体单元21。基于上述原因,胶囊状碰撞体是游戏引擎Unity和UE进行服装碰撞物理模拟的主流几何碰撞体,但是目前人体的胶
25、囊逼近体仍是手动添加调整,费时费力22。为提升拟合效率,本文利用骨骼关节点的位置和特征点信息自动快速生成胶囊逼近体。锥形胶囊体两端的球体中心位置分别为对应骨骼父子关节点位置,即c1和c5,球体半径r和r取两端节点与附近的采样特征点距离均值,计算方式一致,只需更改成对应的采样特征点。球体半径的计算公式为r=118i=118c1-pi(2)2.2.2 基于网格方法的细化表示基于网格方法的细化表示为了实现虚拟服装布料与人体的精确碰撞,需要进行布料顶点与人体网格的碰撞检测。人体网格顶点数量较多,且无序,直接进行碰撞计算非常耗时。精确的碰撞检测一般是构建层次包围体,包围体的结构为一棵从上至下节点覆盖物体
26、表面网格越来越少的树,以降低三角形检测的次数。但是需要考虑如何均匀地分割每块子节点的区域,计算量也偏大。文献23提出预计算包围体映射的方法,给每个包围体提前计算出对应的人体网格三角形,检测到与包围体发生穿透后,再根据映射的网格计算碰撞响应点。本文采取类似思路,更换了映射方式,使用几何包围体与网格包围体一对一映射。将之前划分的每部分人体区域重新网格化生成网格包围体,以结构化形式存储网格。几何包围体检测到碰撞后,直接映射到对应的网格包围体进行碰撞计算。每个网格包围体包含同样数量的网格顶点,便于遍历的同时也减少了碰撞检测计算的网格三角形数量。将记录的序列点P平铺成518的点阵,按图3所示方式连成网格
27、。其中网格内的三角形顶点顺序需为顺时针顺序,保证三角形面片的法线朝向人体外侧。图4(a)、(b)展示了根据特征点拟合大腿下侧的锥形胶囊体的正面和侧面。图4(c)、(d)展示了根据特征点拟合大腿下侧的网格包围体的正面和侧面。图5(a)、(b)分别为基于骨骼结构整体拟合人体的锥形胶囊体和网格包围体,有21个胶囊体和图2 采样特征点Fig.2 Sampling of feature points图3 网格面片展开示意图Fig.3 Expanded mesh triangulation图4 大腿下侧锥形胶囊体和网格包围体Fig.4 Conical capsule collider and mesh c
28、ollider of lower thighs 2027第 35 卷第 9 期2023 年 9 月Vol.35 No.9Sep.2023系统仿真学报Journal of System Simulationhttp:/www.china-21个网格包围体。对比可以看出胶囊体形状基本逼近人体,只有躯干部分拟合欠佳,而网格包围体几乎完全贴合人体。3基于几何体基于几何体-网格耦合的碰撞算法网格耦合的碰撞算法基于锥形胶囊体的人体粗拟合方法进行虚拟服装的碰撞处理计算速度快,可以避免服装与人体的大面积穿透。但虚拟服装柔软易变形,锥形胶囊体不能完全拟合人体,当服装紧密贴合人体的时候,就需要精度更高的碰撞。基于
29、网格的细化表示保证了碰撞检测的精确性,然而直接遍历计算布料顶点与网格的碰撞加大了计算量。为了实现视觉效果和性能的平衡,通常使用包围盒加速精确碰撞检测。文献14提出使用表面误差大的椭球体排除不会发生碰撞的网格,再对椭球体包围的人体网格进行精确的碰撞检测。这种方法可以有效的减少计算量。但是这种方法需要实时的更新网格点的位置,采用GPU计算碰撞时,会消耗一些时间在传输数据上。本文在精确碰撞检测时采用包围网格的方法,初始时传输进来网格相对父节点的相对位置,每次只需要更新父节点的位置和旋转即可计算出人体网格的位置,减少了数据传输的时间。基于以上分析,提出本文的核心碰撞方法:几何体-网格包围体耦合碰撞,首
30、先使用简单几何体代替人体进行粗略的碰撞检测,快速定位到碰撞的区域,有效避免了复杂的网格相交计算。检测到碰撞后,对应的网格包围体进行精确的碰撞检测与处理,最后使用包围球处理人体局部形变关节的碰撞。3.1 快速碰撞检测快速碰撞检测此部分的简单几何碰撞体仅用来加速碰撞检测的速度,方便快速定位到发生碰撞的单元。布料顶点与锥形胶囊体的碰撞检测主要分以下3种情况:顶点与主球体外侧的半球检测(1区域)、顶点与胶囊体中间部分进行检测,顶点与副球体外侧的半球检测(2区域),如图6所示。布料顶点与锥形胶囊碰撞体算法如下。算法1 布料顶点与锥形胶囊体碰撞检测输入:锥形胶囊体的两端球体中心位置o1、o2,半径r1、r
31、2;布料顶点位置v;横向法线m;纵向法线n;误差阈值;输出:布料顶点与锥形胶囊体的碰撞检测结果;1:初始化布料顶点与锥形胶囊体的距离dist12:计算胶囊体父节点端球体中心点到顶点的向量q=v-o13:计算胶囊体父节点端到子节点端的向量t=o2-o14:if qntn7:dist1=q-r2;8:else9:dist1=qm-r110:end if11:if dist112:布料点与胶囊体产生碰撞,对应网格进行精确碰撞检测;13:end if算法1中,初始化布料顶点与锥形胶囊体的距离dist1前,需要先将布料顶点的位置转化为相对于胶囊体的局部坐标。此外,躯干部分的胶囊体不能完全包裹住人体,可以
32、提高碰撞检测时的误差阈值,扩大检测区域。当检测到布料顶点与胶囊体发生穿透时,需要进行下一步精确的碰撞检测,判断胶囊体附近的网格包围体与布料顶点的碰撞。这种检测方式存在布料顶点与多个胶囊体发生穿透的情况,因为此步只是为了排除远距离的碰撞体,不涉及碰撞响应,所以不做过多处理,直接选择与布料顶点法线距离最近的胶囊体作为发生穿透的碰撞体。3.2 精细化碰撞检测与响应精细化碰撞检测与响应当检测到布料顶点与锥形胶囊体发生穿透,此时可以排除距该胶囊体较远的网格包围体,使用胶囊体对应的网格包围体进行碰撞检测与响应。对于部分关节蒙皮变形较大、网格包围体覆盖不到的区域采用球状包围体进行碰撞处理。3.2.1 网格碰
33、撞检测与响应网格碰撞检测与响应布料与包围网格的碰撞算法如下。算法2 布料顶点与网格包围体碰撞输 入:网 格 包 围 体 的 三 角 形T=T1T2T144;布料顶点位置v;父节点旋转矩阵R;误差阈值输出:布料顶点与网格包围体的位置关系碰撞检测结果;1:初始化顶点与网格包围体的三角面片垂直距离dist22:随父节点旋转Ta=TaRTb=TbRTc=TcR;3:for i=12144 do4:l=TiaTib TiaTic/(TiaTib TiaTic);5:dist2=l Tiav;顶点与面片距离6:v=Tiav-(Tiav l)+Tia;投影点位置7:根据式(3)计算投影点v是否在Ti内8:i
34、f v在Ti内and dist20(3)式中:a,b,c为该三角面片的顶点位置。如果投影点在三角形内,同时布料顶点与三角面片的法线距离小于误差阈值,说明即将产生碰撞。此时沿法线方向将顶点推出包围体外,调整布料顶点的位置:v=v+(-dist2)l(4)式中:dist2为顶点与三角面片的垂直距离。之后模拟布料顶点与人体碰撞受到的摩擦力,摩擦力本质上是作用于物体切线反方向上的力,因此采用减慢物体切线方向的运动实现。3.2.2 局部关节点碰撞检测与响应局部关节点碰撞检测与响应虚拟人体蒙皮点可分为两类:柔性蒙皮点和刚性蒙皮点。膝盖、手肘及肩关节等自由度较大的关节区域蒙皮点为柔性蒙皮点,顶点受两个及以上
35、的关节点控制,通过局部空间的旋转插值产生运动时皮肤的变形23。其余部分皮肤顶点为刚性蒙皮点,只受父节点控制,不会发生局部形变。文中生成的网格包围体在刚性区域,可以跟随父节点做刚性运动,网格不会产生堆叠。但柔性区域的膝盖、手肘弯曲时会产生局部皮肤变形,造成网格包围体的堆叠与部分区域没有网格覆盖的情况,如图8(a)方框区域所示。此处人体部位范围较小,使用粗略的碰撞处理不影响整体的仿真效果,因此引用文献23的思想,采用包围球进行碰撞,如图8(b)所示。包围球的位置及大小信息参考该部分胶囊体的临近端球体。布料顶点与包围球的相交计算较为简单,只需计算布料顶点与球心的距离,并与球体半径比较,根据比较的结果
36、选择是否将顶点推出球体。考虑到碰撞之后的响应时间,此处同样设置一个误差阈值,具体计算公式为 ov-r(5)式中:v为布料顶点位置;o为球体质心位置;r为球体半径。若式(5)成立,说明布料顶点与球体产生穿透,需要移动布料顶点到球体外部,调整顶点的位置:v=o+r(ov/ov)(6)4实验结果分析实验结果分析本文实验环境均为Windows 10,Intel Core i7-6950X CPU 3.0 GHz,32 GB内存,NVIDIA Geforce GTX 1080 Ti的台式电脑。脚本编写主要为C#语言,采用Unity2020的高清渲染管线进行实验。使用的人体及服装模型均为 DAZ Stud
37、io 4.16 Pro的Genesis 8模型。图9是方形布料对静止的模型进行胶囊碰撞体和网格包围体碰撞测试的结果。图9(a)模型包含358个顶点,689个三角形。图9(b)是使用本文射线检测采样方法得到的胶囊拟合体和网格包围体,顶点数目减少到 90个,三角形个数为144。图9(c)和图9(d)分别为方形布料悬垂与胶囊体碰撞和网格包围体碰撞的效果,其中,布料顶点为1 600个,运行帧率分别为78帧/s和59帧/s。实验结果验证了文中碰撞算法的可行性。图10展示了半身短裙与静态的站立人体分别用几何碰撞体和网格包围体碰撞测试点的结果。半身短裙模型包含16 647个顶点,腿部及臀部包含3 728个顶
38、点。图10(a)为未使用碰撞的服装模型,布料受到重力作用自然悬垂与人体产生穿透。图 10(b)采用胶囊体进行碰撞响应,误差阈值取图8 局部关节点碰撞Fig.8 Local joint collision 2030第 35 卷第 9 期2023 年 9 月Vol.35 No.9Sep.2023陈园园,等:基于人体骨骼特征的三维服装碰撞模拟http:/www.china-0.01,避免了布料与人体的穿透,但用来拟合的几何体与人体形态存在部分差异,造成短裙过于臃肿。图10(c)是用的本文提出的采样特征点生成的网格包围体,有432个三角面片,采用网格碰撞的方法进行碰撞检测和响应。重新网格化的包围体逼近
39、人体尺寸,布料与人体的碰撞也更加服帖。为了验证提出的自适应人体模型拟合方法的通用性,采用文献16的实验方法,使用不同性别和体型的人体模型进行了网格包围体拟合的实验,如图11所示。其中,图11(c)肥胖女士、图11(d)肥胖男士分别为图11(a)女士、图11(b)男士的变形,特征点距离关节点较远,因此在实验中提高了射线探测的最远距离Dmax。从生成网格的包裹紧密度可以看出本文的拟合方法对正常的体型及肥胖体型均表现出良好的拟合效果。为进一步验证不同体型人体与服装的碰撞效果,使用相同着装的不同体型人体进行仿真,并调整不同姿势,碰撞效果如图12所示。从效果来看,两种体型的人体与服装碰撞模拟表现良好。为
40、了表现网格精确碰撞方法在不同衣物的碰撞效果,选择了不同材质的服装模型进行实验,表1展示了具体的服装与碰撞信息。图12 不同体型人体与服装碰撞效果Fig.12 Collision effect of garment with different human bodies图9 方形布料碰撞测试Fig.9 Square fabric for collision test图10 不同碰撞方法碰撞效果对比Fig.10 Collision effects of different collision methods图11 不同性别、体型人体网格包围体拟合效果Fig.11 Fitting effects o
41、f mesh colliders of different human bodies in different genders 2031第 35 卷第 9 期2023 年 9 月Vol.35 No.9Sep.2023系统仿真学报Journal of System Simulationhttp:/www.china-图13展示了不同类型、不同材质的服装模型与人体的碰撞效果。图13(a)、(b)为偏柔软的女士丝绸半身长裙,运动时大腿前侧和小腿后侧与裙子紧密贴合,表现逼真。图13(c)、(d)为材质稍硬的棉布长裤,肢体与服装的碰撞主要体现在臀部及腿部,当膝盖弯曲时,关节处的包围球碰撞避免了服装与人体
42、的穿透。图13(e)、(f)为蕾丝面料的舞裙,扭动人体时服装与腰腹部发生碰撞,仿真效果自然。图13(g)、(h)为毛线上衣,运动时服装与肩关节和胳膊部分碰撞较多,锁骨处的网格包围体保证了服装与人体不规则区域的精确碰撞,肩关节的包围球有效地将服装顶点推出人体。此外,基于网格碰撞的时间与服装的类型有关,紧身的服装碰撞模拟更耗性能,这是因为宽松的衣服只有部分贴到人体的顶点与人体发生碰撞,而紧身的衣服贴近人体的顶点相对占比更多,碰撞计算量也自然增加。从表1可以看出,虽然长裤的顶点数少,但是大部分的顶点都会与人体发生碰撞,导致每帧碰撞处理的时间最长。为了验证粗略碰撞检测对网格碰撞的加速性,进行了直接网格
43、碰撞与基于粗略碰撞的网格碰撞对比实验。使用相同人体进行不同服装顶点数的碰撞模拟,实验结果如图14。可以看出,在服装顶点数较少的时候,两者碰撞检测时间相差不大,随着服装顶点数的增加,基于粗碰撞的网格碰撞方法明显优于直接使用网格碰撞,前者计算速度最快达到后者的5.7倍。原因在于使用GPU并行计算时,在服装顶点数较少情况下,直接计算网格碰撞时间开销不大。当服装顶点较多时,粗碰撞剔除了大部分的碰撞体,顶点只与距离较近的网格包围体计算碰撞,节省了不必要的检测。将文中算法与文献16中使用几何体自动拟合人体的方法进行类似服装的碰撞对比,如图15所示,可以发现本文方法在不规则的人体部位,如腰腹部与服装产生的碰
44、撞更加精确。因为使用几何体代替人体与服装模型进行碰撞,所以本文方法与文献16方法一样对人体的顶点数变化不敏感。为验证本文方法在效率上的提升,增加了不同服装顶点数量下,同一服装模型与人体碰撞检测时间对比的实验,实验结果如图16 所示。文献16的平均每帧碰撞时间约为100 ms,对比来看,本文方法的平均碰撞计算时表1服装数据及碰撞响应时间Table 1Garment data and collision response time服装类型丝绸长裙棉布长裤蕾丝舞裙毛线上衣模型顶点数(个)22 1426 69911 71826 286实际碰撞网格包围体数(个)77911每帧碰撞处理时间/ms20.12
45、3.519.822.8图14 两种方法每帧碰撞检测时间对比Fig.14 Comparison of collision detection time per frame between two methods图13 不同材质服装碰撞对比图Fig.13 Collision effect of garment with different materials 2032第 35 卷第 9 期2023 年 9 月Vol.35 No.9Sep.2023陈园园,等:基于人体骨骼特征的三维服装碰撞模拟http:/www.china-间降低了近5倍。此外,文献16只适用于静态服装的碰撞检测处理,而本文实验生成
46、的碰撞体可以跟随骨骼运动,实现动态的服装碰撞处理,更具实用性。5结论结论本文提出了一种基于骨骼自动化拟合人体生成碰撞体的方法,根据关节点对人体进行语义分割,并使用射线检测的方法获取模型特征点。使用胶囊体形状的包围体实现了与服装顶点快速的粗略碰撞检测,进一步使用网格碰撞的方法实现了服装与人体精确碰撞。在计算上采用了GPU并行计算的方法加速运算,有效提高服装碰撞效果逼真度的同时保证了实时的高效计算。文中提出的精确碰撞使用网格的方法需要消耗一定的性能,不适用于人体做速度较快的动作,目前仅用于速度平缓的碰撞。今后将继续改进网格碰撞算法以实现精确碰撞的快速计算。参考文献参考文献:1Wang Huamin
47、.GPU-based Simulation of Cloth Wrinkles at Submillimeter LevelsJ.ACM Transactions on Graphics,2021,40(4):169.2雍俊海,陈梓苗.基于物理的布料模拟研究综述J.包装工程,2021,42(14):28-39.Yong Junhai,Chen Zimiao.Review of Physics-based Cloth SimulationJ.Packaging Engineering,2021,42(14):28-39.3马晓萌,孙红岩,孙晓鹏.层次八叉的三维模型并行碰撞检测J.计算机工程与设计
48、,2019,40(4):1077-1084.Ma Xiaomeng,Sun Hongyan,Sun Xiaopeng.Parallel Collision Detection of 3D Mesh Using Hierarchical OctreeJ.Computer Engineering and Design,2019,40(4):1077-1084.4石敏,王俊铮,毛天露,等.基于物理的可交互性虚拟服装动画模拟J.系统仿真学报,2018,30(7):2583-2592.Shi Min,Wang Junzheng,Mao Tianlu,et al.Physically-based Inte
49、ractive Virtual Clothing Animation SimulationJ.Journal of System Simulation,2018,30(7):2583-2592.5邓峻生,毛世峰,刘旭峰,等.基于AABB树的聚变堆形变部件碰撞检测算法J.计算机系统应用,2018,27(11):161-167.Deng Junsheng,Mao Shifeng,Liu Xufeng,et al.Collision Detecting Algorithm for Deformable Components in Fusion Reactor Based on AABB TreeJ.
50、Computer Systems&Applications,2018,27(11):161-167.6Qu Huiyan.Research on Parallel Algorithm Based on AABB Bounding Box Coordinate Chain MethodJ.Journal of Physics:Conference Series,2021,1732(1):012067.7杨帆.基于B+树存储的AABB包围盒碰撞检测算法J.计算机科学,2021,48(增1):331-333,348.Yang Fan.Collision Detection Algorithm of