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)

関連記事

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

粘土をこねるようなスカルプトモデリング

Raspberry Pi

Maya LTのQuick Rigを試す

WinSCP

ZBrushで仮面ライダー3号を造る 仮面編 Clay Po...

書籍『3次元コンピュータビジョン計算ハンドブック』を購入

OpenMayaRender

JavaによるCGプログラミング入門サイト (日本語)

UnityのGameObjectの向きをScriptで制御す...

GAN (Generative Adversarial Ne...

iOSデバイスと接続して連携するガジェットの開発方法

アニゴジ関連情報

Human Generator:Blenderの人体生成アド...

WordPress on Windows Azure

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

ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調...

2D→3D復元技術で使われる用語まとめ

Blender 2.81でIntel Open Image ...

Math.NET Numerics:Unityで使える数値計...

Polyscope:3Dデータ操作用GUIライブラリ

Blender 4.2以降のWindowsPortable版...

ROMOハッカソンに行ってきた

機械学習に役立つPythonライブラリ一覧

UnrealCV:コンピュータビジョン研究のためのUnrea...

Alice Vision:オープンソースのPhotogram...

ZBrush キャラクター&クリーチャー

顔追跡による擬似3D表示『Dynamic Perspecti...

Deep Fluids:流体シミュレーションをディープラーニ...

Houdiniのライセンスの種類

PyMC:Pythonのベイズ統計ライブラリ

物理ベースレンダリングのためのマテリアル設定チートシート

Unityで強化学習できる『Unity ML-Agents』

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

Python2とPython3

日立のフルパララックス立体ディスプレイ

Amazon Web ServicesでWordPress

グローバルイルミネーションに手を出す前に、やり残したことがあ...

Unreal Engine Tokyo MeetUp!へ行っ...

3DCGのモデルを立体化するサービス

3Dスキャンに基づくプロシージャルフェイシャルアニメーション

Twitter APIのPythonラッパー『python-...

コメント