IDistort tip

This is a small tip about the IDistort node in Nuke.
The most common workflow to use the IDistort node, is to copy 2 channels in your node stream (more often than not a noise texture) and use as UV channels for the IDistort to distort your input.

You may have noticed, when you use the UV-scale knob, the scale’s pivot seems to be in the bottom left rather than the centre.
This results in an offset of your plate you don’t really want.

That’s why I always, before copying my channels into my node stream, subtract them with the default UV-map (easily created with an expression node) which itself is multiplied with the double of the average intensity -heavy blur node- of the distortion input.
If you do that, the IDistort UV scaling seems to scale from the centre, rather than bottom left.

Small note: This tip is especially helpful using Noise textures
Play with the Switch node and the IDistort UV-scale knob to see the centre (red roto cirlce) change.

Here’s the code:

set cut_paste_input [stack 0]
version 9.0 v7
Roto {
inputs 0
curves {{{v x3f99999a}
{f 0}
{n
{layer Root
{f 2097152}
{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
{xc11aa3c0 0}
{x448011ae x443e46bc}
{x411aa400 0}
{0 xc11aa3c0}
{x448241ae x4442a6bc}
{0 x411aa3c0}
{x411aa400 0}
{x448011ae x444706bc}
{xc11aa3c0 0}
{0 x411aa3c0}
{x447bc35d x4442a6bc}
{0 xc11aa3c0}}}
{cc
{f 8192}
{px 1
{xc11aa3c0 0}
{0 0}
{x411aa400 0}
{0 xc11aa3c0}
{0 0}
{0 x411aa3c0}
{x411aa400 0}
{0 0}
{xc11aa3c0 0}
{0 x411aa3c0}
{0 0}
{0 xc11aa3c0}}}}
{tx 1 x44813000 x44436000}
{a g 0 b 0 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}
color {1 0 0 1}
colorOverlay {0 0 0 0}
lifetime_type “all frames”
motionblur_shutter_offset_type centred
source_black_outside true
name Roto1
selected true
xpos 168
ypos -180
}
push $cut_paste_input
Noise {
size 30
zoffset {{curve x1 0 x100 6.014999513}}
center {640 360}
name Noise1
selected true
xpos -278
ypos -498
}
Dot {
name Dot3
selected true
xpos -244
ypos -429
}
set N35567370 [stack 0]
Dot {
name Dot1
selected true
xpos -244
ypos -341
}
set N5c46b30 [stack 0]
Expression {
inputs 0
expr0 x/width
expr1 y/height
name Expression1
selected true
xpos -90
ypos -421
}
push $N35567370
Blur {
size 1000
name Blur1
selected true
xpos -200
ypos -439
}
Multiply {
value 2
name DoubleIt
selected true
xpos -200
ypos -401
}
Merge2 {
inputs 2
operation multiply
bbox A
name Merge1
selected true
xpos -90
ypos -395
}
push $N5c46b30
Merge2 {
inputs 2
operation from
bbox A
name Merge2
selected true
xpos -90
ypos -345
}
Switch {
inputs 2
which 0.92
name Switch1
selected true
xpos -90
ypos -284
}
CheckerBoard2 {
inputs 0
name CheckerBoard1
selected true
xpos 47
ypos -540
}
Copy {
inputs 2
from0 rgba.red
to0 forward.u
from1 rgba.green
to1 forward.v
name Copy1
selected true
xpos 47
ypos -296
}
IDistort {
uv forward
uv_scale 100
name IDistort1
selected true
xpos 47
ypos -246
}
Merge2 {
inputs 2
name Merge3
selected true
xpos 47
ypos -180
}
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.