I have not done a ton with manipulators but I think I can answer some:

"problem 1:  `pluginInfo -dependNode` returns Manipulators!"

This makes sense to me I have a node I created and I added a
manipulator to it that allows you to edit attributes on that node. It
creates handles that are in the same spot as the OpenGL lines that I
created. The manipulator is dependent on the node and nodes attribute
is dependant on the manipulator since its driven by where the
manipulator is moved by the user. If I click the "I" button next to my
plugin it shows:

Plug-in Features
Commands:
rtCylinder

Tools:
rtCylinderManipCtxCmd

Dependency nodes:
rtCylinder
rtCylinderManip

When init my locator I have this in the code:

# Notify Maya that there is an associated manipulator for this
particular type of node
# This is the only change necessary to the baseLocator node to have it
work with a manipulator
OpenMayaMPx.MPxManipContainer.addToManipConnectTable
( rtCylinderLocatorId );

So maya knows it needs that manipulator.

"problem 2:  I don't know how to use MEL or API to find out if an
object type is a manipulator prior to creating it"

My manipulator is created when I hit the "t" button in Maya. Maya
handles all of this. It also deletes it for me when I change contexts.
Why would you need to figure out its type and how would you create it
outside of the context of a plugin with a node that it is attached to.
What are you doing with the manipulator. Why do you want to do with
it?

"problem 3: `nodeType -inherited` requires a real object, so i have
to
create an object to find out it's inheritance.

 >>> res = cmds.createNode( u'shaveBrushManip' )
 >>> cmds.nodeType(res)
None
 >>>cmds.nodeType(res, inherited=1)
None"

I dont think its ok to create manipulators this way. You might be able
to, but it needs to be "manipulating" something. There are examples of
how to use manipulators in the Python API examples in maya devkit
folder.

"problem 4: `createNode` allows you to create manipulators but
`delete`
won't delete them."

Again I dont know what your doing but I dont think you can use
createNode to create a manipulator. I think this is a API only thing.
If I use createNode to create the manipulator I have it errors out
because my manipulator is dependent on my node and requires attributes
from that node to feed into it. Without those my manipulator fails and
nothing gets created. I suppose if you had a manipulator with no
dependencies to any attributes it might create some sort of node. I
havent tried that.

If any of this happens to be misinformation I am sorry, just trying to
explain what I can to help.

RyanT
Technical Artist
www.rtrowbridge.com/blog
NaughtyDog Inc.




On Mar 12, 12:10 pm, chadrik <[email protected]> wrote:
> I'm running into a lot of walls here with how Maya handles  
> manipulators.  My goal is to determine the inheritance of each node  
> loaded by a plugin.
>
> problem 1:  `pluginInfo -dependNode` returns Manipulators!
>
>  >>> cmds.pluginInfo('shaveNode', query=1, dependNode=1)
> [u'shaveHair', u'shaveGlobals', u'shaveShadowNode', u'shaveNode',  
> u'shaveBackground', u'shaveVertexShader', u'shaveVolumeShader',  
> u'shaveBrushManip']
>
> the last item, 'shaveBrushManip', is a manipulator, so why is this  
> returned in the list of dependency nodes?
>
> problem 2:  I don't know how to use MEL or API to find out if an  
> object type is a manipulator prior to creating it
>
> problem 3: `nodeType -inherited` requires a real object, so i have to  
> create an object to find out it's inheritance.
>
>  >>> res = cmds.createNode( u'shaveBrushManip' )
>  >>> cmds.nodeType(res)
> None
>  >>>cmds.nodeType(res, inherited=1)
> None
>
> once i do this, i can see that the inheritance is None, which gives me  
> a good clue that it's a manipulator, but that leads me to the next  
> problem.
>
> problem 4: `createNode` allows you to create manipulators but `delete`  
> won't delete them.
> why does create*NODE* allow me to create a manipulator when nothing  
> else will recognize what has been created?  is there a way to delete  
> manipulators or get any kind of information about them?
>
>  >>> res = cmds.createNode( u'shaveBrushManip' )
>  >>> print res
> Manipulator2
>  >>> cmds.ls(type='shaveBrushManip')  # ls won't list it
> []
> cmds.delete( res) # delete won't delete it
> Traceback (most recent call last):
>     File "<maya console>", line 1, in <module>
> TypeError: Object Manipulator2 is invalid
>
> a solution to any one of these problems would be great.  clearly, most  
> of them are in Autodesk's court, but perhaps there are commands in the  
> API or MEL that i don't know about for working with and deleting  
> manipulators?
>
> -chad
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/python_inside_maya
-~----------~----~----~----~------~----~------~--~---

Reply via email to