「遊戲開發小科普-7」風好大 , 吹掉了我的假髮 !

大家一起聽着音樂看文章吧 !


今天 !

讓我們一起來探索

        「遊戲開發小科普之頭髮」


當我這一期想要科普關於頭髮的祕密時候

我就想起了她    -   花木蘭


開我東閣門 ,坐我西閣牀。

脫我戰時袍,著我舊時裳。

當窗理雲鬢,對鏡帖花黃。



木蘭打開自己東邊的閣門,坐在自己西邊的牀上。

脫下了戎裝戰袍,換上舊時的女兒衣裳。

對着窗子梳理鬢髮,照着銅鏡貼上花黃

這首詩詞來自於 南北朝樂府的民歌《 木蘭詩 》

講述着花木蘭女扮男裝,替父從軍,

在戰場上建立功勳 ,回朝後不願做官只求回家團聚的故事 

木蘭剪去了長髮 , 男扮女裝 , 替父從軍

當她凱旋而歸之後 , 又選擇了在窗邊梳理着自己的秀髮

當我小時候 , 看到這個鏡頭的時候

熱淚盈眶


讓我們就通過花木蘭的故事

一起進入小科普的世界吧 ! 


溫馨提示:

此區域內容   非常輕鬆有趣

讓我們先來看看現實中的頭髮吧 . 

再看看在遊戲世界中的頭髮吧

在遊戲的世界裏 ,頭髮有着多種的類型

 

    第一種 , 繪畫的風格

夏日狂想曲中的人物就是繪畫出來的人物

還有女神異聞錄5 中對話框中出現的人物

這樣的展現一般在注重故事類遊戲更常見

就像是一個可以移動的卡片人物(圖片)

  第二種   3D 人物模型

 

首先解釋一下 3D人物模型

它可以理解爲  “手辦”

和上面類型一樣 , 是會動的手辦

比如在奇異人生 ,偏卡通風格,

更注重遊戲內容

在她誕生的那一刻她的頭髮也跟着誕生

我們來回到遊戲世界中

也是同樣的道理 ,在使用建模軟件創造出一個女孩的時候

她的頭髮也已經被創造了

比如就是這樣直接給你了一個完整的女孩子

這樣的好處自然是更便捷 

但是同樣失去了更精緻的體現

想象一下

美女手辦的長髮會

隨着你拿着她擺動而飄散嗎 ?

   第三種    假髮

 

假髮 ,顧名思義 

爲了追求極致精美和多樣的頭髮

那就需要所謂的 “假髮”

這也是我後續要討論的主要方向

我們會讓人物誕生時候並沒有頭髮

這樣製作出來了各種假髮 ,只需要戴在頭上就好了 

明白了這個想法後,我們來看看假髮的祕密吧

    頭髮的顏色

底特律變人中的卡拉

金色與褐色混合感覺,頭髮的顏色在

現實中使用的是染色劑 

遊戲中則是一個調色盤

在頭髮上抹上不同顏色 ,就可以實現出了這樣混搭的色調 

比如天涯明月刀中的頭髮

如你所見 ,頭髮擁有多種的顏色混合 

並且還具有漸變效果

注意從頂部的藍色向粉色的漸變,其實還是調色盤的功勞 

舉個通俗易懂的例子

遊戲裏頭髮設置的顏色 , 就像是你認識的各種顏色的彩鉛

但是在畫紙上能用彩鉛繪畫出多麼美的頭髮 

那就需要你慢慢的繪製了

頭髮的美感不僅僅是因爲顏色

頭髮還擁有着質感

就像是洗頭髮後 ,柔順和明亮的感覺

     “ 飄柔就是這樣自信 ”

飄柔打錢啊喂 !

遊戲中也是同理

因爲頭髮也是一種材質 (Material )

會搭配着環境的不同而產生不同的效果

影響他最有趣的還是光照

在巫師 3 的葉奈法的頭髮 , 可以看到在蠟燭的燈光下,髮質顯得很具有油性感覺

那麼在室外的希裏 , 頭髮就更偏向於 乾燥 / 順帶着一些小柔順 

那麼使用好 調色盤 與 光照

就可以創造出頭髮很細膩的感覺

怎麼樣讓頭髮變得更加絲滑柔順 ?

 

現實中,我們不僅使用各種功能的洗髮水

還會使用 護髮素,洗衣粉等

洗衣粉什麼鬼啊喂!

遊戲中也是可以做到的

主要在感官上有兩點 :

第一點:

頭髮可以通過材質與紋理的更細膩來完成

這就是遊戲裏的洗髮膏與護髮素

沒有洗衣粉啊喂

更沒有火鍋底料啊喂 !!

生化危機4重製版 -  礙事梨臉模

第二點:

在前面剛剛提到的 “彩鉛繪畫” ,“環境光照”影響

