日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2009年7月17日金曜日

オブジェクトの位置へロケータを作成。

複数、もしくは一つのオブジェクトを選択して、そこにロケータを作る。
しばらく考えたが$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にあり、ロケータの中心にない。)

1 件のコメント:

  1. なるほど~
    やっぱり人によって考え方は全然違うんですね!
    自分は迷わずこう書きました。

    {
    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.映像の原則購入しました★

    返信削除