2011年2月10日木曜日

Go procedual Introduction(星形のポピュレーション)の練習


以前3Dbuzzのチュートリアルを行ったときに使用した分析手順を若干改善しフォーマット化した。(注:3Dbuzzバージョンは有料チュートリアルの内容を含むため非公開です)

その効果のテストと、その分析に対して繰り返しの練習を適用した場合の効果を確認するのがこのエントリで行った練習の目的。


繰り返しの練習についてはブログ「毎日、Melスクリプトの勉強!! 」のエントリ
CGの習得方法」を参照。


--------------------------------
テスト: 以下のフォーマットでチュートリアルに出てくるネットワークを分析してみる。

このチュートリアルの要点 概略、要点
 このネットワークの機能: 具体的な動作。

 手順:  チュートリアルの手順

ノード名(ノードの種類);  例:box1(SOP)
ノードの機能:
働きの分類: そのノードがネットワークの中で果たしている役割(現在、分類項目を選択中)
目的:
データ:
上流ノード:
インプット:
アウトプット:
下流ノード:


--------------------------------
--------------------------------
 このチュートリアルの要点 ある形状を平面上に、複数コピーして配置する。
このネットワークの機能 星形形状を平面上にランダムに配置する

 
-------------




手順1:boxを作成


box1(SOP);
ノードの機能:6面をもつ直方体の箱をクリエイトする。
働きの分類:材料の入手1
目的:星形を作るための素材を作成。
データ:デフォルト
上流ノード:なし
インプット:なし
アウトプット:デフォルトのポリゴン・キューブ
下流ノード:polyextrude1(星形に成形)


手順2:すべてのフェイスを選択し、polyextrudeを実行。


polyextrude1(SOP)
ノードの機能:ポリゴンフェイスとエッジをエクストルードする。
働きの分類:仕込み1
目的:材料のキューブ形状を変形
データ:デフォルト
上流ノード:box1(キューブの作成)
インプット:デフォルトのポリゴン・キューブ
アウトプット:星形(LoRez)形状
下流ノード:subdivide1(スムース化)

手順3:フェイスモード(4)ですべての面を選択し、subdivideを実行


subdivide1(SOP)
ノードの機能:ポリゴンを再分割し、よりスムースなHiレゾのポリゴンにする。
こ のノードは(一つもしくは両方のインプットに接続できる)インプット・ポリゴン・サーフェイスを受け取り、Catmull-Clark再分割アルゴリズム を使ってスムースなポリゴン・サーフェイスを作 成するために各フェイスを分割する。
働きの分類:仕込み2
目的:星形形状をスムースにする
データ:Depth2
上流ノード:polyextrude1(ローレゾ星形の作成)
インプット:LoRezの星形
アウトプット:HiRezの星形
下流ノード:copy1(星形を平面上に配置)


手順4:objレベルに戻りGridを作成

grid1(SOP)
ノードの機能:プレーンを作成
働きの分類:材料の入手2
目的:星形を配置するポイントを作るための素材
データ:Size20,20 Rows4, Columns4
上流ノード:なし
インプット:なし
アウトプット:ポリゴン平面グリッド
下流ノード:Scatter1(ポリゴン平面のポイントをランダムにする)

手順5: Copy to Points(Modifyタブ)を実行
まずキューブを選択し、Enter。
次にグリッドを選択し、Enter.


copy1(SOP)
ノードの機能:インプット・ジオメトリの複数の複製を作ったり、そのジオメトリをセカンド・インプットのポイントにコピーする。
コピー・ノードには二つの主な機能があり、2つ目の機能はとても便利である。
*インプット・ジオメトリの複数コピーを作成する。各コピーに対して徐々に変化するトランスフォームを適用することが出来る。たとえばBoxモデルのサイズを漸次的に変化させたものを一列に並べることが出来る。
*ファースト・インプット(ソース)のジオメトリをセカンド・インプット(テンプレート)ジオメトリのポイントにコピーする。これはコピーの配置に対して完全なコントロールを保ったままジオメトリを増やすときには非常に便利である。
働きの分類:アセンブリ
目的:グリッド上に星形を配置する(HiRez)
データ:デフォルト
上流ノード:grid1(後にscatter1)
インプット:星形(HiRez)、グリッド(ランダムポイント)
アウトプット:グリッドのポイントに配置された複数(16個)の星形
下流ノード:なし(最終アウトプット)


手順6:何も選択していない状態でScatterを作成
grid1とcopy1の間に入れる。

