to help out, here's an empty shell node (as above--and really does
nothing, but pretty much just copied from the docs).  this failes on
the creation of the correct MFnMesh for the colorSet....

##########################


import math, sys

import maya.OpenMaya as OpenMaya
import maya.OpenMayaAnim as OpenMayaAnim
import maya.OpenMayaMPx as OpenMayaMPx

kPluginNodeTypeName = "spTestNode"

testNodeId = OpenMaya.MTypeId(0x00129) # random bad number

#==================================================
# Node definition
class testNode(OpenMayaMPx.MPxNode):
        # class variables
        inputGeometry = OpenMaya.MObject()
        outputGeometry = OpenMaya.MObject()


        #==================================================
        # constructor
        def __init__(self):
                OpenMayaMPx.MPxNode.__init__(self)


        #==================================================
        # compute
        def compute ( self, plug, dataBlock ):
                if plug == self.outputGeometry:
                        self.doCalculation( plug, dataBlock )
                        dataBlock.setClean(plug)
                else:
                        return OpenMaya.kUnknownParameter


        #==================================================
        # doCalculation
        def doCalculation( self, plug, dataBlock ):
                inMeshHnd = dataBlock.inputValue( testNode.inputGeometry )
                inMeshData = inMeshHnd.asMesh()

                outMeshHnd = dataBlock.outputValue( testNode.outputGeometry )


                meshDataFn = OpenMaya.MFnMeshData()
                newMeshData = meshDataFn.create()
                inMeshFn = OpenMaya.MFnMesh( inMeshData )
                inMeshFn.copy( inMeshData, newMeshData )


                colorSetNameString = "myNewColorSet"
                inMeshFn.createColorSetWithName( colorSetNameString )

                outMeshHnd.setMObject( newMeshData )


#==================================================
# creator
def nodeCreator():
        return OpenMayaMPx.asMPxPtr( testNode() )

#==================================================
# initializer
def nodeInitializer():
        tAttr = OpenMaya.MFnTypedAttribute()

        #----------------------------------------------
        # DEFINE ATTRS

        testNode.inputGeometry = tAttr.create( "inputGeometry", "in",
OpenMaya.MFnData.kMesh )

        testNode.outputGeometry = tAttr.create( "outputGeometry", "out",
OpenMaya.MFnData.kMesh )
        tAttr.setStorable( False )


        #-----------------------------------------
        # ADD ATTRS

        try:
                testNode.addAttribute( testNode.outputGeometry )
        except:
                sys.stderr.write( "Failed to create %s of %s node\n" %
('outputGeometry', kPluginNodeTypeName ) )

        try:
                testNode.addAttribute( testNode.inputGeometry )
                testNode.attributeAffects( testNode.inputGeometry,
testNode.outputGeometry )
        except:
                sys.stderr.write( "Failed to create %s of %s node\n" %
('inputGeometry', kPluginNodeTypeName ) )


#==================================================
# initialize the script plug-in
def initializePlugin(mobject):
        mplugin = OpenMayaMPx.MFnPlugin(mobject, "us", "0.0.1", "Any")
        try:
                mplugin.registerNode( kPluginNodeTypeName, testNodeId, 
nodeCreator,
nodeInitializer )
        except:
                sys.stderr.write( "Failed to register node: %s\n" %
kPluginNodeTypeName )

# uninitialize the script plug-in
def uninitializePlugin(mobject):
        mplugin = OpenMayaMPx.MFnPlugin( mobject )
        try:
                mplugin.deregisterNode( testNodeId )
        except:
                sys.stderr.write( "Failed to unregister node: %s\n" %
kPluginNodeTypeName )


##########################

and here's some MEL to create the node:

//file -f -new;
//unloadPlugin spTestNode;

file -f -new;

loadPlugin "<yourPathHere>/spTestNode.py";

file -f -new;

string $s[] = `polySphere`;
string $tm = `createNode spTestNode`;

connectAttr -f polySphere1.output spTestNode1.inputGeometry;
connectAttr -f spTestNode1.outputGeometry pSphereShape1.inMesh;


--~--~---------~--~----~------------~-------~--~----~
Yours,
Maya-Python Club Team.
-~----------~----~----~----~------~----~------~--~---

Reply via email to