国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于實時主方向估計的素描渲染

2020-11-02 06:17:14張嚴(yán)辭龔昱寧
關(guān)鍵詞:像素點素描像素

張嚴(yán)辭,龔昱寧

(1.四川大學(xué) 軟件學(xué)院,成都 610207;2.四川大學(xué)視覺合成圖形圖像技術(shù)國家重點學(xué)科實驗室,成都 610065)

隨著卡通渲染類游戲的興起,人們開始不僅僅滿足于基于物理的渲染,非真實感渲染出的效果也越來越受到消費者的青睞。素描是一種運用單一色彩表現(xiàn)物體美感的繪制手法[1],用素描這種繪畫的方式對游戲等可交互產(chǎn)品進(jìn)行渲染,增強了這類產(chǎn)品的趣味性,吸引了消費者的眼球,增加了產(chǎn)品商業(yè)價值。

近幾年,關(guān)于非真實感渲染的研究結(jié)果層出不窮。其中文獻(xiàn)[2]歸納了大部分基于表面的有說明表現(xiàn)力的可視化方式,其提到使用曲面的第二基本形式[3]或者使用高階多項式擬合的[4-5]方式來估計素描渲染所需要的主曲率,但其需要耗時的頂點屬性的預(yù)計算而無法做到實時渲染。文獻(xiàn)[6]基于文獻(xiàn)[7]提出了使用焦平面的主方向估計方式來估計主方向,但無法很好解決因為復(fù)雜模型頂點間屬性線性插值帶來的噪聲問題。

在獲得主方向的基礎(chǔ)上,關(guān)于對素描風(fēng)格的渲染,文獻(xiàn)[8-9]使用了基于文獻(xiàn)[10]思路的線卷積積分,但該方法存在透視錯誤的問題。文獻(xiàn)[5]提出使用貼圖進(jìn)行旋轉(zhuǎn)和粘貼的方式來繪制,但這種方式繪制出來的線條與主方向偏差較大且存在空間耦合性的問題。文獻(xiàn)[11]提出了深度學(xué)習(xí)來獲取一定的方向進(jìn)行線卷積積分,但此方法不適用于需要高幀率的實時渲染。

針對以上問題,在實時主方向估計上,本文對構(gòu)建焦平面的方式來獲取主方向的算法進(jìn)行了改進(jìn),相比于原方法對于復(fù)雜模型能得到更加魯棒的結(jié)果,相比于無法改變頂點間關(guān)系的主方向預(yù)計算,有著可以應(yīng)用到蒙皮網(wǎng)絡(luò)與頂點動畫的優(yōu)勢。其次,本文提出了一種線卷積方式,憑借有序抖動與GPU端硬件的紋理采樣優(yōu)勢,突破了原有離散的像素點與2D空間的限制,提高了單幀的渲染效率,且有空間耦合性與投影正確性。最后,使用兩個主方向的角平分線作為線卷積的方向,降低了畫面整體的復(fù)雜度,并對渲染結(jié)果進(jìn)行了風(fēng)格化處理,使渲染效果更加接近手繪素描的效果。

在適用場景上,由于本文渲染算法為通過幾何緩沖進(jìn)行實時后處理,無需對模型進(jìn)行預(yù)處理或?qū)鹘y(tǒng)渲染管線更改,有較強空間耦合性,可以應(yīng)用到需要實時交互且有蒙皮動畫的應(yīng)用上,且不會產(chǎn)生如文獻(xiàn)[6]中雨幕效果的問題。因此渲染算法能在常用的消費級渲染引擎上直接使用(如Unity或Unreal Engine4),并應(yīng)用到基于這些引擎的可交互產(chǎn)品中(如手機或桌面端游戲、影視作品、三維漫游以及可交互教學(xué)應(yīng)用等),為可交互產(chǎn)品展現(xiàn)的場景帶來風(fēng)格化渲染效果,激發(fā)使用者的興趣以提高產(chǎn)品的商業(yè)價值。

1 相關(guān)工作

1.1 離散主方向估計

曲面上一點的主方向定義為該點法曲率取得最大和最小的方向。主方向?qū)?yīng)的兩個法曲率被定義為主曲率。由于主方向可以表現(xiàn)物體在某一點的變化趨勢,使用主方向為基礎(chǔ)在許多風(fēng)格化與可視化中得到了廣泛的應(yīng)用[13-14]。因此,如何求解主方向成為了一個重要的主題,近幾年有許多關(guān)于如何求解主方向的研究。在微分幾何上,某一點的主曲率與主方向可以由該點Weingarten映射[16]或者形狀算子[3,15]進(jìn)行特征值分解求得解析的解。但對于由三角網(wǎng)絡(luò)與幾何緩沖表達(dá)出離散的值而言,難以直接使用主方向的定義求解?,F(xiàn)有算法中,對離散值進(jìn)行主方向估計算法分成兩類,基于模型空間的預(yù)計算以及使用屏幕空間幾何緩沖進(jìn)行實時估計。對于模型空間的預(yù)計算,現(xiàn)有3種較為常見的思路。

