[Maya] リグをスクリプト化する話 – 手順を整理する

今回は、手構築したリグを実際にスクリプト化していく手順など書いてみます。
<! –More–>

簡単な処理なら1コマンドに押し込んでごり押ししても良いのですが、複雑になってくるといろいろ訳がわからなくなります。
あと、関数の作り方次第ではいろいろとやっかいな事になるので
実際にコーディングする前に、しっかりと構造を分解して要素分けをします。

なんちゃってフローチャートで処理を整理

フローチャートやらを作れる作図ソフト・サービスはいろいろありますが、私は今のところ lucidchart という作図ツールを使ってます。
無料だとチャートのオブジェクトが60個までしか作れない・日本語入力時に微妙にラグがある のがネックですが、フローチャート作成では一番これが良かったです。
これ以外だと、GoogleDriveの作図ツールなどでも同じようなことが出来ます。

image
lucidChartサンプル

以前作った、スプラインIKのコントローラーを作る で、試しにざっくりとチャートを作ってみました。
使うのは、四角と菱形ぐらいです。
Forを書く台形がなかったりするので、その辺一部代用してますが、処理の内容が分かれば良いんじゃね?と思うので、気にしないでください└(┐Lε:)┘

書く手順ですが、

  1. 手で作ってる時に、手順をフローチャートの[  ]に書いていきます。
  2. 処理手順が多くて、それ1つだけで1コマンドになりそうなものは関数化する
  3. 一通りできたら、チャートのオブジェクトを並べ替えたりして、流れが自然になるようにします。

こつは、1つの動作(Maya上の1オペレーション)を1つの箱にすること。
IKを作る、リビルドする、クラスターをつくる、A→Bでコンストレインする、等。
Mayaの場合、1つの動作がだいたい1コマンドになっているので小分けしておくとコマンドと一対一になるのでわかりやすいです。

一通りできたら、最初から順番に見ていって 成り立たないところがないか(クラスターを作る前にコンストレインしてる、とか)、手順が明確になるまで確認します。

手順の整理で一番重要なのは、文章にする事だと思っています。
意外と、手でなんとなーくやっていると、どういう手順で どんな機能を使って作っているのかわからなくなるものです。
要素を細かく分けて文字にすると、理解できていない部分に関しては文字に出来ません。
そうなったら、もう一度Mayaに戻り 手順を整理して文字にする…その繰り返しをして、わからないところ・不明瞭なところをなくしていきます。
面倒でも、分かるまでとにかく文字に書き起こしましょう。

関数化

どこまで関数として処理をまとめるのか は、今でも結構悩むところです。
が、おおざっぱには

  1. 1つのパーツにつき1関数
  2. よく使いそうな処理は関数化

の2つです。
たとえ、全身のリグを作る場合でも、パーツ単位で分けてコマンドを作っておいて

[cpp]
global proc createHumanRig(string $charName){
createBaseRig();
createHipRig();
creatSpineRig();
for($LR in {"L","R"}){

}
}
[/cpp]

こんな感じで、全身のリグを張るコマンドを作ります。
こうしておくと、部分的にリグを直したいとか差し替えたいとかになっても簡単です。

まとめ

関数の分け方とか、全体の階層構造とか、それだけでBlog何回分のネタになるんだろう(;´Д`)
という物量があるので、ものすごいざっくりとした説明しかしてませんが、私はだいたいはこんな感じで作ってます。
スクリプト化する手順としてせつめいしましたが、これからリグを勉強したい場合などに
人が作ったリグを見ながら手順を追っていくのにも使えるので、是非とも試してみてください。

コメントを残す

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


*