I recently posted a little info in this vein on VFXNation (http://www.vfxnation.com/showthread.php/252-Multiview-setExpression%28%29?p=2196#post2196), as I found myself dealing with a similar case recently.
Basically the only reliable way to deal with split knobs (to my knowledge) for
the time being is to parse the knob’s .toScript() string. The code I wrote is
for seeing if a given node name is present in any expression links on a knob,
and if so, at which indices and views. Needless to say, it gets pretty indented
.
The rough code to check how many view curves exist for a knob is something like
this:
------------------------------------------
# Assumes the knob in question is assigned to ‘knob’
import re
fullViewsString = r’default\s\{|’ + ‘|’.join([r‘%s\s\{’ % v for v in
nuke.views()])
viewsRE = re.compile(‘(%s)’ % fullViewsString)
knobViews = [match.rstrip(‘ {‘) for match in viewsRE.findall(knob.toScript())]
------------------------------------------
‘knobViews’ will be a nice list of all the view curves that exist on that knob.
Just ignore the ‘default’ and you’ve got all the split views.
Hope this helps.
-Nathan
From: Howard Jones
Sent: Wednesday, March 30, 2011 2:33 PM
To: Nuke Python discussion
Subject: Re: [Nuke-python] more views than actual views
Thanks Nathan (and other Nathan)
One of the other things that is odd is that if you unsplit right it changes to
default rather than take the right's values which is counter intuitive.
I guess the question is if any body bothers splitting to this level. I'm coding
for it but it means things running more often to catch it.
Is there a way of checking if a knob has been split and to how far?
H
--------------------------------------------------------------------------------
From: Nathan Rusch <[email protected]>
To: Nuke Python discussion <[email protected]>
Sent: Wed, 30 March, 2011 16:42:41
Subject: Re: [Nuke-python] more views than actual views
Nuke always keeps a ‘default’ knob curve around when you start splitting knobs.
So if you split off your ‘left’ view, you’re creating curves for ‘left’ and
‘default,’ which, as you can imagine, everything else falls through to. Once
you split off ‘right,’ you’re up to 3 curves.
Why they let you split a knob into more components than there are views in your
script is a great question... I imagine there was a reason for it when they
designed it that way, but I have no idea if that reason is still valid or
applicable.
-Nathan
From: Howard Jones
Sent: Wednesday, March 30, 2011 12:56 AM
To: Nuke Python discussion
Subject: [Nuke-python] more views than actual views
Dear All.
Does anybody know why it is possible to end up with more curves per view than
there are views?
That is create a stereo project
split off a knob to left right,
you get 2 curves, knobs etc
knob.le
knob
split it again and you get
knob.le
knob.re
knob.*
the last one is an extra knob beyond the amount of views you have.
I can understand from a code pov why when you split knobs in the first place
you get
knob.le
knob
and not
knob.le
knob.re
but I cant understand the need for the extra view.
Is this a bug or clever behaviour.
It means btw if you want to know how many views are in a project you have to
add 1 to the result.
ie len(nuke.views()) is potentially 1 short unless its safe to ignore the extra
one.
Howard
--------------------------------------------------------------------------------
_______________________________________________
Nuke-python mailing list
[email protected]
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
--------------------------------------------------------------------------------
_______________________________________________
Nuke-python mailing list
[email protected]
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
<<wlEmoticon-openmouthedsmile[1].png>>
_______________________________________________ Nuke-python mailing list [email protected] http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python
