亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Unity中實現基于筆觸的實時渲染

發布時間:2021-11-15 14:46:13 來源:億速云 閱讀:238 作者:柒染 欄目:大數據

這篇文章給大家介紹如何在Unity中實現基于筆觸的實時渲染,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

什么是基于筆觸的渲染

基于筆觸的渲染(stroke-based rendering,下稱SBR),簡單的講就是根據圖像生成筆觸,然后再用筆觸對圖像進行重繪。這個過程實際上是模仿畫家實際畫畫的過程,也就是觀察->理解->表達的過程,畫畫的時候有一句話叫意在筆先也就是這個意思。具體可以看這篇關于SBR的綜述:luthuli.cs.uiuc.edu/~da (luthuli.cs.uiuc.edu/~daf/courses/ComputerGraphics/01210867.pdf)。

為什么要在Unity中實現SBR

研究生的時候我是研究非真實性渲染(Non-Photorealistic Rendering,下稱NPR)的,發現本質上有兩種方法,一種是基于經驗的研究方法,也就是沒有理論根據,根據實驗結果來設計渲染方法。好像有個圖形學大佬說過:看起來是對的,就是對的。大概說的就是基于經驗的研究方法。還有一種是基于物理模擬的研究方法,比如研究顏料的實際混色和水分的流動等等。

我發現基于經驗的方法有點憑感覺,無論是設計算法還是評判結果都不好弄。基于物理模擬的研究方法又是太笨重,只是在計算機中再現了工具和顏料,而怎么畫還是靠藝術家手工去畫。于是我在想,怎么讓計算機真的像藝術家一樣去思考,去表達呢。

剛好以前接觸過一點計算機視覺,于是在想有沒有一種基于視覺的研究方法,讓計算機去理解圖像,然后像人一樣去畫,也就是渲染,而不是用一堆濾波器。

那時候用了opencv去做圖像分割,然后計算圖像的顯著度(saliency),再根據顯著度生成筆刷,最后用cuda并行地渲染筆刷,做了這樣一個離線版本的SBR。效果還不錯,但是工作之后這個研究就放下了。

最近開始學習Unity的Compute Shader,發現跟cuda很像,于是又想起了SBR,感覺用Unity可以在后處理中實現的SBR,于是做了一些嘗試。

具體的實現方法

所有處理都寫在post processing stack的render里面,流程大概如下:

如何在Unity中實現基于筆觸的實時渲染

其中梯度張量的經過高斯平滑后,稱為平滑化梯度張量,求法如下:

如何在Unity中實現基于筆觸的實時渲染

IGa為高斯濾波的卷積運算,px為sobel算子計算的x方向的梯度,py為sobel算子計算的y方向的梯度。至于為什么用SVD分解求得的第二特征向量來計算旋轉矩陣,那是因為第一特征向量(主特征向量)表明的是變化最大的朝向,而第二特征向量與之正交,所以可以用來表明筆觸的流向。

渲染結果:

左邊為原幀,右邊為SBR渲染后的效果:

基于筆觸的實時渲染

另外,筆觸的間隔和的大小可以調節出不同的效果:

筆觸的間隔和的大小可以調節

不同筆觸紋理可以有不同的渲染效果:

如何在Unity中實現基于筆觸的實時渲染
如何在Unity中實現基于筆觸的實時渲染

代碼

(github.com/alpacasking/SBR)

時間有限,現在只寫了最基本的流程,其實還有很多東西值得做,比如:

  • 根據深度紋理檢測前景和背景,從而生成不同密度和大小的筆觸

  • 利用CV相關知識分析理解圖像再生成筆觸

  • 同時用不同的筆觸紋理渲染

  • 讓每幀之間的筆觸銜接得流暢

  • 可以為油畫,水彩風格等做進一步的研究

有時間的話會慢慢加上的,各位有興趣的話也可以自行魔改。

關于如何在Unity中實現基于筆觸的實時渲染就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浮山县| 沾化县| 濮阳县| 景德镇市| 游戏| 体育| 靖江市| 安吉县| 肥东县| 穆棱市| 哈巴河县| 略阳县| 南雄市| 马鞍山市| 阿图什市| 山丹县| 长汀县| 泽普县| 钟祥市| 杂多县| 德兴市| 普兰县| 新巴尔虎右旗| 弥渡县| 襄汾县| 即墨市| 福州市| 商河县| 恩施市| 资源县| 丁青县| 陆良县| 汕尾市| 大新县| 蓬莱市| 梅河口市| 榆树市| 武清区| 左贡县| 宣恩县| 永吉县|