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