紅藍Buff 正在持續中 …

輕微的細節就體現出來了

看看耳朵那裏的頭髮

具有小撮頭髮,耷拉在耳朵上

這就是細節在各種光環的加持下顯得更好

 

那麼飄逸又是怎麼樣的呢 ?

其實也是上面所提到的因素

只是隨着風中的搖曳 ,還涉及到了流體 ,力學 

我覺得以後還有機會

在更有趣的講解

比如從 遊戲中的海洋延展到 風中飄逸的秀髮

所以這裏就埋下一個伏筆

等等 ! 

我們年輕人肯定喜歡柔順飄逸的秀髮

可是也存在有小孩,老人以及各種頭髮的質感


在遊戲中真的也存在有各種的 “ 特技 ”

別忘了,我一直把他比喻爲  “假髮”

 

來看看死亡擱淺裏,弩哥的頭髮

蒼老感 ,與瑪瑪相比來說

多了凌亂 ,這種的蒼老感在面部如鬍鬚以及面容下加重了 。

所以還記得之前討論的嗎 ?

頭髮不僅僅是因爲他本身的美

而是加了特技 和 其他的映襯

在這裏 我還想提到一款遊戲的CG

《黑悟空:神話》

黑悟空在渲染上將頭髮接近了 “完美”

在這裏我們不討論這款遊戲其他

這次我們只討論頭髮

在頭髮的細節上

他 — 做的真的“完美”

如果將上述的頭髮比喻爲在白紙上作畫 

那他這個更像是 在清掃出土的文物

舉個例子 ,大家都知道頭髮是一根根的

黑悟空在毛髮上從極小的部分開始認真繪製

就像是一個草地

上面的小草一顆顆種上去的(略微誇張)

可能你會想 ?

國產的遊戲積累本來就不夠,怎麼可能做到 ?

其實有兩個方面 :

一是 毛髮的技術在遊戲行業早已成熟

二是 我一直在拿繪畫做比喻

    只是你10分鐘畫一張素描沾沾自喜 

    我可能花費數月畫出一副而已

自己感想 :

其實中國的遊戲行業發展怎麼樣

我也沒有辦法去改變

我能做的只有兩點 :

1 我並不在乎像是悟空這樣的遊戲最終的生與死 

   我只是看到他們在這樣建模上的細緻 ,讓我熱淚盈眶

2 我永遠熱愛着遊戲

那麼到這裏我肯定又要邀請出我的好朋友

《荒野大鏢客2》

綠油油的草地 ,想要流淚的雲朵

這款遊戲我總是愛提到他

因爲想亞瑟了 ! (抖個機靈)

這款遊戲就是結合了我們前面所提到的所有的元素

這種感覺像極了 :

   特技加滿的狀態

不僅僅是頭髮的繪製極其的精美 

也因爲他的其他元素都格外的美


很有趣吧


本期內容就到此結束

那麼敬請期待下一期

「遊戲開發小科普」

我們不見不散 !


悄咪咪 :  其實底下還有內容


上一期科普導航 :

「遊戲開發小科普-6」我穿這件衣服好看嗎?


上一期科普收入捐贈:

等一下 ! 

文章還沒有結束 !


溫馨提示:

此區域內容

認爲你已經看過上面內容

來看看遊戲引擎下的美吧

很多的時候 , 人物再創造出來的時候

在3D建模軟件中 , 頭髮,身體,衣服也就全部一起製作出來了

直接使用與展示了

就像是我們提到的 “ 手辦 ”

也可以通過用多種顏色的頭髮組合來實現多彩效果

注意看這裏的劉海奧

也可以通過 材質(Material) 來設置出漸變的頭髮

 Hair  ( StatTrak™ ) | 漸變之色

也可以直接更換顏色 , 實現各種顏色的小姐姐

頭髮的模型有一個最基礎的顏色(比如偏灰的)

然後直接更改材質的顏色就好了

就像是黑色的頭髮 可以染色爲各種顏色


溫馨提示:

此區域內容從引擎角度展示

頭髮也是一種材質 , 所以也受到了光照的影響

可以看到臉部的陰影

在線框中的樣子

線框:方便查看模型的內部結構

仔細看 , 在單純的模型下 

打入光照,不是太陽的自然光

會發現頭髮其實是具有顏色層次的

依舊能看到他就像是衣服一樣

只是緊貼着在一起

需要更復雜的手段去

儘可能的模擬真實的頭髮散落

注意看下圖中的胸部與頭髮的間距

可以理解爲用一股股頭髮拼湊在一起的

先看一下頭髮的圖

再看一下頭髮的材質圖

所以對於這個頭髮,你可以這樣的理解

一塊塊的拼接在一起

溫馨提示:

此區域內容從材質角度

來看一下頭髮的材質什麼樣子吧

