【UE4 Shader】從球開始做一隻史萊姆

2021-02-21 深夜CG工作室

昨天張大的公開課大傢伙都聽了嗎?錯過的可以去看看錄播,實在實在實在沒時間的,也可以等著明天小編把它們整理成文字版。今天先來康康包佬寫的一篇關於用ue4還原史萊姆效果的小教程吧~小夥伴們也可以試著做一個。

鴿子王我又回來了,這段時間工作實在太忙,好不容易等到五一假期才有空寫點東西。

很巧昨天下班後在Shade上看到一個史萊姆的效果特別棒,花了一晚上加第二天上午用ue4還原了下(技術實現都是自己想的沒有參考什麼)。

話不多說先看看最終效果:

動圖壓縮的有點厲害,看看照片,其實顏色過渡是很均勻的

接下來我會大致講一下製作的思路和相關技術實現:

首先我想將所有的造型都程序化,模型用一個簡簡單單帶uv的球就行。也就是說所有的眼睛嘴巴包括輪廓都是在材質中製作的。我已經猜到可能有些人會問:

為什麼不直接用貼圖?

為什麼不直接做成模型?

其實選擇程序化的目的,第一是有更大的發揮空間。程序化可以暴露出很多用圖片表現沒有的參數,方便調整。第二程序化效果不會像圖片有精度問題,也不用煩惱各種抗鋸齒mipmap採樣。第三就是個人覺得如果做這個效果用模型貼圖的傳統流程也很沒意思。。。。。。其實和sd一個片做手錶一樣,程序化的東西自己做著玩玩,過一下手癮也挺不錯的。

基礎材料:一個球(分段儘量高一點)

外形製作

由於基礎模型是球體,而史萊姆更多趨向於梨形。所以我們需要先將球體的外形做一些改變。這裡說的改變肯定不是指在maya max中直接修改模型,而是在ue4的材質中做出修改。

其中我用 vertex normal 區分了球體的上下面區域,同時使用兩個權重參數控制上方和下方的收縮大小。值得一提的是由於是梨形變形,所以上方和下方的變形區域也不一樣。其中下圖展示的是球體的橫截面,紅色部分是上方需要變形的區域,藍色部分是下方需要變形的區域

為了實現這兩個區間,我將上方的法線z軸數值應用了一個sin,為了縮短周期只取一半我將輸入端乘了0.5(UE4會在編譯時默認將sin輸入端乘2π,所以材質中只需要輸入0-1就是一個周期)。最終取得區間如圖所示:

下方的區間比較好找,取法線z軸負值的區間就是了。

其中我在形變權重值上加上了 ObjectScale 的影響 ,目的是為了讓絕對偏移距離隨著物體的縮放發生改變,這樣物體在縮放的時候外形就不會發生變化了。

於是我們成功將球變成了梨

材質製作

材質的製作其實很簡單,就是簡單的一層菲涅爾固有色加菲涅爾發光

菲涅爾漸變是將VertexNormal和CameraVector點乘反向,固有色是用漸變lerp前後景兩個顏色。發光用了菲涅爾和相機空間的點法線y方向做混合,這樣發光就會被限制在物體下方。

剩下的粗糙度和Specular Level等就只有一個數值控制,法線在眼睛製作的環節會講


嘴巴製作



終於來到有技術含量(並沒有)一點的製作環節了,這隻史萊姆的嘴巴仔細看其實是有內部結構的:

這裡其實我用了視差去採樣不同的部分,具體思路是求出表面下方的uv,然後用這套uv去採樣嘴巴的形狀,和上方的嘴巴做混合即可。

其中製作嘴巴形狀的節點如下所示(有一些Magic Number請無視):

其實主要原理就是根據輸入uv定點去畫兩個圓,下方的圓減去上方的圓就有了上嘴唇的效果了。

視差的做法也比較常規,首先算出每個像素的偏移值,然後對每個像素的uv做偏移就可以了,這裡貼上野代碼

細心的朋友應該發現了一些端倪,就是下面的那個EdgeParallaxDepthFix是幹什麼用的?其實這個只是對球面弧度的一種補償

可以看到當暗紅色的視線從不同角度接觸到內部目標平面時,內外平面的距離是不一樣的。在球體中心射入的內外表面長度d1是明顯小於邊緣射入的d2長度。如果我們不做補償就會出現在邊緣看上去厚度變薄的錯誤效果。在這裡我還是用菲涅爾作為這個補償值,直接添加在尋找內表面的厚度上。當然這個補償值也應該和尋找深度掛鈎,這裡我沒有製作,如果有朋友想還原的話可以做進去。

