鄭利平,張 娟,周乘龍,劉曉平
(合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院,安徽 合肥 230009)
人群仿真廣泛應(yīng)用于影視動(dòng)畫(huà)、教育培訓(xùn)、建筑設(shè)計(jì)、應(yīng)急管理、城市規(guī)劃等諸多領(lǐng)域,自然的多樣化人群是保障這些仿真應(yīng)用可信性和逼真性的關(guān)鍵。但是從目前的研究情況來(lái)看,群體動(dòng)畫(huà)中采用的角色太過(guò)單一,大量的人群僅僅是幾個(gè)角色外觀的簡(jiǎn)單重復(fù),給人一種單調(diào)乏味的感覺(jué)[1]?,F(xiàn)有工作多數(shù)在個(gè)體體型、動(dòng)作、外觀等方面實(shí)現(xiàn)多樣化,生成與實(shí)際相符的自然人群。
本文主要關(guān)注人群紋理多樣化問(wèn)題,目前工作主要從模型的衣著外觀、穿戴附件等方面來(lái)進(jìn)行研究[2],使用較少的標(biāo)準(zhǔn)顏色要素通過(guò)組合的形式構(gòu)成多樣化的外觀。當(dāng)渲染一組包含少量個(gè)體的群體時(shí),手工方法可使他們的外觀看起來(lái)不一樣,但如果一個(gè)應(yīng)用程序需要大量角色,手工難以為每個(gè)角色構(gòu)造不同紋理。此外,當(dāng)人群個(gè)體成千上萬(wàn)時(shí),紋理數(shù)據(jù)的存儲(chǔ)代價(jià)也很大。因此,如何快速生成多樣化紋理將是十分有意義的問(wèn)題。
在紋理貼圖處理方面,文獻(xiàn)[3]針對(duì)交互式三維建模過(guò)程中紋理貼圖的需要,給出了一種基于三角面片模型的二維紋理貼圖算法;范波和吳慧中[4]對(duì)多面體表面應(yīng)用參數(shù)化方法把紋理表示與物體表面聯(lián)系在一起,并有效地控制紋理如何置于多面體表面上,但是對(duì)于人物模型復(fù)雜的網(wǎng)格這種方法則不適用。在多樣化紋理研究方面,文獻(xiàn)[5]提出了一種基于編碼的大面積多樣化紋理生成方法,通過(guò)對(duì)源紋理圖定義編碼規(guī)則產(chǎn)生多個(gè)樣圖實(shí)例,在編碼約束下隨機(jī)無(wú)縫拼接成大面積的紋理貼圖并實(shí)現(xiàn)樣圖的多樣化。
Maim等[6]和de Heras等[7]以及文獻(xiàn)[8-10]均使用可編程圖形硬件GPU來(lái)避免多重通道渲染,通過(guò)alpha通道硬件加速調(diào)節(jié)身體各個(gè)部分的顏色;文獻(xiàn)[11]中每個(gè)模型都有一個(gè)紋理貼圖,包括皮膚,頭發(fā)以及衣服,創(chuàng)建alpha映射,用唯一的灰度值編碼每個(gè)區(qū)域,在運(yùn)行時(shí)這些灰度值可以作為映射貼圖的索引,存儲(chǔ)對(duì)每個(gè)貼圖各個(gè)區(qū)域的HSV/HSB顏色調(diào)制結(jié)果,從而產(chǎn)生外觀多樣的紋理貼圖;Thalmann等[12]主要通過(guò)帽子眼鏡等附件和紋理顏色混合實(shí)現(xiàn)克隆人的外觀多樣化,從而使人群看起來(lái)有差異。
本文實(shí)現(xiàn)多樣化群體外觀的思路是,首先,需要一個(gè)或者幾個(gè)角色模型模板;其次,為每個(gè)模板展UV獲得UV展開(kāi)圖作為紋理模板;最后,利用圖像分割方法處理UV展開(kāi)圖得到紋理的衣飾語(yǔ)義信息,在此基礎(chǔ)上實(shí)現(xiàn)紋理圖像的純色著色和圖案填充。本文較其他方法較好地解決了虛擬角色制作效率問(wèn)題,快速生成視覺(jué)上合理的大規(guī)模人群且操作流程簡(jiǎn)單只需要模板和圖案的輸入,就可以使人群角色獲得多樣化外觀。
UV是駐留在多邊形網(wǎng)格頂點(diǎn)上的二維紋理坐標(biāo)點(diǎn),它們定義了一個(gè)二維紋理坐標(biāo)系統(tǒng),稱為UV紋理空間。本質(zhì)上,UV提供了一種模型表面與紋理圖像之間的連接關(guān)系,UV負(fù)責(zé)確定紋理圖像上的一個(gè)點(diǎn)(像素)應(yīng)該放置在模型表面的哪一個(gè)頂點(diǎn)上,由此可將整個(gè)紋理都鋪蓋到模型上。
在三維動(dòng)畫(huà)角色制作中,角色模型創(chuàng)建完成后的一個(gè)任務(wù)就是展UV了。如果單獨(dú)利用Maya和3dmax 自帶的UV 編輯工具則實(shí)現(xiàn)起來(lái)比較繁瑣,UVLayout就是一款簡(jiǎn)單實(shí)用的工具,UV拆分操作過(guò)程如圖1流程所示,經(jīng)過(guò)切割后的模型如圖2(a)所示,切割后得到的UV展開(kāi)圖,如圖2(b)所示。
圖1 UV展開(kāi)流程圖
圖2 分割結(jié)果
對(duì)于制作好的UV展開(kāi)圖,希望給其附上不同的顏色和圖案,從而生成不同的紋理貼圖,繼而實(shí)現(xiàn)模型紋理多樣化。為此首先采用基于圖的圖像分割算法對(duì)紋理模板進(jìn)行分割處理,得到紋理的衣服服飾語(yǔ)義信息,然后自動(dòng)對(duì)各部分設(shè)置顏色和紋理貼圖。
圖3為采用文獻(xiàn)[13]所提供的圖像分割算法分段著色后效果,(a)圖輸入?yún)?shù)為sigma=0.3,k=1000, Min=100;(b)圖輸入?yún)?shù)為sigma=0.8,k=1000, Min=150。其中,sigma,k, Min為程序中設(shè)置的3個(gè)輸入?yún)?shù)。sigma參數(shù)是對(duì)輸入的圖像在分段處理前利用高斯濾波器輕微的平滑圖像,目的是補(bǔ)償數(shù)字化產(chǎn)生的噪聲。一般將高斯濾波器的sigma=0.8,這樣就不會(huì)產(chǎn)生視覺(jué)上的改變,同時(shí)又可以消除噪聲。k是一個(gè)常數(shù)值,它取決于處理的圖像的大小,這樣較大的k就傾向于較大的區(qū)域。Min為允許的最小區(qū)域,允許的最小區(qū)域?qū)Ψ指钏惴ū旧硎菬o(wú)意義的,主要用于后續(xù)區(qū)域合并。
圖3 不同輸入?yún)?shù)的分割效果
上述圖3中,程序?qū)崿F(xiàn)了給所給定圖像分段著色,給分段的每個(gè)區(qū)域分配不同的顏色。仔細(xì)觀察圖3(a)和3(b)不難發(fā)現(xiàn):上衣被分為前后兩部分,褲子也是如此。在現(xiàn)實(shí)生活中,通常上衣(褲子)的前后是一種顏色,但是圖中的效果卻與實(shí)際不相符,因而需對(duì)程序做相應(yīng)的處理。
在程序中對(duì)上述分段后的圖像設(shè)置標(biāo)志位,來(lái)區(qū)分不同塊(如衣服塊、褲子塊等其他部分),對(duì)于標(biāo)志位相同的部分,認(rèn)為是同一塊(比如圖中上衣的正反兩面,可以允許它們分布在圖中的不同位置),然后取其特征點(diǎn)賦予相同的RGB值,這樣就保持了衣服(或者褲子)正反兩面顏色的一致性,對(duì)于標(biāo)志位不同的部分認(rèn)為是不同的部分(比如一個(gè)是上衣一個(gè)是褲子),則對(duì)其賦予不同的顏色值,由此可以實(shí)現(xiàn)不同塊之間的區(qū)分,并可簡(jiǎn)單地實(shí)現(xiàn)純色的填充,如圖4所示。
在此基礎(chǔ)上,進(jìn)一步要實(shí)現(xiàn)圖案的填充,即能夠針對(duì)UV展開(kāi)圖在衣服和褲子上貼上重復(fù)條紋,模擬簡(jiǎn)單的衣服紋理。方法是獲取UV展開(kāi)圖中褲子和上衣正反兩面的紋理坐標(biāo),采取一一映射的方式貼上紋理,得到的效果如下圖5(b)。將圖(b)貼到三維模型上后不難發(fā)現(xiàn)下身褲子的紋理產(chǎn)生了錯(cuò)位。為了人物模型的美觀,在程序中進(jìn)行以下處理:考慮到只有褲子部分的紋理有錯(cuò)位,所以進(jìn)行二次紋理處理,首先貼上上衣的紋理;由于褲子具備對(duì)稱性,故利用中軸算法計(jì)算出褲子的一邊與水平方向的夾角,在程序中相應(yīng)旋轉(zhuǎn)紋理圖片的角度,圖5(a)為矯正示意圖,圖中A、B 兩點(diǎn)是經(jīng)過(guò)中軸算法得到的中軸線上的兩端點(diǎn),由此產(chǎn)生角度90-angle就是褲子偏移水平方向的夾角,這樣分步處理后就得到了比較合理的效果,圖5(c)為矯正后效果圖,將紋理貼圖對(duì)應(yīng)到模型上效果如圖6所示。其中左邊模型褲子紋理為未矯正的效果,右邊模型褲子紋理為矯正之后的效果。
具體矯正實(shí)現(xiàn)過(guò)程偽代碼如下:
圖4 純色貼圖效果
圖5 圖案貼圖效果
圖6 對(duì)褲子貼圖矯正前后模型顯示效果(左為矯正前紋理效果,右為矯正后紋理效果)
本文的實(shí)驗(yàn)環(huán)境為64位Windows 7操作系統(tǒng),主機(jī)CPU為Intel Core四核Q8400 2.66GHz,內(nèi)存6G,程序運(yùn)行環(huán)境為Visual Studio 2008,采用OpenGL作為顯示和交互平臺(tái)。
論文實(shí)現(xiàn)了模型多樣化紋理,并給出實(shí)驗(yàn)生成結(jié)果。圖7為程序?qū)崿F(xiàn)同一模型生成2套紋理衣服,一套為重復(fù)條紋,一套為純色紋理,從而實(shí)現(xiàn)模型紋理多樣化;圖8利用開(kāi)源模型庫(kù)Hasler等[14]并用其提供的變形方法為模型變形后依然可以應(yīng)用程序生成的紋理貼圖,圖中中間的為原始模型,其身高是190cm,體重70kg;左邊為模型身高變?yōu)?50cm,體重變?yōu)?0kg效果;右邊為模型身高變?yōu)?70cm,體重60kg效果,此方法為多樣化模型外觀處理提供了思路。由于本文方法采用的是紋理坐標(biāo)一一映射的方式進(jìn)行紋理貼圖,所以針對(duì)人物模型的不同體態(tài)仍然可以使用而無(wú)需更改程序。圖9為應(yīng)用本文的方法,實(shí)現(xiàn)20人的群體隨機(jī)純色外觀多樣化;圖10為模擬20人的群體紋理多樣化,應(yīng)用了15個(gè)格子圖案模板和5個(gè)非格子圖案模板;圖11(a)為100個(gè)人群場(chǎng)景模擬,其外觀采用圖案和純色兩種方式隨機(jī)生成,圖11(b)為放大的人群外觀圖。
圖7 同一模型不同紋理效果圖
圖8 模型變形前后紋理貼圖
圖9 群體模型衣服顏色多樣化
圖10 群體模型衣服圖案多樣化
圖11 100個(gè)人群效果
人群仿真中角色模型的多樣化能營(yíng)造出符合實(shí)際的效果。通過(guò)模型紋理處理技術(shù)來(lái)加強(qiáng)人群仿真中的人物外觀多樣化,是解決仿真場(chǎng)景中三維模型外觀差異性的有效手段。本文提出一種基于模板的紋理多樣化生成方法,首先給不帶紋理坐標(biāo)的網(wǎng)格模型展UV后作為紋理模板,然后利用基于圖像分割方法處理UV展開(kāi)圖得到紋理的衣飾語(yǔ)義信息,在此基礎(chǔ)上實(shí)現(xiàn)紋理圖像的純色著色和圖案填充,從而生成各種不同的紋理,實(shí)現(xiàn)人群仿真的角色多樣化。所提方法實(shí)用可行,較好地解決了虛擬角色制作效率問(wèn)題,快速生成視覺(jué)上合理的大規(guī)模人群。實(shí)驗(yàn)結(jié)果大體讓人滿意,但有些邊界處理問(wèn)題有待改進(jìn)。今后將繼續(xù)改進(jìn)算法,實(shí)現(xiàn)分割效果更加精確,紋理映射更加多樣的實(shí)驗(yàn)系統(tǒng)平臺(tái)。
[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]吳亞?wèn)|, 韓永國(guó), 陳 波.一種基于三角形面片模型的二維紋理貼圖方法[J].計(jì)算機(jī)應(yīng)用與軟件,2004, 21(1): 112-114.
[4]范 波, 吳慧中.多面體表面紋理映射方法的研究[J].計(jì)算機(jī)研究與發(fā)展, 1999, 36(4): 446-450.
[5]劉曉平, 吳 靜, 李 琳, 索南尖措.編碼規(guī)則下的大面積多樣化無(wú)縫紋理生成研究[J].系統(tǒng)仿真學(xué)報(bào),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.