虚拟角色头佩附件自动组合算法
2015-12-05郑利平周乘龙程亚军
郑利平, 周乘龙, 程亚军, 陈 星
(合肥工业大学计算机与信息学院,安徽 合肥 230009)
虚拟角色头佩附件自动组合算法
郑利平, 周乘龙, 程亚军, 陈 星
(合肥工业大学计算机与信息学院,安徽 合肥 230009)
在虚拟角色仿真过程中,虚拟人物外观多样性很大程度上取决于角色模型本身的差异性。而角色模型的差异性主要体现在两方面:模型的高矮胖瘦以及模型穿戴的头佩附件。为体型各异的角色模型自动穿戴合适的附件可大大增强仿真的真实感。基于此问题,提出一种头佩附件自动组合算法,首先为角色模型自动嵌入骨骼,其次为附件模型添加简单骨骼并选取骨骼的锚点,再通过附件自动组合算法快速生成组合角色模型,最后通过嵌入的骨骼驱动该组合模型运动。实验证明该方法简单快捷,能够为多样化的角色模型自动穿戴头佩附件,提高角色模型的多样化程度。
头佩附件;自动组合;角色模型;自动嵌入骨骼
虚拟角色仿真广泛应用于影视作品、3D动画、游戏创作等领域。人物角色的真实性主要体现在模型本身的高矮胖瘦以及模型的附件方面。目前人物角色的多样性研究主要集中在角色模型本身,可通过模型本身体型的差异性来体现人物角色的多样性。而事实上这种多样性只是模型多样性的一部分,实验证明让虚拟角色拥有不同的附件,特别是头佩附件能够更加显现人物角色外观的多样化,例如给模型添加不同的帽子、眼镜等附件,能够大大增加人物角色的真实感和多样性。
由于带附件的虚拟角色模型复杂度比较高,建模师需要花费大量时间且进行细致地处理才能设计出真实感较高的模型。如果对群体动画进行仿真,建模师需要手动建模各种不同的角色模型,这种复杂度和时间代价是相当巨大的。如果能够分别建模角色模型以及附件模型,将角色模型与附件模型进行自动组合生成带附件的角色模型,可降低建模的复杂度、缩短时间周期;另一方面在自动组合过程中同种附件模型的变形程度不同也能提高模型的重用性。
本文从此实际问题出发,首先为人物角色模型自动嵌入骨骼,其次为附件模型添加简单骨骼并选取骨骼的锚点,再通过附件自动组合算法快速生成组合角色模型方法,最后通过嵌入的骨骼,驱动该组合模型的运动。实验结果证明该方法能够为不同的角色模型自动穿戴附件,更大程度上体现了角色模型的多样性,尤其在群体动画仿真中该方法的作用体现的更为明显。
1 相关工作
虚拟角色多样化研究问题一直是面向实际应用的热点研究问题之一。在虚拟角色模型多样化方面目前的研究工作主要从3个方面进行研究,分别是模型本身的多样化、模型动作的多样化以及模型外观的多样化。模型本身多样化方面,Zhou等[1]通过将3D模型的变形映射到二维图片,实现模型体型高矮胖瘦的变形。郑利平等[2]通过使用 Hasler模型库,实现了角色模型体型的差异化,得到了体型各异的角色模型。在模型动作多样化方面,李石磊等[3]详细介绍了目前各种主流的角色模型运动生成与控制方法。在模型外观多样化方面,主要根据穿着情况分为两类:模型的衣服以及模型的附件。McDonnell等[4]提出在群体仿真时,进行简单的角色克隆会大大降低群体的真实感,通过将克隆的模型赋予随机的方向,将模型的衣服、裤子赋予不同的颜色、再附加克隆的动作来生成多样化的人群。郑利平等[5]提出了一种多样化群体外观方法,首先,角色模型通过UV展开并获取UV展开图,再利用图像分割算法处理该UV展开图得到纹理的衣饰语义信息,最后实现纹理着色和图案填充。但是该方法得到的多样化人群的衣服外观效果类似于体绘和纹身效果,没有较好地反映出衣服的动态效果。McDonnell等[6]通过眼球追踪设备,提出了在群体仿真中影响人群多样性的是人体模型的面部、头部以及头发等部分,另外适当增加帽子、眼镜等附件能够大大增强模型间的差异,实现群体仿真多样化程度的最大化。但是该方法只是通过简单的几个模板模型,没有考虑模型附件的添加方法。
在骨骼嵌入方面,早期的Teichmann和Teller[7]提出了一种Voronoi骨架方法,但是在生成该骨架的过程中需要用户交互来选取骨架的关节,并不能真正实现自动的嵌入。Lu等[8]将CVT计算问题视为一个连续的变分问题,并将其应用到骨骼适应中,提高了模型无关性以及解决了模型细小连接处的骨骼问题,得到精确的骨骼适配效果,但是该方法的计算过程比较慢。Bharaj等[9]提出了一种针对多组元角色模型骨骼嵌入算法,首先为输入的初始模型建立目标骨骼,计算出其刚性蒙皮权重,最后实现目标骨骼关节和初始输入的带运动信息的骨骼关节直接的运动映射。该方法操作自动化程度高,需要人为干涉少,但其受模型的局限性较大。吴伟和等[10]首先自动提取出人体模型的四肢以及头部共5个特征点,计算出模型的中心线,然后根据人体特征学确定关节点的位置,最后精确定位关节点,提取出人物模型的骨架信息。目前使用较为普遍的是Baran和Popović[11]提出的自动骨骼嵌入方法,该方法较其他方法突出的优点为:①能够较好地适应各种拓扑结构的角色模型;②经优化后嵌入的骨骼效果较好。
在模型包围盒生成方面,早期的研究[12]主要采用较为简单的八叉树数据结构,先用大的正方体来包围模型,其后将该正方体迭代划分生成子正方体,直至划分到需要的深度为止,最后对每个子正方体构建球体来创建球树(sphere-tree)。泥宗涛和余英林[13]提出了一种人机交换的方法来为复杂物体构建包围盒树,该方法效率不高且包围盒树的紧凑程度直接取决于人为交互过程的处理。朱元峰等[14]提出了将球状包围盒与有向包围盒相结合的一种复合包围盒策略,对于模型的不同部分采用不同的包围盒,该方法虽然能获得紧凑的包围效果,但是计算过程复杂。Bradshaw和O′Sullivan[15]提出用自适应中轴算法来计算并生成包围球树,能生成不同精度的包围盒且包围盒的紧凑程度较好。
2 角色和附件模型处理
为了实现模型的运动以及更加便利地实现人物模型和附件模型之间的自动组合,需要分别为角色模型以及附件模型添加骨骼。
2.1 模型的骨骼嵌入
考虑两种模型的复杂程度不同,同时为加快系统的运行速度,需为两种模型选取不同的方法。
在为人物模型添加骨骼时,为了能够提高整个组合系统的自动化程度以及系统的适应性,本文采用文献[11]提出的自动嵌入骨骼算法。算法的主要步骤如下:
(1) 构建 KD-tree来计算出模型任意点到模型表面的距离。通过这些距离来建立离散的自适应距离场。
(2) 根据自适应距离场来计算模型的近似中轴面(approximate medial surface)。
(3) 根据顶点到模型表面的距离排序,按照从大到小进行球形包裹,球心作为骨骼关节点,连接球心的边作为骨骼的关节。
(4) 构建骨骼的几何图,G=(V, E),其中V表示关节点,E表示骨骼。
(5) 通过离散的惩罚函数来精确关节点位置,重新调整骨架大小。
(6) 通过连续惩罚函数来进行骨骼嵌入效果的优化。
通过上述步骤,实现了人物骨骼的自动添加。
为附件模型添加骨骼时,由于附件模型的种类繁多,且不同的附件模型之间的差异性较大,难以构建出一个统一的骨骼来实现不同附件的自动嵌入。然而另一方面附件模型相对于人体模型来说较为简单,同时需要嵌入的骨骼也相对比较简易。故本文对附件模型采用传统添加骨骼的方法:先进行几何建模,然后手动标定骨架位置。图1和图2分别表示的是人物和附件模型骨骼的自动嵌入结果,(点M表示附件模型的锚点)。
图1 人物模型骨骼嵌入结果
图2 附件模型骨骼嵌入结果
2.2 包围球树的构建
为了实现附件模型和角色物模型的自动组合绑定,首先确定附件需要组合到人物模型的身体部分(即对应的骨骼关节点),附件的类型与此紧密相关。附件根据组合到人物模型的位置不同分为两类:粗糙类和精致类附件。粗糙类附件,如帽子、鞋子等,这类附件通常是穿戴在人物头部、脚部等节点部位,这些关节是人物骨骼的某个节点,比较容易绑定。精细类附件如眼镜、项链之类的附件通常处于人体模型某节点对应的身体部位的某部分区域内(如脸上、胸口上),该部位需要更加精确地定位才能保证组合结果更加真实。为此,需引入常用在碰撞检测中的层次包围盒概念,构建精细程度不同的包围盒来进行组合,使得组合的结果更加精确。
本文基于文献[15]提出的算法来实现不同精细程度的包围盒的构建,主要步骤如下:
步骤1. 选取模型表面特定区域的采样点将模型进行分段。
步骤2. 选取每段模型的采样点构造用Voronoi图来计算出每段模型的近似中轴。物体内部的Voronoi顶点就是其中轴。
步骤3. 由每段的中轴调用包围球生成算法生成初级包围球。
步骤4. 使用文献[16]球树构造方法构建球树来存储不同层次的包围球,且在每生成一层包围球的同时更新Voronoi图。
通过使用骨骼自动嵌入算法嵌入的骨骼就是文献[11]的中轴,因此本文使用该算法时只需执行步骤3和步骤4,提高了算法的重用性并减少了算法的时间损耗。通过上述算法为人物角色模型构建了包围球树。图3是二级层次包围盒,图4展示的是人物模型在不同层次包围球之间相对应的映射关系。在后续的组合算法中对于粗糙类附件采用图3(b)的一级层次包围盒,而对于精细类附件除了采用一级层次包围盒,还需要采用图3(c)的二级层次包围盒。
图3 二级层次包围盒示意图
图4 不同级层次包围球映射关系图
3 角色与附件自动组合算法
不同的附件对于角色模型多样化的影响程度明显不同。本文参考文献[6]的测试结果主要对角色模型添加眼镜、帽子等头佩附件模型。
3.1 组合因子的确定
首先对常见的附件类型进行编号,附件的编号与人体关节点的编号(同一节点多种附件时,编号前缀)需保持一致。该方法能够有效减少组合处理时间,加快了在群体仿真中的运行速度。对于要添加的附件根据其编号可确定要组合的人体关节点,并同时选择该关节点对应的包围球(可能是连续的几个球)。根据该包围球以及附件模型计算出组合因子,继而实现二者的自动组合和绑定。组合因子Φ可用三元组来表示:Φ=(α, β, γ)。其中α为放缩因子,β为偏移因子,γ为旋转因子。组合因子的计算公式为:
其中,pro表示三维空间中平面的集合,pro={YOZ,XOZ,XOY};LENGTH表示模型在pro的平面上进行投影的最长长度;LOCAT表示模型锚点的三维坐标;ORIET表示模型锚点的法向向量;latt表示附件模型;lboun表示与附件模型相对应的包围球模型;latt(i)表示附件模型往i方向投影;lboun(i)表示对应的包围球模型往i方向投影εf(f=1,2,3)。表示一个弹性变量,用来微调组合因子。微调自动组合结果时,不同的附件选取的值不同,其中:
3.2 附件自适应组合
根据放缩因子α确定附件模型相对于人物模型的整体大小。可将附件模型分别乘以α在3个平面的分量αxoy、αyoz、αxoz,实现对附件模型及骨骼的整体放缩。
对于偏移因子,先定义要组合的人体关节点为锚点(附件模型的锚点为图2的M点,人物模型为与附件类型编号一致的节点),其次选取附件骨骼的锚点,根据人体学特征及附件的实际穿戴情况,将两种模型的锚点进行绑定,实现了附件模型以及骨骼的整体定位。
对于旋转因子,因为附件模型导入的方向不固定,如果要进行自动组合,首先需要计算旋转角度,涉及标准参照物选取问题以及向量的计算,需要的人为干涉太多,会影响系统的自动化程度,所以本文在预处理阶段将所用的附件模型和人物模型正向地处于三维空间坐标系统中,即旋转因子γ=0.0(此时的εf=0.0),避免了组合角度的误差。
经过上述3种操作之后,附件模型及人物模型实现了初步绑定,再将附件的锚点和人物模型的锚点进行绑定,因为附件模型通常都是附着在角色模型上,且和角色模型运动基本保持一致,两种模型之间是“刚性”运动。故在二者实现自动组合并且绑定之后,删除附件的骨骼并更新最终得到的人物模型骨骼。算法的具体过程如下:
算法:附件自动组合算法
输入:人物模型M,带编号人物模型的简易骨骼H,附件模型A,类型为Type,手动嵌入的附件模型简易骨骼S及S上的标定的锚点P。记一级包围球树为Sphere-L1,二级包围球树为Sphere-L2
输出:组合好的组合模型
1. 使用Baran算法实现H与M的自动适应嵌入
2. 使用文献[15]算法根据H为M构建层次包围球树
3.IF (A 为粗糙类附件)
4. 投影Sphere-L1中Type编号对应的节点
5.ELSE
6. 投影Sphere-L1中Type编号对应的节点
7. 投影Sphere-L2中Type编号对应的节点
8.END IF
9. 存储模型投影后的最大长度L、宽度W、高度H
10. 由 L、W、H按式(1)、(2)、(3)计算出组合因子Φ ← (α,β,γ)
11. 确定附件模型整体大小A×α
12. 根据锚点确定附件模型位置A+β
13. 更新组合模型骨骼
所得效果如图5所示,图5(a)包括了更新前角色模型的自动嵌入后的骨骼及为附件模型手动添加的简易骨骼,在图5(b)中更新后的骨骼将附件模型作为角色模型头部的一部分,删除了附件模型的骨骼。
图5 骨骼更新示意图
3.3 组合效果修正
由于组合因子的3个分量为单独计算,所以在对附件模型(主要是帽子模型,因为其高度变形无法用角色模型的头部来进行约束)进行组合放缩时,可能会产生变形,因此,增加分量之间的比例约束来避免这种可能的变形,即:在算法的第9步计算出的附件模型的长度L、宽度W、高度H,计算出L(或W)与H的比例,在自动组合过程中进行放缩时,实现比例缩放,解决上述变形问题。
对于比较怪异的模型或者比例失调的模型,该自动组合算法得出的结果比较差。如图6(a)中,由于在人物模型自动嵌入骨骼之后,由骨骼来构建包围球树,同时人物模型的耳朵比较大,造成了严重的比例失调,在构建头部结点的包围盒时,包围盒的半径选取的是从头部结点到耳朵的距离,此半径是不精确的,造成了在后续计算中组合因子存在较大的误差,导致在两种模型组合的时候真实感较差。由于在仿真过程中会遇到上述模型,若完全采用文献[15]的方法,需要的交互(采点)太多较为费时间且结果难以保证。为提高本文算法的普适性而添加了部分交互功能,方便用户在自动组合的基础上进行手动修改组合效果,图6(b)为手动修改组合效果然后进行两种模型的重绑定效果图,得到了较为真实的组合效果。
图6 怪异模型组合效果图
4 实验结果与分析
本文的实验环境为64位Windows 7操作系统,主机CPU类型为Intel(R) Core Q8400,内存为8 G,编程环境为 Microsoft Visual Studio 2013,采用MFC、OPENGL作为仿真交互平台。
图7(a)为眼镜附件对比展示图,为了比对多样化差距,其中有部分模型为不穿戴附件的基本模型,图7(b)为帽子附件对比展示图。可以看出图7(a)中针对体型不同的人物模型使用同一种眼镜模型来进行自动组合,得到的效果不同(图7(b)类似),女性人物模型组合出的眼镜模型效果相对于健壮的男性人物模型而言,因二者面部的比例不同,计算出的组合因子不同,造成了附件的变形程度不同,从而组合出的效果前者较为扁长。图 8为 50人多种附件对比展示图。可以看出穿戴附件的角色模型一方面附件模型在组合过程中的变形程度不同,另一方面附件模型自动组合之后产生的模型也不同,这样就能够在很大程度上提高模型之间的差异性和多样性。
图9是将仿真结果导出,并使用3DMAX渲染之后的结果,其中图9(a)和图9(b)展示的是同一模型的正侧面展示效果,图9(a)和图9(c)展示的是不同角色模型组合的差异,图9(d)为多附件的整体效果图。结果表明本文的自动组合算法组合的头佩附件效果较为精确,渲染出的效果真实感较高,大大提高了模型的多样性。图 10为经过本文算法自动穿戴附件之后的虚拟角色模型的运动效果渲染图,效果较为真实、自然。
图8 多种附件对比展示图
图10 自动组合附件之后的运动效果图
5 总结与展望
本文通过人物模型附件的差异性来体现人物的差异性,所用方法便利快捷,大大减少了虚拟角色制作的复杂性,提高模型的多样性和真实感。实验结果可直接应用于游戏、仿真等平台。但是由于附件模型的种类繁多、样式各异,本文主要针对比较经典的头佩附件进行自动穿戴,对于怪异的模型或者比例严重失衡的人物模型自动组合的效果较差,需要通过手动交互加以调整。另一方面附件模型有可能在自组合的过程中和人物模型发生贯穿,即网格融合没有处理。这些都是本文进一步工作需要研究和解决的问题。
[1] Zhou Shizhe, Fu Hongbo, Liu Ligang, et al. Parametric reshaping of human bodies in images [J]. ACM Transactions on Graphics, 2010, 29(4): 126-136.
[2] 郑利平, 张 娟, 赵建明, 等. 多样化虚拟人群生成方法研究[J]. 图学学报, 2013, 34(4): 112-118.
[3] 李石磊, 梁加红, 吴 冰, 等. 虚拟人运动生成与控制技术综述[J]. 系统仿真学报, 2011, 23(9): 1758-1771.
[4] McDonnell R, Larkin M, Dobbyn S, et al. Clone attack! Perception of crowd variety [J]. ACM Transactions on Graphics, 2008, 27(3): 26-34.
[5] 郑利平, 张 娟, 周乘龙, 等. 人群仿真中角色模型纹理多样化生成方法[J]. 图学学报, 2014, 35(1): 110-114.
[6] McDonnell R, Larkin M, Hernández B, et al. Eye-catching crowds saliency based selective variation [J]. ACM Transactions on Graphics, 2009, 28(3): 55-65.
[7] Teichmann M, Teller S. Assisted articulation of closed polygonal models [C]//ACMSIGGRAPH98 Conference Abstracts and Applications. Lisbon, Portugal, 1998: 87-101.
[8] Lu Lin, Lévy B, Wang Wenping. Centroidal Voronoi tessellation of line segments and graphs [J]. Computer Graphics Forum, 2012, (31): 775-784.
[9] Bharaj G, Thormählen T, Seidel H P, et al. Automatically rigging multi-component characters [J]. Computer Graphics Forum, 2012, (31): 755-764.
[10] 吴伟和, 郝爱民, 赵永涛, 等. 一种人体运动骨骼提取和动画自动生成方法[J]. 计算机研究与发展, 2012, 49(7): 1408-1419.
[11] Baran I, Popović J. Automatic rigging and animation of 3d characters [J]. ACM Transactions on Graphics, 2007, 26(3): 72.
[12] O′Sullivan C, Dingliana J. Realtime collision detection and response using sphere-trees [J]. Computer Graphics, 1999, 12(2): 83-92.
[13] 泥宗涛, 余英林. 基于分层包围盒的连续碰撞检测加速算法[J]. 计算机工程与应用, 2000, 36(10): 24-26.
[14] 朱元峰, 孟 军, 谢光华, 等. 基于复合层次包围盒的实时碰撞检测研究[J]. 系统仿真学报, 2008, 20(2): 372-377.
[15] Bradshaw G, O′Sullivan C. Sphere-tree construction using dynamic medial axis approximation [C]// Proceedings of the 2002 ACM SIGGRAPH/Eurographics Symposium on Computer Animation. New York, USA, 2002: 33-40.
[16] White D. Smallest enclosing ball of points/balls [EB/OL]. (1995-07-01) [2015-01-01]. http://www.geom.uiuc.edu/~nina/cglibdocs/ball.txt.
Automatic Matching Method for Head Accessory of Virtual Human
Zheng Liping, Zhou Chenglong, Cheng Yajun, Chen Xing
(School of Computer and Information, Hefei University of Technology, Hefei Anhui 230009, China)
The diversity of virtual humanfor simulation is mainly exhibited by the character. The differences between models consist of two parts: the somatotype and the head accessories. Automatic matching head accessories for virtual human will observably increase the realistic of the simulation. A new method for automatic matching is presented. Firstly, we assign simple skeleton to the accessories and choose anchor points after automatic rigging skeleton for virtual models, then execute the matching method to achieve matched model. Finally, we assign various postures to the model by embedskeleton. The result shows our method can match the head attachments to diverse virtual human automatically, and pretty improve the diversification of virtual models.
head accessory; automatic matching; virtual human; automatic rigging skeleton
TP 391.9
A
2095-302X(2015)05-0655-07
2015-02-09;定稿日期:2015-04-02
国家自然科学基金资助项目(61300118);安徽省科技强警资助项目(1401b042009)
郑利平(1978-),男,湖北麻城人,副教授,博士。主要研究方向为计算机图形学与仿真。E-mail:zhenglp@hfut.edu.cn