第1種算法是用高階多項式[4-5]對曲面進(jìn)行擬合然后得到某個頂點的主方向。

第2種算法是先對每個三角面構(gòu)建切平面[15-16],之后使用如差分的形勢計算該三角面沿著一條邊的法向量的變化量,然后將該方向與法向量的變化量代入形狀算子的等式來求得形狀算子矩陣的值,并將3個方向的結(jié)果使用最小二乘法進(jìn)行回歸來得到更為準(zhǔn)確對于每個三角面的結(jié)果。對于每個頂點,首先根據(jù)頂點切平面與三角面的切平面的位置關(guān)系,將其中一個平面圍繞著兩個平面法線的叉乘的方向進(jìn)行旋轉(zhuǎn),使得兩個平面共面(若兩個平面旋轉(zhuǎn)前已經(jīng)共面,則不用旋轉(zhuǎn))。之后求得形狀算子在頂點坐標(biāo)系下的值。由于一個頂點對應(yīng)多個三角形,即一個頂點對應(yīng)多個形狀算子的值,本文使用Voronoi區(qū)域[17]值進(jìn)行加權(quán)求和來得到一個更為準(zhǔn)確的值。并將最后的結(jié)果進(jìn)行特征值分解得到該頂點的主方向。這種算法,有著對于復(fù)雜度較高的模型,有著容易產(chǎn)生不平滑以及不連續(xù)的結(jié)果的問題[7]。

第3種算法是利用焦平面[7],其核心思想是利用曲面上一點的法向量與其周圍臨近的法向量會在某兩個平面上共線的這個特性,而這兩條共線的線便是主方向,這2個平面便是焦平面。對于離散三角網(wǎng)絡(luò)的估計,文獻(xiàn)[7]使用了L-M方法進(jìn)行回歸以求得更準(zhǔn)確的解,根據(jù)論文中的數(shù)據(jù),這樣一種算法比第2種提到的算法,對于普通模型產(chǎn)生的結(jié)果略微不夠準(zhǔn)確,但相對于復(fù)雜的模型能產(chǎn)生更為準(zhǔn)確以及連續(xù)的結(jié)果。

總的來說,針對模型空間的算法雖有較高的準(zhǔn)確性,相對于模型離散化而產(chǎn)生的噪聲有一定的魯棒性,但是其預(yù)計算需要大量時間,有著無法實時應(yīng)用到有頂點動畫與蒙皮網(wǎng)絡(luò)渲染需求的缺陷,且會帶來額外的存儲空間。

對于屏幕空間的主方向估計,根據(jù)離散幾何上對主方向的定義,使用與臨近像素點的差分來獲取曲面的高階偏導(dǎo)數(shù),并利用高階偏導(dǎo)數(shù)計算每個像素點的形狀算子以求得主方向的值。但這樣的算法因使用了三角網(wǎng)絡(luò)光柵化后線性插值得到的噪聲嚴(yán)重的世界坐標(biāo)和法線方向,使得結(jié)果不夠準(zhǔn)確。因此,文獻(xiàn)[6]提出了使用焦平面來實時計算主方向。該算法與模型空間的預(yù)計算方法類似,但是沒有使用回歸的方式求更準(zhǔn)確的解,只使用目標(biāo)像素點以及與其臨近的兩個像素點來進(jìn)行計算。

1.2 線卷積積分

線卷積積分作為一種讓向量場可視化的圖像處理技術(shù)最早由文獻(xiàn)[10]提出,文獻(xiàn)[18]對其進(jìn)行了改進(jìn),文獻(xiàn)[19]將該算法應(yīng)用到了圖像處理的運動模糊上。本文將該算法應(yīng)用到實時渲染中。原算法的核心是在二維向量場上沿著每個像素點對應(yīng)的向量場方向,每一步跨越一個像素點到另一個像素點,并通過新像素點對應(yīng)的向量場的方向到達(dá)新的像素點。同樣的方式也可以推廣到三維,但三維向量場的渲染需要使用體渲染,這樣的方式難以與現(xiàn)有管線相整合做到實時渲染。

1.3 有序抖動

有序抖動最早是一種半透明的印刷技術(shù)。在圖形學(xué)中,有序抖動對于體積光等體渲染降低邁進(jìn)步數(shù)[20-21],在圖像處理中,對圖像降噪等有著較為重要的作用。本文將該方式用于對線卷積積分的改進(jìn),提升了線卷積積分的性能。

1.4 素描風(fēng)格渲染

文獻(xiàn)[12]提出了使用不同的光照等級對應(yīng)不同紋理的方式來進(jìn)行素描渲染,這種渲染算法存在線條繪制的方向固定、難以表現(xiàn)清物體的結(jié)構(gòu)特點且透視錯誤的問題。文獻(xiàn)[6]用貼圖進(jìn)行旋轉(zhuǎn)和粘貼的方式來繪制,存在空間耦合性的問題,且由于是后處理,每個像素點UV坐標(biāo)旋轉(zhuǎn)圍繞的點的位置必須固定,使得繪制得到的方向與實際主方向偏差大,且存在透視錯誤的問題。文獻(xiàn)[8-9]使用線卷積積分的方式來進(jìn)行渲染,但該算法存在透視錯誤的問題,且得到的結(jié)果存在疊筆不充分的問題(在素描繪制中,藝術(shù)家對于顏色較黑的色塊往往使用了從幾個方向進(jìn)行“鋪調(diào)子”的方式,疊筆繪制)。

