Hey,

I don't have much time to recompile C44Matrix these days, but as Vincent
points out, the source is available, so if anyone wants to compile it and
contribute it back, I would be grateful for it :)

This is how I would do depth-to-position using C44Matrix (copy-pasted nodes
below)


​


Step by step, this would be:
1 - get your pixel X,Y coordinates
2 - go from pixel coords to NDC (using a C44 Matrix for this, but you could
easily just normalize to a -1 to 1 range)
3 - project that vector outwards (using the inverse of a projection matrix)
4 - scale that vector so the Z component is equal to your depth
5 - add any camera transforms (translations, rotations...)


Hope that helps!


set cut_paste_input [stack 0]
version 9.0 v8
Dot {
inputs 0
name Dot3
label cam
selected true
xpos -618
ypos 2313
}
set N108b1a10 [stack 0]
Dot {
name Dot9
selected true
xpos -618
ypos 2414
}
set Nf803fb0 [stack 0]
Dot {
name Dot8
selected true
xpos -618
ypos 2586
}
push $Nf803fb0
push $N108b1a10
push $cut_paste_input
Dot {
name Dot4
label "input with depth"
selected true
xpos -751
ypos 2137
}
Expression {
expr0 x
expr1 y
expr2 1
expr3 1
name Expression4
label "r = x\ng = y\nb = 1\na =  1"
selected true
xpos -785
ypos 2194
}
C44Matrix {
inputs 2
matrixFrom "from camera input"
matrixType format
invert true
name C44Matrix_v01_3
label "matrix type: format\ninvert = true"
selected true
xpos -785
ypos 2297
}
C44Matrix {
inputs 2
matrixFrom "from camera input"
matrixType projection
invert true
name C44Matrix_v01_4
label "matrix type: projection\ninvert = true"
selected true
xpos -785
ypos 2398
}
Expression {
expr0 "(r * -depth.Z) / b"
expr1 "(g * -depth.Z) / b"
expr2 -depth.Z
expr3 1
name Expression5
label "r = (r * -depth.Z) / b\ng = (g * -depth.Z) / b\nb = -depth.Z\na = 1"
selected true
xpos -785
ypos 2472
}
C44Matrix {
inputs 2
matrixFrom "from camera input"
name C44Matrix_v01_5
label "matrix type: transform"
selected true
xpos -785
ypos 2576
}
Dot {
name Dot7
selected true
xpos -751
ypos 2673
}

On Fri, Oct 28, 2016 at 8:25 AM, Vincent Langer <m...@vincentlanger.com>
wrote:

> the source code is on nukepedia as well.
> cheers,
> Vincent
>
> 2016-10-28 17:14 GMT+02:00 Erwan Leroy <er...@erwanleroy.com>:
>
>> Ah, got to get my hands on that c44matrix so that I can see the result.
>> Is Ivan still in the mailing list? Any chance to compile a new one? Or is
>> the source code somewhere?
>> It's an interesting challenge.
>>
>>
>> On Friday, October 28, 2016, Vincent Langer <m...@vincentlanger.com>
>> wrote:
>>
>>> Hi Erwan,
>>>
>>> ah I did not know about cx and cy - good to know- BUT the whole thing is
>>> for a deep tool and cx and cy do not work in deep expressions. this also
>>> answers the question I am why not using the DepthToPosition node.
>>>
>>> focal length and aperature size is considered by the c44Matrix node in
>>> projection mode.
>>>
>>> cheers,
>>> Vincent
>>>
>>> 2016-10-28 12:33 GMT+02:00 Erwan Leroy <er...@erwanleroy.com>:
>>>
>>>> Hi
>>>> Maybe you are doing it for the challenge, but is there a reason why you
>>>> would not use the DepthToPosition node built into Nuke? I seems to do
>>>> exactly what you are trying to do (I get a very small error which I believe
>>>> is due to rounding).
>>>> For the fun of it I looked into your expressions, but couldn't go all
>>>> the way through because there is no current build for the C44Matrix for
>>>> Nuke 9 on windows.
>>>> I have 2 things that I believe might be affecting your result (but I
>>>> can't verify):
>>>>
>>>> - I don't see you consider the focal length anywhere? That would have a
>>>> big impact.
>>>>
>>>> - Now this might not apply for every renderer, and Nuke's built in node
>>>> ignores that point as well: In your first expression, you generate a
>>>> "default" position point cloud, with X and Y as planar coordinated, while
>>>> possibly using a "curved" Z_Depth for you Z input. In real world (and Vray
>>>> for exemple) the distance a of a card right in front of a camera would not
>>>> have a single value, as the distance on the sides of the frame would be
>>>> greater than right in front of the camera.
>>>> See attached pictures that illustrate this point.
>>>>
>>>> (Also, for that first expression, why not using cx and cy instead of
>>>> that complex expression)
>>>>
>>>>
>>>> Cheers
>>>>
>>>> *Erwan* LEROY
>>>> www.erwanleroy.com
>>>>
>>>> On Fri, Oct 28, 2016 at 4:04 PM, Vincent Langer <m...@vincentlanger.com
>>>> > wrote:
>>>>
>>>>> Hi there,
>>>>>
>>>>> I am trying to get the math right calculating the worldpositions from
>>>>> z information + camera matrices.
>>>>>
>>>>> my result is close to the rendered position pass - but does not line
>>>>> up perfect.
>>>>>
>>>>> Maybe one of the brains out there can tell me what I am missing/doing
>>>>> wrong
>>>>>
>>>>> This is just a proof of concept for the right math and I use the
>>>>> C44Matrix node from Ivan Busquets.
>>>>>
>>>>> cheers,
>>>>> Vincent
>>>>>
>>>>> --
>>>>> Vincent Langer
>>>>> Uhlandstr. 29
>>>>> 71634 Ludwigsburg
>>>>> +49 176 965 177 61
>>>>> www.vincentlanger.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
>>>>
>>>>
>>>
>>>
>>> --
>>> Vincent Langer
>>> Uhlandstr. 29
>>> 71634 Ludwigsburg
>>> +49 176 965 177 61
>>> www.vincentlanger.com
>>>
>>
>>
>> --
>> *Erwan* LEROY
>> www.erwanleroy.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
>>
>>
>
>
> --
> Vincent Langer
> Uhlandstr. 29
> 71634 Ludwigsburg
> +49 176 965 177 61
> www.vincentlanger.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

Reply via email to