《主流游戲相機(jī)實(shí)現(xiàn)》通過(guò)Unity 3D引擎和Cinemachine組件來(lái)實(shí)現(xiàn)主流游戲的相機(jī)設(shè)置,切換和管理的概念,習(xí)慣,基本原理,經(jīng)驗(yàn)參數(shù)等。實(shí)現(xiàn)內(nèi)容以動(dòng)作游戲相機(jī)為主,但不限于動(dòng)作游戲,也可以用于橫版格斗、FPS、RPG等類(lèi)型,需要自行調(diào)整和研究。
課程屬于基礎(chǔ)和進(jìn)階課程,適合對(duì)鏡頭控制感興趣的讀者。
《主流游戲相機(jī)實(shí)現(xiàn)》目錄
1|Cinemachine 概述
2|《戰(zhàn)雙》相機(jī)分解和實(shí)現(xiàn)
3|《Sifu/師傅 》戰(zhàn)斗相機(jī)部分分解與實(shí)現(xiàn)
4|多目標(biāo)相機(jī)實(shí)現(xiàn)
5|《對(duì)馬島之魂》戰(zhàn)斗相機(jī)部分實(shí)現(xiàn)
6|相機(jī)碰撞和場(chǎng)景交互處理
7|Demo工程
本文節(jié)選自UWA學(xué)堂的《主流游戲相機(jī)實(shí)現(xiàn)》第一節(jié)《Cinemachine 概述》。
1 基本組件組成
Cinemachine核心組件包括Brain和Virtual Camera(虛擬相機(jī)),Brain負(fù)責(zé)相機(jī)的切換,虛擬相機(jī)負(fù)責(zé)拍攝。
Virtual Camera
虛擬相機(jī)主要由六個(gè)模塊組成,分別是:
Lens:包括調(diào)整FOV等參數(shù);
Body:負(fù)責(zé)處理相機(jī)和跟蹤目標(biāo)之間的相對(duì)位置的這樣一個(gè)關(guān)系;
Aim:負(fù)責(zé)處理焦點(diǎn)和跟蹤目標(biāo)在鏡頭中的相對(duì)位置;
Noise:模擬手持相機(jī)的晃動(dòng);后處理模塊:讓每個(gè)鏡頭有不同的后處理效果;
Extnesions可擴(kuò)展模塊:包括碰撞處理等功能。
Body屬性提供了下列算法來(lái)移動(dòng)虛擬相機(jī):
- Do Nothing:不移動(dòng)虛擬相機(jī)。
-?Framing Transposer:在屏幕空間,保持相機(jī)和跟隨目標(biāo)的相對(duì)位置,可以設(shè)置緩動(dòng)。
-?Hard Lock to Target:虛擬相機(jī)和跟隨目標(biāo)使用相同位置。
-?Orbital Transposer:相機(jī)和跟隨目標(biāo)的相對(duì)位置是可變的,還能接收用戶的輸入。常見(jiàn)于玩家控制的相機(jī)。
-?Tracked Dolly:相機(jī)沿著預(yù)先設(shè)置的軌道移動(dòng)。
-?Transposer:相機(jī)和跟隨目標(biāo)的相對(duì)位置固定,可以設(shè)置緩動(dòng)。
Aim屬性提供了下列算法來(lái)旋轉(zhuǎn)相機(jī)對(duì)準(zhǔn)Look At的目標(biāo):
-?Composer:將目標(biāo)保持在相機(jī)鏡頭內(nèi),可以設(shè)置多種約束
-?Group Composer:將多個(gè)目標(biāo)保持在相機(jī)鏡頭內(nèi)
-?Do Nothing:不旋轉(zhuǎn)相機(jī)
-?POV:根據(jù)用戶的輸入旋轉(zhuǎn)相機(jī)
-?Same As Follow Target:將相機(jī)的旋轉(zhuǎn)和跟隨目標(biāo)的旋轉(zhuǎn)同步
-?Hard Look At:將Look At目標(biāo)固定在鏡頭中心的位置。
組織結(jié)構(gòu):
1.1 Brain和Virtual Camera執(zhí)行過(guò)程
CinemachineBrain每幀通過(guò)VirtualCamera計(jì)算真實(shí)相機(jī)的位置,并同步到真實(shí)相機(jī)上。 真正的數(shù)據(jù)計(jì)算又是通過(guò)VirtualCamera上的流水線來(lái)計(jì)算的。 這是一個(gè)簡(jiǎn)化的流程說(shuō)明,真實(shí)計(jì)算還有相機(jī)切換時(shí)的混合、流水線之外的Extension、和CinemachineCore對(duì)Cinemachine的全局管理等。
1.2 CinemachineBrain詳細(xì)調(diào)用流程 主要可以分為兩個(gè)時(shí)間節(jié)點(diǎn)和三件事。
- 時(shí)間節(jié)點(diǎn)
? ? ?- FixedUpdate之后
? ? ?- LateUpdate
- 三件事
? ? ?- 維護(hù)虛擬相機(jī)的狀態(tài),永遠(yuǎn)在LateUpdate。
? ? ?- 通過(guò)虛擬相機(jī)計(jì)算State,根據(jù)UpdateMethod的設(shè)置,在FixedUpdate之后或LateUpdate。
? ? ?- 將虛擬相機(jī)的State同步到真實(shí)相機(jī)上,根據(jù)BlendUpdateMethod的設(shè)置,在FixedUpdate之后或LateUpdate。
VirtualCamera中State計(jì)算流程
VirtualCamera中 Pipeline Stage
流水線階段
適合讀者
1、從事第三人稱(chēng)3D游戲研發(fā)的策劃、程序、美術(shù)、分鏡師以及獨(dú)立制作人
2、希望提升游戲體驗(yàn)設(shè)計(jì)和實(shí)現(xiàn)能力,系統(tǒng)理解業(yè)務(wù)與技術(shù)如何結(jié)合的開(kāi)發(fā)者
3、具備一定Unity引擎相機(jī)基礎(chǔ)的同學(xué)
4、對(duì)鏡頭控制感興趣的同學(xué)
5、重視3C和提升相機(jī)表現(xiàn)品質(zhì)的群體
你將獲得
1、主流游戲相機(jī)控制的實(shí)現(xiàn)思路和技巧
2、優(yōu)化玩家體驗(yàn)的能力
3、優(yōu)化產(chǎn)品品質(zhì)和表現(xiàn)力的思路
4、運(yùn)行視頻以及Unity工程源碼
更多精彩內(nèi)容,歡迎關(guān)注UWA學(xué)堂:edu.uwa4d.com