包含3節(jié)視頻教程
關注9.6萬次
學習FumeFX制作煙霧、火焰的教程可以讓你操作火煙。甚至制作水墨的效果!這些強大的技術可以讓特效看起來很棒!掌握后你將變成特效大師!
今天我們教大家UDK完成光照教程,這里講的很詳細,分章節(jié)描述的。希望有更多的會員來學習。
Unreal Engine 3.0之所以能夠制作出令人眼花繚亂的效果,其中一個重要的因素便是它的光照系統(tǒng)。自過去的版本以來,光照系統(tǒng)一直在變化,變得越來越靈活強大。在本章中,你將了解UnrealEd的光照系統(tǒng),以及如何通過創(chuàng)建和控制光源,來制作各式各樣的效果。
在關卡中放置光源非常簡單,只需要按住L鍵,同時在視口中單擊某個表面即可。然而,要在場景中獲得逼真的光照效 果絕不是簡單的單擊鼠標就可以完成的。你還需要大量思考這些問題:在關卡中哪些地方需要放置光源,在gameplay中這 些光源要如何表現(xiàn)。還要想想光線從何而來,是陽光,還是附近的燈光?盡量避免在關卡中隨意擺放光源。
同時,也不要認為正確的做法就是僅僅將光源放置在現(xiàn)實世界中應該放置的地方。Unreal Engine不會計算反射光線或 環(huán)境光線,所以,你需要使用工具來模擬這些效果。在本章中,你將在一個小關卡中制作光照效果。通過這些練習,你可 以了解如何通過各種使用光源的方法,來獲得各式各樣的效果。
圖8.1——關卡中放置了若干燈源,每一個都發(fā)揮了各自的作用。
簡單地放置光源還不能使你的游戲真正地“亮”起來。要照亮你的關卡,最重要的任務之一就是制作光照效果。無論你 是移動一個光源,還是簡單地改變它的一些屬性,只要你對關卡的光照效果稍做改動,你就得重新制作關卡的光照效果。 實際上,只需要單擊界面中工具欄里的Build Lighting(構建光照)按鈕就可以了。不過,場景中的光照效果越復雜,這 個過程就越長。還好,Unreal Engine 3.0可以在需要重新制作光照效果時提醒你,甚至在你啟動In-Editor Game(編輯器 中運行游戲)時直接告訴你。
圖8.2——In Editor Game(編輯器中運行游戲)給出需要重新制作光照效果的警告。
在我們正式開始了解光源及其工作原理之前,我們先來看看一個簡單的關卡中的光照。在下一指南中,你將為一個房間 制作光照。這個任務開始看起來是非常 簡單的。不過,我們會深入一些,盡量獲得比較自然的效果。請注意,我們的結果 關注質量甚于游戲的性能。如果在更大的關卡中,我們會使用占用系統(tǒng)資源更少的 方法。在下一個系列制作地牢關卡的指 南中,我們會更加注重游戲的性能。如果你已經使用過Unreal的光照系統(tǒng),想要了解一些理論,請?zhí)^前五個指南。
1. 運行UnrealEd,打開配套DVD本章文件夾中的LampTest關卡。它是一個空房間,房間中央放置了 一個電燈靜態(tài)網格物體。當前,透視視口設置為Lit(點亮),所以你只能看到黑色背景中的燈罩。
2. 選中透視視口,按G鍵進入游戲模式。這時,視口中顯示的關卡就是游戲中呈現(xiàn)的模樣。請注意 燈罩看上去似乎在發(fā)光,但實際上它并沒有。
再次按G,退出游戲模式。
圖8.3——在游戲模式中,您只能看到燈罩。
注意: 在游戲模式中,看不見任何actor!如果在關卡中丟失了actor,按G鍵查看是否處于游戲模式 中。
3. 首先,創(chuàng)建一個簡單的光源,以熟悉創(chuàng)建方法。在透視視口中的任意位置單擊右鍵,選擇Add Actor > Add Light (Point)。于是,在單擊右鍵的位置,創(chuàng)建了一個光源。這時,您可以注意到關卡中有了一些基本 的光照效果。
圖8.4——光源一離開地面,就會照亮關卡。
注意: 您可能需要使用Translation(平移)控件將光源移開地面,才能看到效果。
4. 使用Translation(平移)控件上下左右移動光源actor,您將看到在移動光源的同時,燈罩和底 座在房間里投下的陰影的位置也會隨之改變。它們稱為體積陰影,是動態(tài)(移動)陰影的一種,可以清楚地顯示陰影在關 卡中的位置。
5. 如果現(xiàn)在測試關卡,您會被警告需要重建光照效果。移動光源actor,使它在墻上投下一個有趣 的影子,單擊工具欄中的Build Lighting(構建光照)圖標按鈕。
圖8.5——重建的光照效果使陰影變得難看了。
您可以看到現(xiàn)在陰影變得不好看了。這是因為它們轉換成了預計算陰影(precomputed shadow),或者說是陰影貼圖。 這是另外一種陰影,可能不像剛才的體積陰影那么精確,但它們有良好的性能。因為它們實際上是存儲的紋理,在 gameplay的過程中,不需要進行計算。
6. 使用Translation(平移)控件,在前視口和俯視口中調整光源actor的位置,使它們處于燈泡網 格的中央。通過actor中央的紅色十字準線,可以測量它的位置。
圖8.6——如圖將電燈actor放置在燈泡中央。
您可以看到,一旦您移動了光源actor,陰影就會迅速變回陰影體積,以便您觀察陰影是如何放置的。一旦您將光源 actor移到燈泡網格中,關卡又會回到黑暗狀態(tài)。這是因為如果您將光源放在一個盒子里,它會在燈泡內產生陰影!現(xiàn)在也 不必擔心,在下一指南中,我們會進行處理。
7. 保存關卡。
<<<< 指南結束
繼續(xù)上一指南。如果您沒有學完指南8.1,請在繼續(xù)之前完成學習。在上個指南中,我們創(chuàng)建了光源;現(xiàn)在,我們將調 整它的一些屬性。
1. 在一個正交視口中,選中您前面放置好的點光源actor。按F4鍵打開屬性窗口,展開Light標簽下 的LightComponent(光源分量)目錄,您將看到光源的屬性列表。
圖8.7——點光源actor的屬性窗口。
2. 去掉CastShadows(投射陰影)屬性的勾選。因為房間中沒有其它可以投下陰影的物體,所以要 使光源的光透射出燈泡網格,最簡單的方法就是關閉該屬性。
您會發(fā)現(xiàn)一旦關閉了該屬性,房間馬上就被照亮了。
圖8.8——房間馬上就被照亮了。
3. 我們需要改變燈光的顏色,使它更加真實地反映出燈罩的顏色。單擊LightColor(光源色)屬性 旁邊的白色橫條,您將看到它的右邊出現(xiàn)了兩個按鈕:通過第一個按鈕您可以打開顏色選擇器(顏色選擇色),通過第二 個按鈕您可以在視口中選擇一種顏色。
單擊帶有箭頭的小按鈕,以便在視口中選擇一種顏色。在透視視口中,單擊燈罩中央的泛白的橫帶。根據(jù)您的喜好,您 也可以打開顏色選擇色將顏色調淺一些,這樣顯得更為真實。我們將R、G、B值分別賦為243、218和186。
4. 將FalloffExponent(衰減指數(shù))值設置為3。這樣,燈光產生的陰影會變得更加生動。
圖8.9——FalloffExponent(衰減指數(shù))值設置為3后,陰影更為生動。
5. 現(xiàn)在,我們已經完成了燈源的屬性設置。不過,最好將光源actor的圖標縮小,才能更方便地將 其它光源放入燈罩中。在光源的屬性窗口中,展開Display標簽,將DrawScale(繪制縮放)設置為0.2或其它您想要的值。 這樣可以將光源actor的圖標縮小到一個便于控制的大小。
圖8.10——通過調整DrawScale(繪制縮放),圖標的大小更加易于管理了。
6. 單擊Build Lighting(構建光照)按鈕,重建光照效果。您會看到落在房間角落的陰影變得矮小 模糊了。我們過會兒再進行處理。
7. 保存關卡。
<<<< 指南結束
跟著指南我們繼續(xù)學習,以下是光源的一些效果。
指南8.3——光照初級教程三: 效果光源
繼續(xù)上一指南。如果您沒有學完指南8.1和指南8.2,請在繼續(xù)之前完成學習,F(xiàn)在,我們要制作從燈罩頂部和底部透出 的錐形燈光。
1. 并不是您創(chuàng)建的所有光源都是點光源。您還可以選擇很多其它的光源類型,要獲得其它類型的光 源,您需要使用Actor Classes Browser(Actor類瀏覽器)。
在主菜單中,選擇View > Browsers > Actor Classes Browser。
2. 在Actor Classes Browser(Actor類瀏覽器)中,找到Light actor(光源actor),單擊左邊的 “+”擴展按鈕打開它。然后,您將看到列出了各種類型燈源供您選擇。本章后面將介紹每一種燈源類型,F(xiàn)在,單擊 SpotLight actor(聚光光源actor)(不要展開它),然后關閉Actor Classes Browser(Actor類瀏覽器)。
圖8.11——在Actor Classes Browser(Actor類瀏覽器)中,顯示了SpotLight actor(聚光光源actor)。
3. 在透視視口中,右鍵單擊關卡中的地板,在右鍵菜單中選擇Add SpotLight Here(在此添加聚光 光源)。地板上將出現(xiàn)一個新的SpotLight actor(聚光光源actor)。
圖8.12——新的SpotLight actor(聚光光源actor)將出現(xiàn)在您單擊的位置上。
4. 選中新建的聚光光源,按F4打開它的屬性窗口。將它的OuterConeAngle(外錐角)屬性設置為40 ,InnerConeAngle(內錐角)設置為22,后一個設置將使光源的光亮點變大。最后,將它的DrawScale(繪制縮放)屬性設 置為0.2,縮小圖標的尺寸,以方便放置。
5. 在俯視口和側視口中,使用Translation(平移)控件,將光源直接放置在燈靜態(tài)網格物體的中 央。然后,將光源向上移動,使其形成的外圓錐光線剛好穿過燈罩底部,如圖所示。這樣,光源放在了靠近燈罩頂部、燈 泡上方的位置,這對形成陰影非常重要。
圖8.13——在側視口中,將聚光光源如圖進行放置。
6. 將聚光光源的LightColor(光源色)屬性設置為乳白色,與前面PointLight(點光源)設置的顏 色近似,可以將R、G、B的值分別設置為243、219和188。將FalloffExponent(衰減指數(shù))的值設置為3。
7. 在側視口中,使聚光光源處于選中狀態(tài)。按住Alt鍵不放,拖動聚光光源產生一個副本,并將副 本向下拖至燈泡網格表面上方的位置。
8. 使聚光光源仍處于選中狀態(tài),按F4打開屬性窗口。展開Movement(移動)標簽,展開下面的 Rotation(旋轉)目錄。將Pitch(斜度)的值從-90度改為90度,這樣,光線將直射到天花板。然后,使用Translation( 平移)控件將新建的光源沿Z軸垂直移動,使它形成的外圓錐光線剛好穿過燈罩頂部。
圖8.14——新的聚光光源將指向正上方。
9. 使用您已經學過的技巧,如下設置新建聚光光源的屬性:
重建光照效果,保存關卡。
<<<< 指南結束
繼續(xù)上一指南。如果您沒有學完指南8.1至指南8.3,請在繼續(xù)之前完成學習,F(xiàn)在,我們要添加一些環(huán)境光線,使陰影 不致顯得全黑。同時,也使人產生了幻覺:正如在現(xiàn)實世界中一樣,關卡中的光線也會在周圍環(huán)境中產生漫射。
1. 打開Actor Classes Browser(Actor類瀏覽器),展開Light actor(光源actor)。單擊 SkyLight(天空光源)。然后,在透視視口中,在關卡地板上單擊右鍵,選擇Place SkyLight Here(在此放置天空光源) 。
圖8.15——天空光源的初始效果看上去差強人意。
您的場景立刻就面目全非了。不用擔心,這是正常的。請注意SkyLight actor(天空光源actor)的位置無關緊要。
2. 雙擊SkyLight actor(天空光源actor),打開屬性窗口。設置以下屬性:
3. 這樣,可以修復一些變得面目全非的場面。不過,請注意電燈網格看上去還是很黑的。要解決這 個問題,我們要通過另一個光照通道來使用另一個環(huán)境光源。本章后面將更加深入地介紹光照通道。
圖8.16——通過新的設置,房間看上去自然多了。
選中SkyLight(天空光源),在它的屬性窗口,展開LightingChannels(光照通道)目錄。取消Static(靜態(tài))通道的 勾選。如果您湊近了觀察燈網格,您將看到它變得更黑一點了,因為SkyLight(天空光源)不再對它造成影響。
4. SkyLight(天空光源)仍處于選中狀態(tài),按住Alt鍵不放,使用Translation(平移)控件創(chuàng)建一 個副本。SkyLight actor(天空光源actor)的位置無關緊要。打開SkyLight(天空光源)副本的屬性窗口,這一次將它的 Static(靜態(tài))通道設置為是(勾選),將BSP通道設置為否(不勾選)。這將使得SkyLight(天空光源)副本僅僅對燈網 格造成影響。
圖8.17——第二個SkyLight(天空光源)將只會影響燈網格。
最后,將亮度值設置為1.2,燈座變亮多了。
5. 現(xiàn)在,我們要制作一些從燈座漫射到底座上的光線。制作出的效果非常精妙,不過在制作過程中 ,可以向您展示一些創(chuàng)建光源的新技巧。
將透視視口拖動至靠近燈的位置。然后,按住Ctrl-L鍵不放,單擊燈體的亮紅色區(qū)域,將在同一位置創(chuàng)建一個新的 PointLight(點光源)。該光源的顏色自動設置為單擊區(qū)域的顏色,亮度值和輻射值都較低,為制作漫射光線開了一個好 頭。
6. 選中新建的PointLight(點光源),設置其屬性如下:
7. 將新的光源放置于底座表面的一個邊角上,稍微靠近燈座,如圖所示。然后,按住Alt鍵不放, 使用Translation(平移)控件,在底座另外三個邊角的相同位置上創(chuàng)建新的光源。請記住在兩次復制之間,要放開Alt鍵 。
圖8.18——漫射光源應放在底座的邊角上。
8. 重建光照效果,保存關卡。
<<<< 指南結束
接下來要講的是清楚陰影部分,注意觀察。
繼續(xù)上一指南。如果您沒有學完指南8.1至指南8.4,請在繼續(xù)之前完成學習。最后一步是整理房間中的雜亂陰影。
1. 在透視視口中,單擊房間地板,選中其表面。請記住如果看不出表面被選中,您可能處于游戲模 式,可以按G鍵退出該模式。選中地板后,按Shift-B選中房間中的所有表面。
2. 按F5打開Surface Properties(表面屬性)窗口。在Lighting(光照)區(qū)域框中,您可以看到 Lightmap Resolution(光源貼圖分辨率)默認設置為32。您可能回想起在《第四章:畫刷的世界》中講過,將該屬性設置 為更小的值可以使陰影變得清晰,但是會增加創(chuàng)建的時間,并占用更高的內存。
圖8.19——Surface Properties(表面屬性)窗口。
3. 將Lightmap Resolution(光源貼圖分辨率)值設置為4,然后重建光照效果。您可以注意到,建 造時間變長了,但是房間里的陰影變清晰了。如果您有興趣,可以嘗試將值設為1,不過結束后放過您的系統(tǒng)吧;您可能再 也不會做這樣的事了。建造時間真是出奇地漫長!
4. 對Lightmap Resolution(光源貼圖分辨率)的試驗結束了,將它的值設置回4,重建光照效果, 保存關卡。
圖8.20——當Lightmap Resolution(光源貼圖分辨率)設置為4時,創(chuàng)建陰影的時間變長了,但效果好多了。
<<<< 指南結束
現(xiàn)在您已經初步認識了光照世界。您還需要知道一些概念,以助于更深刻地理解Unreal光照系統(tǒng)背后的運行原理。這些 原理包括頂點光照(per-vertex lighting)和光照細分(lighting subdivision),光照貼圖(light map)和陰影貼圖 (shadow map),以及靜態(tài)光照(static lighting)和動態(tài)光照(dynamic lighting)。
在gameplay過程中,如果時常計算關卡中的所有光照和陰影,使會性能到達崩潰的邊緣。為了解決這個問題,對于所有 在gameplay中靜止的物體和光源,Unreal都為會它們產生光照貼圖和陰影貼圖。因為這些物體是靜止的,只需要計算一次 光照,并將光照貼圖和陰影貼圖(分別為兩種紋理)應用在物體上就可以了,無需更多計算。
光照貼圖是一種紋理,生成它的數(shù)據(jù)來自于對所有照射在某個表面或某個靜態(tài)網格物體上的光源的計算。這樣做的好處 是,因為多個光源照射在一個表面上,如果提前進行了計算并“烘焙”成了光照貼圖,性能只會略有下降。請注意,即使 在表面應用了光照貼圖,在gameplay中仍需要計算法線貼圖信息和高光信息。
圖8.21——關卡BSP的光照貼圖。
陰影貼圖和光照貼圖非常相似,不過它存儲的不是照明數(shù)據(jù),而是陰影數(shù)據(jù)。陰影貼圖和光照貼圖有一個明顯的區(qū)別: 一張光照貼圖可以定義多個不同光源的光照情況,但是對于一個特定的表面,每個光源都有它自己的陰影貼圖。如果多個 光源照射到一個表面,由它們各自的陰影貼圖組合成最后的結果。
在Unreal Engine 3.0中,可以與世界幾何體一樣對靜態(tài)網格物體應用陰影貼圖。對靜態(tài)網格物體的陰影處理使用的是 光照細分數(shù)據(jù),后者在后面會介紹。不過,使用陰影貼圖是在靜態(tài)網格物體上處理陰影更加精確的一種方法。要注意的是 ,陰影貼圖占用更多內存,因而導致性能下降。再加上每個照射在靜態(tài)網格物體上的光源都需要產生一張陰影貼圖,這就 是為什么大量使用這種方法會致使游戲性能下降的原因。
圖8.22——左邊的關卡中只有一張光照貼圖。右邊相同的關卡既有光照貼圖,又有陰影貼圖。
使用UnrealEd時,您會發(fā)現(xiàn)“動態(tài)”和“靜態(tài)”兩個詞有很多不同的含義。不過,在本章中,所謂的靜態(tài)光源是指在 gameplay中靜止的光源,也就是說,這它們的bMovable(可移動)屬性設置為false;動態(tài)光源是指可以移動的光源,即它 們的bMovable(可移動)屬性設置為ture。
當靜態(tài)光源照射在一個靜止表面上時,光照是靜態(tài)的,可以事先計算并存儲在光照貼圖和陰影貼圖中。靜態(tài)光照提供關 卡中的照明的主要環(huán)境。您可以用很多靜態(tài)光源制作出逼真的效果,而不用考慮開銷。
與靜態(tài)光照相反,在光照關系中,無論光源還是被照物體是動態(tài)(移動的)的,光照都認為是動態(tài)的。動態(tài)光照不能預 先計算,只能在運行時進行實時計算,需要相當?shù)奶幚砟芰。正如您所預料的,必須非常謹慎地使用動態(tài)光照場景,避免 帶來嚴重的性能問題。
不過,這并不是說動態(tài)光照是有害的。有時,必須要使用動態(tài)光照才能達到需要的效果。另外,Unreal也提供了一些特 殊的條件,如光源環(huán)境和光源功能(本章后面會進行介紹),以便使用動態(tài)光照時提高效率和靈活性。
圖8.23——動態(tài)光照(左)比靜態(tài)光照(右)清晰多了,但是需要更強的處理能力。
這個概念只適用于靜態(tài)網格物體的光照。在Unreal Engine 3.0之前的版本,靜態(tài)網格物體上的光照只能使用頂點光照 實現(xiàn)。簡單地說,頂點光照是指如果一個三角形的一個或多個頂點處于光照之中,則該三角形表現(xiàn)光照。在只有一個頂點 處于陰影中的情況下,通常會導致陰影不規(guī)則。頂點光照產生的陰影看上去很一般,并且對于邊數(shù)較少的多邊形網格物體 這種陰影效果不好。
在Unreal Engine 3.0中,靜態(tài)網格物體上面的陰影使用了光照細分。也就是說,將每個多邊形分為多個小多邊形,對 照射在每個小多邊形上的光線進行計算。最終的光照效果綜合了對所有小多邊形的計算。當然,這種計算復雜多了。不過 ,它對關卡建造時間的影響遠遠大于對gameplay性能的影響。
光照細分的真正好處在于可以改變小多邊形的數(shù)量,這些小多邊形是用于計算每個多邊形上的光照的。小多邊形數(shù)量越 多,陰影會越清晰,創(chuàng)建陰影所需的計算也越多。
圖8.24——頂點光照只關注頂點是否受照射,光照細分則考慮了每個小多邊形上的取樣點,以求更精確的結果。
在UnrealEd中,可以使用很多種光源。如果您使用過3D動畫軟件(如3ds Max或Maya)中的光照場景,您會覺得使用這 些光源簡直是輕車熟路。就算對于完完全全的新手,憑直覺也能對光源進行選擇,并辨別出在特定情景下應該使用哪種光 源。光源主要有四種類型:點光源、聚光光源、定向光源和天空光源。后面我們會分別介紹每一種光源。
前三種光源(點光源、聚光光源和定向光源)都各有兩種子類型:開關光源和移動光源。也就是說,您可以創(chuàng)建一個普 通的點光源,一個開關點光源或一個移動點光源。我們首先介紹這些子類型的主要區(qū)別,然后介紹光源的每個大類。
可開關是指光源在gameplay中可以打開,也可以關閉。這是通過Kismet中的Toggle(觸發(fā))序列對象制作的。關于如何 使用Kismet打開或關閉光源的更多信息,請參見Kismet一章。開關光源發(fā)射出的光線不能用在光照貼圖中。
應該提醒的是,開關光源的性質是由光源的屬性窗口中的bStatic(靜態(tài))屬性定義的?砷_關光源的該屬性設置為否 。不過,這并不是說您可以任意創(chuàng)建一個標準光源,通過改變它的bStatic(靜態(tài))屬性使它成為一個開關光源。這樣做會 引入不穩(wěn)定因素。
顧名思義,移動光源是指在關卡中可以移動的光源。它包括沿一條路線運動的點光源,以及繞某一點轉動的聚光光源, 等等。這些運動是由Matinee控制的。關于Matinee的更多信息,請參見Matinee一章。和開關光源一樣,移動光源發(fā)射出的 光線也不能用在光照貼圖中。
光源能否移動是由它的bMovable(可移動)屬性決定的。不過,不能任意創(chuàng)建一個標準光源,通過改變它的bMovable( 可移動)屬性使它成為一個移動光源。這樣做會引入不穩(wěn)定因素。
注意: 在寫本章時,要使一個移動光源能夠在Matinee中動畫化,光源的物理屬性必須設置為 PHYS_Interpolating,該屬性在光源的運動目錄下進行設置。
點光源從一個點向四周發(fā)射光線,就像燈泡一樣。這是一種最常用的光源,特別是在室內關卡中。光源的半徑屬性定義 了光線從actor的位置開始的傳播距離。點光源可用于標準靜態(tài)模式(PointLight)、可觸發(fā)模式(PointLightToggleable)和 可移動模式(PointLightMovable)。
圖8.25——點光源、可觸發(fā)點光源和可移動點光源的圖標。
圖8.26——由點光源actor發(fā)射的光線示例。請注意所有的墻壁都被照亮了。
聚光光源是指一個點光源通過一個圓錐發(fā)射出光線,就像現(xiàn)實生活中的聚光燈或手電筒一樣?梢酝ㄟ^InnerConeAngle (內錐角)和OuterConeAngle(外錐角)屬性控制圓錐的打開或收攏。
當需要使光線向同一個方向聚攏時,可以使用聚光光源,例如探照燈、手電筒或其它的光源。SpotLight actor(聚光 光源actor)也通過半徑屬性定義其發(fā)射的光線的距離。和點光源相同,SpotLight actor(聚光光源actor)可用于標準靜 態(tài)模式(SpotLight)、可觸發(fā)模式(SpotLightToggleable)和可移動模式(SpotLightMovable)。
圖8.27——聚光光源、可觸發(fā)聚光光源和可移動聚光光源的圖標。
圖8.28——聚光光源actor發(fā)射的光線示例。
定向光源用于模擬非常遙遠的光源,如太陽,通常只用于室外場景。計算定向光源時,不是認為光線從一個點發(fā)射出來 ,而是認為從一個理論上無窮大且無窮遠的平面發(fā)射出來。這意味著所有從光源發(fā)出的光線都是平行的,形成的陰影也是 對等的,而不像點光源造成發(fā)散的陰影。
DirectionalLight actor(定向光源actor)只能用于標準靜態(tài)模式(DirectonalLight)和可觸發(fā)模式 (DirectionalLight_Togglable)。由于發(fā)光面無窮大且無窮遠,所以它的位置無關緊要,只有照射角度是需要關注的。
圖8.29——定向光源和可觸發(fā)定向光源的圖標。
圖8.30——左圖中的陰影是由點光源產生的,右圖中的陰影是由定向光源產生的。請注意定向光源產生的陰影的對等性。
SkyLight actor(天空光源actor)從理論上的一上一下的兩個半球面發(fā)射出光線。計算時將這兩個半球面當作無窮大 ,也就是說,不能將某個actor“移出”半球。球體光源用于向關卡提供環(huán)境光線,防止陰影變成完全漆黑。每個半球都有 其顏色值和亮度值,您可以將上半球面的亮度調亮而將下半球面的亮度調暗,以模仿同時從多個表面散射的光線。球體光 源不存在開關模式和移動模式。
圖8.31——該圖表模擬了SkyLight(天空光源)的照射方式
圖8.32——Actor Classes Browser(Actor類瀏覽器)中列出的所有可用光源。
我們將開始第二系列的指南。在這些指南中,我們將對更類似于游戲中的場景----一個小地牢進行光照處理。如果您沒 有使用過光源,強烈建議您學習完本章開頭的指南。
1. 運行UnrealEd,打開配套DVD本章文件夾中的Light_Demo地圖。開始,我們將在場景中放置最初 的光源。透視視口看上去幾乎是全黑的,這是因為目前處于Lit(點亮)模式。在繼續(xù)之前轉換到UnLit(未點亮)模式。
2. 打開Actor Classes Browser(Actor類瀏覽器),展開Light > PointLight,選中 PointLight Movable(可移動點光源)。然后,在透視視口中,右鍵單擊地面,在右鍵菜單中選擇Place PointLight Movable Here(在此放置可移動點光源)。
圖8.33——右擊后PointLight Movable(可移動點光源)出現(xiàn)了。
完成后,將透視視口設置為Lit(點亮)模式。
3. 使用Translation(平移)控件將PointLight Movable(可移動點光源)移動至火把上方的粒子 發(fā)射器處。以后,該光源就是火把光源了。
圖8.34——火把光源應該放置于火把靜態(tài)網格物體的上方。
4. 回到Actor Classes Browser(Actor類瀏覽器),展開Light,選中SpotLight actor(聚光光源 actor)。單擊右鍵并在地板上放置一個SpotLight actor(聚光光源actor),然后使用Translation(平移)控件將它移 動到洞頂?shù)木W格下方。以后,該光源即頭頂光源。
圖8.35——將頭頂光源移動到洞頂?shù)木W格下方。
5. 現(xiàn)在我們創(chuàng)建第三個光源。按住L鍵不放,單擊牢房地面,新建一個PointLight actor(點光源 actor)。使用Translation(平移)控件將光源移動至牢房墻壁上的白色光源前面。以后,該光源即墻壁光源。
圖8.36——墻壁光源應該放置于牢房中的燈前面。
6. 重建光照效果,保存關卡。
<<<< 指南結束
隨著您在UnrealEd中越來越多地使用光照,您會很快發(fā)現(xiàn)有很多種屬性都可以編輯光源的外觀和表現(xiàn)。本節(jié)將向您介紹 最常用的屬性,而不是用各個參數(shù)間的細微差別對您進行狂轟濫炸----這些您可以通過自學來掌握。光源的所有屬性和定 義列表包括在附錄中。
我們首先介紹關卡的所有光源都具有的常規(guī)屬性,然后再介紹特殊光源類型所具備的專用屬性。
bEnabled屬性定義了光源是打開或關閉。您可以將它看成光源的開關。除了開關光源,其它光源該屬性一般都設置為是 。對于開關光源,該屬性的激活與停用控制了光源的開與關。
顧名思義,該屬性控制光源的強度。要注意使用過高的值會使關卡“褪色”。該值可以在Matinee中進行動畫處理,使 光源淡入淡出或閃爍。
該屬性的含義也非常明顯,它使您可以改變光源的色調、飽和度和其它值。通過一個標準的Windows顏色選取器窗口可 以對該屬性進行設置,如下圖所示。該值也可以在Matinee中進行動畫處理。
圖8.37——顏色選取器用于改變光源的顏色。
半徑屬性控制光源射出的光線強度減弱至0的距離;蛘哒f,它可以改變控制光源范圍的理論球體的半徑。半徑范圍內 的物體會受到光源不同程度的影響,而半徑之外的物體則接收不到來自該光源的光線。定向光源和天空光源不使用該屬性 。
圖8.38——點光源和聚光光源的半徑
FalloffExponent(衰減指數(shù))屬性控制光源發(fā)出光線接近半徑的過程中,其強度減弱至0的速度。該屬性默認值為2, 呈平方的衰減;若設置為3,則為立方衰減,等等。若值為0,則沒有衰減,光線在半徑以內都將保持其全部強度。定向光 源和球體光源不使用該屬性。
在點光源中,有兩個錐體用于控制光源發(fā)射的角度。內錐體以內的區(qū)域的光線強度為100%,在靠近外圓錐的過程中光線 強度逐漸減弱,而在外圓錐之外強度為0。
圖8.39——外圓錐角度和內圓錐角度。
InnerConeAngle(內錐角)屬性默認設置為0,意即不存在光線強度為100%的“熱點區(qū)域”。
TraceDistance(追蹤距離)屬性控制一個物體可以在另一個物體上投下陰影的最遠距離。它的默認值為100,000。例如 ,如果有一個距離地面150,000單位高的物體,它將不會在地面上投下陰影。但是,如果將它放在90,000單位高的高度,它 將在地面上投下陰影。
前面提到過,一個球體光源有兩個半球面。每個半球面可以單獨受控制以獲得期望的效果。通過LowerBrightness(亮 度)和LowerColor屬性,可以調整下半球面光源的強度和顏色。
在現(xiàn)實世界中,在一個黑暗的房間中開燈會照亮房間中光源范圍內和光線瞄準線所至處的所有表面。不過,在Unreal中 , 您可以控制某一光源能否影響某一物體。這是通過使用Lighting Channels(光照通道)實現(xiàn)的。您可以將它們看作電 視頻道。光源在某一個或某一些特定頻道中進行傳播,只要物體能夠接收到其中的一個頻道,它就會被照亮。這樣,您可 以使某些物體不被某些光源照亮,或者說,某些光源只照亮某些物體。有很多種光照通道可供使用,以下介紹一些最常用 的光照通道。
BSP通道用于所有的BSP畫刷。如果在光源中激活該通道,光源將照亮畫刷。
CompositeDynamic通道與光源環(huán)境一起使用,在本章后面的光源環(huán)境一節(jié)中,我們將深入介紹該通道。
動態(tài)光照通道用于所有在游戲中移動或改變的物體。如果沒有勾選該通道,光源將不會照亮玩家、運動中的人物及其它 的動態(tài)表面。
靜態(tài)光照通道用于所有在游戲中靜止或沒有改變的物體,例如靜態(tài)網格物體。
在一個光源中有若干個沒有名字的通道。它們供用戶進行控制和使用。例如,您可以關掉所有Unnamed_1通道以外的通 道,只有Unnamed_1通道中的物體才受光照影響。
圖8.40——在本圖中,光源使用了BSP和Unnamed_1通道。左邊的網格物體打開了Unnamed_1通道,而右邊的則沒有。
繼續(xù)指南8.6,或者打開配套DVD本章文件夾中的Light_Demo_II地圖。
1. 選中墻壁光源,按F4(或雙擊墻壁光源actor),打開其屬性窗口。設置以下屬性:
圖8.41——屬性窗口應如圖設置。
2. 展開光照通道部分,檢查以下通道是否激活:
3. 選中火把光源,在其屬性窗口進行以下設置:
注意: 不要改變火把光源的顏色!我們將通過光源的一個功能來控制其顏色。
4. 展開火把電源的光照通道,檢查以下通道是否激活:
5. 選中頭頂光源,在其屬性窗口進行以下設置:
6. 檢查頭頂光源的以下通道是否激活:
7. 重建光照效果,保存關卡。
圖8.42——關卡的最終效果如圖所示。
<<<< 指南結束
除了光照通道,體積照明是決定一個光源是否對某些物體產生影響的另一種方法。您可以通過指定體積列表使它起作用 :包含體積列表和排除體積列表。簡單地說,列在InclusionVolumes(包含體積)列表中的體積將會被照亮,而列在 ExclusionVolumes(排除體積)列表中的體積不會被照亮。
圖8.43——圖示的體積列在InclusionVolumes(內含體積)列表中。請注意體積范圍以外的物體沒有被照亮。
通過bUseVolumes(使用體積)屬性可以激活體積照明。通常,您可以向InclusionVolumes(內含體積)列表和 ExclusionVolumes(外含體積)列表中的一個列表增加體積。您也可以向兩個列表中都添加體積。不過,請記住在這種情 況下,同時屬于內體積范圍和外體積范圍的物體,以及不在任何一個體積內的物體不會被照亮。
陰影對于關卡的光照效果至關重要。在Unreal Engine 3.0中,可以使用三種不同類型的陰影:預計算陰影,陰影體積 陰影和陰影緩沖陰影。這些類型不是手工選擇的,而取決于你的光照情況,光源與(或)物體是靜態(tài)的還是動態(tài)的。
光照系統(tǒng)將這三種陰影緊密地結合在一起。對于玩家來說,它們最顯著的區(qū)別就是陰影邊緣的模糊度。由于分辨率低, 預計算陰影邊緣非常模糊;陰影體積陰影邊緣則非常清晰。
不管使用哪一種技巧,陰影效果不會影響所有其它的光照效果,例如凹凸貼圖和高光效果。不同類型的陰影不會改變這 些效果。
預計算陰影用于靜態(tài)光源照射在靜態(tài)幾何體上時產生的陰影。
預計算陰影在創(chuàng)建光照時創(chuàng)建,并儲存在陰影貼圖中。陰影是基于光線的,也就是說,光源的每束光線是從發(fā)光源到被 照物體計算的。在寫作本章時,預計算陰影不考慮材質的alpha,如圖所示。
圖8.44——看這個有alpha遮照的靜態(tài)網格物體表面。請注意該物體的陰影還是實的。
要在創(chuàng)建預計算陰影時考慮某個光源,該光源的UseDirectLightMap(使用定向光源貼圖)屬性應該設置為是。 UseDirectLightMap(使用定向光源貼圖)屬性位于光源LightComponent(光源組件)目錄下,靜態(tài)光源的該屬性值默認為 是。
關于使用基于BSP幾何體的貼圖陰影,請參見《第四章:畫刷的世界》。關于靜態(tài)網格物體的貼圖陰影,請參見《第五 章:靜態(tài)網格物體》。
陰影緩沖陰影用于當靜態(tài)光源照射在動態(tài)幾何體(如人物,運動中的物體等)上時產生的陰影。
陰影緩沖陰影邊緣較柔和。在ShadowFilteringTechnique(陰影濾鏡技術)屬性中有多種控制柔和效果的運算。在該屬 性中,您可以找到一張列表,上面羅列了過濾陰影緩沖陰影的不同方法。您可以基于質量或性能的考慮選擇使用其中的方 法。例如,《戰(zhàn)爭機器》游戲的陰影緩沖過濾采用了BCF_Low設置,即質量最低,但性能最好。
陰影緩沖陰影在進行陰影計算時,會考慮alpha遮照的材質。不過,只作用于動態(tài)物體,并且當材質的混合模式(blend mode)設置為BLEND_Masked時。
圖8.45——左邊的柵欄的陰影考慮了alpha,而右邊的靜態(tài)網格物體則沒有。
要正常創(chuàng)建緩沖陰影,動態(tài)物體必須要附在碰撞體積中。也就是說,運動物體網格還需要一個碰撞物體,而人物的 SkeletalMeshComponent(骨架網格物體組件)中需設置一個PhAT資源。關于靜態(tài)網格物體的碰撞物體的更多信息,請參見 靜態(tài)網格物體一章。關于人物PhAT資源的創(chuàng)建,請參見動態(tài)反應物體一章。
出于性能的考慮,可以在使用點光源時使用陰影緩沖。如果一個物體不是正好處于光源的90度視域之內,引擎會切換至 一個更慢的cubemap緩沖過濾系統(tǒng)。簡單地說,您通常會希望玩家或其它的動態(tài)物體遠離會投下陰影的點光源。
注意: 在寫作本章時,當一個動態(tài)物體距離一個靜態(tài)點光源過近時,其動態(tài)陰影會消失。
當動態(tài)光源照射在動態(tài)幾何體或靜態(tài)幾何體上時,使用陰影體積。
陰影體積最常見于在UnrealEd中移動光源時。陰影體積邊緣非常清晰,一點都不柔和。而且無論被照物體距離光源是遠 是近,它們都非常精確。陰影體積不考慮材質的alpha通道,也就是說,它會忽視所有的alpha遮照。
如上所述,當您在編輯器中移動光源時,您都可以看到陰影體積。陰影體積會一直存在,直到創(chuàng)建了光照效果,才會用 合適的類型的陰影以替換。當光源處于運動中時,使用陰影體積。
圖8.46——在編輯器中移動光源,陰影體積就會出現(xiàn),以輔助放置光源和陰影。
當物體邊線未閉合時,陰影體積會導致性能大幅度下降(例如,網格中的洞)。在這種情況下,引擎使用一個速度更慢 的雙面(double-sided)陰影體積來計算陰影,故引起性能下降。為了避免這種情況,請確保網格物體的邊線閉合,有時 也稱為網格“不漏水”。在3ds Max中,您可以使Borders(在Max中與‘未閉合邊’同意)在多個編輯的物體上可選,并框 選所有的網格以檢查有多少未閉合的邊緣。
在創(chuàng)建陰影體積時,您可以總是將光源的bForceDynamicLight(強制動態(tài)光源)屬性設置為是。
實際上,調制陰影并不是陰影的一個類型,而是在計算動態(tài)陰影時可以使用的一個模式。簡單地說,調制陰影允許您直 接修改陰影的顏色。當多個光源要消融陰影時,可以使用該模式。將LightShadowMode(光源陰影模式)屬性設置為 LightShadow_Modulate,然后使用ModShadowColor屬性來改變陰影的顏色。
注意:除非bForceDynamicLight(強制動態(tài)光源)屬性設置為是,調制陰影對于靜態(tài)光源對靜態(tài)物體投下的陰影沒有效 果。在這種情況下,您可以使用能夠用于調制的體積陰影。
圖8.47——左圖中為普通陰影,右圖中為調制陰影。
繼續(xù)指南8.7,或者打開配套DVD本章文件夾中的Light_Demo_III地圖。
1. 選中墻壁光源,在其屬性窗口中激活CastDynamicShadows(投射動態(tài)陰影)屬性。這將使牢房門 打開或關閉時,或者pawn或玩家經過時,光源都會投下陰影。
圖8.48——墻壁光源透過牢房的柵門,投下陰影。
2. 選中火把光源,在其屬性窗口中找到LightShadowMode(光源陰影模式)屬性,并設置為 LightShadow_Modulate。這將使陰影看上去更暗一些,如果需要還可以改變陰影的顏色。不過,在寫作本章時,調制陰影 的光源功能不可與光照函數(shù)一起使用,所以我們后面會將該屬性改回。
3. 選中頭頂光源,將其屬性窗口中的CastShadows(投射陰影)設置為無效。因為該光源對關卡中 的陰影沒什么影響。
圖8.49——頭頂光源無需投下陰影。
4. 重建光照效果,測試關卡。現(xiàn)在您可以看到由門、囚犯和您自己的角色產生的動態(tài)陰影了。
<<<< 指南結束
繼續(xù)指南8.8,或者打開配套DVD本章文件夾中的Light_Demo_IV地圖。本節(jié)中將使用Kismet和Matinee。關于它們的更多 信息,請分別參見第十章和第十一章。
1. 首先確定光源可以被動畫化。選中火把光源,在其屬性窗口中展開運動標簽,將物理屬性設置為 PHYS_Interpolating。
圖8.50——設置物理屬性是在Matinee中移動光源的必要前提。
2. 單擊Open Kismet button(打開Kismet按鈕)圖標,打開Kismet編輯器。您將看到一個與Level Startup(關卡啟動)事件相連接的Matinee序列,標記為播放動畫。
圖8.51——關卡的Kismet序列。
3. 當前的Matinee序列對象使得火把火焰的粒子發(fā)射器搖擺不定。我們將復制對象,并在它的基礎 上使光源隨之晃動。按照以下步驟進行:
a. 選中Matinee序列對象與之相連的Matinee數(shù)據(jù)對象。使用Ctrl-C和Ctrl-V復制粘貼它們。
圖8.52——復制Matinee序列對象和數(shù)據(jù)對象。
b. 在Kismet窗口底部的屬性區(qū)域,將ObjComment(對象注釋)屬性設置為動畫光源。
c. 按住Alt,單擊位于副本Matinee序列對象底部的標注為InterpGroup的小方形,斷開與發(fā)射器對 象變量的連接。
d. 從副本Matinee序列對象的Play(播放)輸入拉出一根線,連接至Level Startup(關卡啟動)事 件的輸出端口。
圖8.53——將復制的序列連接至Level Startup(關卡啟動)事件。
e. 在透視視口中,選中火把光源。然后,回到Kismet編輯器中,右鍵單擊Matinee序列對象底部的 InterpGroup輸入,選擇New Object Variable(新建對象類別)使用PointLight Movable_0。
圖8.54——現(xiàn)在Matinee序列也會影響火把光源了。
4. 如果現(xiàn)在測試關卡,光源看上去輕微晃動。不過,我們還要繼續(xù)運算處理光源的亮度。
a. 在Kismet編輯器中,右鍵單擊復制的Matinee序列,在右鍵菜單中選擇Open Matinee。
圖8.55——通過關聯(lián)菜單打開Matinee。
b. 在InterpGroup軌道上單擊右鍵,選擇New Float Property Track(新建浮點屬性軌跡),彈出 一個對話框。從下拉菜單中選擇PointLightComponent0.Brightness,單擊OK。
圖8.56——選擇PointLightComponent0.Brightness屬性。
c. 選中Brightness軌跡,單擊Stop按鈕兩次,以確定時間軸滑塊位于0.00時刻。然后,單擊Add Key(添加關鍵幀)圖標,添加第一個鍵。
d. 在Matinee窗口底部的灰色刻度條上,時間軸滑塊是一條黑色的細線。將它拖動至1.00,然后再 次單擊Add Key(添加關鍵幀)按鈕。
圖8.57——在0.00和1.00時刻添加了關鍵幀。
e. 將時間軸滑動條移動至0.00和1.00之間3個任意位置,在每個位置上單擊Add Key(添加關鍵幀) 按鈕。
f. 依次對每個鍵進行以下操作:右鍵單擊每一個鍵,從右鍵菜單中選擇Set Value(設置值)。輸 入一個0.5至1.2之間的任意值。不要改變0.00和1.00的鍵。這樣,可以制作出亮度的變化,起始值為1.0,結束值也為1.0 ,也就是說,它可以不斷的循環(huán)。
圖8.58——完成后,從0.00到1.00之間,有五個值起伏的鍵。
5. 重建光照效果,保存進度。您可以測試關卡,您將看到光源不僅左右晃動,而且因為您剛才創(chuàng)建 的動畫,它的亮度也閃爍不定。
<<<< 指南結束
您可能意識到了在處理動態(tài)光照時,性能是一個主要的考慮因素。制作動態(tài)陰影時,出于性能考慮,您總是要確定在一 個區(qū)域中,不存在過多的動態(tài)陰影。但是,您希望當玩家進入一個使用了很多光源的區(qū)域時所有的燈投射動態(tài)陰影,會發(fā) 生什么呢?您可以建立另一組光源來產生陰影,但是您可能摧毀當前所有的光照,更不用說對性能造成沖擊了。
進入光源環(huán)境。光源環(huán)境為關卡設計師提供了一組光源通過使用一些非常聰明的技巧來影響靜態(tài)物體和動態(tài)物體,而不 必擔心有很多不同的動態(tài)陰影的光源帶來的性能下降。不過,它唯一的顯著缺點是光源環(huán)境只允許一次一個物體一個動態(tài) 陰影的使用。但是,出于它在性能方面的巨大優(yōu)勢,這個缺點也不值一提了。
光源環(huán)境是在關卡內創(chuàng)建一個球體光源和一個定向光源。請注意它們在關卡中并不存在,您也不需要創(chuàng)建它們。球體光 源用于控制動態(tài)物體的環(huán)境光線的顏色,定向光源用于投射動態(tài)陰影。
引擎計算影響物體的所有光源的顏色的加權平均值!皺嘀亍被诿總光源的亮度,就是說更亮的光源對平均顏色的影 響更大。陰影的方向是由相關的光源的接近程度計算出的。“相關”的光源在計算時,會作為光源環(huán)境的一部分。我們馬 上會介紹如何進行操作。
圖8.59——該場景中的actor受到四個光源的照射,每個光源都投下動態(tài)陰影。
圖8.60——該場景中的actor只受光源環(huán)境的影響。
激活光源環(huán)境實際上只需要兩個步驟。第一步,激活光源屬性中的bCastCompositeShadow(投射復合陰影),證實光源 的CompositeDynamic(復合動態(tài))通道處于激活狀態(tài)。對于要加入光源環(huán)境計算的所有光源,您都需要進行這些操作。
第二步,激活被照射物體上的光源環(huán)境。在每一個動態(tài)物體的屬性中,您可以找到LightEnvironmentComponent(光源 環(huán)境組件)分類里面有一個bEnabled(啟用)屬性。一旦您將它設置為是(默認設置為否),該物體就不再處于動態(tài)通道 ,而是處于CompositeDynamic(復合動態(tài))通道中了,F(xiàn)在,它接收來自于光源環(huán)境的照射了。
光源環(huán)境是處理多個光源的動態(tài)光照,而耗費較少資源的一種方法。實際上,在游戲《戰(zhàn)爭機器》中,所有的士兵都是 用光源環(huán)境照亮的!
現(xiàn)在,我們暫時停止地牢場景,而是進入一個使用光源環(huán)境進行特殊設計的關卡中,看看光源環(huán)境是多么有用。
1. 運行UnrealEd,打開配套DVD本章文件夾中的LightEnvironmentTest地圖。在地圖中,您可以找 到一個由四個彩色光源照射的房間,房間中央放了一個動態(tài)物理actor。現(xiàn)在,沒有一個光源在動態(tài)通道中發(fā)光,所以該物 理actor看上去沒有被照亮。
圖8.61——因為未被照亮,場景中央的球看上去是黑色的。
2. 選中四個光源,打開屬性窗口。勾選CastDynamicShadows(投射動態(tài)陰影)屬性,展開 LightingChannels(光照通道),激活動態(tài)通道。瞬間動態(tài)球體actor被照亮了。
3. 還是在屬性窗口,將LightShadowMode(光源陰影模式)屬性設置為LightShadow_Modulate。
4. 重建光照效果,測試關卡。在關卡中點選并隨意拖動動態(tài)actor。注意光照的質量非常高,并且 四個光源都投下了單獨的陰影,在球體上產生了高光點。但同時,性能也下降了。
在In Editor Game(編輯器中運行游戲)窗口中,按住Tilde (~)鍵打開控制界面。在控制界面中輸入stat fps命令, 以顯示游戲中每秒鐘的幀數(shù)。回車,按住Tilde鍵隱藏控制界面。注意您現(xiàn)在每秒的幀數(shù)。通常,該數(shù)值在40到80之間。
圖8.62——注意每秒鐘的幀數(shù)。
完成后退出In Editor Game(編輯器中運行游戲)。
5. 現(xiàn)在,選中四個光源,再次打開屬性窗口。去勾選CastDynamicShadows(投射動態(tài)陰影)。在 LightingChannels(光照通道)下,取消Dynamic勾選。
6. 選中關卡中央的球形剛體,打開其它屬性窗口。展開DynamicSMActor(動態(tài)SMActor),展開 LightEnvironment(光源環(huán)境)。在LightEnvironmentComponent(光源環(huán)境組件)下勾選 bEnabled(啟用)。這將使actor 被光源環(huán)境照亮。
圖8.63——bEnabled(啟用)屬性位于LightEnvironmentComponent(光源環(huán)境組件)目錄之下。
7. 重建光照效果,再次測試關卡。注意現(xiàn)在您看到球體上只有一個高光區(qū),該高光區(qū)的顏色主要基 于離它最近的光源。同樣地,球體只有一個陰影。
現(xiàn)在再看看每秒鐘的幀數(shù),F(xiàn)在高多了,大概平均值為170.您可以注意到陰影并不總是很精確的,但是我們的性能提高 了四倍多。對于可玩性,這是個好得多的選擇!
圖8.64——使用光源環(huán)境時,關卡的效率大大提高。
8. 保存關卡。
<<<< 指南結束
光源函數(shù)提供了一種通過材質來控制光源的顏色和強度的方法,甚至可以使光源在物體表面投射出紋理。該功能用途非 常廣泛,可以模仿從電影放映機到彩色玻璃窗投下的光流。
光源函數(shù)讀取指定材質的自發(fā)光通道,并用它來驅動光源的亮度和顏色。發(fā)射方向取決于光源類型:點光源將從各個方 向進行發(fā)射,聚光光源通過一個圓錐體進行發(fā)射,而定向光源從一個平面進行發(fā)射。
請記住光源函數(shù)關鍵的一點,它們一旦被激活,UseDirectLightMap(使用定向光照貼圖)屬性自動失效。也就是說, 應用了光源函數(shù)的光源沒有預計算陰影(貼圖陰影)。
圖8.65——應用了光源函數(shù)的聚光光源。
光源函數(shù)有兩個主要屬性:
SourceMaterial(源材質) – 該屬性包含用于光源函數(shù)中的材質,是在Generic Browser中進行選擇的。
Scale(比例) – 該屬性控制源材質紋理的大小,使您可以直接改變投射光的紋理,而不必改變材質的貼圖。
繼續(xù)指南8.10,或者打開配套DVD本章文件夾中的Light_Demo_V地圖,F(xiàn)在,我們要在火把光源上應用光源功能,以控 制火把光源的顏色。
1. 打開Generic Browser,找到位于關卡包中的mat_TorchLight材質。雙擊它打開材質編輯器。
2. 在材質編輯器的屬性區(qū)域,勾選bUsedAsLightFunction(用作光源功能)屬性。
圖8.66——確保勾選了bUsedAsLightFunction(用作光源功能)屬性.
3. 選中火把光源,將它的LightShadowMode(光源陰影模式)設置為LightShadow_Normal(光源陰 影_法線)。
4. 找到函數(shù)屬性,單擊其旁邊的None項,出現(xiàn)兩個按鈕:Clear All Text(清除所有文本)和New Item(新建項目)。右鍵單擊New Item(新建項目),從右鍵菜單中選擇LightFunction(光源功能)。
5. 新的光照函數(shù)將展開。找到SourceMaterial(材質資源)屬性,使用Generic Browser將它設置 為mat_TorchLight紋理。
圖8.67——一旦添加了mat_TorchLight紋理,光照顏色就改變了。
6. 重建光照效果。您將注意到光源的顏色是由材質控制的。
7. 保存關卡。
<<<< 指南結束
繼續(xù)指南8.11,或者打開配套DVD本章文件夾中的Light_Demo_V貼圖。最后一步是創(chuàng)建一些光源,用于照亮火把靜態(tài)網 格物體。
1. 在透視視口中,單擊Real Time按鈕以顯示粒子。一些粒子可見后,再次單擊Real Time按鈕,停 止播放。
圖8.68——在關卡中使一些粒子可見。
2. 按住Ctrl-L,單擊火焰中顏色最深的橙色區(qū)域。這將創(chuàng)建一個和單擊處顏色相同的光源,但是您 看不到它。
3. 按Home鍵將視口對齊至光源位置。使用Translation(平移)控件將光源移動到火把靜態(tài)網格物 體的另一端靠近其表面的地方。
圖8.69——將復制的光源移動到火把網格的旁邊。
光源被放置在房間中央的原因是:因為您沒有單擊BSP brush,UnrealEd無法確定您想要放置光源的具體位置。
4. 您可以將光源的顏色調得更深,設置屬性如下:
5. 展開LightingChannels(光照通道)目錄,去激活所有通道。然后,勾選Unnamed_1通道。
圖8.70——只有Unnamed_1被激活。
6. 選中火把靜態(tài)網格物體。在屬性窗口中,展開Static(靜態(tài))MeshActor按鈕,展開Static(靜 態(tài))MeshComponent目錄。找到Lighting按鈕,展開LightingChannels(光照通道)目錄。
去勾選Unnamed_1通道,使光源可以影響網格。
7. 將光源復制兩次,并將副本環(huán)繞網格放置,形成一個三角形。
圖8.71——三個光源只照亮網格物體。
8. 重建光照效果,保存關卡。
<<<< 指南結束
在對關卡進行光照處理時,請記住以下提升性能的簡單指導:
這節(jié)課就到這里,不知道大家學的怎么樣,回去自己再試著練習一下。歡迎學習我們社區(qū)的其他教程。
朱峰社區(qū)網頁版(手機掃描-分享-添加到屏幕)
朱峰社區(qū)微信公眾號(微信掃一掃-關注)
未知用戶
未知用戶
贊0
踩0
12年11月12日
2005-2024 朱峰社區(qū) 版權所有 遼ICP備2021001865號-1
2005-2024 ZhuFeng Community All Rights Reserved
VIP