朱峰社區(qū)首頁 朱峰社區(qū)

搜索資源 注冊|登陸

等待

返回 展開菜單

UDK材質(zhì)簡介(上)

FumeFX火焰煙霧 觀看預(yù)覽

FumeFX火焰煙霧

包含3節(jié)視頻教程
關(guān)注9.8萬

學(xué)習FumeFX制作煙霧、火焰的教程可以讓你操作火煙。甚至制作水墨的效果!這些強大的技術(shù)可以讓特效看起來很棒!掌握后你將變成特效大師!

關(guān)閉
這節(jié)課我們主要講的是UDK材質(zhì)的簡介,內(nèi)容較多,我們分兩節(jié)課來講。這節(jié)課主要是材質(zhì)的簡介,剖析,通道,表達式。從這幾方面來介紹!
點擊查看朱峰社區(qū)圖片

圖6.1——一個簡易的倒角立方體,左圖沒有應(yīng)用材質(zhì),右圖則應(yīng)用了材質(zhì)。

一旦您完全理解了材質(zhì)的工作原理與創(chuàng)建方式,就會發(fā)現(xiàn)您對材質(zhì)的認識不會再是物體外表的一層涂料了,而是更傾向于用這樣一個詞語來定義材質(zhì):構(gòu)成物體的物質(zhì)。舉例說明,大家知道混凝土一般都是灰色無光澤的,表面有一些麻點,而小轎車的顏色則像彩虹一樣鮮艷亮麗,通常都是閃閃發(fā)光、平滑有光澤的,甚至還可能有些裝飾用的金屬片。不過,我們現(xiàn)在還是將材質(zhì)的概念簡化,將其當作模型的外表涂層,以控制游戲中對象的最終外觀效果。

材質(zhì)vs.貼圖

許多游戲設(shè)計的新手都很難區(qū)分材質(zhì)和貼圖。簡單來說,區(qū)別在于貼圖只是一張圖片,而材質(zhì)是大量各類元素的綜合,囊括了貼圖?梢院唵蔚貙①N圖看作為材質(zhì)的一部分。在創(chuàng)建材質(zhì)時,您會使用貼圖來為材質(zhì)提供色彩、透明度、發(fā)光以及各種各樣的其它效果。


圖6.2——此圖表說明了材質(zhì)和紋理之間的大致關(guān)系。請注意信息的傳遞方向是從右到左,這是UnrealEd中材質(zhì)編輯器的標準。

區(qū)分材質(zhì)和貼圖時使人混淆的部分原因是因為Unreal Engine 3之前發(fā)布的UnrealEd版本中,貼圖或材質(zhì)能夠直接應(yīng)用于對象表面,F(xiàn)在這個問題已不復(fù)存在了。應(yīng)用至對象表面的只能是材質(zhì)。貼圖先被附加于最終材質(zhì)上,然后再將此材質(zhì)應(yīng)用于特定表面上。

貼圖坐標(UVs)

為了將貼圖后的材質(zhì)應(yīng)用于對象表面之上,您需要找到一種方法來確定貼圖像素與其應(yīng)用對象表面區(qū)域的對應(yīng)關(guān)系。更確切地說,在將任何種類的圖像應(yīng)用到三維立體對象的表面時,您需要使用某種方法控制圖像各個部分在應(yīng)用的時候,各自對應(yīng)的位置。因為貼圖是一個兩維的對象(就象一張圖片),而游戲中的物體對象或人物角色都是三維的,所以必須要通過某種方式將二維圖像“包裹”到三維對象上。

這項工作可以用貼圖坐標,也就是所謂的UVs來完成。從左下角開始,應(yīng)用到表面的貼圖在水平和垂直方向上從0到1開始映射。它們分別是U坐標和V坐標,有時也稱作“切線空間”(tangent space)。表面上的每個頂點都有與應(yīng)用貼圖的U、V坐標相對應(yīng)的值。然后根據(jù)這些貼圖坐標將貼圖描繪到表面之上。每個表面都有其自身的UVs坐標系設(shè)置,可以通過BSP的“Surface Properties”(表面屬性)對話框?qū)ζ溥M行設(shè)置,也可以通過美工偏愛的3D建模程序中的適當工具對應(yīng)用于靜態(tài)網(wǎng)格物體或骨架 網(wǎng)格物體的表面貼圖進行設(shè)置。


圖6.3——UV 空間如圖所示是一個由左下角起始的網(wǎng)格,范圍由0到1。


圖6.4——多邊形對象的UVs在貼圖應(yīng)用于對象表面時的工作機理。

在材質(zhì)編輯器中,貼圖坐標信息可以通過使用某種材質(zhì)表達式進行補充。通過使用下述的某些表達式,您就能夠控制貼圖的平鋪(或重復(fù))、改變其旋轉(zhuǎn)或?qū)⑵湫D(zhuǎn)變?yōu)閯赢嬓Ч、將其沿某一方向平移以及其它各類效果。表達式就是通過改變材質(zhì)貼圖的坐標值以達到靜態(tài)或?qū)崟r地創(chuàng)建上述效果。

指令

一旦真正開始創(chuàng)建自己的材質(zhì),您會遇到這樣一個詞:“指令”。在此,指令是指一種傳遞給計算機的命令,用來處理材質(zhì)表現(xiàn)的各個方面。實際上,就算是第一次創(chuàng)建一個簡易材質(zhì),您也會注意到在材質(zhì)編輯器的表達式窗口中顯示了材質(zhì)包含了很多默認的指令值,而其中的大部分指令是用來模擬材質(zhì)表面光照效果的。

據(jù)此,我們可以用它來簡單了解一下材質(zhì)到底有多么復(fù)雜。材質(zhì)包含的指令越多,其自身就越復(fù)雜。因此,您需要認真考量游戲場景中的何種材質(zhì)是最重要的,不要浪費時間(或?qū)氋F的機器資源)為那些在關(guān)卡角落里看不見的物體進行復(fù)雜材質(zhì)的塑造。

光照小議

如果沒有某種光源進行照射的話,您的材質(zhì)在很大程度上是一無是處的,因為您需要光源才能看見這些材質(zhì)。當然,如果您真正掌握了材質(zhì)本質(zhì)的話,就會發(fā)現(xiàn)材質(zhì)就是用來控制特定表面對光源做出回應(yīng)的方式。諸如 色度 、 自發(fā)光 、 透明度 以及 光澤度 此類詞語都描述了特定表面是如何與那些照射于表面之上的光源進行交互作用的。正因如此,您經(jīng)常會發(fā)現(xiàn)游戲關(guān)卡中的材質(zhì)設(shè)置與光照的位置和控制息息相關(guān)。事實上,一旦您稍有經(jīng)驗的話,就會很容易地發(fā)覺對光照和材質(zhì)的處理是同步進行的,或者至少要在光照和材質(zhì)之間做大量的來回調(diào)整工作。但是,為清楚起見,本章僅對材質(zhì)方面進行講解,隨后的 光照章節(jié) 中將詳細闡述光照的各方面內(nèi)容。

材質(zhì)剖析

那么到此為止您已經(jīng)大體了解了何為材質(zhì);現(xiàn)在讓我們花時間研究一下材質(zhì)由什么組成。不過,在我們的講解過程中,您得親手操作一下,制作一 個基本的材質(zhì),這樣不僅能夠了解到材質(zhì)中各元素的作用,還可以對材質(zhì)的構(gòu)造方法有一個大致的認識。

一般來說,材質(zhì)由三個主要組件組成,它們必須協(xié)調(diào)一致才能創(chuàng)建出最終效果。這三個部分是材質(zhì)節(jié)點(Material Nodes)、材質(zhì)通道(Material Channels)和材質(zhì)表達式(Material Expressions)。這三個部分的交互的方式描述如下圖所示。


圖6.5——此圖表顯示了材質(zhì)節(jié)點、材質(zhì)通道和材質(zhì)表達式三者之間的關(guān)系。再次請注意,此流向仍然是從右到左的。

材質(zhì)節(jié)點(Material Nodes)

材質(zhì)節(jié)點是UnrealEd中所有材質(zhì)的基本對象。不過,在此我們不對節(jié)點進行簡單描述或圖表示范,而是先從制作第一個材質(zhì)開始,您可以從中直接領(lǐng)悟到何為材質(zhì)節(jié)點。

指 南6.1——創(chuàng)建一個基本材質(zhì)

1. 運行UnrealEd,并打開Generic Browser。

2. 創(chuàng)建一個新的材質(zhì)主要有三種方法。在本指南中,我們只用到其中的兩個,因為第三種方法需要導(dǎo)入貼圖;這是我們下文所要闡述的主題。

在Generic browser的“File”(文件)菜單中選擇“New… ”(新建……)


圖6.6——從“File”(文件)菜單中選擇“ New”(新建)。

3. 在彈出的對話框中鍵入下列信息:


圖6.7——在新建對話框中輸入信息。

輸入完成后點擊 OK ,F(xiàn)在您會在列表中看到一個名為IntroToMaterials的新建文件包。您還會注意到此文件包是可以展開的(在其旁邊有一個小加號),如果將其展開,就會發(fā)現(xiàn)材質(zhì)組(Materials group)。其中能看到您新創(chuàng)建的材質(zhì)。


圖6.8——新創(chuàng)建的材質(zhì)出現(xiàn)了。

注意: 不要以為這就是您的材質(zhì)節(jié)點。在Generic browser中看到的只是材質(zhì)的預(yù)覽,讓您能夠選中并應(yīng)用于關(guān)卡中。

4. 右擊新建材質(zhì)并從關(guān)聯(lián)菜單中選擇Delete 。允許我們使用第二種材質(zhì)創(chuàng)建方法重建材質(zhì)。


圖6.9——從關(guān)聯(lián)菜單中選擇“ Delete”(刪除)。

注意: 在刪除材質(zhì)時會發(fā)生兩件事。第一個也是最明顯的就是材質(zhì)消失了。另一方面,由于此材質(zhì)是新建文件包中唯一的成員,刪除材質(zhì)的同時此文件包本身也就不存在了。如果一個文件包中沒有內(nèi)容(貼圖、靜態(tài)網(wǎng)格物體、材質(zhì)等),那么它就不能存在于UnrealEd中。這非常有用,因為這樣可以防止編輯器由于過多的空文件包而顯得臃腫不堪。

