張 帥
(滁州學院 美術與設計學院,安徽 滁州 239000)
3D數(shù)字動畫具有強大的表現(xiàn)力,幾乎可以實現(xiàn)所有想要達到的效果[1]。3D數(shù)字動畫的普及在根本上改變了制作動畫的流程、提升了制作動畫的效率、降低了制作動畫的成本,因此具備明顯的優(yōu)勢[2]。在3D數(shù)字動畫的制作中,線條渲染是一個重要步驟,通過線條渲染才能達到3D數(shù)字動畫技術驅動、虛實結合的藝術風格。線條渲染的實際成本會達到總成本的1/3,線條渲染設備的實際成本占固定資產的1/2,足見其重要性[3]。對3D數(shù)字動畫線條渲染方法的研究,國外的技術已經發(fā)展得較為成熟。國內對3D數(shù)字動畫線條渲染方法的研究相對起步較晚,但隨著2D技術逐漸被其取代,線條渲染系統(tǒng)與軟件等相關技術也成為了研究熱點。王威[4]提出了一種基于數(shù)字技術的三維動畫圖像紋理實時渲染方法。孔素然等[5]提出一種三維動畫圖像紋理實時渲染系統(tǒng)設計方法。在渲染窗口像素大小為800×600~1 000×600時,利用以上方法進行渲染存在渲染幀速率較低的問題,因此,本文提出一種基于圖像空間的3D數(shù)字動畫線條渲染方法。通過累加環(huán)境光、鏡面反射光以及漫反射光模型,構建局部光照模型并形成陰影體算法繪制線條軟陰影;再對渲染流水線實施編程處理,使用戶能夠對線條渲染進行自定義,實現(xiàn)3D數(shù)字動畫線條渲染,以期提高渲染幀速率,使硬性線條渲染效果更好。
通過累加環(huán)境光、鏡面反射光和漫反射光[6]構建局部光照模型。鏡面反射光與漫反射光的原理如圖1所示[7],其中:N為頂點法線;L為入射光反方向;θ為頂點法線與入射光反方向的夾角;R為反射光方向;V為觀察視點;θ″為反射光方向與觀察視點的夾角[8]。環(huán)境光則主要用于對真實感進行渲染。

(a)漫反射光的原理
將環(huán)境光、鏡面反射光和漫反射光的參數(shù)相加,獲取局部光照模型的參數(shù),構建局部光照模型[9],完成圖像空間的建立,為后續(xù)線條軟陰影的繪制奠定基礎。
基于圖像空間,通過陰影體算法對線條軟陰影進行初步繪制,具體步驟為:1)首先對線條陰影體進行繪制,也就是通過網格邊測試對線條陰影體的實際輪廓進行構造[10]。2)對動畫場景中線條的各像素點是否在線條陰影體中進行判斷,也就是對陰影進行判定[11]。
其陰影體算法的實現(xiàn)主要是利用OpenGL,具體過程如圖2所示。

圖2 陰影體算法具體實現(xiàn)過程
接著在初步繪制結果的基礎上實施繪制加工,獲取滿意效果的軟陰影,加工方式為模糊陰影圖,使其生硬的邊緣變得更加柔軟,模擬出線條陰影半影區(qū)與本影區(qū)平滑過渡的渲染效果[12]。采用的模糊算法是膨脹腐蝕算法,其中膨脹操作是對一個結構子進行定義,比較陰影圖各像素與結構子中心,遍歷后取結構子與陰影圖的軌跡并集[13];腐蝕操作是對一個結構子進行定義,在比較陰影圖各像素與結構子中心時,當結構子中心以外的部分不完全落在線條陰影圖中,則在原陰影圖內刪除對比像素[14]。多次交替執(zhí)行腐蝕操作與膨脹操作,對半影區(qū)的實際范圍進行精準的計算[15],以獲取更加滿意效果的軟陰影,使陰影半影區(qū)與本影區(qū)平滑過渡的渲染效果更佳。最后需對線條渲染進行處理,以實現(xiàn)3D數(shù)字動畫線條渲染。
該部分主要是對渲染流水線實施可編程處理,將渲染流水線中的一些功能函數(shù)通過可編程方式來實現(xiàn),使用戶能夠對部分線條渲染過程進行自定義,對渲染流水線的線條渲染功能進行靈活處理,實現(xiàn)3D數(shù)字動畫線條渲染的目的[16]。其中渲染流水線中包含多個階段:光柵化運算、片段紋理著色和映射、圖元光柵化和裝配、頂點變換,具體操作內容如表1所示[17]。

表1 渲染流水線各階段具體操作內容
對渲染流水線實施可編程處理,包括片段著色器、幾何著色器、曲面細分著色器、頂點著色器,各種處理的具體內容如表2所示[18]。

表2 各種處理的具體內容
對渲染流水線實施可編程處理后,實現(xiàn)了渲染框架的搭建,如圖3所示[19]。利用搭建的渲染框架即可實現(xiàn)3D數(shù)字動畫的線條渲染。

圖3 搭建的渲染框架
為驗證本文方法的性能,進行線條渲染實驗驗證。實驗的運行環(huán)境如表3所示。

表3 實驗的運行環(huán)境
在實驗中主要對山巒動畫畫面進行線條渲染,該動畫畫面的網格模型如圖4所示。

圖4 動畫畫面的網格模型
實驗中采用RGB圖像空間,采用的紙墨模型的存儲結構與墨液屬性具體如圖5所示。

圖5 紙墨模型的存儲結構與墨液屬性
將實驗動畫畫面分為10個區(qū)域分別進行線條渲染,各區(qū)域的具體線條數(shù)據(jù)如表4所示。

表4 各區(qū)域的具體線條數(shù)據(jù)
利用本文方法對實驗動畫畫面進行分區(qū)域渲染。獲取渲染窗口像素為800×600~1 000×600范圍內的渲染幀速率作為實驗數(shù)據(jù)。并將文獻[4]中基于數(shù)字技術的三維動畫圖像紋理實時渲染方法(方法1)和文獻[5]中三維動畫圖像紋理實時渲染系統(tǒng)設計方法(方法2)作為對比方法,實施對比實驗。
在渲染窗口像素為800×600時,3種方法獲取的渲染幀速率數(shù)據(jù)如表5所示。

表5 窗口像素為800×600時的渲染幀速率 Hz
根據(jù)表5可知,在渲染窗口像素為800×600時,本文方法的渲染幀速率高于其他2種方法。
在渲染窗口像素為900×600時,本文方法與其他2種方法的渲染幀速率對比實驗數(shù)據(jù)如表6所示。

表6 窗口像素為900×600時的渲染幀速率 Hz
根據(jù)表6可知,在渲染窗口像素為900×600時,本文方法的渲染幀速率高于其他2種方法。
在渲染窗口像素為1 000×600時,本文方法與其他2種方法的渲染幀速率對比實驗數(shù)據(jù)如表7所示。
根據(jù)表7可知,在渲染窗口像素為1 000×600時,本文方法的渲染幀速率高于其他2種方法。
將圖像空間應用于3D數(shù)字動畫線條渲染中,實現(xiàn)了渲染幀速率的提升,對于山巒等線條的渲染效果卓越,但對人物、動物的渲染效果還有待于驗證和改進,將會在今后的研究中繼續(xù)努力。