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

Reply via email to