Knob Types

This monster of a page presents all the knobs a NUKE op is capable of creating, both by their ID and usage area. For a great example of most of them, check out the KnobParade example. The Knobs Introduction covers a number of factors to take into account when creating instances of these knobs.

Knobs By ID

ID Call(s) UI & Notes Widget
0 No param panel or viewer widgets.  
1 ../_images/String_knob.png  
2 ../_images/File_knob.png ../_images/Write_File_knob.png  
3 ../_images/Int_knob.png ../_images/MultiInt_knob.png  
4 ../_images/Enumeration_knob_open.png  
5 ../_images/Bitmask_knob.png  
6 ../_images/Bool_knob.png  
7 ../_images/Double_knob.png  
8 ../_images/Float_knob.png ../_images/MultiFloat_knob.png  
9 ../_images/Array_knob.png  
10 ../_images/ChannelSet_knob_open.png ../_images/ChanneMask_knob_open.png ../_images/Input_ChannelSet_knob_open.png ../_images/Input_ChannelMask_knob_open.png  
11 ../_images/Channel_knob_open.png ../_images/Input_Channel_knob_open.png  
12 ../_images/XY_knob.png ../_images/XY_knob_widget.png
13 ../_images/XYZ_knob.png  
14 ../_images/WH_knob.png  
15 ../_images/BBox_knob.png ../_images/BBox_knob_widget.png
16
Obsoleted by 17
Was Size_knob.  
17 ../_images/Format_knob.png  
18 ../_images/Color_knob.png  
19 ../_images/AColor_knob.png  
20 ../_images/Tab_knob.png ../_images/BeginGroup.png ../_images/BeginClosedGroup.png  
21 Param panel and viewer widget dependent on custom knob implementation.  
22 ../_images/PyScript_Button.png  
23
Obsoleted by 28
Was Text_editor_knob.  
24 ../_images/Transform2d_knob.png ../_images/Transform2d_knob_widget.png
25 ../_images/Spacer.png  
26 ../_images/Text_knob.png ../_images/Divider.png  
27 ../_images/Help_knob.png  
28 ../_images/Multiline_String_knob.png  
29 ../_images/Axis_knob.png ../_images/Axis_knob_widget.png
30 ../_images/UV_knob.png  
31 ../_images/Box3_knob.png ../_images/Box3_knob_widget.png
32 ../_images/Button.png ../_images/Script_Button.png  
33 ../_images/LookupCurves_knob.png  
34
n/a
Was Tooltip_knob.  
35 ../_images/Pulldown_knob_open.png  
36 ../_images/Eyedropper_knob.png  
37 ../_images/Range_knob.png  
38 ../_images/Histogram_knob.png  
39 ../_images/Keyer_knob.png  
40 ../_images/ColorChip_knob.png  
41 Inherits param panel/widgets of ‘linked’ knob.  
42 ../_images/Scale_knob.png  
43
Multiline_Eval_String_knob()
../_images/Multiline_String_knob.png  
44 ../_images/OneView_knob.png  
45 ../_images/MultiView_knob.png  
46 ../_images/ViewView_knob.png  
47 ../_images/PyPulldown_knob_open.png  
48
GPUEngine_knob
WIP. Do not use.  
49
MultiArray_knob
Generally Table_knob is a better choice.  
50 ../_images/ViewPair_knob.png  
51 ../_images/List_knob.png  
52 Allows Python interface. Not for c++ use.  
53 ../_images/Metadata_knob.png  
54 ../_images/PixelAspect_knob.png  
55
CP_knob
Obsolete. Do not use.  
56 ../_images/BeginToolbar.png  
57 ../_images/BeginTabGroup.png  
58
n/a
Allows Python interface. Not for c++ use.  
59 No interface per se. Wraps group members and presents on all tabs.  
60 ../_images/Menu_knob_open.png  
61 ../_images/Password_knob.png  
62
Toolbox_knob
WIP. Do not use.  
63 ../_images/Table_knob.png  
64 No direct interface. See viewer/GeoOp geoselect functionality.  
65 ../_images/InputOnly_ChannelSet_knob.png ../_images/InputOnly_ChannelMask_knob.png  
66 ../_images/InputOnly_Channel_knob.png  
67
ControlPointCollection_knob
WIP. Do not use.  
68 ../_images/CascadingEnumeration_knob_open.png  
69 ../_images/Dynamic_Bitmask_knob_open.png  
70 ../_images/MetaKeyFrame_knob.png  
71 ../_images/PositionVector_knob.png ../_images/PositionVector_knob_widget.png
72 ../_images/Cached_File_knob.png  
73
TransformJack_knob
WIP. Do not use.  
74 ../_images/Ripple_knob.png  

