#OK I think I'm getting close. I tried Ivan's instructions but I think I
missed something. It looks really close though. Anyone care to take a look
at what I have so far?
##############################################################################################################################
projectionMatrixTo = nuke.math.Matrix4()
projectionMatrixFrom = nuke.math.Matrix4()

#dir(projectionMatrix)
theCornerpinNode = nuke.toNode("CornerPin2D1")
imageWidth = float(theCornerpinNode.width())
imageHeight = float(theCornerpinNode.height())

#normalized to and from coordinates
to1x = theCornerpinNode['to1'].value()[0]/imageWidth
to1y = theCornerpinNode['to1'].value()[1]/imageHeight
to2x = theCornerpinNode['to2'].value()[0]/imageWidth
to2y = theCornerpinNode['to2'].value()[1]/imageHeight
to3x = theCornerpinNode['to3'].value()[0]/imageWidth
to3y = theCornerpinNode['to3'].value()[1]/imageHeight
to4x = theCornerpinNode['to4'].value()[0]/imageWidth
to4y = theCornerpinNode['to4'].value()[1]/imageHeight

from1x = theCornerpinNode['from1'].value()[0]/imageWidth
from1y = theCornerpinNode['from1'].value()[1]/imageHeight
from2x = theCornerpinNode['from2'].value()[0]/imageWidth
from2y = theCornerpinNode['from2'].value()[1]/imageHeight
from3x = theCornerpinNode['from3'].value()[0]/imageWidth
from3y = theCornerpinNode['from3'].value()[1]/imageHeight
from4x = theCornerpinNode['from4'].value()[0]/imageWidth
from4y = theCornerpinNode['from4'].value()[1]/imageHeight


projectionMatrixTo.mapUnitSquareToQuad(to1x,to1y,to2x,to2y,to3x,to3y,to4x,to4y)
projectionMatrixFrom.mapUnitSquareToQuad(from1x,from1y,from2x,from2y,from3x,from3y,from4x,from4y)

theCornerpinAsMatrix = projectionMatrixTo*projectionMatrixFrom.inverse()

theNewCornerpinNode = nuke.toNode("CornerPin2D2")
theNewCornerpinNode['transform_matrix'].setValue(theCornerpinAsMatrix)

############################################################################################################################
#Thanks
#Pete

On Tue, Aug 23, 2011 at 10:14 AM, Pete O'Connell <[email protected]>wrote:

> Hi Michael. I had a look at the planar tracker but as far as I can tell,
> that node creates a cornerpin based on the matrix that it calculates, but as
> far as I can see there is no way in that you can feed the planar tracker
> cornerpin data and have it calculate the corresponding Matrix. I think
> nuke.math.Matrix4 is the way.
>
> Pete
>
>
> On Tue, Aug 23, 2011 at 3:30 AM, Michael Garrett <[email protected]>wrote:
>
>> I haven't got 6.3 in front of me but does the PlanarTracker add anything
>> into the mix to make this easier?  I seem to remember it outputs a 4*4
>> matrix for the planar track which is essentially a corner pin but I'll admit
>> I need to look more closely at it.
>>
>>
>> On 21 August 2011 23:40, Pete O'Connell <[email protected]> wrote:
>>
>>> Thanks a lot Ivan. I'll have a play around with that tonight.
>>>
>>> Cheers
>>> Pete
>>>
>>>
>>> On Mon, Aug 22, 2011 at 3:57 PM, Ivan Busquets 
>>> <[email protected]>wrote:
>>>
>>>> Hi Pete,
>>>>
>>>> It's very possible, but probably easier to do it in Python than using
>>>> expression-links. Have a look at the nuke.math.Matrix4 class, and its
>>>> mapUnitSquareToQuad() method.
>>>>
>>>> I have a function somewhere to feed the transformation of a CornerPin
>>>> node into the "matrix" knob of a roto/rotopaint node that would
>>>> probably fit the bill for this too. I can try to dig that up if you're
>>>> interested, but it would roughly consist of the following steps:
>>>>
>>>> 1 - Get the coordinates of the 4 "TO" corners from your cornerpin node.
>>>> 2 - Build a "TO" matrix using mapUnitSquareToQuad(to0.x, to0.y, to1.x,
>>>> to1.y, ...)
>>>> 3 - Get the coordinates of the 4 "FROM" corners from your cornerpin
>>>> node.
>>>> 4 - Build a "FROM" matrix using mapUnitSquareToQuad(from0.x, from0.y,
>>>> from1.x, from1.y, ...)
>>>> 5 - The final transformation matrix should be =>  to_matrix *
>>>> from_matrix.inverse().
>>>>
>>>> Then you can use that to fill in the matrix knob in a gridwarp, a roto
>>>> node, etc.
>>>>
>>>> Not the best example, but if you want some more info on how to use
>>>> nuke.math.Matrix4.mapUnitSquareToQuad(), have a look here (towards the
>>>> end of the page).
>>>>
>>>>
>>>> http://www.nukepedia.com/written-tutorials/using-the-nukemath-python-module-to-do-vector-and-matrix-operations/page-4/
>>>>
>>>> Hope that helps.
>>>>
>>>> Cheers,
>>>> Ivan
>>>>
>>>> On Sun, Aug 21, 2011 at 10:24 PM, Pete O'Connell
>>>> <[email protected]> wrote:
>>>> > Hi does anyone know if it is possible somehow to convert cornerpin
>>>> values to
>>>> > a 4 by 4 matrix? Seem like it would be useful for the new Gridwarp and
>>>> > Splinewarp nodes.
>>>> > Thanks
>>>> > Pete
>>>> >
>>>> >
>>>> > _______________________________________________
>>>> > Nuke-users mailing list
>>>> > [email protected], http://forums.thefoundry.co.uk/
>>>> > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
>>>> >
>>>> _______________________________________________
>>>> Nuke-users mailing list
>>>> [email protected], http://forums.thefoundry.co.uk/
>>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
>>>>
>>>
>>>
>>>
>>> --
>>> Pete
>>>
>>> _______________________________________________
>>> Nuke-users mailing list
>>> [email protected], http://forums.thefoundry.co.uk/
>>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
>>>
>>
>>
>> _______________________________________________
>> Nuke-users mailing list
>> [email protected], http://forums.thefoundry.co.uk/
>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
>>
>
>
>
> --
> Pete
>



-- 
Pete
_______________________________________________
Nuke-users mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users

Reply via email to