Hi
There is funny workaround for this problem:
n = nuke.createNode("EdgeBlur")
a = n['quality']
knob = (n.name() + '.' + a.name())
print nuke.tcl('knob', '-t', knob)
Above code returns the knob's ID (in this case 3) defined as enum in Knobs.h:
enum {
OBSOLETE_KNOB = 0, // ignored when read from scripts
STRING_KNOB, // char* pointer
FILE_KNOB, // char* pointer, has file chooser
INT_KNOB, // int
ENUMERATION_KNOB, // popup list, sets int to index
BITMASK_KNOB, // int, one button for each bit
BOOL_KNOB, // checkbox
DOUBLE_KNOB, // double
FLOAT_KNOB, // float
ARRAY_KNOB, // 2Darray of floats for Convolve
CHANNEL_MASK_KNOB, // ChannelSet
CHANNEL_KNOB, // 1-4 Channel numbers
XY_KNOB, // 2 numbers for x,y position, draws crosshair
XYZ_KNOB, // 3 numbers for x,y,z position - not proxy scaled
WH_KNOB, // 1 or 2 numbers for width and height
BBOX_KNOB, // 4 numbers for x,y,r,t of a rectangle
SIZE_KNOB, // obsolete, same as FLOAT_KNOB
FORMAT_KNOB, // Store formats into the info_
COLOR_KNOB, // r,g,b
ACOLOR_KNOB, // r,g,b,a
TAB_KNOB, // start a new tab
CUSTOM_KNOB, // you called constructor yourself
PYSCRIPT_KNOB, // Button that runs a python script
TEXT_EDITOR_KNOB, // same as MULTILINE_STRING_KNOB
TRANSFORM2D_KNOB, // A 4x4 transformation matrix with a 2-d affine xform
SPACER_KNOB,
TEXT_KNOB, // helpful text caption
HELP_KNOB, // [?] button with helpful text
MULTILINE_STRING_KNOB, // multi-line text editor
AXIS_KNOB, // 3D 6-DOF transformation
UV_KNOB, // 2 numbers
BOX3_KNOB, // 2 3D points describing a 3D volume
SCRIPT_KNOB, // Button that runs a tcl script
LOOKUPCURVES_KNOB, // A set of lookup curves
TOOLTIP_KNOB, // Obsolete set-tooltip call!
PULLDOWN_KNOB, // A pulldown menu to run TCL scripts
EYEDROPPER_KNOB, // Eyedropper for color sampling and color averaging
from viewer
RANGE_KNOB, // A slider with multiple non-overlapping values
HISTOGRAM_KNOB, // GUI interface for Histogram function
KEYER_KNOB, // GUI interface to a trapezoid function
COLORCHIP_KNOB, // For picking a user-interface color
LINK_KNOB, // For soft linking a knob to another knob
SCALE_KNOB, // One or two numbers
MULTILINE_EVAL_STRING_KNOB, // Same as MULTILINE_STRING_KNOB
ONEVIEW_KNOB,
MULTIVIEW_KNOB,
VIEWVIEW_KNOB,
PYPULLDOWN_KNOB, // A pulldown menu to run Python scripts
GPUENGINE_KNOB,
MULTIARRAY_KNOB,
VIEWPAIR_KNOB,
LIST_KNOB,
PYTHON_KNOB,
METADATA_KNOB,
PIXELASPECT_KNOB,
CP_KNOB, // rappresent a roto curve control points
TOOLBAR_KNOB,
TABGROUP_KNOB,
PLUGIN_PYTHON_KNOB, // A user-created knob, with user-provided
python bindings.
EXOGROUP_KNOB,
MENU_KNOB, // A knob which provides a button that opens a menu.
PASSWORD_KNOB, // string_knob with password field
TOOLBOX_KNOB,
TABLE_KNOB,
GEOSELECT_KNOB,
INPUTONLY_CHANNEL_MASK_KNOB, // same as ChannelSet, but input only
INPUTONLY_CHANNEL_KNOB, // same as ChannelKnob, but inputs only
CONTROL_POINT_COLLECTION_KNOB,
CASCADING_ENUMERATION_KNOB, // same as ENUMERATION_KNOB but allows
cascading menus
DYNAMIC_BITMASK_KNOB,
META_KEY_FRAME_KNOB,
POSITIONVECTOR_KNOB,
CACHED_FILE_KNOB, // same as file knob but allows localisation
TRANSFORM_JACK_KNOB,
RIPPLE_KNOB,
LAST_KNOB
};
Best
Adrian
W dniu 2011-11-07 18:07:30 użytkownik Hugh Macdonald
<[email protected]> napisał:
Cheers Josh,
My hacky solution to this, as I know I'll only be doing this on gizmos, is
to call makeGroup() on it, and then call
writeKnobs(nuke.WRITE_USER_KNOB_DEFS) on it
, and parse the output, which includes the integer for the knob type...
Hugh
On 07/11/11 12:36, Josh Imbruglia wrote:
Hi Hugh,
It looks to me that they've done away wit the Int and Double knob
subclasses in 6.3. I believe the only way to know would be to query
the flags for the knob but i don't see a way to do that. If you test
the type of the values of both of the knobs they both return floats so
that's no indication either. So no I don't think there is currently a
way to decipher between an int and float knob in Nuke at the present
time.
Josh
On Sat, Nov 5, 2011 at 7:55 PM, Hugh Macdonald
<[email protected]> wrote:
Hi,
I'm trying to interrogate a node to find out more details of what its knobs
are... However, I'm currently finding that, for a number of different knob
types, I'm just getting Array_Knob as the class...
For example, try the following:
n = nuke.createNode("EdgeBlur")
print n['quality'].Class() # Should be Int_Knob, actually gives Array_Knob
print n['edge_mult'].Class() # Should be Double_Knob, actually gives
Array_Knob
Is this a bug? And does anyone know how I can get at the actual type of
these knobs...?
Cheers
Hugh Macdonald
nvizible–VISUAL EFFECTS
[email protected]
+44(0) 20 3167 3860
+44(0) 7773 764 708
www.nvizible.com
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python