Knobs By Type & Call

Abstract Numeric Data

The base form of knobs, these are useful for storing any form of data without implying a particular usage. Many more specialised knobs inherit from these base classes, in particular Array_knob.

Int_knob

Stores: int
Proxy adaptive: no
Notes: Presents just a numeric input box. No slider presented by default, animation menu in a right click only (no button)
../_images/Int_knob.png

Float_knob

Stores: float or double
Proxy adaptive: no
Notes: Both float and double varieties available. Presents a numeric input box and a linear slider with animation menu button.
../_images/Float_knob.png

Double_knob

Stores: double
Proxy adaptive: no
Notes: Same as calling Float_knob with a double pointer, so essentially obsolete, but still usable.
../_images/Double_knob.png

UV_knob

Stores: 2 floats or doubles as array
Proxy adaptive: no
Notes: Presents two numeric input boxes, with hardcoded ‘u’ and ‘v’ sublabels, plus an animation menu button. If you’re looking to get arbitrary sub-labels you’ll likely want to use a combination of two instances of Float_knob with sliders and startline switched off, plus an initial Text_knob.
../_images/UV_knob.png

Array_knob

Stores: ConvolveArray (as provided by Convolve.h) storing an arbitrary width and height matrix of floats.
Proxy adaptive: no
Notes: ConvolveArray contains methods for sizing the array. It can also be sized dynamically on creation by passing values in a ‘from_script’ fashion. For example, if you create the KnobParade example passing ‘Array_knob { { 0 1 2 } { 3 4 5 } }’ you’ll get an array knob of 3x2, with the appropriate values filled in. See your install’s toolbars.py (found in your nukescripts directory) to see how a python panel script is used to provide the dynamic sizing on node creation for the Matrix entry.
../_images/Array_knob.png

MultiInt_knob

Stores: Arbitrary number of ints as array.
Proxy adaptive: no
Notes: Takes the array dimension as an argument on construction. As with Int_knob it has numerical entry boxes with animation embedded in right click.
../_images/MultiInt_knob.png

MultiFloat_knob

Stores: Arbitrary number of doubles or floats as array.
Proxy adaptive: no
Notes: Takes the array dimension as an argument on construction. Presents numerical entry boxes for each member.
../_images/MultiFloat_knob.png

Color

Color knobs, as you might suspect from the name, allow storage and present interfaces to data to be treated as colors.

Color_knob

Stores: 3 doubles or floats as array.
Proxy adaptive: no
Notes: Stores color values at either double or float precision. Initially shows a single entry box and slider, plus a button to split to 3 entry boxes, a button to pop up the NUKE color wheel and a swatch showing the current colour plus an eyedropper for sampling. The colour swatch is looked up through the root monitor LUT to present an interface representation in a familiar colour space.
../_images/Color_knob.png

AColor_knob

Stores: 4 doubles or floats as array.
Proxy adaptive: no
Notes: As with Color_knob, but stores and allows editing of a fourth value, representing alpha. Alpha is not represented in the swatch.
../_images/AColor_knob.png

ColorChip_knob

Stores: unsigned int.
Proxy adaptive: no
Notes: Presents a button which pops up the NUKE color wheel when clicked. Stores selected color bytes as rrggbb00. Generally used for allowing selection of interface colors. To get floating point equivalent, ie unpack the stored color, use from_sRGB().
../_images/ColorChip_knob.png

String

String knobs present a variety of interfaces to the lowly char* pointer or std::string.

String_knob

Stores: char* or std::string.
Proxy adaptive: no
Notes: Single line text field, either as a char* or a std::string.
../_images/String_knob.png

File_knob

Stores: char*.
Proxy adaptive: no
Notes: As with String_knob, except no std::string option. Presents a string plus a button which launches the NUKE file chooser. Optionally you can supply a FileKnob_Type which filters the files shown, as per the default and optionally customised, rules.
../_images/File_knob.png