2 本文方法

為闡明具有廣泛的適用性與魯棒性的實時主方向算法,以及基于該算法的更為接近手繪素描的渲染算法,從3個部分講解本文使用到的算法:適用范圍更廣且更具魯棒性的實時主方向估計,透視正確且高效率的線卷積積分,基于藝術(shù)導(dǎo)向的素描風(fēng)格渲染,本文使用的算法的流程如圖1所示。

2.1 適用范圍更廣且更具魯棒性的實時主方向估計

基于模型空間主方向估計需要預(yù)計算,不適用于蒙皮動畫與頂點動畫。而基于屏幕空間的主方向估計只與每一幀繪制得到的幾何緩沖有關(guān),并且若使用延遲渲染的方式,幾何緩沖很容易獲得,使其很容易整合進(jìn)現(xiàn)有管線中。

在屏幕空間的主方向估計方法中,本文對焦平面進(jìn)行主方向估計的算法進(jìn)行改進(jìn)。相比于直接使用差分估計形狀算子的方式,基于焦平面的算法有著更好的對因為光柵化帶來的噪聲的抵抗能力。

原主方向估計[6]算法的核心思想是:首先構(gòu)建以計算的像素點的法線為z軸,該點世界坐標(biāo)為原點的正交坐標(biāo)系;之后選擇兩個臨近像素點計算其法線射線在該坐標(biāo)系下的表示,并求得兩個法線射線與該坐標(biāo)系xy平面的交點(u1x,u1y,0),(u2x,u2y,0),并求的法線方向在該坐標(biāo)系下,z值為1的方向向量(n1x,n1y,1),(n2x,n2y,1),之后利用如下等式求解計算焦平面的位置。

該等式化簡后為一元二次方程。若方程有解,則將得到的2個λ代入式(2)中,便可以求得主方向在該坐標(biāo)系下的表示,將該向量轉(zhuǎn)換為世界坐標(biāo)下的表示即為所求的主方向。

經(jīng)復(fù)現(xiàn)后,發(fā)現(xiàn)此方法存在一定的缺陷:

1)原算法未對如何選取兩個臨近像素點的法線射線與焦平面的交點中的一個進(jìn)行分析,因為在大部分情況下選擇其中任意一個均會得到正確的結(jié)果。但是對于如圓柱曲面以及其類似的曲面上,若選取的臨近的法線射線的像素點是與目標(biāo)像素點在同一個圓周上的點,則會存在該像素點的法線射線與焦平面的交點與目標(biāo)像素點的法線射線與焦平面的交點重合的問題(相交于該圓周的圓心)。若計算主方向時選取了該像素點,則由于浮點數(shù)精度問題,2個交點本應(yīng)重合,但進(jìn)行相減不為零向量,歸一化后得到的主方向與原來主方向相差過大,使得整體算法缺乏魯棒性。

2)由于只選擇了一組臨近像素點(2個),并根據(jù)其計算主方向,本文經(jīng)過實驗,發(fā)現(xiàn)這樣的算法對于形態(tài)較為簡單的幾何體(如文獻(xiàn)[6]中展現(xiàn)的球體、圓柱體、茶壺)能得到較為準(zhǔn)確的結(jié)果,但是對于較為復(fù)雜的形體,部分估計值會隨著這組像素點的選取而改變。并且隨著物體靠近屏幕方向,會出現(xiàn)一些像素點在求得焦平面解二次方程時出現(xiàn)判別式為負(fù)數(shù)的情況,導(dǎo)致使得該點的像素值無法確定,使得整體算法缺乏魯棒性。

為了解決上述2個問題,受文獻(xiàn)[7]中通過焦平面對模型空間中的離散三角網(wǎng)格的主方向使用L-M方法進(jìn)行回歸的啟發(fā),本文采用另一種思路進(jìn)行更快的線性回歸。由于使用2個臨近的法線射線以及目標(biāo)像素點的法線射線就可以計算出一組主方向,首先構(gòu)建目標(biāo)像素點所在的切平面的一個正交坐標(biāo)系,接著分別求出目標(biāo)像素點的周圍8個像素點的世界坐標(biāo)與法向量在該坐標(biāo)系下的相對坐標(biāo),并分別對這個8個像素的法線射線進(jìn)行計算。對于每個像素在切平面下表示的法線射線的方向向量記為(nix,niy,1),與切平面的交點記為(uix,uiy,0),其中i的不同取值代表目標(biāo)像素點周圍8個臨近像素點中的一個的計算結(jié)果。

接下來,將上方與左方、上方與右方、下方與左方、下方與右方、左斜上與左斜下、左斜下與右斜下、左斜上與右斜上、右斜上與右斜下這8組像素點分別與目標(biāo)像素點在切平面正交坐標(biāo)系下的幾何信息代入式(1),每一組分別求得最大主曲率或最小主曲率分別對應(yīng)的應(yīng)在主方向上的2個點(px1,py1,0)與(px2,py2,0)。

