CompStart

ProLessonsCoursesElementsSoftware

CompStart

Master visual effects with cutting-edge techniques.

Learning

CoursesLessonsPro FeaturesAssetsSoftware

Tools

Tech CheckDisplay CheckMotion BlurCIE 1931PhysLightNuke Tools

Company

InstructorMissionImpressumPrivacyTerms

Projects

Moray RenderEXR ConverterOCIO.ccNuke ToolsDerekVFX

Follow

YouTubeInstagramTikTokThreadsContact

© 2026 CompStart. All rights reserved.

Frame Hold Advanced

ToolSets / Utility
Utility

2026-09-07

ToolSets/utility/frameHoldAdvanced.nk

utility
framehold
time
hold
rounding
frame
View on GitHub

Hold a chosen frame with optional rint, floor, ceil, or none rounding on the input frame value.

Frame Hold Advanced is a small utility group around Nuke’s FrameHold. It exposes an input frame control and a rounding mode so fractional frame numbers can be resolved before the hold is applied.

Use it when a freeze must track a driven or animated frame value and you need explicit control over how that value is quantized. Rounding choices are rint, floor, ceil, and none.

In the comp it behaves like a standard frame hold: the selected (and optionally rounded) input frame is held for the downstream stream. The group surface links the main controls for quick access in the properties panel.

Script code

set cut_paste_input [stack 0]
version 12.1 v4
push $cut_paste_input
Group {
 name frameHoldAdvanced
 tile_color 0x421010ff
 selected true
 xpos -1101
 ypos 352
 addUserKnob {20 User l template}
 addUserKnob {41 input_frame l "input frame" T FrameHold1.input_frame}
 addUserKnob {4 rounding M {rint floor ceil none}}
 addUserKnob {26 ""}
 addUserKnob {26 lbl l "" +STARTLINE T "Template v1.0"}
 addUserKnob {22 btn l DerekVFX.ca T "nuke.tcl('start', 'https://derekvfx.ca')" +STARTLINE}
}
 Input {
  inputs 0
  name Input
  xpos 447
  ypos 61
 }
set Nd764800 [stack 0]
 Output {
  name Output1
  xpos 447
  ypos 1055
 }
push $Nd764800
 FrameHold {
  first_frame 2
  name FrameHold1
  xpos 584
  ypos 337
  addUserKnob {20 User}
  addUserKnob {4 rounding M {rint floor ceil none}}
  rounding floor
  addUserKnob {7 input_frame}
  input_frame 0.332
  addUserKnob {3 output_frame}
  output_frame {{"\[python -execlocal node\\ =\\ nuke.thisNode()\\nrounding\\ =\\ node.knob('rouding').getValue()\\ninput_frame\\ =\\ node.knob('input_frame').getValue()\\noutput\\ =\\ 0\\nif\\ rounding\\ ==\\ 'rint':\\n\\ \\ \\ \\ output\\ =\\ input_frame\\nelif\\ rounding\\ ==\\ 'floor':\\n\\ \\ \\ \\ output\\ =\\ 10\\nelif\\ rounding\\ ==\\ 'ceil':\\n\\ \\ \\ \\ output\\ =\\ 20\\nelif\\ rounding\\ ==\\ 'none':\\n\\ \\ \\ \\ output\\ =\\ 30\\nret\\ output]"}}
 }
end_group