Cached_File_knob

Stores: char*.
Proxy adaptive: no
Notes: As with Cached_File_knob, adding a drop down which, depending on setting, will allow NUKE to locally cache files on a network storage device.
../_images/Cached_File_knob.png

Read_File_knob

Stores: char* or std::string.
Proxy adaptive: no
Notes: As with File_knob, adding a std::string option and requiring implementation of ReadFileKnobOwner. Not generally recommended (due to complexity of implementation), but may be useful in more esoteric situations.

Write_File_knob

Stores: char* or std::string.
Proxy adaptive: no
Notes: As with File_knob, adding a std::string option and dual storage which switches dependant on current proxy mode.
../_images/Write_File_knob.png

MultiLine_String_knob

Stores: char*.
Proxy adaptive: no
Notes: A text field for multiple lines of text with scroll bars.
../_images/MultiLine_String_knob.png

Password_knob

Stores: char*.
Proxy adaptive: no
Notes: Similar to String_knob, without std::string implementation, and which displays a bullet character for every text element typed in. Note this stores in plain text, so is generally advisable for use in python panels and other transitional implementations, as opposed for NDK based ops.
../_images/Password_knob.png

Selection

Checkboxes and more.

Bitmask_knob

Stores: unsigned int.
Proxy adaptive: no
Notes: Series of labelled checkmarks. Each checkmark will set one bit in the output integer (ie the first checkbox sets bit 1, second checkbox sets bit 2 and so on). Pass a static const char* const for the labels themselves. Querying values can be achieved by defining field bits and ANDing them with the int. Be wary of labelled as ‘r’, ‘g’, ‘b’ as you’re liable to end up with unexpected label coloring.
../_images/Bitmask_knob.png

Bool_knob

Stores: bool.
Proxy adaptive: no
Notes: Single checkbox with label to the right and no new line by default. Be wary of labelled as ‘r’, ‘g’, ‘b’ as you’re liable to end up with unexpected label coloring.
../_images/Bool_knob.png

Transforms

The transformation related knobs provide a series of interfaces around both 2d and 3d transforms, some of which automatically take into account the current state of NUKE’s proxy and downres mode to make usage nice and easy.

XY_knob

Stores: 2 doubles or floats as array.
Proxy adaptive: yes
Notes: Two numerical input boxes with hardcoded ‘x’ and ‘y’ labels, plus a draggable viewer handle. Optionally a parent XY_knob can be passed on construction, resulting in all values being relative to that parent, a viewer vector widget drawing between this position and the parent, and the stored value updating when the parent updates.
../_images/XY_knob.png ../_images/XY_knob_widget.png

XYZ_knob

Stores: 3 floats as array.
Proxy adaptive: no
Notes: Three numerical input boxes with hardcoded ‘x,’ ‘y,’ and ‘z’ labels, plus a draggable 3d viewer handle. Optionally a parent XYZ_knob can be passed on construction, resulting in all values being relative to that parent, a viewer vector widget drawing between this poistion and the parent, and the stored value updating when the parent updates.
../_images/XYZ_knob.png

WH_knob

Stores: 2 doubles or floats as array.
Proxy adaptive: yes
Notes: A single numerical input box with a slider and a button to switch to two numerical input boxes with hardcoded ‘w’ and ‘h’ labels. When stored the horizontal value is divided by the incoming format’s pixel aspect ratio, so if the user sees equal values, the result in the viewer is square.
../_images/WH_knob.png

BBox_knob

Stores: 4 doubles or floats as array.
Proxy adaptive: yes
Notes: Four numerical input boxes with a button to switch mode between x, y, r and t and x, y, w and h (ie bottom left x and y plus top right r and t or bottom left x and y plus the box’s width and height) with hardcoded labels. It also draws a box widget into the viewer with eight handles, to allow corner or edge dragging. When constructing the knob you can optionally pass an XY_knob as a parent, which’ll cause all stored values to be shown relative to that knob’s position.
../_images/BBox_knob.png ../_images/BBox_knob_widget.png

Format_knob

Stores: FormatPair (as defined in Format.h).
Proxy adaptive: no
Notes: Presents a single select drop down of all formats currently available in the script. FormatPair stores both full size and proxy adapted versions, and offers a useful ‘format()’ function for querying and setting the current script format list programmatically.
../_images/Format_knob.png

