您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何在Unity中實(shí)現(xiàn)基于筆觸的實(shí)時(shí)渲染,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
基于筆觸的渲染(stroke-based rendering,下稱(chēng)SBR),簡(jiǎn)單的講就是根據(jù)圖像生成筆觸,然后再用筆觸對(duì)圖像進(jìn)行重繪。這個(gè)過(guò)程實(shí)際上是模仿畫(huà)家實(shí)際畫(huà)畫(huà)的過(guò)程,也就是觀察->理解->表達(dá)的過(guò)程,畫(huà)畫(huà)的時(shí)候有一句話(huà)叫意在筆先也就是這個(gè)意思。具體可以看這篇關(guān)于SBR的綜述:luthuli.cs.uiuc.edu/~da (luthuli.cs.uiuc.edu/~daf/courses/ComputerGraphics/01210867.pdf)。
研究生的時(shí)候我是研究非真實(shí)性渲染(Non-Photorealistic Rendering,下稱(chēng)NPR)的,發(fā)現(xiàn)本質(zhì)上有兩種方法,一種是基于經(jīng)驗(yàn)的研究方法,也就是沒(méi)有理論根據(jù),根據(jù)實(shí)驗(yàn)結(jié)果來(lái)設(shè)計(jì)渲染方法。好像有個(gè)圖形學(xué)大佬說(shuō)過(guò):看起來(lái)是對(duì)的,就是對(duì)的。大概說(shuō)的就是基于經(jīng)驗(yàn)的研究方法。還有一種是基于物理模擬的研究方法,比如研究顏料的實(shí)際混色和水分的流動(dòng)等等。
我發(fā)現(xiàn)基于經(jīng)驗(yàn)的方法有點(diǎn)憑感覺(jué),無(wú)論是設(shè)計(jì)算法還是評(píng)判結(jié)果都不好弄?;谖锢砟M的研究方法又是太笨重,只是在計(jì)算機(jī)中再現(xiàn)了工具和顏料,而怎么畫(huà)還是靠藝術(shù)家手工去畫(huà)。于是我在想,怎么讓計(jì)算機(jī)真的像藝術(shù)家一樣去思考,去表達(dá)呢。
剛好以前接觸過(guò)一點(diǎn)計(jì)算機(jī)視覺(jué),于是在想有沒(méi)有一種基于視覺(jué)的研究方法,讓計(jì)算機(jī)去理解圖像,然后像人一樣去畫(huà),也就是渲染,而不是用一堆濾波器。
那時(shí)候用了opencv去做圖像分割,然后計(jì)算圖像的顯著度(saliency),再根據(jù)顯著度生成筆刷,最后用cuda并行地渲染筆刷,做了這樣一個(gè)離線(xiàn)版本的SBR。效果還不錯(cuò),但是工作之后這個(gè)研究就放下了。
最近開(kāi)始學(xué)習(xí)Unity的Compute Shader,發(fā)現(xiàn)跟cuda很像,于是又想起了SBR,感覺(jué)用Unity可以在后處理中實(shí)現(xiàn)的SBR,于是做了一些嘗試。
所有處理都寫(xiě)在post processing stack的render里面,流程大概如下:
其中梯度張量的經(jīng)過(guò)高斯平滑后,稱(chēng)為平滑化梯度張量,求法如下:
IGa為高斯濾波的卷積運(yùn)算,px為sobel算子計(jì)算的x方向的梯度,py為sobel算子計(jì)算的y方向的梯度。至于為什么用SVD分解求得的第二特征向量來(lái)計(jì)算旋轉(zhuǎn)矩陣,那是因?yàn)榈谝惶卣飨蛄浚ㄖ魈卣飨蛄浚┍砻鞯氖亲兓畲蟮某?,而第二特征向量與之正交,所以可以用來(lái)表明筆觸的流向。
左邊為原幀,右邊為SBR渲染后的效果:
基于筆觸的實(shí)時(shí)渲染
另外,筆觸的間隔和的大小可以調(diào)節(jié)出不同的效果:
筆觸的間隔和的大小可以調(diào)節(jié)
不同筆觸紋理可以有不同的渲染效果:
(github.com/alpacasking/SBR)
時(shí)間有限,現(xiàn)在只寫(xiě)了最基本的流程,其實(shí)還有很多東西值得做,比如:
根據(jù)深度紋理檢測(cè)前景和背景,從而生成不同密度和大小的筆觸
利用CV相關(guān)知識(shí)分析理解圖像再生成筆觸
同時(shí)用不同的筆觸紋理渲染
讓每幀之間的筆觸銜接得流暢
可以為油畫(huà),水彩風(fēng)格等做進(jìn)一步的研究
有時(shí)間的話(huà)會(huì)慢慢加上的,各位有興趣的話(huà)也可以自行魔改。
關(guān)于如何在Unity中實(shí)現(xiàn)基于筆觸的實(shí)時(shí)渲染就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。