Hi Damon,

Thanks for the information, reading the help docs and it's a bit mind
melting for me atm...So let me post what I have, which works, just not
well:

###START PLUG
import sys
import maya.OpenMaya       as OpenMaya
import maya.OpenMayaMPx    as OpenMayaMPx
import maya.OpenMayaRender as OpenMayaRender
import maya.OpenMayaUI     as OpenMayaUI

nodeTypeName = "atomSphereLocator"
nodeTypeId = OpenMaya.MTypeId(0x87079)


glRenderer = OpenMayaRender.MHardwareRenderer.theRenderer()
glFT = glRenderer.glFunctionTable()
import sys
import maya.OpenMaya       as OpenMaya
import maya.OpenMayaMPx    as OpenMayaMPx
import maya.OpenMayaRender as OpenMayaRender
import maya.OpenMayaUI     as OpenMayaUI

nodeTypeName = "atomSphereLocator"
nodeTypeId = OpenMaya.MTypeId(0x87079)


glRenderer = OpenMayaRender.MHardwareRenderer.theRenderer()
glFT = glRenderer.glFunctionTable()

class AtomSphereLocator(OpenMayaMPx.MPxLocatorNode):
        rInput = OpenMaya.MObject()
        gInput = OpenMaya.MObject()
        bInput = OpenMaya.MObject()
        aInput = OpenMaya.MObject()

        def __init__(self, scale):
                OpenMayaMPx.MPxLocatorNode.__init__(self)
                self.mf  = scale
                self.red   = 0
                self.green = 0
                self.blue  = 0
                self.alpha = 1

        def draw(self, view, path, style, status):                              
#procedure appele au
momment du "dessin" du locator

                thisNode = self.thisMObject()
                rPlug    = OpenMaya.MPlug(thisNode, AtomSphereLocator.rInput)
                gPlug    = OpenMaya.MPlug(thisNode, AtomSphereLocator.gInput)
                bPlug    = OpenMaya.MPlug(thisNode, AtomSphereLocator.bInput)
                aPlug    = OpenMaya.MPlug(thisNode, AtomSphereLocator.aInput)

                view.beginGL()                                                  
#fonctionne bien sans mais il semble que ce
soit necessaire pour eviter les plantages...
                #store the current user setup colors
                glFT.glPushAttrib(OpenMayaRender.MGL_CURRENT_BIT)

                #enable the transparency
                glFT.glEnable(OpenMayaRender.MGL_BLEND) #on active l'extension

                #set the color and alpha, rgba
                glFT.glColor4f(rPlug, self.green, self.blue, self.alpha)        