Box3_knob

Stores: 6 floats as array.
Proxy adaptive: no
Notes: Describes a cubic 3D volume using two 3D points. Presents 6 numerical entry boxes, with labels hardcoded to ‘x,’ ‘y,’ ‘n,’ ‘r,’ ‘t’ and ‘f’, where n stands for near, and f for far (sure you can guess the rest!).
../_images/Box3_knob.png ../_images/Box3_knob_widget.png

Scale_knob

Stores: 2 floats as array.
Proxy adaptive: yes
Notes: Presents a single numerical entry box with a slider, plus a button to flip the interface to two numerical interface boxes. Proxy scales to take into account differing aspect ratios between formats.
../_images/Scale_knob.png

PixelAspect_knob

Stores: double.
Proxy adaptive: yes
Notes: Same as a Float_knob in double only variety, which proxy scales to take into account differing aspect ratios between formats.
../_images/PixelAspect_knob.png

PositionVector_knob

Stores: 6 floats as array.
Proxy adaptive: no
Notes: Presents six numerical entry boxes in two lines, labelled ‘from’ and ‘to,’ each with three boxes with labels ‘x,’ ‘y’ and ‘z.’ Additionally presents two 3d positions joined by arrow widget in 3d viewer.
../_images/PositionVector_knob.png ../_images/PositionVector_knob_widget.png

Transform2d_knob

Stores: Matrix4 (provided by Matrix4.h).
Proxy adaptive: user definable.
Notes: Describes an affine transform. Presents a number of lines of multiple instances of Float_knob, as well as a 2d transform jack in the viewer. By default the child knobs are created with their own names, however if you append ‘_’ to your knob name each child knob with append their names to this, allowing multiple Transform2d_knobs on a single node. Additionally a type can be passed on construction, allowing a range of behaviours.
../_images/Transform2d_knob.png ../_images/Transform2d_knob_widget.png

Axis_knob

Stores: Matrix4 (provided by Matrix4.h).
Proxy adaptive: no
Notes: Describes a 3D, 6 degrees of freedom, transformation. Presents a number of lines of multiple instances of Float_knob, as well as a 3d transform jack in the viewer. By default the child knobs are created with their own names, however if you append ‘_’ to your knob name each child knob with append their names to this, allowing multiple Axis_knobs on a single node.
../_images/Axis_knob.png ../_images/Axis_knob_widget.png

Buttons

Buttons galore. Execute c++, python and tcl.

Button

Stores: No storage.
Proxy adaptive: no
Notes: Presents a push button which does not start a new line by default. No data storage, so you have to implement knob_changed() and check for the button’s name to make it perform the desired action.
../_images/Button.png

Script_knob

Stores: No storage.
Proxy adaptive: no
Notes: Presents a push button which does not start a new line by default. No data storage, but executes a passed string of TCL inside of NUKE’s TCL scripting environment with this knob as ‘context’ so that relative names work.
../_images/Script_button.png

PyScript_knob

Stores: No storage.
Proxy adaptive: no
Notes: Presents a push button which does not start a new line by default. No data storage, but executes a passed string of Python inside of NUKE’s Python scripting environment with this knob as ‘context’ so that relative names work.
../_images/PyScript_button.png

Lists

Presenting arbitrary data in a tidy, accessible form.

List_knob

Stores: std::vector of std::vectors of std::strings.
Proxy adaptive: no
Notes: Outer vector defines each row, inner vector a series of string columns. Generally Table_knob is a better option.
../_images/List_knob.png

Table_knob

Stores: Manages own storage.
Proxy adaptive: no
Notes: Presents an editable table of a variety of entry types. Interface is managed through TableKnobI.h methods.
../_images/Table_knob.png

Channels

Channel and ChannelSet selection lists.

ChannelSet_knob

Stores: ChannelSet (as defined in ChannelSet.h).
Proxy adaptive: no
Notes: Presents a drop down list of the current channelsets in the script with those not in the incoming stream in the ‘other’ sub menu, and offering a ‘new’ entry to allow creation of new channel sets.
../_images/ChannelSet_knob_open.png

ChannelMask_knob

