CompStart

Pro레슨코스엘리먼트소프트웨어

CompStart

최첨단 시각효과 기술을 마스터하세요.

학습

코스레슨Pro 기능에셋소프트웨어

Tools

Tech CheckDisplay CheckMotion BlurCIE 1931PhysLightNuke Tools

회사

Instructor미션임프레숨개인정보처리방침이용약관

프로젝트

Moray RenderEXR ConverterOCIO.ccNuke ToolsDerekVFX

Follow

YouTubeInstagramTikTokThreads문의

© 2026 CompStart. All rights reserved.

스캔라인 렌더링 고급

ToolSets / 3D
3D

2026-09-07

ToolSets/3d/scanlineRenderAdvanced.nk

3D
스캔라인
세우다
깊은
버티다
오버스캔
aov
공익사업
View on GitHub

ScanlineRender 래퍼로, 별도의 GUI와 렌더링 샘플/스케일, 동적 오버스캔, 딥 홀드아웃 소프트 확장 및 AOV 벡터 출력을 제공합니다.

Scanline Render Advanced는 Nuke의 ScanlineRender를 래핑하여 포맷, 프레임 범위, 오버스캔, 샘플 필터, 앤티앨리어싱, Z-블렌드 모드 및 셔터에 대한 연동 컨트롤을 제공합니다. 또한 GUI와 렌더링 샘플 수, 그리고 배율을 별도로 표시하여 뷰어는 가볍게 유지하면서 최종 렌더링에서는 더 높은 샘플링 속도를 사용할 수 있도록 합니다.

오버스캔은 동적 값에 의해 결정되며 활성 GUI 또는 렌더링 스케일을 곱합니다. 딥 홀드아웃 입력은 이에 맞춰 포맷되며, 딥 홀드아웃 전에 딥 프론트/백에 대한 소프트 확장 옵션을 선택적으로 적용할 수 있습니다. 뷰티 패스는 선택 가능한 업레즈 필터를 통해 선택한 형식으로 다시 포맷됩니다.

홀드아웃, 모션 또는 셰이더 벡터를 사용하는 3D/딥 파이프라인에서 ScanlineRender가 필요하고, 인터랙티브 품질과 배치 품질 간의 명확한 구분이 필요한 경우에 사용하십시오. AOV에는 출력 벡터, 표면 점(P) 및 표면 법선(N)이 포함됩니다.

Script code

set cut_paste_input [stack 0]
version 12.1 v4
push $cut_paste_input
Group {
 name scanlineRenderAdvanced
 onCreate "import nuke\n\n#zz = nuke.FrameRange('100-200')\n#print zz.frames()\n\nff = nuke.Root().firstFrame()\nlf = nuke.Root().lastFrame()\n\nnuke.thisNode().knob('fr').setValue('\{\}-\{\}'.format(ff, lf))\n\n\n\n"
 tile_color 0x421010ff
 label "\[value gui_samples] : \[value render_samples] - \[value overscan_dynamic]"
 addUserKnob {20 User l ScanlineRender}
 addUserKnob {41 format T Constant1.format}
 addUserKnob {1 fr l "frame range" -STARTLINE}
 fr 1-100
 addUserKnob {41 overscan_dynamic l overscan T ScanlineRender1.overscan_dynamic}
 addUserKnob {41 filter l "sample filter" T ScanlineRender1.filter}
 addUserKnob {41 antialiasing -STARTLINE T ScanlineRender1.antialiasing}
 addUserKnob {41 zblend_mode l "Z-blend mode" -STARTLINE T ScanlineRender1.zblend_mode}
 addUserKnob {41 shutter T ScanlineRender1.shutter}
 addUserKnob {41 gui_samples l "gui samples" T ScanlineRender1.gui_samples}
 addUserKnob {7 gui_scale l "gui scale" -STARTLINE R 0.1 1}
 gui_scale 1
 addUserKnob {41 render_samples l "render samples" T ScanlineRender1.render_samples}
 addUserKnob {7 render_scale l "render scale" -STARTLINE R 1 10}
 render_scale 1
 addUserKnob {41 filter_1 l "uprez filter" T Reformat2.filter}
 addUserKnob {41 expand l "deep soft expand" T DeepExpression1.expand}
 addUserKnob {26 ""}
 addUserKnob {26 lbl l "" t "July 12, 2019- added overscan\nJuly 19, 2019 - added soft deep and dynamic scale 1.2\nJuly 24, 2019 - added deep proxy scale 1.3" +STARTLINE T "ScanlineRender Advanced v1.3"}
 addUserKnob {22 btn l DerekVFX.ca T "nuke.tcl('start', 'https://derekvfx.ca')" +STARTLINE}
 addUserKnob {20 aov l AOV}
 addUserKnob {41 output_shader_vectors l "output vectors" T ScanlineRender1.output_shader_vectors}
 addUserKnob {41 P_channel l "surface point" T ScanlineRender1.P_channel}
 addUserKnob {41 N_channel l "surface normal" T ScanlineRender1.N_channel}
}
 Constant {
  inputs 0
  name Constant1
  xpos 684
  ypos 245
 }
