談到這js的設(shè)置,兩大亮點,兩大難點:
1.腿部的表達式
2.手部的bend系統(tǒng)
OK,先說腿部那的經(jīng)典表達式,Roll系統(tǒng):
腿部的控制器分別有三個屬性:roll,toeLift,toeStraight
三個要聯(lián)合使用
roll可以立刻看到效果
toeLift意思是ball到多少度腳尖開始抬起
toeStraight意思是腳尖到多少的時候ball關(guān)節(jié)變回直的
就像人走路,跑步時候腳掌的角度變化:
Jason這里用了一招挺有特色的,其實也是經(jīng)常用了,做特效的人幾乎時刻都面對,沒有什么特別的,只是用在這設(shè)置上有點創(chuàng)意,那就是linstep,其實還有smoothstep,clamp,一大堆操作節(jié)點,只要靈活聯(lián)想,都可以出到很好的效果,特效的同事應(yīng)該清楚了,當(dāng)時沒有看JS的時候我是用判斷節(jié)點和clamp節(jié)點做的,一樣的道理
OK,分析一下他這段函數(shù)
ball_loc.rotateX = (linstep(0,$toeLift,$roll)) * (1-(linstep($toeLift,$toeStraight,$roll))) * $roll;
linstep(X,Y,Z)意思是給定一個范圍 (大于X小于Y)
我們輸入Z,當(dāng)Z小于X的時候linstep輸出為0
當(dāng)Z大于Y的時候linstep輸出為1
當(dāng)Z大于X小于Y輸出的就是當(dāng)中的比例值
JS表達式分開了兩部分,互相相乘,我覺得這個挺有趣的,有點像以前的小學(xué)簡單數(shù)學(xué)
這兩部分分別是(linstep(0,$toeLift,$roll))
(1-(linstep($toeLift,$toeStraight,$roll)))
(linstep(0,$toeLift,$roll)) : 我們輸入roll值,當(dāng)roll小于0的時候 ,
(linstep(0,$toeLift,$roll)) = 0
相乘后 ball_loc.rotateX = 0 ,ball關(guān)節(jié)沒有旋轉(zhuǎn)
當(dāng)roll大于0,小于$toeLift , (linstep(0,$toeLift,$roll)) 輸出0-1的比例值
當(dāng)roll 大于$toeLift ,(linstep(0,$toeLift,$roll))輸出為1
在看另外一段:(1-(linstep($toeLift,$toeStraight,$roll)))
我們先分析里面的一段: linstep($toeLift,$toeStraight,$roll)
當(dāng)roll小于$toeLift的時候 ,linstep($toeLift,$toeStraight,$roll) = 0
整段 1-(linstep($toeLift,$toeStraight,$roll)) = 1-0 =1
當(dāng)roll大于$toeLift,小于$toeStraight , linstep($toeLift,$toeStraight,$roll) = 0 輸出0-1的比例值,是慢慢增大的值,但是
整段 1-(linstep($toeLift,$toeStraight,$roll)) 就相反了,輸出1-0的比例值,是慢慢減少的
當(dāng)roll 大于$toeStraight ,(linstep(0,$toeLift,$roll))輸出為1
整段 1-(linstep($toeLift,$toeStraight,$roll)) = 1-1 =0
那么兩段相乘,非常好,
(linstep(0,$toeLift,$roll)) * (1-(linstep($toeLift,$toeStraight,$roll))) * $roll
當(dāng)$roll值在0,$toeLift 的時候 ,第二段為 (1-0=1),計算以第一段為準(zhǔn) 例如 :X * (1-0)= X
當(dāng)$roll值在$toeLift,$toeStraight 的時候 ,第一段為 (1-0=1),計算以第二段為準(zhǔn)
例如 :1 * Y= Y
而第一段是0-1遞增的,后面是1-0遞增的
所以ball關(guān)節(jié)有真實人的效果
PS:其實動動腦筋,有更多的方法,說不定比他更簡單的還很多,大家可以想想sin,cos函數(shù),哈哈
更直接,先賣個小關(guān)子。。
明天說他手部的bend抬起系統(tǒng),其實就是跟腿一樣原理,就是在切換方面下了點小技巧來配合elbowLock
接著會給大家說你們看到一些DEMO的 閉唇運動,二級控制器的vector算法,大家多多交流哈
說完。。。收工。。。