以前、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/~で始まるサンプルコードね。
- apiMeshShape/apiMeshShape.h
- apiMeshShape/apiMeshShape.cpp
- apiMeshShape/apiMeshShapeUI.h
- apiMeshShape/apiMeshShapeUI.cpp
- apiMeshShape/apiMeshData.h
- apiMeshShape/apiMeshData.cpp
- apiMeshShape/apiMeshGeom.h
- apiMeshShape/apiMeshGeom.cpp
- apiMeshShape/api_macros.h
- apiMeshShape/apiMeshCreator.h
- apiMeshShape/apiMeshCreator.cpp
- apiMeshShape/apiMeshGeometryOverride.h
- apiMeshShape/apiMeshGeometryOverride.cpp
- apiMeshShape/apiMeshIterator.h
- apiMeshShape/apiMeshIterator.cpp
- apiMeshShape/apiMeshSubSceneOverride.h
- apiMeshShape/apiMeshSubSceneOverride.cpp
結局C++を読む羽目になってるけど気にしない。
今日はここまで。
ところで、この手の書籍って何でノードよりもコマンドプラグインの解説が充実してるんだろう。

関連記事
イタリアの自動車ブランドFiatとゴジラがコラボしたCMのメ...
ZBrushで仮面ライダー3号を造る 仮面編 PolyGro...
今年もSSII
ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調...
Unreal Engine 5の情報が公開された!
このブログのデザインに飽きてきた
粘土をこねるようなスカルプトモデリング
BlenderでPhotogrammetryできるアドオン
ZBrushでアヴァン・ガメラを作ってみる 下半身のバランス...
UnityのGlobal Illumination
ZBrushのお勉強
OpenGVの用語
ZBrushで仮面ライダー3号を造る 仮面編 Clay Po...
OpenMayaのPhongShaderクラス
UnityでPoint Cloudを表示する方法
動的なメモリの扱い
Faceshiftで表情をキャプチャしてBlender上でM...
アニゴジ関連情報
ZBrushと液晶ペンタブレットでドラゴンをモデリングするチ...
UnityプロジェクトをGitHubで管理する
ZBrushでゴジラ2001を作ってみる 身体のアタリを作る
MFnMeshクラスのsplit関数
CGWORLD CHANNEL 第21回ニコ生配信は『シン・...
ZBrushで仮面ライダー3号を造る 仮面編 失敗のリカバー
書籍『The Art of Mystical Beasts』...
Iterator
bpy-renderer:レンダリング用Pythonパッケー...
OpenCVのfindEssentialMat関数を使ったサ...
Unityで360度ステレオVR動画を作る
ZBrushのUV MasterでUV展開
自前のShaderがおかしい件
Blender 4.2以降のWindowsPortable版...
ZBrushでアヴァン・ガメラを作ってみる 脚のポーズ調整
AMIMOTO(PVM版)で作成したインスタンスをAMIMO...
After Effects全エフェクトの解説(6.5)
ZBrushでカスタムUIを設定する
Unite 2014の動画
Seleniumを使ったFXや株の自動取引
『スター・ウォーズ フォースの覚醒』のVFXブレイクダウン ...
WordPressのテーマを自作する
OpenCV 3.1のsfmモジュールのビルド再び
PyMC:Pythonのベイズ統計ライブラリ


コメント