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

2009年7月23日木曜日

オブジェクトの位置へロケータを作成(まめさんレス編)

相互リンクしていただいているまめさんから、「eval」を使わない方法について、コメントをいただきました。
コメントに入れていると埋もれてしまうので、エントリにコピペしておきました。

シニアがやってくれたものより、こちらのほうが自分としては、好きです。


--------(以下、まめさんからのコメント)------------
なるほど~
やっぱり人によって考え方は全然違うんですね!
自分は迷わずこう書きました。

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

--------コメント終わり------------

まめさん、コメントならびに、スクリプトありがとうございます。

他の人が作ってくれたスクリプトは大変勉強になります。

いや、まめさんのスクリプトはシンプルでいいですね。
実は、自分も$x,y,zでわけることは考えたのですが、なぜかうまくいきませんでした。
spaceLocatorコマンドの中で直接$pObj.x,$pObj.y,$pObj.zと書いたのと、
まめさんのように$x,$y,$zの変数にいったん代入する方法の二つを試したんですが、
他の場所に問題があったのか、エラーになってしまいました。

でもこれでうまくいくんだなということがわかったので、こんどからどんどん使っていきたいと思いますw

centerPivotの情報もありがとう。


私のシニア・アーティストは、「eval」コマンドが好きなのは、
スクリプトを作成中に、evalをprintすれば、どんなコマンドを実行しようとしているか、わかりやすいのでエラーも見つけやすいと言っていました。
独学でCGを身につけた人でもあり、いろいろと考えるのが嫌な性格であることから考えても彼らしいとは言えますがw。

さて、彼の言うことは、一理あるのですが、インタプリタ的な使い方であり、間接的な操作になっていることは否めないと思います。
彼の言うように変数の流れを追って行かなくても、なんとなくで出来てしまうため、プログラミング的な思考を身につけるチャンスを失っている気がします。
「eval」で実行するためのstring変数の中身を書くのに「”」を多用しなくてはならず、長いコマンドになる場合は文字の切れ目の区分けがみずらくなり、間違いやすくなる欠点もあります。


--------------------
「eval」コマンドの負荷についてですが、これはMayaで「eval」を使用したときとそうでないときを比較して検討したわけではありませんので「負荷が高くなる」というのは正確な考えかどうかはわかりません。
ひょっとすると自分だけの勝手な思い込みかもしれませんが、こう思い込んだ理由は以下の通りです。


他のプログラミングやスクリプト言語の話などを読んでいると、「eval」について以下のような記述がよく見受けられます。(参考;wikiHatena
1)経験の浅いプログラマが多用したがる。
2)パース(parse:コマンドの構文解析)に時間がとられる。
3)evalをつかわなくても良い方法。

このように、全体的には「eval」を避ける傾向があるように見えます。
積極的に使われる例としてはweb用のスクリプトで、URLを取得しそのURLへ飛ぶようにする方法などにつかわれているみたいです。

「パースに時間がとられる」というのは、少なくとも「構文解析」というステップが一つ増えることだと思います。
「構文解析」がどのぐらいの負荷が必要なのかはわかりませんが、文字列を処理することから考えても、「非常に軽い処理」とは思えません。
そして、それは「Maya」でも同じではないかなと思っています。

簡単に数回、処理をするだけなら、数ミリ秒の違いかもしれません。
しかし、仕事でパーティクルやたくさんのジオメトリを一度に処理することが多いので、小さな負荷が度重なると全体的に処理時間が増えてしまうので、大変なことになってしまいます。
ひどいときには1フレームのキャッシュに30-40分かかることもありました。

いつか一度、比較しなくてはいけないと思っていますが、忙しくないときはつい忘れてしまいます。
 

--------------------
まめさん、「映像の原則」買ったんですね!
個人的にはあれはとても良い本だと思っています。
自分は、この本で、映像を見る視点がわかり、日本のアニメやマンガがどうしてハリウッドの監督やプロデューサーの心をつかんでいるのかを理解するきっかけとなりました。
まめさんも、何か得られるといいですね。






0 件のコメント:

コメントを投稿