Maya表达式控制动力学动画之小鸡抢食

豆豆网   技术应用频道   2007年08月18日  【字号: 收藏本文

内容摘要:Maya表达式控制动力学动画

  if(($lz[$k]<2)&&($n[$k]>0))
  $vz[$k]=$vz[$code[$k]];

  其中的这句表示如果某小鸡前面有小鸡与之距离小于2个单位时,强制其速度与前面的这只小鸡相同,从而避免穿插。另外式中的一些系数和参数大多是试验确定的,并不是最合理的定义。

  $lx[$k]=$tx[$k]-$tx[$code[$k]];
  $dx[$k]=$tx[$k]-$tx[0];
  $aFx[$k]=-3*($dx[$k]/5)+0.05*sign($dx[$k]);
  if(($lx[$k]<2)&&($n[$k]>0)&&($lz[$k]<2))
  {$afx[$k]=-5*sign($lx[$k])*((2.5-$lx[$k])/2)*((2.5-$lx[$k])/2)+$k3*$vx[$k];
  $ax[$k]=0;}
  else if(($n[$k]>0)&&($lz[$k]>=2))
  $afx[$k]=-0.1*sign($lx[$k])*((5-$lx[$k])/2)+$k3*$vx[$k];
  else
  $afx[$k]=$k3*$vx[$k];
  $ax[$k]=$aFx[$k]-$afx[$k];
  $vx[$k]=$vx[$k]+$ax[$k]*$t;
  $tx[$k]=$tx[$k]+$vx[$k]*$t+0.5*$ax[$k]*$t*$t;

  这段是定义各小鸡在x轴方向奔跑加速度和速度及位置的程序。各变量含义与前类似。

  最后,给各小鸡的实体进行赋值,如下:

  ball.translateX=$tx[0];
  ball1.translateX=$tx[1];
  ball2.translateX=$tx[2];
  ball3.translateX=$tx[3];
  ball4.translateX=$tx[4];
  ball5.translateX=$tx[5];
  ball6.translateX=$tx[6];
  ball7.translateX=$tx[7];
  ball8.translateX=$tx[8];
  ball9.translateX=$tx[9];
  ball10.translateX=$tx[10];
  ball11.translateX=$tx[11];
  ball12.translateX=$tx[12];
  ball13.translateX=$tx[13];
  ball14.translateX=$tx[14];
  ball15.translateX=$tx[15];
  ball16.translateX=$tx[16];
  ball17.translateX=$tx[17];
  ball18.translateX=$tx[18];
  ball19.translateX=$tx[19];
  ball20.translateX=$tx[20];
  ball1.translateZ=$tz[1];
  ball2.translateZ=$tz[2];
  ball3.translateZ=$tz[3];
  ball4.translateZ=$tz[4];
  ball5.translateZ=$tz[5];
  ball6.translateZ=$tz[6];
  ball7.translateZ=$tz[7];
  ball8.translateZ=$tz[8];
  ball9.translateZ=$tz[9];
  ball10.translateZ=$tz[10];
  ball11.translateZ=$tz[11];
  ball12.translateZ=$tz[12];
  ball13.translateZ=$tz[13];
  ball14.translateZ=$tz[14];
  ball15.translateZ=$tz[15];
  ball16.translateZ=$tz[16];
  ball17.translateZ=$tz[17];
  ball18.translateZ=$tz[18];
  ball19.translateZ=$tz[19];
  ball20.translateZ=$tz[20];

  同时还可以打印一些具体参量以便分析检查小鸡们的运动情况。

责编:豆豆技术应用

正在加载评论...