整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          流體算法 和 模擬水墨特效

          文介紹利用流體算法,模擬水墨特效。

          參考

          本文主要參考了 恬納微晰 的 github 實現(xiàn)和 GPU Gems 第 38 章

          • https://github.com/TNWX-Z/EnhanceSmokeSimulationPro

          • https://developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch38.html

          恬納微晰的實現(xiàn)效果

          GPU Gems

          之前在網(wǎng)上搜索流體算法的時候看到了 恬納微晰 的實現(xiàn), 但是是通過 shader 在 image effect 里實現(xiàn)的。恰好中文的流體算法的看得懂的相關(guān)資料不多。于是我就做了一個 compute shader 的實現(xiàn)并學(xué)習(xí)了相關(guān)算法。

          算法實現(xiàn)

          這個流體算法, 大體上可以分為 平流模擬(advection)和 旋渦模擬(Vorticity)。使用的是網(wǎng)格的方式模擬每個網(wǎng)點的流速,壓強和密度。

          Compute Shader 入門可以看我之前的文章

          • https://zhuanlan.zhihu.com/p/33675797

          計算的數(shù)據(jù)用了:

          RWTexture2D<float4> Result;//渲染結(jié)果RWTexture2D<float4> Flowmap;//流速圖RWStructuredBuffer<float2> VelocityW;//流速 寫入StructuredBuffer<float2> VelocityR;//流速 讀取RWStructuredBuffer<float> Curled;// 卷曲度RWStructuredBuffer<float> Divergenced;//發(fā)散度RWStructuredBuffer<float> DensityW;//密度 寫入StructuredBuffer<float> DensityR;//密度 讀取RWStructuredBuffer<float4> ColorW;//顏色 寫入StructuredBuffer<float4> ColorR;//顏色 讀取

          主要計算步驟為:

          Advection //平流計算Curl //卷曲計算Vorticity //旋渦Divergence //發(fā)散Pressure //壓力GradientSubtract //梯度減法RenderTex //渲染Splat //筆刷繪制

          Advection 平流的計算為, 根據(jù)當(dāng)前的流速, 反推時間 deltaTime后流到這個位置的 網(wǎng)點的信息, 作為自己deltaTime后的信息.

          比如當(dāng)前流速是 v = 1m, 那么t = 0.1s后會流到這個位置的坐標(biāo)c就是當(dāng)前坐標(biāo) 減去v * t

          Curl 卷曲計算 為根據(jù)當(dāng)前格子周圍格子的速度, 計算出當(dāng)前網(wǎng)點的旋轉(zhuǎn)速度。這個量是垂直于計算面的。

          藍(lán)色為周圍網(wǎng)格的流速,黃色箭頭為卷曲度,即當(dāng)前網(wǎng)點的 旋轉(zhuǎn)速度。

          Vorticity 旋渦計算的是當(dāng)前網(wǎng)點附近的 卷曲值 對網(wǎng)點流速的影響。周圍網(wǎng)點流速的不均衡導(dǎo)致當(dāng)前網(wǎng)點的流速獲得一個改變方向的力。

          Divergence 發(fā)散 和 Pressure 壓力的迭代,模擬了壓力在網(wǎng)點間的傳播。

          大部分 2D 水面模擬會用 壓強和密度來計算水波的傳播,比如 奧日與黑森林

          藍(lán)色為周圍網(wǎng)點的流速,綠色箭頭為壓力。當(dāng)周圍向中心流動時,壓強上升,反之則壓強下降。

          黑色折線為當(dāng)前壓力。綠色為與相鄰網(wǎng)點的平均值。

          每個網(wǎng)點會盡量保證自己的壓強跟周圍的網(wǎng)點一致。壓強的傳播就代表流速的傳播。根據(jù)液體粘稠度的不同,傳播速度也會不同。

          維基百科:粘度 https://zh.wikipedia.org/wiki/%E9%BB%8F%E5%BA%A6

          將這兩個函數(shù)迭代一定次數(shù)后, 進行 Gradient Subtract 梯度衰減

          RenderTex 為將當(dāng)前顏色輸出到 Result。我這里做水墨黑白效果所以就直接反了個色。

          Splat 為用畫筆寫入顏色。傳入鼠標(biāo)位置 和繪制半徑, 根據(jù)當(dāng)前網(wǎng)格與鼠標(biāo)位置計算繪制的顏色和流速。傳入一張筆觸貼圖作為控制。

          最終結(jié)果

          左邊為流速圖, 右邊為繪制面板。

          操縱桿依次為 筆刷大小,濃度,時間步長,迭代次數(shù),液體阻尼,密度阻尼,顏色淡出,筆刷移動速度的影響。

          項目源文件:https://github.com/sacshadow/WaterEffectResearch

          其他參考:http://www.cs.cmu.edu/~kmcrane/Projects/GPUFluid/paper.pdf

          作者開發(fā)中的游戲:https://indienova.com/g/wjdr

          碼來做藝術(shù)?

          本文授權(quán)轉(zhuǎn)載于:AppSo

          ID:AppSo

          作者 : 冷思真

          編輯:亦夕

          藝術(shù)家的作品大多有點高深,除非是寫實類作品,不然你不一定能「看懂」。

          而代碼對大多數(shù)人來說也是艱難的。對非專業(yè)人士來說,代碼可能比藝術(shù)品還要復(fù)雜。那么,如果用代碼來搞藝術(shù)創(chuàng)作,這一切會更簡單嗎?

          01

          不會畫畫的程序員不是好藝術(shù)家

          《索思沃爾德的夜晚》是一幅安靜的圖畫。即將西下的太陽光撒在湖面上,湖上波光粼粼,泛著金光,波浪的漣漪一點點的散開。岸上的建筑物則安然有序,燈塔、圍墻、小房子,組成了這幅安靜的風(fēng)景圖。

          有人覺得這幅畫看上去冷清,過于安靜,是一幅悲傷的畫。

          有人覺得這幅畫陽光照耀四方,小屋整齊的立在一旁,是一幅和諧又溫暖的風(fēng)景畫。

          當(dāng)然,如果這些人知道這幅畫是用代碼畫的,可能就只會說這是一幅很漂亮的畫了。畢竟代碼聽上去就和藝術(shù)無關(guān),和情感表達(dá)無緣。

          此畫的作者本·埃文斯是一個網(wǎng)頁設(shè)計師,是一個前端開發(fā),也是一個插畫家。《索思沃爾德的夜晚》是他用層疊樣式表(CSS)畫的一幅作品。除了這幅畫,他還用 CSS 畫過大海,畫過撲克牌。

          和他一樣使用 CSS 畫畫的人也不止一個,近些年還有越來越多的趨勢。

          自由網(wǎng)絡(luò)開發(fā)者克里斯·帕特爾畫的辛普森一家是前些年的作品,只是近來才開始被人注意。在 GitHub 上,你可以輕易找到創(chuàng)作者的代碼,并在它的基礎(chǔ)上進行更改。

          當(dāng)你復(fù)制原作者的代碼,再稍以修改后,你就可以畫出屬于自己的辛普森。你還可以給他變色,讓他從透明變成黃色、藍(lán)色、綠色。

          在 CSS 作圖這個領(lǐng)域,數(shù)字藝術(shù)家戴安娜·史密斯則是一個不可忽略的先驅(qū)人物,他以 CSS 的巴洛克風(fēng)格作畫而聞名,創(chuàng)作過多幅 18 世紀(jì)復(fù)古風(fēng)格的作品,也畫過現(xiàn)實向的靜物海報。

          史密斯的作品從來不使用繪圖軟件,他只用手寫的 HTML / CSS代碼創(chuàng)建精美的圖片。作為一個每天 90% 的工作都圍繞著 JavaScript 工作的程序員,史密斯卻更喜歡 CSS 作畫,因為 CSS 有一些限制的規(guī)則。

          這只是我喜歡 CSS 的眾多原因之一。

          有限的規(guī)則正是它的樂趣所在,你不會期望 CSS 能滿足你所有的需求。這就是為什么當(dāng)你在 CSS 最終找到了一種(可以滿足你的)方法時,它就會變得更有價值。

          在工作之余,史密斯還會不斷回到 CSS 尋找藝術(shù)靈感,在限制之中創(chuàng)作新的藝術(shù)作品。

          因為一些關(guān)于這些限制的東西一直在召喚著我。當(dāng)我在說嚴(yán)格的限制是激發(fā)創(chuàng)造力的最佳催化劑時,我并不孤單。因為完全的藝術(shù)創(chuàng)作自由可能是一個令人麻痹的概念。

          02

          CSS 藝術(shù),讓每個瀏覽器都有自己的風(fēng)格

          值得一提的是,有限制的 CSS 圖畫不是一個完全靜態(tài)的藝術(shù)作品。不管是簡單的辛普森一家頭像畫還是精致的巴洛克肖像畫、風(fēng)景畫,他們都是會變化的。每個人可以通過改變開源的代碼來創(chuàng)作出自己的 CSS 圖畫。

          在此之外,選擇不同的瀏覽器打開圖像也會呈現(xiàn)不同的作品。作為實時呈現(xiàn)的圖畫,每個瀏覽器在加載頁面時都會將圖畫的代碼呈現(xiàn)為繪圖。

          而大多數(shù)的數(shù)字藝術(shù)家都是在 Chrome 瀏覽器上處理代碼的。所以除了 Chrome 瀏覽器能夠呈現(xiàn)圖片本身預(yù)想的畫作外,其它瀏覽器都會「畫」出不同的圖像。這也展示了不同瀏覽器轉(zhuǎn)換工作的差別。

          創(chuàng)作者說不考慮圖畫的兼容性問題,反而更有意思。

          由于這個項目的藝術(shù)性原因,我并不關(guān)心跨瀏覽器的兼容性,所以實時預(yù)覽可能在除 Chrome 之外的任何瀏覽器中看起來都很可笑。

          適配單一瀏覽器也有驚喜。當(dāng)我們將這些代碼放進不同瀏覽器的時候,有的圖像有了出乎意料的變化。

          Chrome 瀏覽器在羽毛和發(fā)絲的轉(zhuǎn)換上非常細(xì)致,展現(xiàn)了本身的細(xì)節(jié),Safari 瀏覽器則在部分高光的處理上有點過火,裙子也多了一條豎線。

          左為 Chrome 瀏覽器呈現(xiàn)效果,右為 Safari 瀏覽器呈現(xiàn)效果

          不過隨著時間往前移,我們用更多版本的瀏覽器配上 CSS 代碼圖畫時,呈現(xiàn)效果就會更特別。

          這幅畫本尊是這樣的:

          在 Safari 瀏覽器中,蕾絲的花邊裝飾直接蓋在了女人的臉上,看不出原圖。

          在 2014 版本的 Opera 瀏覽器中,畫作有了一種全然不同的風(fēng)格。

          脖子分成了三個部分,眉毛、頭發(fā)、眼睫毛的位置都出現(xiàn)了偏移和錯位,更條碼式。

          而 Edge 瀏覽器則自動消掉了畫作的棱角,使整幅圖畫更為平滑、陰沉。

          最后在上古時期的網(wǎng)景瀏覽器中,這位女士的嘴巴、眼睛等五官都變成了不同大小的方塊,有點樂高的感覺,風(fēng)格獨樹一幟。

          作為該領(lǐng)域的先驅(qū)人物,史密斯給這些圖畫的表現(xiàn)賦予了更多的意義:

          當(dāng)你在不同的瀏覽器上查看這張圖片時,你就像是在查看互聯(lián)網(wǎng)的歷史,以及當(dāng)時用戶對瀏覽器的要求。

          03

          CSS 畫出來的畫算藝術(shù)嗎?更像行為藝術(shù)

          代碼是冰冷的、理性的代表,它是沒有感情的。而畫作的藝術(shù)則能表達(dá)作者豐沛的情感和思想。但當(dāng)理性的代碼用來創(chuàng)作感性的畫作時,這一切會改變嗎?

          在一部分人看來,數(shù)字藝術(shù)是不能算作真正的藝術(shù)的。

          當(dāng)大片空白可以在瞬息間充滿五彩的色塊,渲染過度也能在強大工具的幫助下變得快捷且自然時,人們認(rèn)為這不再是藝術(shù)了。雖然數(shù)字化工具做的畫也可以很漂亮,很有創(chuàng)意,但人們會覺得它沒有「靈魂」。即使它能模仿油畫、水墨等不同風(fēng)格,但創(chuàng)造出的作品也稱不上藝術(shù)。

          這個問題甚至可以上升到「代碼是不是藝術(shù)」的問題上,深入討論一下藝術(shù)的定義和內(nèi)涵。

          在主流觀念中來,那些使用新工具去創(chuàng)作藝術(shù)作品的人不算正統(tǒng)藝術(shù)家。即便要稱為藝術(shù)家,也得在前面加上「數(shù)字」兩個字。在大眾的、觀念中,數(shù)字藝術(shù)家和傳統(tǒng)的藝術(shù)家涇渭分明,完全不同。即便這兩種藝術(shù)家在顯示生活中已經(jīng)有了很多工作的交織、身份的重合。

          對當(dāng)下的數(shù)字時代而言,隨著互聯(lián)網(wǎng)在我們生活中的滲透程度越來越深。每個人可能都會成為數(shù)字藝術(shù)家,在創(chuàng)作的過程中,都需要數(shù)字工具的幫助。

          而純粹用數(shù)字工具畫出的 CSS 作圖在可玩性、趣味性上都強于普通的藝術(shù)作品。即使我們不把它看作一個藝術(shù)杰作,它也是一個互聯(lián)網(wǎng)的行為藝術(shù)作品。

          它讓我們意識到自己生活在一個現(xiàn)實扭曲的文化泛濫時代,人與人之間很難獲得一致的事實版本。

          你看到的東西是由你的設(shè)備版本決定的,是和你選擇的數(shù)字工具有關(guān)的。當(dāng)我們看到的東西不一樣的時候,我們創(chuàng)作的東西也是不一樣的。

          CSS 作畫與其說是藝術(shù),不如說它讓我們看到了互聯(lián)網(wǎng)的一種能力,一次進程,一段歷史。

          本文作者 冷思真,首發(fā)于公眾號「AppSo」(ID:AppSo),這是一個讓你手機更好用的專業(yè)媒體,歡迎識別下方二維碼進行關(guān)注

          級別專業(yè)的多功能藝術(shù)動作,將您的照片變成令人印象深刻的水彩藝術(shù)作品,具有很多元素和選項,可以自定義和改進。非常詳細(xì)的結(jié)果,很多可能性。

          支持版本:

          PhotoShopCS3/4/5/6/CC/CC2014/CC2015/CC2015.5

          /CC2017/CC2018

          軟件語言:PhotoShop中文/英文

          提供方式:百度網(wǎng)盤

          獲取方式:請查看文章底部

          是不是很棒的特效,快來試試吧!

          動作獲取地址:http://www.zaotushi.com/archives/5457.html

          往期精彩推薦

          后期處理必備的PS擴展炫光面板

          50款PhotoShop插件合集,你要的PS插件,我都有!

          100集PS高級強化班教程,來吧,讓你的PS水平更上一層樓。


          主站蜘蛛池模板: 一区二区三区国模大胆| 国产aⅴ一区二区三区| 中文字幕在线一区二区在线| 日韩精品国产一区| 亚洲一区二区三区国产精华液| 制服丝袜一区二区三区| 亚洲第一区在线观看| 一区二区三区91| 久久精品日韩一区国产二区| 另类ts人妖一区二区三区| 精品无码一区二区三区爱欲九九| 射精专区一区二区朝鲜| 亚洲区精品久久一区二区三区| 国产成人精品一区二三区在线观看 | 亚洲av乱码中文一区二区三区| 鲁丝丝国产一区二区| 国产成人精品久久一区二区三区| 蜜臀AV免费一区二区三区| 国产在线aaa片一区二区99| 亚洲中文字幕无码一区| 亚洲日本中文字幕一区二区三区 | 日本一区二区三区在线视频| av在线亚洲欧洲日产一区二区| 国产剧情一区二区| 日本一区午夜爱爱| 中文字幕一区在线观看| 亚洲一区二区三区精品视频| 日韩精品视频一区二区三区| 亚洲AV午夜福利精品一区二区| 日本一道高清一区二区三区| 精品无码国产一区二区三区51安| 好吊妞视频一区二区| 无码人妻久久久一区二区三区| 精品一区二区久久| 国产视频一区二区在线观看| 精品少妇一区二区三区视频| 性色A码一区二区三区天美传媒| 亚洲丰满熟女一区二区v| 亚洲熟妇AV一区二区三区浪潮| 日韩在线一区二区三区视频| 日本视频一区二区三区|