還要注意的是,不能刪除UnrealEd中正在使用的材質(zhì)(或此類情況下的其它對象)。比如說,我們已將材質(zhì)應(yīng)用到游戲關(guān)卡中的某個對 象之上,或者正在使用材質(zhì)編輯器對此材質(zhì)進行編輯,那么UnrealEd將不允許刪除此材質(zhì)。對于其它想要從Generic browser中刪除的任何資源都是如此。在這種情形下,您會看到一個彈出窗口,顯示出資源被引用的所有位置。

5. 右鍵點擊Generic browser中預(yù)覽區(qū)域的空白部分(即占據(jù)瀏覽器大部分內(nèi)容的灰色區(qū)域)。從顯示的關(guān)聯(lián)菜單中選擇New Material。 將顯示一個新建對話框;再次輸入本指南第三步中使用的相同信息。不過您會發(fā)現(xiàn)使用這種方法時Factory屬性 已經(jīng)預(yù)先設(shè)置好了。完成后點擊OK按鈕。

6. 這一次,當您點擊OK按鈕后會發(fā)生不同事件。您會注意到材質(zhì)編輯器窗口出現(xiàn)了。但是不要太過興奮;我們稍后再討論材質(zhì)編輯器的使用,F(xiàn)在,把您的注意力集 中到占據(jù)區(qū)域中央的大塊灰色窗口。這就是所謂的材質(zhì)表達式窗口,也就是進行所有的材質(zhì)創(chuàng)建工作的地方。在此窗口中,您第一次看見了材質(zhì)節(jié)點。


圖6.10——材質(zhì)編輯器用戶界面。

請注意您能夠使用鼠標來瀏覽材質(zhì)表達式窗口,就像在關(guān)卡的正交視口中進行瀏覽一樣,F(xiàn)在調(diào)整材質(zhì)節(jié)點使其居于窗口中部。我們將在接下來的章節(jié)中詳細地討論節(jié)點。

7. 現(xiàn)在保存文件包。如果您查看Generic browser左下方中的文件包列表,就會發(fā)現(xiàn)IntroToMaterials文件包旁邊有一個星號標記,說明此文件包需要保存。在Generic browser中,選中IntroToMaterials文件包的情況下,從瀏覽器菜單欄中選擇 File > Save 。在彈出的“Save”(保存)對話框中檢查文件包的名稱是否為IntroToMaterials.upk,然后點擊“Save”(保存)按鈕,F(xiàn)在,文件包列表中此文件包旁邊的星號就消失了。


圖6.11——務(wù)必保存好您的文件包,這樣才不會丟失新建材質(zhì)!

<<<< 指南結(jié)束

現(xiàn)在您已經(jīng)看到了材質(zhì)節(jié)點,而且不論是否注意到,您也看到了某些材質(zhì)通道,雖然在我們的材質(zhì)中目前還未使用任何通道。材質(zhì)節(jié)點是材質(zhì)中的關(guān)鍵對象。這是所有其余的表達式通過節(jié)點通道所到達的最終點。

材質(zhì)節(jié)點有幾個可以調(diào)整的屬性,可以用來改變材質(zhì)本身的總體形態(tài)。這些屬性可以在材質(zhì)編輯器的“ Properties”(屬性)窗口中找到(位于編輯器底部的細長條窗口)。然而,我們不會讓您被這長串的目前還用不到的屬性設(shè)置列表拖垮,而只是改動其中一些需要改動的屬性值而已。關(guān)于材質(zhì)節(jié)點屬性的完整列表,請參考 附錄 。

材質(zhì)通道

當您查看一個材質(zhì)節(jié)點時,會發(fā)現(xiàn)一個包含所有可應(yīng)用材質(zhì)的通道列表?偣灿惺粋通道,允許對材質(zhì)形態(tài)的各個特征進行調(diào)整。在每一通道中,您必須傳遞某種類型的數(shù)據(jù)。這些數(shù)據(jù)產(chǎn)生于材質(zhì)表達式,通常是以貼圖樣本表示的,這一點稍后將作討論。

以下為所有通道的列表,以及每一通道所起作用的概述。如果擁有3D動畫文件包的開發(fā)背景而可以辨識出其中的某些通道,如3ds Max或Maya,您將會發(fā)現(xiàn)它們在UnrealEd中實現(xiàn)的功能與您原先使用的3D應(yīng)用程序中的功能其實是相同的。

Diffuse(漫射)

簡而言之,漫射通道控制對象的顏色。它可以是單色也可以是貼圖。


圖6.12——具有不同漫射值的材質(zhì)示例。

Emissive(自發(fā)光)

此通道允許您創(chuàng)建材質(zhì)的發(fā)光效果。雖然這只是單一通道,但它卻使用兩個獨立的值來控制發(fā)光。其中顏色值確定發(fā)光的顏色,強度值控制發(fā)光的亮度。然而,黑色的使用結(jié)果是不發(fā)光,因為黑色的飽和度為0。


圖6.13——圖中所示為啟動了自發(fā)光通道的貼圖結(jié)果。

Specular(高光)

此通道控制光源在表面反射后產(chǎn)生的“熱點范圍”。從技術(shù)角度上說,高光通道就是控制光源如何在材質(zhì)的表面反射的。請思考以下情形,一輛眩目的小轎車在一個陽光燦爛的日子停在戶外。觀察陽光反射出來的區(qū)域是不是像一個明亮的白球?這就是 specular highlight(高亮) ——此材質(zhì)通道所控制的東西。

與自發(fā)光通道類似,高光通道也要同時讀取顏色與強度值。顏色值控制 specular highlight(高亮) 的實際色調(diào),而飽和度值則控制 specular highlight(高光顯亮) 的亮度。不過請記住,與自發(fā)光通道一樣,黑色不會產(chǎn)生 specular highlight(高亮) ,類似于粉筆的粗糙表面一般。


圖6.14——兩個高光值相差很大的材質(zhì)。

Specular Power(高光次冪)

高光通道控制的是 specular highlight(高亮) 的飽和度和顏色,而Specular Power(高光次冪)通道則控制高亮的 外形 。不過,與高光和自發(fā)光不同,此通道只使用單一值。如果真要用術(shù)語來說明,可以說此屬性模擬了對象表面的microfaceting(微小表面),意思是創(chuàng)建了反射光在觀察者眼中產(chǎn)生微小的面的假象。從實際效果來看,設(shè)置更高的值將產(chǎn)生更。ɑ 更緊密 )的 specular highlight(高亮) ,而更低的值則會產(chǎn)生更大范圍的高亮。


圖6.15——請注意不同的高光次冪值會收緊或擴大鏡面反射的熱點范圍。

Opacity(不透明)

此通道使用一個范圍在0到1之間的值(分別代表黑色和白色),控制材質(zhì)的不透明與透明的程度。值為0或黑色時將使得材質(zhì)變得完全透明。相反地,值為1或白色將使材質(zhì)變得完全不透明。在此范圍內(nèi)的值,如0.5(純灰色)將產(chǎn)生不同程度的透明感。

注意: 此通道只有在材質(zhì)節(jié)點的“LightingModel”(光照模型)屬性設(shè)置為MLM_Unlit,并且 “BlendMode”(混合模式)屬性設(shè)置為BLEND_Masked、 BLEND_Translucent、BLEND_Additive或BLEND_Modulate時才會生效。


圖6.16——如圖所示由貼圖驅(qū)動的材質(zhì)呈現(xiàn)出的不透明度。

Opacity Mask(不透明蒙板)

這是不透明通道的一個簡化版本,可用于缺省的MLM_Phong光照模型。主要的差別在于這是一個二進制值:只能是1或0,即開或關(guān)。沒有任何中間透明度值。默認情況下,大于等于0.5的值是不透明的,而小于0.5則是透明的。然而,您可以通過調(diào)整材質(zhì)節(jié)點的不透明蒙板屬性對其進行修改。

注意: 通過使用MLM_Unlit光照模型以及上述所列的一種適當?shù)幕旌夏J,不透明蒙板通道能夠和不透明通道同時作用于材質(zhì)。在這種情況下,不透明蒙板用來限制不透明通道的范圍,也就是說不透明蒙板的值覆蓋不透明通道的值。


圖6.17——圖中所示的MLM_Phong材質(zhì)顯示出應(yīng)用了對象的不透明度蒙板后的貼圖。

Distortion(扭曲)

簡而言之,此通道使您能夠創(chuàng)建出模擬折射的效果,意思是通過此材質(zhì)的光源會發(fā)生彎曲。您可以使用此通道創(chuàng)建出變形玻璃、熱源效果或其它任何由折射因素產(chǎn)生的效果。當然,由于扭曲通道使 穿過 對象的光源發(fā)生彎曲,此通道僅在對象具有某種程度的透明度時才有用。需要注意的是,在本書成書的當前進程中,此通道只有在使用MLM_Unlit光照模型時才生效。

輸入到扭曲通道的強度值用來指定材質(zhì)的模糊或折射效果。


圖6.18——請注意材質(zhì)是如何扭曲其背后對象的。這是由于貼圖應(yīng)用于對象的扭曲通道的緣故。

Transmission Mask/Transmission Color(透射蒙板/透射色)

透射蒙板和透射色通道協(xié)同產(chǎn)生一種通常被稱為“sub-surface scattering(次表面散射)”的效果。本質(zhì)上,此通道模擬了光源穿過表面時發(fā)生的散射效果。舉例來說,如果您手持一支點亮的手電筒照向臉頰,就會發(fā)現(xiàn)臉部的大部分區(qū)域都被不同程度地照亮了。這是因為手電筒發(fā)出的光源不像穿過玻璃時呈現(xiàn)出的直線狀態(tài),而是在穿過皮膚的時候向各個不同的方向發(fā)生反射和折射。

透射色通道控制了光源穿過表面時所呈現(xiàn)的顏色。透射蒙板通道控制了光源透射的強度與位置,使您能夠放置透射光在對象表面可見的位置。


圖6.19——請注意光在穿過物體表面時是如何進行散射的。

Normal(法線)

在控制對象的細節(jié)程度方面而言,法線通道或許是材質(zhì)中最有價值的通道。如果您近些年內(nèi)經(jīng)常與游戲設(shè)計方面的術(shù)語打交道的話,您或許會聽說過“法線貼圖”這個術(shù)語。法線貼圖本質(zhì)上而言是一種描述對象表面上高度不一致的貼圖,以及隨高度變化后對象表面上各個部分的角度的變化。皮膚上的皺紋或者石頭上的裂縫就是很好的示例。從技術(shù)角度講,法線貼圖是以逐個像素為基礎(chǔ)校正對象的表面法線(或?qū)ο蟊砻娴某颍,能夠極精準地控制微小細節(jié)的添加。