剩下的就是顏色混合階段了,可以用不同深度的嘴部mask求交集,然後lerp不同的顏色即可。

眼睛製作


眼睛的製作也是全程序化的,這裡我是寫的custom。主要目的是求出眼睛區域的mask和法線。

其中mask的製作方法是先分別求出以左右眼睛中心為原點的兩個uv坐標系,算出基於0點的distance,定義半徑之後用半徑加smoothstep算出alpha區域,用smoothstep的好處是邊緣過渡會非常平滑,沒有什麼鋸齒(如下圖所示)。如果不知道smoothstep是什麼的戳這裡:

SmoothStep是個啥?這是數學的魅力!

接下來就是法線了,其實也很簡單,我直接用uv的兩個軸向以r和-r為區間繪製了兩個梯度,加上uv中心算distance得到法線的z分量,共同組成了最後的眼睛法線

因為可以拿到眼睛uv的長度,所以製作瞳孔啥的也是非常方便的,這裡就拋磚引玉,大佬們可以自行完善。

動作製作


動作分為兩部分,一部分是身體的形態運動,另一部分是面部表情運動。

首先自身形態變化我拆成了兩個不同的效果,一套是左右搖擺,一套是上下擠壓。大致製作方法都是先用物體空間位置和boundingbox算出變形區域,然後用三角函數和各種周期控制參數做出搖擺的動畫,最後匯總到一起連入世界位置偏移。其中搖擺的周期時間是擠壓的兩倍,因為每次搖擺到一個方向(半個周期)都需要做一次擠壓(一個周期)。

同時還需注意,為了讓擠壓的效果更真實,在擠壓的過程中體積需要橫向擴張。這裡我放一張之前做煤球時畫的示意圖。大家一看就明白了

萌物養成記 - 三維版煤球表情包製作解析

而且在壓縮和搖擺的動作肯定不能同時發生,需要有先後順序才好看,所以我在這裡加了一個偏移值來調整這個效果

無偏移

有偏移

很明顯可以看到有偏移的動畫更加自然。

接下來就是眼睛和嘴巴的動畫效果了,我分開製作了兩套,分別控制嘴巴和眼睛的動畫,這裡使用不同的偏移值效果提升會非常明顯,那種Q彈的感覺一下就出來了

無偏移

有偏移

另外我還在藍圖中做了眨眼控制,讓最終效果看起來更生動

做完這些後,效果就完成啦~~~

來個節點全家福

如果要說這次做下來的感受是什麼~~可能就是家裡桌子太高,坐久了肩膀有點痛吧。。。

轉發收藏留言點擊再看,你們的支持就是我更新的動力~~

(拜託拜託)

歡迎長按掃碼加入交流qq群:

