Hi Simon, You can create a Matrix node with whatever dimension you need by passing an initial value to the "matrix" knob:
nuke.createNode("Matrix", "matrix {{1 0 0 0} { 0 1 0 0} { 0 0 1 0} {0 0 0 1}}") However, unless I'm misreading the purpose of your tool, I don't see how you would correlate the values of a Cornerpin to those in a Matrix node. The Matrix node does not apply a transformation. Its matrix knob is used to define a convolution, not a transformation. If you are dealing with transforms and just want to populate a transformation matrix, I think Cornerpin (filling in "extra_matrix") is your best bet, as Pete pointed out. Hope that helps, Ivan On Fri, Jun 29, 2012 at 12:17 AM, Simon Björk <bjork.si...@gmail.com> wrote: > Hi Pete, > > I'm building a tool where I can output several types of nodes, Cornerpin > beeing one, Matrix another. I could create just a cornerpin node and let > the user copy valus from that, it's just that it would be a lot neater to > create a matrix node. > > Best regards, > Simon > > > 2012/6/28 Pete O'Connell <pedrooconn...@gmail.com> > >> Hi Simon. Why not just create any node that has an extra_matrix knob, >> like Cornerpin, that's 4x4. >> >> Pete >> >> >> On Thu, Jun 28, 2012 at 7:20 PM, Simon Björk <bjork.si...@gmail.com>wrote: >> >>> Thanks for that script Pete, it helped me understand how to approach >>> this :). >>> >>> On a side note, I'm also trying to create a 4x4 matrix node, but I'm not >>> sure how to do it as it defaults to 3x3 if you use >>> nuke.createNode("Matrix"). I see that Nuke calls >>> nukescripts.create_matrix() when creating a matrix Node, but I can't seem >>> to find that script either. Any suggestions? >>> >>> Thanks again. >>> >>> >>> >>> >>> >>> >>> >>> 2012/6/27 Pete O'Connell <pedrooconn...@gmail.com> >>> >>>> Hi Simon. I think the code below should apply the returned variable of >>>> the getTheCornerpinAsMatrix() function to a new cornerpin node's matrix. >>>> See how getTheCornerpinAsMatrix() is being used in a loop below? >>>> >>>> Is that kind of what you are after? >>>> Pete >>>> >>>> ##################################################### >>>> # by Pete O'Connell >>>> import nuke >>>> def convertCornerpinToMatrix(): >>>> theFirstFrame = int(nuke.root()['first_frame'].value()) >>>> theLastFrame = int(nuke.root()['last_frame'].value()) >>>> >>>> theAnimatedMatrixList = [] >>>> nuke.frame(theFirstFrame) >>>> for i in range(theFirstFrame,theLastFrame+1): >>>> theCurveToolNode = nuke.nodes.CurveTool() >>>> theCurveToolNode['operation'].setValue('Auto Crop') >>>> theCurveToolNode['name'].setValue("curveToolNode") >>>> >>>> nuke.execute("curveToolNode",i,i) >>>> # note: the next line refers to the getTheCornerpinAsMatrix() >>>> function >>>> theAnimatedMatrixList.append(getTheCornerpinAsMatrix()) >>>> nuke.delete(theCurveToolNode) >>>> >>>> theNewCornerpinNode = nuke.createNode("CornerPin2D") >>>> >>>> theNewCornerpinNode['transform_matrix'].setAnimated() >>>> >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][0],aFrame,0) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][1],aFrame,1) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][2],aFrame,2) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][3],aFrame,3) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][4],aFrame,4) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][5],aFrame,5) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][6],aFrame,6) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][7],aFrame,7) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][8],aFrame,8) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][9],aFrame,9) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][10],aFrame,10) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][11],aFrame,11) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][12],aFrame,12) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][13],aFrame,13) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][14],aFrame,14) >>>> for aFrame in range(theFirstFrame,theLastFrame+1): >>>> >>>> theNewCornerpinNode['transform_matrix'].setValueAt(theAnimatedMatrixList[aFrame-theFirstFrame][15],aFrame,15) >>>> ####################################################### >>>> >>>> >>>> >>>> >>>> >>>> On Wed, Jun 27, 2012 at 2:55 AM, Magno Borgo <mag...@pop.com.br> wrote: >>>> >>>>> ** >>>>> Does your corner pin uses expressions? You may need to bake/generate >>>>> the animated values. >>>>> >>>>> Magno. >>>>> >>>>> >>>>> Hi Magno, >>>>> >>>>> thanks for your reply and sorry for not replying earlier. >>>>> >>>>> I did take a look at your script, but couldn't get it to work. I >>>>> copied to corner pin matrix values to a new corner pin, but they don't >>>>> seem >>>>> to match. Any idea? Then again, I'm no python expert. >>>>> >>>>> The script Pete O'Connel posted to this list eralier works, but I >>>>> don't get any animated values out of it. Anyone know how to modyfi it? >>>>> Basically I want to run the script on a corner-pin node, and create a >>>>> Gridwarp with that transform matrix. >>>>> >>>>> Here's Pete's script again. Hope you don't mind me reposting it. >>>>> >>>>> >>>>> import nukedef getTheCornerpinAsMatrix(): >>>>> projectionMatrixTo = nuke.math.Matrix4() projectionMatrixFrom >>>>> = nuke.math.Matrix4() #dir(projectionMatrix) theCornerpinNode = >>>>> nuke.selectedNode() >>>>> imageWidth = float(theCornerpinNode.width()) imageHeight = >>>>> float(theCornerpinNode.height()) to1x = >>>>> theCornerpinNode['to1'].value()[0] to1y = >>>>> theCornerpinNode['to1'].value()[1] to2x = >>>>> theCornerpinNode['to2'].value()[0] to2y = >>>>> theCornerpinNode['to2'].value()[1] to3x = >>>>> theCornerpinNode['to3'].value()[0] to3y = >>>>> theCornerpinNode['to3'].value()[1] to4x = >>>>> theCornerpinNode['to4'].value()[0] to4y = >>>>> theCornerpinNode['to4'].value()[1] from1x = >>>>> theCornerpinNode['from1'].value()[0] from1y = >>>>> theCornerpinNode['from1'].value()[1] from2x = >>>>> theCornerpinNode['from2'].value()[0] from2y = >>>>> theCornerpinNode['from2'].value()[1] from3x = >>>>> theCornerpinNode['from3'].value()[0] from3y = >>>>> theCornerpinNode['from3'].value()[1] from4x = >>>>> theCornerpinNode['from4'].value()[0] from4y = >>>>> theCornerpinNode['from4'].value()[1] >>>>> projectionMatrixTo.mapUnitSquareToQuad(to1x,to1y,to2x,to2y,to3x,to3y,to4x,to4y) >>>>> >>>>> projectionMatrixFrom.mapUnitSquareToQuad(from1x,from1y,from2x,from2y,from3x,from3y,from4x,from4y) >>>>> theCornerpinAsMatrix = >>>>> projectionMatrixTo*projectionMatrixFrom.inverse() >>>>> theCornerpinAsMatrix.transpose() return theCornerpinAsMatrix >>>>> >>>>> >>>>> Best regards, >>>>> >>>>> Simon >>>>> >>>>> 2012/6/14 Magno Borgo <mag...@pop.com.br> >>>>> >>>>>> The attached script should get you started. >>>>>> >>>>>> >>>>>> >>>>>> I found this, >>>>>> http://forums.thefoundry.co.uk/phpBB2/viewtopic.php?t=5810&view=previous&sid=5a7db5ea82b78d9cb79f400e14b18493 >>>>>> but >>>>>> unless I'm missing something it doen't seem to work for animated corner >>>>>> pins. Anyone know of a way? >>>>>> >>>>>> Best regards, >>>>>> Simon >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> ************************** >>>>>> Magno Borgo >>>>>> >>>>>> www.borgo.tv >>>>>> www.boundaryvfx.com >>>>>> >>>>>> _______________________________________________ >>>>>> Nuke-python mailing list >>>>>> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >>>>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> ************************** >>>>> Magno Borgo >>>>> >>>>> www.borgo.tv >>>>> www.boundaryvfx.com >>>>> >>>>> _______________________________________________ >>>>> Nuke-python mailing list >>>>> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >>>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python >>>>> >>>>> >>>> >>>> >>>> -- >>>> - >>>> >>>> _______________________________________________ >>>> Nuke-python mailing list >>>> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python >>>> >>>> >>> >>> _______________________________________________ >>> Nuke-python mailing list >>> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python >>> >>> >> >> >> -- >> - >> >> _______________________________________________ >> Nuke-python mailing list >> Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python >> >> > > _______________________________________________ > Nuke-python mailing list > Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python > >
_______________________________________________ Nuke-python mailing list Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python