CompStart

ProAulasCursosElementosSoftware

CompStart

Domine efeitos visuais com técnicas de ponta.

Aprendizado

CursosLiçõesRecursos ProRecursosSoftware

Tools

Tech CheckDisplay CheckMotion BlurCIE 1931PhysLightNuke Tools

Empresa

InstructorMissãoImpressumPrivacidadeTermos

Projetos

Moray RenderEXR ConverterOCIO.ccNuke ToolsDerekVFX

Follow

YouTubeInstagramTikTokThreadsContato

© 2026 CompStart. Todos os direitos reservados.

Chaves Suíças

ToolSets / Keyer
Keyer

2026-09-07

ToolSets/keyer/swissKeys.nk

tecla
fosco
legenda de cores
posição
CIE-LCH
esfera
cubo
alfa
View on GitHub

Keyer de posição e cor com atenuação esférica ou cúbica em espaço de posição, HSV ou CIE-LCH, gravando uma máscara suave em um canal de saída escolhido.

O Swiss Keys cria uma máscara alfa a partir de um ponto selecionado no espaço de posição ou de cor. Escolha uma camada de entrada, um tipo (posição, cor ou CIE-LCH) e uma forma (esfera ou cubo) e, em seguida, defina a seleção e o intervalo de ponto preto/ponto branco que controla o decaimento.

Use esta função quando precisar de uma chave virtual em torno de uma cor amostrada ou valor de posição, em vez de uma correção de croma padrão. Opcionalmente, oferece transformação logarítmica no caminho CIE-LCH, escalas x/y/z por eixo na esfera, inversão e ajuste gama do matte antes de copiá-lo para o canal de saída escolhido.

No grafo de nós, ele embaralha a camada de entrada, converte para o espaço selecionado, avalia a distância da esfera ou do cubo em relação à seleção com limites de suavização e, em seguida, grava o alfa resultante no fluxo original.

Script code

