【Maya/Python】OpenMaya API2.0 の MCommandMessage のコールバックタイミング解説

この記事は Maya Advent Calendar 2025 シリーズ2 の25日目の記事です。

 

自分の中での毎年のルーティンになりつつある、API2.0 の Message 系クラスの解説がなんとか間に合いました。

今回は OpenMaya API 2.0 の maya.api.OpenMaya.MCommandMessage あるコールバックのタイミングについてまとめていこうと思います。

 

この記事は Maya 2024.2.4 で検証したものです。

 

 ちなみに過去にコールバック系で

【Maya/Python】OpenMaya API2.0 の MAnimMessage のコールバックタイミング解説

【Maya/Python】OpenMaya API2.0 の MSceneMessage クラス内のコールバックタイミング解説

【Maya/Python】OpenMaya API2.0 の Message 系クラス内のコールバックタイミング解説 1

という記事も書いておりますのでご興味あればご覧下さい。

続きを読む 0 コメント

【Maya/Python】QLabel を使ってビューポート上に文字を描画する

この記事は Maya Advent Calendar 2025 シリーズ1 の16日目の記事です。

 

前日のシリーズ1は @inouwe さんの「MayaにMetaHumanを持ってくる【UE5.7】」で、シリーズ2は @9boz(kubo) さんの 「Mayaのカメラを何とかしたい6 ~大判解像度の算出~」です。

 

今回は以前自分が書いた「【Maya/Python】選択したオブジェクト名をディスプレイ上に表示するプラグインを作ってみた」や「【Maya】数値アトリビュートの注釈をビューポート上に表示する」に続いて、ビューポート上に文字を表示する際に PySide の QLabel を使って描画してみる方法についてです。

続きを読む 0 コメント

【Maya/Python】ポリゴンシェルごとの頂点インデックスと中心座標を取得する

この記事は Maya Advent Calendar 2024 シリーズ2 の25日目の記事です。

 

前日は @UnitBus さんの「ロングネームで保存」です。

 

少し地味な内容ですが、今回は同一オブジェクト内のポリゴンシェルごとの頂点番号とシェルごとのバウンディングボックスの中心を取得してみるという記事です。

 

例えば下記の画像のようにオブジェクトを結合してある状態で、それぞれのシェルの中心座標が欲しい場合に使えるかなと思います。

続きを読む 0 コメント

【Maya/Python】OpenMaya API2.0 の MAnimMessage のコールバックタイミング解説

この記事は Maya Advent Calendar 2024 シリーズ1 の14日目の記事です。

 

前日は @9boz さんの「Mayaで反対側のfaceを取得したい1」、

翌日は @9boz さんの「UVchoserのはなし」です。

 

今回は OpenMaya API 2.0 の maya.api.OpenMayaAnim のネームスペースにある MAnimMessage クラスのコールバックのタイミングについてまとめていこうと思います。

 

この記事は Maya 2023.3 で検証したものです。

最初に書いておきますが、色々試した結果 1つだけまだ使い所が分かっていない「flushAnimKeyframeEditedCallbacks」というコールバックがあります。

分かり次第追記しますが、もし使い方をご存知の方がいらっしゃれば教えて下さい。

 

 ちなみに過去にコールバック系で

【Maya/Python】OpenMaya API2.0 の MSceneMessage クラス内のコールバックタイミング解説

【Maya/Python】OpenMaya API2.0 の Message 系クラス内のコールバックタイミング解説 1

という記事も書いておりますのでご興味あればご覧下さい。

続きを読む 0 コメント

【Maya】数値アトリビュートの注釈をビューポート上に表示する

特定の数値( float など)のアトリビュートの注釈をビューポート上に表示したくなり、

通常の注釈 (annotation)ノードでやろうと思ったんですが、

数値のアトリビュートを string のアトリビュートには繋がせてくれません…

 

検索しても、floatToString するようなノードプラグインでやっている方もいました。

きちんと 文字列 + 数値 を注釈として表示するにはその方法しかないですが、

わざわざプラグイン化してしまうと使用範囲によってはめんどうになったりするので、

どうにか標準機能の中で表示できるようにできないかを検証しました。

続きを読む 0 コメント

【Maya/Python】OpenMaya API2.0 の Message 系クラス内のコールバックタイミング解説 1

この記事は Maya Advent Calendar 2023 シリーズ2 の14日目の記事です。(書いたのは 12/24 ですが)

 

シリーズ1の前日は @9boz さんの「mayaのプレイブラストをffmpegでmp4にしてみる2」、

当日は @cr_coyote さんの「スクリプトでAnimCurveをフィルタリング!」、

翌日は @9boz さんの「Mayaで ファイルを開かずにreferenceしてるファイルを知りたい」です。

シリーズ2の翌日は @9boz さんの「mayaでボクセルっぽいものを生成」です。

 

