張愛軍, 蔣高明, 李欣欣, 叢洪蓮(江南大學 教育部針織技術工程研究中心, 江蘇 無錫 214122)
經編毛絨織物是經編織物中重要的一類產品。此類產品除具有經編線圈結構外,在表面還有毛絨覆蓋。在經過定型、拉毛、梳毛等整理工序后,毛絨織物表面具有方向性的毛絨,這使得此類織物對光線的反射具有各向異性。而毛絨織物在使用過程中,毛絨受到外力作用其方向發生改變,從而會產生一定的隨機性。由于這些特點,在進行渲染時,不能將毛絨織物表面簡化為理想的鏡面反射面進行計算。
目前對于毛絨織物仿真的研究有圖像合成、二維繪制和三維繪制等方法。其中叢洪蓮等[1]通過紋理合成的方法模擬毛絨,原始圖像為真實織物,真實感強,但每種織物都需要預先采集對應的紋理,毛絨形態不能變化,前期需要建立合適的紋理庫,工作量大。雷惠等[2]將圖像像素化為粒子,再使用徑向模糊算法實現毛絨效果的模擬,具體方法是通過在意匠圖的所有像素點與其模糊中心點連線上取若干點像素值,將取得的所有像素值的平均值作為該點的新像素值。Xiong等[3]使用直線畫法模擬毛絨效果,將毛絨紗描述為顏色漸變的線段。上述算法以二維圖像或二維圖形為處理對象,在仿真立體感上還需改善。更多的研究是使用三維模擬方法,包括幾何方法和紋理方法。Csuri等[4]、Neulander[5]、Sadeghi等[6]使用幾何方法繪制的毛絨較清晰,繪制效果好,但耗時較長,通常用于影視動畫制作的離線渲染。Kajiya等[7]使用紋理方法繪制的毛絨絨感較強,效果柔和,但早期方法的速度尚不能滿足針織產品計算機輔助設計過程中快速模擬的要求。Lengyel等[8-9]提出了一種基于層狀紋理的毛絨繪制思想,在繪制效果和繪制速度方面得到了很好的兼顧,并成功應用在短毛動物模擬中。楊剛等[10]改進了Lengyel提出的算法,使其可以用于繪制玩具表面稍長的毛。唐勇等[11]改進了Lengyel提出的算法并應用在實時繪制毛發中。Wong等[12]、Lee等[13]分別用層狀紋理實現了三維雪景和皮草時裝的模擬。Zhang等[14]使用Lengyel方法生成了一種單針床提花毛絨的模擬。
通過觀察可發現,經編毛絨織物表面毛絨的方向既具有整體上的確定性,又具有細節上的隨機性,形成了自然的紋理。本文使用分形噪聲來模擬毛絨的這一外觀效果。此外,在經編織物計算機輔助設計系統中應用毛絨仿真時,考慮到對使用者的友好度,仿真效率和對計算機硬件資源的要求是必須要考慮的問題。而毛絨織物表面的毛絨數量大,生成毛絨的幾何結構時需要消耗大量中央處理器(CPU)內存資源。為降低這一影響,本文在幾何著色器中生成毛絨幾何結構,從而減輕CPU的運算量,并減少CPU與圖形處理器(GPU)之間傳輸的數據量。
現實中織物中毛絨方向并不完全一致,具有一定的隨機性,在毛絨仿真時添加隨機性可增加真實感。使用普通的隨機數生成算法產生的噪聲,其隨機性在整個區域內分布平均,不具有紋理效果,表達結果不自然。本文使用分形噪聲模擬毛絨方向的隨機性。
分形噪聲是對基噪聲按不同頻率采樣,將采樣結果進行疊加得到的混合噪聲。本文使用的基噪聲為二維噪聲。生成基噪聲的步驟如下。第1步生成隨機數θ和隨機數λ,如圖1所示。假設毛絨的初始切線方向為三維坐標系中z軸方向,v為毛絨發生隨機偏移后的方向,則θ表示偏移后的方向與初始方向的夾角。θ決定了毛絨偏移的大小,一般取小于45°的值,λ決定了毛絨偏移的方向,取值為0~360°。設毛絨的長度為1,用公式x=sinθcosλ,y=sinθsinλ,z=cosθ,可計算得到偏移后的位置坐標。根據三角函數的定義可知,x、y和z的值域為[-1,1]。用公式R=(x+1)/2×255、G=(y+1)/2×255、B=(z+1)/2×255 可將x、y、z轉換到[0,255]值域中,用R、G、B表示RGB顏色空間中紅、綠、藍3個顏色通道,即得到基噪聲圖像F=f(R,G,B)。在毛絨織物仿真時,噪聲圖像F中1個像素的顏色值可反推得到1根毛絨的偏移向量,但此時圖像F上的像素還是完全隨機的,直接使用生成的毛絨方向雜亂,缺乏過渡,因而需要使用下面的方法生成分形噪聲。

