

This page relates to a previous version of NUKE and NUKEX. For information about the latest version, please see NUKE and NUKEX | Developers.
NUKE's open and flexible architecture provides a vast number of routes for customisation. This sub site provides further information on three of these, namely
NUKE's Python scripting engine concentrates mainly on interface and higher level node manipulation. It allows rapid development of everything from snippets to quickly alter the contents of multiple nodes' control panels, right up to integrating with external tools such as asset management software. Users of Python additionally benefit from a vast array of prebuilt modules (a.k.a Python's Batteries Included philosophy), including tools for XML reading, database access and much more.
Python is not suitable however for image, 3d and general low level data manipulation, due to lack of fine grained memory allocation control and poor threading.
For more information see the following resources:
The NDK is NUKE's low level C++ API. It allows building of everything from image process operators, through Deep ops, to custom Op types. Users of the NDK benefit from a range of convenience functionality, and a API tailored directly to NUKE.
The NDK does not allow external node tree access, so is not suitable for scripting style functionality (although it is able to separately call such). Since the API exports C++ symbols it changes between NUKE major.minor releases and thus often requires recompilation of derived operators.
For more information see the following resources:
The OFX API is an open C standard for visual effects plug-ins. It allows plug-ins written to the standard to work on any application that supports it, with hosts other than NUKE including tools such as Eyeon Fusion, Assimilate Scratch, FilmLight Baselight and more. The interface is designed to prevent symbols exported being changed between versions, and so prevents frequent recompilation being required by new host versions. It also avoids per application fragmentation of plug-in development and support.
OFX does not provide node tree access, so is not suitable for scripting style functionality, nor does it attempt to provide access to areas outside of conventional image processing operator requirements. It is generally suited to commercial image processing operator development.
For more information see the following resources: