PythonでMayaのShapeノードプラグインを作る

以前、C++でLocatorノードやShaderノードを作ったことはあったけど、C++はビルドの依存関係が結構面倒。もっと手軽に作りたくて、最近はPythonで書く方法を調べてる。
プラグイン開発の大枠はすでに理解してるんで、まあ、できるだろうと。書籍Maya Python 完全リファレンスも出てるし。

とりあえずロケーター作成の記事を見てみたら、やっぱり全体像はC++と同じみたい。
https://dftalk.jp/?p=3175

そんで、MayaのPython APIはバージョン1.0と2.0があることを知った。2.0はMaya 2012から使えるようになったらしい。
大きな違いはOpenMaya周りっぽい。→Maya Python API 2.0 Reference



今回はShapeノードを作ってみたいんだけど、公開されているサンプルコードはAPI 1.0で書かれていたので、それに倣って今回はAPI 1.0で作ることにする。
ShapeノードのPythonサンプルコードは以下2つ。(C++のリファレンスに混じってて見つけにくい)

さて、試しにこれらのサンプルをロードしてみると、一応Shapeノードとしてロードされるが、compute関数が空なので、ジオメトリはビューポート上に表示されるだけでレンダラには渡されない。つまり、Locatorと大差ないってこと。
全てのMayaノードはcompute関数を心臓部としていて、ここでoutputとなる情報を生成して出力のプラグに繋いでやる必要がある。Shaderの場合は、この出力がレンダラに渡す色になるわけ。
ということで、ちゃんとShapeノードとして機能させるには、ジオメトリのoutputアトリビュートを作ってcompute関数で値を生成してやる必要がある。
ここで参考になるのはC++の方のShapeノードのサンプル。apiMeshShape/~で始まるサンプルコードね。

結局C++を読む羽目になってるけど気にしない。
今日はここまで。

ところで、この手の書籍って何でノードよりもコマンドプラグインの解説が充実してるんだろう。

Maya Python 完全リファレンス (Maya Python for Games and Film)

関連記事

ZBrushでアヴァン・ガメラを作ってみる 脚のポーズ調整

iPhone 3GSがますます欲しくなる動画

2012 昨日のクローズアップ現代を見た

映画『ブレードランナー 2049』のVFX

ZBrushのUV MasterでUV展開

3D復元技術の情報リンク集

イタリアの自動車ブランドFiatとゴジラがコラボしたCMのメ...

OANDAのfxTrade API

Unityをレンダラとして活用する

ZBrush 2021.6のMesh from Mask機能...

ZBrushでゴジラ2001を作ってみる 姿勢の変更

Photoshopで作る怪獣特撮チュートリアル

映画『ミュータント・タートルズ』を観てきた

株式会社ヘキサドライブの研究室ページ

マイケル・ベイの動画の感覚

フィーリングに基づくタマムシの質感表現

DUSt3R:3Dコンピュータービジョンの基盤モデル

BlenderのPython環境にPyTorchをインストー...

ZBrushで仮面ライダーBLACK SUNを作る 頭部~バ...

TVML (TV program Making langua...

PyDataTokyo主催のDeep Learning勉強会

openMVG:複数視点画像から3次元形状を復元するライブラ...

クラスの基本

単純に遊びに行くのはだめなのか?

WinSCP

チャットツール用bot開発フレームワーク『Hubot』

OpenCV

ZBrushでアヴァン・ガメラを作ってみる 首回りの修正・脚...

SIGGRAPH Asia

レンダラ制作はOpenGL とか DirectX を使わなく...

Windows10でPyTorchをインストールしてVSCo...

PureRef:リファレンス画像専用ビューア

Physics Forests:機械学習で流体シミュレーショ...

OpenVDB:3Dボリュームデータ処理ライブラリ

色んな三面図があるサイト

ManuelBastioniLAB:人体モデリングできるBl...

WordPressのテーマを自作する

デザインのリファイン再び

ゴジラの造形

hloc:SuperGlueで精度を向上させたSfM・Vis...

OpenAR:OpenCVベースのマーカーARライブラリ

オープンソースの取引プラットフォーム

コメント