2013年9月8日 星期日

Unity3D 教學 ﹥11 Unity 材質設定

http://www.cg.com.tw/Unity/htm/Unity_011.asp

設定材質與貼圖
無論您想製作的是寫實或是動畫風格的遊戲,場景中的角色與物件若是沒有設定材質與貼圖,大部份的玩家應該都會認為您的遊戲還沒有完成吧!其實妥善利用材質與貼圖的技術,低面數的 3D 模型也可以變得很有質感,而且讓遊戲的執行效能更佳喔!
本段教學介紹 Unity 材質與貼圖的設定,請先在場景中建立幾個不同造型的基本幾何物件。
我們先新增一個專用於存放材質的資料夾,以避免稍後建立的材質與其他的專案檔案混在一起,點選功能表 [ Assets > Create > Folder ] 建立一個資料夾。
將資料夾重新命名為「Materials」,我們稍後建立的材質都將會放在這個資料夾。

建立新材質
將滑鼠游標移到材質資料夾,按下右鍵並選擇 [ Create > Material ] 即可建立一個新的材質。
您也可以點選功能表 [ Assets > Create > Material ] 來建立一個新的材質,並將材質拖曳到材質資料夾。

設定材質的顏色
選取材質後,可透過屬性編輯器修改材質的顏色,RGB 代表紅綠藍,A 代表 Alpha 透明度,注意設定透明度必須是 Transparent 類型的著色器,選擇其他類型的著色器時,調整 Alpha 值並不會改變材質的透明度。
預設的材質名稱「New Material」,建議您立即將材質重新命名,並設定為容易辨識的名稱,例如將材質的顏色改為紅色,名稱就設定為「Red」。
遊戲專案經常包含許多材質,因此材質的管理可是非常重要的喔!

指定材質給物件
指定材質的方法很簡單,您可以將材質拖曳到場景中的物件,或是拖曳到 Hierarchy 階層視窗的物件名稱。

請您自已練習再增加藍色、綠色、黃色等材質,並指定給場景中的物件。

您可以在屬性檢視下方的 Preview 預覽材質,可選擇球體、方塊、圓柱、甜甜圈,檢視材質在不同物件呈現的效果。若是經常使用 3D 軟體的話,這部份應該會覺得很熟悉吧?
 
 

設定材質的貼圖
實際上在 Unity 為物件設定貼圖並不是很方便,所以一般都是在 3D 軟體中完成。若是使用 3ds Max 建模與設定材質,可以透過 UVW Map 修改器設定貼圖座標。
若您想移除貼圖,選取物件,在 Inspector 屬性編輯器的 Shader 按右鍵並選擇 Reset 重設,即可移除物件的貼圖。

選擇著色器
著色器可以賦予 3D 模型不同的材質效果,例如塑膠、金屬、玻璃,或是卡通風格的材質。雖然使用 3ds Max、Maya 等軟體製作模型時可以設定材質,但是在匯入 Unity 時大部份的材質(例如折射、反射、焦散、自發光等效果)是無法轉換過來的,因此需要使用 Unity 著色器來製作不同的材質。
Unity 提供了許多著色器的類型,逐一講解需要不少時間,Kelvin 老師先整理一下重點,讓您在最短時間掌握著色器的使用技巧。
Diffuse 漫射 單純的紋理。
Bumped Diffuse 凹凸漫射
Bumped Specular 此材質擁有凹凸與反光的效果。

一般著色器類型 ( Normal Shader Family )
Vertex-Lit 著色器
Vertex-Lit 著色器是一種最簡單的著色器,對光線僅有進行單次的計算,無法表現法線貼圖、陰影等效果。
Diffuse 著色器
Diffuse 著色器適用於基本的材質,無法表現透明、折射、反射的材質效果,然而在遊戲執行時 Diffuse 著色器對系統資源的要求很低,需要考量遊戲的執行效能時 Diffuse 著色器將是個不錯的選擇。
Diffuse Detail 著色器
Diffuse Detail 著色器是 Diffuse 著色器追加細節紋理的版本,可用於地形物件,與例來說,您可以使用低解析度紋理並且延展到整個地形物件,以減少遊戲執行時對系統資源的需求,可是當攝影機接近時會發現地面非常模糊,然而這並不是我們想要的效果。我們可以建立一個細節紋理拼貼到地形物件,就可以避免發生這種的情形。
Bumped Diffuse 著色器
Bumped Diffuse 著色器比 Diffuse 著色器多了法線貼圖的效果,而且對於系統資源的要求也很低。(建立 Normal map 法線貼圖 - 您可以匯入一般的灰階影像,並且在 Unity 轉換為法線貼圖)
Bumped Specular 著色器
Decal 貼花著色器
Decal 貼花著色器是 VertexLit 著色器的變體版本,除了主要的紋理以外,Decal 著色器可以指定第 2 組紋理,並且可以使用 Alpha channel 來決定顯示的部份,製作類似轉印貼紙的效果。
Parallax Diffuse 著色器
Parallax Bumped Specular 著色器