可以進行一下對比


生成這樣的材質需要通過顏色的搭配

來看一下生成的概念圖

看一下這個材質球最原始的樣子

就像是純黑的物體

別睡着了啊 !

一定要堅持讀下去 !  


通過繪畫板的繪製後 , 輸出的效果

首先來看看顏色的設定吧

這裏意思是:默認頭髮顏色爲咖啡色 

也可以切換爲使用紋理取樣,偏向於褐色 

紋理取樣參數2D

想要讓頭髮更加真實 , 這裏直接使用了紋理 

爲了增加更強烈的顆粒感

畢竟沒有誰的頭髮是完全的光滑無比的

爲了讓頭髮不會被穿透,比如你可以透過頭髮看到背後的景色

這裏加入了  不透明蒙版(Opacity Mask) 

意味着要麼完全可見,要麼完全不可見

但是這樣依舊可以讓光照影響着不透明的部分.

在這裏使用了:

一張紋理圖 與 約爲 0.5 的白色材質球做到組合


溫馨提示:

此區域內容 從圖形方面

影響的效果是什麼呢?

頭髮是(至少我認爲)是大多數玩家很容易觀察以及受影響的地方

不要給我說胸部啊喂 !

所以這裏也使用了

法線(Normal)

這樣可以大幅度的添加紋理細節,這是一個常用的手段

因爲他看起來像是添加了諸多的多邊形

其實並沒有

甚至渲染的數量更少

這是不使用法線的細節

這是使用了法線的細節

主要區別就是在整體的質感上

爲了更明顯的體驗, 我們放在整體的頭髮上來看一下

如箭頭所指向的地方,如同染色未影響的髮根

爲了體現出頭髮的更加柔軟 

這裏使用了Edge Mask 

這裏使用的照相機矢量(Camera Vector)頂點法線矢量越接近垂直

則可以通過這個獲取參數值 , 這個比例是使用了Depth紋理 

就是爲了增加頭髮的柔軟度

通俗點來講就是

在你相機的離頭髮越近的地方, 也就越容易進行透明

所以這裏就是根據位置進行計算來控制 蒙版   

上面提到的 不透明蒙版  ( Opacity Mask )

開始犯困了 ?



這裏討論一個遊戲中經常所涉及到的點   

“ 深度偏移值 ”

具體是什麼效果呢 ?

在引擎的角度下考慮是:

在頭髮的紋理上直接的使用有時候很容易產生頭髮像是網格的薄片 

所以在同一個平面上就容易產生片狀結構(一塊一塊的)

深度偏移則是增加發束的深度 , 營造出頭髮上的層次感

所以仔細看

23的深度偏移是不是具有更明顯的差距

可以怎麼理解呢 ? 

想象一下 

荒野大鏢客2的雪地裏走路,人物踩下的雪印

在這樣雪印的渲染與地面的雪接近重合的時候,那麼爲了不讓被覆蓋(多邊形的公共面)

那麼就可以輕微的偏移這樣能讓效果產生一定的透視效果,避免重疊

術語就是:  紋理映射透視處理

溫馨提示:

此區域內容 從數學方面

讓我們站在數學角度來看一下吧

採用標準的OpenGl透視投影矩陣對觀察空間一點P 

(可以理解爲一根頭髮)

進行偏移  P = (Px,Py,Pz,1)

 

首先Px Py Pz可以理解爲

通俗的說: 想象一個三維空間 

在這個投影區域內的位置內

這裏解釋一下各個參數意思就開始計算 !

中心軸爲z軸 , e 爲焦距 

a 爲寬高比, 近剪裁平面的距離爲 n 

遠剪裁平面的距離爲f

這是根據三維空間的矩陣列出來公式 , 針對右邊的內容

我們在引入第四維的矩陣 , W


這裏再轉換爲 投影透視變換後 , 也就是用w座標去變換 , 這裏w是-Pz

這裏w座標我們只關注Z軸,所以忽略  x    與  y  的

加入一個影響因子   1 + e

所以很容易得到:

簡單的運算一下

這樣偏移值就算出來了 


這個偏移值上 e 的影響因子該怎麼最好呢 ?

其實就是在數學中運算的一個區間吧,也就是最大值最小值

通用的做法是根據相機空間偏移Q , 深度值Pz 再來一個偏移常數e

這是Z軸,上面也算過一次Z軸,兩個值進行相等,抽離出這個偏移常數e

這裏只是計算出來了偏移常數 ,接下來我們只需要 

然後加入一個緩衝區

上一篇科普最後說到的內容

將他帶入上面的偏移常數 , 就可以得到 相機的偏移值 Q 

這裏就不列舉計算了 , 我在演草紙上自己算了

有點懶了 , 哈哈哈哈哈哈哈哈哈 

今天的旅程結束了!

期待下一期吧 !

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com