以前、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++を読む羽目になってるけど気にしない。
今日はここまで。
ところで、この手の書籍って何でノードよりもコマンドプラグインの解説が充実してるんだろう。

関連記事
AMIMOTO(PVM版)で作成したインスタンスをAMIMO...
Google App Engine上のWordPressでA...
オープンソースの顔の動作解析ツールキット『OpenFace』
Javaで作られたオープンソースの3DCGレンダラ『Sunf...
TeleSculptor:空撮動画からPhotogramme...
Deep Fluids:流体シミュレーションをディープラーニ...
OpenSfM:PythonのStructure from ...
UnityプロジェクトをGitHubで管理する
白組による『シン・ゴジラ』CGメイキング映像が公開された!
ニューラルネットワークで画像分類
サンプルコードにも間違いはある?
OpenGVのライブラリ構成
ZBrushで手首のモデリングをリファイン
ZBrushで仮面ライダー3号を造る 仮面編 PolyGro...
自前Shaderの件 解決しました
ZBrushで人型クリーチャー
デザインのリファイン再び
iPhone欲しいなぁ
ZBrushトレーニング
ZBrushでアマビエを作る その2
写真から3Dメッシュの生成・編集ができる無料ツール『Auto...
Unity ARKitプラグインサンプルのドキュメントを読む
書籍『メイキング・オブ・ピクサー 創造力をつくった人々』を読...
TVML (TV program Making langua...
続・ディープラーニングの資料
C++ 標準テンプレートライブラリ (STL)
ZBrushでアヴァン・ガメラを作ってみる 下半身のバランス...
PyTorch3D:3Dコンピュータービジョンライブラリ
PythonでBlenderのAdd-on開発
ラクガキの立体化 分割ラインの変更・バランス調整
WordPressプラグインによるサイトマップの自動生成
ZScript
WordPress on Windows Azure
Alice Vision:オープンソースのPhotogram...
Kornia:微分可能なコンピュータービジョンライブラリ
テスト
Google App Engine上のWordPressでF...
HTML5・WebGLベースのグラフィックスエンジン『Goo...
SVM (Support Vector Machine)
After Effects全エフェクトの解説(6.5)
Unityで学ぶC#
『ゴジラ キング・オブ・モンスターズ』のVFXブレイクダウン


コメント