<ul id="ozzou"></ul>
  • <thead id="ozzou"><label id="ozzou"></label></thead>
      <code id="ozzou"></code>
      暴雪國(guó)際動(dòng)漫教育
      • 暴雪國(guó)際2024招生簡(jiǎn)章
      • 暴雪國(guó)際2024招生簡(jiǎn)章
      • 暴雪國(guó)際2024招生簡(jiǎn)章
      • 暴雪國(guó)際2024招生簡(jiǎn)章
      在線咨詢 預(yù)約課程 網(wǎng)上報(bào)名
      Maya特效教程

      Maya特效教程:Maya用Expression實(shí)現(xiàn)讓雞蛋自己翻滾的效果

      編輯:Penny來(lái)源:發(fā)布時(shí)間:2010-06-28
      本文的目的是探討一下用Expression等方法來(lái)實(shí)現(xiàn)不規(guī)則圓的物體(如雞蛋,變形的輪胎)在平面上無(wú)滑動(dòng)的滾動(dòng)效果,由于不用關(guān)鍵楨key,而且速率可調(diào),這樣重用率高,從而效率也提高了。
         源代碼
        我希望提供這樣的思路,能起到拋磚引玉的作用,讓更多的人來(lái)關(guān)注,研究Maya,MEL,Expression,來(lái)實(shí)現(xiàn)更好的效果,進(jìn)而促進(jìn)這一領(lǐng)域的范圍更廣,層次更深的應(yīng)用,交流和合作。唯愿如此
      //************** eggVer2.txt ***********************
      // Egg rolling motion ---- Version 2.0
      // Author: Luonaldo
      // First create date: about March, 2003
      // Last updated: 2003/09/10 ---->add looptimes.
      // Last updated: 2003/09/17 ---->delete unused content.debug passed.
      //to keep two curves vertical.
      verCurve.rotateY = tanCurve.rotateY + 90;
      float $times = eggBasePoint.loopTimes;
      //NECESSARY CONDITION 1: rotateZ *************
      EggBody.rotateZ = sign($times) * verCurve.rotateY;
      //NECESSARY CONDITION 2: translateY *************
      EggBody.translateY = distPivPointShape.distance + eggBasePoint.translateY;
      float $distance;
      $distance=distPivTouchShape.distance;
      motionPath1.uValue = abs(($times /% 1));
      float $arclen;
      $arclen=curveInfo1.arcLength * motionPath1.uValue;
      // Now compare whether the pivotPoint is in front of or
      // behind the touchPoint.
      float $verRy;
      float $refRy;
      float $sign1;
      float $alpha;
      $verRy = (verCurve.ry > 0) ? verCurve.ry : (360 + verCurve.ry);
      $refRy = (refCurve.ry > 0) ? refCurve.ry : (360 + refCurve.ry);
      //to make 0< alpha <180
      $alpha = (($verRy - $refRy) + 360) /% 180;
      //-1:behand, 1:front, begin:uvalue=0
      $sign1= ($alpha > 90)? (-1) : 1;
      //NECESSARY CONDITION 3: translateX *************
      EggBody.translateX = -($arclen + $sign1*$distance)
                 * sign($times)
      //times sign decide direction
                 - (curveInfo1.arcLength) * trunc($times)
      //full times Length
                 + eggBasePoint.translateX;
      //egg base offset
      //egg's tz is based on eggBasePoint.tz
      EggBody.translateZ = eggBasePoint.translateZ;
      //The end.
        
        這是一個(gè)二維的模型,O是curve的pivot,D是垂足,T是雞蛋和平面的接觸點(diǎn),C是曲線模型的起始點(diǎn),直線dt代表地面,線段od代表物體中心離地面的距離,弧線ct的長(zhǎng)度可以由curveInfo.arcLength給出。物體滾動(dòng)的距離其實(shí)就是(架設(shè)從c點(diǎn)接觸地面開始):弧ct + 線段dt。(或者減,看垂足d是在滾動(dòng)方向的前方還是后方)。圖中線段od和dt是用MAYA自帶的measureTools/distanceTool直接測(cè)量的。我想這樣比自己計(jì)算兩點(diǎn)間距或者勾股定理套公式要省事一些,也好理解一點(diǎn)吧。
        由于有的物體邊緣內(nèi)凹,所以在滾動(dòng)的時(shí)候內(nèi)凹的部分接觸不到地面,在物體翻滾之前,需要做一個(gè)二維的輪廓模型,在凹陷的地方取直線,微微有一點(diǎn)點(diǎn)外凸最好,用這個(gè)模型取得位移和旋轉(zhuǎn)的坐標(biāo),而用真實(shí)的物體做動(dòng)畫。在motionPath的uValue中調(diào)節(jié)曲線,這里還是要key幾個(gè)關(guān)鍵幀的。但是比起全手動(dòng)要簡(jiǎn)單,還能隨時(shí)更改快慢。
        用一個(gè)靜態(tài)的模型,實(shí)現(xiàn)對(duì)動(dòng)態(tài)運(yùn)動(dòng)的控制。圖中的雞蛋受一個(gè)locator控制它的基準(zhǔn)坐標(biāo),這樣即使做過(guò)動(dòng)畫,也能很方便的移動(dòng)到另一個(gè)位置。graph Editor中是loopTimes的曲線,/% 1 后給uValue, 用來(lái)控制快慢和方向。
        

      上一篇:Maya特效教程:Maya表達(dá)式控制動(dòng)力學(xué)動(dòng)畫之大腳車

      下一篇:Maya特效教程:Gnomon.Maya煙火技術(shù)教程

      久久精品看国产成人,91精品国产91久久久久久三级,丰满人妻精品一区二区,国产精品开放90后亚洲

        <ul id="ozzou"></ul>
      • <thead id="ozzou"><label id="ozzou"></label></thead>
          <code id="ozzou"></code>