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

2011年2月9日水曜日

CGの習得方法

ブログ「teruyastarはかく語りき」の新しいエントリ
■「基礎が大事」という本当の意味を理解しているか?」で非常に重要な勉強の方法がのっている。
これはCGを勉強する上でも非常に大切なこと。

一部重要な点を抜粋しておきます。
 「例題」のみひたすら繰り返す! 
「練習問題」「演習問題」には手をつけない。


これをどのぐらいまえやるかというと、
「問題を見たら例題通りの解法がすぐ出せるぐらい」

これを別の言い方でも表現しています。
「基礎を解法まで暗記した」
「型を体で覚えた」


「基礎作業の意識コストを限りなくゼロに近づける」
「無意識で出てくる」




-------------
 <「暗記」と「無意識から出る行動>
-------------

さて、私は勉強法として行動に結びつく知恵を体得する場面において「暗記(意味を正確に理解しているかどうかは関係なく文字通り記憶するだけという意味において)はあまり有効ではないと考えている。
誤解を生みやすい言葉でもあるので、上記の「基礎を解放まで暗記した」という部分は除外して話を進めたい

ここで一番重要なのは
 「型を体で覚えた」
「基礎作業の意識コストを限りなくゼロに近づける」
「無意識で出てくる」

と表現されている部分である。

 これは、どの程度のレベルのことを行っているのか日常生活に当てはめて考えればよくわかる。
*顔を洗うときにどうやって蛇口をひねるかいちいち考えない。
*手を洗うときにどうやれば石けんが使えるかなどいちいち考えない。
*靴を履くときにそれほど深く考えることもしない。
*ゲームをしているときに、どの筋肉に力を入れてボタンを押すかなど考えない。
*運転中に赤信号になったから車のブレーキの踏み方を考えたりはしない。
これぐらいのレベルである。
これが無意識で出てくるということであり、体で覚えたと言うことであり、無意識で行動に起こせるということである。

実はこれはただ暗記(記憶している)のとは訳が違う。
暗記の場合は、行動に起こす前に思い出す」という作業が入ることが多い。
ようするに「無意識で行動に起こせる」とは暗記したことを行動に起こすよりも遙かに反応速度が早いのである。

このためには繰り返し練習することが必要である。
おそらく、最初は一桁ぐらいの回数を繰り返したぐらいでは習得できる事は 少ないだろう。

もう8年ほど前のことになるが、CGの学校へ行った初日に帰宅してやったことがある。
ひたすらMayaを起動→ポリゴンメニュー選択→ポリゴンキューブ作成→Mayaを閉じるという手順を数十回、以上繰り返したことがある。
これは、Mayaというソフトに抵抗をなくし早く親しむため、そして様々な感覚的な物を体感して体で覚えるためであった。
CGソフトは非常に一つのコマンドの機能が限定されているというのは文章を読めば自明でわかるが実際には指の筋肉、目の筋肉、頭での判断は追いついていないことがある。
そいういった、Tutrialでは説明すらされないこと、会社でわざわざ説明してもらえないことがある。
しかもそれは体感しなければ実感がわかないし、体感しなければ身につかない。
これが体感できたと感じるのは、何も迷ったり考えたりすることなく、自然と体が動いてできるようになる地点へ到達すれば、満足感と共に自分でも自信を持って獲得できたと感じる。
自分でそこへ到達したことはわかるのである。


 
 -------------
 <「基本」と「応用」>
-------------

  (このエントリでは「CG」といっているが、高度なプログラミングの世界に関しては、私は経験がない。それらは自分の予測の範囲を超えている。おそらくこの方法はプログラミングにも有効かもしれないが、理論として当てはまるかどうかはわからない。)

ここで、一点強調しておかなければならないことは、CGにおいては「基礎」という言葉を「入門レベル」と混同いしないこと。
「基礎」というより「基本事項」としたほうが良いかも知れない。
例えば入門レベルで勉強することは「ポリゴンモデル」や「テクスチャー」、「ライティング」がある。
これで辞めていたら何も出来ない。
「流体」や各ノードのアトリビュートなどを勉強する必要がある。
それらは上級レベルの内容もあるが、ほとんどは「基本事項」である。
それらの情報を、知恵を絞っていろいろと組み合わせるのが「応用」である。

自分の経験からなので、外れているかも知れないが控えめに言って「基本事項」が7割、「応用」が3割と考えても良いかも知れない。
たとえばスクリプトを勉強しはじめて数学の知識が必要だなと思ったらそれは「応用」ではない。
それはさらに基本事項が必要となったと言うことだ。

CGは一分野だけではなく、ありとあらゆる分野の知識が集まってきて現在の形になっている。
なので習得すべき基本事項は膨大な数があるのである。
それらを次々習得していき、チュートリアルなどをやってたり、経験を積んでいけば応用の2割程度は知らず知らずの間に身についているような気がする。

実際の所、「応用」の部分は「頭を使う」ことである。
記憶ではない。
応用が出来るようになりたければヒント無しで自分で難しい問題を解く事を積み重ねれば出来るようになってくる。





-------------<繰り返しの重要性>
-------------

さて話を「繰り返しの練習」に戻すが、
CGソフトでいえば、何かをするときに何も見ないでも、悩むことなく行動がおこせるというレベルである。


実は、これは数年の実務を通すことで身につくことと思われているが、その数年間で何回も同じ事を繰り返しているうちに身についているのである。
要は年数ではなく繰り返しの回数なのである。

その繰り返しの練習も、ただ漠然と何も考えないでやるのではなく、集中して自分の心の動き感覚に注意しながらやった方が効果が上がる。

