鄭利平,張 娟,周乘龍,劉曉平
(合肥工業大學計算機與信息學院,安徽 合肥 230009)
人群仿真廣泛應用于影視動畫、教育培訓、建筑設計、應急管理、城市規劃等諸多領域,自然的多樣化人群是保障這些仿真應用可信性和逼真性的關鍵。但是從目前的研究情況來看,群體動畫中采用的角色太過單一,大量的人群僅僅是幾個角色外觀的簡單重復,給人一種單調乏味的感覺[1]。現有工作多數在個體體型、動作、外觀等方面實現多樣化,生成與實際相符的自然人群。
本文主要關注人群紋理多樣化問題,目前工作主要從模型的衣著外觀、穿戴附件等方面來進行研究[2],使用較少的標準顏色要素通過組合的形式構成多樣化的外觀。當渲染一組包含少量個體的群體時,手工方法可使他們的外觀看起來不一樣,但如果一個應用程序需要大量角色,手工難以為每個角色構造不同紋理。此外,當人群個體成千上萬時,紋理數據的存儲代價也很大。因此,如何快速生成多樣化紋理將是十分有意義的問題。
在紋理貼圖處理方面,文獻[3]針對交互式三維建模過程中紋理貼圖的需要,給出了一種基于三角面片模型的二維紋理貼圖算法;范波和吳慧中[4]對多面體表面應用參數化方法把紋理表示與物體表面聯系在一起,并有效地控制紋理如何置于多面體表面上,但是對于人物模型復雜的網格這種方法則不適用。在多樣化紋理研究方面,文獻[5]提出了一種基于編碼的大面積多樣化紋理生成方法,通過對源紋理圖定義編碼規則產生多個樣圖實例,在編碼約束下隨機無縫拼接成大面積的紋理貼圖并實現樣圖的多樣化。
Maim等[6]和de Heras等[7]以及文獻[8-10]均使用可編程圖形硬件GPU來避免多重通道渲染,通過alpha通道硬件加速調節身體各個部分的顏色;文獻[11]中每個模型都有一個紋理貼圖,包括皮膚,頭發以及衣服,創建alpha映射,用唯一的灰度值編碼每個區域,在運行時這些灰度值可以作為映射貼圖的索引,存儲對每個貼圖各個區域的HSV/HSB顏色調制結果,從而產生外觀多樣的紋理貼圖;Thalmann等[12]主要通過帽子眼鏡等附件和紋理顏色混合實現克隆人的外觀多樣化,從而使人群看起來有差異。
本文實現多樣化群體外觀的思路是,首先,需要一個或者幾個角色模型模板;其次,為每個模板展UV獲得UV展開圖作為紋理模板;最后,利用圖像分割方法處理UV展開圖得到紋理的衣飾語義信息,在此基礎上實現紋理圖像的純色著色和圖案填充。本文較其他方法較好地解決了虛擬角色制作效率問題,快速生成視覺上合理的大規模人群且操作流程簡單只需要模板和圖案的輸入,就可以使人群角色獲得多樣化外觀。
UV是駐留在多邊形網格頂點上的二維紋理坐標點,它們定義了一個二維紋理坐標系統,稱為UV紋理空間。本質上,UV提供了一種模型表面與紋理圖像之間的連接關系,UV負責確定紋理圖像上的一個點(像素)應該放置在模型表面的哪一個頂點上,由此可將整個紋理都鋪蓋到模型上。
在三維動畫角色制作中,角色模型創建完成后的一個任務就是展UV了。如果單獨利用Maya和3dmax 自帶的UV 編輯工具則實現起來比較繁瑣,UVLayout就是一款簡單實用的工具,UV拆分操作過程如圖1流程所示,經過切割后的模型如圖2(a)所示,切割后得到的UV展開圖,如圖2(b)所示。

圖1 UV展開流程圖

圖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 對褲子貼圖矯正前后模型顯示效果(左為矯正前紋理效果,右為矯正后紋理效果)
本文的實驗環境為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個人群效果
人群仿真中角色模型的多樣化能營造出符合實際的效果。通過模型紋理處理技術來加強人群仿真中的人物外觀多樣化,是解決仿真場景中三維模型外觀差異性的有效手段。本文提出一種基于模板的紋理多樣化生成方法,首先給不帶紋理坐標的網格模型展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.