【Cinemachine智能相機教程】VirtualCamera(三):Aim屬性

摘要:【長文預警,先收藏後品嚐】Cinemachine中的虛擬相機如何旋轉來讓鏡頭鎖定目標物體呢?這就需要搞明白Aim屬性的設置咯。

洪流學堂,讓你快人幾步。你好,我是鄭洪智,你可以叫我大智。我正在記錄帶小新學Unity的經歷。

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

Aim屬性

CinemachineVitualCamera組件中的Aim屬性用於設置相機旋轉時使用什麼算法。需要先設置Look At屬性。

Aim包含以下旋轉算法:

  • Do Nothing: 不控制相機的旋轉。
  • Composer: 保持目標物體在鏡頭內
  • Group Composer: 保持多個目標在鏡頭內
  • Hard Look At: 保持目標在鏡頭的中心
  • POV: 基於玩家的輸入旋轉相機
  • Same As Follow Target: 相機的旋轉和目標的旋轉保持同步

Composer

這個算法旋轉相機來朝向目標物體。也可以添加偏移、阻尼和構圖規則。常見跟蹤的目標有:角色的上半身或頭部的骨骼、車輛、動畫或程序控制的空物體。

屬性詳解
Tracked Object Offset 相對於跟蹤目標的偏移。當注視的位置不是被跟蹤對象的中心時,可以通過這個屬性微調跟蹤目標位置。

Lookahead Time 提前的時間。根據注視目標的運動來調整偏移量。該算法估計目標將在未來數秒之內到達的位置。這個功能對微動的動畫敏感,並且會放大噪點,導致非預期的相機抖動。如果目標運動時相機抖動不可接受,降低此屬性可能會使目標動畫更流暢。
Lookahead Smoothing 控制前瞻算法的平滑度。較大的值可以消除抖動預測但會使預測滯後。
Lookahead Ignore Y 預測算法會忽略Y軸的運動。

Horizontal Damping 水平阻尼。相機在屏幕水平方向上對目標的反應速度如何。使用較小的數字可以使照相機更快地旋轉,以使目標保持在dead zone。使用較大的數字來模擬較重,響應緩慢的相機。
Vertical Damping 垂直阻尼。相機在屏幕垂直方向上對目標的反應速度如何。使用不同的垂直和水平設置可以模擬不同相機行爲。

各區域示意圖

Screen X dead zone中心的水平屏幕位置,相機旋轉保持目標在此處。
Screen Y dead zone中心的垂直屏幕位置,相機旋轉保持目標在此處。
Dead Zone Width 目標在這個區域時,相機會忽略目標的任何移動,此屬性設置這個區域的寬度。目標位於該區域內的任何位置時,虛擬相機不會更新其旋轉角度。這對於忽略較小的目標移動很有用。
Dead Zone Height 目標在這個區域時,相機會忽略目標的任何移動,此屬性設置這個區域的高度。如果目標位於該區域內的任何位置,則虛擬相機不會更新其旋轉角度。這對於忽略較小的目標移動很有用。
Soft Zone Width soft zone的寬度。如果目標出現在屏幕的此區域中,則相機將旋轉,以在Horizontal Damping設置的時間內將其推回dead zone。
Soft Zone Height soft zone的高度。如果目標出現在屏幕的此區域中,則相機將旋轉,以在Vertical Damping設置的時間內將其推回dead zone。
Bias X soft zone中心相對於dead zone中心的水平偏移。
Bias Y soft zone中心相對於dead zone中心的垂直偏移。

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

Group Composer

這個算法可以用來讓鏡頭瞄準多個目標。如果Look At屬性設置的是一個Cinemachine Target Group,這個算法會調整相機的FOV和舉例來保證Group中的物體都能被鏡頭看到。如果Look At屬性設置的是一個物體,那麼會和Composer算法表現一致。

屬性詳解
Tracked Object Offset 相對於跟蹤目標的偏移。當注視的位置不是被跟蹤對象的中心時,可以通過這個屬性微調跟蹤目標位置。

Lookahead Time 提前的時間。根據注視目標的運動來調整偏移量。該算法估計目標將在未來數秒之內到達的位置。這個功能對微動的動畫敏感,並且會放大噪點,導致非預期的相機抖動。如果目標運動時相機抖動不可接受,降低此屬性可能會使目標動畫更流暢。
Lookahead Smoothing 控制前瞻算法的平滑度。較大的值可以消除抖動預測但會使預測滯後。
Lookahead Ignore Y 預測算法會忽略Y軸的運動。

Horizontal Damping 水平阻尼。相機在屏幕水平方向上對目標的反應速度如何。使用較小的數字可以使照相機更快地旋轉,以使目標保持在dead zone。使用較大的數字來模擬較重,響應緩慢的相機。
Vertical Damping 垂直阻尼。相機在屏幕垂直方向上對目標的反應速度如何。使用不同的垂直和水平設置可以模擬不同相機行爲。

各區域示意圖

