為Unity3D創建素材(1):圖片、著色器、材質球


圖片

Unity3D支持使用大部分位圖格式作為圖片素材,甚至包括帶圖層和圖層效果的.psd格式文件。

但在實際使用中,并不推薦直接使用非通用的文件格式。這是因為對于任何格式的圖片素材,Unity3D在導入時都會自動執行一個轉換過程,如果面對的是非通用格式,則會調用相應的第三方軟件功能來執行轉換,所以實際轉換過程會比較慢,而且有些特殊文件格式,如果沒有安裝對應的軟件,甚至根本不能識別。

因此,推薦先使用PS將圖片素材另存為.png格式(無損且較小),然后使用.png格式的文件作為圖片素材來使用。

在Project面板中選擇圖片,Inspector中對應出現圖片轉換的參數選項(要注意的是,選擇不同Texture Type,其他的選項會略有不同)。

unity_image_01.png

unity_image_02.png
  • Texture Type:選擇貼圖類型
  • Texture Shape:選擇貼圖形狀,這里是設置在預覽區的顯示方式,有2DCube兩種,這個圖例中選擇2D是因為這是2D游戲素材
  • Advanced:高級選項(略)
  • Alpha Source:選擇透明通道來源
  • Wrap Mode:修改貼圖重復包裹方式,Repeat代表會不斷重復,Clamp代表如果模型UV不在(0,1)象限的話就不會被附上貼圖,只會顯示材質的默認顏色
  • Filter Mode:對通道數據的過濾方式,通常選擇Bilinear,但如果是高動態色彩貼圖(hdr),就要選擇Point (no filter)

各種不同的貼圖類型:

unity_image_03.png
  • Default是作為普通類型,也就是顏色貼圖
  • Normal map是作為法線貼圖,法線貼圖必須指定成這個type,否則渲染不正確
  • Editor GUI and Legacy GUI
  • Sprite是作為“精靈”來使用,2D精靈是一種特殊的圖片顯示方法,圖片不失真,不受光照,同時還具備可切割的屬性,通常用作UI元素或者2D游戲的素材
  • Cursor是拿來替換游戲中鼠標形狀的
  • Cookie
  • Lightmap是作為光照烘焙貼圖使用,有的時候我們想把以前烘焙好的貼圖直接導入使用,就要選擇這個類型
  • Single Channel是單通道圖片,這種類型的貼圖轉換后只會保留alpha通道的信息

最下面一欄是關于貼圖尺寸和貼圖壓縮的選項:

unity_image_04.png
  • Max Size代表轉換后該貼圖的最大可能尺寸,如果本身貼圖尺寸就小于這個尺寸的話,貼圖不會被放大,但如果本身貼圖尺寸大于這個尺寸,就會被縮小成這個尺寸;
  • Compression選擇壓縮質量,有高中低三檔;
  • Format(略)

最關鍵的是,做完所有設置工作以后一定要點擊Apply按鈕應用設置,否則就白做了。旁邊的Revert按鈕可以將設置參數恢復到修改前的狀態。

普通圖片素材

普通圖片素材選擇Default類型即可。需要注意的是,對于一些很小的貼圖,最好設置一下Max Size屬性,這樣比較節約系統資源。

Sprite類型素材

Sprite類型又叫精靈類型,主要用于UI、粒子、2D游戲等等。

將圖片設置成sprite類型之后會得到以下特性,首先,圖片不會被壓縮,所以不會有JPEG圖片顏色失真等現象;其次,圖片可以被再次分割成為多個Sprite。

Unity3D 2017中新增了對Sprite的九宮格切分功能支持。所謂九宮格切分是指將圖片按3*3的方式分成9個部分,當該圖片被縮放是,不同部分會進行不同的變化,四個角落的4部分會保持不變,上中和下中的兩部分會橫向重復(tile),左中和右中的兩部分會縱向重復(tile),而正中間一部分會橫向縱向一起重復(tile)。這種方式很適合用在2D游戲的地面、墻面、門窗等物體上。

對法線貼圖的處理

法線貼圖必須設置成Normal map類型,否則不會被正確識別。

對HDR素材的處理

HDR素材要單獨設置。通常被運用在天空球的貼圖上。
HDR素材最關鍵的是要設置其為16bit色深或者32bit色深,否則引擎會自動將其處理成8bit色深的普通貼圖,這樣就丟失了高動態顏色信息了。


著色器(shader)

著色器(Shader)和材質球(Material)的區別

使用過三維軟件的同學對材質的概念都很熟悉,在Maya中我們稱之為“材質球”,其英文名稱是Material。但在Unity3D(以及其他的很多游戲引擎)中,“材質”通常被用來指Shader,而非Material,所以這里我給shader起了個專門的中文名字叫“著色器”,以示區別。

Shader是編寫的材質腳本,而shader編譯出來的結果顯示為各種不同的material。很多游戲都自己寫shader,這樣更自由也更優化,但我們不具備這個能力,只能使用系統給出的默認shader或者下載其他人寫好的shader來使用。

自己寫的shader需要放在Assets文件夾下才會起作用。可以在Project面板中點擊Create或者直接右鍵單擊選擇創建不同類型的shader資源。

unity_shader_01.png

