Unreal Engine4(虛幻4)學(xué)習(xí)心得-獲取UE4
按照國際慣例自我介紹,多年GPU驅(qū)動工作經(jīng)驗,主要研究方向為3D圖形學(xué)OpenGL,曾效力于Marvell手機(jī)部門和Intel開源技術(shù)組,目前任職于完美世界3D引擎組,熱衷于對開源游戲引擎的研究。2013年開始閱讀Cocos2d-x源碼,曾錄制一套Cocos2d-x教程,獲得Cocos引擎中文官網(wǎng)舉辦的原創(chuàng)Cocos教程二等獎,目前該教程已轉(zhuǎn)移到極客學(xué)院,從去年開始使用Unreal Engine4,并閱讀其源碼,將學(xué)習(xí)心得整理至此,借此與大家進(jìn)行交流。個人網(wǎng)站:圖形學(xué)人
不同人眼中的Unreal Engine
制作一個完整的游戲,需要許多部門的通力合作,比如工程師(引擎工程師、客戶端工程師、服務(wù)器端工程師)、藝術(shù)家(原畫、角色、動作、場景、特效、光照、UI)、策劃等。不同人使用UE4的側(cè)重點不同:
- 關(guān)卡設(shè)計師眼中的UE4
- 藝術(shù)家眼中的UE4
- 程序員眼中的UE4
- Unity轉(zhuǎn)UE4
UE4下載地址
- Git下載地址
下載前需綁定賬號 - Zip包下載
不建議使用這種方式 - 如果開發(fā)PS4等平臺產(chǎn)品,還需要和UE4簽訂協(xié)議,拿到對應(yīng)的代碼
- 無代碼版編輯器下載
無需編譯,可直接使用
UE4的編輯器
- 關(guān)卡編輯器
- 材質(zhì)編輯器
- 藍(lán)圖編輯器
- 行為樹編輯器
- 角色編輯器
- 特效編輯器
- UI編輯器
- 視頻編輯器
- 聲音編輯器
- Paper2D編輯器
- Ragdoll編輯器
- 靜態(tài)物件編輯器
- 媒體編輯器
Unreal Engine4(虛幻4)學(xué)習(xí)心得-Ambient Cubemap 環(huán)境立方體貼圖
創(chuàng)建項目
如何創(chuàng)建新的項目在這里就不做過多說明了,打開UE4 Editor,就可以選擇是創(chuàng)建blueprint項目,還是C++項目。
- blueprint藍(lán)圖項目
blueprint藍(lán)圖項目,使用圖形化編程方式,供非程序員可以不通過代碼,就可以做出一個不錯的UE4項目,可以用作demo,甚至是上線項目使用。 - C++項目
C++項目,也就是通過代碼來完成一個項目的開發(fā)。不過其實說白了,藍(lán)圖中使用到的函數(shù)、變量,都是底層C++寫好之后,選擇性的暴漏給藍(lán)圖的。
創(chuàng)建了項目之后,從Editor左側(cè)將一些static mesh、light之類的拖到關(guān)卡編輯器中,點擊播放,也就可以看到場景的效果了。
Ambient Cubemap 環(huán)境立方體貼圖
- 用處
在標(biāo)準(zhǔn)光照模型(Blinn-Phong模型)中,進(jìn)入攝像機(jī)的光線分為4種,自發(fā)光、高光反射、漫反射、環(huán)境光。其中環(huán)境光適用于描述物體所收到的間接光照的。而Ambient Cubemap用于高質(zhì)量光照環(huán)境的立方體貼圖。 - 實現(xiàn)方式
其實就是對物體的六個方向拍照,得到一個cubemap,然后根據(jù)不同的光澤度,生成不同模糊程度的圖片保存在不同mipmap中,然后根據(jù)物體的粗糙度、法線等因素,在shader中針對cubemap編寫算法,然后將計算出來的結(jié)果,參與最終顏色的生成上。 - 注意事項
由于環(huán)境光并非一般的方向光,可以認(rèn)為它的光照來自四面八方。所以不能對其使用shadow map,而只能使用SSAO,建議與帶陰影的動態(tài)光照產(chǎn)生的直接光照組合使用。 - UE4中的使用方法
很多地方可以使用Ambient Cubemap,這里只說一種使用方式:在后處理中對全場景使用ambient cubemap:
- 首先在關(guān)卡中拖進(jìn)一個Post Process Volume,并對其Unbound屬性的checkbox進(jìn)行勾選,目的是是的這個后處理將影響整個世界
- 如果不將Post Process Volume與整個世界關(guān)聯(lián),也可以不勾選其Unbound選項,而是調(diào)整其blend Radius即可
- 在Post Process Volume的Settings的Ambient Cubemap屬性中,賦給其一個Cubemap Texture(),設(shè)置其Intensity,用于影響其光的強(qiáng)度,設(shè)置Tint用于影響顏色。
- 這里賦予的Cubemap就是我們剛才一直說的ambient cubemap,這里用的是預(yù)先準(zhǔn)備好的cubemap,其實也可以在游戲中生成cubemap,但是會比較耗費性能
- Intensity和Tint這倆屬性與原生的Ambient Cubemap算法無關(guān),只是UE4給這個算法添加的兩個屬性,用于,比如我們準(zhǔn)備了一個場景白天時候的Ambient Cubemap,然后可以通過修改這個Intensity和Tint,然后不修改Cubemap,就可以獲取到這個場景晚上的Cubemap了。
- 設(shè)置世界中物體的材質(zhì),將其金屬度設(shè)置為1,這個值是用于blend直接光和cubemap的,值越高,cubemap的比重越大;將其粗糙度設(shè)置為0,這樣將使用清晰的Cubemap mipmap。
- 在這里還可以設(shè)置法線,但是一般使用默認(rèn)法線就好,如果設(shè)置其他法線可能會造成扭曲的效果
- 這里還能獲取到上一步設(shè)置的Ambient Cubemap Intensity和Tint,用于設(shè)計更復(fù)雜的算法
- UE4源碼中相關(guān)的類
FCubemapShaderParameters:
- 成員變量
- AmbientCubemapColor,由于AmbiendCubemap的實際使用方法還是將Cubemap中的RGBA值采樣出來,參與到最終顏色的計算,所以通過設(shè)置這個參數(shù),可以設(shè)置使用Cubemap的哪幾個通道,各個通道采樣的比例、顏色偏移等
- AmbiendCubemapMipAdjust,由于需要根據(jù)繪制物體的粗糙度等因素,計算出來使用cubemap的哪層mipmap,而設(shè)置這個參數(shù),可以對此進(jìn)行修正
- AmbientCubemap和AmbientCubemapSampler用于指定Ambient Cubemap指的Cubemap texture。
- 成員函數(shù)
- 函數(shù)Bind,用于將4個成員變量與shader中對應(yīng)的變量進(jìn)行bind
- 函數(shù)SetParameters/SetParametersTemplate通過給4個成員變量賦值進(jìn)而給shader中的對應(yīng)變量賦值
- 使用位置
- PostProcessAmbient類,正如剛才舉到的例子,后處理中可以使用Ambient Cubemap,所以在這個后處理類中使用到了該類。
- FInjectAmbientCubemapPS類。
Unreal Engine4(虛幻4)學(xué)習(xí)心得-材質(zhì)
材質(zhì)
制作材質(zhì)的過程其實就相當(dāng)于在寫shader,只是UE4制作材質(zhì)使用的是可視化方式在寫shader。下面將介紹一些材質(zhì)屬性:
- Blend Mode混合模式
用于決定材質(zhì)顏色如何和背景顏色混合。
- Opaque不透明
- Masked蒙版,蒙版材質(zhì)可以利用蒙版貼圖,將一些區(qū)域設(shè)置為可見或者不可見,比如鐵絲網(wǎng)就可以使用蒙版
- Translucent半透明,可以以某種形式允許光線透過,比如玻璃
- Additive疊加,有透明度,用于增加顏色信息,比如各種粒子效果
- Modulate調(diào)制,將材質(zhì)顏色乘以背景顏色,適合做貼花效果
- Lighting Mode光照模式
當(dāng)半透明/透明的時候使用。
- Volumetric NonDirectional,是最節(jié)省的光照模式,只使用漫反射顏色,不用考慮材質(zhì)法線。嚴(yán)格的說,只對動態(tài)光照的物體有效。
- Volumetric Directional,考慮材質(zhì)法線。
- Volumetric PreVertex NonDirectional,同Volumetric NonDirectional,但是光照只在頂點計算,這樣會減輕PS的消耗。
- Volumetric PreVertex Directional,同Volumetric Directional,但是光照只在頂點計算,這樣會減輕PS的消耗。
- Base Color常規(guī)色
通常會通過PS制作一些貼圖,作為基本色。所有的貼圖都可以通過UV設(shè)置其平鋪狀態(tài) - Emissive自發(fā)光
能讓材質(zhì)自己發(fā)光,可以用于制作材質(zhì)外邊緣的光暈效果。 - Specular高光
用于控制高光的顏色。光源照射到物體然后反射到人的眼睛里時,物體上最亮的那個點就是高光。高光控制著光線的反射,以展現(xiàn)一種光澤的效果。 - Opacity不透明
用于控制物體的透明度。 - OpacityMask不透明蒙版
用于和混合模式中的Masked蒙版模式組合使用,包含了可見還是不可見信息蒙版貼圖就在這里連接。 - Normal法線
法線貼圖是材質(zhì)具有凹凸效果的原因。除非制作的是玻璃或者金屬球之類的非常光滑的物體,否則一定要用法線?梢栽偌由弦粡埣(xì)節(jié)貼圖,與法線貼圖相加,一起當(dāng)做法線貼圖。但是法線貼圖中的凹凸信息其實是存在于RG通道中,B通道好比基準(zhǔn)線,也就是被RG弄皺的底平面,因此如果想再加上一張細(xì)節(jié)貼圖的話,藍(lán)色通道千萬不能動。法線貼圖通過RGB的信息,以像素為單位來指定表面角度。 - WorldPositionOffset世界位置偏移量
只有要跟蹤某個材質(zhì)的世界位置,并且要沿某個方向移動它,這個屬性才會被用到。
- 材質(zhì)的其他屬性(UDK)
- Diffuse漫反射
提供不透明顏色,好比常規(guī)顏色。通常會通過PS制作一些貼圖(包含alpha通道,法線貼圖),作為漫反射的基本色。 - DiffusePower漫反射次冪
描述顏色隨光照信息的流失,從飽和向陰暗漸變的速度。 - SpecularPower高光次冪
用來模擬光滑度。 - Distortion扭曲
它能使一個對象表面的材質(zhì)發(fā)生扭曲。使用方式比如:把混合模式設(shè)置為Additive疊加,然后設(shè)置無光照,然后把法線貼圖連接到扭曲上(扭曲接收的就是法線信息,它要利用RGB通道來決定把像素點移到多遠(yuǎn)),就能看到熱浪的效果,類似折射。 - TransmissionColor透射色
設(shè)置一個顏色,這樣穿過物體表面的光線,好像會穿透物體擴(kuò)散開來,呈現(xiàn)出次表面散射(3S)的樣子(透射蒙版要設(shè)置為1才能看到)。比如設(shè)計角色的耳朵的時候,將耳朵部分的透射蒙版設(shè)置為1,然后將投射色設(shè)置為深紅,那么當(dāng)光線射到耳朵背面的時候,耳朵看上去就有次表面散射的效果。(這里只是模擬S3,而非真正的S3,但是很逼真,移動光源就可以看到半透明的效果) - TransmissionMask透射蒙版
0和1組成的蒙版貼圖用于決定哪里需要透射。透射色和透射蒙版主要用于蠟和人皮膚之類的地方 - BumpOffset凹凸偏移
凹凸偏移需要借用高度貼圖。高度貼圖可以使用法線貼圖的alpha作為其高度值,然后將高度貼圖作為基本色和法線的UV即可。

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

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