將得到的結(jié)果使用最小二乘法進(jìn)行回歸。由于主方向與切平面平行,因此不考慮z軸方向,算法的偽代碼如下:

算法1 對采樣結(jié)果進(jìn)行回歸求得更為準(zhǔn)確的主方向

輸入:

Point[17]通過以上算法求得的17個坐標(biāo)

axis X,axis Y分別對應(yīng)切平面坐標(biāo)系下的X軸與Y軸在世界坐標(biāo)系下的表達(dá)。

輸出:

PrincipalDirection世界坐標(biāo)系下的主方向for(int i=0;i<17;i++)

sum_x+=Point[i].x;

sum_y+=Point[i].y;

sum_xy+=Point[i].x* Point[i].y;

sum_x2+=Point[i].x*Point[i].x;

count++;

k=(sum_xy-sum_x*sum_y/count)

k/=(sum_x2-sum_x*sum_x/count);

b=(sum_y-sum_x*k)/count;

PrincipalDirection=normalize(axis X+(k+b)* axis Y)

使用最小二乘法進(jìn)行線性回歸規(guī)避了之前提到了計算量大需要反復(fù)迭代,使用到超越函數(shù)的問題。之后像文獻(xiàn)[22]的方法進(jìn)行平滑處理。

在非生物模型占主導(dǎo)地位的場景或渲染影視作品的場景下,可以只選用上方、下方、左方、右方4個像素點的采樣結(jié)果進(jìn)行計算,原因如下:

生物模型(如人體以及各種動物)表面上相對平滑且起伏細(xì)節(jié)較多,較非生物模型更復(fù)雜,因此對生物模型較多的場景應(yīng)該應(yīng)使用8個像素點進(jìn)行采樣。而對于非生物等人造物模型占主導(dǎo)的場景(如家具或汽車等機械),其表面比較規(guī)則,細(xì)節(jié)較少,因此對非生物模型較多的場景應(yīng)使用4個像素點進(jìn)行采樣。

幾何緩沖是由光柵化線性插值得到的,因此噪聲產(chǎn)生于頂點間頂點屬性線性插值。若模型頂點密度較高,相當(dāng)于該模型其對物體表面采樣數(shù)更多,線性插值帶來的噪聲的影響就越小。影視作品其往往使用頂點密度較高的模型,對其應(yīng)使用4個像素點進(jìn)行采樣并計算結(jié)果。而對頂點密度較低的實時交互類應(yīng)用(如游戲等),由于其使用頂點密度較低的模型,而導(dǎo)致噪聲問題嚴(yán)重,因此需要使用8個像素點采樣并計算得到結(jié)果。

這樣的算法能在GPU上能夠以較快的速度進(jìn)行處理。作為實驗結(jié)果,本文發(fā)現(xiàn)使用這樣的算法計算得到屏幕空間主方向?qū)τ趶?fù)雜模型有著更為準(zhǔn)確的結(jié)果,并且基本能回避上文提到的文獻(xiàn)[6]中的兩個問題。

為了進(jìn)一步解決物體靠近帶來的判別式為負(fù)數(shù)的問題,本文設(shè)置一定的深度等級作為對照。當(dāng)深度低于一定指標(biāo)時,在采樣時選擇離目標(biāo)像素點一定距離外的像素點來構(gòu)建法線射線。當(dāng)物體離視平面較近時,臨近像素點由于線性插值和浮點數(shù)誤差,幾個像素點的空間位置上與平面過于近似而無法得到正確的結(jié)果。而使用有一定距離外的像素點,會在一定程度上減少線性插值帶來的影響,增大幾個像素點在空間位置上的差距,減少其與平面的近似程度,從而得到更為正確的結(jié)果。除此之外,對于一些已經(jīng)被判定為平面的點,在進(jìn)行對主方向進(jìn)行平滑的時候,搜索其附近的點,將其附近沒被視成平面,且和該點在同一平面上的點的主方向賦給該像素點。這樣的做法能在一定程度上增強算法的魯棒性。

對于不同場景、深度等級及其對應(yīng)的像素,采樣間隔設(shè)置方法如下:首先找到場景中曲率最低的曲面,若有多處則對多處分別按照以下思路計算深度等級,并對相同深度區(qū)間取最高間隔作為該部分的間隔。首先將該曲面貼近裁剪平面,之后將被錯誤視為平面的像素點中最高深度值作為最高深度等級,并逐一提高像素采樣的間隔距離,直到曲面上沒有像素點被視為平面。之后降低1像素間隔,并將物體向裁剪平面中遠(yuǎn)平面偏移,直到?jīng)]有曲面上的像素點被視為平面,并記錄此時曲面上最低的深度值,將該深度值視為使用此時間隔的臨界點。并按照如上方法降低像素采樣距離并設(shè)置深度值,直到間隔變?yōu)?。

2.2 透視正確且高效率的線卷積積分