なので、この繰り返しの練習を合理的にできるシステムがあれば、その分野に関してはストレスが少ない上に、非常に速いスピードで物事を習得することが出来る。

あいにくCGの世界はそれらが混乱しているので、
自分で整理整頓しつつ、自分で自分にあった道を見つける必要がある。



-------------
<変数やアトリビュートの値>
-------------

そして繰り返しの練習をしているときにいくつかの問題にぶつかるときがある。


その最も大きな物が、なかなかスムースに出来るようにならないということ。

スムースに出来ないと言うことは、なにか心に引っかかることがあったり、ちゃんとした数値を覚えていなかったりするとうことだ。


ここで障害になっているものは「理解」である。
練習している物がスムースに行動に移せるのは、そこにある物事をきちんと理解しているからである。

通常、きちんと理解していないからこそ、引っかかる。
たしかにチュートリアルに出てくる、変数や数値は、ある程度は記憶に頼る必要があると感じるかも知れない。

しか~し!

これでさえも、まず考えなくてはいけないのは自分が理解しているのかと言うことである。
変数や数値がなぜその値、文字なのか、秒、フレームなどその数字には意味(単位)があるのか?
それらの変数はどことつながりがあるのか?
数値は、実際にシーンの中でどのぐらいの影響を与える物なのか?
こういったことを理解するために
*スライダを色々いじって試してみる必要があるかも知れない。
*変数名の意味を考える必要があるかも知れない。
*ヘルプを見てその数字の意味を調べる必要があるかも知れない。
*アトリビュート名を調べてみる必要があるかも知れない。
これらをすべて明白に出来れば、かなり良い線までいく。

そして、この問題に関して、もうひとつできる事がある。
 そういった数値などは、メモしておくと言うことだ。
ここでいう「練習」は、「キーボード操作とマウスを操作」、すなわち「行動」 に関する物を指す。

まず暗記に頼る前に、暗記しなくてもいつでも参照できるように手元に書いて置いておく。
そして練習中はひたすらキーボード操作とマウス操作でソフトを使いこなすことに焦点を置く。
手が止まったら、きっとわかないことがあるか、迷いがある。
それを明白にするためにすぐにメモを参照する。
そしてすぐに練習を続ける。

これをひたすら繰り返す。
そのうちメモを見なくてもできるようになる。

さらに続ければ、不安が取り除かれて、勉強したことの知識がつながり、今やっていることの理屈が有機的に理解出来てくる。
おそらくこの段階まで行っていれば、同じ事をやっているにもかかわらず
*深く理解している
*楽しくなっている
*自信がでてくる
ことを実感できる。
自分が習得したことは自分が知っている。


-------------
<補足>
-------------
もういくつか補足しておきたいことがある。
この「練習」とは大体CGにおいてはチュートリアルでやっていることを繰り返す事になると思う。
たとえば 「第一章」でやっていることを繰り返し練習するとか、「ビデオチュートリアル」の一部とか。
大体チュートリアルは、複数の基本技術を次から次へと説明しているので、自分で短く切ってわかる範囲でやっていく方がよい。
通しでやった方が理解しやすい場合はそれで良い(Houdiniなどは、そういうことがある)

そしてチュートリアルは体を動かす「練習」だけではなく、いくつかの裏付けとなる知識や理論が説明されている。
それらをしっかりと理解しておくことが練習の前準備として必要である。
もし出てくるコマンドやノードがわからなければ自分のレベルで必要な部分だけは明白な理解を得るようにする。

もう一つは、そのチュートリアルを通して自分はいったい何をしようとしているのか、そのノードや値を操作して自分は一体何をしようとしているのかを意識し、できるかぎり明白にしておくことである。



そのチュートリアルが自分にとって段違いに難しいレベルのこともある。
「レベルが高い」とは必要となる「基本事項」の数が多いものであり、そのいくつかを習得できていないものである。
その場合は、もっと低いレベルに移るのが得策だ。
もしもう少しがんばればいけそうと思う場合は「練習」の前段階である「理解」をしっかりさせれば通り抜けられるかも知れない。


「理解」とはいろいろ考えることなく、それがわかるということであり、意味を知っていると言うことである。

「理解」とは「記憶」ではない。
そこを勘違いしないように、 ヘルプで見た知識や辞書で調べた意味を「記憶」するのは何の意味も持たない。

自分が人に説明すると仮定してみるとわかりやすい。
その知識を持たない人に、何も見ないでわかりやすく説明できるなら理解している。
ヘルプや本、辞書などに書かれた文章を、そのまま口にして相手に本を渡すかのように受け渡すだけなら、もしかしたら明白にはわかってないかもしれない。


ー-------------
<柔軟性をもつこと>
ー-------------
以上のことは、理想的な理論であるが、この通りにやることは、できる。
ただ、柔軟性を失ってはいけない。

やってて効果がないなら、もしかしたらもっとよい方法があるかもしれない。
自分に合う方法を選べばいい。
ある事にはこの方法が役に立つかも知れないが、あることには役に立たないかも知れない。
一度も完全に忠実にやって見たことがなければ、もしかしたらその効果は永久に感じないかも知れない。

完璧性をもとめすぎても初心者にはハードルが高くなる。
たとえばあるノードの全てのアトリビュートを理解する必要はない。
そのチュートリアルで使われている範囲で理解すればよい。



自分は、上記で書いていることをいつも心に止めているが、いつも使っているわけではない。
(たぶんそれが上達が遅い理由であるかも知れない)
それは、理路整然とレベルをおってまとめられたチュートリアルは、ほぼ皆無であるからだ。
ただ、自分の理解力、行動にも注意を向けており、必要なときには使うようにしている。

0 件のコメント:

コメントを投稿