SmartShuffle_AOV

A Nuke startup add-on that improves the default behavior of the native `Shuffle2` and legacy `Shuffle` nodes.
1. Copy the `SmartShuffle_AOV` folder into your Nuke user directory, next to the existing `init.py`.

2. Merge the contents of `INSTALL_SNIPPET.py.txt` into the existing `.nuke/init.py`.

3. Restart Nuke.
Example layout:

```text

.nuke/

init.py

SmartShuffle_AOV/

smart_shuffle_aov/

config/

tests/
code generated by CHATGPT.

First submitted: 3 November 2026

Author: ali rahbari

Compatible Nuke versions: 15.1 or later

Compatibility: Windows

## Color rules

Edit `config/aov_color_rules.json`:

- `rules` are evaluated from top to bottom. Put more specific rules before broad rules.

- `match_compact_any` matches normalized substrings (useful for studio abbreviations).

- `match_any_tokens` matches whole name tokens.

- `match_all_tokens` can require a token conjunction; it can be combined with `match_any_tokens`.

- `color` is six-digit RGB hex without `#`.

- `modifiers.direct` and `modifiers.indirect` change brightness without changing the family hue.

- `default_color` is used for `rgba`/`rgb`/`alpha`; `unknown_color` is used for unmatched custom layers.

Examples covered by the default rules:

| Layer | Category |

|---|---|

| `sss_direct_sky` | SSS |

| `coat_direct_key` | Coat |

| `diffuse_direct_rim` | Diffuse / Direct variant |

| `diffuse_indirect_rim` | Diffuse / Indirect variant |

| `eyeAOV_eyeSpcR` | Eye Specular |

| `reflection` | Reflection |

The words `sky`, `key`, `rim`, and `fill` are intentionally treated as light identifiers, not as the primary AOV family.

## Compatibility and limitations

- Targeted at Nuke 15.2 and 16; the code uses standard Nuke node/knob callbacks and PySide2/PySide6 `QTimer` imports.

- `Shuffle2` selector knob: `in1`.

- Legacy `Shuffle` selector knob: `in`.

- `tile_color` is packed as `RRGGBBAA`.

- The delayed create callback is a best-effort way to let Nuke finish auto-connection and selector refresh. If a Shuffle is created unconnected and connected much later, the `inputChange` notification may apply the default while the selector is still `rgba` (manual non-default choices remain untouched).

- If the selector does not expose a populated `values()` list, the fallback uses `source.channels()` order. That order is returned by Nuke, but Foundry's API docs do not promise that it exactly matches the UI menu ordering. The selector's `values()` method is therefore the preferred source.

- This package does not alter the image-processing mappings, render output, or channel data.

or register to download or rate.

Comments

or register to join the conversation.

Download Verification