1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MayaAdvent Calendar 2024

Day 5

はじめてのmGearカスタムステップ

Last updated at Posted at 2024-12-04

挨拶

どうも、GACCHIです。
普段はXやYoutubeなどでリギングをメインに発信させていただいています。

はじめてQiitaに投稿するのですが、今回はmGearのカスタムステップについて、まだ触ったことのない方向けに触れてみようかなと思います。

mGearのカスタムステップって何?

mGearでは、ガイドを配置してビルドをすることでリグを組み立てることができるのですが、カスタムステップとはビルドの前後に任意の処理を追加することができる機能です。

具体的には、ガイドのトップノードの設定画面で、カスタムステップタブからpythonファイルを登録します。

最初はUI右側のNewボタンを押し、ファイルを配置したいディレクトリを指定して、ファイル名を入力することで雛型となるpythonファイルが生成されます。
mgear_customStep_new.gif
このうち、def run(self):の中に書かれた処理が実際に実行されます。

また、UIの上から順番に実行されていくので、順番を間違えないように設定する必要があります。あとから追加して間に挿入したい場合はドラッグ&ドロップで順番を変えます。

何で自動化するの?

リギングで発生する手作業をなるべくスクリプトで自動化することで、ビルドしたら同じものができることを保証でき、ミスがあった場合は原因を検出しやすくできるからです。
(基本的に自分の手作業を信用してないのです)

とはいえ、スクリプトを書き慣れていない方は最初から全部書き起こすのはハードルが高いと思うので、まずは優先度の高い処理から自動化していくのがいいでしょう。

モデルのインポート

ビルド

スキンウェイトのインポート

リグを組むうえでほとんどの場合モデルは必要ですし、モデルがあるならスキンウェイトも必要な場合がほとんどです。

リグを特にカスタムしないならこの二工程でリグが完成するので、ここはマストで自動化したいですね。

モデルのインポート

ファイルのインポートは、maya.cmds の fileコマンド でファイルパスを指定し実行することで可能となります。

import mgear.shifter.custom_step as cstp

import maya.cmds as cmds

class CustomShifterStep(cstp.customShifterMainStep):

    def setup(self):
        
        self.name = "modelImport"

    def run(self):

        cmds.file(
                "モデルのファイルパス",
                i = True,            
                type = "mayaAscii",
                options = "v=0;",
                mergeNamespacesOnClash = False
            )
        
        return

Mayaではパスの区切り文字が、"\" ではなく "/" でないと読み取ってくれないので注意してください。
また、mbファイルをインポートする場合は type = "mayaAscii"type = "mayaBinary" に書き換えてください。

mayaコマンドはほとんどが公式のドキュメントで詳細が確認できます。
options = "v=0;",mergeNamespacesOnClash = False の意味が気になる方は覗いてみてください。
https://help.autodesk.com/cloudhelp/2024/JPN/Maya-Tech-Docs/CommandsPython/file.html

スキンウェイトのインポート

スキンのインポートは色々な方法があるのですが、今回はmGearのスキンウェイトメニューを使用します。

まずは手作業でビルドし、モデルにスキンバインドしてウェイト調整を行います。作業が完了したら、モデルを選択して、mGear > Skin and Weights > Export Skin でウェイトデータを書き出します。mgear_exportSkin.gif

次に、ポストカスタムステップを新規に作成して、以下のコマンドを記述することでインポートすることが可能です。

import mgear.shifter.custom_step as cstp

import mgear.core.skin as skin

class CustomShifterStep(cstp.customShifterMainStep):

    def setup(self):
        
        self.name = "skinImport"

    def run(self):

        skin.importSkin(
                "ウェイトデータのファイルパス"
            )
        
        return

余談ですが、これらのコマンドは、mGearのインストール先のスクリプトフォルダから直接確認できます。
mgear/core/skin.pydef importSkin(filePath=None, *args): が該当関数です。
お気づきの方もいるかもしれませんが、上の記述のうち import mgear.core.skinskin.py のパスを示しており、その中から importSkin関数 を呼び出している、という形になっています。
同じ方法で、mgearの機能を拝借することができるので、興味のある方はmgearフォルダを覗いてみてもいいかもしれませんね。
( 誤って中身を書き換えてしまわないようにだけ注意してください )

カスタムステップを追加したガイドをビルドする

カスタムステップを追加したら、一度ガイド以外のオブジェクトを全て削除し、ガイドをビルドしてみましょう。mgear_buildTest.gif

エラーが発生した場合は、記述が間違っている可能性があるので、正しく記述されているか確認してみてください。
問題なくビルド出来たら、ガイドを選択し、mGear > Shifter > Export Guide Templete でガイドを書き出します。mgear_buildFile.gif
新しいシーンを開いて、mGear > Shifter > Build From Guide Templete から書き出したガイドを開くことで、リグがビルドされます。
これにより、クリーンで再現可能なガイドデータが出来上がりました!

まとめ

簡単ではありますが、カスタムステップの導入を紹介してみました。

使い方に慣れてきたら、リグのカスタムも自動化していってみるのをおすすめします。
モデルをリグにペアレントしたり、アトリビュートの初期値を設定したり、補助骨を追加したり...

maya python の書き方はわかりやすい記事がたくさんありますし、今だとAIに要件を指示してスクリプト化してもらう方法などもあるので、興味のある方は是非実践してみてください。

以上となります!
より多くの方にmGearを活用していただき、リギングを便利にするきっかけになれば幸いです!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?