Maya表达式语法错误

时间:2013-09-14 10:58:00

标签: expression maya mel

我试图在Maya中的特定属性上设置以下表达式有什么问题。所有这些只是不同的方法。

表达式1:

directionalLightShape1.intensity = sqrt(noise(time));

错误:

expression -s "directionalLightShape1.intensity = sqrt(noise(time));"  -o directionalLightShape1 -ae 1 -uc all ;
// Error: line 0: Invalid argument(s) for sqrt. // 
// Error: line 0: An execution error occured in the expression expression1. // 
// Result: expression1 // 
// Error: line 0: Invalid argument(s) for sqrt. // 
// Error: An execution error occured in the expression expression1. // 

表达式2:

float $n = noise(time);
directionalLightShape1.intensity = sqrt($n);

错误:

expression -e -s "float $n = noise(time);\ndirectionalLightShape1.intensity = sqrt($n);"  -o directionalLightShape1 -ae 1 -uc all  expression1;
// Error: line 1: Invalid argument(s) for sqrt. // 
// Error: line 0: An execution error occured in the expression expression1. // 
// Result: expression1 // 
// Error: line 1: Invalid argument(s) for sqrt. // 
// Error: An execution error occured in the expression expression1. // 

表达式3:

float $n = sqrt(`noise time`);
directionalLightShape1.intensity = $n;

错误:

expression -e -s "float $n = sqrt(`noise time`);\ndirectionalLightShape1.intensity = $n;"  -o directionalLightShape1 -ae 1 -uc all  expression1;
// Error: line 0: Invalid call to "noise".  Check number and types of arguments expected by the procedure. // 
// Error: line 0: An execution error occured in the expression expression1. // 
// Result: expression1 // 
// Error: line 0: Invalid call to "noise".  Check number and types of arguments expected by the procedure. // 
// Error: An execution error occured in the expression expression1. // 

表达式4:

float $n = noise(time);
directionalLightShape1.intensity = `sqrt $n`;

错误:

expression -e -s "float $n = noise(time);\ndirectionalLightShape1.intensity = `sqrt $n`;"  -o directionalLightShape1 -ae 1 -uc all  expression1;
// Error: line 1: Invalid argument(s) for sqrt. // 
// Error: line 0: An execution error occured in the expression expression1. // 
// Result: expression1 // 
// Error: line 1: Invalid argument(s) for sqrt. // 
// Error: An execution error occured in the expression expression1. // 

2 个答案:

答案 0 :(得分:1)

如果您看到使用(noise(time) + 1)/2的工件,则可能需要使用abs

根据应用程序,范围的截断可能是一个问题。

答案 1 :(得分:0)

所有陈述的表达式的问题是noise返回值。当馈送到sqrt时,自然应该抛出一个最初不太明显的错误。

noise(time)替换abs(noise(time))解决了这个问题。