杜 狀,徐鶴桐,王 媛
(長春工業大學人文信息學院,吉林 長春 130000)
虛擬現實屬于一種能夠體驗虛擬環境的計算機系統,基本特征為沉浸、交互與構想。在一些虛擬的游戲和電影場景中,陰影的生成十分關鍵。陰影即為物體遮擋了光源而出現的較暗區域,也就是在光源照射范圍內,沒有被照射的區域。陰影可以體現出非陰影部分無法描述的信息,為計算機圖形學領域一個重要研究話題。陰影不僅能夠體現多個物體存在的位置關系,還可以增強對比度,確定光源具體方位,進而使圖像更具有立體感,生動地渲染虛擬現實環境,使其更具有真實感。按照陰影生成條件,將陰影分為本影與半影兩種。其中前者表示物體上沒有被光源直接照射的部分;后者則是物體受到一定光源照射形成半昏半亮區域。本文研究的點光源僅能生成本影,而線、面光源能夠形成半影。
由于陰影在虛擬現實環境中發揮著重要作用,因此廣大學者目前已經對其進行了大量研究。馬志強[1]等人提出基于自適應光源采樣的陰影生成方法。對光源的某些區域做規則采樣,生成多幅陰影圖像;將這些圖像重新映射到視點下,結合陰影差值判斷是否需要對采樣點進行細分,進而完成自適應逐層采樣,避免生成無效陰影。楊超智[2]等人提出基于自適應可見濾波的陰影生成方法。將光源中心作為參考點生成二值光源可見性圖,同時平滑濾波處理所有可視場景點,獲取可見性因子;在光線跟蹤流程中利用可見性因子調整光照值,提高陰影生成的真實感。
隨著計算機技術的發展,對陰影生成質量要求越來越高,上述兩種方法雖然能夠在不同條件下生成陰影,但沒有考慮陰影背景顏色影響,導致獲得異常的陰影采樣點。因此,本文將膨脹腐蝕算法應用到陰影生成中,通過陰影灰度圖像獲取陰影顏色,并將其融合,避免被限制在單一顏色通道[3]上,提高陰影生成效果。
結合已知虛擬現實環境圖像,判斷點光源種類、方向與強度,再通過計算機圖形軟件中的光照模型,將點光源信息進行擬合,映射到虛擬物體上,進而能夠生成物體的陰影。
在虛擬現實環境下,對于點光源的位置分為有障礙物遮擋與無障礙物遮擋兩種情況,下述利用不同方法分別討論兩種情況。
1)基于標記的無障礙物遮擋點光源檢測
結合Lambert定理[4]構建標記亮度Lr和光源與標記表面之間輻射度Φ的正比例模型,則Lr、Φ以及入射光強Ls三者之間的關系式如下
Lr∝Φ∝Ls·A·cosθ
(1)
式中,A代表標記面的面積大小,θ是標記面和入射光線存在的夾角。如果θ=0,Lr與Φ擁有極大值,這時點光源的方位應該在虛擬環境中輻射度值最高的標記面法線上。
結合上述模型,判斷無遮擋條件下點光源的位置過程如下:
步驟一:已知點光源和標記面的相對距離D,選取標記亮度的最大值當作主標記[5];
步驟二:確定副標記[6],該標記是所有輻射度值中和主標記最為相近的標記。將副標記當作頂點,并將2α為頂角,繪制圓錐體,且保證副標記的法向量必須在圓錐體范圍內。所以點光源的位置即為副標記與主標記法線方向的交點。α值越小,說明估計位置p和實際點光源位置差距越小。經過不斷調節相對距離D,確保α與D共同滿足指定閾值要求。
2)基于反射的有障礙物遮擋點光源位置恢復
結合光直線傳播特征與反射原理,物體都會具有鏡面反射屬性,且在點光源照射情況下存在下述兩個特性:
物體表面出現的反射光線是有一定方向性的分布在環境中。通常情況下,鏡面反射存在的入射光線和法線之間構成的角度,與反射光線和法線二者存在的夾角相等;
物體表面的光強會因觀察角度的改變而改變,且取決于反射光線與視線之間的夾角,如果反射光線與視線吻合,則反射光強度變大。
綜合上述兩個特征,能夠結合物體表面存在的高光點實現點光源的方向恢復。使用逆向光線追蹤思維,設定某一視點的射線穿過高亮點,并在高光點X處和反射球相交,則光源方向矢量L′的計算公式如下
L′=2(V·N)N+V
(2)

