秦緒佳,趙 錚,柯玲玲,鄭紅波,馬 驥
(浙江工業(yè)大學 計算機科學與技術學院, 杭州 310032)
E-mail:zhb@zjut.edu.cn
云可分為三大云族,十大云屬,是一種自然現(xiàn)象.它們是由聚集在空氣中的微塵周圍的水分子產(chǎn)生的水滴或冰晶散射產(chǎn)生的.云沒有特定的表面,也沒有清晰的邊界,且晶體結構時時刻刻都在變化,表面呈現(xiàn)出的透明度也不斷在改變.每一朵云都是不盡相同的,所以對云的可視化也是十分復雜的.現(xiàn)在存在的一些有不錯視覺效果的云仿真方法大多依賴于數(shù)學模型,而這些模型都十分復雜且計算成本相對較高.所以對三維云景的繪制要達到高效率和高仿真效果是當前計算機圖形學領域面臨的一大挑戰(zhàn).
對三維云的可視化在很多日常仿真應用中都是不可或缺的.在很多游戲中,尤其是在大型網(wǎng)游中,云仿真技術的水平對游戲場景的真實感影響極大,真實感較強的云仿真可以使場景更逼真,用戶的體驗感也會更好;在飛行視景仿真系統(tǒng)中,云層效果的真實以及良好的實時性也是至關重要的;在氣象研究中,真實的氣象數(shù)據(jù)可以反映真實的天氣情況,對氣象的研究、氣象的預報等都有極大的意義,云作為氣象數(shù)據(jù)中不可或缺的一部分,對真實氣象數(shù)據(jù)的深入研究和利用都十分重要.
想要得到真實性較高的云的顏色就需要模擬其內(nèi)部的光照效果.胡香等人[14]提出了一種利用云的多向前方散射特性建立的體云光照模型,效果逼真,與真云一樣具有銀色的邊緣.Xiaoyan Hu等人[15]提出了一種簡單的實時云建模與繪制方法,通過模擬云粒子在二維平面上的投影運動而形成云的密度,然后使用一種實時近似散射的算法來渲染.但這類模型忽略光的多向散射,只計算視點方向的外散射,只適用于描述低散射率的光照效果但不能處理云團等高散射率媒介的光散射問題.Zhengwei Sui等人[16]認為云是一個收集來自太陽光的粒子集合,而三維云是用八叉樹索引和粒子系統(tǒng)建模的,故使用散射光模型和廣告牌技術來渲染它.
開始先使用傳統(tǒng)的Ray Casting算法來繪制三維云,為了提高繪制和渲染的速度,還使用了光柵化求交、提前光線終止法和GPU加速等方式.因為所使用的網(wǎng)格數(shù)據(jù)精度不夠高、層級較少使得模擬數(shù)據(jù)在垂直方向上較為稀少,導致云表面十分粗糙、渲染缺乏真實性.為了改善這些問題,本文在傳統(tǒng)體繪制Ray Casting算法的基礎上,生成3D Perlin噪聲紋理并采樣,再和氣象數(shù)據(jù)的原始紋理以不同的比例進行融合.用這樣的方式對云表面產(chǎn)生隨機擾動,增加所繪制云的真實感.最后,因為涉及到材質(zhì)的各向異性,本文還使用了一種結合Cook Torrance光照模型和雙向反射分布函數(shù)(BRDF)的新的光照模型,以此來模擬光的散射,從而進一步增強仿真效果.
由于現(xiàn)在常用的光線投射算法三線性插值運算,需要基于GPU,會產(chǎn)生一定時延.所以本文利用GPU高效的浮點算術功能來加快渲染.首先把體數(shù)據(jù)載入到顯存之中,再用一個與其等大的三維紋理表示,其中和這個三位紋理相對應的集合對象被稱作代理幾何.這樣可以很好的解決GPU無法直接訪問內(nèi)存數(shù)據(jù)的問題.本章中Ray Casting算法的代理幾何為立方體,需要將其先轉(zhuǎn)換映射到三維球體上,最后和光線相交計算得到采樣點位置.
1)體數(shù)據(jù)源
氣象數(shù)據(jù)有結構化、規(guī)則的網(wǎng)格數(shù)據(jù),也有非結構化的散亂數(shù)據(jù).前者是通過天氣模型得到的;后者是利用氣象觀測得到的真實數(shù)據(jù).氣象觀測指的是研究測量和觀測地球大氣中溫度、濕度、大氣氣壓、降水、云量等氣象.非結構化的氣象觀測數(shù)據(jù)可通過插值、重采樣轉(zhuǎn)化成結構化數(shù)據(jù).
2)數(shù)據(jù)格式
本文利用通過氣象觀測得到的真實數(shù)據(jù)作為研究數(shù)據(jù)源.該數(shù)據(jù)源涉及到相對濕度、降水量、雷達數(shù)據(jù)等.其中相對濕度使用的數(shù)據(jù)集是在不同的壓強下每3小時進行一次采樣獲得,以0時為起點,總共獲得80個樣本.一共有361×181個格點數(shù)據(jù),每個格點占據(jù)4個字節(jié),存儲的是單精度的浮點數(shù).
圖1 相對濕度預報格點數(shù)據(jù)實例Fig.1 An example of grid data for relative humidity prediction
圖1為本實驗所用到的一個相對濕度預報格點數(shù)據(jù)實例.前4行為數(shù)據(jù)頭,存儲的是數(shù)據(jù)類型、描述信息、數(shù)據(jù)采樣的相關信息以及數(shù)據(jù)經(jīng)緯度的相關信息等.從第5行開始存儲數(shù)據(jù)部分,數(shù)據(jù)按先緯度向后經(jīng)度的順序存放.圖1中所示數(shù)據(jù)是106類數(shù)據(jù),該數(shù)據(jù)的描述信息為“T799模式2017年06月04日20時00分200hPa相對濕度030小時預報(0602)”.該數(shù)據(jù)是從2017年6月4日20:00開始采樣的,并且在200百帕壓強的條件一共采樣了30小時.數(shù)據(jù)采樣從經(jīng)度0°,緯度360°開始,到經(jīng)度-90°,緯度90°,每隔1經(jīng)度、1緯度采樣.將繪制球面分成361×181個格點,從最小等值線值-20到最大等值線值110每隔10個單位長度繪制.之后的數(shù)據(jù)即每個格點內(nèi)的相對濕度值.
本實驗中需要用到三維體數(shù)據(jù),而使用的數(shù)據(jù)源是多層二維網(wǎng)格數(shù)據(jù).故將這些數(shù)據(jù)垂直逐層疊加形成三維空間的體數(shù)據(jù).再將格點數(shù)據(jù)映射到灰度圖上,經(jīng)過歸一化處理后得到的數(shù)據(jù)將用于下文研究.
基于GPU的Ray Casting可以分為5個部分,繪制、歸一化、計算、采樣最后繪制到網(wǎng)格上.其具體描述如下:
1)繪制六面體包圍盒,將所使用的氣象體數(shù)據(jù)源中的網(wǎng)格坐標轉(zhuǎn)化為三維球體上的經(jīng)緯度.
2)將二維網(wǎng)格數(shù)據(jù)垂直疊加得到的三維體數(shù)據(jù)進行歸一化處理后做成三維紋理,傳到著色器shader中.
3)確認投射光線傳播的方向以及光線在該方向上前進的最遠傳播距離.
首先要找到光線穿過體紋理時和距離視點最近以及最遠的兩個面的交點,這兩個交點分別為光線的出點和入點.如何計算得到出入點是影響整個算法性能的一個關鍵點,光柵化以及光線/包圍盒交叉測試這兩種方法都可以求得交點,相比較而言前者的效率會更高,故本文采用這種方式來計算出入點.
4)沿著射線前進方向進行等距離的采樣,并累計計算該方向的不透明度以及顏色值.
為了使繪制速度更快,本文參考了Levoy等提出的提前光線終止法[17],當累計的不透明度達到閾值0.99時就終止計算.
5)最后生成一個二維網(wǎng)格面片,將該面片轉(zhuǎn)換為球坐標后包裹球體,并在該網(wǎng)格面上繪制前面累計的像素值.
在三維可視化中要實現(xiàn)降噪有很多方法,周天琪等人[18]提出了一種將三維數(shù)據(jù)分為多個相鄰二維切片數(shù)據(jù)分成降噪的算法.本文使用的是生成3D Perlin噪聲紋理,將任意的一點p(x,y,z)輸入到已知的三維網(wǎng)格數(shù)據(jù)空間中,并為附近的網(wǎng)格點都設置偽隨機梯度向量.Perlin首先提出了將256個偽隨機梯度向量預先存儲在一個二維數(shù)組G[256][3]之中,然后將0~255這256個數(shù)字隨機放入一個一維排列數(shù)組P[256]中,再用式子G[P[P[x]+y]+z]來得到最終的隨機梯度向量值.后來Perlin又提出了兩點改進:
1)構造新的緩和曲線函數(shù)f(x)=6x5-15x4+10x3代替先前的緩和曲線函數(shù)f(x)=3x2-2x3可以得到更加的平滑的噪聲值.
2)如圖2所示,以p為基準點,圍繞p最近的8個網(wǎng)格點形成一個單位立方體,點p指向立方體12條邊中點構成12個向量.用這12個向量代替先前方法中的隨機梯度向量,最終的隨機梯度向量由公式G[p[p[p[x]+y]+z]]計算得到.采用這種方式得到的隨機梯度向量雖然不是完全隨機的,但能消除梯度中的方向偏差.
圖2 三維方格Fig.2 Three dimensional grid
本文在生成偽隨機梯度向量時,加入了以上2點后再生成3D Perlin噪聲.
在求點積和加權平均值的過程中,首先將x-x0,y-y0,z-z0分別代入緩和函數(shù)f(x)中,得到比例系數(shù):
(1)
再以p(x,y,z)為起點,以相鄰8個網(wǎng)格端點為終點,分別生成向量:
(2)
以點p為起點,12條邊中點為終點,生成12個向量:
(1,1,0),(-1,1,0),(1,-1,0),(-1,-1,0),
(1,0,1),(-1,0,1),(1,0,-1),(-1,0,1),
(0,1,1),(0,-1,1),(0,1,-1),(0,-1,-1)
將公式(2)中的每一個向量作為輸入,并與上述偽隨機向量中的某個進行點積運算,得到:
(3)
再將這些隨機生成的離散點進行插值運算,以得到連續(xù)的噪聲波.經(jīng)典Perlin噪聲使用的是線性插值,但本文使用的是余弦插值.因為余弦插值函數(shù)可以得到更加平滑的噪聲,并且計算相對簡單,可以很好的替代線性插值函數(shù).
利用余弦插值計算出圖2中點A1、A2、A3、A4的值為:
(4)
其中i=1-cos(sy×PI)×0.5.
利用余弦插值計算出圖2中點B1、B2的值為:
(5)
其中i=1-cos(sz×PI)×0.5.
利用余弦插值計算出圖2中點C的值即為最終結果,其值為:
Noise(x,y,z)=z0×(1-i)+z1i
(6)
其中i=1-cos(sz×PI)×0.5.注意公式(4)-公式(6)中的PI值均約等于3.1415927.
將光線投射時在體數(shù)據(jù)紋理上采樣得到的基礎值記作Valuesrc,其中體數(shù)據(jù)紋理是由氣象數(shù)據(jù)生成,記作texVolume_.在這個基礎值Valuesrc上加一個隨機抖動,首先要在3D Perlin噪聲生成的噪聲紋理上采樣,采樣得到的噪聲紋理記作texNoise_.再分別獲取x、y、z方向上的微量偏移,記作Valuejitter.將Valuejitter和Valuesrc線性疊加,得到采樣值Value.如公式(7)所示,其中rf為控制噪聲對采樣結果影響大小的調(diào)節(jié)因子:
Value=Valuesrc×(1-rf)+Valuejitter×rf
(7)
最后將Value帶入映射函數(shù)得到顏色以及透明度,并沿著射線前進方向累加,最后得到合成圖像.
常見的簡單著色模型都是將需要著色的平面認定為光滑的,這些平面只需要一個法向量就可以表示其方向;但微平面模型是將需要著色的平面認定為由無數(shù)個微小光滑平面組成的,這些微小平面遠小于入射光線所涉及的區(qū)域.顯然,微平面模型不可能只用一個法向量來表示.微平面模型需要用一個概率分布函數(shù)來描述,這個概率分布函數(shù)可以計算微平面中某個方向上著色區(qū)域存在的可能性大小.微平面的斜率變化大小可以很好的表現(xiàn)出待著色平面的粗糙程度.Cook-Torrance模型就可以很好的體現(xiàn)微平面的特性.
本文采用Cook-Torrance BRDF模型來近似模擬物體受到光照時由物其自身材質(zhì)決定的散射的輻射量以及鏡面反射的多少.該BRDF函數(shù)表示見公式(8):
fr=kdflambert+ksfcook-torrance
(8)
漫反射部分由flambert表示,鏡面反射部分由fcook-torrance表示.用kd來衡量給定物體自身材質(zhì)表現(xiàn)出擴散行為,值越高其擴散行為越強烈;用ks來衡量物體表現(xiàn)出的行為是否接近鏡子,值越高越接近.
由于現(xiàn)實中存在的材質(zhì)接受能量一定不少于其反射的能量,故所有BRDF的權重和必須小于等于1,見公式(9):
(9)
并且為了不過多消耗能量,需要始終保證kd+ks≤1.
Ward BRDF經(jīng)驗模型由漫反射和鏡面反射組成.其中漫反射用Lambert項表示,鏡面反射用橢圓高斯函數(shù)表示[19],見公式(10)所示:
(10)
公式(10)中,單位矢量i表示入射的方向,o表示觀察的方向,h表示入射方向和觀察方向之間的半角矢量.θi表示相對于法線n的入射角度,θo表示相對于法線n的觀察角度,θh表示相對于發(fā)現(xiàn)n的半角矢量角度.φh為投射到表面微平面上的半角矢量的方位角,ρd為漫反射率,ρs為鏡面反射率.x軸和y軸在表面的切平面中,各向異性由橢圓高斯分布函數(shù)表示,并由σx和σy這兩個粗糙參數(shù)的垂直斜率分布定義該函數(shù).其中表面粗糙大于沿其垂直方向的方向為x軸的方向,即σx≥σy.
本文學習Ward BRDF的經(jīng)驗模型,借鑒其漫反射部分,對fcook-torrance定義見公式(11):
(11)
式中D為微平面分布函數(shù),該分布函數(shù)表示在指定點處微小平面的統(tǒng)計方向;雖然Phong函數(shù)和Beckmann函數(shù)都可以表示微平面的分布,但相對而言,GGX分布[20]有更強的尾部,從而產(chǎn)生更多的陰影,故本文借鑒Walter等人文章中提出的GGX分布[20],其定義見公式(12):
(12)
(13)
其中r表示曲面的粗糙度,范圍在0-1之間(包括0和1);m是要檢查的方向矢量.
G表示由于微平面彼此遮擋所造成的光衰減.它近似模擬了繪制過程中在指定的微平面上與鄰近幾個微平面之間彼此遮掩光線和相互反彈光線的影響,由此計算在到達人眼之前這一系列過程中能量消耗的概率.
在微平面上反射光有以下3種現(xiàn)象,分別為入射光沒有受到遮掩,100%的光照都到達觀測人員眼睛;入射光被遮掩了一部分;以及反射光被遮掩了一部分.
幾何函數(shù)G與GGX分布的D配對,見公式(14)所示:
(14)
隨著r的值越來越大,即粗糙程度的增大,光線被遮擋的程度也不斷增加.
公式(11)中F表示菲涅耳函數(shù),該函數(shù)模擬了光在不同角度下和平面相互作用的方式.Shlick C[21]提出了一個可以快速評估得到結果的方式,公式(15)即為其近似模擬公式:
(15)
公式(15)中,θ表示人眼觀察方向和半角矢量的夾角;η1和η2分別是兩種不同介質(zhì)的折射率.公式(15)表示光從具有不同折射率的電介質(zhì)材料之間穿過后的相互作用.
本文設定光線射出介質(zhì)為空氣或真空,借鑒文獻[22]提出的近似模擬公式,見公式(16):
(16)
公式(16)中,θ表示人眼觀察方向和半角矢量之間的角度,η表示材質(zhì)的折射率,k表示材質(zhì)的吸收系數(shù).圖3是運用導體菲涅爾系數(shù)得出的實驗效果圖.
在圖3(a)和圖3(b)中,η的取值從最左邊開始,分別為1.2、1.5、1.8和2.4.圖3明顯的可以發(fā)現(xiàn),兩個函數(shù)得到的效果差異較大,由于太陽光照射到云的表面,穿過的介質(zhì)是大氣,所以本文中Cook-Torrance BRDF光照模型采用導體菲涅爾系數(shù).
圖3 導體菲涅爾系數(shù)近似實驗Fig.3 Conducting Fresnel coefficient approximation experiment
因此,Cook-Torrance BRDF光照模型可由式(17)近似表示:
(17)
本文使用了基于GPU的Ray Casting算法繪制三維云,并為了繪制的真實感,結合了紋理抖動和BRDF.首先生成3D柏林噪聲紋理,與實測氣象體數(shù)據(jù)紋理進行不同比例的融合,從而實現(xiàn)對云表面的隨機抖動效果,得到采樣值;然后將該采樣值與新的光照模型Cook Torrance BRDF相結合,對顏色和透明度值在射線前進方向進行累計,增加光照的效果.最終繪制出來的三維云相比較先前的效果,云顯得更加柔和、更立體和真實.本文改進云繪制算法的詳細描述如算法1所示.
算法1.
輸入:通過氣象觀測得到的預報數(shù)據(jù),本文使用相對濕度預報格點數(shù)據(jù)作為樣例,記作Vrh
輸出:采樣點的顏色值記作C,不透明度記作O
步驟1.將多層二維網(wǎng)格數(shù)據(jù)Vrh,映射到灰度圖上并做歸一化處理;
步驟2.繪制六面體包圍盒,將所使用的氣象體數(shù)據(jù)源Vrh中的網(wǎng)格坐標轉(zhuǎn)化為三維球體上的經(jīng)緯度;
步驟3.通過光柵化求交計算光線穿過體紋理時和距離視點最近以及最遠的兩個面的交點,即入點和出點,從而相減得到光線傳播方向;
步驟4.將多層相對濕度格點數(shù)據(jù)Vrh做成的體紋理texVolume_,利用3D Perlin噪聲函數(shù)生成的噪聲紋理texNoise3D_以及在配置文件里讀取的顏色數(shù)組做成的紋理texTF_一起傳入著色器中,其中3個紋理大小一致;
步驟5.沿光線傳播方向每隔相同距離進行采樣,將從texVolume_采樣得到的Valuesrc,和從texNoise3D_采樣得到的Valuejitter做線性疊加,并用調(diào)節(jié)因子rf控制噪聲對采樣結果的影響,得到最終的采樣值Value=Valuesrc×(1-rf)+Valuejitter×rf,還可以通過調(diào)整采樣間距來控制三維云的細膩程度;
步驟6.根據(jù)前面步驟所得到的采樣值從texTF_中獲取顏色值Csrc,再計算環(huán)境光ambient和漫反射光diffuse的效應,并且根據(jù)Cook-Torrance光照模型計算出鏡面反射效應specular,將ambient、diffuse和specular這3者疊加起來后與Csrc關聯(lián),得到相應采樣點的顏色值C;
步驟7.對采樣點的顏色值C和不透明度O進行累計,并設一個閾值來控制不透明度,本實驗中將其值設為0.99,為了進一步提高本實驗的效率,本文還設定了采樣最大步數(shù)的累計值maxSteps來提前終止采樣,以防重復采樣.
本實驗使用實際觀測得到的相對濕度數(shù)據(jù)為輸入,基于GPU繪制三維云景,并且使用了提前光線終止和光柵化求交等加速方法優(yōu)化得到的效果如圖4所示,圖4(a)是繪制在3D數(shù)字球體上的全局圖,圖4(b)是相應局部的放大圖.
圖4 實驗所繪三維云效果展示Fig.4 3d cloud effect is shown in the experiment
從圖4可見,使用相對濕度數(shù)據(jù)繪制出的云景,云面沒有太多層次感,且缺乏三維感,不夠真實.
圖5中,圖5(a)為沒有應用噪聲紋理的三維云繪制效果及局部擴大圖,圖5(b)、圖5(c)和圖5(d)分別表示在調(diào)節(jié)因子rf為0.05,0.1,0.15下噪聲紋理應用至采樣過程的云景繪制效果及局部擴大圖.比較圖5(a)和圖5(b),可以看到圖5(a)中云表面的細節(jié)沒有圖5(b)中云的豐富,但圖5(b)中噪聲干擾效果并不明顯.觀察比較圖5(b)、圖5(c)和圖5(d)可以看出,隨著調(diào)節(jié)因子增大,噪聲紋理對采樣結果值以及三維云繪制效果的影響也不斷增強.從圖中左下角的局部放大圖來看,隨著調(diào)節(jié)因子的逐漸增大,云塊的邊緣愈加的清晰,云面也愈加的柔和,真實感也隨著愈加的強烈了.
圖5 不同大小調(diào)節(jié)因子所繪三維云Fig.5 Rendering effects of different adjustment factors
比較5(d)和圖5(e)可以發(fā)現(xiàn),如果調(diào)節(jié)因子一直增大,直到一定程度時,云面雖然十分柔和,但會丟失不少細節(jié)(圖中框住的小塊區(qū)域放大至右上角來看),導致整體效果反而更缺乏真實性.如當調(diào)節(jié)因子增加到0.2時(如圖5(f)),三維云表面的細節(jié)幾乎完全丟失.所以應用噪聲紋理繪制云景時必須控制好調(diào)節(jié)因子,才能既保持了較強的真實感,又可以不丟失云面的細節(jié).
本文實驗在繪制云過程中加入了隨機抖動,對三維云應用了3種光照模型,包括了2種經(jīng)典光照模型,還有本文中提到的Cook-Torrance BRDF.實驗過程中,使用了361×181的規(guī)則網(wǎng)格數(shù)據(jù),經(jīng)緯密度間隔為1.0;材質(zhì)折射率為2.4吸收系數(shù)為1.2.截取的三維云局部效果圖如圖6所示.
圖6 3種光照模型效果對比Fig.6 Comparison of rendering effects of three illumination models
圖6(a)為沒有添加任何光照模型的效果,圖6(b)為添加了Blinn Phong光照模型的效果,圖6(c)為添加了Phong光照模型的效果、圖6(d)為添加了Cook-Torrance BRDF光照模型的效果.對比圖6(b)、圖6(c)和圖6(a),無光照模型采用單一顏色賦值,色彩層次不足.Phone光照模型根據(jù)其反射光線方向和觀察發(fā)現(xiàn)方向的夾角計算鏡面瓣,因此在光照方向和觀察方向一致時具有偽影(圖6(c)中框選位置).Blinn Phong光照模型利用中間向量和觀察方向計算鏡面瓣,消除了這種偽影.但是Phone和Blinn Phone光照模型都是基于經(jīng)驗性的,Cook-Torrance BRDF光照模型基于物理的特性使其能夠正確的計算光照,而不會引入偽影.可以發(fā)現(xiàn)Cook-Torrance BRDF光照模型應用的三維云繪制效果,與應用Phong模型所繪制出來的感覺十分相似,在云的細節(jié)上有很好的體現(xiàn)并且所繪制的云景不會給用戶太過于藝術的感官體驗;除此之外,Cook-Torrance BRDF光照模型還和Blinn Phong模型一樣有強立體感.
本文實驗在Windows10的Visual Studio2010的編程環(huán)境下實現(xiàn),相關計算機硬件配置如下:8核Intel(R)Core(TM)i5-8300H的處理器,8.0GB內(nèi)存,GTX 1060的GPU以及4.0GB顯存.實驗中使用了phong、Blinn Phong以及Cook-Torrance BRDF這3種不同光照模型分別以同一尺度的相對濕度進行繪制,可以發(fā)現(xiàn)3種模型下繪制的計算量相差不大,但本文提出的Cook-Torrance BRDF光照模型的繪制效率略有提升,且繪制效果也有一定改善.
本文使用實際探測到的氣象數(shù)據(jù),首先利用Ray Casting算法繪制三維云.但因為網(wǎng)格數(shù)據(jù)在垂直方向上比較少,導致所繪制的云效果不佳,立體感不夠,在細節(jié)上較粗糙.為了改善這些情況,本文將3D Perlin噪聲做成紋理對繪制的云面產(chǎn)生隨機抖動,并在生成3D Perlin噪聲時,加入Perlin的兩點改進意見,且為了使插值運算得到的結果更加的平滑,使用了余弦插值來優(yōu)化.從結果可以看到,紋理噪聲抖動之后的云面看起來更加柔和,也更具有真實感.又考慮到云在陽光充足時看上去會更明亮,因而本文在繪制過程中,嘗試了不同的光照模型來模擬,并對其產(chǎn)生的效果進行了對比.從結果可以看到Phong光照模型和Blinn Phong光照模型藝術感過強且立體感不夠.而本文提出的新光照模型,Cook Torrance BRDF光照模型充分考慮到材質(zhì)的各向異性,可以使得繪制出的云更具真實感及立體感,且繪制速度并沒有降低.