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

Reply via email to