とあるゲームプログラマの挑戦と敗北の歴史

UE4とプログラミングとmayaとpythonとhtmlとマラソンを中心に情報を発信する元「技術ブログを目指すブログ」から再始動した毎日の日々を発信するブログです。

maya:python を使用した ノードプラグイン の作成方法のご紹介

pythonを使用して

自作のノードプラグインを作成することができます。

 

HelloNode.py)

# -*- coding: utf-8 -*-

import sys
import maya.OpenMaya as OpenMaya
import maya.OpenMayaMPx as OpenMayaMPx

kPluginNodeId = OpenMaya.MTypeId( 0x8FFFF )

# Helloノード
class myNode( OpenMayaMPx.MPxNode ):

 # 値アトリビュート
 m_value = OpenMaya.MObject()

 # init
 def __init__(self):
  OpenMayaMPx.MPxNode.__init__(self)

 # compute
 def compute( self, plug, pDataBlock ):
  return OpenMaya.kUnknownParameter

# creater
def nodeCreator():
 return OpenMayaMPx.asMPxPtr( myNode() )

# initializer
def nodeInitializer():
 numAttrFn = OpenMaya.MFnNumericAttribute()

 # アトリビュートの作成
 myNode.m_value = numAttrFn.create( 'value', 'v', OpenMaya.MFnNumericData.kFloat, 100 )
 numAttrFn.setWritable( True )
 numAttrFn.setStorable( True )
 numAttrFn.setHidden( False )
 myNode.addAttribute( myNode.m_value )


# プラグインの登録
def initializePlugin( obj ):
 plugin = OpenMayaMPx.MFnPlugin( obj, 'toncrimentan', '1.0', 'Any' )
 plugin.registerNode( 'helloNode', kPluginNodeId, nodeCreator, nodeInitializer )

# プラグインの解除
def uninitializePlugin( obj ):
 plugin = OpenMayaMPx.MFnPlugin( obj )
 plugin.deregisterNode( kPluginNodeId )

 

プラグインマネージャーで

自作したノードプラグインを読み込みます。

スクリプトエディタで

createNode "helloNode" -n "myNode1"

を実行し自作ノードを作成します。

f:id:toncrimentan_w:20170206224438j:plain

 

ハイパーグラフ:コネクション

で選択中のノードを表示するときちんとできていることがわかる。

f:id:toncrimentan_w:20170206224440j:plain

 

使いどころに悩む。

というのが個人の意見です。

ロケーターノードにエクストラアトリビュートをつけて使用しても事足りる。

ということと

同様のノードプラグインを持っていない方にも

配給することが可能だからです。