法線通道中輸入的顏色數(shù)據(jù)用來確定應(yīng)用于對象材質(zhì)表面的表面法線。R、G和B值是用來計算向量的,這些向量實際表示對象表面對應(yīng)點所使用的法線。每種顏色的范圍由0到255,映射至一套新的由-1至1的值之上。每個像素的這三個值可用來組成向量。通過對三個值的分別使用,貼圖不僅可以控制對象 表面上的點的相對高度,還可以控制對象表面朝向的角度。這使得低分辨率幾何體能夠呈現(xiàn)出驚人地視覺效果,就像是由比幾何物體自身實際擁有更多的多邊形組合而成。

在使用法線通道時要牢記兩個重要條件。第一,幾乎任何情況下都要對其應(yīng)用一種貼圖樣本。第二,法線貼圖的結(jié)果只不過為了達到渲染的效果; 多邊形表面本身的復(fù)雜程度在貼圖應(yīng)用前后是沒有根本區(qū)別的。這就是法線貼圖在模擬關(guān)卡對象表面的高精度細節(jié)方面之所以如此重要的本質(zhì)原因。


圖6.20——左圖的材質(zhì)沒有應(yīng)用法線貼圖。右圖的材質(zhì)則應(yīng)用了法線貼圖,產(chǎn)生磚墻表面效果。

Custom Lighting(自定義光照)

自定義光照通道使您能夠創(chuàng)建出自己的光照函數(shù)。缺省設(shè)置為MLM_Phong光照模型,用以控制光源與基礎(chǔ)材質(zhì)之間的交互作用,它實際上是一系列計算產(chǎn)生的結(jié)果。通過將材質(zhì)表達式連接成網(wǎng)絡(luò)然后接入自定義光照通道之內(nèi),您就能夠創(chuàng)建出光源與材質(zhì)表面進行交互作用的模擬效果。為了使用此通道,您必須將光照模型設(shè)置為 MLM_Custom。


圖6.21——本圖中,左例使用了右圖中的復(fù)雜網(wǎng)狀結(jié)構(gòu)來模擬Phong光照模型。

既然您已初步了解了可供使用的通道類型,那現(xiàn)在就需要了解一下通道的具體作用了。這里就要進入到材質(zhì)表達式的內(nèi)容了。在接下來的一節(jié)中,我們將研究材質(zhì)表達式及其在材質(zhì)中的使用方式。

材質(zhì)表達式

材質(zhì)表達式是用于創(chuàng)建材質(zhì)的構(gòu)建基塊。每個表達式包含一個特定的功能,如提供貼圖接口、增加兩個值或向量、或者修改貼圖坐標等。通過此類表達式的精心組合成網(wǎng)絡(luò),就可以創(chuàng)造出許多有趣的效果,為您的游戲關(guān)卡帶來更驚人的視覺沖擊。在詳細研究材質(zhì)編輯器中的各個可用的材質(zhì)表達式之前,我們先為之前創(chuàng)建的基本材質(zhì)增加幾個簡單的表達式。

指 南6.2——運用材質(zhì)表達式增強基本材質(zhì)

1. 在UnrealEd中打開Generic browser,如有必要,選擇菜單欄中的 File > Open ,并打開在先前指南中創(chuàng)建的IntroToMaterials文件包。

展開Materials組,并在Generic browser的預(yù)覽窗口中雙擊先前指南中創(chuàng)建的 mat_simple_1 。 打開此材質(zhì)的材質(zhì)編輯器。

2. 我們從簡單地改變材質(zhì)顏色開始。在材質(zhì)編輯器窗口右側(cè)的材質(zhì)表達式列表中,向下卷動并選擇 VectorParameter ,然后將其拖放到表達式窗口中。您將看到一個新的材質(zhì)表達式圖標出現(xiàn)在表達式窗口中,如下圖所示。


圖6.22——VectorParameter表達式圖標已經(jīng)出現(xiàn)于表達式窗口中。

3. 在進一步創(chuàng)建材質(zhì)之前,讓我們快速瀏覽一下表達式窗口。請注意,如果在表達式窗口中用鼠標左鍵拖曳的話能夠平移視圖。您也可以通過同時按下鼠標的左右鍵來 放大或縮小視圖,就像在正交視口(orthographic viewport)中的操作一樣。如果想要重新放置表達式圖標的位置,按住Ctrl鍵并左鍵拖曳圖標即可改變其位置。

現(xiàn)在實際操作一下,按住Ctrl鍵,然后左鍵拖曳VectorParameter圖標,使其與材質(zhì)節(jié)點頂部持平,如下圖所示。


圖6.23——練習對VectorParameter圖標的移動,然后將其放置在圖中所示的位置。

4. 現(xiàn)在我們將在表達式圖標和主表達式節(jié)點之間創(chuàng)建第一個連接。仔細觀察VectorParameter圖標。請注意在圖標的左側(cè)可以看到五個顏色各異的標簽。最上面的標簽呈黑色,接下來依次是紅、綠、藍和白色。它們是用于發(fā)送表達式信息的多個輸出端。紅、綠和藍色標簽分別用于將紅、綠和藍色信息傳遞給材質(zhì)。白色標簽用于傳遞alpha信息(在此條件下表示單個顏色的等效灰度級別),而黑色標簽則用于傳遞R、G、B值的組合色。請牢記在材質(zhì)表達式中, 輸出總是位于圖標左側(cè),而輸入總是位于右側(cè)。

為了建立第一個連接,用鼠標左鍵從VectorParameter的黑色標簽處進行拖曳。請注意從VectorParameter圖標 的黑色標簽處出現(xiàn)了一條黑線延伸到鼠標光標所在的位置。繼續(xù)拖曳鼠標,將此線連接至主材質(zhì)節(jié)點中對應(yīng)的漫射(Diffuse)通道的標簽上。


圖6.24——請注意此連線表示從表達式到材質(zhì)的連接。

注意: 如果您還沒有對VectorParameter的屬性做出任何改動的話,那么在完成此步驟之后您的材質(zhì)應(yīng)該會立即變?yōu)楹谏?

注意: 表達式中的各個R、G、B輸出端實際上并不輸出這些顏色。他們只輸出單個值用于反映當前被用于產(chǎn)生最終顏色的相應(yīng)顏色。這意味著獨立輸出的R、G、B都將在灰度光譜中以不同的灰階度表示,同時較高灰階度的值會反映為最終顏色。舉例來說,嫩黃色(RGB 值為1,1,0)會使R和G的值呈現(xiàn)白色,而G的值則呈現(xiàn)黑色。

5. 現(xiàn)在創(chuàng)建的材質(zhì)非常像黑色塑料。許多材質(zhì)表達式都帶有美工可調(diào)整的屬性,用以調(diào)整表達式的性質(zhì)。對于VectorParameter表達式來說,最重要的屬性是DefaultValue,它表現(xiàn)為一種顏色。這是因為顏色信息是以不同的紅色、綠色和藍色值的形式存在的,可以將其看作是一個向量。

雖然可以通過展開DefaultValue屬性用來調(diào)整其參數(shù)數(shù)值的方式改變整個顏色,我們這里只使用顏色拾取器這一簡單工具。打開的方法是點擊DefaultValue屬性旁邊的黑色條,然后點擊屬性窗口右側(cè)的小放大鏡按鈕。


圖6.25——顏色選擇器對話框。

在打開顏色選擇器對話框后選擇您喜歡的任意顏色,然后點擊OK按鈕。請注意材質(zhì)的顏色會根據(jù)新的選擇發(fā)生變化。

注意: 在本書成書過程中,此按鈕的工具提示為“顯示 Generic browser”。這是錯誤的,因為此按鈕打開標準Windows顏色選擇器對話框。同樣,請留意放大鏡按鈕旁邊的是 Use Mouse to Pick Color From Viewport(從視口使用鼠標拾取顏色) , 它的功能是顯而易見的。它的工作方式與Photoshop中的Eyedropper工具非常相似。

小技巧: 通過點擊實時預(yù)覽框(位于每個表達式圖標的左上角,為一個黑色小方塊),您可以強制 VectorParamter表達式圖標根據(jù)所選擇的顏色做出更新。點擊實時預(yù)覽框時,其變?yōu)辄S色,表示已經(jīng)被激活。另外一種方法是,勾選 VertorParameter屬性中的bRealtimePreview復(fù)選框。圖標的主色彩也會發(fā)生變化來顯示您所選擇的顏色。為了節(jié)約一些機器資源,在將圖標更新為當前選擇顏色之后關(guān)閉此功能。

6. 現(xiàn)在讓我們研究一下如何斷開材質(zhì)表達式的連接。按住Ctrl鍵,左鍵點擊連接漫射通道和“VectorParameter”(向量參數(shù))節(jié)點之間線條的任意一個端點。您就會發(fā)現(xiàn)線條消失了。要牢記在刪除連接過程中點擊的端點將決定連接斷開的類型。如果您選擇點擊VectorParameter圖標的輸出端,那么所有從此處發(fā)出的線條都會被移除。相反,如果您選擇點擊主材質(zhì)節(jié)點的輸入端,那么只有進入此特定輸入端的線條被移除。


圖6.26——連接線條現(xiàn)在被移除了。

7. 嘗試將VectorParameter的輸出端再連接至材質(zhì)的其它通道上。練習完成后,再將VectorParamater重新連接回漫射通道這一個通道上。

8. 現(xiàn)在您需要對實際材質(zhì)進行改動了。方法是:點擊材質(zhì)編輯器頂部的“Apply Changes”(應(yīng)用更改)按鈕, 其按鈕表面上有個綠色的大勾號。

9. 保存對文件包的更改。

<<<< 指南結(jié)束

現(xiàn)在為止您已經(jīng)看到了一個最基本的材質(zhì)表達式,但是也僅限于創(chuàng)建了一個表達式,并將其應(yīng)用于最簡單的示例中而已。不過在進一步研究 材質(zhì)編輯器之前,先花點時間研究一下各種可用的表達式,我們將向大家簡要地展示一下此類表達式的功用。請記住,或許您不會立刻發(fā)現(xiàn)這些表達式的價值。但隨著時間的 推移,您開始構(gòu)建越來越復(fù)雜的材質(zhì),這時就會發(fā)現(xiàn)所有的表達式在某些方面來說都是很有用的。