Stores: ChannelSet (as defined in ChannelSet.h).
Proxy adaptive: no
Notes: Same as ChannelSet_knob. Legacy, recommend use of ChannelSet variety.
../_images/ChanneMask_knob_open.png

Input_ChannelSet_knob

Stores: ChannelSet (as defined in ChannelSet.h).
Proxy adaptive: no
Notes: As ChannelSet_knob, but on construction allows an input index to be defined from which the current vs ‘other’ entry menu is taken. Also has an ‘all’ menu entry.
../_images/Input_ChannelSet_knob_open.png

Input_ChannelMask_knob

Stores: ChannelSet (as defined in ChannelSet.h).
Proxy adaptive: no
Notes: Same as Input_ChannelSet_knob. Legacy, recommend use of ChannelSet variety.
../_images/Input_ChannelMask_knob_open.png

Channel_knob

Stores: 1 to 4 Channels (as defined in Channel.h) as an array.
Proxy adaptive: no
Notes: Presents a drop down list of the current channels in the script, plus a ‘none’ entry and a ‘new’ entry allowing creation of extra channels.
../_images/Channel_knob_open.png

Input_Channel_knob

Stores: 1 to 4 Channels (as defined in Channel.h) as an array.
Proxy adaptive: no
Notes: Similar to Input_Channel_knob, but presents the channel list as channelsets listed by the presence in the incoming stream, as with Input_ChannelSet_knob.
../_images/Input_Channel_knob_open.png

InputOnly_ChannelSet_knob

Stores: ChannelSet (as defined in ChannelSet.h).
Proxy adaptive: no
Notes: Presents a drop down list of only the current channelsets present in the defined incoming stream.
../_images/InputOnly_ChannelSet_knob.png

InputOnly_ChannelMask_knob

Stores: ChannelSet (as defined in ChannelSet.h).
Proxy adaptive: no
Notes: Same as InputOnly_ChannelSet_knob. Legacy, recommend use of ChannelSet variety.
../_images/InputOnly_ChannelMask_knob.png

InputOnly_Channel_knob

Stores: 1 to 4 Channels (as defined in Channel.h) as an array.
Proxy adaptive: no
Notes: Presents a drop down list of only the current channels present in the defined incoming stream.
../_images/InputOnly_Channel_knob.png

Views

Access multiple views.

OneView_knob

Stores: int
Proxy adaptive: no
Notes: Presents a single select drop down list of the current views present in the script. The int stored can be related to the view names (and indeed, used to initialise the int as desired) via the outputContext() structure’s view related methods. Views are numbered from 0, where 0 is a special case ‘default’ view which is used as parent storage for all unsplit knobs.
../_images/OneView_knob.png

MultiView_knob

Stores: std::set of ints
Proxy adaptive: no
Notes: Presents a multi select drop down list of the current views present in the script. The ints stored in the std::set can be related to the view names (and indeed, used to initialise the int as desired) via the outputContext() structure’s view related methods. Views are numbered from 0, where 0 is a special case ‘default’ view which is used as parent storage for all unsplit knobs.
../_images/MultiView_knob.png

ViewView_knob

Stores: std::set of std::pairs of an int with an int.
Proxy adaptive: no
Notes: Presents a ‘patch bay’ type interface allowing the user to specify a relationship between pairs of views. The ints stored in the std::pairs can be related to the view names (and indeed, used to initialise the int as desired) via the outputContext() structure’s view related methods. Views are numbered from 0, where 0 is a special case ‘default’ view which is used as parent storage for all unsplit knobs.
../_images/ViewView_knob.png

ViewPair_knob

Stores: std::pair of an int with an int.
Proxy adaptive: no
Notes: Presents a pair of single select drop down lists of the current views within the script, and represent a relationship between two views. The ints stored in the std::pair can be related to the view names (and indeed, used to initialise the int as desired) via the outputContext() structure’s view related methods. Views are numbered from 0, where 0 is a special case ‘default’ view which is used as parent storage for all unsplit knobs.
../_images/ViewPair_knob.png

Layout

Knobs to let you lay out your controls in a sensible and accessible fashion.

Tab_knob

