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