根據shader中編寫的設置,shader會出現在material設置選項的Shader下拉框中,比如上面圖例中的NewSurfaceShader就顯示在Custom一欄之中。

內置常用Shader的使用

因為內置shader太多了,而且并不是所有的都常常會被用到,所以這里我先不細講每一種shader可以做什么,只介紹最常用的基本類別。

  • Standard類型的shader和我們在Maya中使用的材質球最接近,初學者為了方便可以完全用這一個shader來制作所有材質。
  • Mobile類別下面的shader顧名思義是給移動平臺做游戲時使用的shader,下屬的shader基本上也能涵蓋各種用途了。
  • Nature類別下的shader主要是給Unity3D自己的Tree類型物體準備的,有些特殊屬性專門針對Tree物體的顯示。通常創建Tree的時候會自動賦上對應的material,初學者不要胡亂改shader類型和參數。
    同理,Particles類別下的shader專為Unity3D的自帶粒子系統準備,Skybox類別下的shader專為Unity3D的自動天空盒功能準備,Sprites是給精靈面片用的,UI是給UI物體貼圖用的,VR是給VR用的(我也不清楚怎么用)。
  • Unlit類別下的shader都是所謂“無光照“shader,也就是說光照對這類材質無影響。

分成這么多類別,主要還是出于性能優化的考慮。比如Standard shader當然可以用來模擬unlit shader,但使用unlit shader無疑會減少很多計算量。


材質球(Material)

材質球(Material)可以被認為是一個基于shader的參數文件,同樣需要手動創建在Assets目錄中,后綴名是.mat

Maya的材質球可以隨著.ma格式文件被導入Unity3D(但嚴重不推薦)。

實際上Unity3D自動識別了Maya材質球的相關參數,并以此創建了基于Stadard Shader的新的.mat文件,然后賦給轉換后的模型。因此實際上并不一定能夠保證新material的效果和在Maya中的效果一樣,畢竟兩個軟件所采用的渲染方式都是天差地別的。

所以建議大家導入模型之后還是自行創建material并手動指定比較好。自動轉換的material如果不使用的話最好刪除掉,避免混淆。

所以,在Unity3D中給模型添加材質的一般流程是這樣的:

  1. 如果不是使用內置shader的話,就要先下載shader資源并導入Unity3D,或者用可視化shader插件(比如Shader Forge)創建好shader;
  2. 在Unity3D中新建一個Material,并附加給模型;
  3. 選擇這個Material,指定合適的shader(在Assets目錄下的所有有效shader都會自動被加載到material的shader選擇列表中去);
  4. 修改Material的各項參數并指定各種貼圖

Material可以在Inspector最下面的預覽窗口被預覽到,右上方的模型按鈕可以切換不同的預覽模型(有方塊、球、圓環、單面等)

常用材質球參數

Standard:
unity_material_standard.png
  • Albedo是顏色,可以將貼圖資源從Project面板拖到前面的小方塊上來添加貼圖,貼圖與后面的顏色設置相乘才是最終的效果(也就是說這個顏色會被multiply到貼圖顏色上去)
  • Metallic是金屬質感,數值越高,反光顏色越偏向本色(貼圖顏色×顏色值)
  • Smoothness是光滑度,數值越高,表面越光滑,高光越集中,反射越清晰
  • Source是透明通道來源,可以選擇使用Albedo貼圖上的透明通道或者Metallic貼圖上的透明通道
  • Normal Map是法線貼圖
  • Height Map是高差圖
  • Occlusion是模擬AOCC效果的貼圖
  • Detail Mask是在表面再疊加一層細節遮罩時使用的貼圖
  • Emission勾選表示材質“自發光”,會多出一個Color參數來指定發光的顏色、發光貼圖、發光強度。強度可以設置到超過1,表示是一個很亮的物體。自發光材質會影響光照烘焙的結果
  • Tiling是貼圖重復次數
  • Offset是貼圖位移
  • Secondary Maps是可以添加次級細節貼圖,當物體很靠近攝影機是會自動切換顯示次級細節貼圖
    • Detail Slbedo ×2是次級細節顏色貼圖,建議創建成原來貼圖的2倍大
    • Normal Map是次級細節法線貼圖
  • Tiling同上
  • Offset同上
  • UV Set是選擇UV組

Standard (Specular setup)與Standard的唯一區別,就在于采用Specular而非Metallic屬性來設置高光,這樣可以獲得不同于顏色貼圖色彩的高光顏色。

unity_material_standard2.png
Mobile/Bumped Specular:
unity_material_mobile_specular.png

Mobile類型的shader就簡單很多了,可以看到只有最最基礎的參數:

  • Shininess:光亮度
  • Base (RGB) Gloss (A):這里使用一張貼圖的RGB通道作為顏色,A通道作為高光貼圖
  • Normalmap:法線貼圖
Unlit/Texture:
unity_material_unlit_texture.png

Unlit類型的shader就更簡單,就只有貼圖參數。Unlit/Color更簡單,就只有一個顏色參數。Unlit/Transparent可以識別貼圖的A通道并將其作為透明貼圖,Unlit/Transparent Cutout與之類似,但處理透明貼圖的方式不太一樣,會將半透明區域簡化成全透明或者全不透明。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容