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でアヴァン・ガメラを作ってみる 下半身のバランス調整

OpenGVの用語

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

Unite 2014の動画

ZBrushでアヴァン・ガメラを作ってみる 甲羅の修正・脚の作り込み

Vancouver Film Schoolのデモリール

adskShaderSDK

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

Web経由でRaspberry PiのGPIOを操作したい

2012のメイキングまとめ(途中)

clearcoat Shader

Maya には3 種類のシェーダSDKがある?

Mitsuba 3:オープンソースの研究向けレンダラ

『ゴジラ キング・オブ・モンスターズ』のVFXブレイクダウン

WebGL開発に関する情報が充実してきている

フリーのUV展開ツール Roadkill UV Tool

『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン まとめ

マルコフ連鎖モンテカルロ法

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

3分の動画でプログラミングを学習できるサイト『ドットインストール』

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

ZBrushでゴジラ2001を作ってみる 側頭部のボリュームを探る

OpenCV 3.1のsfmモジュールのビルド再び

Raspberry Pi 2のGPIOピン配置

HD画質の無駄遣い

iOSデバイスのためのフィジカル・コンピューティングツールキット『konashi(こなし)』

OpenCVで動画の手ぶれ補正

機械学習手法『Random Forest』

映画『ジュラシック・ワールド/炎の王国』のVFXブレイクダウン まとめ

WinSCP

手を動かしながら学ぶデータマイニング

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

Subsurface scatteringの動画

レンダラ制作はOpenGL とか DirectX を使わなくてもできるんだぜ

HerokuでMEAN stack

OANDAのfxTrade API

ZBrushで手首のモデリングをリファイン

ZBrushで仮面ライダー3号を造る 仮面編 PolyGroupを分割する

映画『シン・仮面ライダー』 メイキング情報まとめ

OpenFace:Deep Neural Networkによる顔の個人識別フレームワーク

ヘッドマウントディスプレイとビジュアリゼーションの未来

Google Chromecast

コメント