Scriptsを組み立てる

この間、仕事中にスクリプトをどう組み立てるのか?どう考えるのか?ということを少し説明する機会があったので
せっかくなのでそれをBlogのネタにしてみます。

といっても、私自身はまだプログラマとしてはヘボなので高度なクラス設計などはできないので
デザイナーだけど、スクリプトを勉強してみたい けど、どうやっていいのかわからない
ぐらいの人向けのメモになります。はい。

1 まずは手でやってみる
Mayaは、基本手で作れるものはすべてコマンドに書き起こすことができます。
ノードを作り、名前をつけて、値をセットして、別のノードにコネクトする…等々。
そういった、自分が「こうしたい」というものを まず1つ手でつくって 必要な要素を整理してあげます。

この時に重要なのは、この「整理」する という箇所。
ただ闇雲につくって とりあえずできたが、もう一度同じ手順をやるのは無理だ というのでは意味がありません。
「どういう順序で」 「なにをするのか」
これがとにかく大切です。

2 順序を文章で書き起こす
次に、1で手でやってみたものを どういう順序でやったのか紙なりテキストエディタに書いていきます。
例えば、
ちょっと前に書いたLightLinkerバグを解消するコマンドを書く場合

1 シーン中のLightLinkerノードをリストする
2 ノードのロックを解除して、ノードを削除する
3 2を、1でリストした分繰り返す

のような感じに(いわゆるフローチャートというやつです)

私は、簡単なものだと文章に書き起こしたりはしないのですが、面倒な物や 細かい関数を作ったほうがいいものなどは基本今でも紙に書き起こします。
書き起こすと、手でやったときの 「どういう手順で」「なにをするのか」が明確になりますし
何が頭の中で整理されていないのかがはっきりします。
私だけかもですが、この段階で整理して書き起こせないものはスクリプトで書くことは不可能です。

スクリプトは、自分がやりたいことをコンピューターにやらせるための便利な機能ですが
コンピューターは「やりたいこと」を読み取って勝手に動いてはくれません。
なので、個人的には この「文章で書き起こす」工程がスクリプトを書く上での一番重要な部分だと思っています。
理想は、難しいのでも書き起こさずに脳内で完了できればいいんですけどね。

3 実際に書いてみる

あとは↑で書いた順番をスクリプトのコマンドに置き換えていけば完了
覚えておくべきことは、

for で繰り返す
if    で、判定する
ls でリスト
select で選ぶ

ぐらいで、基本Mayaのデフォルトで備わってるコマンドは書くときに調べます
substitute と tokenize の引数の順序とか覚えていられないですし、 xformのオプションなんて覚えられません
大切なのはどうやって調べるかであって、コマンドを暗記することではないわけです。
(ls select setAttr getAttr connectAttr substitute tokenize の機能ぐらいは知っておいたほうがいいかもですが)

はじめは時間がかかるかもしれませんが、この工程を繰り返していけば
少しづつですが書くスピードもあがるし、考えるスピードも早くなります。

ことデザイナーにしてみれば、スクリプトは難しい取っ付きにくい分野になりがちなのですが
書けないにしても読める、書き換えができる ぐらいは出来たほうが良いと思うので、苦手意識を持たずに手を出してみてほしいなぁと思います。

コメントを残す

メールアドレスが公開されることはありません。

*