圖片
Unity3D支持使用大部分位圖格式作為圖片素材宾茂,甚至包括帶圖層和圖層效果的
.psd
格式文件。但在實際使用中锣尉,并不推薦直接使用非通用的文件格式。這是因為對于任何格式的圖片素材决采,Unity3D在導入時都會自動執(zhí)行一個轉(zhuǎn)換過程自沧,如果面對的是非通用格式,則會調(diào)用相應的第三方軟件功能來執(zhí)行轉(zhuǎn)換树瞭,所以實際轉(zhuǎn)換過程會比較慢拇厢,而且有些特殊文件格式,如果沒有安裝對應的軟件晒喷,甚至根本不能識別孝偎。
因此,推薦先使用PS將圖片素材另存為
.png
格式(無損且較辛骨谩)衣盾,然后使用.png
格式的文件作為圖片素材來使用寺旺。
在Project面板中選擇圖片,Inspector中對應出現(xiàn)圖片轉(zhuǎn)換的參數(shù)選項(要注意的是势决,選擇不同Texture Type阻塑,其他的選項會略有不同)。
-
Texture Type
:選擇貼圖類型 -
Texture Shape
:選擇貼圖形狀果复,這里是設置在預覽區(qū)的顯示方式陈莽,有2D
和Cube
兩種,這個圖例中選擇2D
是因為這是2D游戲素材 -
Advanced
:高級選項(略) -
Alpha Source
:選擇透明通道來源 -
Wrap Mode
:修改貼圖重復包裹方式虽抄,Repeat
代表會不斷重復走搁,Clamp
代表如果模型UV不在(0,1)象限的話就不會被附上貼圖,只會顯示材質(zhì)的默認顏色 -
Filter Mode
:對通道數(shù)據(jù)的過濾方式迈窟,通常選擇Bilinear
私植,但如果是高動態(tài)色彩貼圖(hdr),就要選擇Point (no filter)
各種不同的貼圖類型:
-
Default
是作為普通類型菠隆,也就是顏色貼圖 -
Normal map
是作為法線貼圖兵琳,法線貼圖必須指定成這個type,否則渲染不正確 Editor GUI and Legacy GUI
-
Sprite
是作為“精靈”來使用骇径,2D精靈是一種特殊的圖片顯示方法躯肌,圖片不失真,不受光照破衔,同時還具備可切割的屬性清女,通常用作UI元素或者2D游戲的素材 -
Cursor
是拿來替換游戲中鼠標形狀的 Cookie
-
Lightmap
是作為光照烘焙貼圖使用,有的時候我們想把以前烘焙好的貼圖直接導入使用晰筛,就要選擇這個類型 -
Single Channel
是單通道圖片嫡丙,這種類型的貼圖轉(zhuǎn)換后只會保留alpha通道的信息
最下面一欄是關于貼圖尺寸和貼圖壓縮的選項:
-
Max Size
代表轉(zhuǎn)換后該貼圖的最大可能尺寸,如果本身貼圖尺寸就小于這個尺寸的話读第,貼圖不會被放大曙博,但如果本身貼圖尺寸大于這個尺寸,就會被縮小成這個尺寸怜瞒; -
Compression
選擇壓縮質(zhì)量父泳,有高中低三檔; -
Format
(略)
最關鍵的是吴汪,做完所有設置工作以后一定要點擊
Apply
按鈕應用設置惠窄,否則就白做了。旁邊的Revert
按鈕可以將設置參數(shù)恢復到修改前的狀態(tài)漾橙。
普通圖片素材
普通圖片素材選擇Default
類型即可杆融。需要注意的是,對于一些很小的貼圖霜运,最好設置一下Max Size
屬性脾歇,這樣比較節(jié)約系統(tǒng)資源蒋腮。
Sprite類型素材
Sprite類型又叫精靈類型,主要用于UI介劫、粒子徽惋、2D游戲等等。
將圖片設置成sprite類型之后會得到以下特性座韵,首先险绘,圖片不會被壓縮,所以不會有JPEG圖片顏色失真等現(xiàn)象誉碴;其次宦棺,圖片可以被再次分割成為多個Sprite。
Unity3D 2017中新增了對Sprite的九宮格切分功能支持黔帕。所謂九宮格切分是指將圖片按3*3的方式分成9個部分代咸,當該圖片被縮放是,不同部分會進行不同的變化成黄,四個角落的4部分會保持不變呐芥,上中和下中的兩部分會橫向重復(tile),左中和右中的兩部分會縱向重復(tile)奋岁,而正中間一部分會橫向縱向一起重復(tile)思瘟。這種方式很適合用在2D游戲的地面、墻面闻伶、門窗等物體上滨攻。
對法線貼圖的處理
法線貼圖必須設置成Normal map
類型,否則不會被正確識別蓝翰。
對HDR素材的處理
HDR素材要單獨設置光绕。通常被運用在天空球的貼圖上。
HDR素材最關鍵的是要設置其為16bit色深或者32bit色深畜份,否則引擎會自動將其處理成8bit色深的普通貼圖诞帐,這樣就丟失了高動態(tài)顏色信息了。
著色器(shader)
著色器(Shader)和材質(zhì)球(Material)的區(qū)別
使用過三維軟件的同學對材質(zhì)的概念都很熟悉爆雹,在Maya中我們稱之為“材質(zhì)球”停蕉,其英文名稱是Material。但在Unity3D(以及其他的很多游戲引擎)中顶别,“材質(zhì)”通常被用來指Shader谷徙,而非Material拒啰,所以這里我給shader起了個專門的中文名字叫“著色器”驯绎,以示區(qū)別。
Shader是編寫的材質(zhì)腳本谋旦,而shader編譯出來的結(jié)果顯示為各種不同的material剩失。很多游戲都自己寫shader屈尼,這樣更自由也更優(yōu)化,但我們不具備這個能力拴孤,只能使用系統(tǒng)給出的默認shader或者下載其他人寫好的shader來使用脾歧。
自己寫的shader需要放在Assets文件夾下才會起作用⊙菔欤可以在Project面板中點擊Create
或者直接右鍵單擊選擇創(chuàng)建不同類型的shader資源鞭执。
根據(jù)shader中編寫的設置,shader會出現(xiàn)在material設置選項的Shader
下拉框中芒粹,比如上面圖例中的NewSurfaceShader就顯示在Custom一欄之中兄纺。
內(nèi)置常用Shader的使用
因為內(nèi)置shader太多了,而且并不是所有的都常常會被用到化漆,所以這里我先不細講每一種shader可以做什么估脆,只介紹最常用的基本類別。
-
Standard
類型的shader和我們在Maya中使用的材質(zhì)球最接近座云,初學者為了方便可以完全用這一個shader來制作所有材質(zhì)疙赠。 -
Mobile
類別下面的shader顧名思義是給移動平臺做游戲時使用的shader,下屬的shader基本上也能涵蓋各種用途了朦拖。 -
Nature
類別下的shader主要是給Unity3D自己的Tree類型物體準備的圃阳,有些特殊屬性專門針對Tree物體的顯示。通常創(chuàng)建Tree的時候會自動賦上對應的material贞谓,初學者不要胡亂改shader類型和參數(shù)限佩。
同理,Particles類別下的shader專為Unity3D的自帶粒子系統(tǒng)準備裸弦,Skybox類別下的shader專為Unity3D的自動天空盒功能準備祟同,Sprites是給精靈面片用的,UI是給UI物體貼圖用的理疙,VR是給VR用的(我也不清楚怎么用)晕城。 -
Unlit
類別下的shader都是所謂“無光照“shader,也就是說光照對這類材質(zhì)無影響窖贤。
分成這么多類別砖顷,主要還是出于性能優(yōu)化的考慮。比如Standard shader當然可以用來模擬unlit shader赃梧,但使用unlit shader無疑會減少很多計算量滤蝠。
材質(zhì)球(Material)
材質(zhì)球(Material)可以被認為是一個基于shader的參數(shù)文件,同樣需要手動創(chuàng)建在Assets目錄中授嘀,后綴名是.mat
物咳。
Maya的材質(zhì)球可以隨著
.ma
格式文件被導入Unity3D(但嚴重不推薦)。實際上Unity3D自動識別了Maya材質(zhì)球的相關參數(shù)蹄皱,并以此創(chuàng)建了基于Stadard Shader的新的
.mat
文件览闰,然后賦給轉(zhuǎn)換后的模型芯肤。因此實際上并不一定能夠保證新material的效果和在Maya中的效果一樣,畢竟兩個軟件所采用的渲染方式都是天差地別的压鉴。所以建議大家導入模型之后還是自行創(chuàng)建material并手動指定比較好崖咨。自動轉(zhuǎn)換的material如果不使用的話最好刪除掉,避免混淆油吭。
所以击蹲,在Unity3D中給模型添加材質(zhì)的一般流程是這樣的:
- 如果不是使用內(nèi)置shader的話,就要先下載shader資源并導入Unity3D婉宰,或者用可視化shader插件(比如Shader Forge)創(chuàng)建好shader际邻;
- 在Unity3D中新建一個Material,并附加給模型芍阎;
- 選擇這個Material世曾,指定合適的shader(在Assets目錄下的所有有效shader都會自動被加載到material的shader選擇列表中去);
- 修改Material的各項參數(shù)并指定各種貼圖
Material可以在Inspector最下面的預覽窗口被預覽到谴咸,右上方的模型按鈕可以切換不同的預覽模型(有方塊轮听、球、圓環(huán)岭佳、單面等)
常用材質(zhì)球參數(shù)
Standard:
-
Albedo
是顏色血巍,可以將貼圖資源從Project面板拖到前面的小方塊上來添加貼圖,貼圖與后面的顏色設置相乘才是最終的效果(也就是說這個顏色會被multiply到貼圖顏色上去) -
Metallic
是金屬質(zhì)感珊随,數(shù)值越高述寡,反光顏色越偏向本色(貼圖顏色×顏色值) -
Smoothness
是光滑度,數(shù)值越高叶洞,表面越光滑鲫凶,高光越集中,反射越清晰 -
Source
是透明通道來源衩辟,可以選擇使用Albedo貼圖上的透明通道或者Metallic貼圖上的透明通道 -
Normal Map
是法線貼圖 -
Height Map
是高差圖 -
Occlusion
是模擬AOCC效果的貼圖 -
Detail Mask
是在表面再疊加一層細節(jié)遮罩時使用的貼圖 -
Emission
勾選表示材質(zhì)“自發(fā)光”螟炫,會多出一個Color參數(shù)來指定發(fā)光的顏色、發(fā)光貼圖艺晴、發(fā)光強度昼钻。強度可以設置到超過1,表示是一個很亮的物體封寞。自發(fā)光材質(zhì)會影響光照烘焙的結(jié)果 -
Tiling
是貼圖重復次數(shù) -
Offset
是貼圖位移 -
Secondary Maps
是可以添加次級細節(jié)貼圖然评,當物體很靠近攝影機是會自動切換顯示次級細節(jié)貼圖-
Detail Slbedo ×2
是次級細節(jié)顏色貼圖,建議創(chuàng)建成原來貼圖的2倍大 -
Normal Map
是次級細節(jié)法線貼圖
-
-
Tiling
同上 -
Offset
同上 -
UV Set
是選擇UV組
Standard (Specular setup)與Standard的唯一區(qū)別狈究,就在于采用Specular
而非Metallic
屬性來設置高光碗淌,這樣可以獲得不同于顏色貼圖色彩的高光顏色。
Mobile/Bumped Specular:
Mobile類型的shader就簡單很多了,可以看到只有最最基礎的參數(shù):
-
Shininess
:光亮度 -
Base (RGB) Gloss (A)
:這里使用一張貼圖的RGB通道作為顏色贯莺,A通道作為高光貼圖 -
Normalmap
:法線貼圖
Unlit/Texture:
Unlit類型的shader就更簡單,就只有貼圖參數(shù)宁改。Unlit/Color更簡單缕探,就只有一個顏色參數(shù)。Unlit/Transparent可以識別貼圖的A通道并將其作為透明貼圖还蹲,Unlit/Transparent Cutout與之類似爹耗,但處理透明貼圖的方式不太一樣,會將半透明區(qū)域簡化成全透明或者全不透明谜喊。