影片系統是游戲中對表現力影響最大的系統之一,經過一段時間的調研,最后通過這篇文章總結下游戲影片系統,
精靈影片系統
精靈影片系統在早年間計算機性能還比較差的時候被廣泛運用,一般作為游戲的背景而存在,比如


這些人物都是一個四邊形,游戲引擎會給四邊形連續貼上紋理貼圖來產生動感,通常為了不暴露這是個扁的四邊形,會使這些四邊形一直面向攝像機,比如

這類影片系統在早期游戲中盛行,因為當時的計算機性能不夠,而該系統對計算機資源的消耗非常低,現在部分手游依然會保留這類影片系統,因為手機性能有限,
剛性層階式影片
剛性層階式影片驅動的人物都由一堆獨立的剛性物體組合而成,剛性物體指的是不會發生形變(包括縮放)的物體,然后影片系統會驅動每一個剛性物體,從而實作影片效果,最經典的例子就是1997年在PS上發售的FF7,

這個系統驅動的是3D模型,而不再是四邊形貼圖,同時還能保持高效的性能和較低的記憶體使用量,缺點是不允許網格發生形變,整個人物會顯得非常生硬,而且人物的關節位置會產生明顯的“裂縫”,
每頂點影片
每頂點影片需要影片師為每個頂點去k影片,作業量非常巨大,產生的資料量也非常巨大,但是可以獲得非常精細的影片效果,網格的三角形產生形變,通常用于制作CG中人物的表情,一般通過硬體設備來捕捉人臉資訊,再轉換成頂點資料,
變形目標影片(morphing animation)
由于每頂點影片需要保存大量的影片資料,不方便存盤和使用,于是提出了變形目標影片,影片師只需要通過調整網格上所有頂點的資訊制作出一些靜態姿勢(morph target),這些靜態姿勢都是一些“極端”的姿勢,例如生氣、開心等,在游戲引擎中通過對這些靜態姿勢按時間進行線性插值即可得到影片,
蒙皮影片(skinened animation)
有時也被稱為骨骼影片、蒙皮骨骼影片,是一種FK
為了可以得到較生動的影片效果,允許網格的三角形產生形變,同時兼顧較高的性能、較低的存盤空間,蒙皮影片便出現了,現在市場上幾乎所有的游戲都采用蒙皮影片作為影片解決方案,
概念
在蒙皮影片中有幾個重要的概念,首先是骨骼(skeleton),骨骼由關節通過一棵樹的形態組織起來,如果是一個人物模型,一般以髖部為根節點,以肢體末端為葉節點,比如手指、腳指、眼睛等,skeleton本身不需要被渲染引擎渲染出來,僅由影片系統驅動,
然后是皮膚(skin),皮膚由多邊形網格組成,而網格又由頂點構成,這些頂點將會被影片師通過設定權重系結(bind)到若干關節上,一般每個頂點最多系結4個關節,但不是所有的關節都會被頂點系結,這些沒有被系結的關節又稱為定位器(locator),作為其它模型的掛接點存在,

蒙皮影片中存在幾個重要的姿勢(pose),這些姿勢可以矩陣或者SQT格式來保存,首先是系結姿勢,又稱為T-pose,顧名思義,是影片師在給模型頂點做系結時用的姿勢,該姿勢從DCC中輸出之后就固定好了,在游戲運行時不會被改變,


然后是區域姿勢,它保存了當前關節在其父關節空間中的姿勢,因為影片引擎直接驅動的是區域姿勢,我們經常需要對區域姿勢進行各種插值,所以一般不會存盤為矩陣形式,而是存盤為SQT形式,我們的影片片段就是由一連串的區域姿勢組合起來,也就是說影片片段是一個因變數為區域姿勢,自變數為時間的函式,
最后是全域姿勢,它保存了關節在其模型空間或世界空間中的姿勢,具體保存形式不同的引擎有不同的做法,它是在游戲運行程序中通過聯合具有父子關系的區域姿勢實時生成的,算是被影片引擎間接驅動,
蒙皮(skinning)
首先需要準備資料,每一個關節都保存著一個系結姿勢逆矩陣,以下簡稱IBP,該矩陣可以將物體從模型空間轉換到當前關節空間,IBP是在3D模型從DCC輸出后,利用T-Pose計算出來的,一次計算,無限次使用,
影片引擎Update之后,每一個關節都會得到一個最新的區域姿勢,這個時候可以進行一些額外的插值計算、程式式影片、IK等后處理程序,因為區域姿勢一般保存為SQT格式,所以需要在這時轉換成矩陣,
然后我們開始計算每個關節的全域姿勢矩陣,計算方法是依次連接關節本身及其所有父節點的區域姿勢矩陣,
最后IBP乘上全域姿勢矩陣,就得到了蒙皮矩陣,頂點乘上蒙皮矩陣后會對頂點產生什么樣的影響呢?可以這么想象:頂點原本位于模型為T-Pose時的模型空間中,乘上了IBP之后進入到關節空間中;再乘上全域姿勢矩陣,這時模型擺出了由影片引擎驅動的姿勢,在這個姿勢下從關節空間回到模型空間,
所以最終呈現的效果是,頂點被關節帶到了特定位置,計算出所有關節的蒙皮矩陣之后,我們就得到了矩陣調色
然后開始正式蒙皮,每個頂點都會從矩陣調色板中取得需要系結的關節的蒙皮矩陣,然后更具影片師設定好的權重對這些矩陣進行混合,頂點乘上混合后的矩陣,這時蒙皮就完成了,
ps:影片引擎Update時,可以通過多種方式計算出區域姿勢,可以對單個影片片段進行一維線性插值實作時間性混合來得到常規的影片效果,可以對兩個影片片段進行淡入/淡出計算獲得圓滑過渡、凍結過渡等過渡效果,更進一步推廣,可以對多個影片片段進行N維線性插值實作自定義的混合,為了充分利用資源,可以對影片片段進行分部混合或加法混合,例如人物在Idle狀態時,通過加法混合給人物加入一些小動作,使得人物更真實,例如...

由于還要搬磚,沒有辦法一一回復私信把學習資料發給大家,我直接整理出來放在下面,覺得有幫助的話可以下載下來用于學習
鏈接:https://pan.baidu.com/s/1C-9TE9ES9xrySqW7PfpjyQ 提取碼:cqmd
感謝各位人才的點贊、收藏、關注
微信搜「三年游戲人」識訓一枚有情懷的游戲人,第一時間閱讀最新內容,獲取優質作業內推
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/523110.html
標籤:其他
上一篇:最小生成樹