可用的材質(zhì)表達式

至本書編寫時,此列表已全部完成。

請注意,此列表基本上是以字母表順序進行介紹的,在使用材質(zhì)編輯器時您看到的表達式也是采用這種排序方式的。然而,這并不一定就是您研究各個表達式的先后順序。由于我們還未找到一種能將電子表格中對列表的排序方式應(yīng)用于書面的方法,我們決定為您提供一些整理后的列表,可以幫助您確定率先研究的材質(zhì)表達式,之后的字母順序列表僅供參考。

最常用的表達式

_數(shù)學(xué)運算表達式 _

貼圖坐標調(diào)整

材質(zhì)表達式列表

Abs(求絕對值)


圖6.27——求絕對值表達式的圖標。

Abs,也叫Absolute Value(絕對值),此表達式讀取一個輸入數(shù)據(jù),并將其絕對值作為輸出值。例如,如果表達式接收到的輸入值是-5,那么輸出值就是5。此表達式?jīng)]有狀態(tài)可改的屬性。

Add(加法)


圖6.28——加法表達式的圖標。

Add表達式讀取兩個輸入數(shù)據(jù),將其相加,所得的和作為輸出值。由于其執(zhí)行的是一個數(shù)學(xué)運算,所以一定要注意輸入此節(jié)點的數(shù)據(jù)類型。關(guān)鍵規(guī)則是在多數(shù)情況下,您希望相加得到的值與兩個加數(shù)的類型是一致的。

例如,如果您將一個三維向量(意思是有三個值,如R、G和B)與一個四維向量(如R、G、B和 A)相加的話,那么就會出現(xiàn)錯誤。不過需要說明的是,唯一的例外就是常量,它只有一個分量。在這種情況下,常數(shù)值會與其它向量中的每個分量進行相加。

AppendVector(向量合并)


圖6.29——向量合并表達式的圖標。

向量合并表達式讀取兩個分量作為輸入值,并將其組合成比原有分量數(shù)更多的向量。這就是說,您可以輸入兩個單個常數(shù),將其累加組合成一個等價的Constant2Vector(二維常數(shù)向量),或?qū)⒁粋二維向量中的常量和一個一維向量的常量組合成一個三維向量等等,以此類推。這在各種計算場合中都很有用,例如利用兩個一維向量的常量表達式創(chuàng)建出一個貼圖坐標,或為現(xiàn)有貼圖追加一個alpha通道。也可以用其解決不同數(shù)據(jù)類型之間的不兼容問題。

BumpOffset(凹凸偏移)


圖6.30——凹凸偏移表達式的圖標。

凹凸偏移表達式讀取兩個分量,Height(高度值)和UVs,用來創(chuàng)建虛擬位移貼圖(Virtual Displacement Mapping)效果。在使用法線貼圖來產(chǎn)生表面高度的物理差異假象時,此表達式能改善其效果。

高度值的輸入用作一個蒙板,用來確定位移的使用地點和幅度。UVs的輸入提供了貼圖坐標以供使用。它也有兩個參數(shù): HeightRatio(高度比)和ReferencePlane(參考平面)!案叨缺取笔窍袼匚灰频膶嶋H距離,或者更準確地說,就是凹凸高度與貼圖寬度之間的比值。材質(zhì)所應(yīng)用表面的面積與此比值相乘將得出實際位移量;因此較大表面會比較小表面表現(xiàn)出更大的位移。“參考平面”決定了位移的應(yīng)用方式。值為0表示向鏡頭方向位移,產(chǎn)生表面突出的效果,而值為1表示向鏡頭的反方向位移,產(chǎn)生表面凹陷的效果。值在0和1之間則用來指定方向的變化。缺省值為0.5,表示在高度值大于0.5時向鏡頭方向位移,在值小于0.5時向鏡頭的反方向位移,通常來說這樣的設(shè)置已經(jīng)足夠了。

CameraVector(相機位向量)


圖6.31——相機位向量表達式的圖標。

相機位向量表達式使您能夠在游戲運行時訪問相機的指向向量。在要求材質(zhì)于不同視角角度下呈現(xiàn)出不同效果時,此表達式非常有用,當然需實現(xiàn)此效果還需要別的表達式,如ReflectionVector(反射向量)表達式,下文將提及。

Ceil(值上限取整)


圖6.32——值上限取整表達式的圖標。

Ceil,又稱Ceiling表達式,是一個簡單的取整表達式,它讀取一個輸入值,并將其向上取整。這和通常的向下取整方式有所不同, 如對于數(shù)3.1282,此表達式將其向上取整為4。與之相反的是Floor(值下限取整)材質(zhì)表達式。

Clamp(區(qū)間值限定)


圖6.33——區(qū)間值限定表達式的圖標。

區(qū)間值限定表達式讀取三個輸入值:Input(輸入值)、Min(最小輸入值)以及Max(最大輸入值)。此表達式限制(或“取區(qū)間值”) 第一個輸入值的范圍,使其總是處于最小輸入值與最大輸入值的范圍內(nèi)。

ComponentMask(分量蒙板)


圖6.34——分量蒙板表達式的圖標。

ComponentMask(分量蒙板)表達式讀取一個任意大小的向量值。此表達式使您能夠從向量中挑選出允許輸出的分量。例如,你可以輸入一個貼圖樣本,并使用分量蒙板的屬性,這樣可以做到僅輸出貼圖的R和A值。提取后的信息將被看作為一個Constant2Vector(二維常數(shù)向量),其中只包含兩個分量。這意味著它能夠與一個Constant2Vector(二維常數(shù)向量)表達式或其它任何兩維向量進行加、減、乘、除的運算。

常量表達式

實質(zhì)上常量表達式就是材質(zhì)中存放靜態(tài)數(shù)據(jù)的地方。這些表達式?jīng)]有輸入事件;只有保留用戶輸入數(shù)據(jù)的屬性。這些值可以輸出到表達式的各部分中。有四種不同類型的常量表達式,其區(qū)別是每種表達式所包含維數(shù)不同,范圍從一維(如R)到四維(如R、G、B和A)。

Constant(常量)


圖6.35——常量表達式的圖標。

這是最簡單的一種常量表達式,因為其中只包含一個值,在屬性窗口中被讀作R值。

Constant2Vector(二維常數(shù)向量)


圖6.36——二維常數(shù)向量表達式的圖標。

此表達式包含兩個常量值,作為一個二維向量進行讀取。在屬性窗口中用作R值和G值。

Constant3Vector(三維常數(shù)向量)


圖6.37——三維常數(shù)向量表達式的圖標。

此表達式包含三個常數(shù)值,作為一個三維向量進行讀取。在屬性窗口中用作R值、G值和B值。

Constant4Vector(四維常數(shù)向量)


圖6.38——四維常數(shù)向量表達式的圖標。

此表達式包含四個常數(shù)值,作為一個四維向量的進行讀取。在屬性窗口中用作R值、G值、B值和A值。

Cosine(余弦)


圖6.39——余弦表達式的圖標。

余弦表達式僅讀取一個輸入值作為角度值,隨后此表達式計算此角度的余弦值,其運算結(jié)果作為輸出值。您或許知道,任意一個有規(guī)則的增性或減性序列取余弦將產(chǎn)生一個波形。正因如此,在很多情況下您可以使用計時(Time)表達式作為余弦表達式的輸入值,這樣就可以創(chuàng)建出隨時間變化的余弦波。這時,余弦表達式的唯一參數(shù)周期(period)將決定形成一個完整波形的周期時間。

CrossProduct(叉乘、外積)


圖6.40——叉乘表達式的圖標。

CrossProduct表達式讀取兩個輸入值,它們必須是包含相同維數(shù)的向量,或其中一個是一維向量常量而另一個是三維向量。 在第二種情形中,一元向量常量被看作為每個分量值相等的三維向量。表達式將其輸出為兩個輸入向量的叉乘結(jié)果。

DepthBiasedAlpha(深度偏移Alpha)


圖6.41——深度偏移Alpha表達式的圖標。

DepthBiasedAlpha(深度偏移Alpha)表達式是兩個主要用來消除尖銳邊緣的表達式之一(另外一個是DepthBiasedBlend——深度偏移混合),這些邊緣通常是由平面粒子實例(sprite particle)與幾何體交叉而產(chǎn)生的。如果回想一下第五章中創(chuàng)建的初級關(guān)卡,您可能會想起在創(chuàng)建蒸汽粒子并將其上升至天花板時,在粒子穿過關(guān)卡頂部時會形成一條邊緣明顯的直線。通過提供平面粒子實例與任何給定區(qū)域的在其之前繪制的物體的bias-based blend(bias-based混合),DepthBiasedAlpha(深度偏移Alpha)使您能夠解決這一問題。

雖然DepthBiasedAlpha(深度偏移Alpha)的工作機理聽起來有些復(fù)雜,但是在實際使用中是相當簡單的。您可以將其功能看作是將兩種東西的混合: 1) 具有包含DepthBiasedAlpha(深度偏移Alpha)表達式的一個平面實例,以及 2) destination buffer(目的地緩沖器) 中的當前內(nèi)容。

簡單來說, destination buffer(目的地緩沖器) 包含了所有在內(nèi)存中為指定像素進行渲染的物體。您可以將此表達式簡單的理解為,在給定粒子和任何可能已經(jīng)存在的對象之間進行混合。再次思考一下我們在第五章中創(chuàng)建的關(guān)卡。通過使用DepthBiasedAlpha(深度偏移Alpha)表達式,我們能夠在天花板(其中的每個像素都已存儲在 destination buffer(目的地緩沖器) 中)和粒子之間創(chuàng)建一個bias-based blend(bias-based混合),從而消除在兩者交叉時出現(xiàn)的尖銳邊緣。

DepthBiasedAlpha(深度偏移Alpha)表達式讀取兩個輸入值:Alpha值和Bias值。Bias值對目的地緩沖器中的內(nèi)容和材質(zhì)進行實際混合。Bias值讀取黑、白之間的值,值0(黑)表示完全顯示目的地緩沖器中的內(nèi)容,值1(白)表示完全顯示材質(zhì)的顏色。Alpha輸入值則直接通過表達式,不需要進行任何運算。如果沒有輸入Alpha值,則DepthBiasedAlpha(深度偏移Alpha)表達式的輸出值為1。

