?

基于紋理的場景復雜光照實時繪制

2020-11-10 07:52
智能計算機與應用 2020年5期
關鍵詞:紋理光照繪制

李 綱

(川北醫學院 計算機與數學教研室, 四川 南充637007)

0 引 言

在虛擬機場的圖形應用中,為了加強虛擬機場場景畫面真實性,做到與真實機場場景類似的光照效果。 不僅要能夠模擬白天的機場場面,還要能夠隨著時間的推移,從白天的場景過渡到夜間場景。而早晨和黃昏以及夜晚場景中存在復雜多樣的局部燈光光照場景,諸如地面建筑、電燈或廣告牌等在晚上發出的局部燈光,高桿燈的照明對周圍局部地面和建筑的照明效果,候機樓大廳發射出的燈光等。整個場景夜間有著較為復雜的多燈光局部照明情況,對其的真實模擬比較困難。 虛擬仿真應用對場景渲染的實時性也有較高要求。

計算機圖形學中的全局光照算法通過基于物理的渲染方程對場景中逐像素地進行光照計算[1-4],能夠對場景做到模擬真實的光照,由于需要進行多次反復計算光子的運動和反射,雖然能夠獲得較好的全局光照效果,但在場景范圍大的情況下,光照計算需要消耗大量的時間。 由于虛擬機場場景里面有大量不同類型的光源,要做到對這些光源的光照按物理光照原理進行模擬,需要的時間難以滿足虛擬現實應用對繪制畫面的實時性要求[5-6]。 近年來,有研究人員在全局光照方法實時化方面做了一些工作,但仍然存在許多局限性。 通過體素錐追蹤的方式進行了交互式的間接光照渲染,但其幀率只有5-30 幀/s[7]。 李用CPU 上通過Phong 光照模型預計算多光源的光照圖,用GPU 計算間接光照并結合光照圖合成最后的圖像,在3 個光源的情況下,紋理大小為1024 × 1024,屏幕分辨率1440 × 900 時,最高幀率只有26 幀/s[8]。 在全局光照實時化方面也有很多研究,但難以做到虛擬仿真應用要求的幀率。虛擬仿真應用場景中機場場景的渲染時間在整個渲染時間片中要求不能占據過多的時間,除場景外還有其它的特效等,也要占用一定的計算時間片,因此對場景的渲染要求更高的渲染幀率,而現有的全局光照加速方法還無法滿足這樣的虛擬仿真要求。 另外,虛擬機場場景中的建筑物在夜間也有比較復雜的局部燈光,多光源全局光照繪制算法的繪制效率較低,也使得目前的全局光照方法無法用于虛擬機場仿真的應用環境中。

本文提出將Blinn-Phone 光照模型與真實的Rayleigh 散射環境光照數據修改后的環境光照數據相結合,形成較為真實的白天環境光照場景。 夜間的局部燈光光照則采用紋理記錄局部的燈光光照信息。為模擬早晨和黃昏場景光照的漸變,將夜間的局部光照紋理數據與白天的環境光照信息根據不同時刻點進行融合,形成模擬真實的早晨和黃昏光照場景。

1 光照場景的模擬

1.1 Blinn-Phone 光照模型及環境光的模擬

Phone 光照模型是計算圖形學中的經典光照模型。 其計算公式如式(1)和式(2)所示。

其中ka為環境光反射系數,Ipa為環境光光強,kdIpd(L·N) 為漫反射分量,ksIps(V·R)n為鏡面反射分量,n 為物體表面光滑度因子,表面越光滑則值越大。L 為光線入射方向,V 為視點方向。

Blinn-Phone 光照模型如式(3)和式(4)所示,該光照模型是對經典的Phone 光照模型的改進,其主要優點是計算過程比Phone 光照模型要簡單,計算速度較Phone 光照模型更快。 由于虛擬現實應用對實時性的要求較高,因此在虛擬機場的應用環境下,場景光照的繪制過程所采用的光照模型選擇上,沒有采用經典的Phone 光照模型,而是采用繪制速度更快的Blinn-Phone 光照模型作為場景繪制的光照模型。

其中,ka為環境光反射系數,Ipa為環境光光強,kdIpd(L·N) 為漫反射分量,ksIps(N·H)n為鏡面反射分量。N 為物理表面法向量, L 為光線入射方向,V 為視點方向,H 為入射方向L 和視點方向V 的中間向量。

由于白天室外的光照主要來自于太陽光,屬于單一光源,因此式(3)可以簡化為式(5)

