Nuke implementation for 2D Gradients. Create an arbitrary number of color-samples in 2D and produce a smooth, natural interpolation over the entire image.
Voronoi Gradient
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.
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
Example 2:
Using the Sample Type to generate a cleanplate
Example 3:
Using the Fill Type to fill in missing information (driven by alpha)
Example 4:
Using the Fill Type to generate a cleanplate
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 ,