人群仿真中角色纹理多样化方法
2014-03-21郑利平周乘龙刘晓平
郑利平,张 娟,周乘龙,刘晓平
(合肥工业大学计算机与信息学院,安徽 合肥 230009)
人群仿真广泛应用于影视动画、教育培训、建筑设计、应急管理、城市规划等诸多领域,自然的多样化人群是保障这些仿真应用可信性和逼真性的关键。但是从目前的研究情况来看,群体动画中采用的角色太过单一,大量的人群仅仅是几个角色外观的简单重复,给人一种单调乏味的感觉[1]。现有工作多数在个体体型、动作、外观等方面实现多样化,生成与实际相符的自然人群。
本文主要关注人群纹理多样化问题,目前工作主要从模型的衣着外观、穿戴附件等方面来进行研究[2],使用较少的标准颜色要素通过组合的形式构成多样化的外观。当渲染一组包含少量个体的群体时,手工方法可使他们的外观看起来不一样,但如果一个应用程序需要大量角色,手工难以为每个角色构造不同纹理。此外,当人群个体成千上万时,纹理数据的存储代价也很大。因此,如何快速生成多样化纹理将是十分有意义的问题。
在纹理贴图处理方面,文献[3]针对交互式三维建模过程中纹理贴图的需要,给出了一种基于三角面片模型的二维纹理贴图算法;范波和吴慧中[4]对多面体表面应用参数化方法把纹理表示与物体表面联系在一起,并有效地控制纹理如何置于多面体表面上,但是对于人物模型复杂的网格这种方法则不适用。在多样化纹理研究方面,文献[5]提出了一种基于编码的大面积多样化纹理生成方法,通过对源纹理图定义编码规则产生多个样图实例,在编码约束下随机无缝拼接成大面积的纹理贴图并实现样图的多样化。
Maim等[6]和de Heras等[7]以及文献[8-10]均使用可编程图形硬件GPU来避免多重通道渲染,通过alpha通道硬件加速调节身体各个部分的颜色;文献[11]中每个模型都有一个纹理贴图,包括皮肤,头发以及衣服,创建alpha映射,用唯一的灰度值编码每个区域,在运行时这些灰度值可以作为映射贴图的索引,存储对每个贴图各个区域的HSV/HSB颜色调制结果,从而产生外观多样的纹理贴图;Thalmann等[12]主要通过帽子眼镜等附件和纹理颜色混合实现克隆人的外观多样化,从而使人群看起来有差异。
本文实现多样化群体外观的思路是,首先,需要一个或者几个角色模型模板;其次,为每个模板展UV获得UV展开图作为纹理模板;最后,利用图像分割方法处理UV展开图得到纹理的衣饰语义信息,在此基础上实现纹理图像的纯色着色和图案填充。本文较其他方法较好地解决了虚拟角色制作效率问题,快速生成视觉上合理的大规模人群且操作流程简单只需要模板和图案的输入,就可以使人群角色获得多样化外观。
1 模型的UV拆分
UV是驻留在多边形网格顶点上的二维纹理坐标点,它们定义了一个二维纹理坐标系统,称为UV纹理空间。本质上,UV提供了一种模型表面与纹理图像之间的连接关系,UV负责确定纹理图像上的一个点(像素)应该放置在模型表面的哪一个顶点上,由此可将整个纹理都铺盖到模型上。
在三维动画角色制作中,角色模型创建完成后的一个任务就是展UV了。如果单独利用Maya和3dmax 自带的UV 编辑工具则实现起来比较繁琐,UVLayout就是一款简单实用的工具,UV拆分操作过程如图1流程所示,经过切割后的模型如图2(a)所示,切割后得到的UV展开图,如图2(b)所示。
图1 UV展开流程图
图2 分割结果
2 纹理多样化填充
对于制作好的UV展开图,希望给其附上不同的颜色和图案,从而生成不同的纹理贴图,继而实现模型纹理多样化。为此首先采用基于图的图像分割算法对纹理模板进行分割处理,得到纹理的衣服服饰语义信息,然后自动对各部分设置颜色和纹理贴图。
图3为采用文献[13]所提供的图像分割算法分段着色后效果,(a)图输入参数为sigma=0.3,k=1000, Min=100;(b)图输入参数为sigma=0.8,k=1000, Min=150。其中,sigma,k, Min为程序中设置的3个输入参数。sigma参数是对输入的图像在分段处理前利用高斯滤波器轻微的平滑图像,目的是补偿数字化产生的噪声。一般将高斯滤波器的sigma=0.8,这样就不会产生视觉上的改变,同时又可以消除噪声。k是一个常数值,它取决于处理的图像的大小,这样较大的k就倾向于较大的区域。Min为允许的最小区域,允许的最小区域对分割算法本身是无意义的,主要用于后续区域合并。
图3 不同输入参数的分割效果
上述图3中,程序实现了给所给定图像分段着色,给分段的每个区域分配不同的颜色。仔细观察图3(a)和3(b)不难发现:上衣被分为前后两部分,裤子也是如此。在现实生活中,通常上衣(裤子)的前后是一种颜色,但是图中的效果却与实际不相符,因而需对程序做相应的处理。
在程序中对上述分段后的图像设置标志位,来区分不同块(如衣服块、裤子块等其他部分),对于标志位相同的部分,认为是同一块(比如图中上衣的正反两面,可以允许它们分布在图中的不同位置),然后取其特征点赋予相同的RGB值,这样就保持了衣服(或者裤子)正反两面颜色的一致性,对于标志位不同的部分认为是不同的部分(比如一个是上衣一个是裤子),则对其赋予不同的颜色值,由此可以实现不同块之间的区分,并可简单地实现纯色的填充,如图4所示。
在此基础上,进一步要实现图案的填充,即能够针对UV展开图在衣服和裤子上贴上重复条纹,模拟简单的衣服纹理。方法是获取UV展开图中裤子和上衣正反两面的纹理坐标,采取一一映射的方式贴上纹理,得到的效果如下图5(b)。将图(b)贴到三维模型上后不难发现下身裤子的纹理产生了错位。为了人物模型的美观,在程序中进行以下处理:考虑到只有裤子部分的纹理有错位,所以进行二次纹理处理,首先贴上上衣的纹理;由于裤子具备对称性,故利用中轴算法计算出裤子的一边与水平方向的夹角,在程序中相应旋转纹理图片的角度,图5(a)为矫正示意图,图中A、B 两点是经过中轴算法得到的中轴线上的两端点,由此产生角度90-angle就是裤子偏移水平方向的夹角,这样分步处理后就得到了比较合理的效果,图5(c)为矫正后效果图,将纹理贴图对应到模型上效果如图6所示。其中左边模型裤子纹理为未矫正的效果,右边模型裤子纹理为矫正之后的效果。
具体矫正实现过程伪代码如下:
图4 纯色贴图效果
图5 图案贴图效果
图6 对裤子贴图矫正前后模型显示效果(左为矫正前纹理效果,右为矫正后纹理效果)
3 实验结果与分析
本文的实验环境为64位Windows 7操作系统,主机CPU为Intel Core四核Q8400 2.66GHz,内存6G,程序运行环境为Visual Studio 2008,采用OpenGL作为显示和交互平台。
论文实现了模型多样化纹理,并给出实验生成结果。图7为程序实现同一模型生成2套纹理衣服,一套为重复条纹,一套为纯色纹理,从而实现模型纹理多样化;图8利用开源模型库Hasler等[14]并用其提供的变形方法为模型变形后依然可以应用程序生成的纹理贴图,图中中间的为原始模型,其身高是190cm,体重70kg;左边为模型身高变为150cm,体重变为50kg效果;右边为模型身高变为170cm,体重60kg效果,此方法为多样化模型外观处理提供了思路。由于本文方法采用的是纹理坐标一一映射的方式进行纹理贴图,所以针对人物模型的不同体态仍然可以使用而无需更改程序。图9为应用本文的方法,实现20人的群体随机纯色外观多样化;图10为模拟20人的群体纹理多样化,应用了15个格子图案模板和5个非格子图案模板;图11(a)为100个人群场景模拟,其外观采用图案和纯色两种方式随机生成,图11(b)为放大的人群外观图。
图7 同一模型不同纹理效果图
图8 模型变形前后纹理贴图
图9 群体模型衣服颜色多样化
图10 群体模型衣服图案多样化
图11 100个人群效果
4 论文总结
人群仿真中角色模型的多样化能营造出符合实际的效果。通过模型纹理处理技术来加强人群仿真中的人物外观多样化,是解决仿真场景中三维模型外观差异性的有效手段。本文提出一种基于模板的纹理多样化生成方法,首先给不带纹理坐标的网格模型展UV后作为纹理模板,然后利用基于图像分割方法处理UV展开图得到纹理的衣饰语义信息,在此基础上实现纹理图像的纯色着色和图案填充,从而生成各种不同的纹理,实现人群仿真的角色多样化。所提方法实用可行,较好地解决了虚拟角色制作效率问题,快速生成视觉上合理的大规模人群。实验结果大体让人满意,但有些边界处理问题有待改进。今后将继续改进算法,实现分割效果更加精确,纹理映射更加多样的实验系统平台。
[1]McDonnell R, Larkin M, Dobbyn S, Collins S,O'Sullivan C.Clone attack! perception of crowd variety [J].ACM Transactions on Graghics, 2008,27(3): 26-34.
[2]McDonnell R, Larkin M, Hernández B, RudominI,O'Sullivan C.Eye-catching crowds: saliency based selective variation [J].ACM Transactions on Graghics,2009, 28(3): 55-65.
[3]吴亚东, 韩永国, 陈 波.一种基于三角形面片模型的二维纹理贴图方法[J].计算机应用与软件,2004, 21(1): 112-114.
[4]范 波, 吴慧中.多面体表面纹理映射方法的研究[J].计算机研究与发展, 1999, 36(4): 446-450.
[5]刘晓平, 吴 静, 李 琳, 索南尖措.编码规则下的大面积多样化无缝纹理生成研究[J].系统仿真学报,2012, 24(1): 149-153.
[6]Maïm J, Yersin B, Thalmann D.Real-time crowds:architecture, variety, and motion planning[C]//ACM SIGGRAPH ASIA 2008 courses, 2008: 1-16.
[7]de Heras C P, Schertenleib S, Maïm J, Maupu D,Thalmann D.Real-time shader rendering for crowds in virtual heritage [C]//The 6th International Symposium on Virtual Reality, Archaeology and Cultural Heritage,VAST, 2005: 91-98.
[8]Tecchia F, Loscos C, Chrysanthou Y.2002.Visualizing crowds in real-time [J].Computer Graphics Forum Eurographics, 2002, 21(4): 753-765.
[9]Gosselin D, Sander P, Mitchell J.Drawing a crowd [M].ShaderX3, Charles River Media, 2005: 505-517.
[10]Maim J, Haegler S, Yersin B, Mueller P, Thalmann D,Vangool L.2007.Populating ancient Pompeii with crowds of virtual romans [C]//Proceedings of the 8thInternational Symposium on Virtual Reality,Archaeology and Cultural Heritage (VAST), 2007:109-116.
[11]DeHerasCiechomski P, Schertenleib S, Maïm J,Thalmann D.2005.Reviving the roman odeon of aphrodisias: Dynamic animation and variety control of crowds in virtual heritage[C]//Proc.11th International Conference on Virtual Systems and Multimedia, 2005: 601-610.
[12]Thalmann D, O'sullivan C, Yersin B, Maïm J,Mcdonnell R.Populating virtual environments with crowds [C]//Proceedings of the 2006 ACM International Conference on Virtual Reality Continuum and Its Applications, 2006: 11-11.
[13]Felzenszwalb P F, Huttenlocher D P.Efficient graph-based image segmentation [J].International Journal of Computer Vision Archive, 2004, 59(2):167-181.
[14]Hasler N, Stoll C, Sunkel M, Rosenhahn B, Seidel H P.A statistical model of human pose and body shape [J].Computer Graphics Forum, 2009, 28(2): 337-346.