Mayaでコントローラーの作り方

当ページのリンクには広告が含まれています。
Mayaでリグ用のコントローラーの作り方
スポンサーリンク

長年(20年程)Mayaを使ってきて疑問に思うことがあります。

それは「なぜこんな簡単な(技術的に難しいわけでもない)ことが標準機能として搭載されていないのか?」ということです。

その筆頭格といえるのが今回紹介するリグのコントローラーを作成する機能です。

このことこそがMayaでRiggingの敷居を高くしている最たるものです。

例えばsoftimage(XSI)ではNull(MayaでいうLocatorのようなもの)のシェイプを立方体や球、矢印などのいくつかの形状に変更することが出来ました。「いずれMayaにも‥」と期待していた時期もありましたが、もう諦めました(笑)。

しかし、ネットでコントローラーを作成するスクリプトを(いくつも)見つけることが出来るので問題ないと言えば問題ありません。

おそらくMaya側の言い分としては「Empty Groupというtransform nodeだけのものを用意したので、そこにユーザーが独自にshape nodeを作って、それをコントローラーとして使ってね。」ということなのでしょう。今となってはその言い分も理解できなくはないです。が、しかし、面倒で使い勝手が悪いことにはかわりありません。

そこでこの記事では、コントローラーを作るスクリプトを紹介するだけではなく、ユーザーが独自にコントローラーを作成する方法を解説します。自分でコントローラーを作成できるようになることは、Mayaをより理解することにもなります。また、自分でコントローラーを作成するツールを作ることもできるようになるからです。

スポンサーリンク
目次

コントローラーを作ってみよう

リグのコントローラーにはNURBS Curveを使います。Create > NURBS Primitive > Circle で作成される一本のカーブで作成されたものは問題なくそのままコントローラーとして使用できます。

しかし、 Create > NURBS Primitive > Square で作成されたものは4本のカーブをグループにまとめたものが作成されるのでこのままでは利用できません(カーブを選択しても1辺しか選択されません)。そこで1辺を選択してもひとつのNURBS Curveとして認識されるようにしなければなりません。

つまり、ひとつのTransform nodeに複数のShape nodeをまとめなければなりません。

1.「Outliner」で「Shape node」を表示できるようにする

Shapesをチェックして、シェイプを表示できるようにする。

OutlinerのDisplayメニューでShapeにチェックを入れます。これでTransform nodeとShape nodeが表示されるようになります。

2.コントローラーのもとになるカーブを作る

今回はnurbs sphereを作成(Create > NURBS Primitive > Sphere)してそれをコントローラーにします。

出来たnuurbs sphereを選択してコントローラーになるNURBSカーブを複製します

(menuをModelingに切り替えて) Curves > Duplicate Surface Curves 。

そしてnurbs sphereは必要なくなったので消します。

3.カーブをまとめるためのEmpty Groupを用意する

Create > EmptyGroupでnull(空グループ)を作成します。

このnullは将来、コントローラーの「Transform node」になります。

4.melコマンドでnullにカーブをまとめて「コントローラー」にする

念の為すべてのカーブのTransform nodeにModify > Freeze Transformationをかけておきます。

シェイプノードだけを選択して、最後にnullを選択する。

上の画像のようにコントローラーにしたいカーブのシェイプノードだけを選択し、最後にまとめるためのnull(トランスフォームノード)を選択します。

以下のmelコマンドを左下のMELという欄に入力して実行します。-rはrelative、-sはshapeです。詳しくは公式のヘルプを御覧ください。

parent -r -s

mel版よりも記述する文字数は多いですが、「今更melは‥」という方はPython(maya.cmds)版をご利用ください。 コマンド入力欄がPythonになっていることを確認して以下のよう入力してください。

maya.cmds.parent(r=True, s=True)
残されたカーブ1本1本のトランスフォームノードはゴミになったので、消す。シェイプノードが最後に選択されたトランスフォームノードのもとにまとめられる。

上の画像のように残ったゴミは消します。

たくさんのシェイプノードが1つにまとめられた。

ひとつのTransform nodeに複数のカーブのShape nodeがあるのがわかります。

これで完成です。

これでどのようなコントローラーも作成できるようになりました。テキストを使ったものなどいろいろ作ってみてください。

補足 : Hypergraphを使ったほうが楽

ここまで書いておいて言うのもあれですが、シェイプノードだけを選択する場合はHypergraphのほうが楽でした。Hypergraph HierarchyのOption > DisplayからShape Nodesにチェックを入れてください。

すると以下のように簡単にシェイプノードを選択することが出来ます。

HypergraphのOption > Orientation から「Horizontal」「Vertical」「Schematic」の3つから選ぶことが出来ます。

