But I think in the instance case it's not just a name thing. It's
actually the same dag node (shape) having multiple transforms.

That's the reason why worldMatrix is a multiple attribute. Though you
usually use worldMatrix[0], in case of an instanced shape you can have
multiple worldMatrix :

polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;
// Result: pCube1 polyCube1 //
instance; move -r 1 0 0;
getAttr pCube1.worldMatrix;
// Result: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 //
getAttr pCube2.worldMatrix;
// Result: 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 //
getAttr pCubeShape1.worldMatrix[0];
// Result: 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 //
getAttr pCubeShape1.worldMatrix[1];
// Result: 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 //

Chad Dombrova wrote:
> I think it's ok in pymel's case because your shape will be a uniquely
> identified dagNode.
>
> -chad
>
>
>
> On Apr 9, 2009, at 6:33 AM, Sylvain Berger wrote:
>
>> ho yeah.... you are right... i'll check my code using the getParent()
>> function to see what appens... i'm guessing a fail :)
>>
>> Thanks
>>
>> On Thu, Apr 9, 2009 at 9:22 AM, Olivier Renouard
>> <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>>     I think you would have to account for the cases where a single
>>     shape can have more than one transform if you did that, ie instances
>>
>>     Sylvain Berger wrote:
>>>     Thanks for this great explanation.  It is not a big deal because
>>>     I can always asume that the direct parent of a shape is the
>>>     transform, so i can live with the getParent() method :)
>>>
>>>
>>>
>>>     On Wed, Apr 8, 2009 at 4:47 PM, chadrik <[email protected]
>>>     <mailto:[email protected]>> wrote:
>>>
>>>
>>>
>>>         MEL supports automatic propagation from transforms to shapes:
>>>
>>>         import maya.cmds as cmds
>>>         transform = cmds.polyCube()[0]
>>>         cmds.getAttr( transform + ".primaryVisibility" )
>>>         # Result: 1 #
>>>
>>>         in the example above primaryVisibility is an attribute of
>>>         the mesh,
>>>         but it can be accessed from the transform. PyMEL supports
>>>         this same
>>>         transform-to-shape propagation in its object-oriented design:
>>>
>>>         #continuing from the example above
>>>         pytrans = PyNode( transform )
>>>         pytrans.primaryVisibility.get()  # an attribute of Mesh
>>>         # Result: 1 #
>>>         pytrans.numVertices()  # a method of Mesh
>>>         # Result: 8 #
>>>
>>>
>>>         MEL does not support propagating back UP the dag.
>>>
>>>         #continuing from the example above
>>>         mesh = cmds.listRelatives( transform, s=1 )[0]
>>>         cmds.getAttr(mesh + ".tx" )
>>>         # Error: Object pCubeShape3.tx is invalid
>>>         # Traceback (most recent call last):
>>>         #   File "<maya console>", line 1, in <module>
>>>         # TypeError: Object pCubeShape3.tx is invalid #
>>>
>>>         Including this feature is worth considering, but i
>>>         personally don't
>>>         feel that it is consistent with the conventions that have been
>>>         established in Maya: a transform "owns" a shape, but a shape
>>>         does not
>>>         "own" a transform.
>>>
>>>
>>>         -chad
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>     -- 
>>>     They say, "Evil prevails when good men fail to act." What they
>>>     ought to say is, "Evil prevails."
>>>     Nicolas Cage as Yuri Orlov in Lord of War.
>>>
>>>
>>
>>
>>     -- 
>>     Olivier Renouard
>>           
>>
>>
>>
>>
>>
>>
>> -- 
>> They say, "Evil prevails when good men fail to act." What they ought
>> to say is, "Evil prevails."
>> Nicolas Cage as Yuri Orlov in Lord of War.
>>
>>
>>
>
>
> >


-- 
Olivier Renouard


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

Reply via email to