深圳環(huán)球數(shù)碼動(dòng)畫學(xué)院

7x24小時(shí)咨詢熱線

400-660-3310

當(dāng)前位置 : 好學(xué)校 深圳環(huán)球數(shù)碼動(dòng)畫學(xué)院 學(xué)習(xí)資訊 資訊詳情

jason schleifer 腿部設(shè)置

2013-06-28

談到這js的設(shè)置,兩大亮點(diǎn),兩大難點(diǎn):

1.腿部的表達(dá)式

2.手部的bend系統(tǒng)

OK,先說(shuō)腿部那的經(jīng)典表達(dá)式,Roll系統(tǒng):

腿部的控制器分別有三個(gè)屬性:roll,toeLift,toeStraight

三個(gè)要聯(lián)合使用

roll可以立刻看到效果

toeLift意思是ball到多少度腳尖開始抬起

toeStraight意思是腳尖到多少的時(shí)候ball關(guān)節(jié)變回直的

就像人走路,跑步時(shí)候腳掌的角度變化:

Jason這里用了一招挺有特色的,其實(shí)也是經(jīng)常用了,做特效的人幾乎時(shí)刻都面對(duì),沒有什么特別的,只是用在這設(shè)置上有點(diǎn)創(chuàng)意,那就是linstep,其實(shí)還有smoothstep,clamp,一大堆操作節(jié)點(diǎn),只要靈活聯(lián)想,都可以出到很好的效果,特效的同事應(yīng)該清楚了,當(dāng)時(shí)沒有看JS的時(shí)候我是用判斷節(jié)點(diǎn)和clamp節(jié)點(diǎn)做的,一樣的道理

OK,分析一下他這段函數(shù)

ball_loc.rotateX = (linstep(0,$toeLift,$roll)) * (1-(linstep($toeLift,$toeStraight,$roll))) * $roll;

linstep(X,Y,Z)意思是給定一個(gè)范圍 (大于X小于Y)

我們輸入Z,當(dāng)Z小于X的時(shí)候linstep輸出為0

當(dāng)Z大于Y的時(shí)候linstep輸出為1

當(dāng)Z大于X小于Y輸出的就是當(dāng)中的比例值

JS表達(dá)式分開了兩部分,互相相乘,我覺得這個(gè)挺有趣的,有點(diǎn)像以前的小學(xué)簡(jiǎn)單數(shù)學(xué)

這兩部分分別是(linstep(0,$toeLift,$roll))

(1-(linstep($toeLift,$toeStraight,$roll)))

(linstep(0,$toeLift,$roll))  : 我們輸入roll值,當(dāng)roll小于0的時(shí)候 ,

(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的時(shí)候 ,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 的時(shí)候 ,第二段為 (1-0=1),計(jì)算以第一段為準(zhǔn)  例如 :X * (1-0)= X

當(dāng)$roll值在$toeLift,$toeStraight 的時(shí)候 ,第一段為 (1-0=1),計(jì)算以第二段為準(zhǔn)

例如 :1 * Y= Y

而第一段是0-1遞增的,后面是1-0遞增的

所以ball關(guān)節(jié)有真實(shí)人的效果

PS:其實(shí)動(dòng)動(dòng)腦筋,有更多的方法,說(shuō)不定比他更簡(jiǎn)單的還很多,大家可以想想sin,cos函數(shù),哈哈

更直接,先賣個(gè)小關(guān)子。。

明天說(shuō)他手部的bend抬起系統(tǒng),其實(shí)就是跟腿一樣原理,就是在切換方面下了點(diǎn)小技巧來(lái)配合elbowLock

接著會(huì)給大家說(shuō)你們看到一些DEMO的 閉唇運(yùn)動(dòng),二級(jí)控制器的vector算法,大家多多交流哈

說(shuō)完。。。收工。。。

收藏
分享到:

相關(guān)課程

相關(guān)資訊

深圳環(huán)球數(shù)碼動(dòng)畫學(xué)院

深圳環(huán)球數(shù)碼動(dòng)畫學(xué)院

認(rèn)證等級(jí)

信譽(yù)良好,可安心報(bào)讀

深圳環(huán)球數(shù)碼動(dòng)畫學(xué)院

已獲好學(xué)校V2信譽(yù)等級(jí)認(rèn)證

信譽(yù)值

  • (60-80)基礎(chǔ)信譽(yù)積累,可放心報(bào)讀
  • (81-90)良好信譽(yù)積累,可持續(xù)信賴
  • (91-100)充分信譽(yù)積累,推薦報(bào)讀

與好學(xué)校簽訂讀書保障協(xié)議:

  • 100%
  • 50
  • 19247
在線咨詢
;