Hi Marco,
I have actually struggled with the same problem, and I may have figured it out
slightly more than you. I'm sure there are people on this forum much more
knowledgeable than me, but here is what I have figured out:
You are on the right track with the getAttributes method of the shape class. if
you store your attributes to a variable and get help on it:
attr = shape.getAttributes()
help(attr)
As you figured out, you can get the value of the 'mbo' (Motion Blur On)
attribute at frame 1:
(As you also probably discovered, you can get a list of these 'attribute codes'
at the end of the help for getAttributes().)
attr.getValue(1, 'mbo')
To set the value of the motion blur on checkbox, it seems that you can use
either attr.set(), which seems to support setting a value of an attribute, or
setting a keyframe on an attribute.
attr.set('mbo', 0)
As you pointed out, the attr.setKey() method seems to be intended to do the
same thing without the ability to set non-keyframe values. You are right, it
does appear as thought the documentation is incomplete. I don't have a guess as
to what the hash parameter is supposed to be for this method. Maybe this method
is broken?
| setKey(...)
| self.setKey(time, attributeIndex, hash, value, view) -> None
| Set a key for an attribute. The time parameter is when the new key will
be created for; the attributeIndex says which attribute to set the key for; the
Using the attr.set() method does not modify the value of a shape in-place in a
roto node though. It seems that you have to modify the attribute values and
then re-append the shape to the node like so:
rotoCurves.rootLayer.append(shape)
If the shape already exists though, it seems to create another copy. I'm not
sure if there is a different way to modify attributes of shapes or layers that
already exist in the node.
I actually was struggling OVER HERE
(http://forums.thefoundry.co.uk/phpBB2/viewtopic.php?t=8274) to find a way to
set expressions on parameters of elements in a rotopaint node also. As you
discovered, these methods seem only to accept integer values, so if you want to
set an expression link on the transform of a layer, for example, it doesn't
seem to be possible? If you or anyone else has any ideas about that I would
love to hear them!
_______________________________________________
Nuke-python mailing list
[email protected], http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python