相關焦點

  • 只需這一次,完全掌握UE4場景製作全流程
    2:使用ue4自生成光照uv,這個就非常偷懶了,直接提光照貼圖解析度就行了,再去進行擴邊設置,這樣做效果也不差,缺點就是精度都是一致的。3:如果你想得到非常細緻的效果,咱們可以使用RizomUV軟體手動展2套UV,這樣效果是最好的,重點的區域精度可以提高一點(不過手動處理真的很花時間呀,那是我逝去的青春!!!)
  • 一隻史萊姆憑什麼這麼受歡迎
    就像老話裡說的「熟讀唐詩三百首,不會做詩也會吟」,A島上就有這麼個惡搞《紅樓夢》劉姥姥的神帖,一連更新了近百樓。年近不惑的平凡上班族遭遇惡性事件不幸被刺,彌留之際與異世界系統相匹配,得到了「大賢者」與「捕食者」的技能,並以史萊姆的姿態開始冒險。故事的設定是傳統的異世界穿越,有意思的是轉生成RPG裡弱雞代名詞的「史萊姆」。
  • 聊聊史萊姆:做一個偉大的胖子!
    但是讓人萬萬沒想到的是,這個柔軟的胖子曾經也是一隻兇殘的怪獸(眾人:PIA!)。多年後電腦遊戲開始製作並開發,當時的遊戲模式大多都是 RPG,於是世界上第一款 RPG 電腦遊戲《巫術》誕生了。因此,要以此來構築一個恐怖驚悚的史萊姆模型是很難完成的,於是在這裡設計師便採用了一種可愛的卡通形象,這種形象比較簡單也便於展示。第二點原因(也是最重要的一點啊!)是當時這部作品的人物設定是——鳥山明(七龍珠粉快來啊!)。因為是鳥山明,所以為什麼採用這樣的形象我也就不多做解釋。
  • 日本輕小說最新玩法,主角居然是一隻史萊姆!
    因為在他死後,他首先意識到,自己變成了一隻..史萊姆成為史萊姆後,他只能每天吸食植物為生。「那麼,你要不要和我做朋友啊?」史萊姆問道。「什麼?你區區一個史萊姆,竟然想和我高傲的巨龍做朋友?」「那,就是說不行嗎?」
  • 動手做「史萊姆」
    看到這個標題,你一定想問:「史萊姆」是什麼?長什麼樣?好玩嗎?是怎麼做的?那就聽我來講一講吧!    「史萊姆」是一種黏土,它是透明的,涼涼的,裡面有一些小氣泡,略有黏性,很香;如果你做出來的史萊姆很黏手,很臭,就會被我們認為是失敗品。    現在史萊姆風靡全班,大家都在談論史萊姆製作史萊姆。上周六,我和桐桐一起到甘甘家做了一次透明的史萊姆。
  • 小夥穿越到異世界,竟成了一隻史萊姆,還變成了一個有理想的魔王
    越是普通人越是容易攤上事,萬萬沒想到走在路上都會被歹徒刺殺,當場就身亡了,臨終時居然還說:我家裡的電腦,硬碟裡的東西,幫我沉到浴缸裡,消除所有數據,這個的話懂的都懂當意識重新甦醒的那一刻,他發現自己喜聞樂見地穿越了,沒錯這又是一部穿越題材的動漫,只不過他並不是什麼王子首領這些開掛起步的角色,而是一隻史萊姆,沒錯不是個人正因為臨死前對自己處男身的吐槽
  • UE4下動作遊戲動態鏡頭的實現方法
    因此我們可以選擇在ue4的基礎上實現自定義擴展,同時能復用springArm組件的相關功能。下面對相機抖動的管理做個簡介。AddCameraShake負責增加一個相機抖動效果,ue4允許同時存在多個抖動動畫實例,使用了TArray進行管理。抖動動畫是短時生命周期的實例,所以內部使用了對象池進行優化。ue4選擇在拿出對象池中的動畫實例時進行參數重置,NewObject支持重新初始化。
  • 開局一隻史萊姆40分鐘速通方法教學
    本次給大家帶來的是開局一隻是史萊姆的40分鐘速通方法教學,這款遊戲只要掌握好合適的技能搭配是能夠達成速通的,這裡就給大家介紹一個只用40分鐘就能速通的方法教學,希望能幫助到各位有需要的玩家~
  • 美妙的史萊姆(女裝)人生,開始了!動畫《轉生史萊姆日記》PV2公開
    TV動畫《轉生史萊姆日記》第2彈PV公開,將於2021年4月6日開播,講述萌王利姆露與他森林居民的日常。
  • 男主轉生到異世界,成了史萊姆養殖戶,與上千隻史萊姆生活!
    男主名叫【竹林龍馬】,轉生到異世界後成為一位8歲小男孩,因為在森林裡發現了一隻史萊姆,因此開啟了史萊姆「養殖」生活,目前與龍馬生活的史萊姆超過一千隻,並且還有一些史萊姆是他研究的新品種,龍馬的樂趣便是與這群史萊姆一起生活,自穿越到異世界後,龍馬一個人與一群史萊姆在森林裡生活了三年。
  • 《史萊姆牧場》第5集:我發現了很多新的史萊姆啊!
    》第2集:開發新區,科學飼養史萊姆《史萊姆牧場》第3集:這隻喵星人,也太能吃雞了吧《史萊姆牧場》第4集:這黃金史萊姆有毒吧!各位極友好,又到了萌萌的《史萊姆牧場》時間了,今天極致哥將帶大家去位於地圖左下角的那個海島上看看,不過想要前往那個海島,我們首先要餵飽農場後面孤島上的一隻喵星人BOSS,帶上25隻山巖母雞就可以了。
  • 【Unity Shader- UV動畫原理及簡易實現
    下圖是 Unity 內置的時間變量名稱類別作用_Timefloat4t 是從場景加載開始時經歷的時間,(t/20 , t , 2t , 3t)_SinTimefloat4t 是時間的正弦值,(t/8 , t/4 , t/2 ,t)_CosTimefloat4t 是時間的餘弦值,(t/8 , t/4 , t/2 ,t)unity_DeltaTimefloat4dt 是時間增量,(dt , 1/
  • Unity Shader屏幕特效之馬賽克(Mosaic)材質
    C#腳本代碼要做成屏幕特效,還需要腳本配合,這裡不做過多解釋,腳本裡重要部分有注釋,需要注意的是幾個函數,具體用處可以看官方文檔(這裡和這裡)SystemInfo.supportsImageEffects)         {             enabled = false;             return;         }            // Disable the image effect if the shader can't
  • 如何製作無硼砂無膠水史萊姆,用免洗洗手液做史萊姆,玩了會上癮
    史萊姆一般可以用哪些材料製作?最簡單的史萊姆製作方法用膠水和清水再加下成形水就可以了。膠水和清水的比例在1:1左右。清水的比例越多,做出的史萊姆流動性則越強2.一般哪些材料可以讓史萊姆成形?最簡單的成形材料就是硼砂水了,另外部分品牌的洗衣液、小蘇打水、隱形眼鏡護理液、飽和鹽水、洗衣粉水、眼藥水等也能讓史萊姆成形。
  • 轉生成史萊姆你會怎麼辦
    目前為止就只有一部動漫了,不過第二部根據不可靠消息會在2021年的1月開始播出吧。利姆魯·特恩佩斯特:轉生前叫做「三上悟」因為一些特殊原因導致轉生到了異世界,還成功轉生成了一隻藍色史萊姆,還獲得了「大賢者」和「捕食者」這兩個技能,眾所周知史萊姆是沒有性別的,所以你們懂的,並且由於史萊姆形態太過萌了,所以我們的利姆魯喜提「萌王」這一稱號。
  • 史萊姆牧場下載教學
    史萊姆牧場(Slime Rancher)徹底顛覆了傳統遊戲中史萊姆的形象,取而代之的是可愛的萌系生物。這款第一視角開放沙盒遊戲採用了卡通風格,使得整個畫面風格顯得十分有趣,五顏六色的史萊姆們在遊戲中格外討人喜愛。本作的故事發生在距離地球一千光年之外的外星,玩家要使用一個高科技的吸塵器來捕獲各種史萊姆,想辦法滿足他們的需求並實現盈利。玩家手上只有一個吸塵器。
  • 用彩色泡泡球製作百分百成功的馬卡龍球史萊姆,顏值高還特別解壓
    史萊姆製作小技巧 1. 史萊姆一般可以用哪些材料製作?最簡單的史萊姆製作方法用膠水和清水再加下成形水就可以了。膠水和清水的比例在1:1左右。清水的比例越多,做出的史萊姆流動性則越強2.一般哪些材料可以讓史萊姆成形?
  • 一樣的異世界,不一樣的劇情,轉生初始角色是史萊姆
    對於廣大二次元的愛好者來說,轉生到異世界開始自己的新生活這種劇情已經見怪不怪了。轉生到異世界的少年一般都是獲得了一具帥氣的身軀,再配上一些逆天的技能,不僅在異世界幫助各種弱勢力,沒事還可以反殺一些強大的角色。然而,今年十月的一部新番卻又給了大家一個不一樣的轉生套路。
  • 問題來了,萌王史萊姆歸男子or女子組,你知道史萊姆最早的來源嗎
    人類當前為止創造了各種各樣的虛構生物,像史萊姆這樣的怪物,幾乎都是變形或合成的生物特徵。史萊姆(Slime),是一種在現代電子遊戲與奇幻小說常常出現的虛構生物,最早在1958年同名小說裡出現。在遊戲畫面較為簡陋的FC時代,只有形象簡單鮮明的形象才會獲得成功,水滴狀的史萊姆顯然符合這個時代的「明星氣質」。由於史萊姆受到了廣大玩家的喜歡,在《DQ》系列中,史萊姆也就發展為一個龐大的新家族。
  • 最正宗的沙皮膠史萊姆,原來是這樣做,解壓好玩不粘手
    這是愛逗給愛逗蜜做的第38期視頻喜歡史萊姆水晶泥的可以轉發朋友圈如果遇到製作問題