métodos básicos en Nuke. / by Mauricio Ricaldi

Cuando trabajamos en Nuke, hay una serie de métodos básicos que usamos cotidianamente, sea para hacer arreglos, roto o mascaras mediante chromakey.

Veamos una serie de métodos y sus diagramas:

Para crear una mascara con roto desde una imagen fuente, el resultado no dará la imagen RGBA cortada con su canal alfa, para poderlo unirlo con un simple merge (over).

Donde en la entrada 1 va el canal alfa y en la 2 la imagen rgb.

Donde en la entrada 1 va el canal alfa y en la 2 la imagen rgb.


Aca el script en codigo de Nuke:

set cut_paste_input [stack 0]
version 9.0 v1
Roto {
inputs 0
output alpha
curves {{{v x3f99999a}
{f 0}
{n
 {layer Root
{f 0}
{t x44800000 x44428000}
{a pt1x 0 pt1y 0 pt2x 0 pt2y 0 pt3x 0 pt3y 0 pt4x 0 pt4y 0 ptex00 0 ptex01 0 ptex02 0 ptex03 0 ptex10 0 ptex11 0 ptex12 0 ptex13 0 ptex20 0 ptex21 0 ptex22 0 ptex23 0 ptex30 0 ptex31 0 ptex32 0 ptex33 0 ptof1x 0 ptof1y 0 ptof2x 0 ptof2y 0 ptof3x 0 ptof3y 0 ptof4x 0 ptof4y 0 pterr 0 ptrefset 0 ptmot x40800000 ptref 0}}}}}
toolbox {createBezier {
{ createBezier str 1 ssx 1 ssy 1 sf 1 sb 1 tt 4 }
{ createBezierCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ createBSpline str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ createEllipse str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ createRectangle str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ createRectangleCusped str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ brush str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ eraser src 2 str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ clone src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ reveal src 3 str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ dodge src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ burn src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ blur src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ sharpen src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
{ smear src 1 str 1 ssx 1 ssy 1 sf 1 sb 1 }
} }
toolbar_brush_hardness 0.200000003
toolbar_source_transform_scale {1 1}
toolbar_source_transform_center {1024 778}
name Roto1
selected true
xpos 114
ypos -101
}
push $cut_paste_input
Dot {
name Dot1
label Imagen
note_font_size 22
selected true
xpos 292
ypos -12
}
ShuffleCopy {
inputs 2
name ShuffleCopy1
selected true
xpos 114
ypos -16
}
Premult {
name Premult1
selected true
xpos 114
ypos 10
}

A veces en necesario hacer una rotoscopia que siga a algún objeto,  para esto simplemente añadimos el tracker al arbol.

Debemos primero trackear la imagen con uno o varios trackers segun sea necesario.

Luego lo movemos debajo del roto, y cambiamos su atributo a "match moving" así seguirá lo que trackeamos anteriormente, no olviden poner el reference frame sea el mismo donde dibujamos el roto.



ChromaKey

Para crear chromaKey simples podemos comenzar con este diagrama, donde usamos un nodo Keylight para extraer la mascara en el canal alfa y luego combinarlo con la imagen original, así evitar cualquier cambio en el color.

Una vez que tenemos la imagen con su mascara debemos quitar lo que llamamos "spill" que es el color del fondo que invade y colorea la imagen, ejemplo un actor en camisa blanca sobre fondo verde, el color invadirá la camisa en los bordes.

Despill

Hay un par de expresiones en Nuke para hacer esto, la formula básica para fondo verde es: g>(r+b)/2?(r+b)/2:g  donde si el verde es mayor al la media del rojo mas el azul entonces el verde toma el valor de ese resultado así quitando el color verde de la imagen si no mantiene el verde (en el caso de tonos oscuros). En otras palabras lo que hace es quitar la saturacion del verde nivelando los tres valores rgb.

para fondos verdes, escribimos la expresión en el canal verde (g)

para fondos verdes, escribimos la expresión en el canal verde (g)

para fondos azules en el canal azul (b)

para fondos azules en el canal azul (b)

Acá ambas expresiones:

  • Verde: g>(r+b)/2?(r+b)/2:g
  • Azul: b>(r+g)/2?(r+g)/2:b

Finalmente premultiplicamos todo para obtener la imagen RGB y su mascara cortada.

Por lo general usamos mas de un keylight para crear la mascara del chromakey, un metodo comun es usar dos, uno que nos tome el centro del objeto o personaje sin mucho detalle pero manteniendo un la mascara uniforme por dentro y otro keylight que haga los detalles, combinando ambos podemos obtener una mascara mas detallada y perfecta.

Estos son diagramas básicos, de uso general en Nuke, espero que les sea útil..  MR.


He aca el codigo para nuke del chromaKey:

set cut_paste_input [stack 0]
version 9.0 v1
push $cut_paste_input
Dot {
name Dot2
label Imagen
note_font_size 22
selected true
xpos -323
ypos -62
}
set N19bfb400 [stack 0]
OFXuk.co.thefoundry.keylight.keylight_v201 {
show "Final Result"
unPreMultiply false
screenColour {0 0 0}
screenGain 1
screenBalance 0.5
alphaBias {0.5 0.5 0.5}
despillBias {0.5 0.5 0.5}
gangBiases true
preBlur 0
"Screen Matte" 0
screenClipMin 0
screenClipMax 1
screenClipRollback 0
screenGrowShrink 0
screenSoftness 0
screenDespotBlack 0
screenDespotWhite 0
screenReplaceMethod "Soft Colour"
screenReplaceColour {0.5 0.5 0.5}
Tuning 0
midPoint 0.5
lowGain 1
midGain 1
highGain 1
"Inside Mask" 0
sourceAlphaHandling Ignore
insideReplaceMethod "Soft Colour"
insideReplaceColour {0.5 0.5 0.5}
Crops 0
SourceXMethod Colour
SourceYMethod Colour
SourceEdgeColour 0
SourceCropL 0
SourceCropR 1
SourceCropB 0
SourceCropT 1
balanceSet false
insideComponent None
outsideComponent None
cacheBreaker true
name Keylight1
selected true
xpos -516
ypos -66
}
push $N19bfb400
ShuffleCopy {
inputs 2
name ShuffleCopy2
selected true
xpos -357
ypos 14
}
Expression {
expr1 "g>(r+b)/2?(r+b)/2:g\n"
name Expression1
label DESPILL
selected true
xpos -357
ypos 49
}
Premult {
name Premult2
selected true
xpos -357
ypos 99
}