Here: http://pastebin.com/ViZa5i9g
See if that helps. Cheers, Ivan On Thu, May 12, 2011 at 4:19 AM, Tahl Niran <[email protected]> wrote: > Sorry to dig this old thread up but... > > Did anyone come up with a nice script to actually set Rotopaint nodes to > be both Left and Right views ? > > ----------------------- Tahl Niran vfx compositor www.tahlniran.com > > > > > Subject: Re: [Nuke-python] rotopaint view left, right > > From: [email protected] > > Date: Thu, 23 Sep 2010 11:11:14 +1200 > > To: [email protected] > > > > > use pastebin.com if you have trouble with lost formatting, it's great! > > > > On Sep 23, 2010, at 1:59 AM, Michael wrote: > > > > > Some of the formatting was lost as I typed it in ... hopefully this > won't lose it. > > > > > > The first function (get_rotopaint_views) returns a list of the views > used ... run it with a print statement in the script editor to see its > results in the script editor. The second function (set_rotopaint_views) > needs to be provided with the view name (as a string) that you want to set > it to ... the earlier one would set it but not update the GUI, this one will > do both. They both work fine on my Mac or on Linux. Note that I haven't > shown you how to set the View to multiple views ... mainly cause I haven't > figured out exactly how you do that. There are LOTS of ways in which the > RotoPaint is buggy as hell when trying to access stuff through Python, so be > warned. > > > > > > import nuke.rotopaint > > > > > > def get_rotopaint_views(node): > > > views_used = set() > > > knob = node['curves'] > > > for element in knob.rootLayer: > > > if isinstance(element, nuke.rotopaint.Stroke) or isinstance(element, > nuke.rotopaint.Shape): > > > attrs = element.getAttributes() > > > for i in range(attrs.getValue(1, attrs.kNumberOfViewsAttribute)): > > > views_used.add(nuke.views()[int(attrs.getValue(1, '%s%s' % > (attrs.kViewAttribute, i+1)))-1]) > > > > > > return [v for v in nuke.views() if v in views_used] > > > > > > def set_rotopaint_view(node, view): > > > view_index = nuke.views().index(view) + 1 > > > knob = node['curves'] > > > for element in knob.rootLayer: > > > if isinstance(element, nuke.rotopaint.Stroke) or isinstance(element, > nuke.rotopaint.Shape): > > > attrs = element.getAttributes() > > > attrs.set(1, '%s%s' % (attrs.kViewAttribute, 1), view_index) > > > knob.setFlag(nuke.INVISIBLE) > > > knob.clearFlag(nuke.INVISIBLE) > > > > > > > > > for test in nuke.allNodes('RotoPaint'): > > > print '%s = %s' % (test.name(), get_rotopaint_views(test)) > > > > > > print '%s - setting left' % test.name() > > > set_rotopaint_view(test, 'left') > > > print '%s = %s' % (test.name(), get_rotopaint_views(test)) > > > > > > print '%s - setting right' % test.name() > > > set_rotopaint_view(test, 'right') > > > print '%s = %s' % (test.name(), get_rotopaint_views(test)) > > > > > > On Sep 22, 2010, at 3:57 AM, Olivier Jezequel wrote: > > > > > >> Thanks for sharing that, i wouldn't have figured that alone. > > >> Is the return is supposed to give back something ?? it doesn't when i > try > > >> In fact none of the scripts are giving me any result. I have no error > (fixed the , at the end) but no change or printed action happen. > > >> I may have missed something > > >> > > >> thanks again for that > > >> > > >> Michael M wrote: > > >>> Sadly, and I say this because I spent HOURS of my life figuring out > > >>> something that should have been made MUCH more clear by the people > > >>> that wrote it, I do know how to do this: > > >>> > > >>> import nuke.rotopaint > > >>> > > >>> def get_rotopaint_views(node): > > >>> views_used = set() > > >>> knob = node['curves'] > > >>> for element in knob.rootLayer: > > >>> if isinstance(element, nuke.rotopaint.Stroke) or > > >>> isinstance(element, nuke.rotopaint.Shape): > > >>> attrs = element.getAttributes() > > >>> for i in range(attrs.getValue(1, attrs.kNumberOfViewsAttribute)): > > >>> views_used.add(nuke.views()[int(attrs.getValue(1, > > >>> '%s%s' % (attrs.kViewAttribute, i+1)))-1]) > > >>> > > >>> return [v for v in nuke.views() if v in views_used] > > >>> > > >>> That's how you get it ... setting it is a little wonky ... well, a > > >>> lot, and I haven't explored it as much: > > >>> > > >>> def set_rotopaint_views(node, view): > > >>> view_index = nuke.views().index(view) + 1 > > >>> knob = node['curves'] > > >>> for element in knob.rootLayer: > > >>> if isinstance(element, nuke.rotopaint.Stroke) or > > >>> isinstance(element, nuke.rotopaint.Shape): > > >>> attrs = element.getAttributes() > > >>> attrs.set(1, '%s%s' % (attrs.kViewAttribute, 1), view_index) > > >>> set_rotopaint_views(nuke.selectedNode(). 'left') > > >>> > > >>> Michael > > >>> > > >>> On Tue, Sep 21, 2010 at 12:53 PM, Olivier Jezequel > > >>> <[email protected]> wrote: > > >>> > > >>>> Hiya again, > > >>>> how do you access the view attribute inside the rotopaint tool > (nuke6.0v7) > > >>>> when you pass your comp into a stereo setup, your roto/paints are > set on > > >>>> 'left' only by default > > >>>> i try to make a script that change it to left, right. As you can > have a lot > > >>>> of strokes or roto to change. > > >>>> > > >>>> any idea ? > > >>>> > > >>>> cheers > > >>>> Olivier > > >>>> > > >>>> > > >>>> _______________________________________________ > > >>>> 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 > > >>> > > >> > > >> _______________________________________________ > > >> 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 > > > > _______________________________________________ > > Nuke-python mailing list > > [email protected] > > 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
