• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于GPU 的實時毛皮渲染及優(yōu)化

      2022-10-15 02:08方澤華溫佩賢李學闊杜曉榮
      現代電子技術 2022年20期
      關鍵詞:環(huán)境光法線毛皮

      方澤華,楊 林,溫佩賢,李學闊,杜曉榮

      (1.中山大學,廣東 珠海 519000;2.金山網絡科技有限公司,廣東 珠海 519000)

      0 引 言

      毛茸茸的毛皮是自然界中大部分物體的一大重要特征,其本質是由許多非常細小的毛發(fā)所組成,數量龐大,使得計算模擬變得十分困難、復雜。因此,如何高效地渲染出具有真實感的毛皮一直是許多圖形學領域不可避免的一大難題。

      自2000 年來,隨著硬件高速發(fā)展,許多三維動畫制作采用幾何建模的方式來模擬頭發(fā),使用細長的圓錐體或面片表示一根毛發(fā),并結合高精度的光線追蹤算法來模擬每一根毛發(fā)上的光照,得到了十分逼真的毛皮效果。然而,這種方法計算量十分龐大,只能應用在離線渲染中,無法滿足實時渲染的要求。

      為了解決毛皮實時渲染問題,需要簡化毛皮模型。Lengyel 提供了一種通過多層紋理渲染模擬毛皮的方法,其原理是對每根毛發(fā)分層采樣成毛發(fā)切片并記錄下來,在渲染時逐層繪制毛發(fā)切片,通過多層毛發(fā)切片的像素點疊加模擬出毛茸茸的毛皮效果。其所有運算可以在GPU 下完成,得益于GPU 強大的并行運算能力,該方法具有良好的渲染效率。但是文獻[5]方法的分層切片實現方法和光照計算模型十分落后,無法很好地模擬出真實的毛發(fā)且占用的繪制資源較多,還有很大的改進空間。Silva 等在上述切片方法的基礎上,提出了用二維貼圖記錄毛發(fā)切片信息和毛發(fā)偏移,減少了繪制資源占用并模擬出了毛發(fā)的受力效果。本文將基于多層渲染方法,結合環(huán)境光遮蔽、各向異性高光等光照算法提出新的光照模型,并加以改進優(yōu)化,以達到真實性與性能的平衡。

      1 多層紋理渲染

      如圖1 所示,多層紋理渲染方法先是對表示毛發(fā)的圓錐體逐層采樣,并將每一層的切片范圍映射到一張二維貼圖的不透明度通道上,形成不透明度由中心向外逐漸遞減的噪點,表示一根毛發(fā)。渲染時,由里向外逐層繪制網格,每一層網格都是從模型表面沿著給定的偏移方向平移一定距離形成的,并且有給定的不透明度閾值,不透明度不在閾值范圍內的像素點會被裁剪,以此渲染出每一層對應的切片。

      圖1 不透明度映射生成毛發(fā)切片

      根據以上原理,生成一張充滿毛發(fā)噪點的二維貼圖,如圖2a)所示;由內到外采樣生成各層毛發(fā)切片,見圖2b);如圖2c)所示,逐層混合渲染后,即可獲得毛茸茸的毛發(fā)效果。通過調整網格或者貼圖在每一層的偏移方向,可以控制毛發(fā)的生長方向,由此可以實現圖2d)中的毛發(fā)受力效果。

      圖2 分層渲染效果

      2 光照模型

      實現毛發(fā)渲染效果后,需要模擬真實的毛發(fā)光照。因為毛皮材質的特殊性,其光照模型比較復雜,下文將分別從毛發(fā)的漫反射光、環(huán)境光照、高光三方面闡述毛發(fā)光照模型的實現。

      2.1 漫反射光

      毛發(fā)漫反射采用經典的線性蘭伯特光照模型,如下:

      式中:表示法線方向;表示光照方向;k表示漫反射光的顏色;為漫反射光的光照度。

      蘭伯特光照模型適用于平坦均勻的表面,如圖3a)所示,其渲染效果缺乏毛皮的特征。毛皮表面充滿了細小的毛發(fā),當光線照射到毛皮的表面時,由于毛發(fā)間相互遮擋,光線發(fā)生衰減,從而形成毛發(fā)間的陰影,這種現象稱為毛發(fā)自陰影現象,是毛發(fā)的一大重要特征。為了模擬毛發(fā)的自陰影現象,光照強度需要逐層遞減,而由于毛發(fā)之間存在縫隙,在邊沿處會有一定的透光性。

      為了模擬毛發(fā)的自陰影現象和透光性,需要引入2 個變量:光照衰減系數與光照通透系數,公式如下:

      層光照衰減系數由外層向內層逐層遞增,層光照通透系數由外層向內層逐層遞減,衰減速率和通透速率控制每一層的遞進速率,改進后每層切片的漫反射公式為:

      如圖3b)所示,改進后的漫反射光照有了毛發(fā)間自陰影,由發(fā)尖向發(fā)根逐漸變深,突出了毛發(fā)的層次感,陰影邊沿處也有光線透過,顯得毛發(fā)更加通透,接近現實的毛發(fā)漫反射。

      圖3 漫反射改進

      2.2 環(huán)境光照

      環(huán)境光照是指模型所在的場景中由于光的反射而出現的光照,非直射光源的光照在經典光照模型中一般是用一個光照常量或者是光照球來模擬,無環(huán)境光遮蔽的毛發(fā)圖片如圖4a)所示。但是由于物體間相互遮擋,環(huán)境光會有相應的衰減,環(huán)境光遮蔽技術就是用來模擬這種光照衰減。

      圖4 環(huán)境光照改進

      由于毛發(fā)縱橫交錯,目前主流毛發(fā)環(huán)境光遮蔽采用體素取樣的方法,通過體素劃分將毛發(fā)劃分成一塊塊小區(qū)域,并取樣計算出該區(qū)域的毛發(fā)密度及深度,繼而算出該區(qū)域的遮蔽因子,從而實現環(huán)境光遮蔽。

      對于多層紋理毛發(fā)渲染模型,可以用層數代替深度值簡化毛發(fā)切片上的環(huán)境光遮蔽因子采樣計算過程,簡化后每層毛發(fā)切片環(huán)境光公式如下:

      式中:k為環(huán)境光顏色;為環(huán)境光的光照強度;為每一層遮蔽因子的遞進速率,通過插值計算可以使每一層的顏色過渡變得更加平滑。圖4b)中,加入環(huán)境光遮蔽后,毛發(fā)有了層次感。

      由于毛發(fā)具有通透性,且發(fā)尖部分密度低、透光性更強,在輪廓邊沿處需要補充一定的光照,因此加入Schlick 菲涅爾近似等式計算補充的輪廓光,并結合環(huán)境光遮蔽,公式如下:

      如圖4c)所示,結合環(huán)境光遮蔽和輪廓光后的環(huán)境光照下,毛發(fā)顯得通透且富有層次感,接近與真實的毛發(fā)效果。

      2.3 高 光

      由于微觀角度下毛發(fā)可以簡化成一根直徑很小的圓柱,毛發(fā)每一片切片上的高光可以視作切片上各個點的高光積分,而每一個點的法線方向都不一樣,因此形成了毛發(fā)獨特的高光,這樣的毛發(fā)高光也就被稱為各向異性高光。

      針對毛發(fā)的各向異性高光,Kajiya 等基于Blinn-Phong 光照模型,提出通過向毛發(fā)切片橫截面的切線方向偏移法線獲取其中當前點的高光權重最大的法線,計算當前點的高光的毛發(fā)光照模型。由于橫截面上有各個方向的法線,難以定位高光權重最大的法線,而毛發(fā)切片橫截面的垂向方向切線垂直于橫截面上的任意法線,Kajiya 以此提出使用切線與中間向量的正弦值替代計算法線與中間向量的余弦值,公式如下:

      然而毛發(fā)纖維并不是單純的光滑圓柱體,顯微鏡下毛發(fā)纖維表面上有著粗糙的鱗片相互層疊,鱗片結構之下是毛髓質,光線會在毛髓質內折射后再次出射,還會多次反射后再次出射,存在多條傳播路徑,形成毛發(fā)復雜的光照。為了模擬光線進入毛髓質之后經過折射再次出射這條光路,需要在原來高光的基礎上再加一層明度偏低飽和度偏高的高光。相比于圖5a)的單層高光,圖5b)中改進之后的毛發(fā)高光更顯真實。

      圖5 毛發(fā)高光改進

      2.4 Gamma 校正

      Gamma 校正原理如圖6 所示。將上述光照模型的計算結果整合到一起后,得出如圖7a)所示效果,但是在線性色彩空間下毛球的暗部過于偏暗,這是由于人對自然光照下灰階的主觀感知并不是呈線性關系,而是圖6 中的冪函數關系,因此對于線性輸出的色彩會產生暗部過渡偏暗和亮部過渡偏亮的感知。為了能看到正確的均勻灰階,需要在輸出時進行Gamma 校正,將色彩從線性空間轉換到Gamma 空間中。

      圖6 Gamma 校正原理

      Gamma 校正公式如下:

      經過Gamma 校正后,最終效果如圖7b)所示。

      圖7 校正前后效果對比

      3 算法框架

      基于第1.2 節(jié)的闡述,本文提出的實時毛皮渲染算法框架如下:

      ALGORITHM 1:Real-time Fur Rendering and Lighting

      Input:vertex,normal,force that effect on fur,lights that effect on fur

      Output:the lighting result for each layer()

      1. for= 0 to layerCount do

      2. depth ←calculate the layer depth for layer

      3. alpha ←CalcCurrentPixelAlpha(depth)

      4. V←+ FurGrowDirection(depth,,)

      5. //Calculate Lighting:

      6. for every light L∈do

      7. //Calculate Diffuse Lighting:

      8.←calculate the fill-in light in layer

      9.←calculate the light attenuation in layer

      10.()←Saturate(·L+-)

      11. //Calculate Ambient Lighting:

      12.←CalcOcclusionFactor(depth)

      13. l←Lerp(0,CalcAmbientAttenuation(depth),)

      14.← Max(0,Min(1,rimBias+rimScale*((1-(·))*)))

      15.()←l+

      16. //Calculate Specular Lighting:

      17.←Normalize(+)

      18.←(1-Normalize(+primaryShift*)·)

      19.←(1-Normalize(+secondaryShift*)·)

      20.()←+

      21.()←()+()+()+()

      22. end for

      23.()←LinearToGammaSpace(())

      24. end for

      4 優(yōu) 化

      毛發(fā)切片之間存在縫隙,需要通過大量層數疊加才能模擬出精細的頭發(fā)效果,但是這也就導致了毛發(fā)切片所在的像素會被多次重復繪制,占用大量GPU 資源,從而在移動端等GPU 資源匱乏的硬件上造成性能瓶頸。為了解決重復繪制過多問題,需要減少繪制毛發(fā)切片的層數。原本的多層渲染中,毛發(fā)是被視作圓錐體進行切片,透明度閾值與切片層數呈線性關系,這也導致了中層到外層的切片透明度偏低,從而在切片層數少的情況下會出現失真,如圖8a),b)所示。

      圖8 優(yōu)化效果

      因此需要調整切片的透明度閾值衰減曲線,采用二次曲線關系以減緩透明度閾值的衰減速度。如圖9 所示,改進后衰減曲線在中上層的衰減速度明顯減緩。調整衰減曲線后,中層毛發(fā)切片的透明度明顯提高,如圖8c)所示,優(yōu)化后能以1/ 3 的層數取得不錯的毛發(fā)效果,重復繪制導致的渲染壓力也明顯減少。

      圖9 衰減曲線改進

      5 結 語

      基于多層紋理渲染方法,結合多個光照模型,本文闡述了一種高效的毛皮渲染方法,能夠很好地模擬短小毛發(fā)的光照,提高毛皮的真實感效果。同時提出了優(yōu)化透明度閾值衰減曲線的方案,減少了模擬毛發(fā)所需的繪制層數,使得這種技術可適用于移動端等GPU 資源匱乏的平臺中。本文研究對于毛皮材質在游戲、動畫、虛擬現實等領域的應用有重要的價值。

      猜你喜歡
      環(huán)境光法線毛皮
      基于定位法線的工件自由度判定方法及應用
      單幀圖像下的環(huán)境光遮蔽估計
      橢圓法線定理的逆定理
      基于LCD顯示器光譜特性的圖像顏色一致性研究
      近期國內毛皮市場最新行情
      近期國內毛皮市場最新行情
      雙曲螺線的副法線曲面的相關性質研究*
      美信推出集成七個傳感器的IC,可檢測RGB、紅外線等
      智能屏變:筆記本環(huán)境感光技術
      三談等軸雙曲線的典型性質
      齐齐哈尔市| 锦屏县| 焦作市| 绥化市| 锦屏县| 新兴县| 阳泉市| 祥云县| 彭阳县| 壶关县| 凤凰县| 内丘县| 尼勒克县| 河津市| 凤山市| 上思县| 敦煌市| 东辽县| 鹿泉市| 卢氏县| 珠海市| 舞阳县| 集贤县| 房产| 和平区| 横峰县| 七台河市| 永州市| 安阳市| 平塘县| 荔波县| 松溪县| 漠河县| 康定县| 盐亭县| 寻乌县| 赤城县| 高青县| 台北县| 新丰县| 通州市|