我试图控制一个物体的挤压通过旋转的另一个物体在玛雅。但出于某种原因它不起作用。它一直显示我收到了一个语法错误。我不知道它有什么问题,或者如何修复它?
这是它的代码:
int $totalObjects = 1;
polyPipe -n Rotator -ch on -o on -r 1.839239 -h 1.223879 ;
polyExtrudeFacet -constructionHistory 1 -keepFacesTogether 1 -pvx 0.07364761256 -pvy 0.6119394158 -pvz 4.019784712 -divisions 1 -twist 0 -taper 1 -off 0 -thickness 0 -smoothingAngle 30 Rotator.f[36];
setAttr "polyExtrudeFace1.localTranslate" -type double3 0 0 0.930651 ;
string $controlName = "Rotator";
float $spacing = 1.5;
for($i=1;$i<=$totalObjects;$i++)
{
string $outName = ("twist_"+ $i);
string $outNameExtrude = ("ext_"+$i);
float $extrusion = 0;
polyCube -n $outName -ch on -o on -w 12.009218 -h 7.720124 -d 0.755927 -cuv 4 ;
setAttr ($outName+".translateZ") ($spacing*$i);
expression -s ($extrusion +"= Rotator.rotateY * 0.01*" + ($i*0.5) + ";") -o "" -ae 1 -uc all ;
polyExtrudeFacet -n $outNameExtrude -constructionHistory 1 -keepFacesTogether 1 -pvx 0 -pvy 0 -pvz 4.0 -r $outName ;
setAttr $outNameExtrude + ".localTranslate" -type double3 0 $extrusion 0 ;
}更新:
int $totalObjects = 1;
polyPipe -n Rotator -ch on -o on -r 1.839239 -h 1.223879 ;
polyExtrudeFacet -constructionHistory 1 -keepFacesTogether 1 -pvx 0.07364761256 -pvy 0.6119394158 -pvz 4.019784712 -divisions 1 -twist 0 -taper 1 -off 0 -thickness 0 -smoothingAngle 30 Rotator.f[36];
setAttr "polyExtrudeFace1.localTranslate" -type double3 0 0 0.930651 ;
string $controlName = "Rotator";
float $spacing = 1.5;
for($i=1;$i<=$totalObjects;$i++)
{
string $outName = ("twist_"+ $i);
string $outNameExtrude = ("ext_"+$i);
float $extrusion = 0;
polyCube -n $outName -ch on -o on -w 12.009218 -h 7.720124 -d 0.755927 -cuv 4 ;
setAttr ($outName+".translateZ") ($spacing*$i);
polyExtrudeFacet -n $outNameExtrude -constructionHistory 1 -keepFacesTogether 1 -pvx 0 -pvy 0 -pvz 4.0 $outName ;
setAttr ($outNameExtrude + ".localTranslate") -type double3 0 $extrusion 0 ;
expression -s ( $outNameExtrude + ".O[0]" +"= Rotator.rotateY * 0.01*" + ($i*0.5) + ";") -o "" -ae 1 -uc all ;
}发布于 2013-11-24 19:19:50
正如“东正教”所指出的。你不应该依赖玛雅设定你让它设置的名字。因为如果玛雅有命名冲突,等等,玛雅会凌驾于你之上,所以每当你创建什么东西时,总是抓住名字。所以,例如
polyExtrudeFacet -n $outNameExtrude
-ch 1 -keepFacesTogether 1
-pvx 0 -pvy 0 -pvz 4.0 $outName;应:
$tmp = `polyExtrudeFacet -n $outNameExtrude
-ch 1
-keepFacesTogether 1
-pvx 0 -pvy 0 -pvz 4.0
$outName` ;
$outNameExtrude = $tmp[0];这样你就可以避免玛雅在你脸上爆炸。因此,您的代码看起来应该是:
proc makeCubesDrivenBy(
string $controlName, int $totalObjects, float $spacing
){
for($i=1;$i<=$totalObjects;$i++)
{
string $tmp[];
string $outName = ("twist_"+ $i);
string $outNameExtrude = ("ext_"+$i);
float $extrusion = 0;
$tmp = `polyCube -n $outName -ch 1
-o on -w 12.009218
-h 7.720124 -d 0.755927
-cuv 4`;
$outname = $tmp[0];
setAttr ($outName+".translateZ") ($spacing*$i);
$tmp = `polyExtrudeFacet -n $outNameExtrude
-ch 1
-keepFacesTogether 1
-pvx 0 -pvy 0 -pvz 4.0
$outName` ;
$outNameExtrude = $tmp[0];
setAttr ($outNameExtrude + ".localTranslate")
-type double3 0 $extrusion 0 ;
expression -s ( $outNameExtrude + ".tz" +
"= Rotator.rotateY * 0.01*" +
($i*0.5) + ";") -o ""
-ae 0 -uc all ;
}
}
{
string $pipe[], $facet[];
int $totalObjects = 1;
$pipe = `polyPipe -n Rotator -ch 1
-o on -r 1.839239
-h 1.223879` ;
$facet = `polyExtrudeFacet -ch 1 -keepFacesTogether 1
-pvx 0.07364761256
-pvy 0.6119394158
-pvz 4.019784712
-divisions 1 -twist 0
-taper 1 -off 0
-smoothingAngle 30 Rotator.f[36]`;
setAttr ($facet[0] + ".localTranslate")
-type double3 0 0 0.930651 ;
makeCubesDrivenBy($pipe[0], 1 , 1.5);
}无论如何,当您复制历史输入时,流程本身并不是非常正常,但我无法真正猜出您所追求的是什么。
PS:除非你真的必须使用-ae 1,否则不要在表达式中使用它。
发布于 2013-11-24 02:50:23
你的表情是
0= Rotator.rotateY * 0.01*0.5;这不起作用。你想要".O“代替吗?
您的polyExtrudeFacet中也有一个polyExtrudeFacet标志;我认为这是行不通的。
最后,您应该将$outNameExtrude + ".localTranslate“放在最后一行;
https://stackoverflow.com/questions/20170197
复制相似问题