#Change
color and add alpha

                #top section
                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, 1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glVertex3f( 0.5  * self.mf, 0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, 1.0   * self.mf,   0.0 *
self.mf )
                glFT.glVertex3f( 0.5  * self.mf, 0.866 * self.mf,   0.0 * 
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, 0.866 * self.mf, -.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0   * self.mf, 1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.25  * self.mf, 0.866 * self.mf, -.433 * 
self.mf )
                glFT.glVertex3f(-0.25  * self.mf, 0.866 * self.mf, -.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, 1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, 0.866 * self.mf, -.433 * 
self.mf )
                glFT.glVertex3f(-0.5  * self.mf, 0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, 1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.5  * self.mf, 0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, 1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                #Top Mid
                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.25  * self.mf, 0.866 * self.mf, 0.433 *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, 0.5   * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, 0.5   * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f( 0.25  * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.25  * self.mf, 0.866 * self.mf, 0.433 *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, 0.5   * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, 0.5   * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.5   * self.mf, 0.866 * self.mf, 0.0    *
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, 0.5   * self.mf, 0.0    *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, 0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f( 0.25  * self.mf, 0.866 * self.mf, -0.433 *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.25   * self.mf, 0.866 * self.mf, -0.433 *
self.mf )
                glFT.glVertex3f( 0.433  * self.mf, 0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f( -0.433 * self.mf, 0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f( -0.25  * self.mf, 0.866 * self.mf, -0.433 *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.25  * self.mf, 0.866 * self.mf, -0.433 *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, 0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, 0.5   * self.mf,  0.0   *
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.866 * self.mf,  0.0   *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.5   * self.mf, 0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, 0.5   * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, 0.5   * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f(-0.25  * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                #top lower
                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.433 * self.mf, 0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f(-1.0   * self.mf, 0.0 * self.mf, 0.0    * 
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, 0.5 * self.mf, 0.0    * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.866 * self.mf, 0.5 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-1.0   * self.mf, 0.0 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0 * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, 0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.433 * self.mf, 0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0 * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0 * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, 0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.433 * self.mf, 0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0 * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 1.0   * self.mf, 0.0 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, 0.5 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.866 * self.mf, 0.5 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 1.0   * self.mf, 0.0 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0 * self.mf, -.866 * 
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, 0.5 * self.mf, -0.75 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.433 * self.mf, 0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, 0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glEnd()

                #Bottom Section
                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, -0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glVertex3f( 0.5  * self.mf, -0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.5  * self.mf, -0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, -0.866 * self.mf, -.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, -0.866 * self.mf, -.433 * 
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, -0.866 * self.mf, -.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, -0.866 * self.mf, -.433 * 
self.mf )
                glFT.glVertex3f(-0.5  * self.mf, -0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.5  * self.mf, -0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, -0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, -0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, -0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                #Bottom Mid
                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.25  * self.mf, -0.866 * self.mf, 0.433 *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5   * self.mf, 0.75  *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5   * self.mf, 0.75  *
self.mf )
                glFT.glVertex3f( 0.25  * self.mf, -0.866 * self.mf, 0.433 *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.25  * self.mf, -0.866 * self.mf, 0.433 *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5   * self.mf, 0.75  *
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, -0.5   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, -0.866 * self.mf, 0.0   *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.5   * self.mf, -0.866 * self.mf, 0.0    *
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, -0.5   * self.mf, 0.0    *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f( 0.25  * self.mf, -0.866 * self.mf, -0.433 *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.25  * self.mf, -0.866 * self.mf, -0.433 *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f(-0.25  * self.mf, -0.866 * self.mf, -0.433 *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.25  * self.mf, -0.866 * self.mf, -0.433 *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, -0.5   * self.mf,  0.0   *
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, -0.866 * self.mf,  0.0   *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.5   * self.mf, -0.866 * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, -0.5   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5   * self.mf, 0.75  *
self.mf )
                glFT.glVertex3f(-0.25  * self.mf, -0.866 * self.mf, 0.433 *
self.mf )
                glFT.glEnd()

                #top lower
                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.433 * self.mf, -0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0  * self.mf, -0.866 *
self.mf )
                glFT.glVertex3f(-1.0   * self.mf, 0.0  * self.mf, 0.0    * 
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, -0.5 * self.mf, 0.0    * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.866 * self.mf, -0.5 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-1.0   * self.mf, 0.0  * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0  * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.433 * self.mf, -0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0  * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0  * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.433 * self.mf, -0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0  * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 1.0   * self.mf, 0.0  * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, -0.5 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.866 * self.mf, -0.5 * self.mf, 0.0    * 
self.mf )
                glFT.glVertex3f( 1.0   * self.mf,  0.0 * self.mf, 0.0    * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf,  0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.433 * self.mf, -0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf,  0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf,  0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glDisable(OpenMayaRender.MGL_BLEND)
                glFT.glPopAttrib()
                view.endGL()


def nodeCreator():
        return OpenMayaMPx.asMPxPtr(AtomSphereLocator(1))

def nodeInitializer():
        nAttr = OpenMaya.MFnNumericAttribute()

        AtomSphereLocator.rInput = nAttr.create('rInput', 'rIn',
OpenMaya.MFnNumericData.kFloat, 1.0)
        nAttr.setStorable(1)
        nAttr.setWritable(1)
        nAttr.setKeyable(1)
        nAttr.setMin(0)
        nAttr.setMax(1)

        AtomSphereLocator.gInput = nAttr.create('gInput', 'gIn',
OpenMaya.MFnNumericData.kFloat, 1.0)
        nAttr.setStorable(1)
        nAttr.setWritable(1)
        nAttr.setKeyable(1)
        nAttr.setMin(0)
        nAttr.setMax(1)

        AtomSphereLocator.bInput = nAttr.create('bInput', 'bIn',
OpenMaya.MFnNumericData.kFloat, 1.0)
        nAttr.setStorable(1)
        nAttr.setWritable(1)
        nAttr.setKeyable(1)
        nAttr.setMin(0)
        nAttr.setMax(1)

        AtomSphereLocator.aInput = nAttr.create('aInput', 'aIn',
OpenMaya.MFnNumericData.kFloat, 1.0)
        nAttr.setStorable(1)
        nAttr.setWritable(1)
        nAttr.setKeyable(1)
        nAttr.setMin(0)
        nAttr.setMax(1)

        AtomSphereLocator.addAttribute(AtomSphereLocator.rInput)
        AtomSphereLocator.addAttribute(AtomSphereLocator.gInput)
        AtomSphereLocator.addAttribute(AtomSphereLocator.bInput)
        AtomSphereLocator.addAttribute(AtomSphereLocator.aInput)

        return OpenMaya.MStatus.kSuccess

def initializePlugin(obj):                                              
#procedure lance au moment de
l'initialisation du plugin
        plugin = OpenMayaMPx.MFnPlugin(obj)
        try:
                plugin.registerNode(nodeTypeName, nodeTypeId, nodeCreator,
nodeInitializer, OpenMayaMPx.MPxNode.kLocatorNode)
        except:
                sys.stderr.write( "Failed to register node: %s" % nodeTypeName)

def uninitializePlugin(obj):                                    #procedure 
lance au moment de la
desactivation du plugin
        plugin = OpenMayaMPx.MFnPlugin(obj)
        try:
                plugin.deregisterNode(nodeTypeId)
        except:
                sys.stderr.write( "Failed to deregister node: %s" % 
nodeTypeName)
class AtomSphereLocator(OpenMayaMPx.MPxLocatorNode):
        rInput = OpenMaya.MObject()
        gInput = OpenMaya.MObject()
        bInput = OpenMaya.MObject()
        aInput = OpenMaya.MObject()

        def __init__(self, scale):
                OpenMayaMPx.MPxLocatorNode.__init__(self)
                self.mf  = scale
                self.red   = 0
                self.green = 0
                self.blue  = 0
                self.alpha = 1

        def draw(self, view, path, style, status):                              
#procedure appele au
momment du "dessin" du locator

                thisNode = self.thisMObject()
                rPlug    = OpenMaya.MPlug(thisNode, AtomSphereLocator.rInput)
                gPlug    = OpenMaya.MPlug(thisNode, AtomSphereLocator.gInput)
                bPlug    = OpenMaya.MPlug(thisNode, AtomSphereLocator.bInput)
                aPlug    = OpenMaya.MPlug(thisNode, AtomSphereLocator.aInput)

                view.beginGL()                                                  
#fonctionne bien sans mais il semble que ce
soit necessaire pour eviter les plantages...
                #store the current user setup colors
                glFT.glPushAttrib(OpenMayaRender.MGL_CURRENT_BIT)

                #enable the transparency
                glFT.glEnable(OpenMayaRender.MGL_BLEND) #on active l'extension

                #set the color and alpha, rgba
                glFT.glColor4f(rPlug, self.green, self.blue, self.alpha)        
#Change
color and add alpha

                #top section
                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, 1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glVertex3f( 0.5  * self.mf, 0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, 1.0   * self.mf,   0.0 *
self.mf )
                glFT.glVertex3f( 0.5  * self.mf, 0.866 * self.mf,   0.0 * 
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, 0.866 * self.mf, -.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0   * self.mf, 1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.25  * self.mf, 0.866 * self.mf, -.433 * 
self.mf )
                glFT.glVertex3f(-0.25  * self.mf, 0.866 * self.mf, -.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, 1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, 0.866 * self.mf, -.433 * 
self.mf )
                glFT.glVertex3f(-0.5  * self.mf, 0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, 1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.5  * self.mf, 0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, 1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                #Top Mid
                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.25  * self.mf, 0.866 * self.mf, 0.433 *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, 0.5   * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, 0.5   * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f( 0.25  * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.25  * self.mf, 0.866 * self.mf, 0.433 *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, 0.5   * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, 0.5   * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.5   * self.mf, 0.866 * self.mf, 0.0    *
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, 0.5   * self.mf, 0.0    *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, 0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f( 0.25  * self.mf, 0.866 * self.mf, -0.433 *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.25   * self.mf, 0.866 * self.mf, -0.433 *
self.mf )
                glFT.glVertex3f( 0.433  * self.mf, 0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f( -0.433 * self.mf, 0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f( -0.25  * self.mf, 0.866 * self.mf, -0.433 *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.25  * self.mf, 0.866 * self.mf, -0.433 *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, 0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, 0.5   * self.mf,  0.0   *
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.866 * self.mf,  0.0   *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.5   * self.mf, 0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, 0.5   * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, 0.5   * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f(-0.25  * self.mf, 0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                #top lower
                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.433 * self.mf, 0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f(-1.0   * self.mf, 0.0 * self.mf, 0.0    * 
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, 0.5 * self.mf, 0.0    * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.866 * self.mf, 0.5 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-1.0   * self.mf, 0.0 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0 * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, 0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.433 * self.mf, 0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0 * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0 * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, 0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.433 * self.mf, 0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0 * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 1.0   * self.mf, 0.0 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, 0.5 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.866 * self.mf, 0.5 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 1.0   * self.mf, 0.0 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0 * self.mf, -.866 * 
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, 0.5 * self.mf, -0.75 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.433 * self.mf, 0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, 0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glEnd()

                #Bottom Section
                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, -0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glVertex3f( 0.5  * self.mf, -0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.5  * self.mf, -0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, -0.866 * self.mf, -.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, -0.866 * self.mf, -.433 * 
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, -0.866 * self.mf, -.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, -0.866 * self.mf, -.433 * 
self.mf )
                glFT.glVertex3f(-0.5  * self.mf, -0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.5  * self.mf, -0.866 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, -0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_TRIANGLES)
                glFT.glVertex3f( 0.0  * self.mf, -1.0   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.25 * self.mf, -0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glVertex3f( 0.25 * self.mf, -0.866 * self.mf, 0.433 * 
self.mf )
                glFT.glEnd()

                #Bottom Mid
                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.25  * self.mf, -0.866 * self.mf, 0.433 *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5   * self.mf, 0.75  *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5   * self.mf, 0.75  *
self.mf )
                glFT.glVertex3f( 0.25  * self.mf, -0.866 * self.mf, 0.433 *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.25  * self.mf, -0.866 * self.mf, 0.433 *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5   * self.mf, 0.75  *
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, -0.5   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, -0.866 * self.mf, 0.0   *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.5   * self.mf, -0.866 * self.mf, 0.0    *
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, -0.5   * self.mf, 0.0    *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f( 0.25  * self.mf, -0.866 * self.mf, -0.433 *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.25  * self.mf, -0.866 * self.mf, -0.433 *
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f(-0.25  * self.mf, -0.866 * self.mf, -0.433 *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.25  * self.mf, -0.866 * self.mf, -0.433 *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5   * self.mf, -0.75  *
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, -0.5   * self.mf,  0.0   *
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, -0.866 * self.mf,  0.0   *
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.5   * self.mf, -0.866 * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, -0.5   * self.mf, 0.0   *
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5   * self.mf, 0.75  *
self.mf )
                glFT.glVertex3f(-0.25  * self.mf, -0.866 * self.mf, 0.433 *
self.mf )
                glFT.glEnd()

                #top lower
                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.433 * self.mf, -0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0  * self.mf, -0.866 *
self.mf )
                glFT.glVertex3f(-1.0   * self.mf, 0.0  * self.mf, 0.0    * 
self.mf )
                glFT.glVertex3f(-0.866 * self.mf, -0.5 * self.mf, 0.0    * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.866 * self.mf, -0.5 * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-1.0   * self.mf, 0.0  * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0  * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f(-0.433 * self.mf, -0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf, 0.0  * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0  * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.433 * self.mf, -0.5 * self.mf, 0.75  * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf, 0.0  * self.mf, 0.866 * 
self.mf )
                glFT.glVertex3f( 1.0   * self.mf, 0.0  * self.mf, 0.0   * 
self.mf )
                glFT.glVertex3f( 0.866 * self.mf, -0.5 * self.mf, 0.0   * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.866 * self.mf, -0.5 * self.mf, 0.0    * 
self.mf )
                glFT.glVertex3f( 1.0   * self.mf,  0.0 * self.mf, 0.0    * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf,  0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f( 0.433 * self.mf, -0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glBegin(OpenMayaRender.MGL_QUADS)
                glFT.glVertex3f( 0.433 * self.mf, -0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glVertex3f( 0.5   * self.mf,  0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f(-0.5   * self.mf,  0.0 * self.mf, -0.866 * 
self.mf )
                glFT.glVertex3f(-0.433 * self.mf, -0.5 * self.mf, -0.75  * 
self.mf )
                glFT.glEnd()

                glFT.glDisable(OpenMayaRender.MGL_BLEND)
                glFT.glPopAttrib()
                view.endGL()


def nodeCreator():
        return OpenMayaMPx.asMPxPtr(AtomSphereLocator(1))

def nodeInitializer():
        nAttr = OpenMaya.MFnNumericAttribute()

        AtomSphereLocator.rInput = nAttr.create('rInput', 'rIn',
OpenMaya.MFnNumericData.kFloat, 1.0)
        nAttr.setStorable(1)
        nAttr.setWritable(1)
        nAttr.setKeyable(1)
        nAttr.setMin(0)
        nAttr.setMax(1)

        AtomSphereLocator.gInput = nAttr.create('gInput', 'gIn',
OpenMaya.MFnNumericData.kFloat, 1.0)
        nAttr.setStorable(1)
        nAttr.setWritable(1)
        nAttr.setKeyable(1)
        nAttr.setMin(0)
        nAttr.setMax(1)

        AtomSphereLocator.bInput = nAttr.create('bInput', 'bIn',
OpenMaya.MFnNumericData.kFloat, 1.0)
        nAttr.setStorable(1)
        nAttr.setWritable(1)
        nAttr.setKeyable(1)
        nAttr.setMin(0)
        nAttr.setMax(1)

        AtomSphereLocator.aInput = nAttr.create('aInput', 'aIn',
OpenMaya.MFnNumericData.kFloat, 1.0)
        nAttr.setStorable(1)
        nAttr.setWritable(1)
        nAttr.setKeyable(1)
        nAttr.setMin(0)
        nAttr.setMax(1)

        AtomSphereLocator.addAttribute(AtomSphereLocator.rInput)
        AtomSphereLocator.addAttribute(AtomSphereLocator.gInput)
        AtomSphereLocator.addAttribute(AtomSphereLocator.bInput)
        AtomSphereLocator.addAttribute(AtomSphereLocator.aInput)

        return OpenMaya.MStatus.kSuccess

def initializePlugin(obj):                                              
#procedure lance au moment de
l'initialisation du plugin
        plugin = OpenMayaMPx.MFnPlugin(obj)
        try:
                plugin.registerNode(nodeTypeName, nodeTypeId, nodeCreator,
nodeInitializer, OpenMayaMPx.MPxNode.kLocatorNode)
        except:
                sys.stderr.write( "Failed to register node: %s" % nodeTypeName)

def uninitializePlugin(obj):                                    #procedure 
lance au moment de la
desactivation du plugin
        plugin = OpenMayaMPx.MFnPlugin(obj)
        try:
                plugin.deregisterNode(nodeTypeId)
        except:
                sys.stderr.write( "Failed to deregister node: %s" % 
nodeTypeName)

####END PLUG

-- 
http://groups.google.com/group/python_inside_maya

Reply via email to