【Cinemachine智能相機教程】VirtualCamera(二):Body屬性

摘要:【長文預警,先收藏後品嚐】Cinemachine中的虛擬相機如何跟隨目標物體呢?這就需要搞明白Body屬性的設置咯。

你好,我是跟着大智學Unity的萌新,我叫小新,這是我本週的學習總結報告哦。

自從咱們一起5分鐘入門Cinemachine之後,上週我和你一起學習了Cinemachine中的VirtualCamera的基本用法,今天咱們來學習一下它的Body屬性。
**【長文預警,先收藏後品嚐】**Cinemachine中的虛擬相機如何跟隨目標物體呢?這就需要搞明白Body屬性的設置咯。

Body屬性

CinemachineVitualCamera組件中的Body屬性用於設置相機移動時使用什麼算法。需要先設置好上面的Follow屬性。

Cinemachine包含以下移動相機的算法:

  • Do Nothing:不移動虛擬相機
  • Framing Transposer:跟隨目標移動,並在屏幕空間保持相機和跟隨目標的相對位置。
  • Hard Lock to Target:虛擬相機和跟隨目標使用相同位置。
  • Orbital Transposer:相機和跟隨目標的相對位置是可變的,還能接收用戶的輸入。常見於玩家控制的相機。
  • Tracked Dolly:相機沿着預先設置的軌道移動。
  • Transposer:跟隨目標移動,並在世界空間保持相機和跟隨目標的相對位置固定。

Do Nothing算法

選中這個算法時,虛擬相機激活時,會控制Unity相機會固定在當前虛擬相機的位置,不會移動。用於固定位置的鏡頭,也可以通過自定義腳本來控制相機的位置。通常和Look At配合使用,模擬固定位置的跟隨鏡頭。

Framing Transposer算法

選中這個算法時,Cinemachine會在屏幕空間將相機和跟隨物體保持固定的相對位置關係。只會改變相機的位置,不會改變相機的旋轉。還可以設置偏移、阻尼、構圖規則等等。

Framing Transposer算法是爲2D和正交相機設計的,主要用於2D情況。但是對於透視相機和3D環境也可以使用。

這個算法工作流程大概是:首先沿着相機的Z軸移動相機直到Camera Distance距離的XY平面上,然後在XY面上平移,直到目標物體在屏幕空間到達期望的位置。
特別注意:使用Framing Transposer時,Look At屬性必須爲空。

如果Follow屬性是一個Target Group(後面會講到),會有額外的設置。

屬性詳解

Lookahead Time:根據目標的運動,調整虛擬相機與“跟隨”目標的偏移量。Cinemachine預測目標在未來數秒之內到達的位置並提前設置Unity相機的位置。這個功能對微動的動畫敏感,並且會放大噪點,導致非預期的相機抖動。如果不能接受目標運動時的相機抖動,減小這個屬性可能會使相機動畫更流暢。
Lookahead Smoothing:預測算法的平滑度。較大的值可以消除抖動但會使預測滯後。
Lookahead Ignore Y:如果選中,在預測計算時會忽略沿Y軸的移動。

X Damping:相機在X軸上移動的阻力系數。較小的值會使相機反應更快。較大的值會使相機的反應速度變慢。每個軸使用不同的設置可以製造出各種類型相機的行爲。
Y Damping:相機在Y軸上移動的阻力系數。較小的值會使相機反應更快。較大的值會使相機的反應速度變慢。
Z Damping:相機在Z軸上移動的阻力系數。較小的值會使相機反應更快。較大的值會使相機的反應速度變慢。

各區域示意圖

Screen X:目標的水平屏幕位置。相機移動的結果是使目標處於此位置。
Screen Y:目標的垂直屏幕位置,相機移動的結果是使目標處於此位置。
Camera Distance:沿攝像機Z軸與跟隨目標保持的距離。
Dead Zone Width:當目標在此位置範圍內時,不會水平移動相機。
Dead Zone Height:當目標在此位置範圍內時,不會垂直移動相機。
Dead Zone Depth:當跟隨目標距離相機在此範圍內時,不會沿其z軸移動相機。

Unlimited Soft Zone:如果選中,Soft Zone沒有邊界
Soft Zone Width:當目標處於此範圍內時,會水平移動相機,將目標移回到Dead Zone中。Damping屬性會影響攝像機的運動速度。
Soft Zone Height:當目標處於此範圍內時,會垂直移動相機,將目標移回到Dead Zone中。Damping屬性會影響攝像機的運動速度。
Bias X:Soft Zone的中心與目標位置的水平偏移。
Bias Y:Soft Zone的中心與目標位置的豎直偏移。

