Nuke Tips – Frame Padding in Nuke

frame_padding_nuke_header

Frame Padding in Nuke? Pad Thai?

Most first timer to high-end compositing will often work with a video container like MOV or MP4 in After Effects or maybe Photoshop (when it support basic video editing).

Still the best approach when working with any compositing job is using image sequences.

### or %04d?

In Nuke, it support both the hash numbering (###) or the printf notation (%01d) to show the frame number padding.

For those who uses Shake, they will be familiar to the printf notation as Shake doesn’t support the hash numbering which both Nuke and After Effects support.

Every hash symbol indicates the possible frame padding so ### means three digits. The printf method relies on the number that you defined to show the total digits so %04d means four digits.

Why should I care for those digits?

For starter, it helps to know the difference between both methods as this can help you to identify the numbering on the actual file easier.

Another thing to consider is during actual collaboration project where it is best to synchronize with your other team members on which frame padding method and settings to use.

Nothing worse than knowing the 3D team is rendering out using 3 digits and the compositing team is using 4 digits for the filename render output.

Extra things to know

Nuke relies on the image sequence numbering to determine the frame range for the particular Read input.

For example: An image sequence labeled as “3D_Spaceship_010.exr” to “3D_Spaceship_184.exr” will only be read from frame 10 to 184 in your composition.

Also if you doing Python scripting in Nuke, take care you do not use any space in your output file name. You can always substitute it using underscore “_” and try to make it as a habit since accessing files using Windows command prompt and OSX/Linux Terminal will be not be a nightmare when you have spaces in the image sequence filename.

Here is a sample script…

Which only works for Windows? Problem is Nuke is available for three different platform aka Windows, OSX and Linux environment. Since I’m still learning the in and out of Nuke’s Python scripting (which they have an option to define the use the OS default user directory but I got no idea if it actually works on OSX and Linux), just change the file path to the appropriate location where you want it to save to see it in action.

set cut_paste_input [stack 0]
version 9.0 v1
push $cut_paste_input
Roto {
 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}
    {curvegroup Ellipse1 512 bezier
     {{cc
       {f 8192}
       {px
        {1 x42280000 x42c80000}
        {{{xc24fa8b8 -}      xc24fa8b8
       {xc24fa8b8 -}}
      {{0 -}      0
       {0 -}}}
        {{{x4339fffc 0 1 x418052c0 1}      x445bea03
       {x44ddc000 x418052c0 1 0 1}}
      {{x44a10000 0 1 xc10cede7 1}      x43b16f2e
       {x43cffffc xc10cede7 1 0 1}}}
        {{{x424fa8b8 -}      x424fa8b8
       {x424fa8b8 -}}
      {{0 -}      0
       {0 -}}}
        {{{0 -}      0
       {0 -}}
      {{xc24fa8c0 -}      xc24fa8c0
       {xc24fa8c0 -}}}
        {{{x438bfffe 0 1 x418052c0 1}      x44736a03
       {x44e98000 x418052c0 1 0 1}}
      {{x44acc000 0 1 xc10cede7 1}      x43e06f2e
       {x43fefffc xc10cede7 1 0 1}}}
        {{{0 -}      0
       {0 -}}
      {{x424fa8c0 -}      x424fa8c0
       {x424fa8c0 -}}}
        {{{x424fa8b8 -}      x424fa8b8
       {x424fa8b8 -}}
      {{0 -}      0
       {0 -}}}
        {{{x4339fffc 0 1 x418052c0 1}      x445bea03
       {x44ddc000 x418052c0 1 0 1}}
      {{x44b88000 0 1 xc10cede7 1}      x4407b797
       {x4416fffe xc10cede7 1 0 1}}}
        {{{xc24fa8b8 -}      xc24fa8b8
       {xc24fa8b8 -}}
      {{0 -}      0
       {0 -}}}
        {{{0 -}      0
       {0 -}}
      {{x424fa8c0 -}      x424fa8c0
       {x424fa8c0 -}}}
        {{{x42b7fff7 0 1 x418052bf 1}      x44446a02
       {x44d1ffff x418052bf 1 0 1}}
      {{x44acc000 0 1 xc10cede7 1}      x43e06f2e
       {x43fefffc xc10cede7 1 0 1}}}
        {{{0 -}      0
       {0 -}}
      {{xc24fa8c0 -}      xc24fa8c0
       {xc24fa8c0 -}}}}}
      {cc
       {f 8192}
       {px
        {1 x42280000 x42c80000}
        {{{xc24fa8b8 -}      xc24fa8b8
       {xc24fa8b8 -}}
      {{0 -}      0
       {0 -}}}
        {{{0 -}      0
       {0 -}}
      {{0 -}      0
       {0 -}}}
        {{{x424fa8b8 -}      x424fa8b8
       {x424fa8b8 -}}
      {{0 -}      0
       {0 -}}}
        {{{0 -}      0
       {0 -}}
      {{xc24fa8c0 -}      xc24fa8c0
       {xc24fa8c0 -}}}
        {{{0 -}      0
       {0 -}}
      {{0 -}      0
       {0 -}}}
        {{{0 -}      0
       {0 -}}
      {{x424fa8c0 -}      x424fa8c0
       {x424fa8c0 -}}}
        {{{x424fa8b8 -}      x424fa8b8
       {x424fa8b8 -}}
      {{0 -}      0
       {0 -}}}
        {{{0 -}      0
       {0 -}}
      {{0 -}      0
       {0 -}}}
        {{{xc24fa8b8 -}      xc24fa8b8
       {xc24fa8b8 -}}
      {{0 -}      0
       {0 -}}}
        {{{0 -}      0
       {0 -}}
      {{x424fa8c0 -}      x424fa8c0
       {x424fa8c0 -}}}
        {{{0 -}      0
       {0 -}}
      {{0 -}      0
       {0 -}}}
        {{{0 -}      0
       {0 -}}
      {{xc24fa8c0 -}      xc24fa8c0
       {xc24fa8c0 -}}}}}}
     {tx 1 x43560000 x44864000}
     {a osw x41200000 osf 0 str 1 spx x44800000 spy x44428000 sb 1 tt x40e00000}}}}}}
 toolbox {selectAll {
  { selectAll str 1 ssx 1 ssy 1 sf 1 }
  { 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 tt 7 }
  { 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}
 colorOverlay {0 0 0 0}
 lifetime_type "all frames"
 motionblur_shutter_offset_type centred
 source_black_outside true
 name Roto1
 selected true
 xpos -41
 ypos -169
}
set N4c46800 [stack 0]
Write {
 file I:/renders/test_roto_render_hash_###.jpg
 file_type jpeg
 checkHashOnRead false
 name HASH_Naming
 selected true
 xpos -41
 ypos -76
}
push $N4c46800
Write {
 file I:/renders/frame_padding/test_roto_render_printf_%04d.jpg
 file_type jpeg
 checkHashOnRead false
 version 1
 name printf_Naming
 selected true
 xpos 122
 ypos -76
}

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.