DepthBiasedAlpha(深度偏移Alpha)也有兩個參數(shù),bNormalize和BiasScale。BiasScale用作與Bias輸入值的乘數(shù),從而允許在材質(zhì)和目的地緩沖器內(nèi)容之間更大程度地進行混合。bNormalize屬性將深度值由范圍的近到遠映射到0到1的范圍。

注意: 此表達式在運行時工作量很大。認真考慮一下此種視覺效果是否確實值得花費巨大的機器處理能力的代價!還需注意的是,出于效率方面的考慮,此表達式優(yōu)于DepthBiasedBlend(深度偏移混合)表達式的使用。

DepthBiasedBlend(深度偏移混合)


圖6.42——深度偏移混合表達式的圖標。

DepthBiasedBlend(深度偏移混合)是DepthBiasedAlpha(深度偏移Alpha)表達式的稍復(fù)雜化版本,在這里允許輸入顏色值。此顏色值將通過輸入至Bias參數(shù)中與目的地緩沖器(如上所述)中的內(nèi)容進行混合。

注意: Epic強烈推薦盡可能地使用DepthBiasedAlpha(深度偏移Alpha)代替此表達式,因為此表達式有時會導(dǎo)致排序問題,這意味著您可能會遇到對象繪制的先后順序問題。

Desaturation(沖淡顏色)


圖6.43——沖淡顏色表達式的圖標。

Desaturation(沖淡顏色)表達式將抽出材質(zhì)中的顏色量,也可用說 減飽和作用 。其整體效果會使材質(zhì)中存在的顏色趨向于灰色。Desaturation(沖淡顏色)表達式使用兩個輸入值,第一個是具有任意維數(shù)的向量,而第二個必須是一個單值常量。第一個輸入數(shù)據(jù)根據(jù)第二個輸入數(shù)據(jù)的百分數(shù)對顏色進行減飽和作用。值0表示不降低飽和度,值1表示完全降低顏色飽和度,即以灰度方式進行渲染。

DestColor(目標色)


圖6.44——目標色表達式的圖標。

DestColor(目標色)表達式在當前屏幕位置目標處輸出顏色。此表達式僅在材質(zhì)的“混合模式”(BlendMode)屬性設(shè)置為 BLEND_Translucent、BLEND_Additive或BLEND_modulate時可用。例如,您可以使用此材質(zhì)顯示液體表面下的對象。但是,需要說明的是這是一個特定場合下的表達式,用到的機會不多。

DestDepth(目標深度)


圖6.45——目標深度表達式的圖標。

DestDepth(目標深度)表達式用于輸出所謂的“Z緩存深度”,它表示了像素與表面材質(zhì)的距離。當前繪制像素后面的對象距離越遠,Z緩存深度值就越大,因而DestDepth(目標深度)達式輸出的值就越大。它有一個參數(shù),歸一化(bNormalize),使數(shù)值根據(jù)范圍的近到遠映射至0到1的范圍。在本書成 書過程中,此參數(shù)尚未生效。

Divide(除法)


圖6.46——除法表達式的圖標。

Divide(除法)表達式使用兩個輸入值,用第一個數(shù)值除以第二個數(shù)值,所得結(jié)果作為輸出值。任何數(shù)據(jù)都可以與一維向量常量進行相除,但在其它任何情況下,輸入的除數(shù)和被除數(shù)必須具有相等的維數(shù)。

DotProduct(點乘、內(nèi)積)


圖6.47——點乘表達式的圖標。

DotProduct(點乘、內(nèi)積)表達式的功能與叉乘表達式類似,但是對向量執(zhí)行不同類型的運算。此表達式讀取兩個輸入值,它們必須是包含相同維數(shù)的向量,或其中一個是一維向量常量而另一個是三維向量常量。在第二種情形中,一維向量被看作是每個分量值相等的三維向量。此表達式的輸出為兩個輸入向量的點乘結(jié)果。

FlipBookSample(翻書采樣)


圖6.48——翻書采樣表達式的圖標。

FlipBookSample(翻書采樣)表達式讀取翻書(FlipBook)貼圖作為其唯一參數(shù)。FlipBook貼圖是將一系列圖像作為單個貼圖進行處理的貼圖,從而使您能夠在材質(zhì)中抽取各種不同的圖像序列或動畫進行采樣。另外,它與后文所述的貼圖采樣(TextureSample)是相同的。FlipBookSample(翻書采樣)的輸出值為RGB值、R值、G值、B值和Alpha值。它也可以讀取向量作為輸入值,用來確定貼圖使用的貼圖坐標。

Floor(值下限取整)


圖6.49——值下限取整表達式的圖標。

值下限取整表達式與值上限取整表達式的處理方法相反,它不是將浮點數(shù)向上取整,而是向下取整。例如,數(shù)值7.825輸入到值下限取整表達式時輸出的結(jié)果為7。這也可以被稱作截斷,因為所有數(shù)字的小數(shù)點之后的部分都被“切除”了。

Frac(取小數(shù)值)


圖6.50——取小數(shù)值表達式的圖標。

Frac,也叫Fraction表達式只讀取一個輸入值,并輸出此輸入數(shù)值的小數(shù)部分。例如,輸入數(shù)值4.356將輸出為0.356。

Fresnel(菲涅爾)


圖6.51——菲涅爾表達式的圖標。

菲涅爾表達式是多種功能的復(fù)雜綜合:讀取像素的法線向量,并在向量指向鏡頭時輸出值0,在法線方向與相機視角垂直時輸出1。對于一個理想球體,, 這意味著(假設(shè)與漫射通道直接連接)無論從何種角度來觀察,球殼中心都是黑色的,而外部邊緣是白色的。

菲涅爾表達式讀取一個輸入值(Normal),其數(shù)值可以是一個三維向量常量或法線貼圖。它有一個參數(shù),指數(shù)(Exponent)。此表達式基于輸入法線值來計算落差,并用指數(shù)來確定落差的銳利程度,最后輸出結(jié)果。

If(條件表達式)


圖6.52——條件表達式If的圖標。

條件表達式If在材質(zhì)中做出實時條件判斷。If表達式讀取五個輸入值。前兩個A和B用于相互比較。其它三個,A>B、A=B 和A<B根據(jù)判斷條件是否符合將結(jié)果傳遞到輸出端。

LightVector(光照向量)


圖6.53——光照向量表達式的圖標。

LightVector(光照向量)表達式使您能夠訪問當前用于光照計算的光源方向的向量。當材質(zhì)使用MLM_Custom光照模型計算光照時非常有用。

LinearInterpolate(線性插值)


圖6.54——線性插值表達式的圖標。

線性插值表達式讀取三個輸入值,A、B和Alpha。A和B輸入值基于Alpha或蒙板的值進行混合;旌系慕Y(jié)果傳遞到輸出端。Alpha值為0時即輸出A,Alpha值為1則輸出B。Alpha值在0和1之間則相應(yīng)的將兩個輸入進行混合。

MeshEmitterVertexColor(網(wǎng)格物體發(fā)射器頂點色)


圖6.55——網(wǎng)格物體發(fā)射器頂點色表達式的圖標。

MeshEmitterVertexColor(網(wǎng)格物體發(fā)射器頂點色)表達式僅用于網(wǎng)格物體發(fā)射器粒子系統(tǒng)(mesh emitter particle systems),此系統(tǒng)發(fā)射出靜態(tài)網(wǎng)格物體實例。以此方式發(fā)射的每一網(wǎng)格物體都有一個顏色屬性,而此表達式的輸出色則作為整個網(wǎng)格物體的頂點顏色,從而避免不得不每幀都訪問網(wǎng)格物體的頂點顏色。此表達式不以每一頂點為基礎(chǔ),而是為整個網(wǎng)格物體的頂點創(chuàng)建一個顏色。

MeshSubUV(網(wǎng)格物體子UV)


圖6.56——網(wǎng)格物體子UV表達式的圖標。

與網(wǎng)格物體發(fā)射器頂點色表達式類似,MeshSubUV(網(wǎng)格物體子UV)也僅用于mesh emitter particle systems(網(wǎng)格物體發(fā)射器粒子系統(tǒng))。此表達式讀取multi-frame(多幀序列貼圖)作為其唯一的參數(shù),用于發(fā)射器所發(fā)射的網(wǎng)格物體。其它方面與下文所述的貼圖采樣(TextureSample)相同。由于避免了每幀內(nèi)重新計算每個網(wǎng)格物體粒子的貼圖坐標,使用此表達式能夠節(jié)省計算時間。

Multiply(乘法表達式)


圖6.57——乘法表達式的圖標。

乘法表達式讀取兩個輸入值,將其相乘后輸出結(jié)果。一維向量常量可以與其它任何數(shù)值相乘,但是其它維數(shù)不一致的向量不能進行相乘。

Normalize(單位化)


圖6.58——單位化表達式的圖標。

單位化表達式讀取一個輸入值,并將其長度設(shè)為1,或?qū)⑵洹皢挝换。這就是說計算輸入向量的長度,并將其中的每個分量除以此長度。最終得到的向量作為輸出值。

OneMinus(一減去)


圖6.59——一減去表達式的圖標。

OneMinus(一減去)表達式讀取任意大小的向量作為輸入值,用1減去此輸入值并輸出結(jié)果。例如,輸入數(shù)值0.15將得到輸出0.85。這通常 稱作為“反相”此數(shù)值。如果您使用一個貼圖作為蒙板而想將其反相,或想反相特定貼圖的顏色,那么這個功能就非常有用了。

Panner(平移器)


圖6.60——平移器表達式的圖標。

Panner(平移器)表達式用于移動貼圖的UV坐標。它讀取一個兩維向量以覆蓋默認的貼圖坐標,并將計時(Time)的標量值作為輸入值。它也有兩個參數(shù) (SpeedX(X方向速度)和SpeedY(Y方向速度)),均為浮點數(shù),用來確定在X軸和Y軸方向上的移動速度。

ParticleSubUV(粒子子UV)


圖6.61——粒子子UV表達式的圖標。

