1. 程式人生 > >unity法線貼圖,光線烘培的應用

unity法線貼圖,光線烘培的應用

法線貼圖

法線貼圖是比較常用的一種貼圖,作用是使一些面數比較少的模型的紋理更加的精緻和逼真。這樣在大幅度減少了執行的效能消耗,也能達到比較好的遊戲畫面。unity3d中有比較簡單的法線貼圖,就是看起來與3D效果無異的2D貼圖。如果做3D模型的話,就會浪費顯示晶片,使遊戲效能下降,便會用法線貼圖,既不影響玩家體驗遊戲又不影響遊戲效能.
下面讓我們一製作一張簡單逼真的紋理貼圖,讓它作用在一個遊戲物件上。

效果圖

這裡寫圖片描述

第一首先在Project欄裡面建立一個TextPicture資料夾來放置圖片,我在網上找的一張磚頭的圖片,滑鼠拖入專案Assets/Texture資料夾中。多複製一張,修改TextType屬性

這裡寫圖片描述

TextType是紋理的型別
Default:紋理
Normal map:法線貼圖
Editor GUI and Legacy GUI:編輯器GUI和傳統GUI。Sprite(2D and UI):精靈,用於2D物件和UGUI貼圖。
Cursor:自定義游標。
Cookie:場景光的Cookie。
Lightmap:光照貼圖,將貼圖編碼成特定的格式,並對紋理資料進行後處理。
SingleChannel:單通道。
選擇Normal Map
Create from Grayscale勾上
Create from Grayscale:從灰度高度圖(Heightmap)建立。
有兩個屬性可以調節
Bumpiness:崎嶇度。


Filtering:濾波演算法。
1.Smooth:平滑,標準前向差分演算法。
2.Sharp:尖銳,Sobel濾波器。
崎嶇度根據需要,自由調節,濾波演算法,我們選擇尖銳Sharp
這裡寫圖片描述
選擇完後,記得點選Apply。

第二步,製作Metrial。建立一個Metrial資料夾,在裡面建立一個Metrial。點選Project的Create來建立

這裡寫圖片描述

Material裡面最重要的是Shader,Shader(著色器):Shader負責將輸入的Mesh(網格)以指定的方式和輸入的貼圖或者顏色等組合作用,然後輸出。繪圖單元可以依據這個輸出來將影象繪製到螢幕上。

材質(Meterial):將輸入的貼圖或者顏色,加上對應的Shader,以及對Shader的特定的引數設定,將這些打包在一起就是一個材質了。我們便可以將材質賦予合適的renderer(渲染器)來進行渲染。
單擊Meterial的Inspecter面板,在Albedo屬性上選擇多複製的那張正常圖片,然後在Normal Map上選擇製作好的法線貼圖。一個帶有法線貼圖的Meteral做好了,重新命名wall.
這裡寫圖片描述

第三步,新建一個cude,把我們建好的材質包滑鼠託上去就建好了。

這裡寫圖片描述
這裡寫圖片描述

光線烘培

當我們進行遊戲時,有些場面避免不了使用大量燈光渲染。大量的燈光渲染對於計算機來說無疑是個負擔,為了儘量節省計算機的顯示卡資源,對於一些靜態的不動的物體,可以採用烘培的方法,把燈光的效果,製作成遊戲物體紋理的一部分,這樣即使沒有燈光的渲染。該遊戲物品也會呈現一樣的視覺效果。烘培非常的常見,請注意需要烘培的的遊戲物品一定時靜止的
下面做一個例項

第一步 在場景中創鍵一個cude和一個plane,為了效果更佳,把直射光源的強度稍微調小一點。

這裡寫圖片描述

第二步、把所有要渲染的遊戲物件全選,在Inspecto面板裡面單擊Static選項,選擇Lightmap static。

這裡寫圖片描述
建立一個點光源做為要渲染的的光源,為了著重看出效果。我把光源的顏色改成紫色。在實際的需求中,大家可以根據自己的需求進行改變。將需要烘焙的光源的Mode模式改為Baked
這裡寫圖片描述

第三步、選擇選單欄的window選項裡面的Lighting的Settings面板,在Object Maps選項中講勾選的Auto Generate按鈕去掉後,單擊Generate Lighting按鈕。場景就在烘焙中,右下角會出現進度條,當進度條完成後。烘培完成。完成烘焙後,即使刪掉了光源,遊戲物品依然具有之前的紋理。

這裡寫圖片描述這裡寫圖片描述
這裡寫圖片描述

最後完成。神奇的一幕來了,把目標光源刪除掉後,紋理依舊
這裡寫圖片描述