Voronoi Gradient

Nuke implementation for 2D Gradients. Create an arbitrary number of color-samples in 2D and produce a smooth, natural interpolation over the entire image.

Updated: 29 October 2019

Author: nikowuesti

Compatible Nuke versions: 8.0 or later

Compatibility: Linux, Mac, Windows

Nuke implementation for 2D Gradients. Proof of Concept.

Create an arbitrary number of color-samples in 2D and produce a smooth, natural interpolation over the entire image.

VoronoiGradient 06

VoronoiGradient 07

 

The Gizmo uses Natural Neigbor Interpolation to calculate the pixels inbetween samples, using Blinkscripts.

You can also output the underlying Voronoi Diagram or play with the smoothness value to control the amount of the softening (0 = Voronoi Diagram, 1 = Accurate Natural Neighbor Interpolation).

Another important function is the ability to sample input colors, instead of defining them yourself. Setting the Type to 'Sample' uses all created points to sample the input colors at given positions. Furthermore you can use the 'Fill' Type to interpolate missing information in any image. A premultipied input is required for this.

Changing the Colorspace will change the color falloff. This can be used to achieve the best artistic result. Setting the Colorspace to HSV for example, will interpolate the colors over the spectrum.

There are several tricks and hacks used in this Gizmo to make it work, so please report any bugs you find, I am sure there still are some.
The user knobs and the inside of the gizmo are well documented to help with understanding the concept.
(The algorithm implemented is not the elegant geometric process, but a simple brute-force method, which was easy to implement. This however makes the tool super slow and you might wanna use the speed optimization control to make it a little bit faster at the cost of some quality. That's why I would still consider the whole thing a proof of concept. Although, with my update to v2.7 I'd say we are production ready now :) )


Example 1:
Creating the NNI or respective Voronoi Diagram via feature points

VoronoiGradient 10

Example 2:
Using the Sample Type to generate a cleanplate

VoronoiGradient 09

 
Example 3:
Using the Fill Type to fill in missing information (driven by alpha)

VoronoiGradient 08

Example 4:
Using the Fill Type to generate a cleanplate

VoronoiGradient 11


Update to 2.7 (2019-10-28)
Fully reworked feature point value forwading to BlinkScript. For the 4th time. Animation of Feature Points not buggy anymore. (hopefully)
- Minor update to the UI

Update to 2.6 (2019-10-06)
- Fixed a bug that prevented the smoothness setting to be applied to the Fill mode
- Minor Speed Improvements for the Fill mode

- Works now with aspect ratios other than 1
- Updated the description above with more examples

Update to 2.5 (2019-10-05)
- Added gap filling mode
- Fully reworked feature point value forwading to BlinkScript. No point limit anymore.
- Updated a few knob labels, defaults, etc.

Update to 2.4 (2019-09-07)
- Added Smoothness parameter to the NNI 

Update to 2.3 (2019-09-07)
- Fixed a GPU related bug in the SetPoints Blinkscript

Update to 2.1 (2019-09-01)
- Fixed a namespace bug 
- Added pointcount to the UI

Update to 2.0 (2019-08-31)
- Reworked the core
- Points can be animated now, but this introduced a limit of 50 points for now (100 points broke the Blinkscript)
- the sample functionality is now handled by a blinkscript and not a TCL expression, which makes it more stable

Update to 1.2
- Fixed another Expression I forgot in 1.1

Update to 1.1
- Fixed the string separator declarations for some Expressions from ',' to 

Sign in or register to download or rate.