傳統(tǒng)線卷積積分以每一個像素點為單位,視一個像素點內(nèi)向量場不會發(fā)生變化。故每一次向前傳播時,會固定跨越一個像素點。本文對該算法進(jìn)行改進(jìn),不再將一個像素點內(nèi)的向量場視為不變,而是作為一個通過插值得到的連續(xù)向量場參與后續(xù)運算。

本文算法對于非整點的采樣,對其臨近的4個頂點使用雙線性插值獲取采樣值,并通過控制步長得到風(fēng)格化的效果,使用有序抖動降低了邁進(jìn)的步數(shù)以提高性能。這樣的插值操作在GPU端由于其能被硬件實現(xiàn)而有著較高的效率。

文獻(xiàn)[8]中使用到的2D線卷積積分,其直接用主方向與透視矩陣相乘的結(jié)果,作為其進(jìn)2D線卷積積分的2D向量。這樣的做法存在透視錯誤,因透視矩陣的構(gòu)造,對于有相同方向向量的卻在裁剪空間中不同位置的像素點,該向量其在裁剪空間中與水平方向的夾角與像素點在裁剪空間的位置有關(guān)。而將其直接與透視矩陣相乘,則使得擁有同樣主方向,在不同剪裁空間位置的像素點有著相同的投影主方向。因此,原算法會帶來如圖2的問題。圖2與圖3渲染了3個不同朝向的圓柱,并沿著圓柱的主方向進(jìn)行卷積。圖2中由于透視問題導(dǎo)致渲染結(jié)果不正確:線卷積積分的線條并非沿著物體表面主方向延伸。但若使用3D的線卷積積分,則需要進(jìn)行體渲染,對渲染管線改動較大。采用本文算法可以規(guī)避以上問題,得到圖3的效果。

新線卷積算法首先由使用者確定邁進(jìn)步長與邁進(jìn)次數(shù)。算法流程如下:

步驟1對于每一個像素點,第一步根據(jù)有序抖動矩陣與其像素所在位置得到其起始偏移量,通過該點uv坐標(biāo)對計算好的主方向結(jié)構(gòu)緩沖與世界坐標(biāo)結(jié)構(gòu)緩沖進(jìn)行采,之后計算該點的主方向與偏移量的乘積并再加到像素所在世界坐標(biāo)。

步驟2將所得到的世界坐標(biāo)位置與投影矩陣相乘,將結(jié)果轉(zhuǎn)換為屏幕空間uv坐標(biāo),使用此uv坐標(biāo)對計算好的主方向結(jié)構(gòu)緩沖與世界坐標(biāo)結(jié)構(gòu)緩沖進(jìn)行采樣,得到新的世界坐標(biāo)與主方向。

步驟3將主方向與步長相乘,加到世界坐標(biāo)上,讓累計卷積值加上通過uv坐標(biāo)對當(dāng)前卷積目標(biāo)進(jìn)行采樣的值,邁進(jìn)次數(shù)加1。

步驟4若邁進(jìn)次數(shù)未達(dá)到規(guī)定的邁進(jìn)次數(shù),則返回步驟2。

通過規(guī)定邁進(jìn)步長與邁進(jìn)數(shù),可以得到更為風(fēng)格化的結(jié)果。使用較長的步長可以得到軟鉛描繪的效果,而較短的步長得到的效果更加細(xì)膩,類似硬鉛繪制得到的效果。

文獻(xiàn)[8-9]等在進(jìn)行素描風(fēng)格的渲染時,只對白噪聲進(jìn)行了線卷積積分。本文發(fā)現(xiàn),若使用如Perlin噪聲,Worley噪聲等可以得到一些風(fēng)格化效果,具體效果在實驗部分進(jìn)行展開。

為了解決空間耦合問題,本文使用uv坐標(biāo)對噪聲貼圖進(jìn)行采樣來實現(xiàn)。首先對不同模型設(shè)置一個uv比例材質(zhì)參數(shù)。之后在延遲渲染時將每個像素點的uv坐標(biāo)乘以uv比例材質(zhì)參數(shù),將得到的結(jié)果單獨存在一張紋理中。在線卷積積分時,對于每一點的噪聲值,用這張紋理中得到uv值去采樣一張噪聲紋理得到。之所以要使用一個uv比例材質(zhì)參數(shù),這是因為一些模型因為其使用的紋理數(shù)量不同,uv值會出現(xiàn)較密或者較為疏松的情況。通過使用這樣一個紋理比例參數(shù)來勁調(diào)整,使得繪制出來的線條在模型與模型之間有著相近的大小。

2.3 基于藝術(shù)導(dǎo)向的素描風(fēng)格渲染

文獻(xiàn)[6,8,12]對素描風(fēng)格的渲染模擬是從繪制完成的作品中去分析的,而未從藝術(shù)家在完成這類作品時為了表現(xiàn)出某些藝術(shù)特點而使用了怎樣的繪制方式去分析,錯過了一些在素描繪制中表現(xiàn)的較為重要的細(xì)節(jié)。本文從素描繪制期望表現(xiàn)的特點進(jìn)行分析,對素描風(fēng)格渲染模擬提出改進(jìn)。