set cut_paste_input [stack 0]
version 9.0 v7
push $cut_paste_input
Group {
name swissKeys
tile_color 0x421010ff
selected true
xpos 74
ypos 14481
addUserKnob {20 positionSelector}
addUserKnob {41 in l "input layer" T Shuffle1.in}
addUserKnob {41 to0 l "output channel" T Copy1.to0}
addUserKnob {41 selection T sphere.selection}
addUserKnob {6 logTransform l log -STARTLINE}
addUserKnob {4 type M {position color CIE-LCH}}
addUserKnob {4 shape -STARTLINE M {sphere cube "" "" ""}}
addUserKnob {7 start l blackpoint}
addUserKnob {7 end l whitepoint}
end 1
addUserKnob {7 xScale R -1 1}
addUserKnob {7 yScale R -1 1}
addUserKnob {7 zScale R -1 1}
addUserKnob {6 invert +STARTLINE}
addUserKnob {7 gamma_2 l gamma R 0.2 2}
gamma_2 1
addUserKnob {26 ""}
addUserKnob {26 lbl l "" +STARTLINE T "swissKeys v1.91"}
addUserKnob {22 btn l DerekVFX.ca T "nuke.tcl('start', 'https://derekvfx.ca')" +STARTLINE}
}
Viewer {
inputs 0
frame_range 1001-1001
colour_sample_bbox {-0.181250006 0.07291666418 -0.1802083403 0.07395832986}
samplepoints {{-0.7458333373 -0.3479166627}
  }
input_process false
name Viewer1
xpos 879
ypos 851
}
Input {
inputs 0
name Input
xpos 445
ypos 66
}
Dot {
name Dot2
xpos 479
ypos 153
}
set Ne49ad400 [stack 0]
Shuffle {
name Shuffle1
xpos 232
ypos 149
}
Dot {
name Dot3
xpos 266
ypos 243
}
set Ne49acc00 [stack 0]
Dot {
name Dot4
xpos 156
ypos 243
}
set Ne49ac800 [stack 0]
Dot {
name Dot5
xpos -15
ypos 243
}
Colorspace {
colorspace_out CIE-LCH
name Colorspace2
xpos -49
ypos 310
}
set Nc935400 [stack 0]
Colorspace {
colorspace_out Cineon
name Colorspace5
xpos -121
ypos 355
disable {{"parent.logTransform != 1"}}
}
set Ceb81d400 [stack 0]
push $Nc935400
ShuffleCopy {
inputs 2
red blue2
blue red
alpha alpha2
name ShuffleCopy1
xpos -49
ypos 418
}
Dot {
name Dot6
xpos -15
ypos 484
}
push $Ne49ac800
Colorspace {
colorspace_out HSV
name Colorspace1
xpos 122
ypos 314
}
set N8c020800 [stack 0]
clone $Ceb81d400 {
xpos 45
ypos 356
selected false
}
push $N8c020800
Copy {
inputs 2
from0 rgba.blue
to0 rgba.blue
name Copy2
xpos 122
ypos 400
}
push $Ne49acc00
clone $Ceb81d400 {
xpos 232
ypos 358
selected false
}
Switch {
inputs 3
which {{parent.type}}
name Switch1
xpos 232
ypos 480
}
Dot {
name Dot7
xpos 266
ypos 575
}
set Ne49adc00 [stack 0]
Dot {
name Dot9
xpos 129
ypos 575
}
set N92add400 [stack 0]
Dot {
name Dot8
xpos -13
ypos 575
}
Expression {
temp_name1 rader
temp_expr1 "sqrt(input.width**2 + input.height**2)"
temp_name2 sph
temp_expr2 "sqrt( (r-selection.r)**2 + (g-selection.g)**2 + (b-selection.b)**2 )"
temp_name3 cube
temp_expr3 (1-abs((selection.r-r)*(selection.g-g)*(selection.b-b))/rader)
expr0 cube
expr1 selection.r
expr3 1-(sph/rader)
name Expression2
xpos -47
ypos 659
addUserKnob {20 User}
addUserKnob {18 selection}
selection {{swissKeys.sphere.selection.r} {swissKeys.sphere.selection.g} {swissKeys.sphere.selection.b}}
addUserKnob {6 selection_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
Dot {
name Dot10
xpos -13
ypos 743
}
push $N92add400
Expression {
temp_name2 cub
temp_expr2 max(abs(selection.r-r),abs(selection.g-g),abs(selection.b-b))
expr3 smoothstep(start,end,1-cub)
name cube
xpos 95
ypos 672
addUserKnob {20 User}
addUserKnob {18 selection}
selection {{sphere.selection.r} {sphere.selection.g} {sphere.selection.b}}
addUserKnob {6 selection_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
push $Ne49adc00
Expression {
temp_name1 rader
temp_expr1 "sqrt(input.width**2 + input.height**2)"
temp_name2 sph
temp_expr2 "sqrt( (r/x2-selection.r/x2)**2 + (g/y2-selection.g/y2)**2 + (b/z2-selection.b/z2)**2 )"
expr3 smoothstep(start,end,1-sph)
name sphere
xpos 232
ypos 606
addUserKnob {20 User}
addUserKnob {7 x2}
x2 {{(1/(1-((lerp(-1,0,1,1,xScale))))-1)/2}}
addUserKnob {7 y2}
y2 {{(1/(1-((lerp(-1,0,1,1,yScale))))-1)/2}}
addUserKnob {7 z2}
z2 {{(1/(1-((lerp(-1,0,1,1,zScale))))-1)/2}}
addUserKnob {7 xx}
xx {{lerp(-1,0,1,2,xScale)}}
addUserKnob {7 yy}
yy {{lerp(-1,0,1,2,yScale)}}
addUserKnob {7 zz}
zz {{lerp(-1,0,1,2,zScale)}}
addUserKnob {18 selection}
selection {0 0 0}
addUserKnob {6 selection_panelDropped l "panel dropped state" -STARTLINE +HIDDEN}
}
Switch {
inputs 3
which {{parent.shape}}
name Switch2
xpos 232
ypos 739
}
Invert {
channels alpha
name Invert1
xpos 232
ypos 857
disable {{"parent.invert == 0"}}
}
Gamma {
channels alpha
value {{parent.gamma_2}}
name Gamma1
xpos 232
ypos 949
}
Dot {
name Dot1
xpos 266
ypos 1045
}
push $Ne49ad400
Copy {
inputs 2
from0 rgba.alpha
to0 rgba.alpha
bbox B
name Copy1
xpos 445
ypos 1035
}
Output {
name Output1
xpos 445
ypos 1176
}
end_group