今回は OpenMaya API 2.0 の Message 系クラスにある様々なコールバックのタイミングについてまとめていこうと思います。

※ Message 系のコールバック = maya.cmds にある scriptJob と似たようなもの

この記事で紹介している Message は

・MCameraMessage

・MObjectSetMessage

・MDGMessage

・MModelMessage

で、Maya 2022.5 で検証したものです。

 

Message 系クラスは他にもたくさんあるので、徐々に紹介できたらいいなと思い、

記事のタイトルの末尾に 1 とつけています。

近いうちに、とは思いつつ来年の Advent Calendar で書いている未来が見えますが…

 

ちなみに2020年に「【Maya/Python】OpenMaya API2.0 の MSceneMessage クラス内のコールバックタイミング解説」という記事も書いておりますのでご興味あればご覧下さい。

※この中で MSceneMessage の addCheck~ 系が API2.0 だとエラーになると書いていましたが、登録する関数側の書き方の問題( return True/False を書いてなかったのがエラーの原因 )だという事に少し前に気付いたので追記しています。

続きを読む 0 コメント

【Maya/Python】OpenMaya PythonAPI2.0 逆引きメモ パート2-2

これは Maya Advent Calendar 2022 の最終日25日目の記事です。

 

前日は tm8r さんの「Maya2023でハマったこと」です。

 

今回は、Maya Advent Calender 2019 で書いた OpenMaya  PythonAPI 2.0 逆引きメモ のパート 2-2 を書いていきます。

 

パート2-1はこちら

続きを読む 0 コメント

【Maya/Python】OpenMaya PythonAPI2.0 逆引きメモ パート2-1

これは Maya Advent Calendar 2022 の17日目の記事です。

(25日目の記事だけ書こうと思ったら予想より長くなるものがあり、17日分が空いていたので急遽記事を分割しました。)

 

前日は tm8r さんの「【Maya】相互リファレンス覚書」で、

翌日は 9boz さんの「ワイヤーフレームが黒くなる」です。

 

今回は、Maya Advent Calender 2019 で書いた OpenMaya  PythonAPI 2.0 逆引きメモ のパート2-1 を書いていきます。

 

パート2-2はこちら

続きを読む 0 コメント

【Maya/Python】modelPanelの上部にあるボタンをスクリプトから切り替えてみよう

これは Maya Advent Calendar 2020 の23日目の記事です。

 

明日は ti_ni_ta さんです。

 

 

今回は少し前に modelPanel の上部にあるボタンの1つをスクリプトから切り替えたいと思った時に、

1つ調べたら他のボタンもまとめて方法が分かったので備忘録的に書いておきます。

 

 (処理している mel が分かれば、mel バージョンはそこに全部書いてあるレベルの記事です)

 

続きを読む 0 コメント

【Maya/Python】MayaからUVアニメーションをUnityへエクスポートする

昨日に続き Maya Advent Calendar 2020 の20日目の記事です。

明日は tanakou829 さんです。

 

今回はタイトルにあるように Maya から Unity へUVアニメーションをエクスポートするための記事です。

 

実は2016年にも一度「【Maya/Unity】MayaからUnityにUVアニメやカラーアニメを持っていくスクリプト」という記事を書いていました。

ただ今見返すと力技過ぎてスマートではないので、改めて書いてみようと思いました。

これがきっかけの1つ目です。

 

2つ目としてはセガさんの2年前に「MayaからUnityへのUVアニメーションエクスポート 」という記事がありました。
こちらは C++ を使われているのでハードル高そうに感じる方もいらっしゃるだろうと思うので、

Python を使ったサンプルを作ってみようかなと。

 

※セガさんの記事では FBX SDK を使われていますが、こちらの記事では使っていません。

 Python版の FBX SDK もあるようなので、そちらを使えば MSceneMessage.addCheckFileCallback() から

 渡される MFileObject から書き出し後のFBXのパスを取得する事で FBX 自体を直接編集できると思います。

 しかし、FBX SDK を触ったことがなく今回時間がなかったため、(余裕ができたら試します)

 書き出し後に追加したアトリビュートを削除したり、新しいアニメーションノードを作らず

 place2dTexture に接続されているものを流用してシーンをなるべく汚さないオプションを付けています。

 

解説しているファイルはこちらのリポジトリにあります。

試される場合は kkUvAnimationExport.py を Maya の Plugin のパスが

通っている所(よく分からない場合は C:\Program Files\Autodesk\Mayaバージョン\bin\plug-ins )に、

UvAnimPostprocess.cs を Unity のプロジェクトのどこかに Editor フォルダを作ってその中に、

それぞれコピーして下さい。


※使用にされた際に不具合が出ても責任は取れませんので自己責任でお試し下さい

 

続きを読む 0 コメント