2.3.1 增強物體表面立體感

素描為了表現(xiàn)出一個面的立體感,往往采用的渲染手法是讓面融入場景。為了達(dá)到這樣的藝術(shù)特點,素描繪制的做法是減少邊緣,在上色階段,會將原來作為結(jié)構(gòu)繪制的邊緣部分,通過排線的方式,讓其通過漸變的方式融入背景,或者物體的較暗的部分,并以此加強邊緣兩邊的亮度對比。即若邊緣的一側(cè),主要表現(xiàn)的物體越亮,那么藝術(shù)家會希望邊緣的另外一側(cè)就越暗。若主要表現(xiàn)的物體越暗,則藝術(shù)家則希望邊緣的另外一側(cè)就越亮。

為了達(dá)到期望效果,在光照繪制階段,首先使用alpha通道或者模板緩存標(biāo)記物體是否是主要表達(dá)的物體。因為之后使用到了較大的卷積核,為了提升運行效率,本文對通過將光照計算得到的渲染結(jié)果進(jìn)行下采樣。之后將得到的結(jié)果進(jìn)行卷積核較大的高斯模糊,但為了減少計算量,本文并非對于卷積核內(nèi)所有單位進(jìn)行全部采樣,而是隔一定的像素距離進(jìn)行一次采樣。將計算結(jié)果與原像素值進(jìn)行對比,若原像素值大于該像素值(對應(yīng)想表現(xiàn)的部分更暗的情況),則結(jié)果為原像素值加上使用者設(shè)定的希望的對比度大小與兩者的差的絕對值的乘積。若原像素值小于該像素值(對應(yīng)想表現(xiàn)的部分更亮的情況),則結(jié)果為原像素值減去使用者設(shè)定的希望的對比度大小與兩者的差的絕對值的乘積。將得到的結(jié)果與下采樣前的光照結(jié)果進(jìn)行混合得到最后背景像素值。

圖4左邊是未經(jīng)本文處理的渲染圖,右邊是經(jīng)過該方法的渲染結(jié)果。不難看出,兩幅圖中,在箭頭處所指,物體的邊緣兩側(cè)(即背景與物體兩部分),右圖由于進(jìn)行了風(fēng)格化處理,使得明暗對比更加明顯,這樣一種做法在視覺上使得球體更有體積感。

2.3.2 畫面處理復(fù)雜度的降低以及更加符合手繪的線條

在傳統(tǒng)素描繪制中,藝術(shù)家往往會使用角度相差不大的線條組對畫面進(jìn)行上色(即素描專業(yè)術(shù)語:“鋪調(diào)子”),若使用角度變化較大的線條進(jìn)行上色,會使得畫面處理復(fù)雜度較大,而使得畫面過于雜亂。在素描渲染中,若直接使用主方向進(jìn)行繪制,對于復(fù)雜模型,由于主方向變化頻率高,使得線條角度變化大,導(dǎo)致整體畫面處理復(fù)雜度過大,使得渲染結(jié)果不符合手繪效果。

為解決以上問題,本文使用了兩個主方向角平分線的方向作為線卷積的方向。經(jīng)實驗,使用這樣的一個方向降低了畫面的處理復(fù)雜度(processing complexity),計算機美學(xué)研究認(rèn)為美學(xué)價值與處理復(fù)雜度成反比[24],處理復(fù)雜度的降低讓畫面更加符合現(xiàn)實到繪畫作品的抽象,使其更具有美學(xué)價值。并且處理復(fù)雜度的降低提高從整體上來看更加符合素描的效果,且由于每個像素點的兩個主方向均不存在空間耦合問題,因此作為其角平分線依然不存在空間耦合問題。并且由實驗部分可以看出,這種方法在視覺效果上也能表現(xiàn)出物體的結(jié)構(gòu)特征。

求角平分線所在方向很容易整合進(jìn)本文的算法中。本文并沒有分別去求最大法曲率與最小法曲率對應(yīng)的主方向,再在該基礎(chǔ)上求夾角的角平分線,而是在采樣8個點的法線射線分成八組計算焦平面時,選擇一半的組估計最大法曲率對應(yīng)的主方向,一半的組估計最小法曲率對應(yīng)的主方向,再將結(jié)果進(jìn)行最小二乘法回歸。

2.3.3 素描三大面的表現(xiàn)

素描中為了表現(xiàn)物體的光影關(guān)系,提出了三大面的概念:亮面、灰面、暗面。素描繪制中,應(yīng)著重加強3個面的對比關(guān)系。其中灰面與暗面往往能用光照方程的渲染結(jié)果很好地表達(dá)。但對于亮面,文獻(xiàn)[8]在線卷積積分后對其沒有進(jìn)行處理,使得灰面與亮面的對比感不強。為了表現(xiàn)亮面,本文設(shè)置了2個接近1閾值,當(dāng)像素點的亮度高過較小閾值時,將其亮度進(jìn)行一定的非線性縮放,使得該亮度在達(dá)到第2個閾值時為1。將亮度值高過第2個閾值的像素點也標(biāo)記為亮度為1的像素點。通過這樣的處理,渲染出來的結(jié)果也能像手繪渲染一樣有與畫面其他部分對比較強的亮面,且亮面與灰面過渡平緩。