其中,太陽光照作為環境光Ipa的主要來源,在一天24 小時內的光照顏色是不同的。 其對天空的照射可以通過Rayleigh 散射進行近似描述[9-14],如圖1 所示。

圖1 天空Rayleigh 散射顏色的紋理圖像Fig. 1 The Texture of Rayleigh scatter color of the sky

由圖1 可知,太陽光的光照顏色隨著時間的推移由全黑漸變為明亮的天藍色,再漸變為全黑。 在清晨和黃昏時,由于大氣散射,出現微紅的光照特征。 因此,根據天空的Rayleigh 散射可以獲得太陽光光照在24 小時不同時段的光照顏色,以此顏色作為地面場景建筑物或路面繪制時所使用的環境光顏色。 但由于太陽光投射到地面時,通常是白色而并不是天空一樣的藍色,因此對天空照射的Rayleigh 散射圖須加以修改,以適應地面場景的光照。

根據圖1 的Rayleigh 散射數據,由藝術人員制作生成太陽光環境光照紋理如圖2 所示,此紋理保留了Rayleigh 散射圖的基本光照情況,但又有所區別。 中午12 點的光照顏色是白色而不是天空的藍色。 通過紋理圖2 能夠模擬太陽光對地面場景24小時不同時段的光照情況。

圖2 太陽光對地面場景的環境光模擬圖Fig. 2 The ambient light recording texture of the sun

黎明時環境光的顏色比較偏紅色,中午時顏色偏白色,而傍晚時又比較偏黃色。 為了實現這種效果,使用了一張保存了二十四小時光照顏色的紋理,如圖2 所示。 該紋理記錄了二十四小時不同時刻環境光的顏色,從中可以明顯看到不同時刻環境光顏色的差別。 如果現實應用中需要模擬晴天、陰天或雨雪天等不同天氣條件下的環境光照,可以通過使用類似圖2 的多張紋理圖,并根據不同天氣條件替換對應的光照紋理圖,可模擬各種不同氣象條件下的地面環境光照。

1.2 場景局部燈光光照的模擬

通過Blinn-Phone 光照模型結合光照紋理采樣,可以很好的模擬出一天24 小時全局光照顏色的變化。 但場景中的各種物體(如建筑物、飛行器和地面),除了白天的全局光照顏色外,在夜晚的夜間場景會有更加復雜的局部燈光光照。 只通過一張由白天到夜晚的顏色記錄紋理無法完全實現對復雜地面場景的日夜漸變以及夜晚燈光的局部光照模擬。

夜間場景內的燈光情況較為復雜。 建筑物內部發出的燈光,地面和燈桿上的照明燈光以及地面對燈光的反射,還有運動物體(如車輛和飛機)內部也有燈光射出。 為了實時繪制從白天的環境光照到夜晚的局部燈光光照變化,在同一套模型中使用了雙重紋理的方法,來記錄場景的白天和夜晚的顏色或光照情況。 雙重紋理的示例圖如圖3 所示,該圖是機場中某建筑物夜間(左圖)和白天(右圖)的紋理。白天的紋理只包括建筑物本身的顏色,而夜間紋理則真實地記錄了建筑物夜晚的環境光照以及建筑物內部的局部燈光光照。 整個虛擬機場內的幾何體(包括靜止的建筑物和運動的車輛、飛機等)均采用類似圖3 的兩層紋理,第一層紋理為場景幾何體白天紋理,第二層紋理為場景幾何體夜晚紋理,其中夜晚紋理記錄了場景中各種局部燈光的照射效果,包括建筑物內部燈光、路燈、車輛和飛行器內部燈光等。

圖3 場景中某建筑物夜晚(左)和白天(右)的紋理Fig. 3 Night texture(left) and daylight texture(right) of a building