粒子子UV表達式對用于粒子的multi-frame(多幀)輸入貼圖進行采樣,作為其唯一的參數(shù)。貼圖中的各不同幀就可以在Cascade粒子編輯器 (Cascade particle editor)中產(chǎn)生動畫效果。例如,您有一個multi-frame(多幀)貼圖,它是許多不同的火光搖曳圖像,那么就可以在每個單體粒子上將這些圖像幀進行混合,產(chǎn)生出粒子動畫的假象。

PixelDepth(像素深度)


圖6.62——像素深度表達式的圖標。

PixelDepth(像素深度)表達式與DestDepth(目標深度)表達式類似,但是并不輸出位于給定像素之后的物體Z軸深度(或距離),它輸出的是當前像素本身的Z軸深度。它有一個參數(shù):單位化(bNormalize),用來將數(shù)值依據(jù)范圍的近到遠映射到0到1的范圍。在本書成書過程中,此參數(shù)尚未生效。

Power(求冪值)


圖6.63——求冪值表達式的圖標。

求冪值表達式讀取兩個輸入值,基數(shù)(Base)和指數(shù)(Exp)。此表達式將指數(shù)值(Exp)作為基數(shù)值的指數(shù)并進行冪運算。運算結(jié)果作為輸出值。

注意: 當Base(基值)在0到1之間時(大部分顏色值都是如此),此表達式類似調(diào)整對比度,只保留最亮的值。

ReflectionVector(反射向量)


圖6.64——反射向量表達式的圖標。

反射向量表達式使您能夠訪問用來表示CameraVector(相機向量)反射通過被應(yīng)用材質(zhì)的物體表面的法線的方向。在基于表面和鏡頭的相關(guān)角度對材質(zhì)進行調(diào)整時,此功能是非常有用的。然而,此表達式僅在需要進行底層控制時使用。在大多數(shù)情況下,類似問題使用菲涅爾表達式就足夠了。

Rotator(旋轉(zhuǎn)器)


圖6.65——旋轉(zhuǎn)器表達式的圖標。

旋轉(zhuǎn)器表達式用于旋轉(zhuǎn)貼圖的UV坐標。它讀取一個兩維向量來覆蓋默認的貼圖坐標,并用計時(Time)的標量值作為輸入值。它有三個參數(shù),均為浮點數(shù)。CenterX和CenterY確定旋轉(zhuǎn)的中心,而Speed則確定每秒進行循環(huán)旋轉(zhuǎn)的速度。

ScalarParameter(標量參數(shù))

參見本節(jié)最后所述的參數(shù)表達式。

SceneDepth(場景深度)


圖6.66——場景深度表達式的圖標。

場景深度表達式跟目標深度表達式(DestDepth)非常相似,但它不計算單個像素的深度,而是在整個關(guān)卡場景中對深度進行采樣。它有一個參數(shù),單位化(bNormalize),用以將數(shù)值按照范圍的近到遠映射至0到1的范圍。在本書成書過程中,此參數(shù)尚未生效。

SceneTexture(場景貼圖)


圖6.67——場景貼圖表達式的圖標。

場景貼圖表達式使您能夠?qū)鼍暗墓庹召N圖進行采樣。當您在關(guān)卡設(shè)計中構(gòu)建光照時,會在內(nèi)部產(chǎn)生一張貼圖包含了所有你的光照貼圖數(shù)據(jù)。場景貼圖表達式使您能夠為采樣目的訪問這些信息。

ScreenPosition(屏幕位置)


圖6.68——屏幕位置表達式的圖標。

屏幕位置表達式用于輸出當前指定像素在屏幕中的位置。像素處于屏幕空間中的位置,范圍從[-1,-1],即屏幕左下角,到[1, 1],即右上角。它有一個參數(shù),屏幕校準(ScreenAlign),用來將坐標范圍改動為從[0, 0]到[1, 1],這是非常有用的,可以作為一組貼圖坐標用以將貼圖與屏幕對齊。為此,您要將屏幕位置輸入到一個分量蒙板,并僅輸出R值和G值傳遞給指定貼圖的UVs。

Sine(正弦)


圖6.69——正弦表達式的圖標。

正弦表達式與余弦表達式 除了顯而易見的差別之外,在本質(zhì)上是一樣的;它對輸入進來的角度執(zhí)行正弦運算而不是余弦運算。在大多數(shù)情況下,此表達式會連接至一個計時(Time)表達式 ,從而在游戲運行中產(chǎn)生動畫效果。如此設(shè)置時,Sine表達式的唯一參數(shù)——周期(Period)將決定形成一個完整波形的周期時間。

SquareRoot(開平方根)


圖6.70——開平方根表達式的圖標。

開平方根表達式讀取一個輸入值并輸出此輸入值的平方根值。此表達式只能接受一元常量。

Subtract(減法)


圖6.71——減法表達式的圖標。

減法表達式讀取兩個輸入值,用第一個減去第二個并將結(jié)果輸出。一維向量常量可以與任何數(shù)值進行減法運算,但是其它維數(shù)不等的向量之間不能進行減法運算。

TextureCoordinate(貼圖坐標)


圖6.73——貼圖坐標表達式的圖標。

多邊形網(wǎng)格物體可以擁有一套以上的貼圖坐標。這些套貼圖坐標存儲在所謂的“UV通道”中。貼圖坐標表達式提供了對網(wǎng)格物體的不同UV通道的存取,同樣可以用于貼圖重復(fù)或平鋪。其坐標索引(CoordinateIndex)屬性使您能夠選擇將UV通道應(yīng)用于其它表達式(如貼圖采樣表達式 ),平鋪(Tiling)屬性則控制了貼圖在表面上重復(fù)的次數(shù)。貼圖坐標只有一個輸出值,輸出值是一個二維向量能夠提供一組新的貼圖坐標,用以覆蓋接收表達式的原貼圖坐標。

TextureSample(貼圖采樣)


圖6.74——貼圖采樣表達式的圖標。

貼圖采樣表達式可能是所有表達式中最常用的,因為它提供了對用戶創(chuàng)建貼圖的訪問。它讀取一個貼圖作為其唯一參數(shù),并將存儲在貼圖中的數(shù)據(jù)提取出來作為輸出值。這些輸出數(shù)據(jù)為RGB值、R值、G值、 B值和Alpha值。它也可以讀取一個用來確定貼圖坐標的二維向量作為輸入值。

TextureSampleParameter2D(貼圖采樣參數(shù):2D)

參見本節(jié)最后所述的參數(shù)表達式。

TextureSampleParameterCube(貼圖采樣參數(shù):立方體)

參見本節(jié)最后所述的參數(shù)表達式。

TextureSampleParameterMovie(貼圖采樣參數(shù):影片)

參見本節(jié)最后所述的參數(shù)表達式。

Time(計時)


圖6.75——計時表達式的圖標。

計時表達式用來為其它由時間決定行為的表達式提供時間段,如平移器、旋轉(zhuǎn)器、正弦或余弦表達式,使此類變化能夠在游戲運行中持續(xù)。忽略游戲暫停(bIgnorePause)屬性使時間保持正常進展,即使游戲暫停也不受影響。

注意: 平移器和旋轉(zhuǎn)器表達式不一定需要一個時間節(jié)點,但是如果有一個受其它表達式影響的自定義計時器,則可以將其插入平移器或旋轉(zhuǎn)器表達式中。

Transform(變換)


圖6.76——坐標變換表達式的圖標。

變換表達式使您能夠?qū)⑷我庖粋三維向量轉(zhuǎn)換至不同的坐標系,如世界空間(world space)、視圖空間(view space)和本地空間(local space)。此表達式 讀取一個輸入值,其數(shù)值必須為一個三維、向量,然后將輸入值從切線空間(tangent space)變換到由變換類型(TransformType)參數(shù)指定的空間內(nèi)。此參數(shù)的可選項有TRANSFORM_World、TRANSFORM_View和 TRANSFORM_Local三個。此表達式 對立方體貼圖(cubemaps)的采樣非常有用,使您能夠?qū)⒎ň貼圖變換到世界空間,而不是切線空間內(nèi)。本章稍后會講解更多的立方體貼圖信息。

VectorParameter(向量參數(shù))

參見本節(jié)最后所述的參數(shù)表達式。

VertexColor(頂點色)


圖6.77——頂點色表達式的圖標。

頂點色表達式的功能與上文討論的MeshEmitterVertexColor(網(wǎng)格物體發(fā)射器頂點色)表達式的功能相類似。不過,此表達式主要用于平面實例發(fā)射器(sprite emitters)而不是網(wǎng)格物體發(fā)射器(mesh emitters)。頂點色表達式為當前處理的fragment(片段)輸出頂點顏色。

參數(shù)表達式

將參數(shù)表達式從上述列表中單獨抽出來討論是因為它們具有非常特殊的功能,將它們?nèi)糠旁谝黄鹩懻撌亲钜子诶斫獾。由于材質(zhì)在游戲的最終外觀效果上起著至關(guān)重要的作用,從某種程度上說這與玩家和材質(zhì)進行某種方式的互動功能同樣重要,或者對于材質(zhì)本身來說,能夠以特定的方式發(fā)生變化也非常重要。舉例說明,星際飛船物體的材質(zhì)上有很多發(fā)光的高亮標志,在飛船受損時這些材質(zhì)的顏色由藍變紅,或者您想要將光滑和破舊版本的貼圖進行混合,從而在幾秒鐘內(nèi)使對象呈現(xiàn)出快速老化和被侵蝕的狀態(tài)。參數(shù)表達式使您能夠為材質(zhì)創(chuàng)建各種元素并將其“綁定”為Kismet序列、Matinee序列和其它更多序列。 一言以蔽之,參數(shù)表達式 能夠在不重新編譯材質(zhì)的情況下對材質(zhì)的各種部分進行實時的外部調(diào)整。

注意: 下述每個表達式都可以在不創(chuàng)建Kismet或Matinee序列的情況下使用。例如,您可能會發(fā)現(xiàn)用材質(zhì)中的向量參數(shù)表達式為材質(zhì)添加顏色比用四維常數(shù)向量表達式容易得多,這是由于向量參數(shù)中包含了一個顏色選擇器,也就省去了您將參數(shù)表達式連接至外部影響的麻煩了。

下列所述為可用的參數(shù)表達式列表:

ScalarParameter(標量參數(shù))


圖6.78——標量參數(shù)表達式的圖標。

標量參數(shù)表達式是常量表達式的參數(shù)版本。它只容納一個浮點數(shù)。

