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

Reply via email to