修改動畫的神器: Adjustment Blend(下)

這裡對Adjustment Blend的原理做一個講解.

我盡量表述清楚, 其實看圖應該就能理解.

以一個15幀的動畫曲線為例.(實際情況是對控制器的每根動畫曲線都要單獨做運算)

在基礎層里,每一幀的數值我用Vfn表示(n為幀的index), Vf0為第0幀的數值,Vf1為第1幀的數值, 以此類推, vf15為第15幀的數值.

(圖片一傳到知乎上就被壓縮了..)

將每相鄰的兩幀的數值(value)相減(得到每幀之間的數值的變化值)的絕對值全部加起來,abs (vf1-vf0)+abs(vf2-vf1)+.....+abs(vf15-vf14), 得到一個總的變化值, 再用每組相鄰的幀的數值的變化值的絕對值分別除以這個總的變化值, 得到每相鄰的兩幀的數值變化率.

這裡以第0幀和第1幀為例: rate = abs (vf1-vf0)/{abs (vf1-vf0)+abs(vf2-vf1)+.....+abs(vf15-vf14)}

AdditiveLayer里, 每組相鄰的幀數值的變化值分別除以AdditiveLayer 里總的變化值(vf15-vf0)(非絕對值), 也可以分別得到每組相鄰兩幀的數值變化率,.

以第0幀和第1幀為例即 rate2 = (vf1-vf0)/(vf15-vf0)

要達到adjustment blend的效果, 讓這兩個變化率相等即可. (rate = rate2)

於是就有

因為基礎層的每一幀數值都是知道的, AdditiveLayer里vf0, vf15是知道的, 於是就可以計算出AdditiveLayer 里vf1的數值, 相繼可以算出vf2, vf3......vf14的數值. 以此數值在AdditiveLayer里逐幀設置幀就好了.

推薦閱讀:

TAG:AutodeskMaya | 三維動畫 |