透明著色器類型 ( Transparent Shader Family )
Transparent 著色器可模擬玻璃、壓克力的透明材質,場景中有透明物件的地方就會需要使用這個著色器,不過在 Unity 免費版本內建的著色器無法產生玻璃、水晶、鑽石的折射效果,必須使用 Unity 專業版本或其他廠商提供的著色器來製作。
新增一個材質,並將材質名稱設定為「Glass」。
從屬性編輯器的 Shader 著色器選擇 [ Transparent > Bumped Specular」。
Main Color 設定材質的主要顏色,A 設定材質的透明度。
Specular Color 設定材質的反光顏色。
Shininess 設定材質的光澤度。
Base (RGB) TransGloss (A) 設定材質的紋理。
Normalmap 設定材質的法線貼圖。
Transparent Vertex-Lit
Transparent Diffuse 透明(無高光效果)
Transparent Specular 透明(有高光效果)
Transparent Bumped Diffuse 透明凹凸(無高光效果)
Transparent Bumped Specular 透明凹凸(有高光效果)
Transparent Parallax Diffuse
Transparent Parallax Specular
Transparent Cutout Shader Family
Transparent Cutout Vertex-Lit
Transparent Cutout Diffuse
Transparent Cutout Specular
Transparent Cutout Bumped Diffuse
Transparent Cutout Bumped Specular

反射著色器類型 ( Reflective Shader Family )
Reflective 反射著色器可用於製作金屬或玻璃等具有反射物理特性的材質。
Reflective Vertex-Lit
Reflective Diffuse 反射擴散
Reflective Specular 反射高光
Reflective Bumped Diffuse
Reflective Bumped Specular
Reflective Parallax Diffuse
Reflective Parallax Specular
Reflective Normal Mapped Unlit
Reflective Normal mapped Vertex-lit
製作方塊貼圖的步驟可參考
  1. http://docs.unity3d.com/Documentation/Manual/HOWTO-MakeCubemap.html
  2. http://docs.unity3d.com/Documentation/ScriptReference/Camera.RenderToCubemap.html

自發光著色器類型 ( Self-Illuminated Shader Family )
自發光著色器可以讓物件在無光源照射的情況下也會自行發光,但是自發光著色器並不會對周圍的物件產生照明的效果。
通常用於模擬燈泡、汽車的頭燈與尾燈的材質,並且經常搭配物件上加入的燈光元件來產生額外的照明效果。
提示:選取物件後,點選功能表 [ Component > Rendering > Light ] 加上燈光元件,至於參數的設定與一般燈光是完全相同的。
Self-Illuminated Vertex-Lit
Self-Illuminated Diffuse 自發光(無高光效果)
Self-Illuminated Specular 自發光(有高光效果)
Self-Illuminated Normal mapped Diffuse 自發光法線貼圖(無高光效果)
Self-Illuminated Normal mapped Specular 自發光法線貼圖(有高光效果)
Self-Illuminated Parallax Diffuse
Self-Illuminated Parallax Specular

卡通著色器類型 ( Toon Shader Family )
Toon Shader 著色器可以讓 3D 模型擁有卡通風格的外觀,從早期 SEGA 在 Dreamcast 遊戲機的 Jet Set Radio 塗鴉小子、Capcom 公司在 Play Station 2 遊戲機的 auto modellista 賽車遊戲。此外一些從動漫改編的遊戲,例如海賊王、七龍珠、火影忍者系列,也是採用卡通著色的遊戲風格。若您熟悉 3ds Max 的材質,將會發現 Toon Shader 卡通著色器的效果與 3ds Max 的 Ink and Paint 材質是很接近的。
您可以選擇 Basic、Basic Outline、Lighted、Lighted Outline 著色器。
Toon Basic

Toon Basic Outline

Toon Basic Lighted

Toon Basic Lighted Outline

Main Color 設定主要色彩
Outline Color 設定輪廓線的顏色
Outline width 設定輪廓線的寬度
Base 基本紋理貼圖
ToonShader Cubemap 卡通著色器方塊貼圖
Toon Ramp 設定為 Shadow 可以得到不錯的效果。
使用 Toon Shading 材質時,物件的邊緣會出現鋸齒狀,可在攝影機加上 AntialiasingAsPostEffect 影像效果,改善遊戲畫面的視覺效果,不過只有 Unity Pro 以上版本提供影像效果。



Mobile 行動裝置材質著色器
Nature 自然材質著色器 - 主要用於樹木的材質。
Particles 粒子材質著色器 - 主要用於粒子的材質。
Projector

RenderFX 著色特效材質 - 。

Unlit 。
Legacy Shaders 。
Parallax 材質
Parallax 材質包含 Normal map 法線貼圖與 Hight map 貼圖,若是不使用法線貼圖,建議改用 Diffuse 著色器即可,對系統資源的需求較低。

刪除材質
從 Project 專案視窗選取材質後,按鍵盤 Delete 鍵即可刪除材質。但是若場景中有物件使用這個材質,將會產生遺失材質 ( Missing Material ) 的情形,請注意刪除材質是無法復原的操作。
若是物件已經遺失材質,可透過屬性編輯器修正連結,按下 Missing ( Material ) 旁的小圓形按鈕,即可開啟 Select Material 視窗重新選取材質。

使用程序化材質
您可以在資源商店下載 Eighteen Free Substances,這是由 Allegorithmic 公司為 Unity 製作的材質資源包,提供 18 個免費的程序化材質,另提供付費下載的商業版本。
程式化材質的優點是只需使用少量的紋理貼圖,就可以透過參數產生多種不同的材質效果,甚至可透過腳本產生動畫的效果。

影片紋理
影片紋理 ( Movie Texture ) 是一種動態紋理,匯入影片檔案到遊戲專案即可建立影片紋理。當影片匯入到遊戲專案時,檔案會自動轉換為 Ogg Theora 格式,您可以附加到任何的遊戲物件或材質,使用的方式與一般的紋理貼圖相同。
影片檔案的匯入需要 Apple QuickTime 程式,您可以到 Apple 網站下載最新的版本 ( http://www.apple.com/quicktime/download/ ) ,支援的影片檔案包括 AVI、MPG、ASF、MP4、MOV 格式,若是其他的影片可使用轉檔程式轉成支援的格式。
提示:影片紋理的功能只在 Unity Pro / Advanced 版本才有提供,製作 iOS / Android 平台的遊戲時無法使用影片紋理的功能。
影片紋理的屬性
Aniso Level 各向異性級別(預設值1)玩家從極端的角度觀看影片時,可提升影片的畫質(例如用於地板的紋理)。
Filtering Mode 過濾模式 設定影片因為 3D 變形而拉伸的處理方式,可選擇 Point、Bilinear(預設)、Trilinear 模式。
Loop 循環 開啟此功能時,影片將會循環播放。
Quality 畫質設定 Ogg Theora 影片檔案的壓縮品質,使用較高的設定值可獲得較佳的影像品質(檔案較大),使用較低的設定值則可讓檔案較小(畫質較差),修改設定值時 Unity 會重新壓縮影片,設定值 0~1 範圍(預設值 0.5)。
影片的播放
當遊戲執行時,附加到遊戲物件的影片紋理並不會自動播放,我們必須撰寫腳本來讓影片開始播放。
function Update () {
renderer.material.mainTexture.Play();
}
接著,將此腳本附加給遊戲物件,按下播放按鈕就可以看到影片已經可以正常播放了。
使用以下的腳本來控制按下鍵盤的空白鍵時開始播放
function Update () {
if (Input.GetButtonDown ("Jump")) {
if (renderer.material.mainTexture.isPlaying) {
renderer.material.mainTexture.Pause();
}
else {
renderer.material.mainTexture.Play();
}
}
}

影片音訊的播放
當匯入影片時,音軌的部份也會同時匯入而成為影片紋理的子物件,但是將影片紋理附加到遊戲物件時,聲音並不會自動附加到物件上。為了播放影片的聲音,使用滑鼠將 Project 專案面版的聲音片段,拖曳到 Scene 場景檢視或 Hierarchy 階層面板的遊戲物件(通常就是附加影片紋理的相同物件),就可以讓聲音與影片同步播放。
影片紋理常見問題
影片的亮度不足,畫面明顯偏暗,請將物件的材質改用 Self-Illumin / Diffuse 自發光著色器,其餘的參數設定維持預設值即可。
若是影片聲音的音量不會隨距離而產生變化,無論玩家走近或遠離時的音量聽起來都是一樣的,可能的原因是場景中有 2 個以上的聲音偵聽器,您可能需要刪除場景中預設的 Main Camera 攝影機。