圖1 隨機數θ和λ示意圖Fig.1 Schematic diagram of random θ and λ
對基噪聲按不同的采樣系數采樣可得到多幅長寬和基噪聲圖像相同的新噪聲圖像。設采樣系數為k,則在基噪聲圖像上每k個像素點中取1個點作為采樣點賦予新噪聲圖像。新圖像上的非采樣點的值可以通過對采樣點平滑插值得到。本文選用的插值函數為柏林噪聲[15]推薦的3t2-2t3。圖2示出k=5時插值過程,對任意一個非采樣點,找到與它相鄰的4個采樣點P(0,0),P(0,1),P(1,0),P(1,1)。對P(0,0),P(1,0)在x方向上插值得到P(x,0),對P(0,1),P(1,1)在x方向上插值得到P(x,1),再對P(x,0)和P(x,1)在y方向上插值得到P(x,y)。

圖2 噪聲的插值方法Fig.2 Interpolation method of noise.(a) Basis noise; (b) Interpolated noise
對不同采樣系數的噪聲圖像使用式(1)進行疊加混合即得到分形噪聲圖像。從公式可看出,采樣系數越大的噪聲所占比重越大,決定了分形噪聲的基本形態。采樣系數越小的噪聲所占的比重越小,但是它為分形噪聲提供了更多的細節信息。
(1)
式中:Pi為第i個采樣頻率的采樣值;ki為其對應的采樣系數;n為總的采樣次數;P為最終合成的分形噪聲。
圖3(b)、(c)、(d)示出對基噪聲圖3(a)使用不同的采樣率進行采樣的結果。將圖3(a)~(d)合成后得到的分形噪聲如圖3(e)所示。

圖3 分形噪聲的混合Fig.3 Mixing of fractal noise.(a)Basis noise; (b) Interpolated noise of k=2;(c) Interpolated noise of k=4;(d) Interpolated noise of k=8;(e)Fractal noise
本文假設絨紗為以圓為橫截面,從根部到頭部沿一定路徑掃掠而成的半透明幾何體。Lengyel等[9]通過將毛絨分為不同的層,使用紋理逐層渲染,繪制效果有較好的絨感,但該方法在視線與毛絨接近垂直時,層間會出現空隙,所以需要用毛翼紋理進行填充。本文同樣是將一根毛絨分為不同的層進行渲染,不同的是本文使用了水平切片和垂直切片2種切片。無論是水平切片還是垂直切片,一層切片都是使用一個四邊形表示,這使得切片很容易在幾何著色器中通過一個點擴展生成。
圖4示出水平每層切片都平行于織物表面和垂直每層切片都垂直于觀察者視線方向切片。

圖4 水平切片和垂直切片Fig.4 Horizontal chip (a) and vertical chip (b)
在生成一幀織物仿真圖時,通過算法判斷當前視線下毛絨切片層間的空隙情況,選擇不同的切片類型進行繪制。當視線與毛絨切線接近平行時,是以俯視的視角觀察毛絨,不易產生空隙,使用水平切片渲染。當視線與毛絨接近垂直時,是以側視的視角觀察毛絨,容易產生空隙,則使用垂直切片。
圖5為毛絨在視平面上的投影示意圖。毛絨切片層間的空隙情況與層間距離l、毛絨半徑r、視線與毛絨的夾角α等多個因素有關。層間的距離越大,毛絨的直徑越小,視線與毛絨的夾角越大時,毛絨在屏幕上的投影越易出現空隙。

