CompStart

ProLeccionesCursosElementosSoftware

CompStart

Domina los efectos visuales con técnicas de vanguardia.

Aprendizaje

CursosLeccionesFunciones ProRecursosSoftware

Tools

Tech CheckDisplay CheckMotion BlurCIE 1931PhysLightNuke Tools

Empresa

InstructorMisiónImpressumPrivacidadTérminos

Proyectos

Moray RenderEXR ConverterOCIO.ccNuke ToolsDerekVFX

Follow

YouTubeInstagramTikTokThreadsContacto

© 2026 CompStart. Todos los derechos reservados.

El mundo normal ante la cámara

ToolSets / Draw
Draw

2026-09-07

ToolSets/draw/normalWorldToCamera.nk

normales
cámara
transformar
utilidad
dibujar
espacio mundial
espacio de la cámara
View on GitHub

Transforma las normales del espacio global al espacio de la cámara utilizando la matriz global de una cámara conectada, con una salida empaquetada opcional de 0 a 1.

Normal World To Camera convierte un mapa de normales del espacio del mundo al espacio de la cámara. Introduce las normales en la primera entrada y la cámara en la segunda. El gizmo lee la matriz del mundo de la cámara, aplica la rotación inversa a las normales y renormaliza el resultado.

Úselo cuando un paso de pase o desarrollo visual requiera normales en el espacio de la cámara: reiluminación, trucos de sombreado o cualquier configuración que deba permanecer fija a la vista en lugar de a la escena.

Seleccione los canales del mapa normal en la función Shuffle. Active el formato de salida empaquetada para reasignar los vectores de -1 a 1 al rango de 0 a 1; déjelo desactivado para conservar los valores con signo. Los valores RGB se escriben de nuevo en la imagen de entrada.

Script code

set cut_paste_input [stack 0]
version 15.1 v3
push 0
push $cut_paste_input
Group {
 inputs 2
 name WorldToCameraNormals4
 tile_color 0x421010ff
 selected true
 xpos -2643
 ypos 36
 addUserKnob {20 User l worldToCameraNormals}
 addUserKnob {26 info l "" +STARTLINE T "World to Camera Space Normal Transform"}
 addUserKnob {41 in_1 l "Normal Map" T Shuffle1.in}
 addUserKnob {6 outputPacked l "Output Packed Format (0-1 Range)" +STARTLINE}
 outputPacked true
 addUserKnob {26 "" +STARTLINE}
 addUserKnob {32 btn l DerekVFX.ca T "nuke.tcl('start', 'https://derekvfx.ca')" +STARTLINE}
}
 Input {
  inputs 0
  name normals
  label "\[value number]"
  xpos -150
  ypos -57
 }
 Shuffle {
  name Shuffle1
  xpos -150
  ypos 33
 }
set Nbd7a9800 [stack 0]
 Expression {
  temp_name0 length
  temp_expr0 "sqrt(r*r + g*g + b*b)"
  expr0 r/length
  expr1 g/length
  expr2 b/length
  name Normalize
  xpos -150
  ypos 81
 }
 ColorMatrix {
  matrix {
      {{"\[value input1.world_matrix.0]"} {"\[value input1.world_matrix.1]"} {"\[value input1.world_matrix.2]"}}
      {{"\[value input1.world_matrix.4]"} {"\[value input1.world_matrix.5]"} {"\[value input1.world_matrix.6]"}}
      {{"\[value input1.world_matrix.8]"} {"\[value input1.world_matrix.9]"} {"\[value input1.world_matrix.10]"}}
    }
  invert true
  name CameraTransform
  xpos -150
  ypos 129
 }
 Expression {
  temp_name0 length
  temp_expr0 "sqrt(r*r + g*g + b*b)"
  expr0 r/length
  expr1 g/length
  expr2 b/length
  name Normalize2
  xpos -150
  ypos 177
 }
 Expression {
  expr0 "outputPacked ? r * 0.5 + 0.5 : r"
  expr1 "outputPacked ? g * 0.5 + 0.5 : g"
  expr2 "outputPacked ? b * 0.5 + 0.5 : b"
  name PackNormals
  xpos -150
  ypos 201
 }
push $Nbd7a9800
 Copy {
  inputs 2
  from0 rgba.red
  to0 rgba.red
  from1 rgba.green
  to1 rgba.green
  from2 rgba.blue
  to2 rgba.blue
  name Copy1
  xpos -150
  ypos 225
 }
 Output {
  name Output1
  xpos -150
  ypos 321
 }
 Input {
  inputs 0
  name camera
  label "\[value number]"
  xpos -40
  ypos -57
  number 1
 }
end_group