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

関連記事
Google App Engineのデプロイ失敗
ZBrushで仮面ライダー3号を造る 仮面編 横顔のシルエッ...
ZBrushでアヴァン・ガメラを作ってみる 歯を配置
Google App Engine上のWordPressでA...
ポリ男をリファイン
ZBrushでゴジラ2001を作ってみる 身体のアタリを作る
Raspberry Pi 2を買いました
ZBrushでアヴァン・ガメラを作ってみる 歯茎を別パーツへ...
Google XML Sitemap Generatorプラ...
ZBrush用トポロジー転送プラグイン『ZWrap Plug...
ZBrushで仮面ライダー3号を造る 仮面編 PolyGro...
仮想関数
FreeMoCap Project:オープンソースのマーカー...
SDカードサイズのコンピューター『Intel Edison』
ZBrushでアヴァン・ガメラを作ってみる パーツ分割
SIGGRAPH Asia
uGUI:Unityの新しいGUI作成システム
UnityでOpenCVを使うには?
Unreal Engine 5の情報が公開された!
プログラムによる景観の自動生成
Deep Fluids:流体シミュレーションをディープラーニ...
Unityの各コンポーネント間でのやり取り
中学3年生が制作した短編映像作品『2045』
UnrealCLR:Unreal Engineで.NET C...
Maya LTのQuick Rigを試す
Blender 2.8がついに正式リリース!
Phongの表現力パネェ 材質別のPhong Shader用...
ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調...
UnityでTweenアニメーションを実装できる3種類の無料...
AnacondaとTensorFlowをインストールしてVi...
ZBrushの作業環境を見直す
映画『ゴジラ-1.0』 メイキング情報まとめ
AMIMOTO(PVM版)で作成したインスタンスをAMIMO...
UnityプロジェクトをGitHubで管理する
ZBrushでゴジラ2001を作ってみる 身体のシルエット出...
PGGAN:段階的に解像度を上げて学習を進めるGAN
日立のフルパララックス立体ディスプレイ
Unite 2014の動画
TorchStudio:PyTorchのための統合開発環境と...
オープンソースのネットワーク可視化ソフトウェアプラットフォー...
Super Resolution:OpenCVの超解像処理モ...
openMVGをWindows10 Visual Studi...


コメント