本研究將臺燈作為照明設施,設定為點光源照射在標志球上。若不考慮場景內不同物體的反射作用,則虛擬現實環境中的光照包括環境光與點光源。在此種狀況下,通過鏡面標志球進行分析,并使用計算機圖形相關軟件構建光照模型獲取光源強度。
由于室內點光源距離較近,因此不能忽略光強衰減問題,通過下述衰減函數表示光強衰弱情況

(3)
式中,d代表點光源與物體之間的距離,ac、al與aq分別代表衰減、線性衰減與二次衰減常數,通過對這三個常數的調節,能夠有效控制光照強度的衰減。
綜合分析環境光影響,包括光源漫反射[7]與光強衰減等,通過局部光照模型獲取虛擬真實場景中環境光強以及點光源強度。
此外,還需得到標志球的場景圖像,本文遍歷全部采樣點,獲取特征矢量,并劃分采樣點區域,刪除異常采樣點。再利用式(4)完成每個采樣點的環境光計算,最后得出光強的算術平均值。該過程的詳細步驟如下

(4)
式中,Ka、Kd與Ks分別表示不同時刻的物體反射系數,n為高光指數,f為焦距,Ri是區域反射系數。
步驟一:在獲取的標志球圖像中任意挑選n′個采樣點,運算得出特征矢量V、Li;
步驟二:對點光源與采樣點編碼,同時劃分區域;
步驟三:去除不合理的采樣點;
步驟四:對高光系數n與標志球半徑Sr做初始化處理;
步驟五:確定所有分區的采樣點個數,利用式(4)獲取點光源強度。


(5)
因陰影區域色彩和陰影背景顏色相關,則在確定陰影顏色過程中,必須重點分析背景因素影響,本文提出了基于膨脹腐蝕的陰影顏色計算方法。利用融合原理[8]可獲得
ShadowColi=ωi×SourceColi+(1-ωi)×Bgroundi
(6)
式中,SourceColi代表經過第i次膨脹腐蝕操作后陰影的真實色彩,SourceColi是理想的陰影顏色,此時理想色彩為黑色,Bgroundi是陰影部分的背景色彩,ωi代表第i次操作的融合因子,滿足ωi∈[α′,β′],其中α′與β′都是ωi的臨界值。針對第i次的膨脹處理,可利用下述公式表示

(7)
對于第i次腐蝕處理,可通過下述公式描述

(8)
式中,N*與M*分別表示需要完成的腐蝕與膨脹次數。
引入上述腐蝕膨脹算法,則陰影實時生成的步驟可表示為
輸入:點光源的實際位置lp(lp1,lp2,lp3),假設地面s的深度是minY。
輸出:點光源實時陰影。
步驟一:對α′與β′進行初始化處理,使SourceColor=(0,0,0),同時初始化N*與M*,建立點光源世界坐標矩陣[9]H;

步驟三:針對陰影的所有三角形與四邊形區域,獲取所有頂點的顏色HardColor(x,y,z),這時ω=β′,因此有
HardColor(x,y,z)=(1-β′)×Background
(9)
步驟四:構建一組點光源采集集合A1,A2,…,An,利用膨脹腐蝕操作獲取陰影區域顏色,生成陰影區域。
在陰影生成過程中,會經常出現鋸齒狀走樣現象,造成此問題的關鍵是對陰影圖的采樣不夠充分,當轉換矩陣達不到一致時,就會導致變換后的像素低于陰影圖像像素,由此產生鋸齒現象[10]。
鋸齒現象生成過程可描述為:光源投影在空間內的長度表示為dz,dp′與dy′分別代表物體的投影大小以及在視點空間內的高度,假設z′表示物體在模型空間內的體積,則有

