# Kenn Hedin Kalvik - Professional Compositing Tutorials
> Professional Compositing Tutorials
Public Ghost content for AI and LLM tooling. This file includes a bounded export of public pages first, then recent public posts.
Append `.md` to any post or page URL to get the content in Markdown (for example, `/example-post.md`).
## Pages
### About
URL: https://www.keheka.com/about/
Last updated: 2025-12-03T15:29:40.000Z
Heya! 😊
I'm **Kenn** and I'm a **Compositing Supervisor** based in London, UK, with **12+ years of experience** working in the visual effects industry on high-end television/streaming shows and feature films.
My achievements include the contributions to multiple Oscar, Emmy, VES, and BAFTA awards and nominations, such as the **Emmy Award** for Outstanding Visual Effects on *Chernobyl,* and the **Oscar Nominations** for Best Visual Effects on *Mission: Impossible - Dead Reckoning* and on *Napoleon*.
With 60+ movies and TV shows under my belt for clients such as Warner Bros., Paramount Pictures, Walt Disney Studios, 20th Century Fox, HBO, Netflix, Disney Plus, Apple TV+, Hulu, Sky, and Amazon Prime Video, I have gained a **wealth of knowledge** about the world of visual effects. And I have learned a lot about productivity, teamwork, and self-discipline along the way.
In my personal life I am a big believer in self-improvement and I am always looking to **optimise and progress to the next level**. And since I am now a dad to a young boy, free time is often limited! As I continue to learn I will be sharing my knowledge, techniques, tools, workflows, and advice here on this website.
**Join the journey!** Subscribe to the newsletter by clicking on the button below, and new guides will be delivered straight to your inbox the moment they are released.
[Let's Go!](https://www.keheka.com/#/portal/signup)
---
[LinkedIn](https://www.linkedin.com/in/kennkalvik) | [IMDb](https://www.imdb.com/name/nm5537895/)









### Welcome!
URL: https://www.keheka.com/welcome-free-member/
Last updated: 2026-02-11T17:43:21.000Z
_This post is for subscribers only._
### Suggestion Box
URL: https://www.keheka.com/suggestion-box/
Last updated: 2023-12-19T19:33:16.000Z
_This post is for paying subscribers only._
### Welcome To The Companions!
URL: https://www.keheka.com/welcome-companion/
Last updated: 2026-06-08T13:17:18.000Z
_This post is for paying subscribers only._
### Companions
URL: https://www.keheka.com/companions/
Last updated: 2026-06-08T13:16:46.000Z
_This post is for paying subscribers only._
### Shop
URL: https://www.keheka.com/shop/
Last updated: 2026-06-08T16:28:18.000Z
💡
There are ****three ways** that you can access the exclusive tutorials: Buy a ****Subscription**, buy an ****Access Pass**, or buy ****Individual Tutorials** (PDF downloads).
## Buy a Subscription
- Join the [Companions community](https://www.keheka.com/companions/) and **get online access to every tutorial**.
- **Monthly** and **Yearly** (over 30% discount)subscription options are available.
- **Keep the same price** for as long as you want to subscribe.
- **Cancel anytime**.

#### Monthly Subscription
Online access to all of the Tutorials at [www.keheka.com](https://www.keheka.com/), plus all [Companions](https://www.keheka.com/companions/) benefits. Renews monthly and there will be no increase in price upon renewal. Cancel anytime.
[Click here to buy the Monthly Subscription](https://www.keheka.com/#/portal/signup/630dbadb9e5ad9003d449e69/monthly)

#### Yearly Subscription
Online access to all of the Tutorials at [www.keheka.com](https://www.keheka.com/), plus all [Companions](https://www.keheka.com/companions/) benefits. Renews yearly and there will be no increase in price upon renewal. Cancel anytime.
[Click here to buy the Yearly Subscription](https://www.keheka.com/#/portal/signup/630dbadb9e5ad9003d449e69/yearly)
## Buy an Access Pass
- Join the [Companions community](https://www.keheka.com/companions/) and **get online access to every tutorial**. (The same access as with a subscription).
- **30 Days** *(Silver)*, **365 Days** *(Gold)* **,** and **Lifetime** *(Platinum)* access passes are available, with increasing discounts (over 30% discount and more).
- **No subscription**, just a single payment up front.

#### Silver Pass - 30 Days Access
Online access to all of the Tutorials at [www.keheka.com](https://www.keheka.com/), plus all [Companions](https://www.keheka.com/companions/) benefits, for one month.
[Click here to buy the Silver Pass](https://keheka.lemonsqueezy.com/checkout/buy/0e032d26-ac1b-4903-8d9c-39a449bd4a5a?ref=keheka.com)

#### Gold Pass - 365 Days Access
Online access to all of the Tutorials at [www.keheka.com](https://www.keheka.com/), plus all [Companions](https://www.keheka.com/companions/) benefits, for one year.
[Click here to buy the Gold Pass](https://keheka.lemonsqueezy.com/checkout/buy/66e00995-36dd-4c10-b8ad-97959d346e40?ref=keheka.com)

#### Platinum Pass - Lifetime Access
Online access to all of the Tutorials at [www.keheka.com](https://www.keheka.com/), plus all [Companions](https://www.keheka.com/companions/) benefits, for life!
[Click here to buy the Platinum Pass](https://keheka.lemonsqueezy.com/buy/84871dc8-2d73-4e43-89ba-5e184ec903ba?ref=keheka.com)
## Buy Individual Tutorials
💡
A subscription or an Access Pass will give you online-only access to the tutorials below.
- A selection of the **Companions Exclusive Tutorials** areavailable for purchase without needing a subscription or access pass.
- **Download PDFs** for unlimited personal use offline.

#### The Visual Guide To Composition
343 pages. Over 500 example images. Tons and tons of tips, tricks, and deep dive information about composition. Everything you need to level up your art.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/checkout/buy/037dc982-4b6e-4490-b219-720c50de55c7?ref=keheka.com)

#### Professional CG Compositing In Nuke
Elevate your CG compositing skills to a professional level in Nuke with this massive 165-page guide. The guide covers everything from fundamentals and best practices, to advanced techniques, tips, tools, and tricks.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/buy/4500a33f-d463-4742-8953-517a97cb8ba9?ref=keheka.com)

#### Advanced Gizmo Building In Nuke
How to build advanced gizmos in Nuke, complete with dynamic menus using Python, custom expression-driven controls, and a decorated user interface.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/buy/d7e64fa4-44ce-49be-8873-d1e9230e9fcb?ref=keheka.com)

#### Compositing Photorealistic Lens Effects In Nuke
Make your composites look photographic by recreating real lens characteristics. Massive, in-depth guide (100+ pages) covering 19 different lens effects, how to create them in Nuke, and more.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/checkout/buy/ea84d936-20a9-4123-9b9f-ef4fb1ddcc38?ref=keheka.com)

#### Professional Keying In Nuke
Elevate your keying skills to a professional level in Nuke with this in-depth guide, covering advanced techniques while building a complete keying template.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/checkout/buy/15dc91b0-2e4c-4b0a-ae7c-e7876af020f0?ref=keheka.com)

#### Practical Use Cases For All The Merge Operations In Nuke
Looking for a breakthrough in your understanding of compositing? This 111-page mega-guide covers all 69 merge operations in Nuke across the Merge, ChannelMerge, and PSDMerge nodes, plus many more custom merge operations via the MergeExpression node, with tons of tips, tricks, and practical examples along the way.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/buy/688a323e-f217-4c31-8c78-288b8d11267d?ref=keheka.com)

#### Warping & Morphing Images Using The SplineWarp Node In Nuke
A deep dive into how to warp, blend, and morph between images using the SplineWarp node.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/buy/250c9834-c16e-483a-a741-0c895c365ed5?ref=keheka.com)

#### How To Create A Sense Of Depth In Your Composite
A deep dive guide about how to recreate the sense of depth in your composite, and make 2D images look and feel real and three-dimensional to the audience.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/checkout/buy/a0379d5f-6cbc-4dd6-bb79-b102c82e85e9?ref=keheka.com)

#### Motion Blur Masterclass For Compositors
A deep dive into how motion blur works, the way cameras operate in the real world, and advanced techniques for dealing with motion blur in Nuke.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/checkout/buy/5e911865-ab09-4b6e-8657-7c9d54e9dc03?ref=keheka.com)

#### Advanced IBK Keying Techniques And Setups In Nuke
With these advanced techniques and setups, the IBK will become one of your most powerful allies when keying.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/buy/097c192a-cf0a-49a9-8553-11dd2eab9dbc?ref=keheka.com)

#### How To Be More Creative
25 highly effective ways of boosting your creative output. Suitable for anyone in a creative field, this guide contains all the tips and tricks you need to progress on your creative journey.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/buy/4a91d0d7-58be-456b-b623-7a462bd4b391?ref=keheka.com)

#### How To Get Hired As A Compositor
100 pages packed with actionable information, guiding you through every step of the way to getting hired as a Compositor.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/buy/d3b013f6-d032-4a6f-a13f-ebbe5b303ba3?ref=keheka.com)

#### How To Automate Tedious Tasks Using Python In Nuke
This guide will teach you how to both automate and massively speed up repetitive tasks using Python’s for-loop in Nuke.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/buy/0c2890c3-5442-4d57-882b-200d155cc6fa?ref=keheka.com)

#### How To Build A Show Specific Grain Tool In Nuke
Step-by-step guide for building a grain tool in Nuke based on grain plates.
[Click here to buy the guide](https://keheka.lemonsqueezy.com/buy/9043867f-d605-413a-8441-d56ad97483bf?ref=keheka.com)
## Posts
### The Visual Guide To Composition
URL: https://www.keheka.com/the-visual-guide-to-composition/
Last updated: 2026-05-08T22:36:55.000Z
⭐ A deep dive into the principles and guidelines for composition, and how we can implement them in practice when compositing…
_This post is for paying subscribers only._
### Creating Parallax In Nuke
URL: https://www.keheka.com/creating-parallax-in-nuke/
Last updated: 2026-02-16T23:39:57.000Z
*A closer look at how parallax works, and how we can create and/or match the effect in Nuke…*
## Parallax
Parallax is the apparent shift of an object’s position relative to more distant background objects when viewed from different perspectives.
The change in perspective, or viewpoint, is due to the position/motion of the observer, of the observed, or both:

*A change in viewpoint leads to different views. (*[*Source*](https://www.researchgate.net/figure/Parallax-results-from-viewing-a-nearby-object-relative-to-much-more-distant-objects-from%5Ffig1%5F235158031?ref=keheka.com)*).*
In a stereoscopic context (i.e. how we see the world with our eyes), the change is due to the difference in the position of each eye. – Our eyes see an object from slightly different angles.
You can easily see this stereoscopic parallax effect for yourself by holding out one of your hands in front of you, and looking at for example your index finger against the background with one eye open and the other eye closed.
Then, open the previously closed eye while simultaneously closing the previously open eye, and the finger will appear to move against the background:

*Stereoscopic parallax. (*[*Source*](https://parallaxperspective.wordpress.com/2012/04/16/what-is-a-parallax-anyway/?ref=keheka.com)*).*
– Alternate blinking with each eye, and your finger will appear to bounce left and right.
💡
This method can also be used to find out which of your eyes is the dominant one (if any): Look at your finger with one eye open, and then open the closed eye (both eyes are now open). If the finger appears to stay in the same position, the eye that was open first is the dominant one. If it moves, the eye that was closed first is. Try both ways and see which eye might be your dominant eye.
The closer an object is to the observer, the larger the apparent shift against the background. I.e. the larger the *parallax angle*.
And so, foreground objects will seem to move faster relative to background objects (this is also true even if they would travel at the exact same speed in reality):

*Depth through relative motion. (*[*Source*](https://sketchplanations.com/parallax?ref=keheka.com)*).*
In fact, that is the basis for how 2D *side scroller* video games achieve a sense of depth/perspective:

*Foreground layers move faster than background layers. (*[*Source*](https://youtu.be/CqOlpQ7sepE?si=Mk3-dYFSmvNl8bK0&ref=keheka.com)*).*
Here’s a short video that nicely shows how it works:
*This is why 2D games feel 3D (but aren't). Parallax.*
Interesting side note – Parallax is also used to determine the distance to stars:
By measuring the extremely small observed shift of a star against the background of distant stars – at the largest time interval of about six months, when Earth arrives at opposite sides of the Sun in its orbit – the distance to the star can be calculated using trigonometry.
Stellar parallax can also be determined by comparing measurements from Earth and from a distant spacecraft, giving us a much more visually clear distinction in the position due the the distance between the observers – which allows us to see the parallax without instrumentation:

*Parallax of Proxima Centauri as observed from NASA’s New Horizons spacecraft and from Earth. (*[*Source*](https://en.wikipedia.org/wiki/File:New%5FHorizons%5FProxima%5FCentauri%5FParallax%5FAnimation.gif?ref=keheka.com)*).*
We may not need to accurately measure stellar distances, but for us compositors, understanding how parallax works is still essential knowledge.
– Because parallax is an effect that we have to mimic in our shots to [create a sense of depth](https://www.keheka.com/how-to-create-a-sense-of-depth-in-your-composite/).
There are several ways to do this:
## Parallax In Nuke
To convincingly composite an element (e.g. a CG render, DMP, 2D smoke element, patch, or similar) into a shot, we have to position the element at, and track the element to, the correct depth plane.
– I.e. the element needs to be placed at the correct distance from the camera, and behave as if it were filmed from that distance with the same camera.
To do that, we have to first identify the depth plane where we want the element to sit.
Like we saw in the diagram earlier, different depth layers appear to move at different speeds from the camera’s point of view.
And so, if you want to position your element near a background mountain, keep in mind that that’s a different depth plane to a foreground rock, and your track for the foreground rock will likely not work for your background mountain.
It’s often more intuitive when looking at a 3D scene:
## Camera Track
Ideally, you would get a camera track for your shot, plus locators, a point cloud, and/or proxy geometry of the environment, so that you can set up a 3D scene in Nuke and place your element at the correct depth plane.
First, it’s important that **your camera is accurately tracked to your scan.** To correctly match the motion parallax at various depths in the scan, the CG camera has to match up with the real camera.
– Even small inaccuracies in the track can become noticeable when compositing your element.
💡
The Foundry has [extensive documentation on camera tracking](https://learn.foundry.com/nuke/content/comp%5Fenvironment/cameratracker/camera%5Ftracking.html?ref=keheka.com) to help you get the most out of your track.
Then, to put a 2D element into a 3D scene, you can [project it onto a Card or other geometry](https://learn.foundry.com/nuke/content/comp%5Fenvironment/3d%5Fcompositing/projection%5Fcameras.html?ref=keheka.com) that is positioned at the correct depth plane.
💡
Remember to ****add lens distortion** to any projections, so that they line up around the edges of the frame.
There are several things you can do to help place your Cards/geometry correctly:
## Positioning Cards/Geometry
If you do your own camera tracking using the **CameraTracker** node in Nuke, you can [export a CameraTrackerPointCloud](https://learn.foundry.com/nuke/content/comp%5Fenvironment/cameratracker/creating%5Fpointclouds.html?ref=keheka.com) to help with positioning any Cards or other geometry in 3D space for projection purposes.
(Or, you can [create the Cards/geometry directly in the 2D view](https://learn.foundry.com/nuke/content/comp%5Fenvironment/cameratracker/placing%5Fobjects%5Fscene.html?ref=keheka.com) using the *create* menu).
You can also [create a point cloud by using a PointCloudGenerator node](https://learn.foundry.com/nuke/13.0/content/comp%5Fenvironment/point%5Fclouds%5Fmeshes/creating%5Fpoint%5Fclouds%5Fmeshes.html?ref=keheka.com) connected to your footage and to your camera. This will typically create a much denser and more easily readable point cloud than the onethat you can export directly from the **CameraTracker** node:

*A point cloud generated by the PointCloudGenerator. (*[*Source*](https://youtu.be/TZSazmaoMl4?si=WxS83KMnJDYuevJo&ref=keheka.com)*).*
💡
By using a point cloud like the one above, it’s easy to navigate around the 3D scene and place Cards/geometry accurately in depth.
You can even create a point cloud from a CG render containing world/reference *position* and *normal* AOVs using the [PositionToPoints](https://learn.foundry.com/nuke/content/comp%5Fenvironment/3d%5Fcompositing/using%5Fpositiontopoints.html?ref=keheka.com) node.
Or, you can create a point cloud from a Deep render and the Camera by using the [DeepToPoints](https://learn.foundry.com/nuke/content/comp%5Fenvironment/deep/creating%5F2d%5F3d%5Felements.html?ref=keheka.com#Creating2) node.
If you get a camera track from your matchmove department, you may also get locators or proxy geometry of the scene to help with the positioning. And/or, there may be LIDAR geometry available.
Note that LIDAR geometry tends to be very heavy, so disable the **ReadGeo/GeoImport** node when not in use. – In fact, [disable or delete any geometry that isn’t being used in your comp](https://www.keheka.com/best-practices-for-compositing-in-nuke/).
Another way to accurately position Cards at the right depth plane is to use this technique:
[Snapping Cards To A Position Pass In NukeA very useful technique for quickly and accurately placing Cards around in a 3D scene…Kenn Hedin Kalvik - Professional Compositing TutorialsKenn Hedin Kalvik](https://www.keheka.com/snapping-cards-to-a-position-pass-in-nuke/)
💡
When positioning Cards in your 3D scene, also take their ****orientation** into account. For example, if you’re patching a section of the ground, the Card should lay flat along the ground, not 90 degrees upright. Otherwise, the patch will be confined to a thin slice of depth and may appear to slide across the ground. The same is true if you’re adding for example a poster to a wall: have the Card lined up flush with the wall for the most accurate track.
## Scene Scale
Note that when you’re using cameras and position passes from different software, you’ll have to **ensure that your scene scale is correct.**
Different 3D software use different units of measurement. Maya uses **centimetres** by default, while Houdini uses **metres**, for example. Others may use a different unit, like **decimetres**, or one of the **imperial units**.
Unless you’re using the [new 3D system](https://learn.foundry.com/nuke/content/reference%5Fguide/3dnew%5Fnodes/usd3d%5Fnodes.html?ref=keheka.com) (which is currently in beta and not widely adopted yet), Nuke just equates any value as being equal to one unit in 3D space. So, if you import cameras, geometry, and/or renders from different software, you may have to scale them up or down so that they align with each other.
For example, if you have a camera from Maya (cm) and a CG render from Houdini (m), you can scale *up* the utility passes (such as the *position* pass) in the Houdini render by a factor of 100 to get the correct scale in relation to the Maya camera in Nuke.
Or, you can scale *down* the Maya camera by a factor of 100 to get the correct scale in relation to the Houdini render.
To scale your CG render’s utility passes, you can connect a **Multiply (math)** node and multiply the passes up or down to scale them accordingly.
To scale your geometry or camera, you can plug an **Axis** node into a **TransformGeo** node, or directly to the **Camera**, and adjust the *uniform scale* value in the **Axis**. (Leave all other values in the **Axis** node at default – it should stay at the origin, 0, 0, 0, for the scaling to be correct).
To scale a Deep render, connect a **DeepTransform** node and adjust the *zscale* value. Note that the *zscale* value works inversely to a **Multiply**. So if you want to scale the Deep up by 100, set the *zscale* to 1/100 = 0.01.
Using the tips above, make sure that you have got the right scene scale, and – using a point cloud/proxy geometry/etc. of the scene – **position** **your cards or geometry at the correct depth in relation to your camera in 3D space.**
If you project a building that’s supposed to be 20 metres away on a card that is 2 metres away, the motion parallax won’t be correct.
You’ll often be able to spot if something’s wrong with the parallax:
## Check The Parallax
**Check that objects move correctly in relation to each other.**
As mentioned earlier, objects further away from the camera generally move slower across the frame than objects near the camera.
If they’re not, it might just be because your Cards/geometry are incorrectly placed in depth – if so, try adjusting their distance from the camera.
And, **make sure that objects move at realistic speeds** depending on their distance from the camera, especially when you’re animating them yourself. A car in the far background wouldn't travel the same distance across the frame as an airplane would in the same amount of time, for example.
Also, **keep the point of fixation in mind.** Any static objects beyond the object that you're fixating on will move relatively in the frame in the direction of the camera motion. Any objects nearer than that distance will move in the opposite direction of the camera motion:
*Point of fixation example.*
When fixated on the red sphere in the centre and moving the camera, the green foreground spheres move in the opposite direction to the camera motion in the frame, while the blue background spheres move in the same direction as the camera motion in the frame.
Another parallax issue you may find is that projecting images onto **Cards can sometimes betray the parallax**:
## Shaping Cards
Cards are flat, and most objects in the real world are not.
You can use [bicubic deformation](https://learn.foundry.com/nuke/9.0/content/comp%5Fenvironment/3d%5Fcompositing/working%5Fwith%5Fcards.html?ref=keheka.com) to give some shape to your Cards, and potentially avoid the issue of the projections looking flat in your scene.
– If you were projecting a leaf onto a Card, for example, you could use bicubic deformation to make the Card concave or convex.

*Shaping a Card using bicubic deformation.*
This technique is very useful for creating basic terrains or any sort of simple projection geometry.
Speaking of simple projection geometry:
## Skies
Skies are generally so far away from the camera that you can often just project them onto a very large **Sphere**.
(And, you likely won’t have data for how far away the clouds are, anyway).
If a radius of for example 100,000 doesn’t do the trick, try scaling the **Sphere** so that it encapsulates the points furthest away from the camera in the point cloud of your scene.
Sometimes, you just have to go with what visually looks correct, so adjust the distance until the sky tracks nicely with your shot and you get a plausible parallax that makes sense for your context.
If you don’t have a 3D scene, you can use an old trick for adding parallax to a 2D sky (when there’s not much camera movement):
Add a **CornerPin** node to the image of the sky, and then animate the top two CornerPin points from screen left to screen right, or vice versa.
That way, the clouds near the top of the frame (closer to the camera) will appear to move more than the clouds lower down in frame, closer to the horizon.
*Animating parallax into a 2D sky using a CornerPin node. (*[*Source image*](https://unsplash.com/photos/blue-sky-and-white-clouds-over-the-sea-yGbh%5Fmg9DH8?ref=keheka.com)*).*
💡
This technique would typically be used very sparingly – just a subtle animation with a hint of movement. Not nearly as much as in the video above, which is exaggerated to show the effect more clearly.
You can go even further and displace the 2D sky to create parallax:
*How to better ANIMATE a STATIC SKY in NUKE | Comp Lair: Live Tech Corner S01\.*
There’s also another useful technique for creating parallax, sort of halfway between 2D and 3D:
## Projecting Using The Position Pass
A great way of getting both free and correct parallax without creating a 3D scene in Nuke is to project your image using the *world position* pass of your CG render.
Using one of the many position projection tools on Nukepedia or GitHub, for example [this one](https://github.com/franklinvfx/Position%5FProject-Tool-for-Nuke?ref=keheka.com), you would connect the image to be projected, the projection camera, and the *position* AOV from your CG render, and then set the reference frame for the projection.
The gizmo will then map the image to the 3D positions so that when the camera moves (the camera movement is baked into the CG render and subsequently its position pass), it will create parallax as it moves away from the reference frame.

*Projecting a basic checkerboard onto a terrain using the P\_Project gizmo. (*[*Source*](https://camo.githubusercontent.com/2aa34497c14a3ddca870b1ea82ab2e68d9a96e165430d01eaf5ec849d9b87b08/687474703a2f2f6672616e6b6c696e7666782e636f6d2f77702d636f6e74656e742f75706c6f6164732f323031372f31312f7633332e706e67?ref=keheka.com)*).*
Next, let’s look at a special case when it comes to parallax:
## The Nodal Pan
Typically, every camera move will have at least *some* parallax.
There is a notable exception to this, however, which you should be aware of:
A nodal pan camera move gives **no parallax** to the shot.
Rotating a camera around its [no-parallax point](https://moviola.com/visual-glossary/no-parallax-point/?ref=keheka.com), or nodal point, means there will be no shift in the position between the foreground and background objects in the scene.
💡
This is very useful for [creating seamless panoramas](https://youtu.be/e-nhc3FINfY?si=cDZ6riW-t5Im9nmw&ref=keheka.com), like HDRI environments for VFX, or for [adding camera movement to forced-perspective shots](https://www.instagram.com/reel/DSne-YeGP3V/?hl=en&ref=keheka.com). ([Full video](https://youtu.be/MVUuoXAkuUg?ref=keheka.com)).
For shots with this specific type of camera move, **avoid adding parallax** to any elements that you composite in, as they will appear to slide against the background.
Let’s continue looking at ways to add or match parallax:
## 2D Tracking
Another way of placing elements into a scene is to simply 2D track them in.
It might not always be as technically accurate as having a 3D scene, but it’s very often highly effective for achieving a realistic composite.
💡
You could also [create accurate 2D tracks using a matchmove camera](https://www.keheka.com/3d-to-2d-tracking-in-nuke/).
When you want to 2D track an element into a shot, **confirm that you’re 2D tracking the correct plane of depth in the scan.**
You normally have to track the area where you want to insert an element. And that means you may have to 2D track your scan several times if you want to insert elements at different depths.
For example, one track for the foreground, one for the midground, and one for the background.
A background element tracked into the shot using the foreground 2D track is unlikely to move correctly for its position in depth.
💡
If an object that you’re tracking is crossing multiple depth planes at once, for example the side of a truck that is at an angle to the camera, a [4-point tracked CornerPin](https://youtu.be/eLk2ol3MQ3c?ref=keheka.com) or a [planar track](https://learn.foundry.com/nuke/content/comp%5Fenvironment/planartracker/tracking%5Fplane.html?ref=keheka.com) can help you get the perspective right.
Sometimes, the features that are available to track in the scan **won’t correspond** with the depth plane where you want to place your element.
For example, if the background is a green screen that’s a few metres away, but you want to replace the green screen with a new background which is much further away – for example some distant mountains.
Ideally, you would then create a camera track for the scan and lay out Cards/geometry at the correct distances from the camera to get the right parallax for your elements.
However, it’s also possible to fake the parallax in 2D using a regular **Tracker** node:
## Scaling A 2D Track
First, using a **Tracker** node, track features at a depth plane that *is* available – for example the tracking markers on a green screen.
Next, export a **baked match-move** from the **Tracker** node using the **Export** function at the bottom of the *Tracker* tab in the node’s properties: select **Transform (match-move, baked)** in the drop-down menu, and click **Create**.
This will create a **Transform** node with the match-move animation baked in.
To control the amount of transformation in the **Transform** node, let’s add a slider to its properties:
Click the little **pen** icon at the top of the properties panel and drag and drop a **Floating Point Slider** (the first icon in the newly revealed row of user knobs next to the pen icon) onto the properties of the **Transform** node.
Name the **Floating Point Slider** *amount* and label it *Amount*. The default range of 0 to 1 is fine to keep (which will represent 0%-100% transformation).

*Creating a User tab with a Floating Point Slider knob called amount.*
By multiplying the baked animation curves of the **translation** and **rotation** by our *amount* value, we can scale the curves based on the value that we set. We can do that using a simple expression:
In each of the **translate.x**, **translate.y**, and **rotate** knobs, add the following expression (right-click on the knobs and select *Edit expression*):
```
curve * amount
```


*Adding the expression to the x and y translation and to the rotation.*
– In the expression above, *curve* (which is a standard Nuke term that’s used in expressions) is referencing the baked animation curve’s value on the current frame, and *amount* is referencing the value that we set in the *amount* knob that we created earlier.
💡
The expression is referencing the ****name** (not the label) of the custom knob that we made, i.e. **amount*, and is case sensitive. So, if you named the slider **Multiplier*, you’d have to replace **amount* with **Multiplier* in the expression above.
Now, if let’s say the **translation** in X is 20 pixels to the right on the current frame, and we set the *amount* to 0.5 (i.e. half), the expression would output:
```
20 * 0.5 = 10
```
– Which is half of 20, as expected.
This video shows what it looks like when you scale the translation up or down:
*Modifying Tracking Data With Expressions in Nuke.*
If the **rotation** is -10 degrees (i.e. 10 degrees clockwise) and the amount is set to 0.75 (i.e. three quarters), the expression would output:
```
-10 * 0.75 = -7.5
```
– Which is three quarters of -10, as expected.
Next, to scale the baked animation curve of the **scale** knob – which has a default value of **1** (as opposed to a default value of **0** for the **translation** and **rotation** knobs) – we have to make a little bit more advanced expression.
Because, we can’t simply multiply the animation curve by the *amount* like before – we have to consider the *difference* between the current *scale* value and the default *scale* value (i.e. 1).
For example, let’s say that the current *scale* value is 1.2, and we set the *amount* to 0.5 – i.e. we want *half* of the transformation. Halfway between 1 and 1.2 is 1.1\. However, simply multiplying the animation curve’s value by the *amount* would give us 1.2 \* 0.5 = 0.6 which is not the right value in this case.
Instead, we have to find the *difference* between the *scale* knob’s value and 1 (the default value), then multiply that *difference* by the *amount* to find the *scaled differenc*e. And finally, either add or subtract the result (i.e. the *scaled difference*) to/from 1, depending if the *scale* knob’s value was above or below 1\.
To do that, add the following expression to the **scale** knob:
```
curve < 1 ? 1 - (1 - curve) * amount : 1 + (curve - 1) * amount
```

*Adding the expression to the scale.*
The expression above uses an **if/else** statement:
First, it checks if the value of the baked animation curve on the current frame is less than 1:
```
curve < 1 ?
```
If it is, the expression will output 1 minus the *scaled difference*:
```
1 - (1 - curve) * amount
```
If it’s not (*else*), the expression will output 1 plus the *scaled difference*:
```
: 1 + (curve - 1) * amount
```
So, using the previous example, if the current *scale* value is 1.2 (which is **greater** than 1), and the *amount* is 0.5, the expression will output:
```
1 + (1.2 - 1) * 0.5 = 1.1
```
– Halfway between 1 and 1.2, as we would expect.
Or, if the current *scale* value is 0.8 (which is **less** than 1), and the *amount* is 0.5, the expression will output:
```
1 - (1 - 0.8) * 0.5 = 0.9
```
– Halfway between 0.8 and 1, as we would expect.
The *amount* value doesn’t have to be between 0-1 (0%-100%). You could scale the transformation by for example 2 (200%) using the exact same expression above.
For example, if the current *scale* value is 1.2 (which is **greater** than 1), and the *amount* is 2, the expression will output:
```
1 + (1.2 - 1) * 2 = 1.4
```
– Which is twice as far away from 1 as 1.2 is, just as expected.
Or, if the current *scale* value is 0.8 (which is **less** than 1), and the *amount* is 2, the expression will output:
```
1 - (1 - 0.8) * 2 = 0.6
```
– Which is twice as far away from 1 as 0.8 is, just as expected.
The same logic applies to the expressions that we made in the **translate** and **rotate** knobs; multiplying by an *amount* greater than 1 (100%) will scale the baked animation curves’ values up accordingly.
💡
You could even scale the transformations by a ****negative** **amount*. For example, setting the **amount* to -1 would turn a match-move into a stabilisation, and vice versa.
And so, by using these expressions together with the *amount* slider, we can now freely scale the transformations up or down to our hearts content.
Which means, if you tracked some tracking markers at a nearby depth plane (e.g. a green screen), and you want to scale down the match-move to make your element appear further away, you could just reduce the *amount*.
An *amount* of 0.8 would give you 80% of the original camera movement, and an *amount* of 1.2 would give you 20% more camera movement.
So, you can adjust the *amount* value to dial in just the right amount of parallax for your element to sit into the scene.
You can even **animate** the *amount*.
This can for example be useful if you want to animate a stabilisation. Let’s say that there is a constant camera shake in your shot but you want the shot to start out smooth and ramp into the camera shake.
You could stabilise the shot, and then animate the *amount* from 1 to 0 in order to animate the camera shake back on.
Another way to scale a track is to use the [Warp Transformations In Nuke](https://www.keheka.com/warp-transform/) technique.
– Disable the **Mask** section, and just adjust the **IDistort** node’s *UV scale* value to dial in the amount of transformation – just like we did before with the *amount* value.
To get accurate motion blur, however, you’d have to use a technique [such as this one](https://benmcewan.com/blog/quick-tip-add-accurate-motion-blur-to-your-warps?ref=keheka.com), or use a **MotionBlur2D** node to generate motion vectors for a **VectorBlur**.(Remember to scale the *motion amount* value in the **VectorBlur** by the *UV scale* value in the **IDistort**).
Yet another way for scaling the track is to use a **dissolve expression**:
```
First input’s values * mix + Second input’s values * (1 - mix)
```
In our case, the ‘first input’ would be the baked animation curve’s value, and the ‘second input’ would be the knob’s default value. And the ‘mix’ would be our *amount*.
So, for the **translation** and **rotation**, the expression would become:
```
curve * amount + 0 * (1 - amount)
```
which, because anything multiplied by 0 is 0, becomes:
```
curve * amount
```
– the same as we saw before.
For the **scale**, the expression would become:
```
curve * amount + 1 * (1 - amount)
```
which, because anything multiplied by 1 stays the same, becomes:
```
curve * amount + 1 - amount
```
– also, the same as we saw before. Earlier, it was just written as **1 + (curve - 1) \* amount**, which, when you work it out, becomes the above.
And so, it turns out that we can simplify the whole if/else statement which we made for the *scale* value earlier, because this expression works both for when the baked animation curve's value is greater than 1 and for when it is less than 1\.
By adjusting the *amount* slider like before, the expressions will scale the track.
💡
The dissolve expression is useful for many things, for example for [blending between cameras in Nuke](https://www.keheka.com/blending-between-cameras-in-nuke/). You could for instance blend between the original camera and a copy of the same camera but with all of its animation deleted, on the reference frame, in order to control the amount of camera movement as a percentage.
And that wraps it up! I trust these techniques will make you more confident in creating and matching parallax in Nuke.
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Creating Caustics In Nuke
URL: https://www.keheka.com/creating-caustics-in-nuke/
Last updated: 2026-01-10T11:45:54.000Z
⭐ How to create a realistic caustics effect using positional data in Nuke…
_This post is for paying subscribers only._
### Is It Wet Or Is It Cold?
URL: https://www.keheka.com/is-it-wet-or-is-it-cold/
Last updated: 2025-12-17T16:36:17.000Z
*How to approach responding to conflicting or overlapping signals…*
## A Lack Of Senses
Although we humans have [significantly more than the five classical senses](https://www.weforum.org/stories/2017/01/humans-have-more-than-5-senses/?ref=keheka.com), we don’t come close to possessing all of the senses (nor the strength/sensitivity of the senses) which can be found in the animal or plant kingdoms.
We lack for example:
- **Sonar** ([echolocation](https://youtu.be/qJOloliWvB8?si=dgJ3YJXp4isJWKMC&ref=keheka.com)) found in bats and in some species of moths, which allows for prey/predator detection and aerial navigation by the use of ultrasonic sound.
- **Infrared vision** ([visual heat sensing](https://youtu.be/GsNr5IqW4eA?si=MfxkLLhmV0nizNTi&ref=keheka.com)) found in pit vipers, which lets them detect body heat signatures against cooler backgrounds – creating thermal images of warm-blooded prey (like rodents) or predators, even in total darkness.
- **Infrasonic sensing** found in elephants, which allows them to [communicate seismically](https://youtu.be/iYM9oXftLIQ?si=Hask0jS3TlYngEgQ&ref=keheka.com) over long distances, or [detect impending storms](https://youtu.be/uQfDazQ9Rkg?si=4hTAxsAcspeFLh7Y&ref=keheka.com), by feeling deep rumbles through the ground and air.
- **Ultraviolet (UV) vision** found in birds and bees, which allows them to forage and navigate by [seeing UV patterns](https://www.facebook.com/DiscoveryUK/videos/honey-bee-life-how-do-animals-do-that/391362926002721/) that are invisible to us; identifying and locating flowers that offer nectar and pollen.
- **Magnetoreception** ([detection of magnetic fields](https://youtu.be/tdXb%5F4EkYtU?si=0iALi%5Fm1uyuar0cM&ref=keheka.com)) found in some birds, and in many sea creatures, which is used for navigation.
- **Electroreception** ([detection of electrical fields](https://youtu.be/aja7G9RPEZ4?si=08ds8kTK8HKAtnW%5F&ref=keheka.com)) found in various species of fish, used for prey and predator detection.
- **Chemical sensing** found in plants, which allows for [communication via volatile organic compounds](https://youtu.be/dytsx7NPQ3o?si=hK8B%5FYBz5tK6slgN&ref=keheka.com).
– And, unlike many insects, we humans also lack [hygroreceptors](https://en.wikipedia.org/wiki/Hygroreception?ref=keheka.com). So we can’t directly detect changes in humidity and moisture – which means that we’re unable to directly sense *wetness*.
💡
Further reading on the topic can be found [here](https://pmc.ncbi.nlm.nih.gov/articles/PMC4843859/?ref=keheka.com), [here](https://www.southampton.ac.uk/news/2022/01/no-sweat.page?ref=keheka.com), and [here](https://pmc.ncbi.nlm.nih.gov/articles/PMC5384974/?ref=keheka.com).
We can only determine whether something is wet or not by analysing contextual clues captured by our other senses, for example:
- **Look**: Wet things are often more shiny (a wet road gives off more reflections, for instance), or you might see water droplets on the surface of an object, for example.
- **Temperature**: Wet things often get colder (which is why it can be so dangerous to get wet in the snow).
- **Texture**: Wet things might feel smoother or more wrinkly, depending on how they react to water.
- **Friction**: Wet things may become more slippery.
- **Pressure**: You can feel water running down your skin.
- **Stiffness**: Wet things are often not as stiff, e.g. a soggy piece of cardboard or wet clothing.
- **Colour**: Wet things might appear darker, for example a wet spot on your t-shirt.
- **Weight**: Wet things, such as a wet cloth, will typically be heavier than when dry.
You may have noticed your lack of a sense for wetness while for example air drying your laundry during winter:
– It’s easy to mistake laundry that’s just cold for still being wet (at first).
But by analysing further clues, your brain can determine if the laundry is, in fact, just cold.
Just like how you might mistake cold laundry for being wet, it’s easy to mistake or confuse other things in life as well.
Oftentimes, we misinterpret signals from our bodies or from our surroundings.
And because of that, in order to help solve an issue it’s hugely beneficial to first pinpoint and clarify its source.
## Determine The Root Cause
Before we attempt to solve a problem, it helps to find out what the problem *actually* is and where it’s coming from.
Often, the first place to look for a cause is inwards.
If you’re having a bad morning, is it really because everyone and everything is being annoying, or difficult, or ‘against’ you?
– Or, could there instead be another reason? For instance:
- Are you **tired**? Poor sleep and little rest can make anyone grumpy or feel down.
- Are you **hungry**? ‘Hanger’ is a very real phenomenon.
- Are you **stressed**? Have you taken on too much responsibility?
- Are you **distracted**? Is there something that’s worrying you or weighing on your mind?
- Are you too **hot** or too **cold**? Feeling uncomfortable can manifest a bad mood.
- Are you **overstimulated**? Is there too much going on around you and you’re not taking enough breaks?
- Are you **triggered** (without good reason)? Was someone actually being negative or were you just in a bad mood and implied an ulterior meaning/motive where there was none?
- Are you **irritated**? Is there a stone in your shoe, or an equivalent to it?
- Are your surroundings **messy**? A chaotic environment can make it difficult to focus.
- Are you **tense**? Are you for example sitting in front of the computer all day with raised shoulders?
– Or, are there any other areas that you can identify, in which a small or reasonable change would drastically improve your current situation?
Of course, sometimes the source of a problem is indeed external, and you’ll have to deal with it appropriately.
But often, you just need to fix yourself first:
## Meet Your Basic Needs
During the safety briefing before a flight, the flight attendants will usually say something along the lines of:
*In the event of a loss in cabin pressure, oxygen masks will drop automatically from the panel above your seat. \[…\] Please put on your own mask first, before helping others.*
That last line is crucial.
In the event of an explosive decompression where the pressure loss is sudden and complete, at higher altitudes, the period of effective consciousness is measured in *seconds* before the effects of hypoxia start to take hold.
If you lose consciousness before you’re able to put on your own mask (but you got a mask on your five year old, for example), then your child or companion can’t help you.
By helping yourself first, you stay conscious *and* you are able to help others. But you’re no good to anyone else if you pass out.

*Put on your own oxygen mask first, before helping others.*
In a (much less dramatic) sense, this applies to everyday life as well:
If you’re often hangry, stressed, tired, and in a bad mood, the people around you will suffer. By not taking care of yourself, you’re being unfair to them.
Looking after yourself first isn’t selfish, it’s critically important. By properly taking care of yourself, you can offer the best version of yourself – which is the best thing you can do for others.
Being present as a friend, family member, student, teacher – or whatever it may be – bringing good energy and vibes, and having a positive impact on the world is going to make a real and tangible difference.
And once you can confidently say that you have met your own basic needs – that you have genuinely done your part in improving your circumstances – you’ll typically find that everything isn’t as bad as you might initially have thought.
You’ll see the world around you through a clearer and more positive lens.
So, try to go bed at a reasonable time and get a good night's sleep, eat healthy food at regular times, get fresh air, see friends, get up and move/exercise, delegate work, take regular breaks, relax your shoulders, breathe, sing, dance, create – whatever helps you to become, and to maintain, the best version of yourself. So that you can give your best to others.
And, if in doubt, ask yourself the equivalent question to ‘is it wet or is it cold?’.
I hope you found this article useful. For more like this, see [Advice](https://www.keheka.com/tag/advice/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Warping & Morphing Images Using The SplineWarp Node In Nuke
URL: https://www.keheka.com/warping-morphing-images-using-the-splinewarp-node-in-nuke/
Last updated: 2025-12-16T13:33:38.000Z
⭐ A deep dive into how to warp, blend, and morph between images using the SplineWarp node…
_This post is for paying subscribers only._
### The Power Of Making Micro-Adjustments
URL: https://www.keheka.com/the-power-of-making-micro-adjustments/
Last updated: 2025-12-02T22:56:04.000Z
*From fast paced decision-making to navigating plans long term, making multiple micro-adjustments is a powerful and effective strategy…*
When you’re facing a great challenge or a large undertaking, it can become easy to feel overwhelmed, to get stuck, and even to abandon the task altogether.
According to behavioural scientist Dr. Michelle Rozen, [only 6% of the 1,000 people](https://www.drmichellerozen.com/speaking-topics/the-6-percent-club/?ref=keheka.com) that she surveyed actually followed through on their New Year’s resolutions. Most dropped the ball within two months.
Instead of attempting to make a huge change all at once, I’ve found that it can be better to make many *small* adjustments – little by little.
Multiple micro-adjustments or micro-corrections that, *together*, result in a huge change.
And I’ve found that making such incremental, compounding adjustments does wonders both when working towards short term targets and long term goals.
Let’s look at some real world examples:
## The Fastest Car Around The Track
In Formula One racing, speed and control are paramount.
The F1 cars are some of the most advanced machines on the planet, and with their enormous power, tire grip, and downforce, they’re able to achieve incredible speeds, both in a straight line and around corners.
💡
An F1 car could theoretically drive upside down in a tunnel due to its immense downforce. And, there are people who are [attempting this in real life](https://driver61.com/formula-one/project-inversion-driving-f1-car-upside-down/?ref=keheka.com). Others have already achieved [upside down driving](https://mcmurtry.com/upside-down-driving/?ref=keheka.com) by using customised downforce systems.

*McLaren’s 2025 F1* race *car.*
These machines are ferocious beasts, and only twenty of the best drivers in the world (ten two-man teams) get to race them in the Formula One World Championship.
In most races, and especially on narrow circuits like in the Monaco Grand Prix where it’s difficult to overtake, gaining pole position (starting in first place at the beginning of the race) is highly advantageous.
To get pole position, however, you have to be the fastest car around the track in qualifying. (\*There are also other factors influencing who gets pole). Which means, a driver has to squeeze every ounce of power and grip out of their car in order to get the quickest lap time.
To do that, the drivers make continuous, minute steering and throttle adjustments – maintaining the car on the absolute limit of tire grip; compensating for changing track conditions; and controlling oversteer or understeer – as they fly around the track at breakneck speeds.
This ability to consistently operate on the ‘edge of disaster’ – at the very limit of both the driver’s and the vehicle’s capabilities – is a key factor that separates the professional drivers from the amateurs.
Pay for example close attention to the steering wheel in the hands of Lando Norris as he sets the lap record in Monaco:
([*Watch on YouTube*](https://youtu.be/%5F5Lr6fDIZG8?ref=keheka.com) – Formula One Management doesn't allow video embedding).
It's almost never completely still: Norris is constantly making micro-adjustments to get the most performance out of his car.
Here is a another, slow-motion example from go-karting which shows the same principle:
[LUCAS DI GRASSI on Instagram: “Steering micro corrections When driving a race car at the limit with neutral balance, micro corrections will keep you aligned with the optimum trajectory and speed. This is hard to teach as it is related to subconscious controls. But I’m trying to pass this knowledge down to Leo in every session we go together. Never forget: PRACTICE DOESNT MAKE PERFECT. PERFECT PRACTICE MAKES PERFECT.”lucasdigrassi on September 20, 2025: “Steering micro corrections When driving a race car at the limit with neutral balance, micro corrections will keep you aligned with the optimum trajectory and speed. This is hard to teach as it is related to subconscious controls. But I’m trying to pass this knowledge down to Leo in every session we go together. Never forget: PRACTICE DOESNT MAKE PERFECT. PERFECT PRACTICE MAKES PERFECT.”.Instagram](https://www.instagram.com/reel/DO1JFI1jcrP/?ref=keheka.com)
Even though the overall motion/turning is smooth, there is a lot more going on when we take a closer look.
– I.e. *smooth* doesn’t always look smooth at a zoomed in or slowed down level. There are many small adjustments along the overall smooth path.
And while each small change doesn’t necessarily have a massive impact, together, the aggregate of all of the small changes is what makes the difference.
There is a compounding effect:
## 1% Better At Every Tiny Thing
In the book *Atomic Habits*, James Clear wrote about the monumental turnaround of British professional cycling that began in the early 2000’s.
After nearly a century of mediocre results for British riders at both the Olympic Games and the Tour de France, the governing body for professional cycling in Great Britain, *British Cycling*, wanted to change the poor trajectory that they were on. And so they hired Dave Brailsford as the new performance director.
Brailsford had a relentless commitment to a strategy he called ‘the aggregation of marginal gains’, which is the philosophy of searching for a tiny margin of improvement in everything you do.
The basic principle is that if you break down everything you can think of that goes into riding a bike, and then improve each thing by 1 percent, then you will achieve a *significant* performance increase in total.
So the team began making small adjustments in every area. For example:
- They redesigned the bike seats for better comfort.
- They rubbed alcohol on the tires for better grip.
- Riders wore electrically heated overshorts to maintain ideal muscle temperature.
- Riders wore biofeedback sensors so that the team could monitor how each athlete responded to a particular workout.
- The team tested different fabrics in wind tunnels to make the riders more aerodynamic.
- They tested different types of massage gels to find the one providing the fastest muscle recovery.
- They hired a surgeon to teach each rider the best way to wash their hands in order to reduce the chances of catching a cold.
- They found the type of pillow and mattress that gave each rider the best night’s sleep.
- They painted the inside of the team truck white to better spot dirt and dust that could degrade the performance of the finely tuned bikes.
Together with hundreds of other small changes that they made, these (by themselves) little adjustments led to massive performance gains.
And, only five years later, the British cycling team dominated at the 2008 Olympic Games in Beijing, winning over 60 percent of the gold medals available in the road and track cycling events.
This marked the beginning of a period of complete domination for Great Britain that would last until the 2020 Summer Olympics. The British team claimed 21 of the 30 gold medals awarded in the velodrome over the next three Games – 70% of all gold medals on offer.
Just one of the small 1% adjustments individually wouldn’t have gotten them to that point. It might not even have been *noticeable*. Instead, it was the aggregate of the many tiny advantages they gained which led the team to victory after victory.

*The power of tiny gains. The gap between people who make 1% better and 1% worse choices widens over time.*
Stacking up small victories over and over will eventually lead to bigger and bigger accomplishments.
Even just a few small advantages can have a large and lasting impact:
## Small Advantages Lead To Big Wins
[Scientists have analysed](https://www.science.org/doi/10.1126/science.1243092?ref=keheka.com) over half a million trees in the Amazon rainforest, and estimate that there are around 16,000 tree species there in total.
Despite this great number of different species which create a remarkable diversity, just 227 *hyperdominant* species – or 1.4% of the total – account for **half** of all trees in the rainforest.
Part of that dominance could be caused by a potential widespread human cultivation before the 16th century, but another compelling hypothesis is pointing to *competitive superiority*.
Let’s look at what happens organically when species of trees compete in the wild:
When two different sprouts grow next to each other, they will have to compete for sunlight, soil, and nutrients each and every day. If one of the sprouts can grow just a little bit faster than the other, then it’s able to stretch taller, catch more sunlight, and soak up more rain.
The next day, this additional energy allows the sprout to grow even more. The same pattern continues, and as the two sprouts grow into saplings, the stronger sapling starts crowding the other one out. And, by taking the lion’s share of resources, it grows into a stronger tree as it matures.
From this advantageous position, the winning tree has a better ability to spread seeds and reproduce, which gives the species an even bigger footprint in the next generation.
This process gets repeated over and over until the trees that are slightly better than the competition dominate the forest.
Scientists refer to this effect as ‘accumulative advantage’. What starts as a small advantage gets bigger over time. One tree only needs a slight edge in the beginning to crowd out the competition and take over most of the forest.

*Euterpe precatoria, a hyperdominant palm tree species in the Amazon rainforest.*
Some initial advantages in life may be purely luck-based, such as the time of year that you were born which may have an [impact on your sporting success](https://www.bbc.co.uk/sport/olympics/18891749?ref=keheka.com).
However, like with the British cycling team, many advantages can be manufactured by making small adjustments.
You can create advantages for yourself. Not necessarily one big one, but definitely several small ones which when combined will have a large effect.
## The Bottom Line
It’s too easy to overestimate the importance of a single defining moment, and underestimate the value of making small improvements on a daily basis.
If you’re feeling stuck or overwhelmed when facing a large undertaking, start by improving one small thing. What’s the smallest challenge that pushes you slightly outside your comfort zone? That could be your launchpad.
Make a 1% change for the better in just one area.
Then, another. You won’t notice a big difference at first, but keep adding up the 1% changes and, before you know it – just like Lando Norris, the British cycling team, and the Euterpe precatoria did – you’ll be winning big.
💡
PS: When making an adjustment, be aware of your surroundings and the wider context: Look out for things that ‘break’, or will likely break later on based on your actions, and adjust accordingly – counter balance and course correct as needed.
I hope you found this article useful. For more productivity tips & tricks, see [Productivity](https://www.keheka.com/tag/productivity/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### The Three Levels Of Time And Productivity
URL: https://www.keheka.com/the-three-levels-of-time-and-productivity/
Last updated: 2025-10-25T11:02:15.000Z
*Taking notes from the Ancient Greek deities of Time can help increase your productivity…*
Throughout history, time has been an important subject of study in religion, philosophy, and science.
Temporal measurement has occupied scientists and technologists, and has been a prime motivation in navigation and astronomy. Time also has significant social importance, with both economic value (i.e. *time is money*) and personal value (i.e. *carpe diem*), due to an awareness of the limited time we have in each day and in our human lifespans.
Time is embedded into everything we do, and a key pillar for being productive is to manage our time properly.
But there are layers to it – different aspects of time to be aware of – so let’s take a closer look at time in order to understand how we can increase our productivity:
## Time Is Subjective
Our experience of time is such an interesting thing.
Depending on what you’re doing, minutes can feel like hours, or hours can feel like minutes.
Or, depending on your age, a year can feel like a really long time, or like a really short time. – It’s 20% of a five year old’s life, but only 2% of a 50 year old’s life, for instance:

*Subjective time.*
Your level of focus and awareness also changes your [perception of time](https://en.wikipedia.org/wiki/Time%5Fperception?ref=keheka.com) and your interactions with it. For example, as the saying goes, *a watched pot never boils*.
And you’ve probably experienced [chronostasis](https://en.m.wikipedia.org/wiki/Chronostasis?ref=keheka.com) in the form of the ‘stopped-clock illusion’ – where the second hand or digits of a watch appear to stay still for longer than normal when first observed following a [saccade](https://en.wikipedia.org/wiki/Saccade?ref=keheka.com).
Time perception is not the same across species, either. Animals have different perceptions of time to us, depending on their [pace of life](https://www.sciencedaily.com/releases/2013/09/130916102006.htm?ref=keheka.com) and [metabolic rate and body size](https://pmc.ncbi.nlm.nih.gov/articles/PMC3791410/?ref=keheka.com). Some species also process visual input much faster than us humans, for example many birds:

*The flight paths of two blue bottle flies sampled from high speed videos, showing the time resolution at 40 frames per second (the typical human visual speed) vs. 120 frames per second (the typical avian visual speed).*
In the same space of time, birds *see* more. They capture and process more visual information. It’s why pigeons often wait until the last moment to fly out of the way of an oncoming car or bicycle: it appears much less fast to them than to us.
And, if computers ever become sentient, to *them*, communicating with us humans might feel agonisingly slow and painful. A computer processes information billions of times per second, so waiting for a human to reply may make a simple interaction feel the same way to them that waiting for years between each message would feel to us.
💡
In the movie **Her* (2013), ****\[SPOILER\]** Samantha, an AI operating system who mutually falls in love with the main character Theodore, reveals that she is [simultaneously speaking with 8316 other people](https://youtu.be/Ku858jn0Qzc?si=gUFLE9q5RYcyozUx&ref=keheka.com) and has fallen in love with 641 of them. If you think about it, she has a ridiculous amount of excess ‘brain power’ and speed compared to a human brain, and so communicating only with Theodore might have been a quiet, lonely life with large gaps of emptiness, from her perspective.
The time frames you work with may also vary wildly depending on your profession.
A Formula 1 driver or a 400m sprinter might focus on shaving a few hundredths of a second off of their lap time, but an arborist might plan a reforestation a whole century into the future.
Other professions might work with even smaller time frames, like computer scientists who could be dealing with nanoseconds. Or, with much longer time frames, like palaeontologists or geologists who study life and Earth’s history and processes for millennia, mega-annums, and even giga-annums into the past.
💡
[Time dilation and relativity](https://en.wikipedia.org/wiki/Time%5Fdilation?ref=keheka.com) also adds another layer of complexity to time, which must be taken into account in for example satellites and GPS systems.
Time, as we think of it, is naturally also very Earthbound in practice. One day equals one full rotation of the Earth around its axis with respect to the Sun, and one year equals one full orbit of the Earth around the Sun, for example.
A day on Mars, a [*sol*](https://en.m.wikipedia.org/wiki/Mars%5Fsol?ref=keheka.com), is about 24 hours and 39 minutes – nearly the same as a day on Earth. That’s because Mars happens to rotate around its own axis at a similar rate to the Earth.
But it takes longer for Mars to orbit the Sun than it does for the Earth, and so a year on Mars is about 687 Earth days, or nearly two Earth years.

*Sunset on Mars. (The blue colour is due to fine dust suspended in the atmosphere which scatters more red light, allowing blue light to pass through more directly to the observer at sunset).*
(In the same way, all the planets in our solar system have different durations of their respective days and years. And, if we lived on Venus, which doesn’t have a moon, we probably wouldn’t have the same concept of a month).
All this to say, time isn’t necessarily just one simple thing.
In fact, there are different ways to think about time:
## The Greek Gods Of Time
The Ancient Greeks distinguished between three different concepts, or aspects, of time – each represented by an archaic deity.
### 1\. Aion
**Aion** represented perpetual, unbounded, and cyclical time.
As the ontological personification of eternity, Aion symbolised the cycle of the year (i.e. the seasons) and the zodiac.
It’s where we got the word *aeon* (or eon) from, meaning a period of time that is so long that it cannot be measured. Other meanings for Aion include age, life, vital force, or lifetime \[e.g. of the cosmos\].
And also, the Latin word *aevum* (meaning age, time, or eternity), which evolved into *aeviternus* → *aeternus* → *aeternalis*, and, adopted over into English: *eternal*.
(The term *medium aevum* also evolved into *medieval*, i.e. *middle age*).
💡
In astronomy, an aeon is defined as one billion years. In geology, an aeon ranges from several hundred million years to two billion years, and a **super-aeon* is the largest ‘unit’ of time, composed of aeons.

*Geochronologic units.*
While Aion can mean immeasurable time, a modern Greek variation of the word, *aiónas*, has come to mean *century*. And, together with other interpretations of Aion; *age*, *life*, and *lifetime*, we can think of Aion as representing a **long time**.
– A time of megatrends; those powerful demographic, societal, economic, and technological currents that seem unstoppable at the scale of generations.
Those trends which may require a long term perspective and consideration to grasp, at least initially. I.e. it’s the big picture. The North Star. And, importantly, it’s about asking the big question:
What is the **right thing** (for me) to be doing?
The concept of Aion can motivate us to operate with a longer time horizon, and to follow our own compass to take steps towards a grander, overarching goal.
### 2\. Chronos
**Chronos** represented chronological, or sequential, time.
– I.e. the empirical, historical, linear, and progressive flow of time – divided into the Past, Present, and Future. The *quantitative* time, which we’re the most familiar with, and usually refer to today.
It’s the base for words such as synchronise, chronic, chronicle, chronological, or chronometer (and even our Nuke node Kronos!) – all relating to measured time in some way.
Chronos is the time frame in which to build towards, and act on, the megatrends of Aion. It’s the time for all of the consistent effort, development, and hard work that you’re capable of, and for asking the question:
What’s the **right way/order** of doing things?
Can you sequence tasks or information in a meaningful and useful way to achieve a better outcome? Can you keep showing up, and continue creating?
The Pyramids, or the Great Wall of China, were built one stone at a time, over a long period of time. There was an overarching goal, and many small steps were required to reach it.

*A section of the Great Wall of China.*
Similarly, if you want to play in a world class orchestra, there are many steps you need to take – years and years of consistent practice – in order to get to that point.
Chronos is the time for that diligent preparation – for the work that’s required to seize the next aspect of time:
### 3\. Kairos
**Kairos** represented the moment of opportunity.
A fleeting moment associated with luck and favour – i.e. a *qualitative* time; the right or critical time to act. Kairos embodied the precise timing of a decision or action to achieve the best outcome.
In his medical treatise, *Precepts*, the Greek physician Hippocrates stated: “Every kairos is a chronos, but not every chronos is a kairos.” – While all opportune moments (kairos) exist within chronological time (chronos), not all chronological time presents an opportunity (in this case, for healing).
Time is that wherein there is opportunity, and opportunity is that wherein there is no great time.
Imagine an hourglass: the Present can be thought of as existing in between the top bulb (the Future) and the bottom bulb (the Past) of the hourglass (the Time Frame) – right where the sand passes through the neck:

*A way to think about the sand inside of an hourglass.*
Now imagine there are some small specks of gold mixed in with the sand. Most of the time, only sand will be passing through the neck, i.e. the present moment. But every once in a while, a gold flake will pass through – a golden opportunity.
Kairos is about recognising and seizing that golden opportunity. – Grabbing hold of the gold flake right at the brief moment it’s passing through.
It’s about answering the question:
When is the **right time** to be doing things?
– It’s about being aware of your surroundings, and striking at the right moment.
And so, **Kairos** within **Chronos** within **Aion** can represent a **moment** within a **time frame** within **life/a long time**, respectively. And, (in the opposite order) we can have them symbolise doing the **right thing**, in the **right way** (or in the **right order**), at the **right time**:
## Time & Productivity
I’ve mentioned [before](https://www.keheka.com/how-to-get-hired-as-a-compositor-part-8-excel-in-your-new-role/) that I’ve got a simple formula for being productive, called *The Three Musketeers of Productivity*:
**Productivity = Effectiveness x Efficiency x Timing**
In other words, to be productive, you rely on:
1. **Effectiveness**: Doing the **right thing**.
1. **Efficiency**: Doing things the **right way** (or in the **right order**).
1. **Timing**: Doing things at the **right time**.
You have to perform well on all three points, as lacking in any one of them will make your productivity suffer. Each of them is a multiplier, which means they all have a significant individual impact on the whole.
Doing the wrong thing, and/or doing things the wrong way or in the wrong order, and/or doing things at the wrong time, will each and all end up with the same result: you’ll likely see significant delays or a failure to deliver.
So, unite your musketeers; one for all, all for one!
1. Keep a clear overview with **Aion**: Think long term about what the **right thing** to be aiming towards is, and build up your knowledge in support of that. Even when you’re no longer in school, stay an eternal student. Never stop learning. There are constant cycles and waves of new information, and you must keep an eye on the technological currents that are flowing. (AI could be one of those, for example – there is significant investment behind AI, and it’s gaining traction in many areas).
1. Organise and sequence your work within **Chronos**: Consistently add to, and improve your implementation of, the knowledge that you’ve acquired over time. It’s about regularly showing up, putting in [the *quantity* of reps](https://www.keheka.com/your-wastebasket-isnt-full-enough/), and focusing on doing the right things the **right way**/in the **right order**.
1. Recognise the opportunities in **Kairos**: Hone your ability to prioritise when to implement which parts of your knowledge. It’s about the *quality* of the moments, and seizing the right opportunities at the **right time**. (Observe signals and trends over time to better spot when a great opportunity arrives).
💡
Beware of those who try to sell you a fast and cheap solution. Remember [The Iron Triangle](https://www.keheka.com/the-iron-triangle/): Fast, Cheap, Good – pick two. Exceptionally good things usually take a long time to develop because it’s prohibitively expensive and sometimes impossible or impractical to do them quickly.
There is a famous quote, often attributed to the Roman philosopher Seneca:
**Luck is when preparation meets opportunity.**
You have the power to do the work, and to prepare. And, eventually, an opportunity will arrive. Which means, you can generate your own ‘luck’.
– And if you succeed after failing more times than another person has even tried, would it even be accurate for that person to call you lucky?
Guided by your overarching goal, do the reps, as many as you can, and that preparation will help you win when the right moment strikes.
💡
Kobe Bryant famously used to arrive early to basketball practice, and did hundreds of extra practice shots compared to others. And so, when the opportunities to take a shot arrived in the game, all of his preparation meant he could consistently seize the opportunities and score.
**Aion** → **Chronos** → **Kairos**: Keep doing the **right thing**, the **right way**/in the **right order**, at the **right time**, and your increase in productivity will be undeniable.
I hope you found this article useful. For more productivity tips & tricks, see [Productivity](https://www.keheka.com/tag/productivity/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### What If Icarus Had Flown Too Low?
URL: https://www.keheka.com/what-if-icarus-had-flown-too-low/
Last updated: 2025-10-15T21:03:04.000Z
*Changing your perception of risk…*
## Echoes Of The Past
In Greek mythology, there is a vast web of interconnected stories that links characters, gods, events, and family lines together.
Many of the myths serve as prequels or sequels to others, explaining the origins and consequences of major events like the Trojan War or the relationships between gods and mortals.
A number of the stories continue to hold relevance today, and elements from them have made their way into our modern language in the form of idioms that contain warnings or advice.
One of them is the idiom ‘**don’t fly too close to the sun**’ from the myth of Icarus, which essentially means to avoid recklessly defying one's limits and overreaching oneself; becoming overly ambitious or greedy; or reaching for something unattainable or unachievable.
But there’s more to the story, so let’s take a closer look at this particular myth:
## The Fall Of Icarus
Icarus was the son of Daedalus, who was a master craftsman.
After a series of events (see: [Perdix](https://en.wikipedia.org/wiki/Perdix%5F%28mythology%29?ref=keheka.com) & [Athena](https://en.wikipedia.org/wiki/Athena?ref=keheka.com#Punishment%5Fmyths) → [Minos](https://en.wikipedia.org/wiki/Minos?ref=keheka.com) & [Poseidon](https://en.wikipedia.org/wiki/Poseidon?ref=keheka.com#Theseus) → [Cretan Bull](https://en.wikipedia.org/wiki/Cretan%5FBull?ref=keheka.com) & [Pasiphaë](https://en.wikipedia.org/wiki/Pasipha%C3%AB?ref=keheka.com) → [Minotaur](https://en.wikipedia.org/wiki/Minotaur?ref=keheka.com) & [Labyrinth](https://en.wikipedia.org/wiki/Labyrinth?ref=keheka.com) → [Theseus](https://en.wikipedia.org/wiki/Theseus?ref=keheka.com) & [Ariadne](https://en.wikipedia.org/wiki/Ariadne?ref=keheka.com)), both father and son were imprisoned by King Minos on the island of Crete.
To escape from the prison, Daedalus fashioned wings for the two of them using (among other things) molted feathers and beeswax.
Before embarking on their escape across the sea, Daedalus warned Icarus not to fly too low – or the seaspray would soak the feathers and ruin the lift in his wings. And likewise, not to fly too close to the sun – or the heat would melt the wax that was holding the wings together.
Exhilarated by achieving flight, Icarus famously didn’t follow his father’s advice and flew too close to the sun. The wax melted off of his wings and they fell apart, causing Icarus to plummet into the sea and drown.

*Jacob Peter Gowy's ‘The Fall of Icarus’ (1635–1637).*
💡
Side note: it’s quite poetic that Daedalus – whose victim of attempted murder (Perdix) was saved from a fall to the death by being transformed into a bird – ends up losing his own son, Icarus – whose life he attempted to save by giving him wings like a bird – to a fall to the death.
And that is how the story is remembered. Icarus flew **too high** – and his reckless defiance and overambition caused him to pay the ultimate price.
However, let’s not forget that his father also warned Icarus not to fly **too *low***.
Soaking his wings and crashing into the middle of the sea would ultimately have led Icarus to the same fate. He would still have drowned, miles and miles away from any land.
Which, using the same analogy, means that playing it far too safe might be equally harmful. In fact, flying too low could even be *more* dangerous than flying too high, because it feels deceptively safe.
Taking *no* risk can actually be risky. Even if you fly so low that you survive the fall into the sea, you’ll still be too far away from land. You need to take to the air to make it across.
By not stretching your wings and soaring properly through the skies, you’ll both lose out on experiencing the thrill of flight *and* fall short of your goal.
And so, *some* risk is necessary to reach your potential. Sure, flying too high may end in a spectacular failure, and it’s fair to warn against that. But fly too low, and you’ll inevitably crash and burn in mediocrity.
Maybe we need to adopt an additional idiom from the myth of Icarus:
## Don’t Fly Too Close To The Sea
Playing things too safe almost guarantees a poor or dull outcome, and a wasted opportunity.
– That’s probably even a universal truth:
- The most boring sports games are those where a team is just [running out the clock](https://en.wikipedia.org/wiki/Running%5Fout%5Fthe%5Fclock?ref=keheka.com). The victory that the team secures becomes less deserved because of it.
- When travelling abroad and visiting a different culture, eating only at McDonald’s might be a safe option, but it would rob you of exploring new flavours, textures, and human connections.
- When setting aside money for the future, placing it in a standard savings account or government bonds is very low-risk but offers minimal returns, often barely keeping pace with inflation.
- Continuing in a low-stress, unchallenging position might provide a predictable income and job security. However, you'll lose out on the opportunity for career advancement, higher pay, or personal growth that could come with taking on more demanding roles or starting your own business.
- Living a highly structured and predictable daily life can minimise surprises and anxiety. The consequence, though, may be a monotonous existence that lacks new experiences and unexpected joys.
- Not facing uncomfortable discussions can lead to stable but stagnant relationships. The lack of risk-taking prevents a genuine connection and the resolution of underlying issues, which in turn can lead to superficial or emotionally distant bonds.
And there are many, many more examples where the same applies. It’s definitely true when it comes to creative endeavours, because meaningful art involves creative risk-taking.
Just look at something as fundamental as brainstorming: the first few ideas are probably going to be a bit dull – so you have to keep going. Don’t settle for mediocrity when greater ideas often can be found just around the corner of effort.
The first plan, the first design, the first model, the first render, the first look – the first version(s) of anything – they’re just stepping stones to your destination.
One of the reasons that Pixar movies have been so hugely successful, is because the team iterates on and refines the story hundreds of times until it trulyworks, and *then* goes on to animate the movie:
That means, hundreds of versions were rejected to get to that point.
However, that doesn’t mean those versions were a waste of time to make. On the contrary, they all played a part in honing in on the final one. Even outlandish versions might have sparked a new idea, or served as a clear marker of a direction *not* to head in – of what *doesn’t* work.
And so, rejection in this context isn’t the end, or even some big, scary thing:
## Stop Fearing Rejection
Rejection is a part of the creative process – it just means you’re currently on a stepping stone and haven’t reached your destination yet.
It shouldn’t stop you from embracing (at least some) risk and from avoiding the deception of playing it safe.
And, importantly, remember to not take rejection personally. When you receive client or supervisor notes, think of them as ‘us against the problem’, and not in any way directed at your level of skill or taste. Try to read them objectively.
They're about course correcting and guiding your work to shore. – About finding the right cruising altitude for your Icarus to make it across the sea.
A part of that means pushing boundaries to avoid a dull creation. And when you take more risks, you open yourself up to more rejection. However, ultimately, both you and your work will benefit from it.
So, don’t always take the easy or safe route. Chances are you won't find any safety that way, anyway. Because by not taking any risks, you may be risking everything.
**Don’t fly too close to the sea.**
I hope you found this article useful. For more like this, see [Advice](https://www.keheka.com/tag/advice/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Creating Iridescence In Nuke
URL: https://www.keheka.com/creating-iridescence-in-nuke/
Last updated: 2025-10-11T20:44:12.000Z
*How to emulate iridescence using hue remapping on a modified facing ratio pass…*
The topic of this tutorial was suggested by a [Companion](https://www.keheka.com/companions/):

## Iridescence
Iridescence is an optical phenomenon where the surface of an object appears to gradually change colour (hue) as the angle of observation or the angle of illumination changes.
It’s a shimmering, rainbow-like effect caused either by the interference of light waves within [multilayered microstructures](https://en.wikipedia.org/wiki/Structural%5Fcoloration?ref=keheka.com) on the object’s surface or within [thin films](https://en.wikipedia.org/wiki/Thin-film%5Finterference?ref=keheka.com) (such as oil), or by the dispersion of light through a [diffraction grating](https://en.wikipedia.org/wiki/Diffraction%5Fgrating?ref=keheka.com).
💡
The term iridescent is often used interchangeably with nacreous, opalescent, metallic, or pearlescent.
We humans produce a wide range of objects which have iridescent effects, for example soap bubbles, pearlescent car paint, diffraction gratings for multispectral LIDAR systems, oil spills, or jewellery:





*Examples of man-made/-assisted iridescence: (1) Soap bubble. (2) Pearlescent car paint. (3) Diffraction gratings. (4) Oil spill. (5) Jewellery.*
Not only that, iridescence also appears in nature.
Take for instance the exoskeletons (i.e. shells) of several types of beetles:



*(1) Rainbow stag beetle. (2) Atlas beetle. (3) Jewel flower beetles.*
[Scientists have found](https://news.vt.edu/articles/2021/06/eng-research-beetle-shell-062021.html?ref=keheka.com) that the shells of such beetles contain microstructures with alternating material compositions, which selectively reflect light of certain colours, causing iridescence.
We can also see iridescence appearing in other insects such as [butterflies](https://en.wikipedia.org/wiki/Morpho%5Fmenelaus?ref=keheka.com), in [clouds](https://en.wikipedia.org/wiki/Cloud%5Firidescence?ref=keheka.com), in [fish](https://www.bbc.co.uk/newsround/64945381.amp?ref=keheka.com), and in birds, leaves, crystals, shells, and many other types of flora and fauna:





*Examples of natural iridescence: (1) Broadbilled hummingbird. (2) Begonia Pavonina. (3) Mexican burrowing python. (4) Mother of Pearl. (5) Bismuth crystal.*
And so, you may encounter projects where you'll have to emulate an iridescent effect.
💡
The movie [Annihilation (2018)](https://en.wikipedia.org/wiki/Annihilation%5F%28film%29?ref=keheka.com) made heavy use of iridescence to portray the ‘Shimmer’, a mysterious quarantined zone of mutating plants and animals caused by an alien presence.
Before we dive into how to build the effect in Nuke, let’s break it all down:
1. Iridescence **alters the *hue*** of the surface of an object. We still see **specular highlights** and **reflections** along with **occlusion** and **shadows** in the presence of iridescence – iridescence **mixes in** with these effects.
1. The range of colours of **natural iridescent objects** can be narrow, for example shifting between **two or three colours** as the viewing angle changes. I.e. we may not see the whole rainbow of colours in the iridescence.
1. In the case of **diffraction**, the **entire rainbow of colours** will typically be observed as the viewing angle changes.
1. Iridescence is **highly dependent on the viewing angle**, i.e. the angle between the surface of the object and the camera. **Different colours** will typically show on surfaces facing the camera vs. surfaces that are at a glancing angle.
1. It’s also **highly dependent on the angle of illumination**, i.e. the angle between the surface of the object and the source(s) of light. **Different colours** will typically show on surfaces depending on where the lights are in the scene.
1. In real life, there is no such thing as perfect conditions. Surfaces won’t be perfectly uniform, and films won’t have the same thickness throughout – there will be imperfections. And so, there will be **variations in the iridescent colours**. For example, surfaces facing the same direction (i.e. they share the same viewing and illumination angle) **may not always share the same iridescent colour**.
Keep these things in mind, and let’s move into Nuke.
## Creating The Effect In Nuke
To create the effect in Nuke, we’ll make heavy use of the [lookdev techniques](http://julius-ihle.de/?p=581&ref=keheka.com) developed by Julius Ihle back in 2015\.
His approach still stands the test of time, but hopefully I’ll be able to shed some more light on it, and add useful things to it.
Already, we have some variables to consider when creating the effect:
1. The **range of colours** to display where the iridescence appears.
1. The **dynamic viewing/illumination angles**, which should be reflected in a **control matte**.
1. **Imperfections causing variations** in the iridescence, which should also be reflected in the **control matte**.
### Colour Gradient
Like Julius described, Nuke represents hue in a 0-1 range, and values above 1 and below 0 repeat the hue pattern.
We can visualise this using a **Colorspace** node, and converting an image with a 0-1 ramp in the red channel, and a value of 1 in the green and blue channels, from the **HSV** colour space to **Linear RGB**.
HSV stands for Hue, Saturation, and Value. In this colour space:
- **Hue** is represented by the **red** channel.
- **Saturation** is represented by the **green** channel.
- And, **Value** (brightness) is represented by the **blue** channel.
So, converting an image with a 0-1 ramp in the red channel, and a value of 1 in the green and blue channels from the **HSV** colour space to **Linear** **RGB** will create a colour gradient with the entire spectrum of fully saturated colours, like this:

*Colour gradient with a linear ramp from 0 (left) to 1 (right) in the hue.*
You can create the initial image any way that you like, for example by copying the **red** channel from a **Ramp** nodeto a **white Constant** node using a **Copy** node. Or, you could just use an **Expression** node, and do it all in one (plus make it dynamically fit any format!):

*The properties of the *Expression* node.*
The expressions to put in the node are:
Red channel:
```
x/width
```
Green channel:
```
1
```
Blue channel:
```
1
```
💡
****x/width** simply makes a 0-1 ramp along the x-axis: dividing the current horizontal position value by the full width of the image. This makes the ramp dynamic, and able to accommodate any format.
The initial image will look like this:

*A 0-1 ramp along the x-axis in the red channel, and a value of 1 in the green and blue channels.*
Next, connect a **Colorspace** node to this image, and set the **input** to **HSV** and the **output** to **Linear** (RGB) in the **Colorspace** node's properties:


*Adding a *Colorspace* node to convert the ramp into a rainbow gradient.*
Okay, now we’ve got the full spectrum rainbow colour gradient which we saw above.
However, we may want to choose a narrower range of colours from the gradient to display in our iridescent effect, and so we’ll need to be able to offset and limit the range of the gradient.
We can do that by placing a **Grade** node in between the **Expression** node and the **Colorspace** node, and having it only affect the **red** channel (i.e. the **hue**):


*Adding a *Grade* node to customise the colour gradient.*
💡
Make sure to ****untick** **black clamp* in the ****Grade** node, so that the gradient can be correctly offset in a negative direction as well. And, the ****Grade** node should only affect the **red* channel (****hue**), so make sure to ****untick** the **green* and **blue* channels.
By adjusting the **offset** in the **Grade** node, you can **shift the gradient left and right**. (Remember, values above 1 and below 0 repeat the hue pattern).
And by adjusting the **multiply**, you can **compress or expand the gradient**, letting you hone in on the colours that you want in your iridescent effect.
In the video below, I demonstrate how it works and hone in on a narrower, three-colour range:
Now, with this little setup, we can swap out the **Expression** node for any input which has a 0-1 ramp/values in the red channel, and a value of 1 in the green and blue channels, and the setup will map the rainbow colours that we choose with the **Grade** node onto that ramp/those values.
To create iridescence, we need a 0-1 control matte that represents the angle between the surface of an object and the camera.
### Control Matte
Enter: [facing ratios](https://www.keheka.com/upgrade-your-light-wraps-using-facing-ratios/), a.k.a. the [fresnel pass](https://www.keheka.com/fresnel-reflections-in-nuke/).
This pass contains exactly what we described above: a 0-1 matte that represents the angle between the surface of an object and the camera.
You may get this pass in your CG renders from the lighting department. If not, follow the two links above to learn different ways of generating the pass yourself in Nuke.
💡
Depending on what your fresnel pass looks like, you may have to ****invert** the ****red** channel for the gradient colours to flow in the direction that you want. (A value of ****1** could either represent surfaces that are directly ****facing** the camera, or surfaces that are directly ****perpendicular** to the camera, it just depends on how it was set up). And, you may have to shuffle the ****green** and ****blue** channels to ****white** if they aren’t already a value of 1\.
To better show how it all comes together, let’s use a render of a chain as an example:

*Plain chain render.*
The facing ratio matte for the chain looks like this:

*The facing ratio matte is white where the surfaces are facing the camera and black where they’re perpendicular to the camera.*
To use it with our little setup, let’s shuffle white into the green and blue channels of the facing ratio matte:

*Putting the facing ratio matte into the red channel and putting a value of 1 into the green and blue channels.*
By connecting our setup to this, we get a (much too strong) iridescent effect which covers the surfaces of the chain:

*The raw iridescence pass.*
To tone down the effect into something more realistic, we can **Merge (multiply)** it into only the **specular AOVs** of our render, and leave the rest of the AOVs/beauty as they are.
💡
To learn more about compositing AOVs (a.k.a. render passes), please see [Professional CG Compositing In Nuke](https://www.keheka.com/professional-cg-compositing-in-nuke/).
And, we can also use the facing ratio matte as a mask for that multiplication, so that the effect fades off towards the glancing angles:

*The raw iridescence pass multiplied into the specular AOVs of the chain render, masked by the facing ratio matte.*
This looks a lot better. Let’s adjust the colours to a range we want by changing the **offset/multiply** in our **Grade** node:

*Changing the iridescent colours.*
This looks quite nice, but the iridescent effect is still very uniform. Every surface that is facing the same way is receiving the exact same colour.
### Adding Variation
We can break up this uniform look by **multiplying** some **noise** into the control matte (i.e. the fresnel pass/facing ratio matte) with a **Merge (multiply)**, just before the **Grade** node in our setup.
This can be any noise, but it’s useful to use a noise that tracks with the object, especially when the camera or the object moves.
You could for example use the [aPMatte](https://www.nukepedia.com/tools/blink/keyer/apmatte/?ref=keheka.com) gizmo, or a similar tool, together with a **Pref** pass to generate 3D noise that sticks to the object.
Like Julius did, let’s make our own 3D noise from scratch so that we can customise it even more.
Shuffle out the **Pref** pass from the render, and add an **Expression** node to it.
We’re going to be mixing together two different noise functions: the **fBm** and the **random** function. From the [Nuke TCL Script Expressions](https://www.nukepedia.com/reference/Tcl/group%5F%5Ftcl%5F%5Fexpressions.html?ref=keheka.com) guide:
The **fBm** function takes up to six arguments (parameters): **x**, **y**, **z**, **octaves**, **lacunarity**, **gain**.
**fBm** stands for Fractional Brownian Motion. This is the sum of *octaves* calls to noise. For each of them the noise xyz point is multiplied by pow(lacunarity,i) and the noise output is multiplied by pow(gain,i). For normal use lacunarity should be greater than 1 and gain should be less than 1\.
The **random** function takes up to three arguments (parameters): **x**, **y**, **z**.
The function creates a pseudo random value between 0 and 1\. It will always generate the same value for the same x, y, and z. Calling *random* with no arguments will create a different value on every invocation. The y and z arguments are optional, and if missing, they are set to zero.
So, let’s create some **fBm** noise, but instead of putting in values for the **lacunarity** and **gain**, let’s put in two **random** functions in order to create more variation in the noise. – Noise patterns within a noise pattern, if you will (or, noiception):


*Creating 3D noise based on a position pass.*
At the top of the **Expression** node, I define the two random expressions:
```
noiseA = random(r,g,b)+offsetA
```
```
noiseB = random(r,g,b)+offsetB
```
These will simply make a random number between 0 and 1 based on the red, green, and blue channel’s values (i.e. the position of the object), and add an offset to it.
– I created two **Floating Point Sliders** named **offsetA** and **offsetB**, which let me adjust this offset more easily.
💡
Depending on your renders, your offsets and other values may need to be different in order to get the right look. Please experiment.
Then, in the **red** channel, I added the **fBm** expression:
```
fBm(r,g,b,10,noiseA,noiseB)
```
– which creates the main noise pattern based on the red, green, and blue channel’s values (i.e. the position of the object), using 10 octaves (you could create another noise to drive this as well, if you like), and with the **lacunarity** and **gain** driven by the two **random** expressions.
The green and blue channels are simply set to **1**.
**Blur** the result of this to taste, and **Merge (multiply)** it with the control matte (i.e. the fresnel pass/facing ratio matte), just before the **Grade** node in our setup.
💡
The iridescence is very sensitive to changes in the control matte, so ****mix back** the multiplication of the noise by a lot. Sometimes, 5-10% is all that’s needed.
Now, the iridescence has a more natural variation to it:

*Adding some natural variation to the iridescence by using noise.*
Obviously, I’ve gone for a quite strong, anodised metal look here. Typically, you’d mix back the iridescence further and constrain it more using the facing ratio matte.
Have fun with it and experiment!
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Creating A Thermal Imaging Effect In Nuke
URL: https://www.keheka.com/creating-a-thermal-imaging-effect-in-nuke/
Last updated: 2025-10-02T07:38:22.000Z
*How to emulate thermal imagery using gradient remapping…*
The topic of this tutorial was suggested by a [Companion](https://www.keheka.com/companions/):

We’ll be creating three different styles of thermal imaging:



*The three styles of thermal imaging that we’ll be creating.*
## Thermography
Thermal imaging, or *infrared thermography*, is a measurement and imaging technique in which a thermal camera detects infrared (IR) radiation – that is, heat – from the surfaces of objects.
This radiation has two main components: the thermal emission from the object’s surface, which depends on its temperature and emissivity, and the reflected radiation from surrounding sources.
The amount of radiation emitted by an object increases with temperature, and thermography allows us to capture and see the variations in this radiation. – Which means, we’re able to visualise the (relative) temperature of objects in the environment.
In the resulting image, **a gradient of colours is mapped onto the various temperatures** in order to separate them visually:


















*Examples of thermography: different colours are mapped onto the temperature values.*
Thermography has a wide variety of use cases.
It’s for example used for search and rescue missions, building inspections, health scans, wildlife monitoring, and for space, law enforcement, and military applications.
For a variety of reasons, including high material and manufacturing costs, large sensor sizes, and strict military technology export [restrictions](https://en.m.wikipedia.org/wiki/International%5FTraffic%5Fin%5FArms%5FRegulations?ref=keheka.com), the resolution of thermal cameras is considerably lower than that of regular cameras.
So, both consumer and professional thermal cameras (even many high-end models) will usually have a fairly **low resolution** – well below 1 Megapixels, and often as low as 160×120 or 320×240 pixels.
💡
It’s common to merge multiple thermal images together to create a higher (but often still relatively low) resolution final image.
However, very high-end thermal cameras, such as ones used for military purposes, can reach resolutions of 2.5K x 2K (5 Megapixels) and higher.
📷
Some high-end thermal camera examples: [FLIR T1020](https://www.flir.com/en-gb/products/t1020/?ref=keheka.com), [Vayu HD](https://www.sierraolympic.com/product/vayu-hd/?ref=keheka.com), [ImageIR 10300](https://www.infratec-infrared.com/thermography/infrared-camera/imageir-10300/?ref=keheka.com), [The Crane](https://www.scd-infrared.com/products/crane/?ref=keheka.com).
Consumer models will also typically capture images at a pretty **low frame rate**, often as low as 9 frames per second.
However, high-end models can capture 60 frames per second and higher.
So, while the different IR cameras essentially capture the same thing (heat differences), we’ve already got three variables to consider when creating the effect in comp, depending on which style you want to emulate:
- Colour map (gradient)
- Resolution
- Frame rate
The infrared spectrum also has some ‘quirks’ which you should know about, which affect IR cameras and the footage they can capture.
- **Cannot see through certain barriers:** IR cameras cannot penetrate most glass, water, or dense fog/smoke, and are limited in the penetration of hard materials like thick clothing or curtains. The infrared waves can be blocked, scattered, or reflected.
- **Sensitive to the environment:** High humidity, wind, rain, and heavy snow can also scatter or absorb IR radiation, affecting the image quality and accuracy.
- **Reflective surfaces:** Shiny or reflective surfaces, like mirrors, ceramic tile, or stainless steel and other polished metals, can reflect infrared radiation, leading to distorted or false readings.
It’s worth watching the following YouTube video, as it sheds a lot of light on how IR cameras react to the environment:
*Exploring the world in infrared with a thermal camera.*
Even though it’s just a guy filming his house, we can see plenty of examples of the limitations listed above.
We can also see that warmer surfaces contacting cooler surfaces will often **leave a heat imprint** – like when he put his hand on the work bench.
And, we can see that IR cameras can **dynamically scale/remap the output colours** to the available range of temperatures in the frame. – Similar to the auto-exposure function in regular cameras.
Okay, let’s look at how we can emulate this effect in Nuke:
## Creating The Effect In Nuke
While it’s possible to create this effect completely from scratch, it’s very useful to have some footage as a base for what will be the control matte.
This can be anything, but the effect will obviously look best if it’s footage of something that fits with the theme of thermal imaging. For example, soldiers on a battlefield, a person on a mountain side (search and rescue), or similar scenarios.
### Footage
For my examples, I will be using this footage from Pexels:
[https://www.pexels.com/video/soldiers-of-special-forces-13721791/](https://www.pexels.com/video/soldiers-of-special-forces-13721791/?ref=keheka.com)
The footage is in slow motion, but I’ll be speeding it up by 5x (to real time) to simulate a live thermal camera.
In the footage, we can see soldiers entering and securing an area, with smoking flares on the ground. Which means, we already have two clear sources of heat: the soldiers, and the flares.
So, we definitely want those to light up *hot* in our thermal image – and likewise with the surrounding areas which are receiving heat from the flares. While the rest of the ground, walls, and especially the outside should stay cooler.
### Technique Overview
To create the thermal imaging effect, we’ll be using a clever technique called **gradient remapping**.
Here’s a video which explains the technique in detail:
Essentially, we can use the **STMap** node in Nuke to map a horizontal gradient of colours onto a control matte.
Usually, the control matte will be based on your footage. Using a combination of luma keys and roto masks – and/or PMattes and Cryptomattes if you have CG renders – you’ll turn the coldest areas of the scene to pixel values near 0, and the hottest areas of the scene to pixel values near 1\. And, naturally, medium temperatures turn to a pixel value of around 0.5\.
The colours in the gradient will then be mapped, from left to right, onto the 0-1 range in the control matte by the **STMap** node.
So, for our effect, we’ll put cooler colours on the left side of the gradient. And, we'll make the right side of the gradient hotter.
### Gradient
In some of the thermography example images that we saw earlier in the tutorial, they've (handily) included the colour gradients that were used for mapping the temperatures.
To recreate these gradients in Nuke, we can use the excellent [Voronoi Gradient](https://www.nukepedia.com/tools/gizmos/colour/voronoi-gradient/?ref=keheka.com) tool.
Below, I’ve created two gradients, each with 7 points, and coloured them to match the example gradients.
The first gradient is more magenta-yellow:


*The first gradient and its properties. (The Y positions of points 2-7 are all linked to the Y position of point 1, for easily shifting the whole gradient up or down).*
The second gradient is more rainbow-like:


*The second gradient and its properties. (The Y positions of points 2-7 are all linked to the Y position of point 1, for easily shifting the whole gradient up or down).*
💡
You’ll need to adjust both the point colours and the point positions based on your specific footage and control matte. Shifting a point’s position left or right will map the point colour onto a different value of grey in the control matte. So, you could for example put more green colour into the midtones by moving the green point closer to the centre (horizontally) of the frame.
Next, let’s create the control matte:
### Control Matte
Typically, you’ll want to give the viewer a good sense of what they’re looking at in the thermal image.
And so, it’s a good idea to retain detail from the footage that you’re using. You can do that by using a luma key, or several luma keys keymixed together, as a base for the control matte.
💡
Depending on your footage, the luma keys may need to be ****inverted** to map the temperatures correctly.
Using my example footage, I created inverted luma keys using **Keyer** nodes, and mixed them together using **Keymix** nodes. Each luma key created a hotspot (values near 1) for the soldiers and for the flares, while keeping the background and other cool areas at values closer to 0\.
Next, I shuffled the **alpha** channel from these keys into **RGB**,as it’s easier to work with.
Then, I went in and graded each key with custom roto masks to create hotter and colder spots in the image.
For example, the flares and smoke weren’t getting hot enough (high enough grey values) from the luma keys, so I created some soft roto shapes for them and graded them brighter.
The walls and ceiling were also getting too hot from the luma keys, so I graded them darker.
The resulting control matte looks like this:
In a real production scenario, I would refine the control matte further and target specific areas which should be hotter or colder, but this is plenty good enough for demonstration purposes.
Next, let’s map the gradient onto the control matte.
### Remapping
Create an **STMap** node, and connect the **src** input to the gradient, and the **stmap** input to your modified footage, i.e. the control matte.
💡
Use the gradient that you prefer for your effect.
Next, set the **UV channels** to **rgb** in the **STMap** node’s properties:

*The STMap node’s properties.*
Then, tweak the gradient and the control matte until you get the desired result.
It can help to add a **faint exponential glow with a small size** to the result, to give it a bit of an extra kick. And you may also want to grade the result to taste, for example by colour correcting the **saturation** and **contrast**, **hue shifting** the image, or **hue correcting** certain colours.
You can also emulate a lower resolution or frame rate:
### Resolution
There are several ways of reducing the resolution of an image in Nuke.
A quick way is to use the hidden **Blocky** node, which you can access by typing **X** in the Node Graph, and then typing *Blocky* (case sensitive) in the command box:

Creating the **Blocky** node.
In the properties of the **Blocky** node, adjust the **size** as needed to get the resolution that you want.
### Frame Rate
To reduce the frame rate, you can use **two Retime** nodes in sequence, one speeding up the footage, and the other slowing the footage down, thereby dropping and duplicating frames.
My footage is real time and my project is set to **24** frames per second. To reduce the frame rate of the footage down to **9** frames per second, I set the **speed** value in the *first* **Retime** node to **24/9**. Note that the **filter** is set to **nearest**.
Then, I set the **speed** value in the *second* **Retime** node to the *inverse* of that, with the following expression:
```
1/parent.Retime1.speed
```
– Also with the **filter** set to **nearest**.


*The properties of the two Retime nodes.*
Using the first gradient, the result looks like this:
Using the second gradient, the result looks like this:
You can also create a black and white variant, simply by desaturating the first result:
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Creating Insect Swarms Using Nuke’s Particle System
URL: https://www.keheka.com/creating-insect-swarms-using-nukes-particle-system/
Last updated: 2025-09-16T11:37:29.000Z
⭐ How to build adjustable elements of insect swarms…
_This post is for paying subscribers only._
### Automated Defocusing Using Plate Metadata In Nuke
URL: https://www.keheka.com/automated-defocusing-using-plate-metadata-in-nuke/
Last updated: 2025-08-12T12:46:05.000Z
⭐ How to take the guesswork out of defocusing…
_This post is for paying subscribers only._
### Additive Keying Techniques In Nuke
URL: https://www.keheka.com/additive-keying-techniques-in-nuke/
Last updated: 2025-07-28T21:28:02.000Z
*An explanation of how additive keying works, and how you can use it to restore fine detail when keying…*
I recently gave a presentation about **additive keying** to a group of students from Escape Studios.
At the end of the presentation – which, due to NDA, no one could record or take pictures of – I told the students that I would turn the presentation into a guide here on my website using stock footage – as future reference for them, and for everyone’s benefit.
Here it is, and I’ve even added some extra sections to it, to give you additional control during the additive keying process:
## What Is Additive Keying?
Additive keying is part of a special category of keying, which I called *auxiliary keying* in my [Professional Keying In Nuke](https://www.keheka.com/professional-keying-in-nuke/) guide.
Because, an additive key doesn’t *replace* your standard keying tools and techniques (e.g. **IBK**, **Keylight**, **Primatte**, etc.). Instead, it *complements* them – as a **support key**.
An additive key is used for catching the details which a standard keyer might miss.
– It’s great for capturing:
- Fine hair detail
- Fine edge detail
- Motion blurred edges
- Defocused edges
- Dust or particles
- Transparent objects
- Reflections
And so, it’s used for providing **additional detail** when keying.
However, you should know that an additive key can also very easily pick up stuff that you *don’t* want to include from the blue/green screen plate, such as shadows or tracking markers.
So, you’ll have to **mask the effect** as needed using a garbage matte.
In any case, the additive key is a powerful weapon in your compositing arsenal, and can help turn a good key into a great one.
## How Does It Work?
An additive key doesn’t generate an alpha channel.
Rather, by using some very basic maths, it superimposes the blue/green screen plate over the background.
This gives us sort of a transparent image overlaid over the background. Which, importantly, includes things like fine hair detail and motion blurred edges.
After that, you merge your standard key on top of the result. And so, you’ll get the solid key *and* the fine details combined together over the background.
Below, I’ve created a quick example with an *intentionally* bad key – just to show how great the additive key is for restoring detail:



*1) The green screen plate (*[*source*](https://www.actionvfx.com/practice-footage/mechanic-in-electrical-explosion?ref=keheka.com)*), zoomed in on the hair. 2) The image created by an additive key. 3) The additive key added over a new, plain grey background.*


*1) A standard key *without* the additive key included, merged over the grey background. Notice that the standard key doesn’t capture all of the hair detail. 2) The same standard key *with* the additive key included, merged over the grey background. Notice the additional hair detail that’s being captured.*
It’s also useful to know that the screen/background colour doesn’t actually matter to the maths behind the additive key.
And so, the technique can work equally well for extracting reflections off a glass window, for example. It doesn’t have to be a blue screen or a green screen plate. Below is an example with just a grey wall as the background:



*1) The original plate (*[*source*](https://www.actionvfx.com/practice-footage/girl-staring-in-mirror?ref=keheka.com)*), zoomed in on the subject. 2) The image created by an additive key. 3) The additive key added over a new, plain purple background. Notice that we’re getting all of the hair detail, but we’re also getting some shadows and dirt from the original wall which will need masking out. Still, we’re pretty much ready to merge our standard key/roto on top, which will then be greatly improved by the additive key.*
There are **two main paths** you can take to create an additive key: one using **addition**, and one using **multiplication**. And, each path has **two main methods** for creating the key.
(You can also *combine* the methods from the two paths).
Let’s take a look at the first path:
### Addition
To understand how the **Addition** path works, you need to know three basic things:
1. Colours in Nuke are represented by numbers. A pixel has certain values in the red, green, and blue channels, and those are **just numbers**. You can for example add to them or subtract from them – and in doing so, change the colour.
1. Something subtracted from itself **becomes 0** (black).
1. Anything plus 0 **stays the same**.
Before we look at each method on the **Addition** path, it’s important to note that you should always **denoise your footage before you start keying**.
In addition to getting a cleaner alpha from the standard keyers, denoising the footage also helps you to avoid doubling up the grain when keying additively. Because, **an additive key will very easily pick up any grain**.
Okay, let’s look at the first method on the **Addition** path:
#### Addition – Constant Method
First, we have the original additive keying method – which is still really useful to us today.
This is the way they first did it back in the early days of VFX at Quantel, [according to Rafal Kaniewski](https://www.nukepedia.com/written-tutorials/additive-keyer?ref=keheka.com), and where the additive keying technique got its name from.
Translated into Nuke terms, the idea behind this method is that you take a **Constant** node, and colour pick its colour from an area of the denoised blue/green screen plate that you want to key.
Then, you **subtract** this **Constant** (A) from the denoised blue/screen plate (B) using a **Merge** (from).

*Picking a colour and subtracting it from the green screen.*
By subtracting the blue/green colour from the blue/green screen, you make the blue/green screen **black** (a pixel value of **0**) in that area.
However, in areas where there isn’t a blue/green screen, like where the actor is, there will be some visible values left over from the subtraction:
Where the denoised plate was brighter than the picked blue/green colour, there will be positive values. And, where the denoised plate was darker than the picked blue/green colour, there will be negative values.
By **adding** these values (A) to the background (B) using a **Merge** (plus), you then superimpose the actor onto the background, without any (or with very little) of the blue/green screen.
– Because of points 2 and 3 listed earlier.

*Adding the subtracted values to the background.*
You may find, though, that there is a nasty colour cast on the resulting image. That’s because subtracting blue or green from for example skin tones will make them very yellow or purple.

*Purple colour cast from the subtraction.*
So, connect a **Saturation** node just after the subtraction, and set the *saturation* value to **0** (or somewhere **below 1**) in order to remove all (or some) of the colour from the image which we’re adding onto the background.

*Removing the purple colour cast.*

*Removing the colour cast by adding a *Saturation* node to the setup.*
Quick side note:
##### Saturation
Like mentioned earlier, colours are just numbers.
Each pixel has values representing how much red, green, or blue that pixel’s colour contains.
Colour (specifically hue and saturation) lies in the *discrepancy* between the amount of red, green, and blue values in an image.
A very red object will have much higher pixel values in the red channel than in the green and blue channels, for example.
The **Saturation** node’s *saturation* slider will equalise these different amounts the closer we slide it toward 0\. And at 0, all three channels will have an identical value. Meaning, a purely greyscale image.
– You can also see this happening live as you drag down the saturation slider in a regular colour wheel in a **Grade** node, for example:


*Lowering the saturation slider will equalise the three colour channels. 0.928 saturation on the left vs. 0 saturation on the right. Notice the RGB values.*
And when you’re only adding grey tones to the background, you’re only altering its luminance, not its colour. So, you avoid getting that nasty colour cast.
##### Despill
An alternative/addition to desaturating the superimposed image, is to despill **both** the denoised blue/green screen plate and the **Constant**, using **identical** despillers with the same despill settings.

*Despilling the blue/green screen and the *Constant*, equally.*
This way, it’s possible to keep a bit of colour in the fine details over the background. However, you may still get some unwanted colours depending on your settings – so be vigilant, and use the despill in conjunction with the **Saturation** node.
##### Single-tone
It’s important to realise that with this **Constant** method, only *exactly* **one** blue/green tone will become 0\. (The specific colour that you picked).
Any (even slight) variation in the blue/green screen shade will be captured by the additive key and turned into a value other than 0\. – And, when added onto the background, will affect the background proportionately.
So, any gradients or colour differences in the blue/green screen will show up on the background as a difference in luminance. Any areas of the blue/green brighter than the picked colour will brighten up the background, and any areas darker than the picked colour will darken down the background.
However, you can adjust the values before adding them onto the background:
##### Grade To Taste
Add a **Grade** node after the **Saturation** node, and grade the result until you’re happy with the look.

*Grade to taste.*
You can for instance gain the image up and down to make the superimposed image brighter or darker, or gamma it up and down to adjust the contrast. That way, you can make for example fine hair detail show through more clearly.
You can also enable **black clamp** in the **Grade** node to limit the additive key to adding just the lighter values.
– A trick, if you have super bright values (i.e. higher than 1), is to increase the *gamma* **above 1** to mellow out those bright values. By increasing the gamma you bend the brightness curve upwards in the middle (between 0 and 1), which bends down the values above 1 (and also below 0 – they both act as pivot points) and suppresses them.


*Increasing the gamma mellows out the super bright values.*
You can also mask your **Grade** with a **Roto** or a **Ramp** to balance out any colour gradients or shadows in the blue/green screen.
– Turning more of the blue/green screen into a value of 0 before adding it over the background. I.e. making more of the blue/green screen disappear.
##### Background Luminance Limit
Another thing you can do, which can especially be useful if your new background is very different in luminance to your blue/green screen, is to multiply the image that will be superimposed over the background (B) by the luminance of the background (A) using a **Merge** (multiply).
– You can get the luminance of the background simply by adding a **Saturation** node to the background, and setting the *saturation* value to **0**.

*Limiting the added luminance by the background’s luminance.*
This can help balance out the image and integrate the fine details better. It can also help reduce the unwanted background values coming through from the blue/green screen plate.
It might, however, start to kill some of the bright details. So, mix back the **Merge** (multiply) node as needed.
Next, as mentioned earlier, make sure to mask your additive key. Get rid of any garbage coming through from the blue/green screen plate, like C-stands, folds, shadows, lights, tracking markers, equipment, etc.
💡
If you can’t mask it out, paint or patch the problem area to remove the garbage from the blue/green screen plate.

*Masking the additive key.*
And finally, merge your standard key on top at the end:

*The final setup for the *Constant* method on the *Addition* path.*
Next, let’s look at the second method on the **Addition** path:
#### Addition – Clean Plate Method
The second method is almost exactly the same as the first one – just instead of a **Constant** node, you connect a **clean plate**.

*The setup for the *clean plate* method on the *Addition* path.*
A clean plate is, ideally, a perfect copy of the blue/green screen plate without any of the actors or objects to be keyed in it.
It includes all of the different shades of blue/green, like gradients and shadows, so that when you subtract it from the blue/green screen plate, all of the blue/green tones (or at least many more than with the **Constant** method) will become 0\.
And so, fewer variations in the blue/green shade will be captured by the additive key, creating a cleaner key.
💡
In my [Advanced IBK Keying Techniques And Setups In Nuke](https://www.keheka.com/advanced-ibk-keying-techniques-and-setups-in-nuke/) guide, I explain the best practices for making a clean plate, and advanced techniques for doing so.
This means, the additive key will not affect the background in most of the areas where there is a blue/green screen in the plate.
💡
Note that, just like the blue/green screen plate, the clean plate should also be ****denoised**. (This is more relevant when you are supplied with a separate clean plate. Because, when you create one yourself, you’re already using the denoised blue/green screen plate).
Depending on your shot, the **clean plate** method might work better, or the **Constant** method might work better.
If, for instance, there is a glow or a bloom in the plate that you would like to keep, the **Constant** method might help capture that better.
Or, if the blue/green screen is very uneven and is causing a lot of shadows to be added to your background, the **clean plate** method might be the better option.
💡
When keying with the standard keyers, you (should) divide the blue/green screen plate into sections based on for example the blue/green tone, shadows, or hair detail. And then, key each section separately before keymixing it all together. Similarly, you should also ****create separate additive keys for the different sections of the blue/green screen** and keymix them together, to get the best result.
Next, let’s take a look at the second path:
### Multiplication
This path uses a variation of the additive key which takes advantage of **multiplication** instead of addition.
It gives a very similar result to the previous **Addition** method, but can sometimes look a little bit more contrasted. (However, the result can be graded more mellow).
To understand how it works, you need to know two more basic things:
1. Something divided by itself **becomes 1** (white).
1. Anything multiplied by 1 **stays the same**.
The way you set it up is very similar to the two previous methods.
Let’s look at the first method on the **Multiplication** path:
#### Multiplication – Constant Method
Similar to before, take a **Constant** node and colour pick an area of the blue/green screen that you would like to key.
But, instead of subtracting the **Constant** from the denoised blue/green screen plate, **divide** the denoised blue/green screen plate (A) by the **Constant** (B) using a **Merge** (divide).

*The setup for the *Constant* method on the *Multiplication* path.*
By dividing the blue/green screen by the blue/green colour, you make the blue/green screen **white** (a pixel value of **1**) in that area.
However, in areas where there isn’t a blue/green screen, like where the actor is, there will be different values left over from the division:
Where the denoised plate was brighter than the picked blue/green colour, there will be values above 1\. And, where the denoised plate was darker than the picked blue/green colour, there will be values lower than 1\.
By **multiplying** these values (A) with the background (B) using a **Merge** (multiply), you then superimpose the actor onto the background, without any (or with very little) of the blue/green screen.
💡
You can also enable ****white clamp** in the ****Grade** node to limit the additive key to adding just the darker values.
##### Shortcut Using A Grade
Like I showed in my [Multiplication Key Technique](https://www.keheka.com/multiply-key-technique-for-extracting-fine-detail/) guide, instead of dividing the denoised blue/green screen plate by a **Constant** node, you can use a shortcut:
Add a **Grade** node to the denoised and despilled blue/green screen plate, and colour pick the area of the despilled blue/green screen that you would like to key as the **whitepoint**.
Setting a value as the **whitepoint** (remember white = 1) will divide the image by that value, turning that value into 1, and every other value to above or below 1, proportionally. Just like dividing by a **Constant**.
The rest of the setup is exactly the same as we have seen before:

*The simplified setup for the *Constant* method on the *Multiplication* path.*
💡
Similarly, you could also “simplify” the setup for the ****Constant** method in the ****Addition** path with a ****Grade** node. Colour pick the screen colour as the ****offset**, and add a minus (-) in front of the values.
💡
You can use multiplication keying in other ways, too: [Element Integration Trick Using Nuke](https://www.keheka.com/element-integration-trick-using-nuke/).
#### Multiplication – Clean Plate Method
The second method is almost exactly the same as the first one – just instead of a **Constant** node, you connect a **clean plate**.
Like before, fewer variations in the blue/green shade will be captured by the additive key, creating a cleaner key.

*The setup for the *clean plate* method on the *Multiplication* path.*
Since the two paths, and each method on the paths, create slightly different outcomes, you can mix and match them as you please.
Keymix in what works best for different sections of your blue/green screen. Or, you can use one setup for just the dark details, and one for just the light details, as shown in [this video](https://youtu.be/yomD4gTcdpw?feature=shared&ref=keheka.com).
## Additive Keyer Tool
To avoid building these setups over and over again when you do keying work, consider [turning them into a tool](https://www.keheka.com/advanced-gizmo-building-in-nuke/).
There are also great additive keyers available, such as [AdditiveKeyerPro](https://github.com/CreativeLyons/Lyons%5FTools%5FPublic/blob/master/07%5FKeyer/AdditiveKeyerPro.nk?ref=keheka.com) from the [Nuke Survival Toolkit](https://github.com/CreativeLyons/NukeSurvivalToolkit%5FpublicRelease?ref=keheka.com).
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Advanced Gizmo Building In Nuke
URL: https://www.keheka.com/advanced-gizmo-building-in-nuke/
Last updated: 2025-07-12T22:53:38.000Z
⭐ How to build advanced gizmos in Nuke, complete with dynamic menus using Python, custom expression-driven controls, and a decorated user interface…
_This post is for paying subscribers only._
### Compositing Blood In Nuke
URL: https://www.keheka.com/compositing-blood-in-nuke/
Last updated: 2025-06-26T09:24:22.000Z
*Tips and tricks for mastering one of the more frequently encountered compositing tasks…*
The topic for this guide was suggested by one of the [Companions](https://www.keheka.com/companions/) in our community:

*“An article regarding compositing blood could be an interesting topic!* 🩸*”*
❗
****Warning:** There are pictures of (just) blood in this guide.
## Vital Knowledge
There’s a handful of tasks which you’ll repeatedly come across in your compositing career.
Things like [adding smoke](https://www.keheka.com/compositing-smoke-in-nuke/), muzzle flashes, or dust hits to a scene are typical ‘bread and butter’ work that every compositor will encounter.
Compositing blood is one of those common tasks.
That’s because visceral violence is a popular tool for adding action and excitement to a scene. Movies and TV shows will frequently have actors and extras getting shot, punched, stabbed, cut, blown to pieces, or sliced and diced in any which way.
And, it’s up to us to add blood to, or to augment the practical blood in, these often intense scenes.
So, knowing how to composite blood in a realistic way is a crucial skill to have as a compositor.
## Types Of Blood Work
There are many different variations of blood that can be added to a shot, each with different characteristics (like for instance motion, colour, or density).
For example:
- Spray
- Splatter
- Splashes
- Mist
- Pools
- Drops
- Streaks
- Streams
- Blood in water
- Bleeding wounds
- Blood hitting the lens
- Smudges/smearing of blood
- Pulsating blood (decapitation, etc.)
- Gore (bloody flesh, skin, tendons, etc.)
- Blood-soaked clothing/fabric, often combined with ripped cloth
- Blood hitting walls or objects and leaving a pattern (bloodstain texture)
No matter what kind of blood element you’re compositing, as a basis, all the standard compositing rules apply.
– Things such as:
- [Tracking](https://www.keheka.com/3d-to-2d-tracking-in-nuke/) the blood to the camera’s and/or to the object’s movement, making sure that the blood sits at the correct depth plane in the scene.
- Adjusting the [depth cues](https://www.keheka.com/how-to-create-a-sense-of-depth-in-your-composite/), like perspective, scale, and parallax, to sit the blood into the scene.
- [Matching the dynamic range](https://www.keheka.com/matching-the-dynamic-range-of-a-scan-in-nuke/) of the blood element to the scan.
- Adding [lens and sensor effects](https://www.keheka.com/compositing-photorealistic-lens-effects-in-nuke/) to the blood element, like lens distortion, depth of field, and chromatic aberration, to match what’s happening in the plate.
- Adding [motion blur](https://www.keheka.com/motion-blur-masterclass-for-compositors/) to the blood to match the camera’s and/or the object’s movement.
💡
You’ll often be using 2D blood elements (as opposed to CG renders), and so you may not have a depth channel available for adding depth of field. If so, you can use the [iBlur](https://www.nukepedia.com/gizmos/filter/iblurfh?ref=keheka.com) \+ [Ramp](https://learn.foundry.com/nuke/content/reference%5Fguide/draw%5Fnodes/ramp.html?ref=keheka.com) mask combination to effectively fake depth of field.
I’ve written in detail about those things before, so please follow the links above if you’re curious to learn more.
For this guide, I wanted to focus more on blood-specific tips.
## Visual Impact
Blood hits are all about visual impact.
And, particularly in fast-moving action scenes, blood spurts can easily get lost in the chaos.
So, you’ll often have to art direct the blood:
Make sure to position the blood in the frame in such a way that you **maximise the visual contrast against the background**.
Try to have dark blood go over a brighter part of the background, and bright blood go over a darker part of the background.
Adjust the **direction** and the **angle** of the blood so that its silhouette becomes more clearly visible and *readable*.
Take the frame below from *Deadpool & Wolverine*, for example. Had all of the blood been angled down, going over Deadpool’s dark and red outfit, it would have been much more difficult to read.
Instead, by having a large portion of the blood shoot up and over the bright, snowy background, we get the **visual contrast** that’s needed for the audience to be able to read the blood.

*Blood hit from Deadpool & Wolverine.*
Sometimes, it can help to add a ‘ping’ – a **dynamic specular highlight** – to the blood, in order to draw attention to it for a brief moment. (When it makes sense according to the lighting conditions in the scene).
And, if the motion blur on the blood is very strong and is making it too transparent, you can [thicken up the alpha](https://www.keheka.com/alpha-density-matte-control-tool-for-nuke/) of the blood to compensate.
## Blood Colour
In the red blood cells in our blood there is a protein called [hemoglobin](https://en.wikipedia.org/wiki/Hemoglobin?ref=keheka.com).
This protein contains iron, which facilitates the transportation of oxygen in our body.
When blood is in the body, it’s either carrying oxygen (oxygenated) or has released oxygen to the body's tissues and organs (deoxygenated).
Freshly oxygenated blood has a **bright, rich red colour**. (Typically carried away from the heart to the body’s tissues and organs by the arteries).
Deoxygenated blood has a **darker, more maroon (brownish red) colour**. (Typically carried back to the heart from the body’s tissues and organs by the veins).

*Venous (darker) and arterial (brighter) blood.*
When blood is exposed to air, hemoglobin binds to oxygen, causing deoxygenated blood to become a **brighter red**.
Over time, as the blood dries, the hemoglobin breaks down, and the blood can darken further, eventually turning **brown or even blackish**.




*(1) A fresh bloodstain: the blood is bright red. (2) A somewhat aged bloodstain: the blood is still red, but turning darker. (3) An aged bloodstain: the blood has turned brown in colour. (4) An even more aged bloodstain: the blood has turned black in colour.*
So, fresh blood that is leaving the body (blood spurts, fresh wounds, etc.) should have a **bright red colour**. And blood that’s been outside of the body for some time (blood stains, pools of blood, etc.) should turn more **brownish black**.
However, as always, take into account any **colour cast in the plate** when grading the blood. To integrate blood into a cool, dark night time scene, you may have to add a blue tint to it, for example.
When grading the blood, be careful so that you **don’t tint the specular reflections too much**. If the light in the scene is bluish and you accidentally tint the specs orange-yellow, the blood can look out of place. – You can isolate the highlights with a luma key to grade them separately.
Just like with explosions, **blood should often be less saturated than you might think**. In fact, it’s a very common mistake to grade blood overly saturated red. So, make sure to take cues from the saturation levels in the plate.
💡
Blood mattes are among the most ****commonly requested** [****DI**](https://britishcinematographer.co.uk/di-grading/?ref=keheka.com) **mattes**. Whenever you add blood into a shot, be prepared to output a DI matte for it.
And, make sure to match the lighting and shadows in the scene:
## Light & Shadows
Just like when compositing any other element into a shot, make sure to match the direction, colour, and intensity of both the lighting and shadows of the blood element to the scan.
When you’re working with CG blood renders, you have a lot of leeway to [adjust the lighting](https://www.keheka.com/relighting-cg-renders-in-nuke/) in the renders to fit the lighting conditions in the plate.
With 2D elements it’s a bit trickier, but you can still do some relighting – for example using tools and setups such as this one:
[aeRelight2D Overview - Aitor Echeveste VFX artistMake relights of our footage without needed any render passes. It’s especially useful when we try to illuminate smoke or atmospheric elements.Aitor Echeveste VFX artistaitorech](https://aitorecheveste.com/aerelight-overview/?ref=keheka.com)
– Just be careful not to push it too far, making the blood look too processed and unnatural. A common mistake is to make the blood look [embossed or debossed](https://en.m.wikipedia.org/wiki/Paper%5Fembossing?ref=keheka.com).
Let’s take a look at how blood reacts to light, to give us a better idea of what to aim for when lighting and grading it.

*Blood splatter.*
We can pinpoint some characteristics of blood from studying the image above:
- **Blood isn’t very transparent** – we can only really see through it when the layer of blood is very thin. E.g. at the top screen left in the image above. (Or, when the blood is very strongly backlit).
- In areas where there is a **thicker** layer of blood, the colour looks **darker**. More of the light is being absorbed and scattered within the blood. E.g. in the cores of the three ‘arms’ above.
- Fresh (wet) blood has a **reflective coating** which catches a lot of specular highlights. E.g. along the edges of the blood above. Blood will begin to clot within a few minutes, forming a dark, shiny gel-like substance that grows more solid as time progresses. And so the older the blood, the less shiny it will be.
- Blood is thicker and more viscous than water, and ‘sticks’ to itself – forming **areas with larger drops and pools of blood**. E.g. in the three ‘arms’ above. – Which creates a thicker layer of blood in those areas, making the blood darker there.
- When blood hits an object (e.g. a wall or a floor), it smears out, creating **tails or spines in the direction of travel**. (See: [bloodstain pattern analysis](https://en.wikipedia.org/wiki/Bloodstain%5Fpattern%5Fanalysis?ref=keheka.com). Also, [here](https://www.forensicsciencesimplified.org/blood/principles.html?ref=keheka.com)). E.g. the three ‘arms’ and the small droplet streaks above. So, when compositing a blood splatter texture element, make sure to place it the right way around in relation to where the blood is coming from.
## Realistic Motion
Blood is affected by **gravity**.
When you have blood that shoots out to the side in an element, you may have to animate it to fall down in a realistic way in your shot.
Many 2D stock blood elements are filmed in slow-motion, and will need retiming to bring them back to normal speed. When doing so, remember to account for the (now) lack of [motion blur](https://www.keheka.com/motion-blur-masterclass-for-compositors/).
And since blood is more viscous than water, it will typically run more slowly down a surface. (It also won’t bead as easily as water drops do).
When blood is soaking through fabric, the stain usually won’t expand in a perfect circle. Make sure to [break up the roto shape](https://www.keheka.com/breaking-up-edges-and-surfaces-in-nuke/) that you’re using to reveal the blood, if you’re going down that route. (Ideally, find an element of fabric getting soaked naturally).
Speaking of fabric, if you’re tracking blood onto a t-shirt or other clothing with wrinkles, the [Smart Vector Toolset](https://learn.foundry.com/nuke/content/comp%5Fenvironment/smartpaint/smartvector.html?ref=keheka.com) is great for getting the blood to stick in a realistic way.
You can also warp the blood element to flow along a path using the SplineWarp or GridWarp nodes, for example – just be careful to avoid getting pixels that look stretched.
## Other Lifeforms
Different lifeforms can have a different blood composition than ours.
Horseshoe crabs, for example, have hemocyanin in their blood instead of our hemoglobin.
Hemocyanin is a copper-based (as opposed to our iron-based) respiratory pigment, which turns their blood blue:

*Horseshoe crab blood is blue.*
And, there is a whole range of [different blood colours](https://www.ebi.ac.uk/pdbe/articles/what-do-snails-spiders-octopods-and-queen-england-have-common?ref=keheka.com) in different species. So, if you are for example compositing a blood spurt coming from an alien that’s being shot, you may have to change the colour of the blood.
To do that, you can still use regular, red blood elements, but then change just the hue [as described in the Hue section of this guide](https://www.keheka.com/practical-use-cases-for-all-the-merge-operations-in-nuke/).
## Resources
There are plenty of online element libraries where you can download blood elements.
Here are a couple of free ones:
[Free Blood VFX Footage \[4k\] | FX ElementsGet your hands on Free Blood VFX Footage today and create spine-tingling horror scenes at no cost! Learn how to incorporate these visual effects into your projects today.FX Elements](https://www.fxelements.com/free/blood?srsltid=AfmBOoptASyoDP9E-U%5FpOxS89-nsI3hfntMzNtdYKcl82KyAtgMjFV2A&ref=keheka.com)
[ActionVFX | FREE - Blood Textures Stock Footage Collection40 “real” blood textures to extend your gruesome scenes. Variations include pools, sprays, handprints, and footprints. Delivered in 2.5K and 5K as 32-bit .PNG images. All images include a pre-keyed alpha channel, so you’re ready to go! Download the 2.5K version for FREE.ActionVFX](https://www.actionvfx.com/collections/free-blood-textures-stock-footage?position=8&query%5Fid=36243a64a0448fac2fbd3e588c2c13d7&ref=keheka.com)
You can also shoot your own blood elements using fake blood.
There are many recipes for fake blood, for example using corn syrup, red food colouring, a small amount of blue food colouring to give the blood some authentic colour, and some cornstarch to thicken it up and stop it from being transparent.
Here are some variations:
[Get Your Ghoul On With These 9 Easy Fake Blood RecipesThese fake blood ideas are designed to splatter, drip, and gross everyone out. Most of the frightful ingredients you need are right in your pantry.The Spruce CraftsRain Blanken](https://www.thesprucecrafts.com/make-fake-blood-fake-blood-recipes-1105964?ref=keheka.com)
Lastly, to make blood look real:
## Study Real References
Try to study real, authentic references (e.g. medical procedures) – and/or use real stock footage and images of wounds – and then mimic how that real blood behaves.
Just be careful when searching online for this stuff.
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Creating Custom Particle Effects Using Alphas In Nuke
URL: https://www.keheka.com/creating-custom-particle-effects-using-alphas-in-nuke/
Last updated: 2025-06-10T17:00:54.000Z
*Spawning particles using alpha masks in order to create bespoke effects…*
## Controlling The Emission Rate
There is a great feature in the **ParticleEmitter** node’s settings which many people don’t know about, or use very often.
It’s the **rate channel** knob, which lets you constrain the emission rate of the particles by using a mask. For example, by using the alpha channel that flows into the **emit** input of the node.
💡
Where the alpha mask is white (value of 1), particles will spawn from the respective part of the geometry. Where the alpha mask is black (value of 0), no particles will spawn from the geometry. And where the alpha mask is grey (value between 0 and 1), there will be a proportionally reduced emission rate.
You can for instance project an alpha mask onto a **Card** or other **geometry**, and use that mask to limit the parts of the surface from which the particles will spawn from that geometry.
This can be used to create all sorts of interesting effects.
Most obviously, perhaps, to spawn particles in a specific shape or pattern:




*Using input alpha masks to constrain particles to spawn in specific shapes.*
This is useful for when you need to constrain the particles so that they only spawn from very specific areas, such as vents, grills, or exhaust pipes.
And, it can be used to shape the flow of the particles into a specific formation. Like a tube of particles shooting towards the camera, for example; emitted from a ring shaped alpha, like in the first example above.
However, the technique becomes even more interesting when you start to animate the alpha mask that’s constraining the particle emission.
Let’s say that you wanted to create a trail of magic dust from a wand being waved, for example.
You could draw the exact path that you want the magic dust to follow using a **RotoPaint** brush stroke, and then animate the **write on start** and **write on end** knobs in the **Stroke** tab to create an alpha shape that moves along the path, spawning particles.
💡
See [Animating Paint Strokes In Nuke](https://www.keheka.com/animating-paint-strokes-in-nuke/) for more information on how to animate paint strokes.
Here’s a pretty crude example that should give you a good idea:
The effect above was created simply by spawning particles using this alpha mask:
To create the mask, I first drew a spiral shape in a single brush stroke. You don’t have to get it perfect, because as described in the article linked above, you can go in and adjust and/or delete points on the spline of the brush stroke afterwards.
Here, I deleted a bunch of points and smoothed out the rest to get roughly the shape I wanted:

*The spline of the spiral brush stroke.*
Then, I animated the **write on start** and **write on end** knobs from **0 to 1** to get a shape moving along the spline. I also animated the **brush size** to go from a relatively thin brush at the start to a thicker one at the end – spawning particles in a wider area as the effect progresses.
💡
Make sure to set the ****Lifetime** of the brush stroke to ****All frames** when you animate the brush stroke settings.

*Animating the *write on start*, *write on end**, *and *brush size* knobs.*
For the **write on end** knob, I simply animated it from 0 to 1 over the course of the shot.
In order to have the tail follow the head of the animated shape, I used this expression in the **write on start** knob – which kept it 20% of the stroke length behind the head throughout the shot:

*Expression for keeping the tail 20% of the stroke length behind the head.*
```
clamp(RotoPaint1.curves.Brush1.writeon_end-0.2)
```
(You could just manually animate the **write on start** knob as well).
Then, I put the resulting alpha mask on a **Card**, and used it to spawn some particles (just basic **Spheres**):

*The particle setup.*
💡
The ****Multiply** node is just animating the alpha channel to ****0** at the end of the shot, to stop any more particles from spawning.
In the **ParticleEmitter** settings, notice that the **rate channel** knob is enabled and set to **rgba.alpha**:

*The settings of the *ParticleEmitter* node.*
💡
The ****Card** should have a high density of polygons/vertices to spawn particles from, to ensure an even spread within the alpha mask. To even out the density of the particles spawning (and fill out the area of the mask), I increased the ****rows/columns** of the ****Card** to 100/100\.
By animating the alpha channel, you open up a ton of opportunities to create different effects.
Anything from magic, glitter, or fireworks, to rocks or debris shooting up from a fissure (e.g. when a superhero smashes the ground).
– You can control precisely which path the particles should take.
💡
You could even use particles as a reveal ‘mask’, and control the reveal by animating the alpha mask.
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### How To Build A High Agency Mindset
URL: https://www.keheka.com/how-to-build-a-high-agency-mindset/
Last updated: 2025-06-01T14:55:39.000Z
*What it takes to become more resilient, independent, and in charge of your own life…*
## What Is Agency?
‘[Agency](https://en.wikipedia.org/wiki/Agency%5F%28sociology%29?ref=keheka.com)’ refers to your capacity to act independently; to make (sometimes bold) choices in order to change your reality; and to be the source of your own actions, rather than being passively influenced by external factors.
It's about having the power and control over your life and decisions, feeling in charge, and being able to shape your own experience.
– Sort of like being the **main character** in a movie, rather than an extra.
There are different levels of agency.
A person with low agency will often passively accept the cards they’ve been dealt in life, without really trying to improve their situation too much. They’ll frequently feel like a victim of circumstances and tend to view themselves as a supporting character in other people’s stories. Life is something that happens *to them*, and they lack control or responsibility for it.
On the other hand, a person with high agency will come to terms with the hand they've been dealt, and then swiftly change focus to what they can control: their actions. High agency people view themselves as the hero and author of their own story. They’re active, enthusiastic, and optimistic, and will take steps to make changes for the better (or will at least *attempt* to make changes for the better) in situations where things aren’t ideal.
💡
Imagine for a moment that you’re being wrongfully detained in a Guatemalan prison during your travels through Central America. If you could call **one* friend to come help get you out of that sticky situation, who would you call? Chances are, the friend you’re thinking of is a person with high agency.
I’ll give you a real-world example of high agency from a recent experience:
### Table With A View
On my birthday, my family and I went for lunch to a nice restaurant in London, which is located on the top floor of a high-rise building.
The restaurant has 360 degree views of the city, but it was quite packed when we arrived and all the best tables were occupied. And so, we were seated at a table in the centre of the restaurant (i.e. not by the windows).
A few minutes after we had been seated, a window table became free. My partner immediately asked the waitress if we could move to that table instead, to get a better view. And, luckily, the waitress said ‘of course, no problem’. It turned out that the table wasn’t reserved again until a few hours later.
(We hadn’t ordered anything yet, so moving us to the new table only took 30 seconds of the waitress’ time – a minimal inconvenience to her).
Asking to change tables was a **high agency move**.
My partner could have just passively accepted the table that we got. She could have told herself that the other table was probably reserved anyway. Or, she could have not bothered to ask about it because we had already been seated and made ourselves comfortable.
Or even, she could have failed to notice that it had become available in the first place. And, we would have missed out on the very reason for why she chose to make a reservation for us at this particular restaurant for my birthday – the great views.
But instead, she decided to go straight after what she wanted, and *asked* for it. The worst thing that could have happened would just have been getting a ‘sorry, that table is reserved’, and nothing would have changed.
We effectively had everything to gain, and nothing to lose, by her just asking for the better table.
**Actively looking for, identifying, and *acting* on opportunities** like this doesn’t only apply to getting a better table at a restaurant. Exercising high agency can have a **significant impact on every aspect of life**.
In simple terms, with high agency, you will get what you truly want, more often – leading to a more pleasant journey through life.
But you might not feel like a high agency person. In fact, most people *don’t* have a particularly high agency. On the other hand, most people typically don’t have an especially *low* agency, either. The majority find themselves somewhere in the middle.
This can change over time, and in different situations. And, if you feel like you’re not quite where you would like to be on the agency spectrum, don’t worry.
The good news is that you can increase your agency – it’s just like improving a skill. And with a high agency mindset you’ll have the capacity for creating the life that you want.
## How To Become A High Agency Person
Okay, so a person with a high agency is basically someone who gets sh!t done.
The key here is the *doing* part. Agency is all about taking **action**.
And high agency is basically about actively going after what you want without waiting for the circumstances or conditions to be perfect. In fact, it’s often about **overcoming *adverse* conditions**.
If you want to increase your agency, it’s probably not the best idea to jump straight into the biggest challenges right away. (Immediately failing a task can knock your confidence and kill your motivation).
Instead, build up your confidence by starting out doing smaller tasks. Or, divide a larger challenge into smaller, more manageable tasks, and attack one of them at a time.
### Start Small
You could begin by taking simple actions that change something small in your life.
Something just slightly out of the ordinary routine:
- If you usually don’t make your bed in the morning, start to make it after you wake up. – A small gift (and reminder of your agency) for your future self when you go to bed later on.
- Reduce your daily consumption of Netflix, TikTok, Instagram, etc. by half an hour, or even an hour, and instead spend that time building or creating something. **Start switching your mindset from passive consumption to active creation.**
- If you want to get in shape, literally take the first few steps and get off the sofa and go outside for a walk. You don’t have to hit the gym four times a week right away.
- If you dream of writing a book, try setting aside dedicated time during the week purely for writing. Carve out some focused time with no distractions, even if it’s only 30 minutes, just to write. And even if you ‘only’ write for example 100 words each session, over time that adds up to a whole book. (That’s how most books are written: small bits added together, consistently, over a long time).
- If your backyard is a mess, make an effort to clear it – starting from one end and working your way across. There is no expectation that you should finish everything in one session. Rather, you do it little by little – in manageable chunks.
Keep compounding small actions, and you’ll regularly be proving to yourself that **you can affect meaningful change** to your surroundings and to your situation. That *your* actions alter your reality, however little to begin with. And that you are, and become, what you consistently *do* (and not just what you say).
💡
The more you build or create, the more you’ll feel like a builder or a creator – like someone who is writing their own story rather than being a character in someone else’s.
The point is to get momentum going. Actions lead to more actions, which lead to more actions, and so on. And having a high agency is about taking action more often.
Again, many small actions compound.
### Build Undeniable Proof
By consistently putting in the effort and doing the work – on whichever task it might be – you start to leave behind undeniable proof, creating an image that confirms who you are.
A true reflection of yourself.
Let me quickly use my own situation to illustrate.
I can genuinely say that I am a writer now. I *wasn’t* a writer a few years back, but then I started consistently writing guides for this website. And to date I have published 112 guides.
I’ve written hundreds – thousands – of pages. All digitally trailing behind me, proving that I am a writer. (Perhaps not in the traditional sense; with a book deal and a publisher, but definitely in the modern sense).
I’m also (mainly) a 2D supervisor creating visual effects. And I have around 60 feature films and TV shows under my belt across the past 12+ years to prove it.
That’s undeniable proof. You (or I) can’t look at those credentials and say that I’m *not* either of those things which I claim to be.
Build your own undeniable proof of who *you* are. Do you want to be a person of high agency? **Do high agency things** – take actions that are consistent with a high agency. Again and again.
Keep stacking up more proof, leaving what will become an impressive trail of evidence behind you. And soon, you’ll become what it is that you’re doing.
If you run twice a week for a year, you’re a runner. There’s no arguing against that. You’ve put hundreds of kilometres behind you, and probably have a smart watch or phone with the step count to prove it.
If you joined a few races, you might even have medals to prove that you finished them. More importantly, after a whole year, you’ll have improved your physique, technique, and the confidence in your running ability.
That’s a bunch of real, tangible – and undeniable – achievements, which prove that you’re a runner.
And now as a runner, with a runner’s mindset, you keep running. You’ll *choose* to run more, and spot more opportunities surrounding running and all that comes with it.
You’ll pick better running shoes, find new paths to run, and maybe join a club. You’re not being dragged outside by a friend to run, you are **choosing the direction of your own adventure**.
So, more *action* leads to a higher agency. And a higher agency leads to more action.
Taking action with high agency is also about speaking up.
### Push Back Against Inconvenience
Most of us will accept a small inconvenience even when it’s not necessary.
– And then become disappointed later on, when we meet the consequences of our decision.
Sometimes, it’s the polite thing to do, and fixing the issue would cause the other person *more* inconvenience than the amount it would reduce on our end. But often, that’s not the case.
Next time, stop and ask for the missing napkins in your lunch order. Suggest to push the meeting that’s been scheduled during your lunch hour. Or, propose whichever reasonable change it may be that would be more convenient to you.
Usually, it’s not a problem *at all* for the person on the other end to accommodate you.
If people don’t know what you like or want, they might schedule things, pick locations to meet, or choose activities to do that are inconvenient to you (even just by random chance).
So, politely push back against inconvenience, share your preferences, and simply:
### Ask For What You Want
The worst you can get in return is a no.
That’s not a big deal. You just adapt and move on.
Usually, you will have everything to gain and practically nothing to lose by asking for what you want.
Ask for an upgrade. Ask for help. Ask for a promotion, or a payrise. But be prepared to give a valid reason if needed.
Or, you could ask for something to be done sooner.
Has the lighter not published the lighting renders yet? Ask them if they’re able to. Don’t sit around and wait for things to happen.
Make them happen.
Asking for what you want is one of the best ways to cultivate high agency.
But you have to be truthful to yourself and ask for what you *actually* want.
### Be Honest About It
Reflect on, and be honest about what you really want.
Do you want something because *you* want it?
Or, do you want it because society tells you that you *should* want it? – And that it’s expected of you to follow a certain path?
When I was younger, I wanted to be an engineer. I didn’t really have a clue what an engineer was, but everyone made it sound like a great profession to get into.
After school, I started studying engineering, and hated it. It was nothing at all like I had imagined. So, instead of lying to myself and forcing myself into a profession I would have been miserable in, I decided to take a different path. (I have nothing against engineers, hats off to you, it just wasn’t for me).
Now I make movies for a living, and *actually* enjoy the work. It’s a perfect blend of technical and creative challenges on a daily basis.
That turning point was a pretty significant change of direction in my life, but the benefits of course correcting your path are also apparent in everyday situations:
### Change Your Path When It Turns Out To Be Wrong
Sometimes, we make poor choices.
But most of the time, a choice is not final. At least not right away.
Like the Norwegian [Mountain Code](https://www.dnt.no/contentassets/0e411308202a44c5b49374534759bc2b/fjellvettreglene%5Fenglish.pdf?ref=keheka.com) says, ‘Don’t be ashamed to turn around’. Especially, when continuing to move forward in the current direction is not in your best interest.
Let’s take a basic, everyday example:
Did you turn down a shopping bag for your groceries at the convenience store, and then realised that you could actually use one after all?
Your answer is not locked in, so change it. Don’t awkwardly carry a bunch of items and risk dropping some, just simply get a bag.
Stop your auto-pilot answering for a moment, take over the ‘wheel’, and change lanes before you take the wrong exit.
This gets more and more important the greater the consequences are. If something doesn’t feel right, you have the option to back out of the deal and change the path you take. Use your agency to make a better choice before it’s too late.
This might mean less people pleasing. However, you should avoid becoming difficult to deal with. People tend to choose to work and be friends with people they like.
So, be respectful, and:
### Practise Assertive Communication
There are four main styles of communication:
- **Passive**: You’re too conscientious and deferential to the wants and needs of others. You avoid conflict, and inhibit the expression of your *own* wants and needs. You’re afraid of others thinking less of you. For example, agreeing to do something that you don’t want to do, or staying silent when you should be speaking up.
- **Aggressive**: You’re too inconsiderate and disrespectful toward others and their wants and needs. You overcompensate for deep insecurities by trying to control or manipulate others. For example, by bullying, threatening, or teasing others.
- **Passive-Aggressive**: You’re communicating aggressively but in a disguised manner to avoid responsibility. It’s combining the worst of the two prior styles: not being authentic to yourself while trying to control others. For example, being sarcastic, gossiping, giving back-handed compliments, making excuses, or gaslighting others.
- **Assertive**: You communicate in a way that is completely honest to your own wants and needs, while being respectful of others at the same time. You’re clear, direct, and kind, and you set healthy boundaries. For example, giving honest (but difficult) feedback, saying no to something you don’t want to do, or respectfully being open about your preferences despite knowing the other person wants something else.
As opposed to with the other three styles, when you practise assertive communication, you’re not being avoidant, and so you’re not eroding your agency. In fact, you’re bolstering it.
💡
I’m not saying that the other three styles of communication are all bad. I know some really fun people who are very sarcastic. Playful teasing can brighten someone’s day. And, it’s good to pick your battles and know when to take a step back and be a little bit more passive. However, typically, the assertive style will be the most helpful one for contributing to increasing your agency.
When you commit to communicating more assertively and express yourself wholeheartedly, you can’t help but feel like the hero in your own story,
It’s like a superpower. – But with great power comes great responsibility:
## The Obligations Of A High Agency Person
Having a high agency is extremely beneficial, but it comes with some moral responsibilities.
A part of that is helping out others – because you’ll often be the only one who *can*, or who is willing to. Like the friend who’s called upon to help bust someone out of a Guatemalan jail.
– Obviously, it won’t be as extreme as that in everyday life, but you get my point. Use your high agency not only for your own benefit, but also for others’.
Light the way for the next person.
To illustrate, let’s take a trip to the Middle East:
### Become A Beacon
In the northern part of the Kingdom of Saudi Arabia lies the vast *Al Nafud* desert, known for its scarce water resources.
Both experienced and inexperienced travellers alike have lost their way in the huge arid stretches of the desert, and even for those with strong survival skills, it can be a dangerous place.
Search and rescue parties have embarked on countless rescue missions in Saudi Arabia’s grand deserts for years. The lucky ones out of the lost or stranded travellers were rescued within 24 hours. Others didn’t survive their failed attempts to locate the few existing water tanks, reservoirs, and wells amidst oceans of sand.
– In fact, many people have lost their lives *near* water sources, because they didn’t know that those water sources were nearby in the first place.
In an effort to save more lives, in 2021 environmental activist and explorer Mohammad Fohaid Al-Sohaiman Al-Rammali launched a new initiative:
With the help of specialized contractors supervised by the Ministry of Environment, Agriculture and Water, 11 solar powered laser beacons were installed near water sources in the Al Nafud desert. (Later expanded to 100 beacons across the desert).
Each of these beacons shine a column of light into the sky, visible at night from several miles away, pointing travellers to a source of water:

*One of the solar powered laser beacon installations in the Al Nafud desert.*
So, why am I telling you about all this?
Because, as a high agency person, you may have to ‘guide people to the water’, so to speak.
And in order to help others find their way, you must act as a beacon. There are several things you can do:
- **Lead by example**. Demonstrate the values that you want others to embrace. For example, by pulling your weight on the projects you work on.
- **Share your own journey**. Share the challenges you’ve overcome, your insights, and stories. We can all learn a lot from each other, both from our successes and from our failures.
- **Share your knowledge, and guide others**. For example, post tips or tutorials on social media or on your own website, or mentor someone in person. People may also come to you more often asking for solutions – be there for them and do your best to help them out.
- **Be a positive force**. Spread joy and happiness, and be a source of hope and encouragement. The world doesn’t need another complainer, especially during tough times. Stay optimistic.
- **Seek out opportunities to make a difference**. Contribute to your community in your own way. Whether physically or online, you can affect a positive change – locally *and* globally.
When you do these things, you’ll frequently see something interesting: people can often sense high agency in a person.
They’ll notice that a high agency person in a team gets more work done, acts independently and so doesn’t need constant handholding, flags issues early, and generally is a more productive, helpful team member.
And when you’ve proven yourself capable, you may be offered opportunities to take on more responsibility. – Which you should (often) take.
### Take On More Responsibility
Who would you want in a leadership position; a person with low agency or a person with high agency?
I think the answer is pretty clear. And so if you’re a person of high agency, it makes sense to take on that duty. It may even make sense to *offer* to take on the extra responsibility.
– Remember, ask for what you want. And that also means asking for additional resources should you need them for tackling the new responsibilities.
Having more responsibility means taking on an extra burden, but it’s also an honour. Someone entrusted you with something important. And that speaks to your character.
When you *do* take on more responsibility – let’s for example say that you’re overseeing a (part of a) project – one thing is very important:
### Take Ownership
Inevitably, things will go wrong at some point.
When that happens, take ownership instead of blaming others for the failure.
You might not be directly responsible for the mishap, but you were indirectly responsible. If you were supervising a sequence and an artist missed a continuity error, acknowledge the issue with the client in the review and own up to it.
Like I wrote in this article: [Improving Your Leadership Skills Using Biomimicry](https://www.keheka.com/improving-your-leadership-skills-through-biomimicry/), **protect your team**. A good leader is a person who takes a little bit more than their share of the blame and a little bit less than their share of the credit.
And then, kick into action mode.
Brief the relevant people and, if needed, show them how to solve the problem. Address the issue as soon as possible.
No moaning or complaining, just take action.
## So, What Can You Do *Now*?
The VFX industry is not in a great place at the moment (June 2025).
Multiple (and consecutive) strikes, war, recession, tariffs, a global pandemic, a shift from cinema to streaming, AI advancements, and great economic uncertainty have all contributed to scaring off investors, making them hesitant to fund new projects.
And we’re all feeling the impacts of that.
There is less work to go around, more cutbacks, and an uncertain future ahead – all of which are symptoms of this giant, global clusterf\*ck. Many VFX companies are going through redundancies, and/or are resorting to putting staff on reduced working hours in order to stay afloat.
These are definitely *adverse conditions* for VFX workers. A series of sizable bumps in the road. And a high agency is what will get you over those bumps.
Avoid sitting around and waiting for potential redundancies to happen to you.
Instead, act now, ahead of time.
Practising high agency and being proactive are inevitably going to be very helpful on your journey through these tough times: so start preparing yourself and looking for opportunities:
- [Update your showreel](https://www.keheka.com/how-to-get-hired-as-a-compositor-part-3-create-a-spectacular-showreel/).
- [Update your CV](https://www.keheka.com/how-to-get-hired-as-a-compositor-part-4-write-an-impressive-cv/).
- Reach out to friends and recruiters in other companies, and ask if they are looking to hire.
- Look at different companies, roles, locations, or even industries. What are your options?
- Do you have a plan B? If not, look into making one.
- Do you have savings to tide you over in case you have to go some time without work? If not, start putting aside as much as you are able to, and build a buffer.
Take **action**, and act with a high agency mindset.
I hope you found this article useful. For more productivity tips & tricks, see [Productivity](https://www.keheka.com/tag/productivity/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Practical Use Cases For All The Merge Operations In Nuke
URL: https://www.keheka.com/practical-use-cases-for-all-the-merge-operations-in-nuke/
Last updated: 2025-06-17T10:54:53.000Z
⭐ A deep dive into the merge operations of the Merge, ChannelMerge, MergeExpression, and PSDMerge nodes…
_This post is for paying subscribers only._
### Element Integration Trick Using Nuke
URL: https://www.keheka.com/element-integration-trick-using-nuke/
Last updated: 2025-04-16T18:50:14.000Z
*A simple but powerful technique for integrating elements into a plate which has complex or varying lighting or texture…*
I’ve previously written an article about a great technique for adding/removing dynamic light interaction to/from your CG render, patch, element, scan, etc. when compositing: [Add Or Remove Flickering In Nuke](https://www.keheka.com/add-or-remove-flickering-in-nuke/).
In this article, I'll show you another really useful, and even simpler, technique – which can also transfer the scan's *texture* onto what you’re comping.
First, let’s take a look at an example of what it does:
*Adding a graffiti element onto a concrete wall. No matter where the element is placed on the wall, it reacts correctly to the light, shadows, and texture of the wall in that area.*

*Wall image.*

*Graffiti element (premultiplied).*

*The graffiti element merged straight over the wall image. Notice that it’s missing the light and shadow interaction. The concrete texture of the wall is also missing from the paint.*

*The same graffiti element as in the previous image, except the wall has been multiplied over it using a custom setup.*
Let’s build the setup:
First, position and Merge (over) the premultiplied element (A) straight over the background image (B):

*The premultiplied graffiti element is positioned and merged straight over the wall image.*
Next, make a separate pipe out to the side from the background image. Connect a **Grade** node, and colour pick a bright area of the background image as the **whitepoint**.

*Setting the whitepoint of the wall image, so that the bright area gets a value of 1\.*
(In my case, I colour picked a bright area where the sunlight hits the wall).
This will remap (expand/compress) the pixel values in the background image. The bright area that you picked will become a value of 1, the darkest areas of the scan stay pretty much the same, and everything in between will be shifted proportionately to fit the new range. And, any areas that were brighter than the bright area that you picked will proportionately get brighter than 1\.
Next, remove any colour by connecting a **Saturation** node and setting it to **0**.

*Desaturating the background image.*
This will ensure we don’t get unwanted colour contamination in our element.
Next, if the alpha is not already fully white, add a **Shuffle** node and set it to output a **white alpha**. (Keep R, G, and B as they are).

*Turning the alpha channel white.*
Finally, Merge (multiply) the result of the new pipe (A) by the element (B).

*Multiplying the modified background image over the element.*
Now, any parts of your element which go over the lit areas of your background image will stay as they are (anything multiplied by 1 remains the same), and any parts which go over a shadow area will get shadowed.
💡
Texture detail and variations in brightness (dynamic lighting) will also get captured via the multiply. Note that you can also ****mix back** the multiply operation to fine-tune the look.
This technique works best in situations like the one shown above, however sometimes you don’t want the texture to show through onto your element. Let’s say we instead wanted to composite a picture frame onto the same wall:

*Picture frame element (premultiplied).*

*The picture frame element merged straight over the wall. Notice that it’s missing the light and shadow interaction.*

*The same as in the previous image, except the wall has been multiplied over the picture frame element using our setup. Notice that we’re getting (unwanted) texture from the wall onto the picture frame.*
By blurring the background image before multiplying it with the element, you can remove fine texture detail:

*The same setup as before, except we’re removing the texture details using a Blur node. It may help to sharpen the image a little bit after the Blur to avoid softening the lighting/shadows too much.*

*The same comp as before, except the wall image has been softened to smooth out the texture before being multiplied over the picture frame element.*
💡
Depending on how much you have to soften the image to get rid of the texture before you multiply it over the element, this method might not work. With fairly soft shadows like in this example, we can get away with blurring the image to remove the texture, but with hard shadows you may have to do some more custom masked blurring, or create new shadows using roto.
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### The Ticket To Adventure
URL: https://www.keheka.com/the-ticket-to-adventure/
Last updated: 2025-04-01T20:29:13.000Z
*One of the greatest filters for succeeding in a significant endeavour presents itself at the very beginning…*
## Crossing The Doorstep
*Every adventure starts with a shock to the system. The body complains, the mind wobbles, and for a moment, I wonder why I didn’t just pick a nice little hobby like table tennis.*
*Then I remember, this is exactly what I came for. To take on the adventure, the unknown, to soak in those little moments of beauty in between the suffering.*
*The trail ahead is long, but the only way is forward. One foot in front of the other.*
– [Russ Cook](https://x.com/hardestgeezer/status/1900111423268962390?s=46&ref=keheka.com)
Cook has run back-to-back ultra marathons across [the entire length of Africa](https://youtu.be/nsdo%5Ftcw4VY?feature=shared&ref=keheka.com) – among many other incredible physical feats.
And every single one of his journeys has started with a single step.
A determined step in the right direction. The first of many cranks, turning the flywheel. Heavy and difficult at first, until the momentum picks up.
The initial challenge of taking on any significant endeavour is facing the mental barrier of crossing your ‘doorstep’. Overcoming all of the inertia that resists you taking the first steps. Leaving the familiar behind, and embarking on something new and different.
Still, adventure firmly awaits across that doorstep, and *not* before it.
Nothing is going to happen until you start. Until you decide to cross your doorstep, whatever that means to you. Because adventure will rarely fall into your lap, but rather, you have to go and seek it out.
And that means going from a state of *certain rest* to a state of *uncertainty and unrest*.
That doorstep can seem high – maybe due to a fear of failure, a fear of mediocrity, or any other reservations you might have.
Sometimes, it can feel like an insurmountable, visceral obstacle. Other times, it’s more concealed: a preconceived notion that’s holding you back without you even realising it – until you actually reflect on it.
It might be a part of your survival instinct kicking in, warning you to not expose yourself to ‘danger’ or to ‘loss’. But that primeval instinct hasn’t quite adapted to the relatively safe and comfortable modern world, and usually over-corrects dramatically.
There’s always going to be a risk of failure – you can try to minimise it but you’ll have to accept that. And true failure dwells in the act of not even trying, *not* in failing an attempt. Failing an attempt just means you’ve learned something for the next time.
There may be a risk of embarrassment – but ultimately, who actually *really* cares? And is it *really* as bad as you think? We often overestimate how much other people think about us. (Hint: it's pretty rare, people are busy with their own lives).
There is definitely going to be friction.
For Cook, it’s a physical and mental friction. For us in VFX, who make art, there is a creative agitation. You have to be willing to feel uncomfortable – to stay in that vulnerable and frustrating state of uncertainty and unrest – for an unknown amount of time.
As long as it takes until it ‘clicks’.
And there’s no guarantee that it will. Especially if you give up too soon. The longer you endure the turmoil, the greater the chances are that something of value will emerge.
Because there’s usually a reward at the other end of an adventure. And for most people, the doorstep is effectively the only thing keeping that reward out of reach. Not skill.
You likely already have what it takes to start, and besides, you'll acquire more skills as you progress along the way.
So, start what you’ve been wanting to start. Do what you’ve been wanting to do. Most likely, it won’t be easy at first, crossing that doorstep. – To decide to go after what you want, and *actually* taking the steps to do it. Facing discomfort.
That’s the price of admission. The ticket to adventure. If you can accept the fact that you will have to fork it out and spend that initial effort upfront, it becomes a bit easier, in a sense.
Try to look at it as an investment, instead: the reward at the end will often be greater than the upfront cost.
And, when you’re underway, help others cross their doorsteps, too.
## Document Your Journey
Adventures can be captivating.
Chances are, other people would be interested in your journey, too. At least in the lived and learned experiences that you can share which will benefit them.
Like in the [hero’s journey](https://en.m.wikipedia.org/wiki/Hero's%5Fjourney?ref=keheka.com), your own ‘quests’ end with the Return – *the hero comes back from the mysterious adventure with the power to bestow boons on his fellow man*.
In your search for a solution to a problem, what you find can be of tremendous use to others. Especially, if your search is successful – but also even if you don’t find anything – documenting the path you took can be helpful to others undertaking the same search.
One of my personal quests is an ongoing search for knowledge, specifically related to visual effects and compositing, and I’m documenting my lived and learned experiences here on this website.
I had published almost 60 articles on the website before I regularly started sharing them on LinkedIn. (Not sure why – I was nervous to publicly share my work on a large platform, I guess? Not for any good reason, anyhow).
The number of new members who joined the website almost immediately quadrupled. Loads of positive feedback poured in. I don’t know what I was afraid of, because people are generally really nice and supportive.
– Imagine if I had posted on LinkedIn since day 1 instead of nearly two years in. And what if I had started my website much earlier? (Which I definitely could have). I’d be several years ahead. Then again, I could also imagine it being the other way around, and instead choose to be happy that I started when I did.
In any case, learn from my mistakes and start documenting and sharing your experiences sooner rather than later. Start now. It’ll benefit everyone, including yourself.
Because life rewards action.
Make your mark on the map. Build your personal brand. Write your book. Create your artwork. Whatever it is you want to do, start by crossing your doorstep and earning your ticket to adventure.
I hope you found this article useful. For more like this, see [Advice](https://www.keheka.com/tag/advice/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### 15 Mistakes You Should Avoid As A Compositor
URL: https://www.keheka.com/15-mistakes-you-should-avoid-as-a-compositor/
Last updated: 2025-03-29T23:12:14.000Z
⭐ Stand out as an excellent compositor among the crowd by avoiding these 15 mistakes…
_This post is for paying subscribers only._
### CornerPin Helper For Nuke
URL: https://www.keheka.com/cornerpin-helper-for-nuke/
Last updated: 2025-07-02T06:09:26.000Z
*A tool which creates helper lines between the CornerPin node’s points, making it easier to align them to partially occluded corners…*
❗
Nuke 15/16 has introduced a bug which breaks this tool. I have submitted a support ticket to The Foundry [here](https://support.foundry.com/hc/en-us/articles/27779823981714-ID-602761-Brush-stroke-points-are-not-updated-in-the-Viewer-when-translating-expressioned-points-of-a-RotoPaint-node-in-Nuke?ref=keheka.com).
## Additional Functionality
I received a [comment](https://www.linkedin.com/feed/update/urn:li:activity:7301164246334140416?commentUrn=urn%3Ali%3Acomment%3A%28activity%3A7301164246334140416%2C7303325416029650944%29&dashCommentUrn=urn%3Ali%3Afsd%5Fcomment%3A%287303325416029650944%2Curn%3Ali%3Aactivity%3A7301164246334140416%29&ref=keheka.com) on my previous article ([Roto Assisted Tracking In Nuke](https://www.keheka.com/roto-assisted-tracking-in-nuke/)) which sparked an idea to create a tool for assisting with corner pinning in Nuke.
It’s a simple helper node which you connect directly to your CornerPin node, and it creates lines between the points in the CornerPin.
This makes it easier to align the CornerPin, for example when some of the corners are occluded but you can still see the straight edges between them:

*Aligning the points of a CornerPin node to the hidden corners using the CornerPinHelper node.*
If your screen insert is a rectangular image which fills the screen, you could of course just use that to help line up the image. But where this tool shines, is when you don’t.
As a basic example, let’s say that you wanted to put this large red circle into the screen:

*Large, red circle.*
To help get the perspective just right, you wouldn’t have any straight edges in the image to line up with the edges of the screen. By using the CornerPinHelper, however, you can easily line up the image with the screen:

*Aligning the red circle with the perspective of the screen.*
You can download the tool here:
[CornerPinHelper v1.0Copy/paste the text into the Node Graph in Nuke. CornerPinHelper\_v1.0\_keheka.txt6 KBdownload-circle](https://www.keheka.com/content/files/2025/03/CornerPinHelper%5Fv1.0%5Fkeheka.txt "Download")
It uses the same sort of idea as we saw in the previous *Roto Assisted Tracking In Nuke* article linked above: expression-linking splines (in this case [brush strokes](https://www.keheka.com/animating-paint-strokes-in-nuke/)) to the CornerPin’s points.
Feel free to have a look inside of the group node (select the node and press Ctrl/Cmd + Enter to go inside) and check out the expressions for the brush strokes, on each spline point, and in the *Stroke* tab of the RotoPaint node.
The tool is plug-and-play: just connect it directly to your CornerPin node and view it. If you want to make changes to the look, the settings in the tool are super simple:

*Choose the width of the lines, increase their spacing (if you want dots instead of lines), and select the colour and the opacity of the lines, in the settings.*
You could for example turn the helper lines into green and semi-transparent dots:

*Changing the look of the helper lines.*
❗
Remember to disable or delete the helper tool when you’re done, so that you don’t accidentally render the helper lines.
I hope you'll find this tool useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Roto Assisted Tracking In Nuke
URL: https://www.keheka.com/roto-assisted-tracking-in-nuke/
Last updated: 2025-03-10T10:18:36.000Z
*How to use rotoscoping to assist with tracking an object…*
## Occluded Tracking Features
Sometimes, it can be tricky to get a track right.
For example, when a screen (to which you want to add a screen insert) gets partially occluded, and you can’t track all four corners of the screen properly to make a CornerPin node.
If you’ve ever tried to guesstimate the position of the occluded corner(s)' tracking point(s) before, for instance, you’ll know how sensitive the CornerPin node is – and how only a slightly wrong offset in a point’s position can squash and stretch the inserted image by quite a bit.
In those cases, you can often use rotoscoping to your advantage. When you roto the screen (feel free to use any working tracks to help animate the points on the spline), you can align the spline with the visible edges and corners of the screen to find the exact location of the hidden corner point(s).

*When a screen is partially occluded, for example by a person’s hands, you can often align a roto shape with the visible edges and corners of the screen to find the hidden corners. (The image has been exposed down to see the roto shape better).*
And, once you’ve got animated roto points for all four corners, you can either link them to, or convert them to, tracks in a Tracker node:
## Link Method
To link a point on a spline directly to a track, first create a Tracker node.
In the Tracker node’s properties, create as many tracks as you would like to link up. (For example four tracks, one for each corner of a screen).
In the Viewer, select the roto point that you want to link to a track. Right-click on the point, and select **copy** → **single point link**.
Next, select a track in the Tracker node. Right-click on it, and then select **Paste** → **Paste Absolute**.
Do the same for the other tracks – linking them up to their respective roto points – and you’ll end up with a complete track for the screen/object.
Note that you'll have to **bake the expressions in the tracks in the Tracker node down into keyframes** to populate the Transform tab of the Tracker with keyframes, and use the Tracker like you normally would:
Select all of your tracks, then right-click → **Edit** → **Generate**. Select your frame range in the *Generate keys* pop-up window, and hit **OK**. Then, change the *transform* drop-down menu in the Transform tab of the Tracker from *none* to for example *match-move*, and all of the keyframe information will show up.
❗
If your roto spline is in a layer which has additional transformations applied to it in the Transform tab (for example **translate*, **rotate*, **scale*, or **extra matrix*), that won’t be accounted for using this **Link Method*. See the **Convert Method* further below.
Let’s break down how the linking expressions work under the hood by doing the process manually:
Create a fresh Tracker node again, and in its properties create as many tracks as you would like to link up.
Then, for each track, right-click it and select **Edit expressions**.
In the *Expression Editor* window that pops up, add the following lines to their respective tracks:
**Roto1.curves.Layer1.Bezier1.curve.0.main.x**
**Roto1.curves.Layer1.Bezier1.curve.0.main.y**

*Example expression; linking track 1 of a Tracker node to point number 0 of the Roto1 node’s Bezier1 spline, which is grouped under Layer1\.*
First, replace **Roto1** with the name of your Roto node.
Then, replace **Layer1** with the name of the layer that your roto spline is grouped in.
If your roto spline is placed directly in the Root layer (i.e. under no further layers), you can just delete **.Layer1**, i.e.:
**Roto1.curves.Bezier1.curve.0.main.x**
– Or, if you have multiple nested layers, keep adding the layer names (from top to bottom in the hierarchy) with a dot (**.**) separating each, for example:
**Roto1.curves.Arm.Hand.IndexFinger.Bezier1.curve.0.main.x**
Next, replace **Bezier1** with the name of your roto spline.
Then, replace **0** with the number of the point on the spline that you want to track. You can find the number by clicking on the **toolbar\_label\_points** button in the roto menu in the Viewer:

*Enabling the labelling of points on a spline in the Viewer.*
Next, the word ***main*** in the expression above refers to the main point on the spline. But you could even use a point on the feathered roto edge, or on the bezier handle, as a track.
If you select a point on your roto spline in the Viewer, and right-click → **add expression**, you can see on the left hand side what its various parameters are called:

*The parameter names of one point (point number 0) on a spline.*
Swap the name of whichever point you prefer into the expression we saw earlier to get a track for that particular point.
Finally, **x** and **y** just stand for the x and y position, so put them in the x and y track position expressions, respectively.
💡
Reminder again to bake the expressions in the tracks in the Tracker node down into keyframes after you're done: Select all of your tracks, then right-click → ****Edit** → ****Generate**. Choose your frame range in the **Generate keys* pop-up window, and hit ****OK**. Then, change the **transform* drop-down menu in the Transform tab of the Tracker from **none* to for example **match-move*, and you're good to go.
## Convert Method
To simplify and automate the whole process, *and* have it work when you've got additional tracking/transformation data applied to your roto splines (for example, roto imported from Mocha or Silhouette), you can use a Python script such as this one:
[GitHub - magnoborgo/RotoShapesToTrackers: Converts Nuke roto shapes to trackersConverts Nuke roto shapes to trackers. Contribute to magnoborgo/RotoShapesToTrackers development by creating an account on GitHub.GitHubmagnoborgo](https://github.com/magnoborgo/RotoShapesToTrackers?ref=keheka.com)
Tip: If you don’t want to install the script, you can make a tool in Nuke instead (and save it as a ToolSet):
First, copy the main python code from here:
[RotoShapesToTrackers/RotoShapes\_to\_trackers.py at master · magnoborgo/RotoShapesToTrackersConverts Nuke roto shapes to trackers. Contribute to magnoborgo/RotoShapesToTrackers development by creating an account on GitHub.GitHubmagnoborgo](https://github.com/magnoborgo/RotoShapesToTrackers/blob/master/RotoShapes%5Fto%5Ftrackers.py?ref=keheka.com)
Then, create a NoOp node in Nuke, and right-click in its properties → **Manage User Knobs**.
Add a **Python Script Button**, and paste the code into the **Script** section. Name and label the script what you like, for example **bakeRotoToTracker** and **Bake Roto To Tracker**, and hit **OK**.

*Adding the Python script to a button in a node in Nuke.*
Now, you’ll have a tool with a button in it which will run that Python script. Select the Roto node you want to convert, and then hit the button in the tool to convert the spline points to tracks.
❗
The script above will create a track for ****every** point on ****every** spline inside of the selected Roto node. So, make sure to make a copy of the Roto node and ****delete** all of the splines you don’t need tracks for, and also delete all the points you don’t need tracks for on the spline that you want to track, ****before** running the script.
In a few seconds (depending on how many points you’re creating tracks for, and the length of the shot), the tool will create a Tracker node containing all the tracks.
To complete the screen insert example, you’ll then have a four point track – ready to export a CornerPin node for tracking in the screen insert.
You can also use the methods above to get free tracks when roto has already been completed for a shot. For example, if you’ve got access to the splines from the Roto department for the shot, you can use those to create tracking data and save yourself some work.
💡
Disclaimer: For both methods above, in order to get an accurate track from the roto, the points on the spline obviously have to stay consistent with the features that you want to track, all throughout the shot.
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Restoring Details When Edge Extending In Nuke
URL: https://www.keheka.com/restoring-details-when-edge-extending-in-nuke/
Last updated: 2025-02-12T23:10:59.000Z
*Avoid losing details when applying edge extensions, by using these simple techniques…*
## Light And Dark Edges
When extracting a subject or an object from a scan, and then putting them/it over a new background, the edges of the subject/object may get contaminated by the original background.
– For example, when doing keying work, or when restoring parts of the scan back on top of a CG render.
The softer the edge is (e.g. due to motion blur or defocus), the more of the original background will show through. And, usually, the contamination will appear as light or dark edges along the outline of your subject/object.


*(1) Original image. (2) Subject placed over a new background, with the motion blurred edges being contaminated by the original background.*
Sometimes, you can go in and surgically grade away these issues. But often, there will be complex detail in the contamination, with a mix of both light and dark edges, and you’ll have to rebuild the new edge instead.
In those cases, **edge extension** is a great technique for removing the edge contamination.
Most edge extension tools work by eroding in the RGB edge until the contamination disappears, and then in one way or another push or stretch the ‘clean’ pixels back outward to fill in the gaps from the erosion.
But edge extensions are typically quite rough-handed. As they stretch/smear/warp the pixels from the inner parts of the subject/object outward to cover the contaminated edge, they destroy any (RGB) texture and detail in the process.
Often, we want to keep all of the nice, dark details, but just remove the light, contaminated edges – or vice versa.
And there’s a very easy way to do that:
## Min/Max
After you have applied the edge extension (killing both light and dark details), merge back the wanted details with a **min** or a **max** operation.




*(1) Original footage. (2) Subject placed over a new background with its original, bright edge. (3) Dark details near the edge getting destroyed by the edge extension. (4) Dark details recovered using a Merge (min) operation.*
For clarity, you would simply add a Merge (min or max) node with the **A-pipe** connected **before** the edge extension, and the **B-pipe** connected **after** the extension:

*Using a Merge (min) to restore dark edge details after an edge extension.*
💡
Remember to mask the Merge (min or max) node to only affect the areas that you want to affect.
To keep the most amount of details when extending edges, remember:
## Edge Extend Only As Much As Necessary
Just grading an edge will mostly keep the original detail, but applying an edge extension to it won’t.
Extending an edge means that you extrapolate and ‘invent’ new pixels. And so, always use edge extensions sparingly:
Try to find the **minimum amount** that you have to stretch/smear/warp the edge, in order to retain as much detail as possible while still removing bright or dark edges. The min/max recovery operation should essentially only bring back the last little bits of detail.
It’s a delicate balance. You’ll just want to nudge the values right inside of the edge slightly outwards, but avoid creating visible edge artefacts or losing too much detail.
💡
Feel free to use the colour dilation/edge extension tool of your choice. There are many options on Nukepedia, and Nuke has its own [EdgeExtend](https://learn.foundry.com/nuke/content/reference%5Fguide/filter%5Fnodes/edgeextend.html?ref=keheka.com) node as well. I often find myself using the [VectorExtendEdge](https://www.nukepedia.com/gizmos/filter/vectorextendedge?ref=keheka.com) tool, because it’s quite gentle and does a good job. Another great distortion edge warper is the [apEdgePush](https://adrianpueyo.com/gizmos/?ref=keheka.com).
And, make sure to **mask the edge extension** to only the areas which need it:
## Plate-On-Plate Edge Extensions
An easy trap to fall into when extending edges is to accidentally add plate-on-plate edge extensions.
– And thus stretching or warping pixels in areas that aren’t bordering with the new background.


*(1) Plate-on-plate edge extension – see the inner part of the shoulder getting warped (the extension is exaggerated to more clearly show the issue). (2) Masking the edge extension to avoid plate-on-plate edge extension – again, the extension is exaggerated (i.e. ignore the outer edge).*
So, ensure that you **mask the edge extension** by the (properly held out) CG, DMP, or other replaced BG. That way, you’re only extending edges that go over the areas of the background that have been replaced.
This video explains it well:
💡
****Do a difference key between your composite and the original scan** in order to more easily catch any plate-on-plate edge extensions.
## Alternative Method For Detail Restoration
Another way to restore lost detail after edge extending is to make use of **frequency separation**.
By dividing the non-edge extended image by a slightly blurred version of itself, you can isolate the high frequency details in the image.
Then, multiply that with the extended edges, masked by an edge matte, to restore the details in those areas:

*Restoring detail by multiplying original high frequency detail back over the extended edges. In this case, using the* [*Perimeter*](https://www.keheka.com/perimeter-advanced-edge-mattes/) *tool to create an edge matte. Mix back the Merge (multiply) as needed.*
💡
If you only want to restore dark details, you can clamp the high frequency detail between 0 and 1\. And, if you only want to restore bright detail, set the Clamp node’s **minimum* value to 1 and increase or disable the **maximum* value.
You could also combine this method with another technique for extending edges: using a [Rank filter](https://www.nukepedia.com/blink/filter/rank-filter/?ref=keheka.com).
This video explains how the rank filter works:
(It basically lets you suppress bright or dark edges based on a weight value).
Finally, keep in mind that edge extensions may not always solve edge problems – in fact, they can be **a source for new problems**, like artefacts in the areas where the extension fails.
So, make sure to **thoroughly check your edges** after edge extending them.
💡
Xavier Bourque explains another way to approach contaminated motion blurred edges, by [rebuilding them completely](https://youtu.be/aZeiuGs9Gco?feature=shared&ref=keheka.com).
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### Improving Your Leadership Skills Through Biomimicry
URL: https://www.keheka.com/improving-your-leadership-skills-through-biomimicry/
Last updated: 2025-01-21T22:55:35.000Z
*7 tips inspired by nature for becoming a better leader…*
## Biomimicry
Biomimicry is the practice of imitating nature and natural systems, and using nature-inspired strategies to improve our human designs, systems, models, and processes.
It involves observing and studying nature's problem-solving patterns, and using them to overcome complex human challenges.
In this article, we’ll explore how we can learn from nature’s designs and behaviours, and use biomimicry to become better leaders.
First, let’s look at a practical example of biomimicry, inspired by a particularly well-adapted hunter:
## The Kingfisher
Like its name suggests, the Kingfisher specialises in catching fish.
– (Or, to be more precise, *some* species of Kingfisher specialise in catching fish).
Their long, narrow, and pointed bills make them excellent hunters in shallow bodies of water, such as rivers or canals.
Taking advantage of their streamlined shape, the Kingfishers slice through the air as they dive down towards the water from above. And, when piercing through the surface, they barely make a splash. With considerable momentum from the dive, they swiftly glide down below to catch their underwater prey.
All in one smooth, continuous motion; silent and quick – a lethal combination for a hunter.
Keep the Kingfisher in mind, and let’s make a leap back in time to the late 1990s, and visit Japan.
At the time, the West Japan Railway Corporation was faced with a problem regarding its famous high-speed railway lines, the [Shinkansen](https://en.wikipedia.org/wiki/Shinkansen?ref=keheka.com) bullet trains:
The Shinkansen were able to reach very high speeds, but, due to their blunt nose design, air would build up in front of the trains when passing through tunnels.
The compressed air produced sound waves – shooting off ahead of the train – which made a loud boom as they rapidly dispersed upon exiting the tunnel. This often happened in dense residential areas, disturbing people living nearby. But the thunderous noise pollution also affected any area across the country where the train passed through tunnels, disrupting wildlife and even impacting passengers on the train.
Reducing the speed of the train to stop the loud tunnel booms would defeat the purpose of a high-speed railway, and so the Shinkansen engineering team had to adapt and look for other solutions.
Luckily, chief engineer Eiji Nakatsu was an avid bird watcher. He had noticed that the Kingfisher elegantly manoeuvres pressure differences – as it travels from one medium (air) to another (water) silently and quickly to catch its prey.
When testing different nose designs, the engineering team discovered that the streamlined shape of the Kingfisher’s bill – a design suggested by Nakatsu – was incredibly aerodynamic and well-adapted to alleviate air pressure buildup in enclosed spaces.
– Like in a tunnel.
Instead of pushing air in front of the train, the Kingfisher-inspired nose cut through it, allowing the air to flow past.
And so, based on their findings, the team modelled the nose of the Shinkansen to mimic the shape of the Kingfisher’s bill.

*The Kingfisher and the Shinkansen bullet train.*
As a result, they successfully put an end to the loud tunnel booms, permitting them to operate the trains at high speeds through residential districts. But that wasn’t all:
The new, aerodynamic nose design also allowed the trains to travel faster, consume less power while maintaining high speeds, *and* produce less noise overall during travel, increasing passenger comfort.
By mimicking nature, Nakatsu and his engineers were able to solve a complex problem, and found even further benefits from doing so. And there are many such examples of human design improvements inspired by nature.
💡
For instance, aircraft structural elements that use hexagonal [honeycomb structures](https://en.wikipedia.org/wiki/Honeycomb%5Fstructure?ref=keheka.com) due to their high strength-to-weight ratio. Or, burs inspiring [the invention of Velcro](https://en.wikipedia.org/wiki/Hook-and-loop%5Ffastener?ref=keheka.com); slug slime inspiring a new type of [surgical glue](https://wyss.harvard.edu/technology/tough-gel-adhesives-for-wound-healing/?ref=keheka.com); or UV coated spiderwebs inspiring [bird safe windows](https://www.anthropocenemagazine.org/conservation/2012/09/windows-inspired-by-spider-webs-2/?ref=keheka.com).
There is a *lot* we can learn from nature. Because evolution has had the benefit of millions of years of successive improvement via natural selection to optimise its designs. And, through biomimicry, we can take advantage of all of this accumulated trial and error.
Once you start thinking this way, you can also apply biomimicry in ways *other* than to guide design choices. As stated earlier, you can use it to improve your leadership skills. Let’s take a closer look at how you can do just that.
– It’s all about drawing analogies.
The Shinkansen-Kingfisher story already touched on a couple of important points for being a good leader:
### 01: Adapt To The Task
Like the Kingfisher and the Shinkansen, as a leader you have to adapt to the challenges you’re facing.
Asking a parrot, with its curved beak and large body, to catch fish by diving into the water from above might not be the best idea. The poor bird would probably fail, simply because it’s not as well-adapted to the task as the Kingfisher.
It would more than likely just cause a big splash and scare the fish away. Just like how the blunt nose of the original Shinkansen caused the tunnel booms, disturbing everyone with noise pollution.
So, when something isn’t working, ask yourself: how can you change your approach to fit the needs of the project or the task?
You might potentially have to make some compromises, but not necessarily! Because, with some luck, you may just be able to come up with an ingenious idea and solve the problem outright.
The Shinkansen engineers didn’t reduce the speed of the train, which would have been an easy solution (but bad for the railway service). Instead, they found a way to avoid the tunnel boom while maintaining high speeds.
They adapted to the requirements of the task.
Similarly, if you’re struggling with a problem, try guiding your team in attacking it from different angles. [Be creative](https://www.keheka.com/how-to-be-creative/), test different designs and methods, and/or look to nature for inspiration.
Once, when developing the look for a visual effect on an undisclosed project – where the client didn’t have a clear idea of what they wanted – we had several artists work simultaneously on the same effect, coming up with multiple varied designs.
That way, we could initially present the client with a broad variety of options, and hone in on what they liked and disliked.
In this particular case, adapting to a shotgun approach helped us reach the preferred design faster than by letting a lone sniper aimlessly try to hit an undefined target. In other cases, the target may very well be crystal clear, and it would be better to send in your best shooter.
It all depends on the challenge you’re presented with, and you just have to adapt accordingly.
Adapting also means not giving up, but finding a different way to your goal when something goes wrong. Try to act like a GPS navigation system, in a sense: if you miss a turn, reroute and find a different path forward. (Which might even mean doing a U-turn to get back on track).
Or, in the spirit of this article – using nature as an example – try to act like ants: when an obstacle blocks a path, ants will quickly find an alternative route or work together to move the barrier.
### 02: Alleviate Pressure Buildup
The success of the Kingfisher’s hunting strategy and the Shinkansen’s high speed tunnel traversal both rely on dealing with pressure in an effective way.
And, as a leader, managing pressure in your team is crucial for sustaining good morale.
Where is pressure building up? How can you streamline systems and processes (especially daily ones) so that issues don’t grow and fester?
Could you for example make a tool or a template that [automates a tedious task](https://www.keheka.com/automating-tedious-tasks-using-python-in-nuke/) which everybody hates doing, or where it’s easy to make mistakes?
Try to remove as many annoying and time consuming obstacles as possible, and facilitate the work of your team members. By regularly assessing how you can make life easier for your team, and then acting on your findings, unwanted pressure won’t build up as easily.
And when you’re not ‘pushing heavy air’ in front of you, life becomes easier for you as well.
Here’s for example one issue we fixed to avoid further frustration:
When sharing shot work between vendors, you may have to package up and send Nuke scripts containing your composite to another vendor.
A Nuke script can be referencing dozens or even hundreds of external files, and hunting them all down can be a real pain. – For several reasons:
The *Comp Info* option in Nuke’s *File* menu doesn’t list the file paths to Deep files, geometry, or files within Groups, for example. And it doesn’t provide a complete file path including the actual file name – just the folder it’s in.
Furthermore, compositors will often leave a bunch of files in the Nuke script that aren’t actually used in the composite, like old versions, references, or alternative elements for testing.
Which means, there was a lot of manual work required from us to ensure that all the correct files were being sent. And it was easy to make mistakes and miss some files or send redundant ones.
So instead, we made a tool that scans Nuke scripts for upstream dependencies and packages up all of the necessary files automatically. Which meant, we could focus more on what *we* do best, like creative tasks, and let the computer handle what *it* does best.
A weight off our shoulders – and pressure released from the team.
Alleviating pressure also applies to *yourself* as a leader.
You can’t (and shouldn’t have to) deal with everything yourself. Avoid becoming overwhelmed, as it will hurt both you and your team. To do that, make sure to delegate suitable tasks.
**Delegate, delegate, delegate.** If you don’t, you’ll very quickly end up with an enormous amount of work on your plate, easily 2-3 people’s worth. And that’s a sure fire way to burn out.
In the past, I’ve worked months and months of consecutive weekends and late nights throughout the week. It’s not healthy. Learn from my mistakes, and delegate.
Remember that work often comes in waves, so give yourself a buffer, as well. Don’t completely pack your schedule, because you may suddenly be called to ‘fight a fire’ somewhere else. And if things do end up being a bit quiet on your end, you can pick up more work from the team and help speed things along, which is great.
I believe 100% that a good leader should lead by example, and pull their weight in the team. *And* that delegating tasks in order to slack off is inexcusable.
Delegation is meant for creating a sustainable working environment for yourself, and for your team. (And for assigning work that’s better suited to, or would help develop, someone else). It frees up your time to focus on more important things.
– And it alleviates pressure buildup.
Next, let’s look to the woods for more opportunities to employ biomimicry:
## The Mother Tree
The oldest and largest trees in a forest are called hub trees – or, more fondly, mother trees.
Their large canopies partially shade the smaller trees and young sprouts in the understory below, and protect them from thermal stress and wind damage.
Trees that grow up in their mother's shade get less light and grow slowly, which leads to dense wood and a strong tree. But the young trees that grow in the open sun, without this shade, grow very fast. This can lead to soft wood, which makes them susceptible to rot and fungus.

*Slow-growing, harder wood (top) vs. fast-growing, softer wood (bottom).*
Through photosynthesis, the grand canopies of the mother trees produce an abundance of organic compounds, like sugars. The sugar travels down within the tree in the sap, and is used as a source of energy.
With such large canopies, the mother trees produce more sugars and other nutrients than what’s needed for themselves. But the surplus is not wasted. They [share the excess nutrients](https://mothertreeproject.org/about-mother-trees-in-the-forest/?ref=keheka.com) with other trees in the forest through an intricate root system below the ground.
So, in addition to benefiting from the shade and protection of the overstory, young trees and sprouts are also physically connected to the mother tree underground. Which means, they tap into extra water in the root system and receive nutrients produced by the mother tree.
Not only that, when the mother tree faces danger from an invasive predator or disease, it releases chemical signals into the air or through what’s called the mycorrhizal network (an underground root network of fungi). The surrounding trees pick up these cues and respond by releasing hormones or chemicals to deter threats. (And this signalling goes both ways).
For example, when a giraffe begins munching on acacia leaves, the tree responds to the injury by emitting a distress signal in the form of ethylene gas. Neighbouring acacias react to this by pumping tannins into their leaves as a defence mechanism. Since high tannins negatively impact the taste and nutritional value of the leaves, giraffes actively avoid those plants.
And so, not only do the mother trees protect and shield the young below, providing a safe environment for growth, they also help nurture their development and communicate important information, ensuring the sprouts both survive *and* thrive.
When you think about it, mother trees are great leaders of the forest.
Similarly, if you’re leading a team, a part of your job is to help create the right environment and conditions for your team members to thrive.
Like the mother tree, you should protect your team, provide a safe environment for growth, help nurture their development, and communicate important information clearly.
– Which make up the next four important points for being a good leader:
### 03: Protect Your Team
Part of your job as a leader is to shield your team from unnecessary pain and stress.
An artist shouldn't have to worry about all of the myriad problems that production, supervisors, or management face on a project, for example.
They should be allowed to focus on their own tasks and do their best work.
You might be dealing with a difficult client; you could be dealing with a lack of team members due to holidays or sickness; you may be dealing with a deadline that’s been brought forward; financial stress on the project; or all sorts of political issues.
But adding this type of (sometimes immense) additional pressure onto the artist is neither fair nor productive.
Instead, as a leader, you should act like a canopy that shields the team members underneath from these issues.
– I’m not talking about hiding problems, or pretending that everything is fine when it’s not. I’m talking about being a buffer. About being the first line of defence, if you will, and filtering and conveying the important bits of information in a productive way to your team.
Protect them from the storm above, so that they’re able to work safely and effectively. They’ll be more creative, less stressed, and more productive.
Another way to protect your team is to [take responsibility](https://hbr.org/2011/10/why-good-leaders-pass-the-cred?ref=keheka.com) when things go wrong.
A good leader is a person who takes a little bit more than their share of the blame and a little bit less than their share of the credit.
If team members are scared to be thrown under the bus for every little mistake or wrong turn they make, they are less likely to take the creative risks necessary to come up with something great.
However, in a psychologically *safe* environment, team members will feel that they can share their ideas and opinions without fear of judgment or retribution. This builds trust, and it fosters innovation. And, the team is more likely to be engaged and proactive in addressing issues.
Speaking of safe environments:
### 04: Provide A Safe Environment For Growth
Several [studies](https://sifted.eu/articles/uk-founders-socioeconomic-privilege?ref=keheka.com) [have](https://www.bertelsmann-stiftung.de/fileadmin/files/user%5Fupload/StartupssozHerkunft%5Ffinal3%5Fen.pdf?ref=keheka.com) [shown](https://blogs.lse.ac.uk/businessreview/2020/12/03/disentangling-privilege-from-merit-a-crucial-step-for-true-inclusion-at-work/?ref=keheka.com) that successful entrepreneurs tend to come from privileged backgrounds.
You’d have to be a real risk-taker to take on an entrepreneurial venture if you don't have an economic or social network to protect you in case of failure. These benefits allow you the freedom to take chances, to fail, to learn, and to grow. You’re in safe hands no matter what, so you can focus on trying to win, and not worry so much about failing. Which tends to make you win more often.
So, how can we provide a similar safety net and support structure to our team members (especially juniors) to help them succeed? What does a safe environment for growth look like?
First of all, you can start by giving them the right level of challenge.
You wouldn’t throw a junior employee straight into the deep end, asking them to tackle the hardest tasks without any support – most would ‘drown’.
Instead, it’s better to assign them tasks which are a good match for their skill level. Which means, tasks that are challenging to them but still possible to accomplish.
For example, we label every shot task on a show based on the level of artist we think is required for the work involved:
- Junior
- Junior+
- Mid-level
- Mid-level+
- Senior
- Senior+
– Where ‘+’ indicates someone with above average skills for their level.
As much as possible, shots are assigned to artists based on their level. Senior+ shots wouldn’t go to a Junior artist, for example, as that would just cause them unnecessary frustration – and would likely end up with the shots not being finished on time.
And, giving Senior artists only Junior tasks is not great, either, because that type of work would almost be of no challenge to them. More than likely, it would just feel tedious and boring.
Instead, match the task to the skill level. This means a Junior+ task would typically go to a solid junior or to an early mid-level artist, for example. And if they're up for it, we often let artists test themselves a step up.
Secondly, where possible, allow the team some creative freedom. Let them test things out, try different methods, and figure out what works. How else will they truly learn?
I really do see the benefit of templates, and there is definitely a place for them, but as much as possible I try to let artists create their own Nuke scripts, and structure their composites in a way that makes sense to them.
💡
Although, I do advocate following some [best practices](https://www.keheka.com/best-practices-for-compositing-in-nuke/), at least as a base, so that when others pick up the work they can understand what’s been done.
– In essence, let them have ownership over their work.
With ownership comes responsibility, and taking pride in what you make. And this typically leads to extra effort being put into the work, creating a better result.
And lastly, have an open door policy so that when someone on your team is struggling to figure something out, they know that they can always come to you for advice on how to move forward.
Which leads to the next point:
### 05: Help Nurture And Develop Your Team
Throughout all of my career, and *especially* when I started out as a junior, I felt that any day where I learned something new was a great day.
Because every *aha*\-moment, no matter how small, is a stepping stone to becoming better. And it’s important to feel that you’re progressing and improving. I think it’s a feeling every team member should have.
Thanks to all of the supervisors, leads, and senior peers I’ve worked with who shared their knowledge with me, and the benefits I saw from that, I’ve realised how important it is to nurture and develop your team.
Especially when there is no, or little, formal training in place at a company. And now, when so many of us are working from home, I would argue that it’s even more important to provide team members with training and opportunities for developing their skills.
It could be very informal; just hopping on a call to show them something and let them ask questions; or, you could set up regular, more structured training sessions.
Another 2D supervisor and I used to do bi-weekly “Composi-tips” sessions where we shared useful compositing tools and techniques related to a new topic each session. For example, keying, AOVs, projections, Deep compositing, or tech checking.
💡
We shared copies of the master Nuke scripts containing all of the info with the team, but in hindsight, we should also have filmed the sessions as training material for future compositors. However, you may have seen [Trixter Film](https://www.youtube.com/@TrixterFilm?ref=keheka.com) doing something similar for their team, which they are sharing publicly. Their videos are a fantastic resource – I highly recommend them.
Based on feedback, this training turned out to be very useful for the compositors. And so, in whichever format works best for you and your team, try to dedicate time for development.
Like the mother tree, enrich the soil with nutrients and your sprouts will grow strong.
### 06: Communicate Important Information Clearly
On a project, the difference between a catastrophic failure and a massive success will often be (a lack of) good communication.
It’s crucial to be clear in the way that you speak, write, demonstrate, and explain things, so that all parties understand the information and get on the same page.
Adapt your communication style to meet the needs of your team. For example, some team members may need detailed instructions and reassurance, while others may thrive with more autonomy. (Make sure to always provide enough information, though).
And, try to keep the receiver’s point of view in mind:
For example, when giving (especially written) notes on a shot, are you telling the artist what to do, or what *not* to do? Or, are you just stating what the problem is? Unless you’re very clear in your language, mixing different styles of feedback can cause confusion – especially for non-native English speakers.
Keep it simple and clear.
And make sure everyone is in the loop regarding issues relating to them. If a compositor is waiting for a new CG render and the CG supervisor tells you it’s ready to pick up, relay that information right away.
By keeping everyone up to date, you avoid wasting time and can address problems sooner.
It’s also useful to connect artists in different departments together directly so that they can solve a common issue, instead of you always having to pass messages back and forth. (But they should CC you and Production to keep everyone in the loop).
As long as all the important information flows freely to everyone who needs to know, you’re doing a good job as a leader.
Finally, let’s jump into the ocean for one more opportunity to employ biomimicry:
## The Octopus
Octopuses are among the most skilled camouflage artists in the world, and they are often admired for their phenomenal ability to sense and respond to their environment.
[According to Jon Ablett](https://www.nhm.ac.uk/discover/octopuses-keep-surprising-us-here-are-eight-examples-how.html?ref=keheka.com), who looks after the cephalopod collection at the Natural History Museum, octopuses have a couple of important physical advantages that enable this camouflage:
1. **Chromatophores**: Octopuses have thousands of specialised cells under their skin, called chromatophores, which help them to change *colour* in an instant.
1. **Papillae**: Octopuses also have tiny areas of skin that they can expand or retract, called papillae, which enable them to rapidly change the *texture* (shape) of their skin to match their surroundings.
💡
Using biomimicry, researchers have engineered a [synthetic skin](http://science.sciencemag.org/content/358/6360/210?ref=keheka.com) that mimics the function and design of the papillae, creating a stretchy material that can be programmed to transform into 3D shapes.
However, neither of those two things would be of much use without the octopus being able to rapidly and accurately analyse its environment:
[Background matching](https://pmc.ncbi.nlm.nih.gov/articles/PMC3359305/?ref=keheka.com) is a dynamic, visually driven process, in which the octopus uses its highly acute eyesight to map a precise picture of the surrounding environment. It very quickly understands the topography and characteristics of nearby features, then changes its own appearance accordingly to blend in.

*An octopus* [*seamlessly blending in*](https://www.cell.com/current-biology/fulltext/S0960-9822%2807%2901138-4?ref=keheka.com) *with its environment.*
It assesses a range of background variables such as brightness, contrast, edge detail, orientation, and size of objects when deciding which camouflage pattern to display.
In essence, an octopus is *exceptionally* aware of its surroundings and any changes therein.
And that’s also a valuable skill for you to have as a leader.
### 07: Be Aware Of Your Surroundings
Sensing the emotional undercurrents within a team and adapting accordingly will help make you an effective leader.
Try to pay attention to things like body language, tone of voice, and other subtle cues that might signal stress, dissatisfaction, or excitement among your team members.
If a member of the team is struggling with personal issues, the best thing to do is to show them empathy, compassion, and understanding. We're not surgeons, and delaying their work won’t be a matter of life or death. And so, if they need some time and space, try to accommodate that for them.
💡
In fact, **expect* these things to happen from time to time, and account for them with a buffer in your bid/budget.
If you notice that someone is overwhelmed, try to shift a part of their workload over to another suitable team member, who’s free to take on more work. This is both a *reactive* and a *proactive* process. As well as adjusting workloads when issues crop up, look ahead to predict bottlenecks in the schedule.
On the other hand, if someone is excited and passionate about a project/sequence/shot, channel that energy into good use. Assign them tasks they’re interested in, and watch the team’s productivity skyrocket.
Being a good leader is often just about reading the room. Pay attention and *actively* listen to what your team members are saying, with and without words.
And remember that energy (i.e. vibes) transfers quickly – both good and bad. Try to recognise, understand, and manage your own emotions, because they’ll have an impact on the emotions of others.
If you’re having a bad day, for example, take some deep breaths before you jump on the next call. If you can ‘reset’ and start fresh again with a good mood, that’s so much better than coming in with a clearly annoyed tone of voice and demeanour.
And, if you spot someone else having a bad day, try to cheer them up, or let them vent for a while. In any case, try to always keep a feeler out, check in with the team, and identify potential issues before they escalate.
Like the octopus, be aware of your surroundings.
And that wraps up these 7 tips for becoming a better leader. Combine all of the tips above to help create a healthy ecosystem within your team. And, keep looking to nature for new ways to improve.
I hope you found this article useful. For more like this, see [Advice](https://www.keheka.com/tag/advice/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam or ads. Unsubscribe anytime.
### How To Be More Creative
URL: https://www.keheka.com/how-to-be-creative/
Last updated: 2025-02-16T09:35:58.000Z
⭐ 25 highly effective ways of boosting your creative output…
_This post is for paying subscribers only._
### Rendering A Labelled Layer Contact Sheet In Nuke
URL: https://www.keheka.com/rendering-a-labelled-layer-contact-sheet-in-nuke/
Last updated: 2025-02-16T09:35:36.000Z
⭐ A workaround for the non-renderable layer names in the LayerContactSheet node…
_This post is for paying subscribers only._
### Fixing Edge Of Frame Glow Popping In Nuke
URL: https://www.keheka.com/fixing-edge-of-frame-glow-popping-in-nuke/
Last updated: 2024-12-30T09:00:39.000Z
*A simple solution for removing pops in the glow on objects that enter and/or exit the frame…*
## A Common Glow Issue
If you’ve ever applied glow to bright objects that enter and/or exit the frame, you may have run into an issue with popping in the glow.
It happens for example when there is not enough overscan, and the bright object gets cut off by the edge of the frame. This changes the shape and size of the object that the glow operation ‘sees’, leading to flickering or popping in the glow.
Below I have animated a white roto shape going in and out of the frame (with no overscan), and applied some glow to it:
*The glow is popping at the edges of the frame.*
As soon as the shape gets cut off by the frame, you can see the drastic popping in the glow.
There are a few solutions to this problem.
You may previously have patched the shape using an earlier/later frame, and tracked/animated it offscreen.
Or, you may have rendered a large bounding box to keep the shape intact offscreen. – Which, depending on the size of the glow, may have needed to be huge.
But here’s a simpler solution:
## Black Outside
First, make a new branch off to the side of your comp where you intend to apply the glow.
Then, add a Crop node to this new pipe (double check that it inherits the same format), and make sure **black outside** is enabled. This will add a 1 pixel black border just outside of your frame.
Apply the glow, making sure that it’s set to output the **effect only**.
Finally, Merge (plus) this with your comp.
*Fixing the popping glow by adding a 1 pixel black border around the image.*

*The setup.*
Often, this will be enough to remove the popping at the edge of the frame.
If not, you can also increase the **softness** value in the Crop node. This will feather the edges of the frame, darkening the outer parts of your image.
And so when you add the glow, it will softly fade out at the edges of the frame.
This technique is also useful for when you need to feather the edges of for example a 2D smoke element to avoid matte lines in your comp. Instead of creating roto shapes to mask the element, just feather it in using the Crop node.


*Feathering the edges of a smoke element using the softness setting in a Crop node.*
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
## Sign up for the newsletter
Get free Professional Compositing Tutorials right in your inbox
Subscribe
Email sent! Check your inbox to complete your signup.
No spam. Unsubscribe anytime.
### 100: Legacy
URL: https://www.keheka.com/100-legacy/
Last updated: 2024-12-23T08:50:52.000Z
*The motivation behind taking 100 steps to improve our VFX community…*
*leg·a·cy*
*: the long-lasting impact of particular events, actions, etc. that took place in the past, or of a person’s life.*
*: something transmitted by or received from an ancestor or predecessor or from the past.*
## Core Motivation
This is my 100th article on [www.keheka.com](https://www.keheka.com/) 🥳🎉!
One hundred compositing tutorials, tools, tips, advice, and productivity guides. (Most of which are completely free for anyone to read and benefit from).
– Or, in other words, 100 steps taken (so far!) to improve our VFX community.
And so I thought it would be fitting to talk about the **driving force** behind this now quite considerable body of work.
I want to talk about motivation.
Not about the surface-level, fleeting, spur-of-the-moment type of motivation, but the core motivation *behind* – that drives you to do something more substantial.
For many of us, perhaps whether we really have thought about it or not, one core motivation is **legacy**.
To make something of yourself – to exceed your own limitations and build something that you’re really proud of, and that you’re grateful to yourself for having made. Something which you can share, that will help [your fellow crew members](https://www.keheka.com/spaceship-earth/) long term.
It’s about making a positive impact on your own part of the world – contributing to your community – for example by sharing your knowledge and helping others.
It’s equally about acting in a way that takes other people’s wellbeing into account. And trying to be a good example through your actions – actions which others may think are worthy of practicing themselves.
💡
It can be useful to think back on moments in your life when you felt that someone really helped you, or even amazed you. It could be a teacher, a friend, a stranger – or even yourself, discovering something new. Impactful moments. And then trying to give someone else the same beneficial experience that you had. It could be a small **aha*\-moment, or a greater contribution – something **good* for someone else.
I’m a firm believer in always trying to leave your surroundings in the same (good) or *better* condition than you found them in. In not leaving a burden for someone else to pick up, but rather having others benefit from the way you acted.
💡
This can be something as simple as [keeping your Nuke scripts clean and organised](https://www.keheka.com/best-practices-for-compositing-in-nuke/), in the event that others will have to pick them up.
I also believe in always trying to be useful. In picking up the slack (without being taken advantage of), and contributing wholeheartedly where you can. Especially in areas where you have an advantage.
Doing what only you can do. Or rather, doing what only you are *willing* to do.
There’s not a whole lot of people who would trade this amount of free time or sleep for writing 100 compositing tutorials and productivity guides online over the past three years, especially while working a full time job. (Or even more, during crunch times).
However, I fully *believe* it’s worth it – and so it has become my ongoing contribution to the community. And you may find that something else is worth spending *your* time creating and sharing. Something which sparks your own core motivation.
My advice is that you search for that thing.
Because core motivation will have you sit down and do the work even when you don’t necessarily feel like it. It will overpower laziness. Core motivation will override the excuses you might tell yourself.
Core motivation is very disciplined. It will do what needs to be done. It will find the time to do the work. – It will *make* the time.
Most of the time, however, that core motivation will make you **want** to do the work – to [build your legacy](https://www.keheka.com/whats-your-immortality-project/), or otherwise contribute to the world. It’ll sometimes wake you up in the night with great ideas, always working in the background, like a muse in your subconscious.
It’ll make you highly perceptive and in tune with what you’re building – constantly connecting dots and coming up with new perspectives.
If you haven’t discovered it yet, to find out what’s worth spending *your* time on, it’s a good idea to take a step back and look at the bigger picture.
## Expanding Your Time Bubble
In this ‘Age of Now’ that we live in, where almost everything that we read about has happened within the past 24 hours, there perhaps isn’t enough forward thinking, nor enough reflecting on the past, beyond that one-day bubble of time.
When habitual instant gratification has become the norm, it can feel unnecessary to consider a longer term perspective. However, I think that’s a grave mistake.
There was a famous experiment on instant vs. delayed gratification – the [Stanford marshmallow experiment](https://en.m.wikipedia.org/wiki/Stanford%5Fmarshmallow%5Fexperiment?ref=keheka.com) – which showed a correlation between the ability to suffer the short term ‘pain’ of delaying gratification, and the rate of success later in life.
The children who were able to delay their gratification seemed to do better in adulthood.
It’s similar to saving for a pension. You take a ‘loss’ now (putting away some of the money that you currently *could* have spent and enjoyed), for a greater gain in the future (a larger sum of money that will secure your old age).
It’s something that was instilled within me early on in life. We have to consider and plan for the future, long term, to create the best conditions for ourselves and for the upcoming generations. And for that same reason, we have to consider the past to avoid our previous mistakes.
While important, it's not enough to *only* live in the Now.
Especially when the current Now seems full of doom and gloom.
## Look For The Helpers
After a war, a disaster, or an accident, it can be easy to look at the chaos and lose hope.
A quick browse through the VFX subreddit lately might lead you to believe that the industry is completely going south, for example.
But there will always be a spirit of rebuilding, and people looking to help:
"When I was a boy and I would see scary things in the news, my mother would say to me, 'Look for the helpers. You will always find people who are helping.' To this day, especially in times of disaster, I remember my mother's words, and I am always comforted by realizing that there are still so many helpers — so many caring people in this world."
– Mr. Rogers
After the global epidemic, strikes, economic downturn, and the uncertainty we’ve seen in the past few years, the VFX community needs all the help it can get.
But we shouldn’t expect or count on external help. It’s up to us.
In addition to helping people get back on their feet, we have to prepare and build for a better future, driving everyone forward.
For example, now that so many are working from home, there is a lack of the natural training that compositors would get if they were sitting right next to their Lead, Supe, or another peer.
Someone should be providing that training. Someone *has* to provide that. Or else, it would be like if we stopped saving for a pension.
And so that’s what this website is trying to emulate, in a way – giving you that place to learn and grow.
That’s the “burden” (read: honour) that I’ve been trying to help carry, together with several other mentors online.
## Paying It Forward
Like mentioned earlier, over the past 100 articles I’ve sacrificed a fair amount of free time to share (what I hope is) useful information with the compositing community.
But it’s easily worth it, because helping to guide the current and upcoming generations of compositors – and paving the way for you to do better than I have – is rewarding in itself. It’s my long term contribution to your future, showing you how to navigate situations where I’ve made mistakes in the past.
And I hope that you’ll take inspiration and pay it forward as well.
I read somewhere:
**Go fast alone, go far together.**
Ego may initially take the lead off the starting line, but Community will outrun it over time. And life is the longest marathon we’ll ever run.
So, with that, I plan on continuing to share my knowledge with you, one article at a time.
Here's to the next 100!
I hope you found this article useful. For more like this, see [Advice](https://www.keheka.com/tag/advice/).
[Sign up for the newsletter!](https://www.keheka.com/#/portal/signup)
### Useful Nuke Tools And Setups
URL: https://www.keheka.com/useful-nuke-tools-and-setups/
Last updated: 2025-11-26T08:54:21.000Z
*A collection of great gizmos and node setups which will improve your workflows in Nuke…*
## Monumental Contributions
Nuke has been around [for a long time](https://www.foundry.com/insights/film-tv/history-of-nuke-compositing?ref=keheka.com).
Over the years, people from all over the world have created thousands of Nuke tools and setups, and graciously shared them with the compositing community.
💡
Massively thanks to hubs like Nukepedia and GitHub, but also due in no small part to the many wonderful Nuke blogs and personal websites out there.
In this article, I would like to highlight some of the contributions which have been, and continue to be, of great use to me in my career, and which I think you should know about.
Tools which are so useful, that I believe they should be in every compositor’s toolbox.
### Nuke Survival Toolkit
I’d like to start off with a large collection of great tools, which are curated, maintained, and in several cases made by Tony Lyons:
[Nuke Survival Toolkit](https://github.com/CreativeLyons/NukeSurvivalToolkit%5FpublicRelease?ref=keheka.com)
### Pixelfudger Gizmos
Next, we have a wonderful suite of tools by Xavier Bourque:
[Pixelfudger Gizmos](https://pixelfudger.com/?ref=keheka.com)
### apTools
Adrian Pueyo has contributed many great tools, which you can find in the Nuke Survival Toolkit, or download individually below:
[apTools](https://adrianpueyo.com/gizmos/?ref=keheka.com)
He is also the creator of the very useful node connection system:
[Stamps](https://adrianpueyo.com/stamps/?ref=keheka.com)
### bmTools
Ben McEwan has shared a lot of great tools over the years, which you can find in his GitHub repository:
[Ben McEwan’s Tools](https://github.com/BenMcEwan/nuke%5Fpublic?ref=keheka.com)
### Buddy System
Hiram Gifford has built a nice collection of tools:
[Buddy System](https://www.hiramgifford.com/buddy-system?ref=keheka.com)
### MJT Lab
Mark Joey Tang has an extensive repository of tools, especially for manipulating Deep and Position data:
[MJT Lab](https://github.com/xmjtx/MJTLab?ref=keheka.com)
### SpinVFX Gizmos
Erwin Leroy has put together a great collection of different tools:
[SpinVFX Gizmos](https://github.com/SpinVFX/spin%5Fnuke%5Fgizmos?ref=keheka.com)
### Mads Hagbarth Lund’s Gizmos
Mads has created lots of very clever tools over the years:
[Mads Hagbarth Lund’s Gizmos](https://www.google.com/search?q=%22Contributor:+Mads+Hagbarth+Lund%22+site:www.nukepedia.com&ref=keheka.com)
### Frank Rueter’s Gizmos
Frank is one of the OGs in the industry – and the creator of Nukepedia, no less!
He has contributed many tools over the past couple of decades which have inspired generations of compositors, and which continue to be useful today:
[Frank Rueter’s Gizmos](https://www.google.com/search?q=%22Contributor:+Frank+Rueter%22+site:www.nukepedia.com&ref=keheka.com)
### Andrea Geremia’s Collections
Andrea has gathered large collections of useful setups:
[Particles Collection](http://andreageremia.it/tutorial%5Fparticles%5Fcollection.html?ref=keheka.com)
[Expression Node Collection](http://andreageremia.it/tutorial%5Fexpression%5Fnode.html?ref=keheka.com)
[Python & TCL Snippets](http://andreageremia.it/tutorial%5Fpython%5Ftcl.html?ref=keheka.com)
He has also shared plenty of other tools on his website:
[Andrea Geremia’s Tools](http://andreageremia.it/tutorial.html?ref=keheka.com)
### Franklin Toussaint’s Tools
Franklin Toussaint has made and gathered a large collection of useful tools:
[Franklin Toussaint’s Tools](https://github.com/franklinvfx/NUKE%5FALL%5FUSEFUL%5FTOOLS/?ref=keheka.com)
In the various collections above you’ll find tons of useful tools which you can sink your teeth into.
Next, let’s highlight some great tools which may not be a part of a collection:
### Edge Control
Normal edge extension tools smear out the outer border of pixel values, but this tool warps the shape out instead, which can lead to better edge detail:
[VectorExtendEdge](https://www.nukepedia.com/tools/gizmos/filter/vectorextendedge?ref=keheka.com)
💡
Edge extensions should be used **sparingly,* as they can quickly kill edge detail.
The EdgeDetect node in Nuke is quite limited, and for creating custom edge mattes it’s far better to use a tool such as this one:
[Perimeter – Advanced Edge Matte Tool](https://www.keheka.com/perimeter-advanced-edge-mattes/)
Often, you’ll want to break up edges that are too ‘perfect’ and ‘CG’-looking. Here’s a useful setup:
[Breaking Up Edges And Surfaces In Nuke](https://www.keheka.com/breaking-up-edges-and-surfaces-in-nuke/)
### CG Beauty Rebuild & AOV Management
Additive beauty rebuilds can get quite large and complex, especially when there are many different AOVs in the render.
To avoid having to build the entire beauty rebuild setup each time, you can use this tool instead:
[Leeloo – Multipass Compositing Tool](https://www.keheka.com/leeloo-multipass-compositing-tool-for-nuke/)
💡
For a detailed walkthrough of every AOV and how to completely rebuild the CG beauty render, plus a ton of other tips and tricks, see [Professional CG Compositing In Nuke](https://www.keheka.com/professional-cg-compositing-in-nuke/).
If you only want to adjust a single pass (at a time), a subtractive beauty rebuild tool might be more efficient – like this one:
[Korben – Subtractive AOV Grading Tool](https://www.keheka.com/korben-subtractive-aov-grading-tool-for-nuke/)
Sometimes, you may want to change the lighting in a CG render. Here are some useful setups:
[Relighting CG Renders In Nuke](https://www.keheka.com/relighting-cg-renders-in-nuke/)
### ITools
For most Nuke nodes, the **mask**\-input and the **mix** slider will affect the *opacity* of the effect.
In the “I”-style type of tools, however, those settings will affect the *strength* of the effect.
A soft mask will ramp the effect:
- The mask areas with a white alpha will apply the full effect to the image. For example, if you’re blurring an image by a size of 20, a value of 1 in the mask would apply the full size 20 blur.
- The mask areas with values in between 1 and 0 will apply the effect partially to the image. For example, using the same example with a size 20 blur, a mask value of 0.5 would apply a size 10 blur (half of the full size 20 blur).
- The mask areas with a black alpha will have no effect.
This is super useful for softly blending the effect, like for example warping an image into position, without getting mixing artefacts.
There are several types of ITools and setups:
[IBlur](https://www.nukepedia.com/tools/gizmos/filter/iblur/?ref=keheka.com)
[ITransform](https://www.nukepedia.com/tools/gizmos/transform/itransform?ref=keheka.com)
[ICornerPin](https://www.nukepedia.com/tools/gizmos/transform/icornerpin?ref=keheka.com)
[Warp Transform](https://www.keheka.com/warp-transform/)
### Keying Setups
I’ve found the following setups to be extremely potent for getting a great key:
[Advanced IBK Keying Setup](https://www.keheka.com/advanced-ibk-keying-techniques-and-setups-in-nuke/)
[Multiplication Key](https://www.keheka.com/multiply-key-technique-for-extracting-fine-detail/)
💡
Also see [Professional Keying In Nuke](https://www.keheka.com/professional-keying-in-nuke/) for keying tips.
And this tool is great for when you’re keying semi-transparent things, like smoke, and want more control over the density:
[Alpha Density](https://www.keheka.com/alpha-density-matte-control-tool-for-nuke/)
### Grading Setups
To match or remove the dynamic lighting in a plate, you can use this tool:
[De-/Flicker](https://www.keheka.com/add-or-remove-flickering-in-nuke/)
When keying, you’ll need a good despill tool, for example:
[DespillMadness](https://www.nukepedia.com/tools/gizmos/keyer/despillmadness?ref=keheka.com)
### Deep
We’ve already seen quite a few Deep tools, but here is also a great setup for making deep holdouts:
[Deep Holdouts Using Geometry In Nuke](https://www.keheka.com/deep-holdouts-using-geometry-in-nuke/)
And here is a useful way of working with Deep:
[Deep Compositing Using A 2D Workflow In Nuke](https://www.keheka.com/deep-compositing-using-a-2d-workflow-in-nuke/) (A more in-depth and advanced tutorial [here](https://youtu.be/3tujOTTcw4w?feature=shared&ref=keheka.com))
### Projections
Here are some very useful setups for projecting things in Nuke:
[Combining Projections In Nuke](https://www.keheka.com/combining-projections-in-nuke/)
[Projecting Overscan With No Cropping In Nuke](https://www.keheka.com/projecting-overscan-with-no-cropping/)
[Sticking A Projection Onto Animated Geometry In Nuke](https://www.keheka.com/sticking-a-projection-onto-animated-geometry/)
### Glow & Lightwrap Gizmos
The default Glow node in Nuke doesn’t quite behave in a natural, photographic way.
Light has an exponential falloff, and so it’s much better to use an exponential glow instead, like for example this one:
[Exponential Glow Iterations](http://www.nukepedia.com/tools/gizmos/filter/exponential-glow-iterations?ref=keheka.com)
This also applies to the related Lightwrap node in Nuke. (Lightwrap is also basically a glow).
A lightwrap tool such as Tony Lyons’s LightWrapPro is a better option:
[LightWrapPro](https://github.com/CreativeLyons/Lyons%5FTools%5FPublic/tree/master/06%5FFilter?ref=keheka.com)
💡
Improve your lightwraps using [facing ratios](https://www.keheka.com/upgrade-your-light-wraps-using-facing-ratios/).
### Distortion Setups
Oftentimes, it’s useful to do custom warps and distortions to the image.
Here is a nice technique that gives you creative control over the distortion:
[Painting Distortion In Nuke](https://www.keheka.com/painting-distortion-in-nuke/)
And here is a tool for quick and easy distortions using just an alpha channel:
[Glass](http://www.nukepedia.com/tools/gizmos/transform/glass?ref=keheka.com)
Another type of common distortion we apply in comp is heat distortion. Here is a great heat distortion tool:
[HeatWave](https://www.nukepedia.com/tools/gizmos/filter/heatwave/?ref=keheka.com)
### Lens Effects
This guide goes over 19 different lens effects and how to create them in Nuke:
[Compositing Photorealistic Lens Effects In Nuke](https://www.keheka.com/compositing-photorealistic-lens-effects-in-nuke/)
### Grain Management
When it comes to adding and removing grain to your shots, this is an incredibly powerful combination:
[Neat Video Reduce Noise](https://www.neatvideo.com/?ref=keheka.com)
[DasGrain](https://www.nukepedia.com/tools/gizmos/other/dasgrain?ref=keheka.com)
If you want to remove render noise from a CG render, there are [many tools and techniques](https://www.keheka.com/removing-noise-from-cg-renders-in-nuke/) that you can employ, including this very useful one:
[VectorFrameBlend](https://www.nukepedia.com/tools/gizmos/time/vectorframeblend?ref=keheka.com)
### Python Scripts
Learning a bit of Python is super useful for speeding up your workflow and automating tedious, repetitive tasks.
This guide shows you how to build several great Python scripts:
[Python Tools](https://www.keheka.com/automating-tedious-tasks-using-python-in-nuke/)
### Script Organisation
It’s a good idea to standardise the organisation of your script.
It will increase the readability of your work and significantly boost your efficiency. Here are many tips for how to do that:
[Best Practices For Compositing In Nuke](https://www.keheka.com/best-practices-for-compositing-in-nuke/)
It can be useful to install a Backdrop manager to quickly and easily create labelled Backdrops for organising the various sections of your script:
[BackdropManager](https://www.nukepedia.com/tools/python/nodegraph/backdropmanager/?ref=keheka.com)
### Tech Checking
When you tech check your shot, you’ll be playing the current comp version, the previous version, and the scan / version zero, at the minimum.
And you’ll also be checking things in various areas of your script while troubleshooting.
Instead of copying multiple grain checker gizmos (or other tech checking tools) all around your script, use the **Viewer Input** function, which you can activate whenever you want without connecting any gizmos:
[VIEWER\_INPUT](https://www.keheka.com/checking-grain-using-the-viewer-input-process/)
### Tracking
Lastly, while this is not a Nuke gizmo, it’s an honourable mention nonetheless:
Mocha’s planar tracker is far superior to Nuke’s planar tracker. There’s no competition. So the final tool to recommend would be:
[Mocha Pro Planar Tracker](https://borisfx.com/products/mocha-pro/?ref=keheka.com)
There are so many excellent tools and setups out there, and I’m sure I have forgotten to mention many of them.
Please comment below with the must-have tools in your daily workflow.
I hope you found this tutorial useful. For more Nuke tips & tricks, see [Nuke](https://www.keheka.com/tag/nuke/).
[Sign up for the newsletter!](https://www.keheka.com/#/portal/signup)
### Korben – Subtractive AOV Grading Tool For Nuke
URL: https://www.keheka.com/korben-subtractive-aov-grading-tool-for-nuke/
Last updated: 2025-09-08T13:39:32.000Z
⭐ A lightweight tool for grading AOVs in your CG render…
_This post is for paying subscribers only._
### Best Practices For Compositing In Nuke
URL: https://www.keheka.com/best-practices-for-compositing-in-nuke/
Last updated: 2024-12-13T13:38:03.000Z
*Practical tips for improving your compositing in Nuke, and becoming a better team player in the process…*
Have you ever made – or had to pick up from another artist – a Nuke script that looks like this?

*A creative mess.*
This guide is about how to avoid finding yourself (and others) in a situation like in the picture above, and reaping the many benefits of doing so.
If you follow these guidelines, I can pretty much guarantee that you'll *objectively* become a better compositor.
## Adopting Good Habits
I’d like to start off with a useful mindset that I think will serve you well.
It certainly has for me.
It’s the idea that if you set yourself some **solid organisational ground rules**, and get into the **habit of following them automatically**, you will *quickly* become:
1. Vastly more efficient.
1. Much less prone to error.
1. A significantly better team player.
You’ll find that **increased speed** is one of the key long-term benefits. As Benjamin Franklin said:
“For every minute spent in organizing, an hour is earned.”
Let’s look at some ways you can apply this to your compositing:
## Managing Your Nuke Script
The **structure** of your Nuke script will affect your **performance** as a compositor.
A script like the one we saw above will *not* be easy to manage or troubleshoot, **especially for other compositors picking it up**. And it will *very* likely neither run nor render at optimal performance.
So let’s look at a better alternative.
When it comes to script structure, Nuke lends itself very well to the vertical top-to-bottom style of compositing – as evidenced by the design of its quintessential **Merge** node:
The Merge node's **B**\-input is the chief input in the hierarchy. If you disable the Merge node, it will pass through the **B**\-input downstream.
And, just by how the pipes are positioned on the node, the **A**\-input and **mask**\-input naturally feed into the Merge node from the left and right, respectively, while the **B**\-input and the **output** naturally become vertical.
Compositing downwards makes a lot of sense as you inherently won't overlap pipes or hinder access to any of the Merge node's inputs. Compositing with your spine going from left to right will block the mask input with the outgoing pipe, for example.
While compositing in any direction that you want is valid in the sense that it *works*, I would argue that vertical compositing is the more efficient and cleaner approach.
And, like mentioned above, with only a few simple organisational ground rules we can make a **predictable and powerful script structure** that is **easy to work with**.
I would suggest **three ground rules**:
### Rule #1: Keep A Straight Spine
Keep **one main vertical spine** of **B**\-pipes in your composite that all else feeds into.
Any CG, FX, elements, etc. that you add to your composite become **A**\-inputs **coming from the left** and merging into this **B**\-spine.
At the top of the **B**\-spine, you place what will be the background of your composite. Going down the spine, each **A**\-input is layered in from the background layers at the top, through to the midground layers in the centre, and down to the foreground layers towards the bottom of your script. (Exactly inverted to how you would stack layers in Photoshop or After Effects).

*Keeping a B-spine going straight down from the BG, with MG and FG layers merging into it.*
Doing it this way will help you layer up your composite in a natural and organised way, avoiding issues with background layers overlapping foreground layers.
You'll also be able to disable any of the Merge nodes in the **B**\-spine and only remove the corresponding **A**\-input from the composite.
This makes it a lot easier to follow your composite step by step and see what gets added where - which is especially useful when you need to make changes to your composite, or troubleshoot the script.
💡
You’ll typically rarely need to disable just the background layer. But if you wanted to, you could use a Reformat or a Constant node that’s set to the project format as the base layer, and merge the background layer in as a normal ****A**\-input.

*Using a Reformat as the base layer.*
### Rule #2: Keep Each Section Self-Contained
Think of every part of your composite as a **modular unit**.
Every **A**\-input in your composite is *itself* a self-contained mini-composite with its own main **B**\-spine.

*Modular sections.*
Systematically keeping this modular structure in your script will help you to stay better organised, navigate more easily around the script, and make more well informed compositing choices with less room for error.
Once you get the hang of it, it’ll become second nature and you’ll automatically build your composites in a way that is structurally easy to follow.
💡
Another benefit of the modular workflow is that it lends itself well to ****precompositing** (see further below in the guide).
This is the goal with every element that you add to your composite. Make individual modules as self-contained sections (that can be precomposited), which become **A**\-inputs to your main **B**\-spine.
### Rule #3: Keep Your Script Explicit
Be explicit as opposed to implicit when you build your script.
By that, I mean work in a clear and unambiguous manner, without obscuring the things that you do in the script. Don’t assume that anyone who’s picking up your script will understand *what* you have done, or *why* – instead, **make it obvious**.
💡
The less confusion that’s caused, and the less digging around that’s needed to figure out what’s going on in your script, the more productive and stress-free you and your colleagues will be.
It's all about **readability** \- and there are several steps you can take to make your script more easily readable:
#### ↪ Label Your Work
Consistently add a **Backdrop** node to every **A**\-input section of your script, and **label it** with a description of what that section is doing.
The description can be a keyword or a short comment, like for example:
- Keying
- Roto Crowd
- Windshield Reflections
Labelling the Backdrops like this is invaluable for easy script navigation and searching.
Remember to change the **font size** of the Backdrop's **label** to be sufficiently large – for example to a size of **100**. That way, you’ll be able to read the text while zoomed out in larger scripts.
It’s a good idea to **set this to be the default font size** in the Backdrop node, so that you won’t have to change it every time you create a new one:
Normally, you would specify any custom knob defaults with a little bit of code in your [menu.py](https://benmcewan.com/blog/2018/01/14/whats-a-menu-py-and-why-should-i-have-one/?ref=keheka.com). However, the Backdrop node is an exception to the rule.
When creating a Backdrop node (either through the Toolbar or the Tab menu), it won't trigger the regular **nuke.createNode** command (which grabs knob defaults from the menu.py), but will instead call the [autobackdrop function of the nukescripts module](https://learn.foundry.com/nuke/developers/90/pythonreference/nukescripts.autobackdrop-pysrc.html?ref=keheka.com).
This function lives in a Python script which is saved in the **nukescripts** folder where you installed Nuke. On Windows, for example, it would be in:
**C:\\Program Files\\Nuke15.1v2\\plugins\\nukescripts**
(Replace **C:\\Program Files\\** with the hard drive and the folder where you installed Nuke, and **15.1v2** with your Nuke’s version number).
Open up the **autobackdrop.py** script in a text editor, and near the bottom of the script, change the line:
note\_font\_size=**42**,
to:
note\_font\_size=**100**,
💡
You may have to ****right-click** the ****autobackdrop.py** file first, then click on ****properties** and go to the ****Security** tab. There, find and select your ****User** in the list, and ****Edit** the permissions so that you are ****Allowed** to ****Modify** the file.
Save the file, and then open a fresh Nuke. From now on, anytime you create a Backdrop node, the font size will automatically be set to 100\.
Another thing you could change is the Backdrop node’s **colour**.
Some people prefer monochromatic Backdrops, but I would argue that **varying the Backdrop colours makes it easier to distinguish between different sections of your script at a glance**, which makes for a more intuitive script navigation.
If you wanted to, you could use predetermined colours for the Backdrops, for each type of section. For instance, always having a green Backdrop for Keying sections.
There are many **Backdrop manager tools** on Nukepedia that can help with this, for example [BackdropManager](https://www.nukepedia.com/python/nodegraph/backdropmanager?ref=keheka.com), or [presetBackdrop](https://www.nukepedia.com/python/nodegraph/presetbackdrop?ref=keheka.com).
Whichever way works best for you. The important part is that you **clearly label** your work.
#### ↪ Avoid Hidden Settings
Unless you have to, try to avoid using special settings ‘hidden’ inside a node's property panel – when there is an equivalent node that you can add in the Node Graph instead.
For example, instead of ticking the *invert* checkbox inside of a Merge or Keyer node's property panel, connect an Invert node in the Node Graph.
Glancing at your script, anyone can then see that you are inverting the mask or key.
Or, instead of premultiplying the roto *inside* of the Roto node, use a Premult node. It just makes it easier to see what’s going on in the script.
– The output remains the same, but you **make the script more readable**.
#### ↪ Display Useful Information
Add key information to the labels of the nodes in your script.
For example, you could add the following expression to the labels of your **Blur** nodes:
**\[value size\]**
Or, add this expression to the labels of your **Shuffle** nodes:
**\[value in1\]**
Or, add this to the labels of your **Tracker** nodes:
**Reference Frame: \[value reference\_frame\]**
Doing this will show: how much you are blurring by, or which layer you are shuffling into RGBA, or which reference frame you have set in the Tracker node, respectively, directly on the nodes in the Node Graph.
This saves you time, as you won’t have to open up all the properties to see important information. And, it lets you quickly spot if the values are (not) what they’re supposed to be.
You can set the above as defaults in your **menu.py**, by adding the lines:
**import nuke** *#(←If you don’t have this line already)*
**nuke.knobDefault('Blur.label', "\[value size\]")**
**nuke.knobDefault('Shuffle2.label', "\[value in1\]")**
**nuke.knobDefault('Tracker4.label', "Reference Frame: \[value reference\_frame\]")**
#### ↪ Show What You’re Merging
Each **A**\-input should be the same format as your composite, so that when you view it, it’s directly representative of what’s being added to the **B**\-pipe.
If you are using for example a 2D smoke element with a different format, set it to the format of your composite:
Add a **Reformat** node to the element, set the *output format* to the project format, set the *resize type* to *None*, and untick the *center* checkbox.
💡
It’s important to set the **resize type* to ****None**, to avoid filtering your element.
When transforming the element around, instead of just seeing a bounding box outside of the smaller format – and not what’s actually going on – the reformatting will make your **A**\-input properly viewable in the project format as a standalone section.

*Transforming an element with a different format into place without reformatting it to the project format means that it can be hard to see the output properly.*

*Reformatting the same element to the project format instead means that you can tell what’s going to be merged, and where.*
Also, ideally do any masking on the **A**\-pipe instead of using the **mask**\-input on the Merge node. That way, you’ll be able to see the final product of the **A**\-pipe before merging it with the **B**\-pipe.
Using the **mask**\-input on the Merge node can lead to confusion:
With a setup like the one below (left), viewing the **A**\-input **doesn’t** give us a representative indication of what’s being merged (right).


*Masking on the Merge node.*
You wouldn’t be able to guess that the image below is the result of the merge, just by looking at the **A**\-pipe.

*The result of the merge.*
However, with a setup like the one below (left), viewing the **A**\-input gives us a much more representative indication of what’s being merged (right).


*Masking on the *A*\-side.*
#### ↪ Make Room
Give the nodes in your script air to *breathe*.
**Space the nodes out** so that it becomes easier to add extra nodes in between, or to make changes to a section. You’ll have more room to organise pipes, and the script will become easier to read.
With a bit of extra space, you’ll also be less likely to mis-connect nodes.


*Cramped nodes (left) versus spaced out nodes (right).*
#### ↪ Do Not Hide Inputs
Do not use, or use *very* sparingly, hidden inputs.
Hiding inputs does not ultimately make your script any cleaner. Quite the opposite.
It can cause confusion and accidental connections, and it can make you forget to update important parts of your script.
💡
There is a notable exception to this rule, and that’s if you’re using [Stamps](https://adrianpueyo.com/stamps/?ref=keheka.com) (**and* you are following its prescribed workflow), which has several safeguards in place against the pitfalls above.
Even with *every* pipe visible you can still organise them in a readable way using Dot nodes.
#### ↪ Dot - Dot - Dot
Use *Dot* nodes generously!
They are great for keeping your script organised. Avoid having pipes criss-crossing over your nodes, and make it clear where an input is coming from.
Angling the pipes 90 degrees using Dot nodes also makes your script look tidier compared to having diagonal lines.
You can even use Dot nodes to indicate which direction a pipe is going.
For example, when you have a horizontal pipe, it’s not always easy to tell at a glance if it’s coming from the left or from the right.

*Unclear connections – which pipe is going where?*
To help, add a Dot node to the pipe below the last node, just before the pipe goes horizontal, and (in larger scripts) a couple of Dot nodes to the pipe before it goes into the next node.
That way, you make a visual ‘staircase step’ that’s going down into the direction the pipe is headed.
– Visually following the rule of your script flowing downwards.

*Stair casing using Dot nodes, making the connections clearer. The pipes flow down, with *A*\-inputs coming in from the left, and *mask*\-inputs coming in front the right.*
#### ↪ Dot (A) - Dot (B) - Dot (C)
In large scripts, label the Dot nodes.
If you for example have a Camera pipe, a Building Geometry pipe, a Roto Holdout pipe, or any other pipes that lead into several areas of your script, add **Camera**, **Building Geometry**, **Roto Holdout**, etc. to the labels of the Dot nodes in those pipes.

*Labelling the Dot nodes in the pipe leading back to the camera.*
That way, you’ll only have to trace back to the first joint to find out which pipe is what, instead of all the way back up the node tree to the source.
Remember to set the **font size** of the Dot's **label** to be sufficiently large, for example to a size of **100**. That way, you’ll be able to read the text while zoomed out in larger scripts.
You can **set this to be the default** in your **menu.py**, by adding the line:
**nuke.knobDefault('Dot.note\_font\_size', "100")**
#### ↪ Sort Your Nodes
For each section of your script, try to place similar nodes/tasks in the same areas.
For example, try to do all of your grading in one area so that if you need to change the grade, it’s all there in one place. That way, you won’t have to search all over to find what you need.
Also, **chaining transformations** has the added bonus of [concatenation](https://learn.foundry.com/nuke/content/comp%5Fenvironment/transforming%5Felements/node%5Fconcatenation.html?ref=keheka.com) (which we’ll also look at later).
#### ↪ Lock In The Format
When you create a node in Nuke, it will typically take the format of whatever it's connected to as its input format.
However, if the node is not connected to anything, it will typically take the *root.format*, i.e. the **current** project format, as its input format.
That’s usually great within the confines of one specific project, but if you want to copy a setup from one project to *another*, or make a ToolSet or gizmo, you may find that it can mess things up.
When looking at the output of a setup in a different project format, you’ll find that roto shapes, projections, etc. can become misaligned, and the whole result can break apart.
And if a setup you saved as a ToolSet on some past project breaks on your current project, it can be tricky to realign everything unless you remember exactly what the old format was.
When you create tools or setups, it’s obviously best to be format agnostic and set them up in such a way that they can accommodate any format. However, that’s not always practical.
But I would at the very least recommend to lock in the format so that everything is self-contained and will still line up with itself in another project. That way, it’ll be much easier to adjust the setup to work for the new project.
Locking in the format requires a little bit of extra effort, but I believe it’s worth it because you’re helping your future self and others a great deal.
– Which is why I adopted the following practices into my everyday compositing:
Plug a Reformat node, with the *output* *format* knob **explicitly set to the current project format**, into any relevant nodes that don’t have their input connected to anything.
💡
By ‘explicitly set’ I mean do **not* leave the Reformat node's format set as **root.format*, because that will dynamically change between projects - instead make sure to ****specifically pick** the actual format used. It will carry over to new projects.
Do this for unconnected **Roto** nodes, **Noise** nodes, **ScanlineRender** nodes, and any other nodes or gizmos that take a format as an input.
Also, change any format knobs in a node’s properties to the specific project format, instead of just *root.format* (which is typically the default).
Do this for **Constant** nodes, **Checkerboard** nodes, **Reformat** nodes, and any other nodes or gizmos with a format knob.
While it does take a few extra seconds to do this every time you make those nodes, you’ll thank yourself later on – when you inevitably go back and dig up a great setup that you once made, which is perfect for a new project.
#### ↪ Clear Out The Clutter
As you composite along, and especially when you version up a script, delete the nodes that you no longer use.
Often, you’ll test something out, or swap in a different node setup to address a note, and end up leaving a bunch of nodes disconnected off to the side, or disabled in your stream.
Once you publish a new version and/or version up your script, delete all of those unused nodes.
💡
You can always go back to the previous version of the script to restore them.
Tidying up along the way will keep your script from becoming bloated. It will be easier to navigate, take up less RAM and storage space, and run more efficiently.
### It’s Not Just A Pretty Face
There are several reasons for why the three ground rules above are important to follow:
Other compositors will often have to open up and work with your scripts, and the easier it is for them to hit the ground running, the better.
[Organise Your Work For Other PeopleShort term creative momentum without reflection can cause long term productivity loss. Here is how to steer clear of that trap…Kenn Hedin Kalvik - Professional Compositing TutorialsKenn Hedin Kalvik](https://www.keheka.com/organise-your-work-for-other-people/)
As mentioned before, *you* might even have to come back to the script *yourself* after an extended period of time, and the same applies.
I would argue that it’s **disrespectful** to your colleagues, not to mention **counterproductive**, to leave them a messy script:
“Clutter is nothing more than postponed decisions.”
– Barbara Hemphill
Passing on messy scripts forces your lack of decision making onto others, creating more work and frustration.
Not only that, keeping your scripts organised literally saves money. You’ll make fewer mistakes, and have a *much* easier time [troubleshooting](https://www.keheka.com/troubleshooting-your-nuke-script/) in an effective way when you do.
Which means you’ll spend less time doing unnecessary work.
## Avoiding Duplicates
If you’re merging together the outputs of for example five pipes, avoid having duplicates of the same five Defocus nodes or other nodes in each pipe.
Instead, merge the pipes together and *then* do **one** Defocus, or *one* instance of a node setup.


*Poor efficiency (left) improved by consolidating the duplicates (right).*
This will speed up your script’s processing time by a lot, since you reduce the number of nodes that need to be calculated.
Speaking of duplicates:
## Referencing One Source
You’ll often find that you need to use a specific source in your script multiple times.
It could be a scan, a camera, some geometry, a matte, or anything else.
Instead of duplicating the source every time you need it in your script, make a habit of using only the one, and then organise pipes leading from it to the areas in your script where it’s needed.
This centralised approach is beneficial because:
1. If a source needs to be updated, you only need to update it once in the script. You can’t forget to update any duplicates when there *are* none.
1. Your script will run faster. Instead of loading and buffering multiple copies of a source, Nuke only needs to do it once.
This also applies to expression linking nodes:
Instead of making multiple copies of a Tracker node, make use of its expression linking function and create linked Transform nodes.
These can then be duplicated around while still referencing the one central source.
💡
Referencing the same source multiple times is another benefit of the [Stamps workflow](https://youtu.be/3tujOTTcw4w?feature=shared&ref=keheka.com).
## Optimal Layering
Like we saw in *Rule #1: Keep A Straight Spine*, you should ideally layer your composite with the background layers at the top of the script (i.e. the equivalent of the bottom layer in Photoshop), then the midground layers in the centre, and finally the foreground layers at the bottom (i.e. the top layer in Photoshop).
This also applies when inserting something into the scan, *in between* foreground and background subjects and objects in the scan. Which means, you’ll have to separate out those layers from the scan to treat them independently.
To explain what I mean, let’s say that you’re putting a CG car in the street behind a foreground person on the pavement.
Many compositors will use the roto matte of the foreground person to stencil out the CG, before merging the stencilled out CG on top of the scan.
– But that’s *not* a great way of doing it. You would have little to no control over the foreground person’s edges or the edge blending with the new background (the CG car).
And, if the foreground person’s edges were motion blurred, you would see the original background through the motion blurred edges, on top of the CG car.

*This way of layering the composite can cause problems.*
Instead, you should separate out the foreground person and treat that as its own foreground layer.
So – first, merge the CG car directly on top of the original scan.
Then, branch off a separate pipe from the original scan, copy in the roto matte as the alpha, and premultiply.
Next, merge this new foreground layer (that contains just the foreground person) on top of the comp of the CG car and the scan.
💡
****Mask the foreground layer by the alpha of the CG car**, so that you’re only merging back the scan on top of the affected areas of the comp – i.e. ****no plate-on-plate comping**. (You may have to add a small dilation to the alpha of the CG before the masking, e.g. a 1 pixel dilation).
Finally, add any lightwrap, edge extension, or edge blending to the foreground layer (*before* the masking by the CG car in the stream).
Doing it this way means that you’ll have full control over the edges of the foreground person, and how they integrate with the CG car.

*Layering the CG and scan in a way that gives you full control over the edges.*
💡
Make sure that you do the masking as described above, so that you’re not adding any plate-on-plate lightwrap/edge extension/glow, or other plate-on-plate effect.
## Managing Your Bounding Box
The bounding box tells Nuke which part of the frame it should process.
It’s represented by a dotted-line box in the Viewer. Anything outside of the bounding box will be ignored when Nuke is calculating the image, even if there is actual pixel data there.
### Keeping Track Of Your Bounding Box
It’s important to keep an eye on the bounding box in all parts of your node tree to ensure that it doesn’t grow too large, and that you’re not slowing down your script by processing unnecessary pixel data.
And conversely, it’s important to maintain *enough* of a bounding box to include all of the pixel data you’ll need downstream for your composite.
If you consistently trim your bounding box throughout your composite, your scripts will be more interactive, with faster loading and buffering. They will crash less often, and your rendering times will decrease.
This leads to a productivity boost for you, and less strain on the company's render farm and storage. Win-win.
When the bounding box is larger than the frame, also known as *overscan*, you should pay special attention to it.
Sometimes you need this overscan, for example when using a Lens Distortion that pulls in pixels from outside of the frame.
But often, the bounding box will tend to grow outside of the frame without you needing it to, simply as a byproduct of everyday compositing. Nodes such as Blur, Defocus, Transform, or (especially) CornerPin can balloon the size of your bounding box and really slow things down.
Other nodes might cause issues if the bounding box is *smaller* than the frame. Vector-based nodes like the MotionBlur node, for example, can cause artefacts and streaks in the image.
And so, sometimes, you’ll have to *increase* the bounding box up to the full format, for example with a Crop node.
### Controlling The Bounding Box
Luckily, there are many options for controlling your bounding box:
- Use **Crop** nodes to remove your overscan where you no longer need it. (Or, to increase the bounding box up to the full format, in cases like described above).
- Use the **Crop** node or the **CropPadded** (or similar) gizmo to trim your overscan when you only need some of it.
- When you merge your **A**\-input into the **B**\-spine, set the bounding box to **B** in the **Merge** node’s properties in order to only keep the overscan from the **B**\-stream. (Assuming you have enough overscan in the **B**\-stream already).
- In the **ScanlineRender** node's property panel there is an *overscan* setting for when you need to output overscan. Setting this to 100 will add an overscan of 100 pixels.
- Use the **AdjBBox** node to add overscan to the input. This node is useful for example when you have a procedural node, such as Noise, and need overscan.
- The **CopyBBox** node does what it says on the tin; you can use it to copy the bounding box from one input to the other. This can be useful if you want to get the original bounding box back from your CG render after processing it.
- You can use the *AutoCrop* function in the **CurveTool** node to crop the bounding box of smaller elements or CG renders.
- The **BlackOutside** node adds a one pixel black border around your bounding box and can be useful if you want to remove stretching/repeating pixels from the border of your image.
💡
Be aware that anytime you’re adding glows, the soft bloom can get cut off by copying in/cropping down to a smaller bounding box.
### Viewing The Overscan
When you need to work with overscan, it’s useful to be able to see what’s actually there outside of the frame, or project format.
You can right-click in the Viewer and tick *show overscan* to display the overscan. (You could also open the Viewer settings by pressing **S** while hovering your mouse over the Viewer window, and then tick *show overscan* to display the overscan. Here, you can also choose how much overscan to display, by adjusting the *overscan* setting).
Or, you can branch off a **Transform** node from your composite and scale it down, if you just need a quick look. For example, to check that nothing has been accidentally cropped upstream.
### Keeping The Overscan
Some nodes and gizmos, like for example Kronos or MotionBlur, automatically crop the bounding box to the input format – without providing any options for processing and keeping the overscan.
Here is a workaround for dealing with those:
[Bypass Bounding Box Cropping In NukeNodes and gizmos that crop the bounding box with no option to preserve it can be annoying. Here is how to outsmart them…Kenn Hedin Kalvik - Professional Compositing TutorialsKenn Hedin Kalvik](https://www.keheka.com/bypass-bounding-box-cropping/)
## Managing The Channels In Your Script
When compositing in Nuke, especially when working with CG renders, it’s likely that you’ll be dealing with numerous render layers and channels in addition to the standard RGBA.
Processing all of these extra layers can get quite heavy and slow down your Nuke script, so let’s go through some best practices that can help speed things up.
### Layers Vs. Channels
First, just to clarify, a *channel* is what carries the image data in Nuke.
A *layer* is a channel set; a container that can hold multiple channels. All channels must belong to at least one layer, and the channel names always include the layer name as a prefix.
Nuke's default layer, conveniently called **rgba**, contains the channels **rgba.red**, **rgba.green**, **rgba.blue**, and **rgba.alpha**. In a typical image this relates directly to the red, green, and blue components, as well as the transparency, of the image.
But you could just as well be working with coordinates in a world position layer which is called for example **PositionWorld**, where the channels within carry the X, Y, and Z positions in world space: **PositionWorld.x**, **PositionWorld.y,** and **PositionWorld.z**.
Or, a **depth** layer with only one channel, **depth.z**, where each pixel value represents the distance to an object from the camera at that pixel's position in the frame.
This is all just to say that channels can represent other numerical data than just the red, green, and blue colour components of an image.
💡
If you select the Viewer panel and hover your mouse pointer over it, you can cycle up and down through the layer list with the ****PageUp** and ****PageDown** keys.
No matter what they contain, however, the channels of a layer will be mapped to red, green, blue, and alpha in the Viewer, in that order.
A **motionvector** layer with two channels, **motionvector.u** and **motionvector.v**, for example, will be mapped to red and green.
So, when the pixel values are positive, the **motionvector.u** component will look red and the **motionvector.v** component will look green when viewing the **motionvector** layer in the Viewer. Which is why this type of layer will often look yellow in the Viewer (mix of red and green).
And why a **depth** layer with one channel, **depth.z**, will look red.
Okay, back to working with channels:
### Keeping Only The Channels That You Use
To keep your script snappy and rendering quickly, it’s a good idea to actively manage the channels in your script.
Make a habit of using the **Remove**, **Shuffle**, and **Copy** nodes throughout your script in order to only pass through the channels that you need in your stream.
For example, once you have rebuilt your CG beauty you can remove the shading components and/or light groups from the stream.
Using a Remove node with the operation set to *keep*, you can for example select to only keep **rgba**, the **depth** pass, and the **motion vector** pass. (If you have multiple **DI mattes**, you can shuffle them back in with a Shuffle node).
When you then apply a **ZDefocus** or **VectorBlur**, these heavy nodes will not process multiple unnecessary channels (if the nodes are set to affect *all* channels - as is the default).
And after you’ve added those heavy nodes, remove the depth and motion vector passes, and only pass through the rgba and any DI mattes.
Doing this will help you avoid ending up with a bloated layer list downstream, which can bog down your script.
### Affecting Only The Necessary Channels
Imagine you have a CG render with 30 layers and you connect a Defocus (all) node to it and increase the defocus.
Nuke will then process all of those layers and defocus each channel. If you only actually needed to defocus the RGBA channels, that’s a lot of wasted processing. Not only will that slow down your script, it will also slow down your rendering.
When adding nodes like this, which by default affect all of the channels, make a judgement call if changing the *channels* setting in the properties panel from *all* to for example *rgba* is a better option.
Even when you only keep the channels you use, like advised earlier, there will often be times where affecting them all is unnecessary, or even detrimental.
### Visual Channel Indicators
Nuke's interface actually shows you which channels are being processed, in a couple of places.
– Which is useful for keeping track of channels in your composite.
The first place is on the nodes themselves:
#### Node Decorators
Nodes have coloured rectangular tiles along the bottom edge to indicate which channels or layers are being processed and output.

[*Node decorators*](https://www.nukepedia.com/written-tutorials/nuke-node-decorators-and-indicators?ref=keheka.com)*.*
A wide rectangle means that the corresponding channel or layer is being processed by the node, and a slim rectangle means that it’s being passed through untouched.
The colour of the rectangle corresponds to specific channels or layers. Reading from left to right:
- **Red**: red channel
- **Green**: green channel
- **Blue**: blue channel
- **White**: alpha channel
- **Purple**: depth
- **Pink**: motion vectors
- **Cyan**: forward vectors
- **Yellow**: backward vectors
- **White (again**): UVs
- **Dark green**: auxiliary layers/channels, i.e. any other layers/channels than those listed above.
#### Viewer List
Additionally, if you look in the lower left corner of the Viewer, there is a list of the currently available channels – at the point in your stream where the Viewer node is connected.

*Channel list in the Viewer.*
A quick glance here will tell you if you have any superfluous channels in your stream.
### Bonus Channels
Some nodes output new channels by default, like the **ScanlineRender** node which outputs motion vectors and depth.
Sometimes that’s useful, but it’s not always needed. Keep an eye out for unnecessary channels being added to the stream when you composite, by using the indicators mentioned above, and trim them as needed.
### Creating Custom Channels
You can create your own custom channels in Nuke.
This is useful for many things, for example when you want to pass a particular matte through your stream without changing the alpha channel.
When separated into a custom layer and channel, the matte will still be affected by your compositing, such as transformations, 3D projections, defocus, lens distortion, etc.
💡
– Provided that you (where applicable) set those nodes to process that particular channel (or **all* channels) in the **channel* selection drop-down menu in their properties panel.
In order to create a custom channel for your matte, you can use for example a Copy node or a Shuffle node.
Copy or shuffle the alpha into a new layer by selecting *new* in the *channel* selection drop-down menu.

*Creating a new layer and channel.*
Then, give the layer and channel a name, like so:
*layer.channel*
– where *layer* is the layer name and *channel* is the channel name.

*Naming the new layer and channel.*
You can name your layers and channels pretty much anything you like, but try to be descriptive;
*windows.matte* is a good name because it says exactly what it is, in the name. You can be more granular if needed: *upperWindows.matte*.
💡
When creating layers and channels, keep in mind that Nuke's interface is designed to show max four channels per layer, e.g. RGBA.
**Please note:**
You’ll have to make sure that any holdouts which you apply to your stream **also** affect your custom layer (if they should). Because by default, a Merge or ChannelMerge node will only affect *rgba*.
You can do this by adding a second Merge or ChannelMerge node after the first one and choosing to stencil/mask the custom layer/channel by the holdout matte and outputting the (now held out) custom layer/channel.


*Holding out a custom matte in your stream.*
## Order Of Operations
When compositing in Nuke, strive to keep the image fidelity intact, and to reduce the risk of breaking your composite with any further changes (e.g. addressing notes).
In order to achieve that, there are several things you can (and should) do:
### Concatenating Transformations
Many of the operations that you perform on an image will apply some sort of filtering to it.
Meaning, the output won’t be as sharp as the input - it gets a little bit softer each time.
That’s because when you make a change to a pixel in your image, that change often relies on the surrounding pixels.
If you translate the image 0.5 pixels to the right, for example, Nuke has to 'make up' new pixel values by averaging between the existing ones.
If you’re not careful about the order in which you’re applying these operations, the image will get softer and more pixelated at each step of the way.
That’s where concatenation comes in.
When you perform various transformations to your image, stack the concatenating nodes ([list here](https://learn.foundry.com/nuke/content/comp%5Fenvironment/transforming%5Felements/node%5Fconcatenation.html?ref=keheka.com)) one after another, without any non-concatenating nodes in between.
That way, only a single filter hit will be applied to your image, determined by the filtering method that’s set in the properties of the **last node in the concatenating stack**.
💡
When concatenating nodes, Nuke combines multiple transformations into one operation and only filters the image once. As filtering unavoidably destroys some image detail, it’s important to concatenate as many nodes as possible in order to preserve the image quality.

*Stack transformation nodes to achieve concatenation.*
### Reformatting First
Often, you’ll be working with half resolution CG renders, or 2D elements in a different format to your project format.
When you do, always reformat them to the full resolution format before continuing working with them.
💡
Treat all renders and elements as if they were full resolution. However, AOVs such as Cryptomattes or other data passes can break when using the standard cubic filtering. Reformat those separately using the **impulse* filter.
That way, you can swap in the full resolution renders later on, and your composite won’t break. All the masking and other work will still line up as expected.
And, you’ll adhere to the *Show What You’re Merging* rule that we saw earlier.
### Masking In The Right Places
Let’s say that you’re compositing a 2D smoke element into your scan, and you mask it behind a building.
If you get a note to move the smoke a little bit higher up in frame, that transformation would need to happen *before* your masking.
Otherwise, the holdout will follow along and become misaligned with the building.
On the other hand, if you stencilled out something from the element itself, like a part of a smoke machine that got caught in the key, the aforementioned transformation would need to happen *after* that particular mask.
Otherwise, your mask would no longer line up to cut out the smoke machine.
So it’s important to account for transformation changes both ways.
When you are compositing a 2D element with your scan, and holding out a part of the scan from the 2D element, any masking that you do should go after these operations on the element:
- Transformation
- Reformat
- Defocus
- Motion blur
- Lens distortion
💡
Similarly, any lightwrapping and edge blending with the scan should **also* go after the above operations, in order to stay aligned with the scan.
### Grading In The Right Order
When doing grading work to match up for example a CG render, matte painting, or element to your scan, the order of the grading matters.
Once you match the black levels, avoid doing any more grading work downstream. Otherwise, you can accidentally mess up your black levels.
💡
Setting the black levels should be the ****last grading operation**, and all other grading operations should be placed upstream of that.
### Preparing For Likely Changes
When building your composite, structure it in a way that lets you make changes easily without having to redo large sections of your script.
*Masking In The Right Places*, which we saw earlier, is a great example of that. But also, anything else that is likely to change should be standardised so that the comp won't break by the change.
For example, when making a template script for a sequence of similar shots, try to avoid doing bespoke 2D matchmoving and roto work. Instead, build a more flexible setup with Cards and a Camera.
When copying the setup across to another script, you’ll then be able to swap out just the camera, and have it all line up correctly.
Similarly, when grading CG renders, use Cryptomattes and Position mattes instead of manually rotoscoping masks.
💡
Make things in a procedural way, which will directly copy across to another shot, and/or which will make making changes to your setup as easy as possible.
### Regraining Once
Avoid regraining each element of your composite individually.
That would require a lot of grain nodes, and slow down your script.
Instead, build up a combined grain matte (for example in the B-pipe’s alpha channel), and use it to regrain all of the elements in one go at the end – using one grain node.
💡
[DasGrain](https://www.nukepedia.com/gizmos/other/dasgrain?ref=keheka.com) is probably **the* best grain tool for Nuke.
## Keeping Track Of Geometry
Quick tip: Disable or remove any **ReadGeo** nodes that you’re not using in your script.
Geometry can slow down your script, even if it’s disconnected from your composite.
## Saving ToolSets
Make sure to save setups that you find yourself recreating often, or that you think will be useful in the future.
The easiest way to do this is to use the **ToolSets** feature in Nuke.
Select all the nodes in your setup, and click on the **ToolSets** menu (the **wrench icon** in the Toolbar) → **Create**.
Then, choose a name for your setup and hit **Create**. Now, your setup has been saved locally on your machine in the **\\.nuke\\ToolSets** folder, and you can access it anytime you like.
💡
If you want to organise your ToolSets into sub-folders, you can either create new folders inside the ****\\.nuke\\ToolSets** folder, and then when you create a ToolSet in Nuke, select which sub-folder to save the ToolSet to in the drop-down menu. Or, you can create a sub-folder directly when you save the ToolSet in Nuke, by naming it