The path to Nuke 12.1’s ParticleBlinkScript node
Particles are an important part of the VFX toolkit, from creating CG dust hits to crowds to full-on explosions.
Artists working in NukeX benefit from a robust particle system, allowing compositors to quickly create their own particle setups without needing to rely on a FX department for simple effects. Foundry’s efforts in optimising this system come in response to its growing usage and requests for more tools.
Our latest inroads into extending the functionality of the particle system resulted in the ParticleBlinkScript node, recently released as part of Nuke 12.1.
This node allows NukeX users and developers to write BlinkScripts which operate on particles, empowering them to write their own custom particle nodes, rather than relying on existing particle Ops.
Not only does this game-changing update offer more flexibility for developers, but it also allows users to write new particle scripts within NukeX without having to learn C++.
But what did it take to develop this fundamental feature? No small amount of patience, expertise, and an ingenious meeting of minds to put it in the hands of artists.
We sat down with Jerry Huxtable, Foundry’s own ‘father of the particle system’, and Mads Hagbarth Dambso of NordiskFilm Shortcut—creator of the BlinkScript-powered Higx Point Render, and one of the industry’s most prolific BlinkScript developers—to get insider insight into how both worked together to create something incredible.
The power of Blink
But before diving into the development of the ParticleBlinkScript node, it’s worth taking a step back and first exploring its parent—the BlinkScript node.
Powered by programming language Blink, the BlinkScript node allows developers to write any plug-in directly within Nuke. It’s also commonly used for prototyping and, whilst sharing similarities with C++, it's very fast and doesn't require users to be a C++ coder. As we’ve previously explored, these same time-saving benefits were experienced by Sony Pictures in the creation of Spider-Man: Into The Spider-Verse.
But whilst the BlinkScript node provides enhanced flexibility for developers and creative coders looking to write scripts that run on images, prior to Nuke 12.1, it didn’t support particles. Instead, developers relied on particle ops as part of Nuke’s particle system to write and compile particle scripts, and were denied the customizability and flexibility enjoyed by scripts powered by Blink.
“‘The foundation was there,” Mads comments of the particle system. “But there were small things where the team ran into limitations of what they could do. For example, we could make a particle spin but not rotate in a certain direction. We lacked the extra bit of control in order to make our creative vision work.’
It was in 2019 when Jerry Huxtable, Nuke Software Architect, first began work on offsetting these limitations. His aim: to create an equivalent BlinkScript node for particles to make the creative process quicker, easier, and more accessible.
Speaking from experience
Jerry joined Foundry thirteen years ago as a Senior Software Engineer, working on Hiero when it was known as Storm. He then moved into Foundry’s Design Enterprise team, working on modelling tool Modo, before rejoining the Nuke team two years ago. In 2018 he was recognised with a Sci-Tech award for his unmatched work on Nuke.
As the creator of Nuke’s particle system, having worked on it in his spare time, Jerry’s expertise and interest in this area meant that he was perfectly placed to offer insight into the performance of particles. As a result, one of his focus areas on rejoining the Nuke team was to improve their speed and efficiency as part of the particle system. The start of this work was delivered in the Nuke 11.3 release, which saw up to 6x faster particle simulations and 4x faster playback of particles in the viewer.
“We thought one of the ways to make them go faster might be to use Blink,” he tells us. “Essentially, we might be able to run particle systems on a GPU.” Whilst this latter aim has still yet to be realised, nonetheless early ideas and iterations for the ParticleBlinkScript node began to take shape.
“I wanted people to be able to do things that they couldn’t do with the particle system already,” Jerry continues. “For example, making particles flow around objects. This wasn’t possible unless you wanted to go in and start writing new nodes and scripts in C++.”
Running with this idea, Jerry wasted no time in getting it off the ground: “As a side project I wrote a proof of concept, to prove that we could actually use BlinkScript to manipulate particles.”
Meanwhile, Mads was doing his own interesting things with the particle system, Particle Streams and Blink. Watch below as he walks through the core principles of BlinkScript, when to use it and how to create particle-based BlinkScripts that compile in real time.
It was after this same talk that Mads and Jerry connected in light of their shared interests. Sharing his proof of concept for the ParticleBlinkScript node with Mads, the latter saw its potential immediately.
“At that point it just clicked,” Mads comments. “This is going to change everything—and it’s going to fix everything.”
What followed was an exchange of ideas between the like-minded pair. Jerry provided the foundation, whilst Mads provided ideas and feedback surrounding functionality for artists and developers.
As the two shared ideas and refined the ParticleBlinkScript node, Nuke’s Sprint 100 was rapidly approaching and took place in October 2019. This is a two-week period dedicated to creative product exploration, outside of the usual product roadmap.
Happily, it served as a major catalyst for getting the ParticleBlinkScript node into Nuke 12.1.
Speaking of the Sprint, Jerry tells us: “I proposed [the ParticleBlinkScript Node] as my project and spent two weeks getting it into shape. At that point we decided it was worth continuing development and putting into Nuke.”
The following months involved further testing and refinement by the wider Nuke team in making it a commercially viable feature—and the results speak for themselves. The ParticleBlinkScript node was released in Nuke 12.1 along with 14 additional gizmos that give artists a starting point to use it right away, while also providing examples for developers working with the ParticleBlinkScript node and BlinkScript in general.
Particles made perfect
The benefits of the ParticleBlinkScript node are immediately tangible for NukeX users—from artists and creatives to developers and coders.
Technical Directors working in Nuke 12.1 now enjoy more flexibility and functionality when using Nuke’s particle system.
The ParticleBlinkScript node not only allows TDs to write new particle scripts within Nuke without having to learn C++, but its inclusion in Nuke 12.1 along with 14 new gizmos provides additional documentation for developers wanting to learn how to work with BlinkScript.
And whilst TDs still need to know how to program, they don’t need to work outside of Nuke compiling scripts, installing plug-ins and so on. The Blink framework that powers the ParticleBlinkScriptNode streamlines plug-in development workflows significantly, as you no longer have to exit Nuke to compile your code.
An added advantage of the ParticleBlinkScript node is the ease with which TDs and teams can share whole particle plug-ins. Plug-ins can be simply sent into an email, copied into Nuke, and will run seamlessly at that point. The receiver does not need to be an expert coder, nor do they need to know the particle system inside-out.
Speaking of these benefits, Mads comments: “The limitations up till now was a lack of control. Now you have so much control, it’s hard to imagine the kind of things you cannot do.”
“It’s really future-proofed the particle system,” he continues. “‘The sky’s the limit as to what you can do. I really can’t wait for people to show what they can do with it.’
Collaboration is key
The ParticleBlinkScript node is part of a wider project that ultimately culminated to serve as the biggest update to the BlinkScript framework in years, involving updates and fixes to improve performance for GPU-accelerated nodes. This update included extensions to Nuke’s GPU processing architecture, resulting in significant performance enhancements for the Cara VR nodes which can take advantage of this architecture.
These serve as an example of the incremental improvements we’re making to Nuke to improve customizability, flexibility and collaboration for TDs and artists.
Yet this project tells another tale. The collaboration between Jerry and Mads in the development of the ParticleBlinkScript node is a prime example of how we can work with the Nuke community, gleaning invaluable insights and ideas, to create something truly incredible—together.
Future inroads into Nuke’s development that come off the back of community insight and collaboration include exciting features and tools that facilitate USD and machine learning workflows. Keep an eye out for future updates.
Explore the ParticleBlinkScript node for yourself in Nuke