圖5 毛絨在視平面上的投影關系Fig.5 Projection of plush on plane of vision
當2rcosα≥lsinα時,說明毛絨直徑在視平面上的投影長度大于層間距離在視平面上的投影長度,此時使用水平切片。反之,當2rcosα 使用切片表示的毛絨,每根毛絨上有若干層切片,每個切片有一個四邊形。一塊織物上毛絨眾多,如果由CPU完成所有毛絨結構的生成,數據量大且耗時較長。本文將這一過程遷移到幾何著色器中執行。幾何著色是現代可編程著色流水線的1個渲染階段,它允許GPU根據需要改變輸入的幾何圖元數據,輸入的圖元可以被拓展成1個或多個圖元,也可以被刪除。利用這一特性,可以將生成毛絨紗線幾何結構的算法轉移到幾何著色器中,從而減少CPU向GPU傳輸的模型頂點數。本文中幾何著色器中的輸入為點圖元,點圖元的坐標值即是毛絨紗線根部中心點坐標。幾何著色器的輸出為三角形帶,用于表示1個毛絨切片,即1段毛絨。每個三角形帶包含2個三角形,由4個頂點定義。 毛絨段的4個頂點的坐標由輸入的點圖元、原始切線方向紋理、分形噪聲紋理計算得到。計算步驟為:先將分形噪聲紋理疊加到原始切線方向紋理得到毛絨實際方向,再根據實際方向與視線的關系選擇使用水平切片或垂直切片的方法計算頂點坐標。 在生成分形噪聲時,假設毛絨原始切線方向為z軸方向,而仿真時指定的毛絨方向不一定是z軸,因此,需要對噪聲所包含的坐標進行坐標系轉換。如圖6所示,以1根毛絨的根部為原點,與織物橫列平行且向右的方向為x軸正向,與織物縱行平行且向上的方向為y軸正向,與織物平面垂直的方向為z軸建立坐標系,該坐標系為父坐標系。將原點、x′軸、y′軸取為與父坐標系一致,以毛絨原始切線方向為z′軸,建立坐標系,該坐標系為子坐標系。設毛絨切線方向在父坐標系中用單位矢量(xt,yt,zt)表示,則分形噪聲中的坐標(xs,ys,zs)可用式(2)從子坐標系轉換到父坐標系,在父坐標系中的坐標表示為(xf,yf,zf)。 (2) 圖6 父坐標系和子坐標系Fig.6 Parent coordinate system and child coordinate system 得到毛絨切線的實際方向后,按2.2節的方法選擇切片類型。若需使用水平切片,則4個頂點的坐標可用式(3)計算得到圖1(a)所示的切片;若需使用垂直切片,則4個頂點的坐標可用式(4)求得圖2(b)所示的切片。 (3) (4) 式中:P0、P1、P2、P3為四邊形4個頂點的坐標;Pe為該段絨紗軸線終點坐標;Ps為該段絨紗軸線起點坐標;L為視線方向;R為毛絨切線方向與視線方向的叉乘;Wf為毛絨半徑;Hf為毛絨段高度的一半。 在幾何著色器中,除了計算得到毛絨幾何結構的頂點坐標,還需要確定頂點的紋理坐標。本文假設的單根毛絨為圓柱形:水平切片是俯視毛絨時的效果,因此映射具有圓形圖案的紋理而邊緣透明的紋理;垂直切片為側視毛絨時的效果,使用具有矩形圖案的紋理。 由幾何著色器生成的圖元經過光柵化,在像素著色器中進行顏色混合輸出最終的顏色,即可渲染出毛絨效果。 本文算法基于DirectX 11實現。DirectX 是主流的圖形渲染引擎接口,其渲染管線中的可編程階段包括實現本文算法所需的頂點著色器、幾何著色器和像素著色器。實驗所用計算機CPU為Intel Core I7-6700, 內存為16 GB, 顯卡為NVIDIA Quadro M1000。 圖7示出織物實物圖和仿真圖。圖7(a)為織物被手掌按壓后的照片,按壓后毛絨的方向發生了明顯的改變,使織物反光發生改變,外觀上形成了掌印。圖7(b)是模擬這一效果的仿真圖。仿真時除根據手掌按壓位置改變了毛絨切線方向,還為毛絨方向疊加了分形噪聲,因此在非按壓位置也能看到不同區域有較平滑的外觀變化。圖7(c)為圖7(b)中掌心位置的局部放大圖。 圖7 織物實物圖和仿真圖Fig.7 Fabric photos and simulation picture.(a) Fabric pressed by palm;(b) Simulation picture;(c) Enlarged partial 圖7(b)中測試織物花高為384橫列,花寬為240針,仿真耗時約750 ms。該耗時能滿足計算機輔助設計軟件快速仿真的要求。 本文用二維分形噪聲表示經編毛絨織物中毛絨具有的隨機感,多分辨率噪聲的混合使某一處毛絨的隨機性與周圍毛絨有了一定的聯系,形成了較為自然的效果。毛絨的實際幾何切片由GPU根據分形噪聲紋理在幾何著色器中生成,減少了CPU和GPU之間數據的傳輸量,且能利用GPU的多核心運算能力提高算法的效率。算法在幾何著色器中根據需要選用不同的切片類型,避免了單一平行切片會造成空隙的問題。 本文沒有獨立計算每根毛絨的陰影,因此,在表現毛絨之間的遮擋關系時有欠缺。此外,本文以單根毛絨為單位進行繪制,毛絨的柔和感弱于以一片區域為單位進行紋理繪制的方法。 FZXB [1] 叢洪蓮, 李秀麗. 基于紋理合成的提花絨類織物仿真[J]. 紡織學報, 2014, 35(10):150-155. CONG Honglian, LI Xiuli. Simulation of jacquard pile fabric based on texture synthesis[J]. Journal of Textile Research, 2014, 35(10):150-155. [2] 雷惠, 叢洪蓮, 張愛軍. 雙針床短毛絨織物的CAD設計與仿真[J]. 紡織學報, 2013, 34(7):132-136. LEI Hui, CONG Honglian, ZHANG Aijun. CAD design and simulation of double-needle bar short pile fabrics[J]. Journal of Textile Research, 2013, 34(7): 132-136. [3] XIONG Y, MIU X H, JIANG A J, et al. Computer simulation for warp knitted brushed fabric with patterned pile[J]. Textile Research Journal, 2016,36(7):1659-1667. [4] CSURI C, HAKATHORN R, PARENT R, et al. Towards an interactive high visual complexity animation system[C]//DEFANTI T, MCCORMICK B H, POLLACK B W, et al. Proceedings of the 6th Annual Conference on Computer Graphics and Interactive Techniques. New York: Association for Computing Machinery, 1979: 289-299. [5] NEULANDER Ivan. Quick image-based lighting of hair[C]//BARZEL Ronen. ACM SIGGRAPH 2004 Sketches. New York: Association for Computing Machinery, 2004:43. [6] SADEGHI I, PRITCHETT H, JENSEN H W, et al. An artist friendly hair shading system[J]. Acm Transactions on Graphics, 2010, 29(4):157-166. [7] KAJIYA J T, KAY T L. Rendering fur with three dimensional textures[C]//THOMAS James J. Proceedings of the 16th Annual Conference on Computer Graphics and Interactive Techniques. New York: Association for Computing Machinery, 1989: 271-280. [8] LENGYEL J E. Real-time Fur[C]//PEROCHE B, RUSHMEIER H. Rendering Techniques 2000. Vienna: Springer-Verlag GmbH, 2000: 243-256. [9] LENGYEL J,PRAUN E,FINKELSTEIN A, et al. Real-time fur over arbitrary surfaces [C]//HUGHES J F, SEQUIN C H. Proceedings of the 2001 Symposium on Interactive 3D Graphics. New York: Association for Computing Machinery, 2001: 227-232. [10] 楊剛, 曹衛群, 黃心淵. 基于層狀紋理切片表示法的短毛造型系統[J]. 中國圖象圖形學報, 2008, 13(5):984-990. YANG Gang, CAO Weiqun, HUANG Xinyuan. A fur modeling system based on multi-layer textured slices[J]. Journal of Image and Graphics, 2008, 13(5): 984-990. [11] 唐勇, 邵緒強, 呂夢雅. 基于改進的 Lengyel 繪制方法的毛發實時模擬[C]//徐伯夏.第二屆立體圖象技術及其應用 (國際) 研討會論文集.北京:中國圖象圖形學學會,2007:139-142. TANG Yong, SHAO Xuqiang, Lü Mengya. Improved Lengyel′s method based fur real-time simulation[C]//XU Boxia. Proceedings of the Second 3-D Image Technology and Application Conference. Beijing: China Society of Image and Graphics, 2007:139-142. [12] WONG S, FU I. Hybrid-based snow simulation and snow rendering with shell textures[J]. Computer Animation & Virtual Worlds, 2015, 26(3/4):413-421. [13] LEE J, KIM D K, KIM H S, et al. Real-time fur simulation and rendering[J]. Computer Animation & Virtual Worlds, 2010, 21(3/4):311-320. [14] ZHANG A, LI X, XIONG Y,et al. 3D simulation model of warp-knitted patterned velvet fabric[J]. International Journal of Clothing Science and Technology, 2016, 28(6): 794-804. [15] PERLIN K. Improving noise[J]. Acm Transactions on Graphics, 2002, 21(3):681-682.3 毛絨在幾何著色器中的繪制


4 實驗結果

5 結 論