[OpenMaya] ロケーターノードを作成する

DF TALKのLocatorノードを作成する を元に、いろいろと機能を追加したものを作ってみました。
全コードはだしませんが、追加したものなどメモ。

透明度を追加する

ロケーターの透明度を使用する場合は、 glEnable と glBlendFunc を設定する。

omRenはmaya.OpenMayaRender
このコマンドや引数は、基本OpenGLと共通のようです。
違いは MGL_BLEND や MGL_SRC_ALPHA のように頭にMが付くこと。コレがないとエラーになります。

透明度は、 glVertex3f() の前に

を挟む。
引数の順番は、RGBA
これがカーブの色になります。

選択したら色を変える

現在のロケーターの状態は、引数の status で取得できます。
このstatus は、 M3dViewのDisplayStatusのEnum
※ Enum型は、Pythonで言うところのDic型 {“kActive”:0,”kLive”:1}と同等

M3dView DisplayStatusの主な値
kLead            選択した状態 普通のオブジェクトでいうと、エメラルドグリーンのような色になったときの状態がこれです。
kActive         複数選択したときの現在選択したもの以外の色。通常だと白くなっている状態です。
kDormant   なにも選択していない状態
それ以外のものは こちら を参考


上の設定だと、通常のオブジェクトと同じように、選択すると色が変わります。

文字の色を変更する

色を変えるときは、drawTextの前に setDrawColor()を書きます。
こうすることで、文字の色が 引数で指定した色になります。

形状パターンを作成する

パターンは、↑のように 多重配列にして準備します。
この多重配列は、Maya上でCurveで形状を作成しておいて、下のコマンドを実行

多重配列がScriptEditorにプリントされるので、それをコピペしてパターンを増殖させます。
実際には、この形状を管理するためにクラスを書いたりしてますが、割愛。

実際には入れるのをやめましたが
self.gl.glLineWidth(5)
を入れると、描画している線の太さも変えられるようです。
ただし、Gridの線とかも軒並み太くなるので却下しました。
そんな感じで、おおむねやりたいことは出来ました。
OpenGLコマンドも調べてみるとなかなかおもしろそうなので、また時間ができたら遊んでみようかと思います。

今はコンストレインノードを調べてますが、これまためんどくさい上に先は長い…(´ω`)

コメントを残す

メールアドレスが公開されることはありません。


*