3 實驗效果

3.1 實驗環(huán)境

使用1 920*1 080的渲染分辨率與InterI9-9990X的CPU與GTX2080的顯卡。為了表現(xiàn)這種算法能很好地整合進(jìn)現(xiàn)有的渲染管線,本文在Unity3D(2019.3.4f1)上進(jìn)行了實驗。并為了得到更高精度的幾何緩沖以及存儲模型uv信息的幾何緩存,實驗部分未使用內(nèi)置的延遲渲染管線,而是使用了Unity3D的可編程管線(SRP)重新實現(xiàn)了延遲渲染。

3.2 實驗效果

3.2.1 主方向?qū)崟r估計效果

對2個圖形學(xué)常用模型的主方向進(jìn)行估計,并分別計算其主方向,并將結(jié)果其渲染到屏幕空間上,與現(xiàn)有算法進(jìn)行對比。為方便讀者比較,本文將主方向單位向量的絕對值作為像素點的顏色。其中本文算法與文獻(xiàn)[6]的結(jié)果算法經(jīng)過了文獻(xiàn)[6]使用的濾波。其中,圖5為文獻(xiàn)[3]中算法,圖6為文獻(xiàn)[6]中算法,圖7為本文算法。表1為每種算法計算所的時間,表2為以文獻(xiàn)[3]算法(圖5)為基準(zhǔn),對圖6與圖7分別計算峰值信噪比。可以看到,本文的算法每一幀渲染時間雖然略高于文獻(xiàn)[6]的算法,但是魯棒性較強,且不會出現(xiàn)如中部分因為估計時解二次方程判別式為0帶來的黑色區(qū)域。通過對比峰值信噪比,本文算法比文獻(xiàn)[6]的算法在估計值上更加準(zhǔn)確。相比于文獻(xiàn)[3]的算法,無需大量的預(yù)計算時間。

表1 主方向估計所需時間

表2 本文算法、文獻(xiàn)[6]算法與文獻(xiàn)[3]算法計算的峰值信噪比

3.2.2 線卷積積分

將文獻(xiàn)[8]使用的文獻(xiàn)[10]的線卷積積分與本文提出的改良后的線卷積積分算法的渲染結(jié)果進(jìn)行對比。圖8為文獻(xiàn)[8]的算法,圖9為本文的算法。每組中,從左到右分別是卷積長度為10、20、40、60的結(jié)果。表3為每組中不同卷積長度每一幀渲染所需時間。

表3 線卷積所需時間 ms

從以上算法中可以看出,本文提出的線卷積算法雖然在相同步數(shù)下性能低于傳統(tǒng)算法,但本文的算法在10步時有著與原方法60步的效果,并且透視正確。表明了本文的線卷積算法能用較低的步數(shù)獲取原方法較高步數(shù)的效果,且近似效果下,本文算法的10步需要的每一幀渲染的時間1.6 ms低于原方法60步所需的2.31 ms。

3.2.3 畫面處理復(fù)雜度的降低

為表現(xiàn)相比于直接使用主方向作為線卷積的方向,使用本文算法的主方向的角平分線能降低畫面的處理復(fù)雜度而進(jìn)行實驗。為了定量計算處理復(fù)雜度的降低,本文使用了文獻(xiàn)[24-25]中對美學(xué)價值處理復(fù)雜度定量計算的指標(biāo),即將圖像采用有損壓縮算法(本文使用JPEG壓縮算法,即DCT變換),之后通過均方根誤差除以壓縮率來計算圖像的處理復(fù)雜度。分別將兩個模型的主方向以及主方向間的角平分線的方向與透視矩陣相乘,將得到的方向向量結(jié)果轉(zhuǎn)換為標(biāo)量角度并縮放到紋理像素的取值范圍。圖10為計算得到渲染結(jié)果,其中左邊為直接使用主方向,而右圖為使用主方向的角平分線。之后分別對每一組計算文獻(xiàn)[24-25]中的指標(biāo)(使用50%的壓縮率),結(jié)果如表4所示。實驗結(jié)果表明,使用角平分線相比于直接使用主方向能夠降低畫面的處理復(fù)雜度。

表4 圖10中每組畫面處理復(fù)雜度的降低比例

3.2.4 不同類型噪聲的風(fēng)格化卷積效果

分別使用白噪聲、Perlin噪聲以及Worley噪聲進(jìn)行線卷積積分。其中文獻(xiàn)[8-9]使用到白噪聲如圖11,Perlin噪聲如圖12,Worley噪聲如圖13。為方便對比,未與光照進(jìn)行混合。經(jīng)過對比可以發(fā)現(xiàn),使用白噪聲進(jìn)行卷積,得到的結(jié)果較為細(xì)膩,像是由硬度較高的鉛筆繪制出。Perlin噪聲輕線條與重線條的區(qū)分較白噪聲更為明顯,像是由硬度適中的鉛筆繪出。Worley噪聲卷積后得到的結(jié)果輕線條與重線條區(qū)分十分明顯,像是用軟鉛繪制而成。實驗表明,使用不同噪聲進(jìn)行卷積,會帶來不同的風(fēng)格化效果。

