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

2009年6月3日水曜日

スクリプティング学習における第二の壁

最近、MELの本当の基礎的な壁はぬけたように感じる。
といっても本当の基礎の基礎の部分で、マクロからスクリプト初心者へやっと移行したぐらいだ。

この段階で、MELスクリプトをどんどんやればいいのだろうが、発想がもともと貧弱なので、スクリプトのアイデアがあまりない。

また知っているコマンド+α程度でどのぐらいのスクリプトが作れるのかわからない。
今の自分+αの努力で、なんとか頑張れば完成できる程度のスクリプトがどんなものなのか見積もりがたてられない状況だ。

その壁をやぶる為に、最近は、オンラインヘルプを拾い読みしたり、チュートリアルをみたりしているが、未だにピンとこない。


入試のためにがんばってきて、いざ合格するとなにをしていいかわからない5月病に似ている。

いままでは、なんとか頑張れば基本的なコマンドを用いたMELスクリプトが作れるレベルを目指していたが、対象となる物は多少興味があればなんでもよかった。

しかし今は、徐々に応用力を身につけていく必要がある段階にさしかかったのかもしれない。
応用といっても、Mayaをどのように使うかその専門領域によってことなってくるので、まだ専門領域を絞り切れていないので何をして良いかわからなくなっているのだろう。

また、、MELのボキャブラリも少ないので出来ることも限られている。
もちろん、新しいコマンドを学ぶことには抵抗はないし、エキサイティングなのだが、近い将来に使うことがないことをするのは望まない。


今、知っていることをフルに活用し、なおかつ、新しいことを多少学ぶ必要があるようなスクリプトの課題があるといいのだが。

とりあえず、いままでやってきたことをおさらいして、ヘルプを見ずにできるようにするのも良いかもしれない。
しかしながらその先を考えておくことは必要だ。



今は、ボキャブラリを増やしていく必要があるが、興味を維持していくためにはすぐにでも仕事に使える内容のボキャブラリを増やしていく必要がある。

また「ボキャブラリを増やす」 と言っても、暗記では駄目で、一つ一つをちゃんと理解していく必要がる。

もう少しわかりやすく言うと、今の時点で知らない、そして近い将来、役に立ちそうなコマンド、ノード、アトリビュートを学ぶということだ。



ここには三つのポイントがある。
●最初にのべたように、自分の専門分野もしくは、仕事に関係する事柄。
●他のプログラミング言語にも共通するコマンドではなく、Maya独自のコマンドを学び始める必要がある。
●3DCGの基本を学び、それがどのようにMaya内でノードとアトリビュートとして実装されているのかを知る必要がある。


「自分の専門分野」に関する事なら、より興味がわいてくるし、最後までやりとげて使えるようになろうという意欲も出てくる。
なにより、実際に使えれば自分の仕事の速度を上げ、幅を広げてくれる。


今まで変数、ループや条件分岐、printなどの他のプログラミング言語にも共通する基本的な部分を使えるようになることに重点を置いてきた。
それらがほぼ使えるようになってきた今、Maya独自のコマンドを学ぶ必要がある。


Mayaのノードとアトリビュートは、3DCGという領域に存在するあらゆる事を具現化したものである。
シミュレーションであれば、物理現象を数式化した原理原則をさらに、よりユーザーが簡単に使えるようにしたものがノードである。
ノードは3DCGという広い範囲で使われている数多くの理論の一部を具現化したものであるといえる。

知識の重要度を順位で示すと、(学習の順番ではない、より下位の事柄に影響を及ぼしている、上位の事柄はなにかという順序)
0)現実の原理原則(物理現象など)
1)3DCGの理論
2)ノード
3)アトリビュート(アトリビュートはノードに依存する物であり、ノードの一部)
4)コマンド(ノード、アトリビュートを操作するために必要)


まず自分が操作する対象は仮想世界であることを心に留めておかなくてはいけない。
その仮想世界で様々なことを実現するために3DCGという分野を選択している。

そしてその根底には、仮想世界を実現するために参考としている現実世界の原理原則がある。
3DCGの理論が現実世界のなにを具現化しようとしているのかをしっておくことは重要なことだと思う

ノードはその理論をMayaという限られたパッケージ内で具現化する手段である。
特定の範囲の理論、数式、原理原則が濃縮された物だ。

アトリビュートはノードの中で使われている値であり、3DCG理論の一部である。
ノードをちゃんと理解しようとするときにアトリビュートをつぶさに見ていくことになるので、ノードを理解すれば、必然的にアトリビュートは理解することになる。

コマンドはこのノードとアトリビュートを操作するマジックハンドである。


言い方をかえると、スクリプティングとは何かを操作するための作業である。
その対象を知らなくては、操作することもおぼつかない。

コマンド、ノード名、アトリビュート名を、次々と暗記していくことはできるかもしれない。
しかしながらそれでは、生きた知識にならず、応用力の少ない学習になるような気がする。

自分の自由な発想で、様々なアトリビュートやコマンドを駆使できるようになるためには、生きた知識を持ち自分の判断で、基本知識を別の物に応用していくことが出来るようになる必要がある。

Mayaは万能ソフトではなく、あくまで限定された機能をもったソフトであることは誰もが感じているがその限界がどこにあり、その限界を超えるにはどうすればいいのかを考える力を身につけることがTDとして、もしくはテクニカルなアーティストとして生き残る道ではないかと思う。


そしてそれが出来るようになったとき、Melスクリプトに止まらず、Python、C言語などの学習準備がととのっっているだろう。


Mayaというものがなぜ、3DCG統合パッケージと呼ばれ、なぜ他のプログラミング言語を習得している人がMELの学習も早いのか?それはこのあたりのことがわかれば、少しづつ見えてくる。



--------------------
そこまで掘り下げて勉強するならC言語でプラグインを作るのと同じレベルの勉強なのではないかと思うかもしれないが、そうではない。

CGの基本原理を理解する必要ははるかもしれないが、具体化する方法を「完全」に理解する必要はない。
もちろん完全に理解するに超したことはないが、アトリビュートが何を具現化したものなのかを知る程度でもMELスクリプティングの応用力は格段に高まると思う。
自分が表現したいCGがどの法則や原理を利用した物なのかを知り、それを具現化したノードを知っていれば、表現したいことをどんな部品を使えば実現できるかを考えることができるようになる。
それがこの段階での目的で、それらの部品をつくることが目的ではない。


C言語でプラグインを作ったりするには、数々の原理原則を正確に理解してそれをどのようにプログラミングで実現するかをしらなくてはいけない。
ちゃんと理解しておかないと、原理原則を具体的なプログラミング言語で構築することはできない。
それができるようになるためには、もう一歩踏み込んだ努力が必要になってくる。



--------------------
こうして考えてみると、MELスクリプティングが、簡単そうにみえても実は難しい理由のはここにあったような気がする。

MELを少し勉強して、少し使えるようになり、さらに複雑なことをできるようになろうと本腰を入れると、コマンドの多さに圧倒され、ノードとそのアトリビュートの多さに愕然とする。

やるべきことが多いので、こつこつやるしかないのは分かっているのだが、マスターするのに一体何年かかるのだろうかと考えると呆然としてしまい、桶は桶屋にまかせたほうがいいかとまで思ってしまう。

この状況を乗り越えなければTDと呼ばれるレベルにはたどり着けないのだろうと思う。

0 件のコメント:

コメントを投稿