shader模擬水彩畫(huà)

水彩的物理屬性

水彩畫(huà)(watercolor paint ,也被簡(jiǎn)稱為watercolor)是一種比較常見(jiàn)的藝術(shù)風(fēng)格。一幅水彩畫(huà)涉及到了兩種材質(zhì):

水彩紙(watercolor paper)。它并不是由木材制作而成的,而是通過(guò)把亞麻布或者棉花搗碎成細(xì)小的纖維的來(lái)的。這種材質(zhì)非常容易吸收液體,為了防止顏料迅速蔓延,因此還給這些紙張進(jìn)行上漿(sizing)。

顏料(pigment)。這是一種固體材質(zhì),由很多很小的單獨(dú)的粒子組成。這些水彩顏料通常由0.05到0.5微米的粉末構(gòu)成,它們可以滲透水彩紙,但一旦附著在紙上,擴(kuò)散速度就會(huì)下降。

除此之外,水彩畫(huà)有一些特點(diǎn),例如:

干筆畫(huà)(Dry brush)。如果使用較干的畫(huà)筆畫(huà)在粗糙的紙上,那么會(huì)出現(xiàn)一些不規(guī)則的空隙和粗糙的邊界效果。

邊界顏色較深(Edge darkening)。如果使用較濕的畫(huà)筆畫(huà)在較干的紙面上,在紙的漿料和水的表面張力的作用下,顏料不會(huì)繼續(xù)擴(kuò)散,并在邊緣處留下一圈顏色更深的沉淀痕跡。


模擬

使用三個(gè)圖層來(lái)模擬水彩畫(huà)中顏料的流動(dòng):

第一層是shallow-water layer。在這一層中,顏料會(huì)在紙張表面擴(kuò)散流動(dòng)

第二層是pigment-deposition layer。在這一層中,顏料會(huì)沉淀進(jìn)入和釋放出紙張。

第三層是capillary layer。在這一層中,被紙張吸收的水會(huì)通過(guò)毛細(xì)管作用被繼續(xù)擴(kuò)散。(這一層僅僅用于模擬水彩畫(huà)的回流效果。)

在模擬時(shí),使用了很多參數(shù)來(lái)控制模擬效果,例如顏料的擴(kuò)散速度、畫(huà)筆壓力、紙張的高度、顏料密度、液體飽和度、液體容量等等。

關(guān)于紙張的模擬,作者使用了一種簡(jiǎn)單的模型,即高度場(chǎng)的方法,并使用了Perlin噪聲(Ken Perlin. An image synthesizer. In SIGGRAPH ’85 Proceedings, pages 287–296. July 1985.)和Worley的多孔紋理(Steven P. Worley. A cellular texturing basis function. In SIGGRAPH ’96 Proceedings, pages 291–294. 1996.)來(lái)生成。這種方法非常常見(jiàn)。?

算法

有了上述這些參數(shù)之后,就可以進(jìn)行算法模擬的部分。主循環(huán)部分在每個(gè)時(shí)間步內(nèi),會(huì)進(jìn)行四個(gè)計(jì)算步驟:

1.在shallow-water layer移動(dòng)液體(Move Water)。

2.在shallow-water layer移動(dòng)顏料(Move Pigment)。

3.在pigment-deposition layer傳遞顏料(Transfer Pigment)。這一步會(huì)模擬顏料的吸收和釋放。

4.在capillary layer模擬毛細(xì)流動(dòng)(Simulate Capillary Flow)。這一步會(huì)模擬回流現(xiàn)象等。

渲染

當(dāng)經(jīng)過(guò)上面的算法后,我們可以得到每個(gè)區(qū)域的顏料厚度。

使用了Kubelka-Munk(KM)模型來(lái)渲染顏料。在論文中,作者為每個(gè)顏料指定了兩個(gè)系數(shù):吸收系數(shù)(absorption coefficients)K和散射系數(shù)(scattering coefficients)S。K和S都是三維屬性,分別表示顏料吸收和散射的能量。?


指定顏料的光學(xué)屬性

雖然K和S系數(shù)通常是經(jīng)驗(yàn)決定的,但作者允許讓用戶來(lái)指定:通過(guò)選擇希望的“unit thickness”(單位厚度)的顏料在黑白背景下的外觀來(lái)決定。具體方法是,給定用戶選擇的兩個(gè)RGB顏色Rw(在白色背景下的顏色)和Rb(在黑色背景下的顏色),K和S系數(shù)可以靠下面的等式來(lái)得到:?


作者在論文里給出了一些計(jì)算出來(lái)的不同樣色、不同屬性顏料的KS系數(shù)。



光學(xué)的顏料層混合


一旦給定了一個(gè)一定厚度x的顏料層以及它的散射和吸收系數(shù)S和K,我們就可以按下面的公式計(jì)算該顏料層的反射比R和透射比T。


對(duì)于兩個(gè)相鄰的層,我們可以按下面公式來(lái)計(jì)算合成后的顏料層的R和T:


實(shí)現(xiàn)效果



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容