scatter1(SOP)
ノードの機能:サーフェイス上にランダムな新しいポイントを散りばめる。
このノードはサーフェイス全体にわたり、大まかに均質なパターンで新しいポイントを分配、限界値でクランプし、穴をあけるように試みる。
生成したポイントは様々な目的に使う事が出来る。パーティクルの発生位置を特定したり、コピーのためのテンプレートとなるポイントにしたり、(レンダリングの)放射計算のためのキューに使用する事が出来る。
フェイスのサーフェイスエリア(より大きなサーフェイス・エリアを持つフェイスは、より多くのポイントを得る)、ユーザー定義のアトリビュート、またはエリアとアトリビュートをブレンドしたものをもとにポイントの配布を設定できる。
注:このノードはUV(サーフェイス)空間にポイントを散布する。
これはピンチされたサーフェイス(Nurbsスフィアやコーンのように)部分は3D空間において均一ではない配布が生じる事を意味する。
注:ボリューム・プリミティブは異なる方法で処理される。
ポイントはその内部に、内部フィールドの値に比例するように散布される。
この目的の為に、マイナス値はゼロにクランプされる。
働きの分類:仕込み3
目的:グリッド上にランダムな配置でポイントを作成する。
データ:Number of Points 50(任意)、Rundom Seed(任意)
上流ノード:grid1
インプット:平面グリッド
アウトプット:ランダムなポイント位置をもったグリッド
下流ノード:copy1

--------------------------------
以後、チュートリアルとメモを見ないでネットワークの構築を試みる。
わからなければすぐにこのメモを見る。
繰り返し、何も見ないでスムースに出来るまで、ネットワークを構築する練習を続ける。


--------------------------------
2011/02/10
昨日チュートリアルのステップと各ノードの分析、ネットワークの分析(上記)はすませ、メモを取っておいたのでそれとキーボードショートカットの一覧を参照できる状態にしておき練習開始。


正確には数えていないが、大体50回ぐらい繰り返した。

完全に間違っていたり、何をして良いかわからなくなったときはすぐにメモを見直す。
考えて記憶を探り思い出すために時間を割く事は一切しない。

「入力ミス、クリックミス」は集中力が欠け、現在自分がやっていることが自動的になっており意図を持ってやっていないことを示すている。
もしくは、ソフトの操作になれていない(どこにあるかきちんと把握できていない)ことを示しているので、理想的な状態ではない。
集中力を維持し、チュートリアルのインストラクターが次の操作をするときにどのようなことを意図してやっているのか、なぜそこでそれをやっているのかなどを推測し、意識し自分も同じ意図、考えになってできるようにすると比較的クリアしやすい。

「一瞬手が止まる」のは自分がやっていることを見失っていることを示す。
これも理想的ではない要素である。
ステップを暗記しようとする傾向があったり、順番を暗記したとおりにやろうとしたり、集中力がかけると、これが見られる。
意外とステップを暗記しようとする傾向は強い、無意識のうちに暗記に走る。
原因としては行程を十分理解しないでいるためである。
 その時には、現在自分がやっていることは全体の中でどんな役割を持っているのかを見直してみた。
 たとえば今やっているのは最終的なステップで組み合わせられるフローのふたつのうち、部品となる一つをつくっているとか。
またメモから全体の流れ、そしてそのノードの役割を見直してから練習に戻る。


各ステップを間違いを犯さず、躊躇せずに繰り返しできるようになったときに終了とした。

今回のような簡単なネットワークでも、意外とチュートリアルをやるときは集中していないことがわかるし、簡単だからと実際には充分に理解しないままに進んでいることがわかった。
上記の点に気をつけることで、繰り返しやっているうちに集中力が高まってきたし、ただまねてやっているだけではわかりにくかったインストラクターの心理と思考が理解できる。




(その他)
分析のためのフォーマットは、以外と役に立った。
どこに注意を向けて分析すべきかを、考え込むことなくひとつひとつに注意を向けることをうながし、集中して分析できる。


分析のためのフォーマットについては、まだ若干の改善が必要。

特に「働きの分類」については現在、組み立て工場のラインをモデルにした言葉をつかってみたが、もしかしたら 「Modify」「Deform」といったHoudiniのタブ名にしたほうがよいのかもしれない。
(orタブ名については新たな項目とする)

「ノードの機能」については英語のヘルプファイルを理解するために、翻訳したものをそのまま載せている。
これはもしかしたら翻訳した物を咀嚼し、自分自信の考えにしたもので、説明を書いた方が良いかもしれない。

