Maya制作Cas车辆动画里增加履带车动画
- 2022-02-06
- 来源/作者: PS.ONEGREEN.ORG / 佚名
- 2 次浏览
首先在场景中创建一条封闭曲线,作为履带运动路径:
编辑曲线:
创建一个方体作为履带的一个带片:
打开脚本编辑,执行源化脚本,弹出对话框:
关闭脚本编辑,在方体处于选择状态下,点击“指定履带片”按钮。再选择曲线,点击“指定履带轨迹”按钮:
[NextPage]
点击“确定”:
播放动画:
调整履带运动速度,选择路径曲线,在通道栏修改speed直。数值小,履带运动慢,数值大,履带运动快:
重新播放动画:
脚本程序:
global string $dgkk2;
string $dgWindow=`window -title "设置" -rtf true`;
columnLayout;
$dgkk2=`intSliderGrp -v 30 -min 10 -max 100 -l "带片数量" -field true`;
rowColumnLayout -nc 2;
text -l " 选择履带片 ";
button -l "指定履带片" -c "dgpp()";
setParent ..;
rowColumnLayout -nc 2;
text -l " 选择曲线 &qu
ot;;button -l "指定履带轨迹" -c "dgpq()";
setParent ..;
button -w 200 -l "确定" -c ("dghp($dgkk2) ; deleteUI -window " + $dgWindow);
showWindow $dgWindow;
global proc dgpp() {
global string $dgop;
string $dgkk3[]=`ls -sl`;
$dgop=$dgkk3[0];
}
global proc dgpq() {
global string $dgoq;
string $dgkk3[]=`ls -sl`;
$dgoq=$dgkk3[0];
}
global proc dghp(string $dgk2) {
$nu=`intSliderGrp -q -v $dgk2`;
global string $dgop;
global string $dgoq;
addAttr -ln speed -at double -min 0 -max 1 -dv 0.5 $dgoq;
setAttr -e -keyable true ($dgoq+".speed");
for($i=0;$i<$nu;$i++) {
duplicate -n ("poo"+$i) $dgop;
pathAnimation -n ("qoo"+$i) -fractionMode true -follow true -followAxis x -upAxis y -worldUpType "object" -inverseUp false -inverseFront false -bank false $dgoq ("poo"+$i);
select -addFirst ("qoo"+$i) ;
timeSliderClearKey;
float $mm=1.0*$i/$nu;
expression -s ("qoo"+$i+".uValue=(time*0.5*"+$dgoq+".speed+"+$mm+")%1;") -o "" -ae 1 -uc all ;
}
}
这个程序只是简单介绍一下表达式动画,真正应用还存在一些问题。比要做到如履带板运动和车辆前进速度一致,必须重新编写表达式。如果选择路径动画,首先计算出路径曲线和履带板控制线的长度,再计算出两者的比值。用履带板的uValue=(车主体的uValue*比值)%1即可。
[NextPage]
另一种方法,根据车辆位子
移动确定表达式。这种方法不仅适用路径动画,而且还适合关键帧动画。程序如下: global string $dgkk2;
string $dgWindow=`window -s 1 -wh 400 200 -title "设置" -rtf true`;
columnLayout;
$dgkk2=`intSliderGrp -v 30 -min 10 -max 100 -l "带片数量" -field true`;
rowColumnLayout -nc 2;
text -l " 选择履带片 ";
button -l "指定履带片" -c "dgpp()";
setParent ..;
rowColumnLayout -nc 2;
text -l " 选择曲线 ";
button -l "指定履带轨迹&
quot; -c "dgpq()";setParent ..;
button -w 200 -l "确定" -c ("dghp($dgkk2) ; deleteUI -window " + $dgWindow);
showWindow $dgWindow;
global proc dgpp() {
global string $dgop;
string $dgkk3[]=`ls -sl`;
$dgop=$dgkk3[0];
}
global proc dgpq() {
global string $dgoq;
string $dgkk3[]=`ls -sl`;
select -r $dgkk3[0];
rename "qooh";
duplicate -n "qoob" "qooh";
scale -a 0.7 0.7 1;
pointConstraint -offset 0 0 0 -weight 1 qooh qoob;
orientConstraint -offset 0 0 0 -weight 1 qooh qoob ;
}
global proc dghp(string $dgk2) {
$nu=`intSliderGrp -q -v $dgk2`;
global string $dgop;
for($i=0;$i<$nu;$i++) {
duplicate -n ("poo"+$i) $dgop;
addAttr -ln dx -at double ("poo"+$i);
addAttr -ln dy -at double ("poo"+$i);
addAttr -ln dz -at double ("
<< 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >>