複数、もしくは一つのオブジェクトを選択して、そこにロケータを作る。
しばらく考えたが$pObjのベクトル値をどうしてもspaceLocatorコマンドで使うことができなかった。
シニアの人に見てもらって以下のようになった。
evalコマンドを使うのは、
1)何となくストレートではない感じがする。
2)evalコマンドは負荷が高いと聞いた。
3)for文の中にevalコマンドを置くべきか、外に置くべきか迷った。
ので避けていた。
{
vector $pObj;
string $point;
string $name[] = `ls -sl`;
int $total = size($name);
for($i=0; $i<$total; $i++)
{
$pObj = `xform -q -sp -ws $name[$i]`;
string $a = ("spaceLocator -p " + $pObj);
eval($a);
}
};
どちらにしても改良の余地有りなのだが、今は忙しくて見直す余裕がないので、
このままにしておく。
(ロケータのpivotがワールド座標の0,0,0にあり、ロケータの中心にない。)
なるほど~
返信削除やっぱり人によって考え方は全然違うんですね!
自分は迷わずこう書きました。
{
vector $pObj;
string $point;
string $name[] = `ls -sl`;
for($n in $name)
{
$pObj = `xform -q -sp -ws $n`;
$x = $pObj.x;
$y = $pObj.y;
$z = $pObj.z;
spaceLocator -p $x $y $z;
}
}
これに最後CenterPivot;の一文を入れれば、
pivotも中心です^^
evalって負荷がかかるんですか?
evalは理解しきれていないところがあるので、
自分も普段は避けてます。。
PS.映像の原則購入しました★