VectorParameter(向量參數(shù))


圖6.79——向量參數(shù)表達式的圖標。

向量參數(shù)表達式是四維常數(shù)向量的參數(shù)版本。它容納了四個浮點數(shù)。

TextureSampleParameter2D(貼圖采樣參數(shù):2D)


圖6.80——貼圖采樣參數(shù):2D表達式的圖標。

貼圖采樣參數(shù):2D 表達式是貼圖采樣的參數(shù)版本,容納一個常規(guī)貼圖。

TextureSampleParameterCube(貼圖采樣參數(shù):立方體)


圖6.81——貼圖采樣參數(shù):立方體表達式的圖標。

貼圖采樣參數(shù):立方體 表達式是貼圖采樣表達式的參數(shù)版本,專用于容納一個cubemap(立方體貼圖)。

TextureSampleParameterMovie(貼圖采樣參數(shù):影片)


圖6.82——貼圖采樣參數(shù):影片表達式的圖標。

貼圖采樣參數(shù):影片表達式是貼圖采樣表達式的參數(shù)版本,專用于容納一段影片。

材質(zhì)創(chuàng)建

既然我們已經(jīng)對所有可用的材質(zhì)表達式進行了一番研究,讓我們看看如何才能將它們應(yīng)用到一些簡單的材質(zhì)中,以獲得各類效果。在以下幾個指南中,您將創(chuàng)建一些驗證性(proof-of-concept)材質(zhì),以使您能更好地理解這些表達式的功用,以及將其運用到材質(zhì)中的方法?梢詫⑾铝兄改虾唵蔚乜醋魇菐椭煜ひ恍┍磉_式和材質(zhì)網(wǎng)絡(luò)開發(fā)的練習。同時要牢記的是,我們將循序漸進的構(gòu)建材質(zhì),意思是說我們將在問題出現(xiàn)時給出其解決方案,而不是一下子使用所有必需的表達式來堆砌出一種材質(zhì)。使用這種方式,相信您能夠?qū)W到一種行之有效、腳踏實地的方法來創(chuàng)建材質(zhì)。

不過,為創(chuàng)建一個有趣的材質(zhì),第一步是得到所需的貼圖。貼圖為我們提供了用于材質(zhì)內(nèi)部的實際圖像。我們可以將其用作顏色、對現(xiàn)有效果進行修改、確定各種效果在材質(zhì)創(chuàng)建過程中放置或映射的位置,以及其它各種各樣的用途。為了使用貼圖,必須首先將其導(dǎo)入到UnrealEd中。然而,在您將其導(dǎo)入之前,還有一些貼圖創(chuàng)建方面的問題要思考。

下列是在考量Unreal Engine 3.0中貼圖創(chuàng)建時的幾點指導(dǎo)。

在接下來的指南中,我們將看一下制作第一個貼圖的過程。

指 南6.3——將貼圖導(dǎo)入文件包

注意: 您可以繼續(xù)前一的指南,也可簡便地新建一個文件包。

1. 讓我們先從獲得貼圖開始。在Generic browser中選擇File(文件) > Import(導(dǎo)入)。在DVD的此章內(nèi)容文件中包含了兩個貼圖,其名稱為 tex_wall_stone_blocks_dark 和 tex_wall_stone_blocks_normal 。將這兩個文件全部選中,然后點擊OK按鈕。


圖6.83——瀏覽并找到上圖所示的兩個指定貼圖并點擊OK按鈕。

2. 導(dǎo)入(Import)對話框彈出,它帶有兩組選項供您選擇。上半部分標注為Info(信息),包含很多與之前我們見到的信息相同的部分,如指定文件包、組和實體的名稱等。下面的Options(選項)區(qū)域包含幾項設(shè)置,用來控制導(dǎo)入過程中的發(fā)生事件,如是否讓新建的材質(zhì)使用此貼圖,及若為“是”,你希望材質(zhì)到哪里連接貼圖。

在Info(信息)區(qū)域,輸入下列信息:

在Options(選項)區(qū)域,選中DeferCompression(不壓縮)復(fù)選框。如此在文件包保存之前將不對貼圖進行壓縮,從而加快工作流。


圖6.84——將上述信息輸入到Import(導(dǎo)入)對話框。

以上設(shè)置完成后,點擊Okay All按鈕。

注意: 將貼圖導(dǎo)入UnrealEd可能需要幾分鐘時間。請耐心等待!

3. 現(xiàn)在這兩個貼圖出現(xiàn)在IntroToMaterials文件包中,然而您會注意到,如果選擇了Textures組,您將只能看到貼圖,如果選擇的是 Materials組,那么只能看到材質(zhì)。如果您想同時看到這兩者,那么選擇IntroToMaterials文件包本身而不要選擇其中的一個組。

在選中IntroToMaterials文件包后,選擇 File(文件) > Save(保存) 保存對文件包的改動。這時可以關(guān)閉材質(zhì)編輯器了。

<<<< 指南結(jié)束

我們的貼圖已經(jīng)裝載到文件包中了,但是為了能在材質(zhì)中使用它們,需要在使用前利用貼圖采樣表達式對其進行采樣。在下面的指南中,我們將學(xué)習這種方法。

指 南6.4——創(chuàng)建一個磚墻材質(zhì)

1. 打開BasicBrickRoom關(guān)卡,此文件包含在配套DVD光盤本章的內(nèi)容中。其中包含兩個由走廊連接的立方體形狀的房間,以及一些基本的光照。

2. 打開Generic browser,運用在指南6.2中學(xué)到的技巧,在New(新建)對話框中使用下列數(shù)值新建一個材質(zhì):

3. 我們需要我們的貼圖在材質(zhì)里被采樣。請按照下列步驟完成此項工作:

a. 從表達式列表中將一個新的貼圖采樣表達式(TextureSample) 拖曳到材質(zhì)編輯器的表達式窗口中。

b. 按住Ctrl鍵拖曳貼圖采樣表達式圖標,使其恰好處在材質(zhì)節(jié)點漫射通道的右側(cè)。


圖6.85——將貼圖采樣表達式按圖示位置放置。

c. 現(xiàn)在我們需要將 wall_stone_blocks_dark 貼圖與此新的貼圖采樣表達式關(guān)聯(lián)起來。首先確保在Generic browser中選中了貼圖?捎猛ㄟ^查看貼圖周圍的淡綠色邊界來檢驗是否將其選中。

然后在材質(zhì)編輯器中選擇貼圖采樣,并在材質(zhì)編輯器的屬性窗口中點擊Texture Property(貼圖屬性),然后點擊用綠色箭頭表示的Use Current Selection in Browser(使用瀏覽器中的當前選項)按鈕, 它位于屬性的右側(cè),F(xiàn)在貼圖圖像將顯示在貼圖采樣中。

注意: 貼圖本身比較暗。貼圖采樣可能呈現(xiàn)出黑色。這很正常。

4. 重復(fù)步驟3所描述的過程新建一個貼圖采樣,并將其與 wall_stone_blocks_normal 貼圖相關(guān)聯(lián),但請將此新建貼圖采樣放在材質(zhì)節(jié)點的法線通道的右側(cè)。


圖6.86——將第二個貼圖采樣表達式按上圖位置放置。

5. 現(xiàn)在我們需要將這兩個貼圖連接至材質(zhì)。請按下列步驟進行:

a. 從包含顏色貼圖(不是法線貼圖)的貼圖采樣上的黑色RGB標簽位置拖出一條連線 ,將其連接至材質(zhì)的漫射通道。

b. 從包含法線貼圖的貼圖采樣上的黑色RGB標簽位置拖出一條連線,將其連接至材質(zhì)的法線通道。

6. 點擊Apply Changes(應(yīng)用更改)按鈕, 它位于材質(zhì)編輯器界面頂部,并保存文件包。

7. 在透視視口位置,右鍵點擊并從關(guān)聯(lián)菜單中選擇 Select All Surface(選中所有表面) 。然后在Generic browser中點擊新建的 mat_BrickWall 材質(zhì),從而把材質(zhì)應(yīng)用到關(guān)卡中的所有表面上。


圖6.87——現(xiàn)在材質(zhì)將應(yīng)用到關(guān)卡中的所有表面。

8. 保存當前關(guān)卡。

<<<< 指南結(jié)束

