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 <[email protected]> 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 <[email protected]>
>
>> 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
>> [email protected], 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
> [email protected], http://forums.thefoundry.co.uk/
> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
>
>
--
-
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python