(10)
由此可知,dy′與z′的值過大,均會引起鋸齒走樣現象。
針對這一問題,本文將對數分割法與平均分割法融合,對采樣密度進行優化。平均分割算法生成的分割面始終與裁剪面相互平行,沿著z軸作m′等分,則第i*個分割點位置表示為

(11)
式中,g與e分別代表近、遠剪裁面。該方法生成的采樣分布表示為

(12)
由此可知,物體與視覺投影面越近,走樣現象會越明顯,會導致較近的地方采樣不足,而較遠的地方容易出現過采樣。


(13)
找出最佳分割點之后,結合距離遠近生成自適應采樣密度,進而最大程度避免鋸齒走樣問題,提高陰影生成質量。
為驗證所提陰影實時生成算法的可行性與優勢,此次仿真以從點光源位置估計、陰影邊緣鋸齒效果以及生成速度為測試指標。
實驗一:點光源位置估計
假設存在7幅虛擬現實環境圖像,每個圖像中有兩個點光源,光源1設置在無遮擋環境下,而光源2則有障礙物遮擋,這兩個點光源在世界坐標系中的坐標表示為(-22.0,-12.3,23.6)和(-12.2,-2.3,34.9)。為方便分析本文方法、自適應光源采樣與自適應濾波方法位置估計的精準性,通過比較光源實際位置和估計位置的差值來對比三種方法性能,實驗結果如圖1和圖2所示。

圖1 無遮擋下不同方法點光源位置估計結果

圖2 有遮擋下不同方法點光源位置估計結果
由圖1和2可知,三種算法在無遮擋條件下對點光源位置的估計誤差沒有明顯差距;但當光源被遮擋時,自適應光源采樣與自適應濾波算法的估計誤差明顯上升,而本文方法依舊保持較高的估計精度。這是因為所提方法可以結合場景圖像預測出光源類型與方向,再通過光照模型獲取點光源的實際信息,提高估計精度,同時也能計算出光照強度。
實驗二:抗鋸齒效果評價
針對生成的陰影,是否具有邊緣抗鋸齒性是算法評價極為關鍵的指標。為了能夠準確體現出算法在不同場景下的生成效果,本文分別設置兩種不同復雜度的仿真環境,利用上述實驗提到的三種算法進行對比,實驗結果分別如圖3和4所示。

圖3 簡單環境下陰影生成效果圖

圖4 復雜環境下陰影生成效果圖
由上述實驗結果可知,本文方法無論在簡單還是復雜的虛擬現實環境下,均表現出良好的陰影生成效果。而自適應光源采樣方法雖然在簡單場景下沒有出現明顯鋸齒走樣現象,但是會出現嚴重的陰影虛化問題;自適應濾波方法通過濾波處理改善虛化現象,然而陰影邊緣會生成嚴重的鋸齒。本文方法表現出了突出的陰影生成優勢在于利用對數分割與平均分割相結合的方式改進走樣現象,改善陰影生成效果。
實驗三:執行速度對比
由于本文研究的是實時生成算法,因此執行速度是評價算法的關鍵性因素。利用以上三種陰影生成算法分別在簡單與復雜的環境下進行仿真,獲得的結果如表1所示。

表1 不同方法執行速度對比結果
表1得出的實驗結果均為經過10次仿真后的平均結果,由此能夠看出所提方法在不同場景下的執行速度遠遠高于其它兩種方法。這是因為本文膨脹腐蝕的次數設置較為合理,減少不必要的時間,提高算法執行效率。
陰影生成是增強虛擬環境真實感的關鍵方式,受到越來越多的學者關注。本文將膨脹腐蝕算法引入到陰影生成過程中,獲取每次操作的陰影區域,再通過對鋸齒走樣的改進,提高陰影生成效果。仿真結果證明,所提方法不僅能夠有效改善鋸齒走樣現象,還能提高算法執行速度。但隨著終端軟硬件的迅猛進步,該方法也需要不斷改善,特別在移動終端中使用時,對點光源的采樣需進一步提高,實現在不同環境下自適應采樣。