### Navigation

- index
- next |
- previous |
- NDK Dev Guide »
- Welcome »

# Introduction

Welcome to the NUKE Developer Guide. This is intended for use with the bundled NUKE Developer Kit (or NDK), which allows writing and compilation of C++ plug-ins (essentially shared libraries) for use inside of NUKE. The Developer Guide is designed as a getting started walkthrough for many common areas of plug-in writing, from constructing your first simple PixelIop, through to the esoterics of particle behaviours, 3d ops and more. It is not intended to be a replacement for the class reference documentation provided as part of the NDK, but rather as a complementary document. It is also not intended as an introduction to C++, and will throughout assume a good working knowledge of the language. If you are coming to the NDK without a working knowledge of the language there are a wide variety of getting started texts available, in addition to Scott Meyers’ “Effective C++” and “Effective STL” for good practice guidelines.

Note

This guide, and the NDK as a whole, is not intended for plug-in writers looking to utilise the OpenFX (OFX) API. The OFX API is designed for commercial plug-in writers looking to write and compile a plug-in once and have them run across a number of hosts, and host versions. The NDK, on the other hand, offers a far greater degree of access to underlying NUKE functionality, but does require recompilation of plug-ins far more frequently due to API changes. The OFX API is documented on the OFX SourceForge site.

Note

Throughout this guide we’ll refer to NUKE. NUKE can be taken to mean either NUKE or NukeX, since NukeX is essentially the same package with options unlocked by different types of license.

## Pre-requisites

To develop NUKE plug-ins you will need:

- A working knowledge of C++.
- A compiler for your platform(s), set up as per Appendix A: Setting up Projects & Compilers
- A licensed up to date copy of NUKE (note the PLE version will not load non-bundled plug-ins - it must be a licensed version of NUKE or NukeX).

## How to Use This Guide

Using this guide effectively entirely depends on your current NDK knowledge level. Those with exposure to the API already should just be able to dip in and out to the sections covering their intended plug-in’s operating area. For those without previous exposure, the sections are laid out to follow the suggested reading order. Major plug-in areas also have exercises associated with them for those looking for a more ‘cookbook’ approach to aid in inhouse training. This guide does not replace the class reference documentation which appears alongside it. By referring to class reference and header files, plus experimenting with the examples provided, you should be able to gain an indepth knowledge of the areas introduced in this document.

All users should set up their compiler as per Appendix A: Setting up Projects & Compilers if they haven’t done so already, and follow along with the various examples as they are introduced.

Online versions of this guide can be found on the NUKE Developer site, and may be more up to date than this version, which was built on June 07, 2012.

## Info

NDK Developer Guide. Copyright © 2011 The Foundry Visionmongers Ltd. All Rights Reserved. Use of this Developer Guide and the NUKE software is subject to an End User License Agreement (the “EULA”), the terms of which are accessible in the NUKE User Guide included in the NUKE product bundle. This Developer Guide and the NUKE software may be used or copied only in accordance with the terms of the EULA. This Developer Guide, the NUKE software and all intellectual property rights relating thereto are and shall remain the sole property of The Foundry Visionmongers Ltd. (“The Foundry”) and/or The Foundry’s licensors.

The EULA can be read in the NUKE User Guide, Appendix E.

The Foundry assumes no responsibility or liability for any errors or inaccuracies that may appear in this Developer Guide and this Developer Guide is subject to change without notice. The content of this Developer Guide is furnished for informational use only.

Except as permitted by the EULA, no part of this Developer Guide may be reproduced, stored in a retrieval system or transmitted, in any form or by any means, electronic, mechanical, recording or otherwise, without the prior written permission of The Foundry. To the extent that the EULA authorizes the making of copies of this User Guide, such copies shall be reproduced with all copyright, trademark and other proprietary rights notices included herein. The EULA expressly prohibits any action that could adversely affect the property rights of The Foundry and/or The Foundry’s licensors, including, but not limited to, the removal of the following (or any other copyright, trademark or other proprietary rights notice included herein):

NUKE compositing software © 2011 The Foundry Visionmongers Ltd. All Rights Reserved.

NUKE is a trademark of The Foundry Visionmongers Ltd.

Digital Domain® is a registered trademark of Digital Domain, Inc.

In addition to those names set forth on this page, the names of other actual companies and products mentioned in this User Guide (including, but not limited to, those set forth below) may be the trademarks or service marks, or registered trademarks or service marks, of their respective owners in the United States and/or other countries. No association with any company or product is intended or inferred by the mention of its name in this User Guide.

Linux® is a registered trademark of Linus Torvalds.

Windows® is the registered trademark of Microsoft Corporation.

Mac, Mac OS, Tiger, Shake, Final Cut Pro and QuickTime are trademarks of Apple, Inc., registered in the U.S. and other countries.

Adobe® and Photoshop ® are either registered trademarks or trademarks of Adobe Systems Incorporated in the United States and/or other countries.

Maya® is a registered trademark of Autodesk, Inc., in the USA and other countries.

Houdini® is a registered trademark of Side Effects Software, Inc.

Boujou is a trademark of 2d3 Ltd.

3D-Equalizer is a trademark of Science.D.Visions.

FrameCycler® is a registered trademark of Iridas, Inc.

OpenGL® is a trademark or registered trademark of Silicon Graphics, Inc., in the United States and/or other countries worldwide.

RenderMan® is a registered trademark of Pixar. CineonTM is a trademark of Eastman Kodak Company.

The Foundry, 6th Floor, The Communications Building, Leicester Square, London, WC2H 7LT UK

With thanks to Anil Kokaram and Trinity College Dublin.

Written by (in no particular order): Vilya Harvey, Abigail Brady, Dan Ring, Jack Binks, Jon Wadelton & Michael Hughes

### Navigation

- index
- next |
- previous |
- NDK Dev Guide »
- Welcome »