Hi Adams,
Usually there are two cases where you can have NAN.
The first one would be if for one deep opacity sample you have NO
value. The deep opacity sample has an opacity but no color so the
deep to image is freaking out.
Even if you want to assign a black value to a deep sample, you need
to have a value in your alpha channel.
The other case (rare but it happens) is when you are deepmerging two
deepcolor streams and unfortunately one sample has the same position
in space than an other sample from the other stream.
The quick fix is to change slighty the depth of one of the stream by
using a deeptransform in Z.
For pgBokeh, I know exactly what you are facing.
Before we've created our own deepholdout at Fuel, I've found one
trick to kind of doing what you want.
It's expensive but it does the trick.
You need to defocus the color and the alpha separately and combine
with a copy after pgBokeh.
How ?
First you have to create an holdout for the color : put a fully black
color on the deep opacity you are using to cut out with a Constant (
0,0,0,1) and and a deeprecolor.
Then do a deep merge between the deep color stream and the "black
stream". Then you have a deep holdout but the alpha is wrong because
is the combinaison of the two streams.
So you need to deep holdout the alpha.
For doing that you have to use the same "black stream" and merge it
with your deep color stream that you have to turn into fully white
(same technic as above : recolor your deep color stream with a white
constant (1,1,1,1). If you merge the "black" and the "white" stream
you will have the holdout of the "alpha" but in the color pass.
Now you can defocus each stream separately and combine then with copy
alpha.
You have to expect heavy renders but that the only way i've found at
that time.
Good luck.
Denis
-FuelVFX
2012/7/12 Adam Hazard <[email protected] <mailto:[email protected]>>
Thanks for the reply. I do know why I am getting nans after the
recolor, because exactly what you describe, they are different
alpha channels between the 2. I didn't really elaborate on my
issue, because I was just hoping for a quick answer if copying
deep values was possible. Anyways, what I am trying to do is 2
deep operations in a row, but cant seem to figure out a way.
First operation is cutting my renders with a deep holdout. Then
trying to feed that into a pgBokeh through the deep input. I was
hoping I could cut the render, and then copy the deep values back
into the stack after the holdout and then feed that into the
pgBokeh.
But yeah, the recolor gives nans because one alpha is full,
uncut, while the other is cut. I wish the recolor had some
options to choose which alpha to use or something, or to do no
alpha operations. Otherwise it works just fine between the deep
and regular uncut rgba.
And yeah I was surprised to find out you loose the deep values
after a holdout, and I really hope they provide something soon in
an update. Anyways, any other ideas?
Thanks again,
Adam
On 07/11/2012 05:49 PM, Denis SCOLAN wrote:
Hi Adam,
If you are trying to copy the color values of a 3D render on its
own deep opacity you should use the deep recolor node for sure.
The reasons why you have artifact is because your deep opacity
isn't matching at 100% the alpha channel of your 3d render.
If you ping-pong between the deep opacity and the alpha you'll
see a difference.
Why ? Because the filter setting you've got on your render
(Blackman-Harris, Mitchell, etc.) aren't the same than the deep
image filter.
Basically the only filter that is the same for both is Box filter.
So why do you have artifacts ? To understand that issue you have
to know that the deep recolor is doing an Unpremult of your 3D
render and then "multiply" it by the opacity level of the deep
stream.
It's like if you are repremultiplying a 3d render in Nuke with
different alpha than the original... you'll have edges
artifacts. Well, it is the same for deep stream.
Here is a way to avoid this issue :
Before plug 2D stream into the deep stream with a deep recolor,
just do an unpremultiplacation test to see if you don't have
illegal values (negative valus, nan, extremly high values).
Then I strongly recommend to really do the unpremultiplication
before and then the trick is to use the "alpha" of the deep
image (with a deeptoimage) to remultiply the image before plugin
it into the deep recolor node.
It's a bit of an overkill but it works perfectly well.
For the deepholdout question, in the current state of Nuke you
can't have a deep stream after the deep holdout.
But I'm sure Nuke will do it in the future.
I hope it helps.
Denis.
- FuelVFX
2012/7/12 Adam Hazard <[email protected]
<mailto:[email protected]>>
Hi,
Anyone know if it is possible to copy deep values, and add
them into a non deep image? Maybe something like
image>deepFromImage>deepExpression(with copied deep values
from a deep read)? Deep recolor doesn't seem to be doing
the trick and is adding some edge artifacts and nans.
Or on the other hand, and slightly related, if it is
possible to some how keep deep information after a deep holdout?
Thanks for any help.
-Adam
_______________________________________________
Nuke-users mailing list
[email protected]
<mailto:[email protected]>,
http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
_______________________________________________
Nuke-users mailing list
[email protected]
<mailto:[email protected]>,http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
_______________________________________________
Nuke-users mailing list
[email protected]
<mailto:[email protected]>,
http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users
_______________________________________________
Nuke-users mailing list
[email protected]
<mailto:[email protected]>,
http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-users