Center On Active:選中時,虛擬相機激活時會將鏡頭中心對準物體。不選中時,虛擬相機會將目標物體放置在最近的dead zone邊緣。

下面的屬性僅當Follow屬性設置爲Target Group時顯示。

Group Framing Mode:指定構圖時要考慮的屏幕尺寸。

  • Horizontal 僅考慮水平尺寸。忽略垂直尺寸。
  • Vertical 僅考慮垂直尺寸。忽略水平尺寸。
  • Horizontal And Vertical 使用水平和垂直尺寸中較大的那個來獲得最佳匹配。
  • None 不進行任何構圖調整。

Adjustment Mode 如何調整相機以獲得所需的取景。可以是縮放、拉近拉遠或同時進行。

  • Zoom Only 不移動相機,僅調整FOV。
  • Dolly Only 移動相機,不修改FOV。
  • Dolly Then Zoom 將相機移動到範圍允許的最大範圍,然後根據需要調整FOV。

Group Framing Size:目標應占據的屏幕大小比例。使用1填充整個屏幕,使用0.5填充一半的屏幕,依此類推。

Max Dolly In:朝目標拉近相機的最大距離。
Max Dolly Out:遠離目標拉遠相機的最大距離。
Minimum Distance: 限制相機可以接近目標的最小距離。
Maximum Distance:限制相機可以遠離目標的最大距離。
Minimum FOV:自動調節FOV時的最小值。
Maximum FOV:自動調節FOV時的最大值。
Minimum Ortho Size:自動調節正交尺寸時的最小值。
Maximum Ortho Size:自動調節正交尺寸時的最大值。

Cinemachine Target Group組件

Cinemachine Target Group組件可以讓多個GameObjects作爲一個組,設置爲Look At的對象。在虛擬相機中使用Group Composer算法,可以設置Follow屬性爲這個TargetGroup。

如何創建一個Target Group呢?

1、菜單欄選擇Cinemachine > Create Target Group Camera。Unity會在場景中添加一個虛擬相機和Target Group。Follow和Look At屬性會自動設置爲這個Group。
2、Hierarchy中選中這個Group
3、Inspector上可以點擊加號+添加新的物體到這個組
4、點擊加號後,設置GameObject、權重和半徑。
5、可以重複多次3-4步來添加更多物體。

屬性詳解
Position Mode 如何計算Group的位置

  • Group Center 根據所有物體的包圍盒計算一個包含它們的大包圍盒,Group Center就是這個大包圍盒的中心
  • Group Average 根據所有物體的位置加權重計算平均值

Rotation Mode 如何計算Target Group的旋轉

  • Manual 使用TargetGroup根物體的旋轉。推薦設置
  • Group Average 根據所有物體的旋轉加權重計算

Update Method 更新Target Group的Transform的時機

Targets 組內包含的物體列表

  • Weight 每個對象的權重
  • Radius 每個物體的半徑,用於計算包圍盒。不可爲負數。

Hard Lock To Target算法

Unity相機保持和目標位置一致,即位置同步。

Damping:相機追趕上目標位置的時間。如果爲0,那就是保持同步,如果大於0,相當於經過多少秒相機和目標位置重合。

Orbital Transposer算法

這個算法支持相機和目標之間的可變相對位置關係。可以接受玩家的輸入,動態的控制相機的位置。

Orbital Transposer引入了一個新的概念叫heading,代表了目標移動的方向或面朝的方向。Orbital Transposer會嘗試移動相機,讓鏡頭朝向heading的方向。默認情況下,相機的位置會在target的正後面。也可以通過Heading Bias屬性設置。

如果給Orbital Transposer添加了輸入控制器,玩家就可以控制相機圍繞目標旋轉。可以設置爲Input Manager中的軸,也可以直接用腳本控制。

Recenter To Target Heading屬性選中時,在沒有輸入時Orbital Transposer可以自動重新居中相機。

屬性詳解
Binding Mode綁定模式:從目標推斷位置時使用的座標空間。

  • Lock To Target On Assign:本地空間,相機被激活或target賦值時的相對位置。
  • Lock To Target With World Up:本地空間,保持相機y軸朝上,yaw和roll爲0。
  • Lock To Target No Roll:本地空間,鎖定到目標物體,roll爲0。
  • Lock To Target:本地空間,鎖定到目標物體
  • World Space:世界空間
  • Simple Follow With World Up:相對於目標的位置,使用相機的本地座標系,保持相機y軸朝上

