天天看點

Unity - Timeline 之 Setting gap extrapolation(設定空白内容的外插處理)Setting gap extrapolation

目錄:Unity - Timeline 知識彙總

原文:https://docs.unity3d.com/Packages/[email protected]/manual/clp_gap_extrap.html

翻譯時Timeline版本:Timeline 1.2.11

Setting gap extrapolation

設定空白内容的外插處理

空白部分内容的外插處理,就是處理Animation軌道中剪輯的前後兩邊空白内容的資料模拟。

主要意圖是為了避免動畫剪輯之間空白部分的表現異常的問題。因為動畫部分異常表現于兩個不同的Transform變換,或是類人動畫中的動作差異太大,導緻看起來Transform變化或是動作變化太大。

每個動畫剪輯都有兩個空白内容的外插屬性:Pre-Extrapolate前空白外插(左端的外插),控制動畫資料播放前的資料模拟。Post-Extrapolate後空白外插(後端的外插),控制動畫資料播放完後的資料模拟。

預設的,Timeline會給剪輯外插屬性都設定為 Hold。這種設定意思是,動畫剪輯Start前的動畫資料是使用該剪輯的第一幀來表示的,而動畫剪輯End後的動畫資料是使用最後一幀來表示的。在動畫剪輯的前或後的圖示(無限符号)代表着該剪輯有外插模式處理。

Unity - Timeline 之 Setting gap extrapolation(設定空白内容的外插處理)Setting gap extrapolation

圖示代表着 前外插 和 後外插 的模式

當同一軌道上的兩個剪輯有空白内容,那麼可以設定靠左邊的那個剪輯的 Post-Extrapolate(後外插)。如果左邊的剪輯的 Post-Extrapolate 設定為 None,那麼可以設定靠右邊的剪輯的 Pre-Extrapolate(前外插)屬性。動畫剪輯的前後圖示代表空白内容是否有外插處理。

Unity - Timeline 之 Setting gap extrapolation(設定空白内容的外插處理)Setting gap extrapolation

*第一個軌道的空白(紅色框那)外插處理是來自左邊的剪輯的 Post-Extrapolate(後外插)。第三個軌道的空白(藍色框那)外插處理是來自右邊的剪輯的 Pre-Extrapolate(前外插) *

選擇動畫剪輯後在Inspector視窗中調整 Pre-Extrapolate與 Post-Extrapolate的動畫外插屬性。

Unity - Timeline 之 Setting gap extrapolation(設定空白内容的外插處理)Setting gap extrapolation

使用 Pre-Extrapolate和 Post-Extrapolate來給選中的動畫剪輯設定外插模式

Pre-Extrapolate 屬性在下面其一情況都會被隐藏掉:

  • 動畫剪輯的前一個剪輯設定了 Post-Extrapolate 模式(外插模式不是None得都算是設定了,原文這裡沒有說明)。
  • 動畫剪輯左邊(原文沒有說明方向)沒有空白内容。

選中的剪輯的前面空白内容使用了 Pre-Extrapolate 屬性來空白外插處理,有以下選項可選擇:

  • None(無):關閉Pre-Extrapolate的外插功能。選中剪輯的前面的空白内容,将使用場景中GameObject本身的transform變換,動作,或狀态。選擇 None,一般你可以是想建立一個場景中的GameObject與動畫剪輯之間的淡入效果。檢視 Easing-in and Easing-out Clips(剪輯的淡入淡出) 了解詳情。
  • Hold(預設值):選中的動畫剪輯前面的空白内容将使用:剪輯的起始端的第一幀的資料來模拟。
  • Loop(循環):選中的動畫剪輯前面的空白内容将使用:剪輯的循環幀的資料來模拟,循環的起始偏移内容設定 Clip In 屬性即可。
  • Ping Pong(回彈,要是用過Mathf.Pingpong函數的話就會好了解一些):選中的動畫剪輯前面的空白内容将使用:剪輯的回彈循環幀的資料來模拟,循環的起始偏移内容設定 Clip In 屬性即可。
  • Continue(按資源設定持續:loop==true?循環:Hold持續前或尾幀):選中的動畫剪輯的前面的空白内容将使用:hold或是loop的方式,取決于原始資源的設定。例如,如果選中的動畫剪輯使用的資源是"Recorded(2)"的源資源,該資源設定了 Loop為true,那麼Continue就會使用與Loop一樣的效果,否則(就是Recorded(2)的Loop是false)和Hold效果一樣。

使用 Post-Extrapolate的屬性與Pre-Extrapolate的幾乎一樣,差別就是:Pre-Extrapolate處理的是剪輯前面(左手邊)的空白内容,而 Post-Extrapolate處理的是剪輯的後面(右手邊)的空白内容。

(上面Post-Extrapolate的說明,我就不按官方文檔的來寫了,太備援了。是以我簡單描述一下。)

繼續閱讀