3.2.5 空間耦合性

為表明本文算法有較強的空間耦合性,圖14對通過本文算法渲染的模型的一系列角度進(jìn)行觀察。不難發(fā)現(xiàn),隨著視角位置的變化,模型身上的線條位置沒有發(fā)生變化。實驗表明,本文算法具有較強的空間耦合性。

3.2.6 間隔一定距離采樣對性能與效果的影響

為表現(xiàn)本文在2.3.1節(jié)中,使用間隔一定距離采樣的算法對性能與效果的影響,本節(jié)分別對73*73的卷積核全部采樣,間隔不同像素距離的采樣效果以及渲染單幀所需時間(運算量)進(jìn)行分析。渲染效果如圖15所示(從左到右,從上到下依次為全部采樣,間隔2、4、6像素進(jìn)行采樣),單幀渲染時間如表5所示??梢钥闯觯坎蓸右约伴g隔一定像素進(jìn)行采樣對渲染效果無明顯影響,而性能上相比于全部采樣,間隔6像素進(jìn)行采樣每一幀節(jié)省了186.9 ms。

表5 間隔一定像素距離的每幀渲染所需時間

3.2.7 素描風(fēng)格渲染

本節(jié)將素描渲染得到的整體效果,與按照文獻(xiàn)[8]中的線卷積方式,以及其卷積方向的選擇得到的效果進(jìn)行對比。按照文獻(xiàn)[8]中的線卷積方式,以及其卷積方向的選擇得到的效果如圖15所示,按照本文算法渲染得到的結(jié)果如圖16所示。

通過對比,在線條描繪上,圖17中,通過結(jié)構(gòu)張量對光照結(jié)果進(jìn)行分析,對主方向表現(xiàn)不明顯的臍點,如平面或球體,按照其亮度變化的方向進(jìn)行卷積,使其也有較為適合線條表達(dá)其形狀特征。并且對主方向表現(xiàn)明顯的物體,使用了多個方向進(jìn)行疊筆。并且運用了本文的透視正確的線卷積積分,在表達(dá)物體的形狀上更為準(zhǔn)確。而圖16文獻(xiàn)中算法因僅考慮了主方向作為其卷積方向,使得其對于主方向不明顯的臍點只能用固定的方向進(jìn)行卷積,并且存在透視錯誤的問題,使得線條無法很好地表現(xiàn)出物體的形狀特征。

圖17 中,通過對高于一定閾值的像素點的篩選形成了亮面。這種做法加強了畫面灰部與亮部的對比,并且通過對背景進(jìn)行處理,加強了物體的立體感,使得整體效果更貼近手繪素描效果。而圖16中,該算法沒有考慮物體與物體之間的關(guān)系,且未根據(jù)素描表現(xiàn)效果進(jìn)行風(fēng)格化處理,使得其表現(xiàn)效果不如本文的渲染結(jié)果。

4 結(jié)束語

本文提出一種更具魯棒性的實時主方向估計,以及一種效率更高且透視正確的線卷積積分。通過將這兩種方法,并結(jié)合藝術(shù)導(dǎo)向的處理,得到符合美學(xué)且實時的素描渲染結(jié)果。實驗結(jié)果表明,這種算法比傳統(tǒng)素描繪制算法能更好地表現(xiàn)手繪素描效果,且有著較廣泛的適用性。由于主方向可以很好地表現(xiàn)物體的形狀特征,因此后續(xù)考慮將這種魯棒的實時主方向估計應(yīng)用到其他風(fēng)格化渲染(如油畫等)上。

猜你喜歡
像素點素描像素
趙運哲作品
藝術(shù)家(2023年8期)2023-11-02 02:05:28
像素前線之“幻影”2000
初夏素描
武漢素描
歌劇(2020年4期)2020-08-06 15:13:32
素描
“像素”仙人掌
基于canvas的前端數(shù)據(jù)加密
基于逐像素點深度卷積網(wǎng)絡(luò)分割模型的上皮和間質(zhì)組織分割
凡·高的早期素描
讀者(2016年23期)2016-11-16 13:27:55
高像素不是全部
CHIP新電腦(2016年3期)2016-03-10 14:22:03
黎城县| 新巴尔虎右旗| 班戈县| 平阴县| 建昌县| 凌海市| 彰化市| 弋阳县| 怀化市| 怀仁县| 冷水江市| 乌拉特前旗| 嘉定区| 洪江市| 禄丰县| 瓮安县| 抚松县| 徐汇区| 广德县| 洞口县| 桂平市| 廉江市| 泰宁县| 锡林郭勒盟| 塔河县| 墨竹工卡县| 腾冲县| 五莲县| 阿拉善左旗| 旌德县| 张家口市| 哈巴河县| 江都市| 万宁市| 新余市| 隆昌县| 玉龙| 罗城| 准格尔旗| 桂平市| 凭祥市|