2011年8月19日金曜日

scriptのすすめ1

突然ですが、
「scriptのすすめ」
ってなスクリプトのTipsを始めてみようと思います。

まずは、maxscriptから。その後、RealFlow、Houdiniのpythonなんかを続けていてたらと思います。
いつまで続けられるか分かりませんが。

maxscript EdgeRot from sugiggy on Vimeo.

エッジを基準に、面がバラバラに回転しています。
何も面白くないですが、手でやろうとするとかなりシンドイです。まず面をバラバラに動かすのと、エッジの向きの回転軸で回転させる為に、ベクトルと回転の仕組みをスクリプトで書いています。
のちに詳しく解説できたらと思います。

自分自身は、元々大学時代にプログラミングなど挫折した人で、以前はスクリプトなど
書きたいとか書けるとか微塵も思っていませんでした。
ある事をきっかけに6年前くらいから書き始めたんですが、始めたら便利さに驚き
あっという間に仕事効率がアップしました。慣れると開発時間も殆どかかりません。

どのような人が覚えるべきか?
ここは個人的な考えですが、
将来、大きなプロジェクトをまとめる人材になりたいと思う人や、エフェクト系の仕事をやりたい人、そしてジェネラリスト。
特に日本には多くのジェネラリストがいますが、埋もれずにレベルアップしていくにはスクリプトは必須であると思います。
飛びぬけたセンスがあれば必要ありません、でも出来たらもっと良いですね。
(最近では僕の周りのモデラーの方もスクリプトを勉強しています。)

CGアーティストはアートの能力はもちろん持っていないといけませんが、
大きい仕事になればなるほど、効率が仕事の中の比重として大きくなり、責任となってきます。
(なので海外ではパイプラインを作り効率を上げています。)
そこで全体に関わるツールや、制作方法を考えるのにスクリプトの知識がとても活きてきます。
TDにツール制作を依頼する場合も、自分で書いた事があるか無いかでは頼み方に大きな差が出てきます。
アーティスト目線からの仕様で、ツールが出来ればより使いやすいパイプライン、ツールが出来上がっていくと思います。

スクリプトというと、すぐにintだとかfloatだとかクラスやらなんやら、型がどうだこうだとかの話になりがちですが、最初のうちにはそれらを知らなくて大丈夫な進め方を出来たらと思います。

勉強の仕方としては、
1.「最初のうちは時間はかかるが、無理してでも書く!」
最初はどうやって書いてよいか分からず、調べたり、考えたりで
「これなら手でやったほうが早ぇー!!」なんて思ったりしますが、
ぐっと我慢し書くべしです。そうで無いと覚えられません。

自分自身、未だに10個くらいのオブジェクトに似たような作業を行う場合
手でやってしまう事もありますが、途中で「あぁ書いて置けば良かった。。」
なんて思うことは多いです。
その後必ず、ちょっとした修正や変更をしたりする事しばしばです。

2.「maxscriptのヘルプと友達になる」
ヘルプはある程度かける様になった今でも使います。語学と一緒で、言語の全ての言葉を記憶は出来ないので、
書いたこと無い機能を作る場合は必須です。
maxsciptのヘルプは初心者にとっては不親切です。
かなりプログラミング用語が使われていて、最初のうちは良く分かりませんでした。

「ヘルプのヘルプが欲しいぜ!」って思った事もしばしば。
が、ここは我慢です。分からない用語はスルーです。
色々サンプルが載っていたりするので、自分の書きたい機能はどう書くのか分かれば良しとします。
検索の仕方もコツがあるのですが、ここは明文化するのが難しく慣れとしか言えない感じです。
ガンガン使って慣れてください。
初級者を抜け出すにはまずはヘルプを使い方がマスター。出来れば、その先はずっと楽でしょう。

最近はmaxscriptのヘルプは英語版が付き、のちに日本語版ヘルプが出るという感です。
2012からはWebになっています。
http://docs.autodesk.com/3DSMAX/14/JPN/Rampage%20MAXScript%20Guide/index.html

2012以前はchmファイルです。個人的にはこっちの方が好きです。
http://www.autodesk.co.jp/adsk/servlet/index?siteID=1169823&id=13137514&linkID=14171177


大分前置きが長くなりましたが、
最初のスクリプトはこちら!

for o in selection do
(
    p = point()
    p.pos = o.pos
    o.parent = p
)

えっ! これだけ!!

選択したオブジェクトに親のポイントを作ります。
スクリプトエディターに貼り付けて、実行(Ctrl+E)してみてください。

ゆっくり進めます。暖かい目で見守ってください。
次回はこのスクリプトの解説と、それを拡張して行けたらと思います。
では。

3 件のコメント :

Ichiro Iwano さんのコメント...

岩野です。

続きを楽しみにしております!!
またよろしくお願いします!!

shinji さんのコメント...

Python勉強会やりましょう‼

Sugimura さんのコメント...

岩野さん
こちらのメッセージすっかり、
見逃していました。
続きがんがります。

shinjiさん
pythonも引き続きガリガリやれればと
思いまーす!