set Ndd11400 [stack 0]
 Dot {
  name Dot5
  note_font_size 40
  xpos 888
  ypos 272
 }
 Dot {
  name Dot4
  note_font_size 40
  xpos 888
  ypos 741
 }
 Input {
  inputs 0
  name deepHoldout
  xpos 84
  ypos 245
  number 2
 }
 DeepReformat {
  format {{{parent.Constant1.format}}}
  resize none
  pbb true
  name DeepReformat1
  xpos 84
  ypos 271
 }
set Ndd10400 [stack 0]
 DeepReformat {
  type scale
  scale {{parent.guiScale.scale}}
  pbb true
  name deepReformatGUI
  xpos -41
  ypos 346
 }
push $Ndd10400
 DeepReformat {
  type scale
  scale {{parent.renderScale.scale}}
  pbb true
  name deepReformatRender
  xpos 84
  ypos 346
 }
 Switch {
  inputs 2
  which {{"\$gui"}}
  name Switch1
  label "\[value which]"
  xpos 84
  ypos 412
 }
 set Cdd37800 [stack 0]
 Dot {
  name Dot3
  note_font_size 40
  xpos 118
  ypos 611
 }
 Input {
  inputs 0
  name cam
  xpos 284
  ypos 245
  number 1
 }
 Dot {
  name Dot2
  note_font_size 40
  xpos 318
  ypos 502
 }
 Input {
  inputs 0
  name scene
  xpos 484
  ypos 245
 }
push $Ndd11400
 Reformat {
  type scale
  scale {{gui_scale}}
  name guiScale
  xpos 559
  ypos 346
 }
push $Ndd11400
 Reformat {
  type scale
  scale {{render_scale}}
  name renderScale
  xpos 684
  ypos 346
 }
clone $Cdd37800 {
  inputs 2
  xpos 684
  ypos 412
  selected false
 }
 Dot {
  name Dot1
  note_font_size 40
  xpos 718
  ypos 502
 }
 ScanlineRender {
  inputs 3
  conservative_shader_sampling false
  antialiasing high
  overscan {{"\$gui ? overscan_dynamic*guiScale.scale : overscan_dynamic*renderScale.scale"}}
  samples {{"\$gui ? gui_samples : render_samples"}}
  shutteroffset centred
  motion_vectors_type distance
  name ScanlineRender1
  label "\[value samples]"
  xpos 484
  ypos 492
  addUserKnob {20 User}
  addUserKnob {3 gui_samples}
  gui_samples 1
  addUserKnob {3 render_samples}
  render_samples 5
  addUserKnob {7 overscan_dynamic R 0 100}
  overscan_dynamic 32.8
 }
 DeepExpression {
  chans1 deep
  deep.front "deep.front - \[value expand]"
  deep.back "deep.back + \[value expand]"
  name DeepExpression1
  xpos 484
  ypos 551
  disable {{"expand == 0"}}
  addUserKnob {20 User}
  addUserKnob {7 expand R 0 100}
  expand 30.4
 }
 DeepHoldout2 {
  inputs 2
  name DeepHoldout1
  xpos 484
  ypos 607
 }
 Reformat {
  format {{{parent.Constant1.format}}}
  pbb true
  name Reformat2
  xpos 484
  ypos 676
 }
 Switch {
  inputs 2
  name Switch2
  xpos 484
  ypos 737
  disable true
 }
 Output {
  name Output1
  xpos 484
  ypos 785
 }
end_group