在Unity中製作動畫,如何兼顧動畫和物理效果將人物頭髮處理到最佳效果?

下圖截取自視頻:MMD【艦娘】歐根親王俾斯麥 Lamb.

第一次提問,若有描述不周的地方請指正!

近日遇到一個瓶頸,完全使用物理來控制頭髮的話,會出現動態不自然、有嚴重穿幫,以及因為有碰撞體而頻繁抖動的狀況。怎麼思考都無法解決,故上來提問,期望有技術大牛點撥一二。上面的視頻只是舉例,知道物理動畫和視頻動畫還是有不一樣之處的。

1.在Unity 3D中是否可以做到像上面視頻中那樣的頭髮物理效果(尤其是披肩長發)?若是,該如何操作?

2.上面的效果是否可以讓頭髮的動態一半受動畫影響一半受物理效果影響?若是,該如何操作?

3.若以上兩個問題皆不可實現,在Unity中應當怎樣處理角色的頭髮比較好?

感謝回答!


柔體骨骼,類似trail的效果,通過根動畫影響子動畫的抖動,然後設定一定的碰撞 使得可以被其他物體碰撞即可, 日系動畫裡面有專門的研究項(乳搖 臀搖等)

這種綁定後,通過骨骼做物理的方法 是比較節儉的

MMD是有另外的unity插件的 ,內置頭髮的演算法

要我做我大概會用dynamicBone的插件,MMD太重了一點,我不是最喜好(當然是很好)

VPVP MMD下載

UnityでMMDを動かす會 (ミクミクダンスフォーユニティー) プロジェクト日本語トップページ

MMD for unity

MMD的unity插件是開源的,如果你問那個視頻裡面是怎麼做的,那就是MMD無疑了,至於是在MMD內自己渲染的 還是unityrealtime的 我不好說,兩者應該都是可以,日本人挺愛用xsi做完綁定進MMD做動畫的,由於我不是宅向,研究不多。

DynamicBone

Asset Store

柔體或者布料也可以一試


看了一下題主的視頻。

那個明顯是用骨骼綁定來做的。扎小辮 MM 的頭髮做得很飄逸,但是長發 MM 明顯不太自然。

Unity3D 里的物理引擎多用來製作遊戲方面的邏輯,用來做動畫的話,功能是比不上專業影視軟體的。

如果想做到視頻里的效果,用骨骼綁定然後調動畫就行,是費點勁,但其實不難。因為不是次時代級別,非要上毛髮系統的話,也許更加不可控。


Unity的cloth沒怎麼用過,只說一下大體思路。

問題1 對於長發,怕的就是由於人物劇烈運動導致飛的崩壞。能想到的方法大概就是 用maxDistance這種限制住,用stiffness來做的更「硬」一點,用Damping來儘力保持當前比較「不崩壞」的狀態,通過程序方式來減少cloth的位移,旋轉對cloth的影響。

碰撞抖動我想應該有一些方法可以解決的(比如碰撞的設置,碰撞體形狀是否合適,往往抖動的原因是碰撞體同時撞到兩個剛體,互相補正導致的。或者用迭代,循環兩次取中間值),具體的因為unity不熟就不說了。

問題2 個人不推薦,因為Animation是完全無視碰撞的,blend結果往往會導致物體間互相嵌入

問題3 其他答主說的Dynamic Bones也很好,屬於Chain Constraint的方式,處理負荷也會比較客觀。然而畢竟是Joint式的方法,看起來也很難達到驚艷的效果。使用哪種方法取決於髮型,想要表現的效果以及運行負荷。崩壞神馬的,一個一個解決下去總會變好的。


Dynamic Bone

Dynamic Bone~


樓主可以看一下這篇文章,不知道對你有幫助嗎,http://game.ali213.net/thread-3609633-1-1.html


推薦閱讀:

為什麼知乎很多人對我國遊戲行業的前景都非常不看好?
在當前網路環境下(2016年),手游使用長連接(TCP)好還是短連接(HTTP)好?
Unity3D開發中 使用C# 很多文檔都有提到這個「避免使用構造函數 不要在構造函數中初始化任何變數」為什麼?
Unity3D開發中如何用好單例模式?

TAG:遊戲開發 | Unity遊戲引擎 | 物理引擎 | 三維動畫製作 |