場景中物體在某時刻點t 的顏色不僅與其白天所呈現的幾何體材質顏色(即圖3 右圖)有關,也與圖2 中的時間和環境光照顏色有關。 隨著時間的變化,場景由白天變為夜晚或由夜晚變為白天,通過Blinn-Phone 光照模型結合環境光照紋理圖片產生環境光照的交替變化。 而建筑或運動物體的光照需要考慮環境光全黑的夜間紋理(圖3 左圖)與白天紋理(圖3 右圖)的轉換,而轉換的自變量則是時間t。 因此某時刻點t 的物體顏色是一個與時間相關的分段函數,則場景物體某一時刻點t 的物體顏色由分段函數式(6) 決定。 根據圖2 的環境光紋理的不同時刻點的顏色值,不考慮天空光線散射造成的光照,假定日出的時刻點(由黑轉亮) 為t2,日落的時刻點(由亮轉黑) 為t7,太陽升高到足夠高的位置而只有白色環境光的時刻點為t4,太陽剛落下到剛出現黃色環境光的時刻點為t6,則可以通過公式(6)計算出不同時間段內,場景物體在某個時刻點t 的顏色值。 日出前或太陽落下后,只使用圖3 左圖的夜間紋理,即只考慮夜間的局部燈光光照,此時的太陽環境光紋理圖2 所對應的是全黑的紋理。 當太陽升到較高位置時,此時地面建筑或電燈等發出的局部燈光基本可視為已完全關閉,即使有未關閉的燈光也較難在白天分辨出來。 這個時間段忽略掉局部燈光光照,而只使用圖3 右圖的白天紋理數據。 當處于黎明或黃昏時,由于既有太陽的光照又有局部的燈光光照,則不能單獨使用白天或夜間的光照數據。 在對光照建模時,不考慮云層等對太陽光突然的遮擋造成的光照突變,默認為太陽光照變化是連續的。 因此,黎明或黃昏時的光照模擬采用對白天的顏色紋理和夜間光照紋理線性插值的方式,完成對黎明或黃昏漸變光照的繪制,具體的分時段光照繪制公式(6)為

其中, nightTex 是場景物體記錄夜晚的紋理顏色,dayDiff 是場景物體通過Blinn-Phong 光照模型計算的白天物體的光照顏色。

2 光照模擬的結果

光照場景的繪制采用的計算機操作系統為Windows7 操作系統,CPU 為Xeon E3-1230,圖形處理硬件為NVidia GeForce 1080ti。 機場模型的面片數量為74 378 個,繪制幀率可達100 幀/s 左右,達到了繪制實時性的要求。

同一視點下的同一建筑物在不同時間段的燈光繪制效果如圖4~8 所示。 其中圖4 為凌晨5:00 的建筑物光照及局部燈光繪制效果,此時計算幾何體顏色使用的紋理為夜間局部燈光光照紋理nightTex,與此類似,圖8 展示了晚上22:30 時的場景繪制效果,所使用的紋理仍為nightTex;而圖5 和圖7 分別為早晨6:20 和傍晚19:30 的建筑物光照繪制效果,此時的光照繪制是nightTex 與dayDiff 通過公式(6)計算后得到的圖像融合后的光照繪制效果,這兩個時間點的光照繪制既有白天的紋理、環境光又有夜間的局部燈光的效果,較好地模擬了天剛亮或天剛黑時,既有天光又有局部燈光照射的融合光照場景。 圖6 為中午12:00 的繪制效果,此時由于太陽光強較強的原因,建筑物內的燈已經關閉或基本不可見,因此只使用dayDiff 的顏色,即只采用Blinn-Phone 光照模型而不考慮建筑物局部燈光。

圖4 凌晨5:00 場景中某建筑物的光照效果Fig. 4 Light illumination scene at 5:00 am

圖5 早晨6:30 場景中某建筑物的光照效果Fig. 5 Light illumination scene at 6:30 am

圖6 上午11:00 場景中某建筑物的光照效果Fig. 6 Light illumination scene at 11:00 am

圖7 傍晚19:30 場景中某建筑物的光照效果Fig. 7 Light illumination scene at 7:30 pm

圖8 晚上22:30 場景中某建筑物的光照效果Fig. 8 Light illumination scene at 10:30 pm

3 結束語

本文通過Blinn-Phone 光照模型,結合修改的Rayleigh 散射環境光紋理數據及單模型雙重紋理的方式,成功地實現了對虛擬機場場景的實時漸變的真實感光照,滿足了虛擬現實應用對光照的真實感和實時性的要求。 由于虛擬機場的場景除地面場景外,還有太陽、月亮、星星和云層等,如何對這些常見的自然景觀進行模擬,物理真實的實時繪制,進而考慮各種物體間的相互使用,比如太陽的光照,夜晚的星光和月亮如何模擬將是下一步的研究方向之一。

猜你喜歡
紋理光照繪制
肉種雞的光照不應性對養殖生產的不良影響分析
Painting ski maps 繪制滑雪地圖
繪制童話
隱蔽的力量
繪制世界地圖
肺紋理增多是病嗎?
童夢
TEXTURE ON TEXTURE質地上的紋理
消除凹凸紋理有妙招!
水禽舍的光照及其控制
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合