[Maya] リグをスクリプト化する話 - まずは手で作る

リグをスクリプトで自動化する場合も、基本一度は手で作ります。
というか手で作れないものはスクリプトで自動化することもまず出来ません。

今回は、スクリプト化する前に手で構築する時の注意点やら押さえるポイントをまとめてみようかと思います。

基本構造

前回のPostで『リグはパーツ単位、できるだけ依存関係は最小限に』と書きましたが、簡単なシーンを参考に基本構造の作り方。

基本構造

HumanIKのSkelton Generator…で作ったJointのSpineに対して簡単なFKコントローラーを作った時の、ハイパーグラフ。
青枠がコントローラーをつけたSpineのジョイント。赤枠がコントローラーです。
コントローラーのツリーはパーツ単位でまとめます。
まとめたグループは、自分がコントローラーをつけたいノードの親のジョイントに対してparentConstraintします。
※ 図ではコントローラーをつけたいジョイントに、になってますが つけたいジョイントの親に が正しいです(´Д`)
こうすると、背骨の階層だけ完全に切り分けて作ることが出来ます。

親子化で全階層を作っても良いのですが、そうすると一部だけ変えたいとか、あとから作り替えたい時に、
階層構造を組み直さなければいけなかったりするので、私の場合、1つ上のジョイントに親子化 という構造をベースにしています。

これが基本的な構造になります。

スケールに対応場合、各パーツをまとめる構造が必要な場合 等、状況に応じて基本構造は変化するので
実際にはもう少し複雑になったりしますが…とりあえずその辺は割愛。
大切なのは、パーツごとにつけたり外したりが出来るようにすることです。

手で作るときに気をつけること

手でテストで作る際は どういう手順で、どんな処理をするのか を、よく考えながら作ります。
何度もやる処理は関数化したほうが良いですし、for文で繰り返し処理をする場所も出てきます。
関数化の例を挙げるなら、
Curveに沿ったジョイントを作成する とか、指定のオブジェクトと同じ位置にあるNullを作成する
とか。
「あぁこれ何度もやるから、コマンドにしておこう」ということを、テストで作っている時にメモっておいたりします。
繰り返し処理では、
背骨のFKコントローラーを背骨ジョイントの数分作成する
等の動作でよくあります。

作りながら紙や、GoogleDrive・Evernoteのようなメモ帳にとにかく羅列していきます。
どういう手順で何をしたのか。
どんな機能を使ったのか。
階層はどうなっているのか。
分からないこと。
等、とにかくどんな些細なことでも書きます。

一通りくみ終わった後に、実際にコマンドに落とし込む際コマンド内でどういう順番で処理をするか、なにを関数化など決めます。

ちなみに私の場合、手順などを整理するのに lucidChartというサービスを利用しています(あとで紹介)

こんな感じで、基本 手で作るところは普通に作る場合とあまり違いはありません。
ほしい機能に対して、アイディアを出して簡単なテストを繰り返す→いけそうだったら、手で完成形まで構造を組み立てる→手順をしっかりメモする
を、完成まで繰り返します。

そんなかんじで、手でできたら実際にコマンドにしていきます。
今回あんまり説明になってないですね(゚∀゚)

次回、フローチャート(もどき)で処理を整理!!

コメントを残す

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


*