何謂Pose Space deformation(PSD)?
按照字面上來解釋,就是可以針對不同pose產生不同deformation(形變)變化的技術。更簡單來說,就是修正你希望的形變與joint產生的形變之間的落差。
寫成公式就是:
Corrective deformation 我想要的正確形變
– Joint deformation 骨頭所產生的形變
= Pose space deformation PSD所修正的形變
因為joint產生的形變有其極限,所以這種落差有時難以避免,像是:複雜的肌肉組織(後背、肩胛、手臂二頭肌、指節肌肉),或是遇上一些特殊狀況,比如:模型佈線錯誤來不及改、joint擺放位置不佳回不了頭、非常理的模型變化。
一般來說,PSD都是去偵測joint的數值來做變化,轉到特定角度就會產生對應的形變,因為可以直接在那個角度雕出想要的變化,因此使用上非常直觀與有效。這種技術能讓rigger的日子好過很多,可以很精確地達到animator想要的形狀變化,讓案子順利進行,皆大歡喜。
PSD在使用上,通常只要重複三個步驟:
- 旋轉或移動關鍵的joint到你想要改變shape的位置
- 雕出你想要在這個位置呈現的正確shape
- 設定你的shape與joint數值之間的關聯性
在Maya應用上,據我所知,有兩種方法:
- Maya Plug-in
Pixar Rigging TD Michael Comet佛心來的外掛。不但有教學文章,而且還很大方地分享在網路上給大家download使用,介面方便,功能完整,還可以左右mirror,缺點是版本間不相容,新的maya就需要新的外掛,只更新到8.0的版本而已。
好在他後繼有人,很有愛的VFX artiest David Johnson為我們提供了免費更新,而且還有做各種作業系統的版本,另外他還重寫了一篇完整的教學,深入淺出更勝Comet,我就是從看這篇文章學會如何使用PSD的,真是很感謝他無私地分享(大拜~)。
- Corrective Blendshape
利用blendshape + set driven key的做法,使得joint在特定旋轉角度時產生對應的blendshape變化,好處是不用plug-in,所以不會隨著版本汰換而失效,而且因為只用到joint和blendshape,所以還可以進遊戲引擎來使用。缺點是製作上比較不直覺。工具方面,大家通常都推薦rigging教學art of rigging 1第6章裡的mel-cgTKShapeBuild。
Double Helix Games的TD Robert Morgan提到過,PSD有兩個缺點:
- 因為Euler angle的關係,PSD修正shape的角度會受限。
- PSD針對單一角度可以很準確,可是同時有三個角度在旋轉時,shape的變形效果就很難控制。
工作上唯一用到的一次就是公司原創短片Opuesto主角Kyle的肌肉變形。因為手臂模型佈線跟貼圖的肌理看起來
麻煩的是當時要一台一台電腦幫animator安裝plug-in,而且角色身體左右沒有對稱,所以同樣的shape得乖乖地雕兩次,也可能產生些微不對稱的情形,還有就是要快速地學會這個工具。肩膀跟手臂都有做修正,一邊應該是用上了9個PSD,當時覺得多到快吐了,後來聽到sofa的量,才知道這其實沒什麼。工具上就是使用David Johnson佛心提供的plug-in,非常好用。
【使用者經驗分享】(轉貼自FB的rigging club)
Sofa Studio的Cara Chou:至於在修psd上,除了正前、正後,正旁,還要再加上側45度的型下去一起修才會漂亮,而且要先修出正前、正後,正旁,然後再用兩個雷達的傘打開,再去修中間的45度,也才會接得順,不然某些點會跳動,或是某些角度的時候形狀會鼓起或凹下。如果在要求比較高的模型上,粗略估計一個肩膀約要16個雷達,連手指頭的關節也會修到,不過用psd修出來的模真的很漂亮,還會有肌肉感,就看使用者的需求了!
CGCG的Chris Lai:最重要的還是修"型"的美感....
至於要做幾個,見人見智,有的時候還需要使用expression去計算中間的變化,我看過100多個blendshape在一個角色身上的檔案~~~~有點誇張.....
PSD補充資料:
- 紐約的動畫師Zeth Willie用影片教學完整解釋了PSD概念到最後做法,他用的工具是英國RnD動畫師Christian Breitling所開發的外掛correctiveShape,可惜目前版本也只支援到2008,個人沒有用過, 歡迎用過的朋友分享心得。
- Maya Rigging Wiki的PSD資源整理
- 在美國LA做technical artist的Ryan Trowbridge做了Python版本的PSD
- 法國的Character TD Cedric Bazillou在他的部落格上對PSD做了一系列深入探討,透徹解釋了PSD的原理跟所有細節,甚至還開發了一個類似Corrective Blendshape的inverseSSD_BlendShape_Tools,並解釋了整個思路過程。另外他提到3dMax裡有類似的功能,叫做skinmorph modifier。
- 義大利TD Tommaso Sanguigni改造了Comet的PSD內容開發出了新工具tsPoseSpaceDeformer,不用plug-in就可以直接在任何版本的Maya上運作,可惜沒有分享出來給大家聞香。
- 美國RnD公司JoeAlter Inc.針對不同面數surface變形的外掛工具LipService for Maya,最新版本是要錢的,不過舊版本的beta版可以免費下載, 個人沒有用過, 歡迎用過的朋友分享心得。進一步說明,LipService是主要變形工具,相當於一般的PSD,而LBrush則是針對PSD後的結果再去做更多細節的雕刻工具,就像是脫離靜態可以針對動作來雕刻型變的ZBrush或MudBox,厲害的是它也可以與 ZBrush或MudBox做匯出匯入上的整合,JoeAlter聲稱,這樣的工具即使是在各大studio內部也是前所未見。
下面是他們灰熊厲害的Demo:
- 迪士尼的文獻,根據Lewis, J. P., Cordner, M., and Fong, N. SIGGRAPH 2000上的論文 Pose space deformation作探討,首度應用在電影Bolt當中。
最後,以上都是我個人閉門造車的理解與資料整理,歡迎有經驗的各路朋友,交流討論!感謝!
3 則留言:
感謝你的分享!!
很受用!!
想請教一下(PSD有兩個缺點那段)
如果把elbow joint的Z軸lock起來,rotation order設定為xyz的情況下(on XZ plane),這樣把旋轉軸限定在Y(手臂曲張)跟Z(前臂自轉),而且跟Joint orientation也不會偏移.
這樣還會有euler的問題嗎?
哈囉,匿名你好
按照你的方法應該就不會發生euler的問題。不過因為PSD常應用的位置大多是在shoulder joint的變化,elbow joint的旋轉問題本來就比較單純,所以在其他位置euler的問題還是有可能會發生的。
張貼留言