you're getting the matrix successfully when you call "print mat" If you compare your input matrix and the values printed from "print mat", they should be identical.
As far as the other stuff goes, I'm not exactly sure what you're trying to accomplish. if you're trying to return the input matrix as an array of elements from your input matrix, then you need to use MDataBuilder to build the array before your set it to the outHandle. The outHandle also has to be declared an array as well. On Thu, Nov 23, 2017 at 6:08 PM, Giulio Martella < [email protected]> wrote: > Hi all, > I'm trying without success to read an input matrix attribute of my custom > node. Here an example of the method I'm using to read a matrix attribute > (this also prints the matrix contents and outputs the sum of its elements). > > import maya.api.OpenMaya as om > > def maya_useNewAPI(): > pass > > class Node(om.MPxNode): > nodeName = 'test' > nodeClass = 'general' > nodeId = om.MTypeId(0xeff) > > aMatrix = om.MObject() > aOut = om.MObject() > > def __init__(self): > om.MPxNode.__init__(self) > > @staticmethod > def create(): > return Node() > > @staticmethod > def initialize(): > tAttr = om.MFnTypedAttribute() > nAttr = om.MFnNumericAttribute() > > Node.aMatrix = tAttr.create( > 'matrix', 'mat', om.MFnMatrixData.kMatrix) > tAttr.readable = False > Node.addAttribute(Node.aMatrix) > > Node.aOut = nAttr.create( > 'out', 'o', om.MFnNumericData.kFloat, 0.0) > nAttr.writable = False > Node.addAttribute(Node.aOut) > > Node.attributeAffects(Node.aMatrix, Node.aOut) > > def compute(self, plug, data): > > if plug == Node.aOut: > > mat = data.inputValue(Node.aMatrix).asMatrix() > print mat > > s = 0 > for i in range(15): > print mat[i] > s += mat[i] > > outHandle = data.outputValue(Node.aOut) > outHandle.setFloat(s) > > data.setClean(plug) > > # Plug-in initialization omitted > > To me, this seems ok, but Maya does not appear to like it. In fact if I > connect the matrix attribute to a transform at the origin with zero > rotation, scale and shear, the matrix values are completely wrong: > (((6.92524e-310, 1.39063e-309, 2.3342e-312, 0), (3.95253e-322, > 1.66006e-321, 3.32254e-316, 3.32813e-316), (2.52962e-321, 0, 1.39063e-309, > 0), (6.92524e-310, 1.39065e-309, 0, 1))) > > 6.92524378327e-310 > 1.39062872165e-309 > 2.33419537006e-312 > 0.0 > 3.95252516673e-322 > 1.66006057003e-321 > 3.32253771394e-316 > 3.32813251331e-316 > 2.52961610671e-321 > 0.0 > 1.39062872165e-309 > 0.0 > 6.92523883349e-310 > 1.39064994161e-309 > 0.0 > > What am I missing? > > Thanks in advance, > Giulio > > -- > You received this message because you are subscribed to the Google Groups > "Python Programming for Autodesk Maya" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/python_inside_maya/b333a5fd-494d-47ea-8e55- > a610c2547bcc%40googlegroups.com > <https://groups.google.com/d/msgid/python_inside_maya/b333a5fd-494d-47ea-8e55-a610c2547bcc%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAJAkR62pPcGbRN9g2opgon8jkRWc4HbGU6iJqw9wFRkK-32jrg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