また現時点では項目が多すぎて見づらい感じがある。


練習全体を通していえることは、考える必要がほとんど無いと言うこと。



2011年2月1日火曜日

入門チュートリアルの学習ポイント

(状況)
入門者向けのチュートリアルはHoudiniに限らず
UIの説明、画面操作、ショートカットなど実際のシーンをつくる以外の部分がたくさん入っている。
これらを取り除けば、入門段階で作るシーンは大体シンプルである。

しかしながら、それら操作に関する物は、大量の物が一度に説明されており、チュートリアルを一度やったぐらいで、すべて覚えることはできない。
かといって、必要なときにチュートリアルを開き、必要なところを探すのは時間の無駄になる。

また記憶することに気を取られると、シーンを作っていく手順などはあまり頭に入らなかったりする。


(対策)
シーンの作成部分とGUI操作関連は注意を別に向けたほうがよい。
これらは別々のことである。


ここではGUIに関しての学習を取り上げる。

必要最低限覚えておくべき事は、ビュー操作(カメラ操作、画面の切り替え方法)
これは、 そのチュートリアルをみながら操作し、体に覚えさせるべきである。

これは一番最初から、頻繁に必要となる操作で、通常はショートカット無しでは操作できない部分だからだ。

もし、GUIからの操作だと手間がかかりすぎる物があれば、そちらも覚えておいた方がよいかもしれないが、通常はあまりないと思われる。



大まかなアイコンのレイアウトを体験しておく
 ショートカットを覚えていないとき、頼りになるのはGUIにあるアイコンである。
 GUI上では大体似たような機能はグループ化されているので、その大体のグループ分けと位置を覚えておけば、あとは手探り(ためしにクリックしてみるとか)でも、何とか使うことは出来る。
ただし、GUIレイアウトの図説などが手元にあり、いつでも参照できる状態であれば、必死に記憶しなくてもいつでもそれを参照すればよい。
ただ一度、触っておき身をもって体験しておくことが重要




一番重要なのは以下のこと
1)GUI操作を、メモに残す(シーンの作成メモとは分ける)。
(ソフトメーカーがまとめた、わかりやすい資料を準備してあればそれを使っても良いが、情報過多で必要な事をすぐに見つけることが難しい物も多いので注意。)
2)そのメモは即座に見る事ができるようにする
3)作業している間少しでも疑問が起きたらすぐに参照して明確にする
4)ショートカットなどは一度に少しづつ使い。いったん使い始めたら意識して使い続ける。
意識しなくても使えるようになってきてから次のショートカットに移る。


メモを残す要点は、後にチュートリアルを進めている時、この情報へ即座にアクセスするため
このアクセス時間、(目的の名称やキー操作を即座に見つけられる時間)は非常に大切


ショートカットなどは、覚えると便利だが、入門時点ではさほど重要ではない。
それを覚えることに時間を費やすよりも、他に時間と頭を使った方ができることは増える。
また、メーカー側がまとめたショートカットリストは数が多くて目的の物を見つけるのに時間がかかりすぎることがある。
チュートリアルで教えるのはその中でも優先順位が高い物が多いので、とりあえずそれらを即座に参照して数多く体験して覚えられる方が良い。




メモの中に知りたいことを見つけるために時間がかかれば、それだけやる気や集中力を損なってしまう。
結果的に「そのソフトを覚えるのは難しい」とどこかで感じ、挫折する一つの原因となってしまう。

ビデオチュートリアルを開いて目的の説明がどこに合るのかを探すのは時間がかかりすぎて、今やっている事を忘れてしまったり面倒くさくなって参照すること自体をやめてしまう事もある。
これを防ぐだけで、学習を継続する後押しとなる。

できれば紙のノートか印刷した物を手元に置いておくのがよいだろう。

わずか数秒の違いかも知れないが、心理的効果はある。



「あっあれなんだっけ?」
「こうだよ」
とすぐに教えてくれる人が隣にいるような物である。



「あっあれなんだっけ?」
ビデオファイルを探して、動画再生ソフトを開き、タイムラインをスクラブして目的の説明をしているところを探す。
これは非常にめんどくさい。


-------------
以上はGUI操作に関する部分。
シーン作成(実際にノードを作ったり接続したりする作業)は、また別のアプローチをとったほうがよい。

(注:以上の内容は、私が独自に考えた方法です。万人に効果があるのか、また最高に良い方法なのかはわかりません。)