Screen X dead zone中心的水平屏幕位置,相機旋轉保持目標在此處。
Screen Y dead zone中心的垂直屏幕位置,相機旋轉保持目標在此處。
Dead Zone Width 目標在這個區域時,相機會忽略目標的任何移動,此屬性設置這個區域的寬度。目標位於該區域內的任何位置時,虛擬相機不會更新其旋轉角度。這對於忽略較小的目標移動很有用。
Dead Zone Height 目標在這個區域時,相機會忽略目標的任何移動,此屬性設置這個區域的高度。如果目標位於該區域內的任何位置,則虛擬相機不會更新其旋轉角度。這對於忽略較小的目標移動很有用。
Soft Zone Width soft zone的寬度。如果目標出現在屏幕的此區域中,則相機將旋轉,以在Horizontal Damping設置的時間內將其推回dead zone。
Soft Zone Height soft zone的高度。如果目標出現在屏幕的此區域中,則相機將旋轉,以在Vertical Damping設置的時間內將其推回dead zone。
Bias X soft zone中心相對於dead zone中心的水平偏移。
Bias Y soft zone中心相對於dead zone中心的垂直偏移。

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

Group Framing Size:目標應占據的屏幕大小比例。使用1填充整個屏幕,使用0.5填充一半的屏幕,依此類推。
Framing Mode:指定構圖時要考慮的屏幕尺寸。

  • Horizontal 僅考慮水平尺寸。忽略垂直尺寸。
  • Vertical 僅考慮垂直尺寸。忽略水平尺寸。
  • Horizontal And Vertical 使用水平和垂直尺寸中較大的那個來獲得最佳匹配。
    Adjustment Mode 如何調整相機以獲得所需的取景。可以是縮放、拉近拉遠或同時進行。
  • Zoom Only 不移動相機,僅調整FOV。
  • Dolly Only 移動相機,不修改FOV。
  • Dolly Then Zoom 將相機移動到範圍允許的最大範圍,然後根據需要調整FOV。

Max Dolly In:朝目標拉近相機的最大距離。
Max Dolly Out:遠離目標拉遠相機的最大距離。
Minimum Distance: 設置此項以限制相機可以接近目標的最小距離。
Maximum Distance:設置此項以限制相機可以達到的最遠目標距離。
Minimum FOV:自動調節FOV時的最小值。
Maximum FOV:自動調節FOV時的最大值。

POV

此算法基於玩家的輸入來調節相機的旋轉。

屬性詳解
Apply Before Body 不勾選時,Aim算法會在Body之後設置Camera相關屬性。勾選時,Aim會在Body之前設置Camera相關屬性。通常Body使用Framing Transposer算法時會很有用。

Recenter Target 重置回中心的目標對象。

  • None
  • Follow Target Forward Follow屬性的forward
  • Look At Target Forward Look At屬性的forward

Vertical Axis 控制虛擬相機目標的垂直朝向。

  • Value 軸的當前值,以度爲單位。可接受的值爲-90至90。
  • Value Range 虛擬相機的垂直軸的最小值和最大值。
  • Wrap 如果選中,則軸將在Value Range範圍內,形成一個循環。
  • Max Speed 該軸的最大速度,以度/秒爲單位。
  • Accel Time Input Axis Value處於最大值時,加速到最大速度所花費的時間(以秒爲單位)。
  • Decel Time 軸減速爲零所花費的時間(以秒爲單位)。
  • Input Axis Name 輸入軸的名稱。在Unity Input Manager中指定的該軸的名稱。將此屬性設置爲空字符串來禁用此軸的自動更新。
  • Input Axis Value 輸入軸的值。值爲0表示無輸入。你可以直接從自定義腳本中修改這個值。或者設置Input Axis Name並由Unity Input Manager驅動。
  • Invert 將原始值反轉。

Vertical Recentering 當接收不到玩家輸入時,自動在垂直方向重新居中。

  • Enable 是否啓用。選中以啓用自動垂直居中。
  • Wait Time* 等待時間。如果在垂直軸上未檢測到用戶輸入,則相機將等待幾秒鐘,然後再進行重新居中。
  • Recentering Time* 重新居中所花費的時間。

Horizontal Axis 控制水平方向。

  • Value 軸的當前值,以度爲單位。可接受的值爲-180至180。
  • Value Range 虛擬相機水平軸的最小值和最大值。
  • Wrap 如果選中,則軸將在Value Range範圍內,形成一個循環。
  • Max Speed 該軸的最大速度,以度/秒爲單位。
  • Accel Time Input Axis Value處於最大值時,加速到最大速度所花費的時間(以秒爲單位)。
  • Decel Time 軸減速爲零所花費的時間(以秒爲單位)。
  • Input Axis Name 輸入軸的名稱。在Unity Input Manager中指定的該軸的名稱。將此屬性設置爲空字符串來禁用此軸的自動更新。
  • Input Axis Value 輸入軸的值。值爲0表示無輸入。你可以直接從自定義腳本中修改這個值。或者設置Input Axis Name並由Unity Input Manager驅動。
  • Invert 將原始值反轉。

Horizontal Recentering 當接收不到玩家輸入時,自動在水平方向重新居中。

  • Enable 是否啓用。選中以啓用自動水平居中。
  • Wait Time* 等待時間。如果在水平軸上未檢測到用戶輸入,則相機將等待幾秒鐘,然後再進行重新居中。
  • Recentering Time* 重新居中所花費的時間。

Same As Follow Target

這個算法會讓相機和Follow Target一個方向。如果想讓相機和目標保持同樣的位置和朝向,可以在Body中使用Hard Lock to Target,在Aim中使用Same As Follow Target算法。


擴展閱讀

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

【擴展學習】洪流學堂公衆號回覆timeline可以下載Timeline&Cinemachine系列教程全文帶目錄PDF哦,更有視頻教程等着你!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章