是否可以将位于场景中的对象(网格/变换)作为参数传递给 Maya 表达式编辑器 (MEL) 中的全局过程?
例如:
global proc int foo( ??? $object_ ) // what's the type of the parameter?
{
float $vtx[] = `pointPosition -w object_.vtx[0]`;
...
}
foo( pCube1 );
我现在能想到的唯一方法是将对象的名称作为字符串传递,然后使用 if-else 语句或 switch 语句来确定函数体内的对象。例如:
global proc int foo( string $object_name_ )
{
if ($object_name_ == "pCube1")
{
float $vtx[] = `pointPosition -w pCube1.vtx[0]`;
...
}
else if ($object_name_ == "pCube2")
{
float $vtx[] = `pointPosition -w pCube2.vtx[0]`;
...
}
else
{
...
}
}
foo( "pCube1" );
不幸的是 mel 只使用字符串,而不使用对象。即使表达式语言看起来好像您可以做到这一点,它也不使用对象,而仅使用直接对象在表达式内创建连接。