「Horizontal」がデフォルトです。

どの表示方法でも「Outliner」よりは選択しやすいことがわかります。

Horizontal

HypergraphのLayoutを「Horizontal」にした場合。

Vertical

HypergraphのLayoutを「Vertical」にした場合。


Schematic

HypergraphのLayoutを「Schematic」にした場合。

ボックスコントローラーの作り方(スマートな方法)

上に書いたShape nodeをまとめる方法でどのようなコントローラーも作成可能ですが、よく使うボックス型のコントローラーを作成する場合にはもう少しスマート(というほどのことではありませんが)な方法があります。

EPカーブを頂点にスナップさせてカーブを作成する。

上のShape nodeをまとめる方法(Create > NURBS Primitives > Cube で作成したnurbsCubeのShapeをまとめた場合)だと上の画像で赤字で囲ったようにShapeの数が多すぎになってしまいます。見た目としてとても美しくないものが出来上がってしまいました。

しかし、polygon cubeを作成してその頂点にEPカーブ(1 Linear)をcubeの頂点にスナップさせて一筆書き(と言っても同じところを通らなければできません)でカーブを作成すれば当然のことながらShapeは1つで済みます。

このようにcubeを一筆書きをすると同じところを通らなければなりません(同じところを通っても良い一筆書きなので、厳密に言えば一筆書きではありません)。もしかしたら、線(nurbsカーブ)が太くなったり、2本になったりしないかと心配する人がいるかもしれませんが、その心配はありません。

実はShape nodeをまとめるスクリプトがあります

非常にタイムリーなことに、そのような面倒なことをしなくても3D人さんのブログに無料スクリプトが紹介されていました。これを使えば万事解決ですが、Transform nodeとShape nodeなど、Mayaを使う上で重要な仕組みを理解できるので一度は自分自身で作成することをおすすめします。

コントローラーを作成するスクリプトの紹介

実作業ではコントローラーをいちいち作っていては手間がかかってしまうので、コントローラーを作成するスクリプトを利用することをおすすめします。

mocoさんが「rig101 Wire Controllers(MEL SCRIPTSの「rig101 Wire Controllers」をダウンロードしてください。)」を紹介されています。

追記(2022/06/17)

残念ながら上のサイトは閉鎖されてしまいました。

MoxRigController

かわりに「MOX-MOTION」さんの「MoxRigController」をご紹介させていただきます。

もともとは以前紹介した「rig101 Wire Controllers」がもとになっているようです。

コントローラーを作成するスクリプトは他にもいろいろあるので探してみると面白いかもしれません。

LMrigger

LMriggerはFKのコントロールリグを作成するツール(スクリプト)です。

また、それだけでなく、joint orientを整える機能もあります。

とても有用なツール(スクリプト)なので要チェックです。

ただし、FK以外のコントロールリグを作ることはできないので注意が必要です

joint orientがよくわからない人はこちらの記事を御覧ください。

「Amaterasu」について(2020/06/21追記)

「Amaterasu」は素晴らしいツールですが、2020年6月現在Maya2020までのバージョンまでしかないため今までの記載を一部修正しました。

MayaがPython3へ移行したために今までのツールが使えない場面が増えています。そう考えると時代遅れだと思われていたMELでのツール作成というものは互換性を気にしなくてもよいのだと改めて再認識させられました。

「海外のサイトだと英語が‥」という方も多いかと思います。「やはり国産のもののほうが安心」という方はAmaterasuというMayaのプラグインがおすすめです

Amaterasuは以前はBorndigitalさんでサブスクリプション契約をしていないと使用できなかったのですが、今は無料で公開されています(すばらしい!!)

Amaterasuはコントローラーを作成する機能以外にも無料とは思えないほどの機能が盛りだくさんです。使い方ももちろん日本語で書かれているので安心です

Amaterasuのような高機能プラグインの紹介の後に書くのもあれですが、スクリプトの勉強をしている人はコントローラーを作るツールを作ると勉強になると思います。Windowの作り方や、ボタンを押したときにコントローラーが作成されるようにするなど、勉強になる要素ばかりです。向学心のある方はぜひ挑戦してみてください。

まとめ

Mayaにはリグのコントローラーを作成する機能が標準ではありません。

コントローラーを作成するツールやスクリプトはいくつもありますが、まずは自分で作ってみることが重要です(Mayaを理解する上で)。そのうえで、スクリプトやツールを利用するなり、自分でコントローラー作成用のツールを作るなりして自分にとってより良い方法を探してみてください。

今回の記事が気に入っていただけた場合、ぜひとも他の記事もチェックしてみてください。Mayaのリギングに関する記事をまとめたページです。

スポンサーリンク

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

目次