NEW
後續文章統一到我的網站進行更新了,除了圖文還包括了影片教學,如有問題也歡迎至網站內詢問。
Material這個部分需要慢慢看,在講解及修改Fx之前,我們先做高亮處理,這裡我只講Notepad++的部分。
像這樣用顏色區分以後,就可以很清楚的知道自己要修改那些地方了!這個語言高亮可以在上面下載,下載完之後我們就開始講講怎麼使用吧。
Material 講解
這一小節會介紹Materials資料夾中的內容物,紅色字為dev及more_materials分支才有的更多材質。
_MaterialMap
Materials資料夾內各材質的材質貼圖。
- Fabric02_N by 2gou:二狗先生做的布料法線貼圖
- skin:皮膚用的法線貼圖
- shift:目前使用於含各向異性的頭髮材質
ClearCoat
清漆材質。
- albedo:帶材質自帶基本色的清漆材質
- black:黑色的材質
- black_clearcoat:黑色的清漆材質
- metal_clearcoat:純金屬的清漆材質
- thin_khaki:卡其色的材質
- white:白色的清漆材質
Cloth
- black_coat:黑色大衣材質
- cloth/cloth_full:一般布料材質
- cloth_normal:帶絨毛感的布料材質
- cloth_normal_x2:帶更多絨毛感的布料材質
- white:白色布料材質
Editor
可使用pmx控制器靈活調整材質參數,帶without map結尾的內容都沒有載入基本色貼圖,使用時分別載入fx及對應pmx,比如使用skin_1.fx就使用skin_1.pmx調整參數。
- Anisotropic:各向異性
- ClearCoat:清漆
- Cloth:布料
- Glass:玻璃
- Skin:皮膚
- Standard:一般
- Subsurface:次表面
Test
這個分類只有dev及more_materials分支才有,具體分類如下:
英文 | 中文 | 同類檔名區分辦法 |
DielectricAnisotropic | 介電各向異性 | 各向異性、光滑度 |
DielectricSmoothness | 介電光滑度 | 光滑度 |
Metallic | 純金屬 | 光滑度 |
MetallicAnisotropy | 金屬各向異性 | 各向異性、光滑度 |
MetallicSmoothness | 金屬光滑度 | 光滑度、金屬度 |
Metalness | 含金屬 | 金屬度 |
Emissive
自發光材質及科技感滿點的BodyLine,帶Blink字樣代表他會閃爍,x1~x4則是發光強度。
Hair
頭髮材質,各向異性效果放在頭髮上就是俗稱的"天使光",也就是這種頭髮的光澤,圖片這裡。
- hair:一般的頭髮材質
- hair_sss:會讓頭髮比較透亮的材質
- hair_with_anisotropy、anisotropy2:帶各向異性的頭髮材質
- hair_with_anisotropy_rough:帶各向異性的頭髮材質,且比上面兩個乾燥一點
Metallic
金屬材質。
- Flat ingot rough:較粗糙的金屬材質(不容易反射)
- Flat ingot smooth:較光滑的金屬材質(較容易反射)
- Flat ingot worn:帶破損質感貼圖的金屬材質
- Ingot Bricks:帶磚形質感貼圖的金屬材質
- brass:黃銅
- copper:銅
- gold:黃金
- iron:鐵
- Metal:金屬(會使用原底圖)
- silver:銀
Programmable
特殊性質的材質。
- Water:純水面材質,沒有水花,需使用裡面的pmx。
- Wetness:濕潤地面材質,修改fx。
Skin
皮膚材質,帶有次表面效果,可以使用磨皮(SSSS)以外,會帶點"被強光照射時散出的紅色",如下圖這樣,圖片這裡。
- Human:仿真人材質,如果使用模型的皮膚底圖沒什麼妝可以嘗試。
- TDA:TDA專用版,且WYKP不適用,因為載入了專用厚度貼圖使得透光更漂亮。
- 剩下的檔案差別在於乾燥(skin)、光滑(body)、顏色深淺(dark)和有無乘算底圖(melanoderm)
Subsurface
和皮膚類似,同樣是次表面效果,這個資料夾裡面放的是玉石之類的。
Transparent
這資料夾裡面放的是玻璃材質,以及帶有金屬度的玻璃材質。
Video
可以將渲染的結果作為此材質的底圖使用(也就是演唱會之類的螢幕捕捉可以用),需要加入Extension中的DummyScreen.x
根目錄的內容
- material_2.0.fx:預設材質
- material_skybox.fx:只要是天空球就必須載入的材質
- README.md:材質系統的說明文件(英文)
- README_chs.md:材質系統的說明文件(簡體中文)
- material_common_2.0.fxsub:材質系統的前置檔案,如果想將自己的材質打包給別人,但怕別人沒有一點基礎修改路徑的話,請將這個文件給包進去。
Material修改前注意
了解完什麼材質是什麼作用的以後,接著來講講怎麼修改吧,我先講一下修改的一些要點以及這些材質共通的地方。
絕對路徑以及相對路徑
MMD的東西除了使用絕對路徑(PMM存檔使用),以及特效常用的相對路徑(EMM存檔使用)
絕對路徑就是包含著C槽D槽等等,這種完整的路徑,比如(由於會被吃掉改以全型代替):
"F:\M_Liang的RAY教學用\ray-mmd-dev\Materials\Hair\material_hair_sss.fx"
可以看到,這一行裡面包含了從磁碟區出來的,非常的長,且使用的符號是"\"
而相對路徑呢?他的表示方法就簡短很多了,從你看到檔案的位置當作起點算上層下層,以上面Hair的資料夾內為例好了:
這些材質內的最後一行連結到前置檔案的方式"../material_common_2.0.fxsub",這就表示這個前置檔案的位置是位於Hair資料夾上層的資料夾,也就是代指"F:\M_Liang的RAY教學用\ray-mmd-dev\Materials"這個資料夾內,而這個部分的"../"指的就是上層,這段路徑可以很多組一起使用,比方我想從Hair資料夾去抓Main資料夾的01.png,它的相對路徑寫法就是"../../Main/01.png"
那如果我想抓Hair資料夾內的tex資料夾中02.jpg的話該怎麼做?
這個就屬於下層,由於../是屬於上層的東西,所以在這種部份是不用寫到的,只需要寫"tex/02.jpg"
可以發現連原本的Hair資料夾都不用寫到,從這個規則可以知道,如果要取得在Hair資料夾內的03.bmp,因為它位於同層,只需要這樣寫"03.bmp"
顏色代碼格式
在fx內如果想變換顏色,有兩種寫法。
第一種是 = (1.0, 1.0, 1.0)*1.0
第二種是 = (255, 255, 255 )/255*1.0
上面兩種顏色都是白色,順序皆為RGB
Material文件的內容
- 主要項目
- Albedo -材質主底色
- AlbedoSub -材質副底色
- ALBEDO_SUB_ENABLE,副底色的啟用格式
- 0 -無效
- 1 -與主底色乘算(常用)
- 2 -與主底色指數運算
- 3 -與主底色加算(常用)
- 4 -黑色素(常用)
- 5 -與透明通道混合
- Alpha -半透明材質
- NormalMap -法線貼圖
- MapScale -貼圖強度/深度,越大越深,可以是負值
- MapLoopNum -貼圖循環次數,循環次數越多,貼圖越細
- NormalSubMap -副法線貼圖
- Smoothness -光滑度
- 0 -光滑度 (常用)
- 1 -計算光滑度通過1 - 粗糙度 ^ 0.5
- 2 -使用粗糙度 (常用)
- Metalness -金屬度
- Specular -環境反射
- Occlusion -環境光遮蔽(可烘焙貼圖,實時的遮蔽就是SSAO)
- Parallax -視差/高度,此選項動畫慎用,會有扭曲
- Emissive -自發光
- MORPH_INTENSITY,強度
- 將多光源中的(Intensity+/-)表情用於材質
- APPLY_BLINK,閃爍
- 0 -無效
- 1 -數值越大閃爍速度越快
- 2 -可使用pmx內的Blink表情改變閃爍速度
- Shading Mode、CUSTOM_ENABLE -自訂材質分類,逗號以後分別是CustomA、CustomB)
- 0 -通常,沒有特殊功能
- 1 -皮膚,透亮程度、透出顏色
- 2 -自發光,A及B設定無效
- 3 -各向異性,各向異性程度、效果清晰程度
- 4 -玻璃,折射程度、散射色(啟用此項須在pmxeditor設定非透視率<1才能正常使用)
- 5 -布料,絨毛程度、絨毛色
- 6 -清漆,光澤度、無效
- 7 -次表面,透亮程度、透出顏色
- 8 -硬邊卡通著色,陰影範圍(0.5為正常值),陰影色
- 9 -軟邊卡通著色,陰影範圍(0.5為正常值),陰影色
- 共通組合設定
- MAP_FROM(材質顏色路徑)
- 0 -只要該段落的參數類型屬於可變動顏色的,就會從參數裡頭取顏色
- 比如Albedo、AlbedoSub、emissive、customB
- 1 -使用靜態圖片,採用相對/絕對路徑,路徑輸入在MAP_FILE內
- 可使用bmp, png, jpg, tga, dds, gif, apng
- 2 -使用動態圖片,採用相對/絕對路徑,路徑輸入在MAP_FILE內
- 可使用gif, apng
- 3 -使用pmx中tex插槽內的貼圖
- 4 -使用pmx中spa插槽內的貼圖
- 5 -使用pmx中toon插槽內的貼圖
- 6 -將此材質使用於背景AVI或者螢幕捕捉的內容
- 需使用Extension中的DummyScreen.x
- 7 -使用pmx中的環境色
- 8 -使用pmx中的反射色
- 9 -使用pmx中的反射強度
- 此代號僅可使用於光滑度
- UV_FLIP(UV翻轉)
- 0 -不翻轉
- 1 -X軸翻轉,也就是左右翻轉
- 2 -Y軸翻轉,也就是上下翻轉
- 3 -X軸、Y軸皆翻轉,上下左右都翻轉
- MAP_SWIZZLE(從貼圖內的通道獲取資訊)
- 0 -從R通道獲取
- 1 -從G通道獲取
- 2 -從B通道獲取
- 3 -從Alpha(透明)通道獲取
- APPLY_SCALE(MAP_FROM使用的代號為1~6,又想在fx內改顏色就必須啟用,純色則沒有關係)
- 0 -不啟用
- 1 -啟用,且做乘算處理(常用)
- 2 -啟用,且做指數運算處理
- APPLY_DIFFUSE(將pmx的擴散色乘算到貼圖上)
- 0 -不啟用
- 1 -啟用(常用)
- APPLY_MORPH_COLOR(pmx內有名為R+G+B+這三個表情,可啟用選項換顏色,啟用後會純黑)
- 0 -不啟用(常用)
- 1 -啟用
修改方式
改好高亮、也講完Material的內容大概講什麼,接下來怎麼改參數只要遵循以下內容。
- 等號(=)及分號(;)不要刪除
- define行對應的代號請輸入正整數
- 路徑文字不要將引號(")刪除
- 僅有float3可以輸入顏色代碼
手動製作帶PBR貼圖的Material
如果覺得上一篇裡面關於已經製作好文件的材質不夠用,可以嘗試手動製作,這邊講一下對應的名字!
CC0 Texture
CC0 Texture貼圖名稱 | Ray渲貼圖對應名稱 |
Color | Albedo |
Normal | NormalMap |
Roughness | Smoothness(須將type設置成2) |
AmbientOcclusion | Occlusion |
Displacement | Parallax |
IdMask | 暫無作用 |
FreePBR
此篇僅做UE版貼圖的示範。
FreePBR(UE) | Ray渲貼圖對應名稱 |
Preview | 預覽材質用的截圖,沒有使用效果 |
albedo | Albedo |
ao | Occlusion |
height | Parallax |
metallic | Metalness |
normal-dx | NormalMap |
roughness | Smoothness(須將type設置成2) |
Texture Haven
Texture Haven | Ray渲貼圖對應名稱 |
ao | Occlusion |
diff | Albedo |
disp | Parallax |
nor | NormalMap |
rough | Smoothness(須將type設置成2) |
rough_ao | 暫無作用 |