Follow Offset:跟隨目標時的位置偏移
X Damping:相機在X軸上移動的阻力系數。較小的值會使相機反應更快。較大的值會使相機的反應速度變慢。每個軸使用不同的設置可以製造出各種類型相機的行爲。 綁定模式爲Simple Follow With World Up時不可用。
Y Damping:相機在Y軸上移動的阻力系數。較小的值會使相機反應更快。較大的值會使相機的反應速度變慢。
Z Damping:相機在Z軸上移動的阻力系數。較小的值會使相機反應更快。較大的值會使相機的反應速度變慢。

【下面3個屬性參考上面的飛機圖】
Yaw Damping:相機在y軸旋轉的阻力系數。較小的數字會使相機反應更快。較大的數字會使相機的反應速度變慢。每個軸使用不同的設置可以製造出各種類型相機的行爲。Binding Mode爲Lock to Target With World Up、Lock to Target No Roll、Lock to Target時可用。
Pitch Damping:相機在x軸旋轉的阻力系數。較小的數字會使相機反應更快。較大的數字會使相機的反應速度變慢。 Binding Mode爲Lock to Target No Roll、Lock to Target時可用。
Roll Damping:相機在z軸旋轉的阻力系數。較小的數字會使相機反應更快。較大的數字會使相機的反應速度變慢。 Binding Mode爲Lock to Target時可用。

Heading:計算Follow朝向的方法
Definition:計算方法

  • Position Delta:基於當前幀和上一幀的目標位置之間的變化
  • Velocity:使用目標的剛體速度,如果目標沒有Rigidbody組件,會使用Position Delta
  • Target Forward:使用目標的transform.forward作爲heading的方向
  • World Forward:使用世界座標系中的Vector3.forward作爲heading方向

Bias:相機圍繞旋轉的偏移,單位是度數。

Recenter To Target Heading:接收不到用戶輸入時,自動居中。
Enable:是否啓用
Wait Time:等待延遲時間,用戶無輸入後多長時間重新自動居中。
Recentering Time:重新自動居中的過程花費的時間

X Axis:通過玩家輸入控制Heading方向。
Value:當前值
Value Range:輸入範圍
Speed:最大速度(Max Speed)或者最大增加速度(Input Value Gain)
Accel Time:加速到最高速度所需要的時間
Decel Time:減速到0所需的時間
Input Axis Name:接收輸入的Input Manager中的軸名稱,空字符串代表不接收輸入。
Input Axis Value:玩家輸入的值。可以直接通過自定義腳本控制。
Invert:是否反轉輸入的值(取相反數)

Tracked Dolly

這個算法可以讓相機沿預定路徑移動。使用Path Position屬性來指定將虛擬相機放置在路徑上的位置。

使用Auto-Dolly模式將虛擬相機移動到路徑上最接近Follow目標的位置。啓用後,Auto-Dolly會自動將虛擬相機的位置移動到最接近目標的路徑上的位置。

提示:使用Auto-Dolly模式時,一定要謹慎選擇路徑形狀。在圍繞某個點形成弧形的路徑上可能會有問題。舉一個極端的例子,考慮一條以Follow目標爲中心的完美圓形路徑。路徑上最接近目標的點變得不穩定,因爲圓形路徑上的所有點都同樣接近目標。在這種情況下,將Follow目標移動很小的距離會導致相機在軌道上移動很大的距離。

屬性詳解
Path 相機移動的路徑。此屬性必須引用CinemachinePath或Cinemachine Smooth Path對象。
Path Position 沿路徑放置相機的位置。直接給這個屬性作動畫或啓用Auto-Dolly。這個值以Position Units指定的單位爲單位。
Position Units 路徑位置的度量單位。

  • Path Units 沿路徑使用路徑點。0表示路徑上的第一個路徑點,1表示第二個路徑點,依此類推。
  • Distance 沿路徑使用距離。根據路徑的Resolution屬性對路徑進行採樣。Cinemachine創建一個距離查找表,並將其存儲在內部緩存中。
  • Normalized 使用路徑的開頭和結尾。值0表示路徑的起點,值1表示路徑的終點。
    Path Offset 相機相對於路徑的位置。X垂直於路徑,Y向上,而Z平行於路徑。使用此屬性可使相機偏離路徑本身。

X Damping 設置相機如何在垂直於路徑的方向上保持其位置。較小的數字會使相機反應更快。較大的數字會使相機的響應速度變慢。每個軸使用不同的設置可以產生多種相機表現。
Y Damping 設置相機如何在路徑局部座標向上方向上保持其位置。較小的數字會使相機反應更快。較大的數字會使相機的響應速度變慢。
Z Damping 設置相機如何在平行於路徑的方向上保持其位置。較小的數字會使相機反應更快。較大的數字會使相機的響應速度變慢。