Stores: No data storage
Proxy adaptive: no
Notes: Starts a new Tab in the parameter panel (resets BeginGroup hierarchy to zero as well). By default, without an initial Tab declaration the first tab on a node inherits its name from the node itself. Declaring one up front, before any other knobs will, rather than adding an extra tab after this first one, simply rename it as desired. Tab_knobs allow controls to be grouped according to logical delineation. It’s generally best practise to put the most commonly used controls up front and lesser used ones on subsequent panels. For knobs which, whilst being lesser used, still need to be altered within the context of the primary controls then BeginGroup/EndGroup or BeginClosedGroup/EndGroup may be a better choice. If you have the situation where with in a page there’s a set of controls which can be divided into logical groups then BeginTabGroup/EndTabGroup may be applicable.
../_images/Tab_knob.png

BeginGroup/EndGroup

Stores: No data storage.
Proxy adaptive: no
Notes: BeginGroup and EndGroup will wrap any intervening knobs in a (by default open) twirly. This allows the user to spin up or down the contents to minimise screen real estate used. Generally recommended for more indepth controls access to which is not required for every Op application, but which altering which should be done in reference to other (ie outside of group, but on the same tab) knobs. For knobs which are of less frequent application then BeginClosedGroup/EndGroup may be more applicable, and for situations where the knobs in the group have no requirement for being altered within the context of other controls outside of the group then check out Tab_knob.
../_images/BeginGroup.png

BeginClosedGroup/EndGroup

Stores: No data storage.
Proxy adaptive: no
Notes: Similar to BeginGroup/EndGroup, but presents wrapped knobs inside a twirly which is by default closed.
../_images/BeginClosedGroup.png

Text_knob

Stores: No data storage.
Proxy adaptive: no
Notes: Presents as user defined text on the param panel, which does not start a new line by default. Note this can be used between knobs by clearing the start line flag on the subsequent knob.
../_images/Text_knob.png

Named_Text_knob

Stores: No data storage.
Proxy adaptive: no
Notes: Same as Text_knob, but allows a name to be passed on creation, from which the knob object can later be accessed.
../_images/Text_knob.png

Spacer

Stores: No data storage.
Proxy adaptive: no
Notes: Presents as a empty horizontal gap between whatever knobs are on either side. In most circumstances you’ll need to clear the start line flag on the subsequent knob to prevent it line feeding and thus doing away with any effect from the spacer itself.
../_images/Spacer.png

Newline

Stores: No data storage.
Proxy adaptive: no
Notes: Line feeds the knobs. Used to force a new line for knobs which don’t do this by default (alternatively you can use the STARTLINE knob flag).
../_images/Newline.png

Divider

Stores: No data storage.
Proxy adaptive: no
Notes: Presents as a line drawn across the knob parameter panel and an optional text label. Used to split the controls into logical groupings.
../_images/Divider.png

Help_knob

Stores: No data storage.
Proxy adaptive: no
Notes: Presents a button with a ? label, which when clicked pops up a help line. Generic help info should go in the Op’s help text return, and knob specific help in the respective knob’s tooltip, but this can be useful in circumstances where you have a grouping of controls which may require extra explanation.
../_images/Help_knob.png

BeginTabGroup/EndTabGroup

Stores: No data storage.
Proxy adaptive: no
Notes: Allows a specific region of a panel to be split into multiple tabs. Requires use of Tab_knob between the Begin and End calls to setup the set of tabs, with all knobs falling after a tab declaration appearing on that panel.
../_images/BeginTabGroup.png

BeginExoGroup/EndExoGroup

Stores: No data storage.
Proxy adaptive: no
Notes: Presents the wrapped knobs on every Tab of the Op’s param panel (ie an extra-tabular group). Does not provide a twirly (either open or closed), so this may need to be your first wrapped knob.

Has no interface as such, as it simply wraps the controls encompassed and presents them on all tabs.

BeginToolbar/EndToolbar

Stores: No data storage.
Proxy adaptive: no
Notes: Presents the wrapped knobs on a toolbar positioned on one side of the viewer (chooseable when creating the BeginToolbar knob). The user is able to collapse the toolbar using the small arrowheads positioned at either end, similar to native Viewer toolbars. The toolbar is only presented when the Op param panel is open, and is only suitable for a subset of the knob types available dependent on whether the toolbar in question is horizontal or vertical. Generally, vertical toolbars are only really suitable for Buttons with the SMALLUI flag set, whilst horizontal toolbars can have a wider set, including numerical entry boxes, sliders and a variety of drop downs.
../_images/BeginToolbar.png