現(xiàn)在我們已經(jīng)將一些貼圖連接至材質(zhì)上了,但是同時也出現(xiàn)了一些小問題。首先是我們的磚塊看起來非常有光澤,好象是涂了一層蠟一樣。還有漫射貼圖非常暗,如果能夠?qū)⑵湔{(diào)亮一點就好了。在接下來的指南中,通過使用一些新的表達式,我們將對材質(zhì)的外觀進行小幅度的調(diào)整。

指南6.5——使用材質(zhì)表達式來修改貼圖

1. 繼續(xù)先前的指南,或者在配套DVD的本章文件包中打開指南10-5的材質(zhì)文件。

2. 我們需要將貼圖變亮一點。通過使用乘法表達式(Multiply)可以實現(xiàn)此效果。從表達式列表中選擇乘法表達式(Multiply)并將其拖動到表達式窗口中。將其放置在漫射貼圖采樣和材質(zhì)節(jié)點之間。這可能需要重新調(diào)整貼圖采樣圖標的位置。


圖6.88——新的乘法表達式(Multiply)添加到表達式窗口中。

3. 連接黑色磚墻貼圖采樣的RGB輸出端與乘法表達式(Multiply)的B輸入端。


圖6.89——來自貼圖采樣的RGB數(shù)據(jù)連接至B輸入端。

4. 將乘法表達式的輸出端連接至漫射通道,覆蓋現(xiàn)有的連接。


圖6.90——乘法表達式連接了材質(zhì)。

注意: 在進行此操作時,您會收到一條出錯信息。這是因為乘法表達式目前只連接了一個輸入端。

5. 我們需要把第二個輸入值傳遞給乘法表達式。這需要一個容納單一浮點值的常量表達式(Constant)。現(xiàn)在從表達式列表中拖一個出來來新建常量表達式(Constant)。將其放置在漫射貼圖采樣的正下方。


圖6.91——我們添加了一個新建的常量表達式。

6. 將常量表達式的輸出端連接至乘法表達式的A輸入端。


圖6.92——常量表達式的值已連接至乘法表達式。

注意: 此步驟完成時就不會提示出錯信息了,但是材質(zhì)會呈現(xiàn)出亮黑色。這是因為新建常量表達式的默認值為0,也就是說,當前的材質(zhì)的顏色值是與0相乘的,這就導(dǎo)致出現(xiàn)了黑色。

7. 選中此新建常量表達式,進入屬性窗口并將R值設(shè)置為5。這不僅會使顏色恢復(fù)正常,而且還會使顏色增強了。您可以自由調(diào)整此數(shù)值,直到得到滿意的結(jié)果。

注意: 漫射通道可接受大于1的R、G和B值。如果您將漫射值調(diào)得足夠高,材質(zhì)就會呈現(xiàn)出發(fā)光的效果。您可以通過將常量表達式的R值設(shè)置為1000左右來測試此效果。不過在測試完后別忘記把數(shù)值改回來!

8. 現(xiàn)在我們的材質(zhì)看起來已經(jīng)足夠亮,能夠很方便的觀察到了,但是還是有點晃眼?梢酝ㄟ^將一張暗的貼圖插入到當前磚墻的高光通道修正此問題。當然,您也可以簡單地使用一個常量來實現(xiàn)此效果,不過使用貼圖卻能夠逐個像素地控制區(qū)域的發(fā)光性。我們的黑色磚墻貼圖已經(jīng)變得相當完美了,但是我們并不是真的需要其實際顏色值。

將黑色磚墻貼圖采樣的白色Alpha輸出端連接至材質(zhì)節(jié)點的高光通道,F(xiàn)在您會看到磚塊還保持一定的光澤度,就好象有點潮濕的感覺,而磚塊之間泥漿填充的縫隙不再發(fā)光了。這就是使用貼圖而不是簡單的常量值帶來的好處,常量值會在整個表面上應(yīng)用相同程度的光澤。


圖6.93——漫射貼圖采樣的Alpha輸出端已連接至材質(zhì)的高光通道。

9. 應(yīng)用(Apply Changes)材質(zhì)的更改,并保存文件包。

<<<< 指南結(jié)束

現(xiàn)在我們的材質(zhì)看起來更舒服了,但是如果讓磚塊看起來更大一些就更棒了。有兩種方法可以解決此問題。第一個是對材質(zhì)本身進行操作,通過使用貼圖坐標表達式來調(diào)整貼圖的平鋪。第二種方法是在一個表面接著一個表面的基礎(chǔ)上控制貼圖的放置,我們將在隨后的指南中練習這種方法。

注意: 下述方法僅應(yīng)用于BSP表面。要在網(wǎng)格物體上調(diào)整貼圖放置,就需要在3D應(yīng)用程序中調(diào)整其UV貼圖坐標,或者在材質(zhì)中進行簡單的調(diào)整,如使用平移器、旋轉(zhuǎn)器或貼圖坐標表達式進行貼圖的平鋪。

表面屬性(Surface Properties)

關(guān)卡中的每個BSP表面包含一系列的信息,使您能夠控制材質(zhì)放置于表面的方式。這對于調(diào)整材質(zhì)的布置非常有用,因為它不需要打開材質(zhì)以對其表達式網(wǎng)絡(luò)組織進行改動。有兩種方法可以調(diào)整表面屬性。一種是通過表面屬性(Surface Properties)對話框,它提供大量的精確的調(diào)整功能。另外一種是使用貼圖對齊模式(Texture Alignment mode),一種直觀的基于控件(widget)的貼圖放置系統(tǒng)。

表面屬性對話框

若選擇了任意BSP表面,就可以通過選擇 View > Surface Properties 來調(diào)整貼圖的放置屬性。表面屬性(Surface Properties)對話框彈出后,為您提供一個基于界面的系統(tǒng),用于調(diào)整貼圖放置于表面的方式。


圖6.94——表面屬性對話框及其完備的貼圖調(diào)整選項。

在下一指南中,我們將研究如何使用此窗口來調(diào)整貼圖在BSP表面的放置位置。請注意本章不會涉及光照選項的部分,因為這一部分更適合于在光照一章中進行討論。

指 南6.6——表面屬性對話框?qū)υ捒颍浩揭、旋轉(zhuǎn)和縮放

注意: 在此指南的操作過程中,會導(dǎo)致貼圖錯位。不過現(xiàn)在請不要擔心,我們將在隨后的指南中將其改正過來!

1. 繼續(xù)前一指南,或者打開配套DVD本章內(nèi)容中的指南10-6地圖文件。

2. 選擇關(guān)卡中某個房間的地板,從UnrealEd的主菜單欄中選擇 View > Surface Properties 。這將打開表面屬性對話框。調(diào)整窗口的位置,以便于仍能在透視視口中觀察到地板表面發(fā)生的變化情況。


圖6.95——確保您能夠看到選中表面以及表面屬性窗口。

3. 我們從貼圖的簡單平移開始學(xué)習。在表面屬性窗口的頂部,您會看到Pan(平移)組,其中包含一系列按鈕,通過點擊這些按鈕,您可用在U或V方向上以按鈕所標識的Unreal單位值來移動貼圖。試著多次點擊這些按鈕來觀察貼圖的上下左右的移動方式。若點擊custom(自定義)按鈕,會彈出一個對話框,可以在其中輸入平移的具體數(shù)值。


圖6.96——Pan平移組。

還請注意,在點擊按鈕的同時按住Shift鍵會使貼圖按相反的方向移動。

注意: 這些平移只能按整數(shù)單位進行。您不能用類似于0.4個單位這樣的數(shù)字來平移貼圖。

4. 現(xiàn)在讓我們來學(xué)習一下旋轉(zhuǎn)。在平移組旁邊您會看到Rotation(旋, , 轉(zhuǎn))組,它也, 有一系列的按鈕。點擊按鈕將使貼圖按照給定數(shù)值進行旋轉(zhuǎn)。Custom(自定義)按鈕使您能夠輸入自定義的數(shù)值。在按住Shift鍵時,這些, , 按鈕也會造成向相反方向旋轉(zhuǎn)的效果。


圖6.97——旋轉(zhuǎn)組。

在完成以上操作后,將地板貼圖旋轉(zhuǎn)到一個有趣的角度,如45度等。

注意: 與平移按鈕不同,您可以在Custom(自定義)字段內(nèi)輸入浮點值,例如在自定義字段輸入數(shù)值0.2。

5. 現(xiàn)在來看Scaling(縮放)組?s放貼圖可以用同比(即U、V方向同時縮放)或非同比(即只在一個方向上縮放)的方式實現(xiàn)。這里沒有用于縮放的按鈕,不過有一個下拉列表能夠選擇常用的縮放比例。


圖6.98——縮放組。

a. 選擇關(guān)卡中的一面墻。在表面屬性窗口中確保選中Simple(簡易)單選按鈕,然后在下拉列表中選擇一個數(shù)值或輸入一個自定義數(shù)值。

在完成后點擊縮放組內(nèi)的Apply(應(yīng)用)按鈕。

注意: 如果選擇了數(shù)值1,您會發(fā)現(xiàn)沒有發(fā)生任何變化。這是因為數(shù)值1相當于100%。由于貼圖按照默認的100%進行縮放,所以數(shù)值1不會產(chǎn)生任何變化。任意選擇其它數(shù)值并再次點擊Apply(應(yīng)用)。

b. 現(xiàn)在您進行的是絕對縮放操作,這意味著將貼圖的初始尺寸默認為100%。例如,如果輸入數(shù)值0.5,貼圖總會變?yōu)槠涑跏汲叽绲囊话氪笮 ?

您也可以進行相對縮放操作,意思是將當前貼圖的尺寸認作100%。通過選中Relative(相對)復(fù)選框,在Simple(簡易)縮放字段中輸入 0.75并點擊幾次Apply(應(yīng)用)來試驗其效果。您會發(fā)現(xiàn)每次后點擊貼圖尺寸都會變得更小。這是因為每次應(yīng)用時都將貼圖大小變?yōu)楫斍暗?5%。

通過取消選擇相對復(fù)選框?qū)⒖s放改回100%,在縮放字段中輸入1,然后點擊Apply(應(yīng)用)。

c. 現(xiàn)在將單選按鈕設(shè)置為Custom(自定義)來代替Simple(簡易)。注意,您現(xiàn)在可以在單個方向上指定貼圖的縮放(U或V),或者在每個方向上輸入不同的數(shù)值。在這種縮放情況下Relative(相對)復(fù)選框仍然起作用。

嘗試在U中輸入2并在V中輸入.5對墻壁貼圖進行縮放。


圖6.99——使用如圖所示的數(shù)值測試縮放組。

6. 這些變化不會儲存在材質(zhì)中。相反,它們存在于BSP表面內(nèi)。若您用同樣的方式為表面應(yīng)用其它材質(zhì),就會發(fā)現(xiàn)新材質(zhì)會采用與之類似的放置方式。

保存地圖進度。

注意: 在本指南中,涉及的所有操作都可以適用于多表面的情況下同時選中你所需要的表面,以達到一次性同時編輯各個表面的效果。

這節(jié)課先到這了,下面的內(nèi)容我們下節(jié)課再講!

clarisse搭建3D天空之城拉普達全過程 clarisse搭建3D天空之城拉普達全過程

朱峰社區(qū)網(wǎng)頁版
朱峰社區(qū)網(wǎng)頁版(手機掃描-分享-添加到屏幕)


朱峰社區(qū)公眾號
朱峰社區(qū)微信公眾號(微信掃一掃-關(guān)注)

資源說明圖文教程無法下載,只能觀看圖片和文字。
版權(quán)規(guī)則本站圖文皆來自互聯(lián)網(wǎng)共享資源,如涉及到版權(quán)請查看版權(quán)規(guī)則。本平臺提供圖文僅可用于個人學(xué)習,如用于商業(yè)請購買正版。您必須遵守的版權(quán)規(guī)則

未知用戶

未知用戶

2005-2025 朱峰社區(qū) 版權(quán)所有 遼ICP備2021001865號-1
2005-2025 ZhuFeng Community All Rights Reserved

VIP

朱峰社區(qū)微信公眾號

回頂部

1.復(fù)制文本發(fā)給您的QQ好友或群、微信等;好友點擊鏈接以后,轉(zhuǎn)發(fā)就成功了。 2.如朋友點擊您的鏈接,您需要需刷新一下才行;同一個好友僅能點擊一次。
購買VIP,觀看所有收費教程!!