Camera Up 如何爲虛擬相機設置向上的方向。這會影響屏幕的組成,因爲相機的Aim算法會嘗試遵循向上方向。

  • Default 不修改虛擬相機的向上方向,而是使用Cinemachine Brain中的World Up Override屬性。
  • Path 在當前點使用路徑的向上方向。
  • Path No Roll 在當前點使用路徑的向上方向,但Roll設置爲零。
  • Follow Target 使用Follow目標的向上向量。
  • Follow Target No Roll 使用Follow目標的變換中的向上向量,但Roll爲零。

Pitch Damping 相機如何跟蹤目標旋轉的x角。較小的數字會使相機反應更快。較大的數字會使相機的響應速度變慢。
Yaw Damping 相機如何跟蹤目標旋轉的y角。較小的數字會使相機反應更快。較大的數字會使相機的響應速度變慢。
Roll Damping 相機如何跟蹤目標旋轉的z角。較小的數字會使相機反應更快。較大的數字會使相機的響應速度變慢。

Auto Dolly 控制自動軌道位置選擇方式。要使用此功能,必須設置Follow目標。

  • Enabled 選中以啓用。注意:這可能會影響性能,具體取決於search resolution。
  • Position Offset 以position units爲單位從路徑上的最近點到跟隨目標的偏移量。
  • Search Radius 當前段兩側的段數。如果只有一個路徑使用0。當路徑相對於目標位置的形狀導致路徑上最近的點變得不穩定時,請使用較小的數字。
  • Search Resolution Cinemachine通過將片段分成許多直片段來搜索片段。數字越高,結果越準確。但是,對於更大的數字,性能成比例地變慢。

Transposer

這個算法將使用固定的相對位置將虛擬相機跟隨目標,也可以使用Damping屬性。

屬性詳解
Binding Mode綁定模式:從目標推斷位置時使用的座標空間。

  • Lock To Target On Assign:本地空間,相機被激活或target賦值時的相對位置。
  • Lock To Target With World Up:本地空間,保持相機y軸朝上,yaw和roll爲0。
  • Lock To Target No Roll:本地空間,鎖定到目標物體,roll爲0。
  • Lock To Target:本地空間,鎖定到目標物體
  • World Space:世界空間
  • Simple Follow With World Up:相對於目標的位置,使用相機的本地座標系

Follow Offset:跟隨目標時的位置偏移
X Damping:相機在X軸上移動的阻力系數。較小的值會使相機反應更快。較大的值會使相機的反應速度變慢。每個軸使用不同的設置可以製造出各種類型相機的行爲。 綁定模式爲Simple Follow With World Up時不可用。
Y Damping:相機在Y軸上移動的阻力系數。較小的值會使相機反應更快。較大的值會使相機的反應速度變慢。
Z Damping:相機在Z軸上移動的阻力系數。較小的值會使相機反應更快。較大的值會使相機的反應速度變慢。

【下面3個屬性參考上面的飛機圖】
Yaw Damping:相機在y軸旋轉的阻力系數。較小的數字會使相機反應更快。較大的數字會使相機的反應速度變慢。每個軸使用不同的設置可以製造出各種類型相機的行爲。Binding Mode爲Lock to Target With World Up、Lock to Target No Roll、Lock to Target時可用。
Pitch Damping:相機在x軸旋轉的阻力系數。較小的數字會使相機反應更快。較大的數字會使相機的反應速度變慢。 Binding Mode爲Lock to Target No Roll、Lock to Target時可用。
Roll Damping:相機在z軸旋轉的阻力系數。較小的數字會使相機反應更快。較大的數字會使相機的反應速度變慢。 Binding Mode爲Lock to Target時可用。


擴展閱讀

【Cinemachine】VirtualCamera虛擬相機詳解(一)
5分鐘入門Cinemachine智能相機系統
Unity編輯器錄屏神器:Unity Recorder
5分鐘製作過場動畫
 【建議收藏】找不到免費的角色動畫?來試試mixamo

【擴展學習】洪流學堂公衆號回覆timeline可以下載Timeline&Cinemachine系列教程全文帶目錄PDF


呼~ 今天小新絮絮叨叨的真是夠夠的了。沒講清楚的地方歡迎評論,咱們一起探索。

我是大智,你的技術探路者,下次見!

別走!點贊收藏哦!

好,你可以走了。

發佈了142 篇原創文章 · 獲贊 77 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章