Specialist

Knob odds and sods; some very useful, some more esoteric.

LookupCurves_knob

Stores: LookupCurve (as defined by LookupCurves.h).
Proxy adaptive: no
Notes: Presents a curve interface with an arbitrary number of curves included. The curve editor interface can be flagged on construction as a particular type, to allow drawing of colored swatches and curves, or to alter curve behaviour. Implementing and using such a knob can be a little more involved than most of the others covered thus far, and so both the KnobParade and ColorLookup examples provide an insight into this knob in action. The LookupCurve provides the core of the tool, being constructed from a CurveDescription which defines the default curves, names, tooltips and more.
../_images/LookupCurves_knob.png

Histogram_knob

Stores: Histogram_Data (as defined by HistogramKnob.h).
Proxy adaptive: no
Notes: Presents a read only histogram graph interface with two sets of data (in most cases representing in and out). See the KnobParade example for a sample of how to populate the data struct. Note that this is the only knob which does not take ownership of the data pointer passed, and requires a reference count decrement call in the Op destructor to allow the data to be freed when no longer used.
../_images/Histogram_knob.png

Eyedropper_knob

Stores: 8 floats as an array.
Proxy adaptive: no
Notes: Presents a color swatch, which when clicked results in an eye dropper color sampling interface become active, operating via the standard NUKE sampling hotkeys. This allows both point and area sampling, and the color swatch draws in a monitor LUTed representation of the underlying stored value. The first 4 floats represent the color picked, and the second set of 4 represent the x, y, r and t of the box from which the sample was taken.
../_images/Eyedropper_knob.png

Range_knob

Stores: An arbitrary number of doubles or floats as an array.
Proxy adaptive: no
Notes: Presents a single slider along with an arbitrary number of numerical entry boxes. Note that the slider handles are unable to cross over each other, so the floats have to be sequential and sorted.
../_images/Range_knob.png

Keyer_knob

Stores: 4 doubles as an array.
Proxy adaptive: no
Notes: Presents a trapezoid graph shape, with corners defined by the data values. Used in the Keyer node and generally not recommended elsewhere.
../_images/Keyer_knob.png

MetaData_knob

Stores: Manages internal data storage.
Proxy adaptive: no
Notes: Presents a read only list of all the metadata found on the incoming data stream. For an editable interface you’ll have to specialise a Table_knob.
../_images/MetaData_knob.png

MetaKeyFrame_knob

Stores: Manages internal data storage.
Proxy adaptive: no
Notes: Presents a keyframing interface as found in the roto, gridwarp and similar nodes. It is used to define animations on top of a complex series of underlying knobs and data. The knob should be controlled via its interface header MetaKeyFrameKnobI.h.
../_images/MetaKeyFrame_knob.png

Ripple_knob

Stores: Manages internal data storage.
Proxy adaptive: no
Notes: Presents a ripple keyframing interface as found in the roto and rotopaint nodes. It is used to define changes across a temporal range. The knob should be controlled via its interface header RippleKnobI.h.
../_images/Ripple_knob.png

Obsolete_knob

Stores: No data storage.
Proxy adaptive: no
Notes: Obsolete_knob is a mechanism for changing the name and action of knobs. Please see Versioning for an indepth discussion of its uses.

No interface presented.

GeoSelect_knob

Stores: Manages internal data storage.
Proxy adaptive: no
Notes: Presents a button interface on the viewer, and a series of selection based handles on 3d geometry. Creation of geoselect_knobs is not recommended, however GeoOp’s inherit one automatically (assuming you chain the Knobs call back to the GeoOp parent). This can be accessed using the name “geo_select” and addressed using the interface defined in GeoSelectKnobI.h

Python_knob

Stores: <dependent>
Proxy adaptive: no
Notes: Python_knob allows a set of Python bindings to be made against the underlying c++ data. See the PythonGeo example for a sample of this in action.

Custom_knob

Stores: <dependent>
Proxy adaptive: <dependent>
Notes: Allows construction of user defined knobs. These are able to store arbitrary data, present Qt interfaces on the param panel and/or OpenGL widgets in the viewer. See Creating custom knobs for more information.