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