CompStart

ProLessonsCoursesElementsSoftware

CompStart

Learn visual effects with cutting-edge techniques.

Learning

CoursesLessonsPro FeaturesAssetsSoftware

Tools

Tech CheckDisplay CheckMotion BlurPhysLightNuke Tools

Company

InstructorMissionSitemapPrivacyTerms

Projects

Moray RenderEXR ConverterOCIO.ccNuke ToolsDerekVFX

Follow

YouTubeInstagramTikTokThreadsContact

© 2026 CompStart. All rights reserved.

Radial Distort

ToolSets / Filter
Filter

2026-09-07

ToolSets/filter/radialDistort.nk

filter
distort
warp
stmap
radial
uv
transform
View on GitHub

STMap radial warp for Nuke driven by rotation and a gamma-shaped falloff from frame center.

Radial Distort warps the incoming image with an STMap whose UVs are built in polar space. Rotation offsets the angular component of the map. Gamma is applied to the normalized radius channel before the STMap, so it shapes how the warp eases from center to edge.

Use it when you need a simple radial twist or distance-based stretch on a plate or render without wiring your own UV expressions. Two controls cover the common case: rotation for twist amount, gamma for radial response.

The group generates UV in rgb (rotated angle, gamma-weighted radius, rotation offset), maps the source through STMap in rgba, and outputs the remapped image. Drop it in-line as a filter, set rotation and gamma, and continue the comp.

Script code

set cut_paste_input [stack 0]
version 12.1 v4
push $cut_paste_input
Group {
 name radialDistort
 tile_color 0x421010ff
 selected true
 xpos -1126
 ypos 716
 addUserKnob {20 User l radialDistort}
 addUserKnob {7 rotation R -360 360}
 addUserKnob {7 gamma R 0 4}
 gamma 1.68
 addUserKnob {26 ""}
 addUserKnob {26 lbl l "" +STARTLINE T "RadialDistort v1.0"}
 addUserKnob {22 btn l DerekVFX.ca T "nuke.tcl('start', 'https://derekvfx.ca')" +STARTLINE}
}
 Input {
  inputs 0
  name Input
  xpos 447
  ypos 60
 }
set Nd732000 [stack 0]
 Multiply {
  value 0
  name Multiply1
  label "\[value value]"
  xpos 107
  ypos 286
 }
 Expression {
  temp_name0 radial
  temp_expr0 "((atan(x - center.x, y - center.y) +radians(rotation) ) + pi()) / pi()/2"
  temp_name1 offset
  temp_expr1 "(radians(rotation) *-1 ) /pi()/2"
  expr0 radial
  expr1 "sqrt(((x-center.x)**2) + ((y-center.y)**2))/diag"
  expr2 offset
  expr3 0
  name Expression3
  label "\[knob expr3]"
  xpos 107
  ypos 336
  addUserKnob {20 User}
  addUserKnob {7 diag}
  diag {{(sqrt(width**2+height**2)/2)}}
  addUserKnob {12 center}
  center {978 404}
 }
 Gamma {
  channels {-rgba.red rgba.green -rgba.blue none}
  value {{gamma}}
  name Gamma1
  xpos 107
  ypos 444
 }
push $Nd732000
 STMap {
  inputs 2
  channels rgba
  uv rgb
  name STMap3
  xpos 447
  ypos 574
 }
 Output {
  name Output1
  xpos 456
  ypos 1028
 }
end_group