3D動畫中相機的位置應(yīng)用
在第三人稱游戲中,相機如果使用固定距離跟隨玩家,會出現(xiàn)很多問題,包括被障礙物阻擋、運動時如何跟隨等等。在很多重慶3D動畫公司的游戲使用相機臂作為這個問題的解決方案,通過相機臂連接相機主體與玩家角色,讓攝像機與拍攝對象保持固定距離,并且在遇到遮擋時動態(tài)調(diào)整。
相機臂的長度可以根據(jù)實際關(guān)卡情況動態(tài)調(diào)整,相機臂的碰撞屬性也可以自行設(shè)置,在大部分第三人稱游戲中,相機臂已經(jīng)成為相機系統(tǒng)的默認組成部分之一。
1.2 相機基本屬性
本部分將會介紹相機中的基本屬性,包括相機的方向、相機的表現(xiàn)風(fēng)格、視錐體、FOV等等。
1.2.1 位置
討論相機的位置時,一般會區(qū)分重慶動畫公司相對坐標(biāo)與絕對坐標(biāo),在游戲中,絕對坐標(biāo)一般指基于關(guān)卡/地圖的世界坐標(biāo)系的坐標(biāo),本篇中的絕對坐標(biāo)的概念等價于世界坐標(biāo),不再進行額外轉(zhuǎn)換。
相對坐標(biāo)
相對坐標(biāo)即子對象相對于其父對象的相對位置,常見于Character上的第三人稱相機。
需要注意的是,相機的父對象不一定直接是Character,可能是Character上已經(jīng)存在相對關(guān)系的某個對象,此時的相對坐標(biāo)就會多層嵌套。
如在UE4引擎中,打開示例項目的Character藍圖,可以看到重慶3D動畫制作FollowCamera是CameraBoom的子對象,而CameraBoom與Character本身還有一層相對關(guān)系。
在改變相機坐標(biāo)的過程中,要時刻確認當(dāng)前操作的相對坐標(biāo)是位于哪個相對坐標(biāo)系。
絕對坐標(biāo)
絕對坐標(biāo)即相機在世界坐標(biāo)系中所處的位置,不受相機目標(biāo)的影響。絕對坐標(biāo)可用于判斷相機與場景內(nèi)物件是否可能發(fā)生交互,或用于預(yù)測相機的移動軌跡
插槽(Socket)與相機臂
在引擎中,相機常常作為子對象進行使用。當(dāng)相機被添加至角色中時,有時需要確定相機的插槽,插槽處即為相對坐標(biāo)的0點。
插槽不一定是相對于角色位置的靜態(tài)點,也可能位于角色骨骼或基于骨骼的直線上,隨著重慶動畫制作角色的動畫進行更復(fù)雜的移動。
上述情況基于直接添加相機本身,實際的引擎操作過程中,更多的會使用SpringArm組件(或類似的帶有相機臂的組件),SpringArm組件可以理解為一根彈簧臂,其子項與父項存在一段距離,彈簧臂會嘗試維持父子之間的固定距離,當(dāng)出現(xiàn)碰撞時,會嘗試收回子項。
當(dāng)使用這類組件時,插槽一般對應(yīng)的是相機臂的起點,而相機被放置在相機臂的終點上。
此處的內(nèi)容可以參考對應(yīng)引擎或插件的具體文檔進行學(xué)習(xí)。
