Proxy Attributes?

654 views
Skip to first unread message

Eric Thivierge

unread,
Jan 16, 2014, 6:32:35 PM1/16/14
to python_in...@googlegroups.com
Hey all,

Has been a long time since dealing with Maya attributes and I remember
setting this up somehow but can't find anything online about it.

Setting up a rig, we usually have multiple instances of an "FKIK"
attribute on the FK controls, the IK controls, and maybe in other
locations as well. How do you have 1 master attribute living on a group
object and have a reference to it on the FK, IK, and other controls
where if I change one FKIK attribute on one of the controls, all the
other reflect the same value?

In Softimage we have ProxyParameters.

General question on how to set this up, then I'll need to script this as
well.

Thanks,
Eric T.

Marcus Ottosson

unread,
Jan 17, 2014, 1:54:31 AM1/17/14
to python_in...@googlegroups.com
Not sure about any official way to go about it, but you may be able to attach a scriptJob to each attribute you want to mirror, having it listen to its peers and update accordingly.

Not the safest method, as there would be nothing stopping animators from keying multiple mirrors causing undefined behaviour.

How does Softimage deal with this by the way?




--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/52D86C13.8040505%40hybride.com.
For more options, visit https://groups.google.com/groups/opt_out.



--
Marcus Ottosson
konstr...@gmail.com

Justin Israel

unread,
Jan 17, 2014, 2:11:09 AM1/17/14
to python_in...@googlegroups.com

I might be totally wrong but isn't that a driven key? Where you have the group level control and all the child controls are driven from it?

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/python_inside_maya/CAFRtmOD%3DhY0UgEh9WzLdfn6Wc6g4ditLGbRCOo5vkm7fnqrJSQ%40mail.gmail.com.

Eric Thivierge

unread,
Jan 17, 2014, 6:55:29 AM1/17/14
to python_in...@googlegroups.com

Well in softimage you create a parameter on an object. Then in the other object you create a proxy parameter which is basically a short cut to that master parameter. They are linked in the sense if you change the value on one of the objects it reflects that change on the other and vice versa.

Marcus Ottosson

unread,
Jan 17, 2014, 9:36:04 AM1/17/14
to python_in...@googlegroups.com
Mm, that's what I was thinking at first too, Justin. It's how I've seen most riggers do it for Maya characters and is how I do it myself. 

It can sometimes it can be very useful to expose a parameter across several controls however, like Softimage Proxy seems to be doing it. 

An alternative I would suggest is to encapsulate such controls into a separate control, such as in the hud or as a separate ui widget. 

Ultimately, I assume you just want your animators to not have to switch their selection every time they toggle fk/ik, if they for instance are already using the hand or shoulder controls etc.?



For more options, visit https://groups.google.com/groups/opt_out.



--
Marcus Ottosson
konstr...@gmail.com

Ævar Guðmundsson

unread,
Jan 17, 2014, 12:13:34 PM1/17/14
to python_in...@googlegroups.com
Just to throw a curveball into this, have you tried looking into how vector coupled kinematics are set up?
In short it's a more procedural approach than the more known IK / FK methods, can try to dig up some links later on but definitely check it out if you are coming from softimage and are not already trained in the Maya IK/FK defaults.

It may negate your search, sorry for not having a snippet at hand to send your way at the moment, but it does sound like you are after more dynamic interactivity than driven keys or script jobs can offer, vector coupled was originally concepted with Maya in mind but the approach works regardless of software, can't disclose where but it's been used on a few notable films in the last decade without entering mainstream social media communities.

As always, hope this helps in some way

David Hotniansky

unread,
Jan 17, 2014, 12:37:18 PM1/17/14
to python_in...@googlegroups.com
One thing I've done in the past to get that behavior is to add the switch attribute to a shape node and then duplicate this shape node as an instance and parent it to objects within the system.  

There are a couple usability drawbacks to this system.  1) The switch doesn't get keyed when you key the control object/transform so you'd have to key the channel on the shape itself or in the channelbox  (works fine with autokey).  2) external connections are represented throughout all instances - so if you wanted to connect the system to a master control you'd have to handle that as well.

Just throwing it out there.

aevar.gu...@gmail.com

unread,
Jan 17, 2014, 12:40:10 PM1/17/14
to python_in...@googlegroups.com
From: David Hotniansky
 if you wanted to connect the system to a master control


That’s indeed what vector coupled does, the whole thing is driven from a master controller either at the feet or the center of the body, completely different approach to animating it, “more reaching for things the same way as a human moves, rather than puppetering controls other rigs offer ”

:)

Eric Thivierge

unread,
Jan 17, 2014, 3:29:35 PM1/17/14
to python_in...@googlegroups.com, aevar.gu...@gmail.com
Thanks for all the replies,

The FKIK switch was only one example. There are many other attributes
where this could be useful so an isolated solution just for the FKIK
switch while appreciated won't help solve the overall issue. Yes it's a
convenience to have the same attribute on multiple controls so you
don't have to keep deselecting / selecting things. Having the FKIK
blend attribute appear on the arm's bicep and forearm control objects
as well as the IK and UpVector control is what I'm after and changing
the one attribute on the forearm control will update the FKIK blend but
also update the attributes on the other controls to reflect the same
value while still leaving them open to be manipulated as well.

I don't want to use script jobs or expressions as it seems too
intrusive to performance.

I'll try to reconfigure my rigging philosophy to cope with this I
suppose...

Eric T.

On Friday, January 17, 2014 12:40:10 PM, aevar.gu...@gmail.com
wrote:
>
>
> *From:* David Hotniansky <mailto:davidho...@gmail.com>
> if you wanted to connect the system to a master control
>
>
> That’s indeed what vector coupled does, the whole thing is driven from
> a master controller either at the feet or the center of the body,
> completely different approach to animating it, “/more reaching for
> things the same way as a human moves, rather than puppetering controls
> other rigs offer/ ”
>
> :)
>
> --
> You received this message because you are subscribed to the Google
> Groups "Python Programming for Autodesk Maya" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to python_inside_m...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/python_inside_maya/52d96b89.2e80320a.63c8.1525%40mx.google.com.

Eric Thivierge

unread,
Jan 17, 2014, 3:30:19 PM1/17/14
to python_in...@googlegroups.com, aevar.gu...@gmail.com
Ah just found this which is going to probably be the closest I am going
to get. Hacky but probably will suffice:
http://www.youtube.com/watch?v=T-JiIgU49ns

Eric T.

Eric Thivierge

unread,
Jan 17, 2014, 5:00:51 PM1/17/14
to python_in...@googlegroups.com, aevar.gu...@gmail.com
Actually Character Sets are probably going to be the cleanest way. Had
forgot about them.

Marcus Ottosson

unread,
Jan 18, 2014, 2:20:46 AM1/18/14
to python_in...@googlegroups.com
Character sets have other disadvantages and are generally not used for purposes other than mocap or thr trax editor. Do correct me if I am wrong, guys.

It also just occured to me, when animating, I normally ever key, say IK, once, and then continue working on it via the graph editor. If that's something that your animators do, then you might want to know that the graph editor doesn't just show attributes directly under the selected node, but also from nodes that has any _connection_ to that node.

E.g.
If your IK switch is on the main control for the rig, and then your hand ctrl has a connection to its message slot, or any slot, the master control will how up in the graph editor when selecting the hand.

In a way, it could be percieved the same as the Softimage proxy attributes.


Jeremy YeoKhoo

unread,
Jan 18, 2014, 6:37:38 PM1/18/14
to python_in...@googlegroups.com
Yeah I wouldnt use characterSets unless youre doing something simple to transfer animation or what Marcus saying, for moCap and traxEditor stuff. 

In regards to proxy attributes, you don't have that in Maya by default. Under the hood, transformations are dealt in the DAG graph. So unlike XSI, you cant connect an attribute and manipulate it at the same time (you can however create your own plugin for that purpose, but i wouldnt recommend it) You can however use animation layers to further manipulate a control though....

You can use Maya's Utilities nodes (condition, clamp, average, multiply, and etc) to make the connection or a direct connection to a transform node (depends on what you want to do). And create child of that transform and let that child be the 'Control' This acts as an offset transformation node and the animators can then offset it the transformation node via the control.

In regards to the shape node with custom attributes instanced to multiple transform nodes. I find it a very useful 'workaround' to have multiple controls to access a single attribute. I dont think this is exactly what you want to achieve however, because it is still a direct connection.  

PM me if you like, I can make a simple offset child connection. Its kinda hard to explain it in words.

-Jeremy 

>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/python_inside_maya/52d96b89.2e80320a.63c8.1525%40mx.google.com.
>>>
>>>
>>> For more options, visit https://groups.google.com/groups/opt_out.
>

--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.

To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_maya+unsub...@googlegroups.com.

Eric Thivierge

unread,
Jan 20, 2014, 10:17:33 AM1/20/14
to python_in...@googlegroups.com
Hey Marcus,

What are the disadvantages?

I'm still not 100% satisfied with using the Character Sets. Is there a
way to make a custom marking menu (hotbox) for specific controls on a
rig to access these attributes? Surprisingly much of my googling isn't
returning any results for something like this.

Thanks,
Eric T.

Marcus Ottosson

unread,
Jan 21, 2014, 1:22:48 AM1/21/14
to python_in...@googlegroups.com
Hi Eric,

I'll list the ones I can think of, and then maybe others can help add from their experiences.

1. Keyed attributes have their channels colored in the channel box.
When an attribute have a character set applied, its channels are yellowed. Since yellow means they have an incoming connection, it may appear to an animator as though the channel cannot be keyed (as is usually the case) and if they are, they have fewer ways of knowing that it has been (graph editor being their last resort)

2. Timeline displaying all keys in character set
When a character set is active (via the little box on the range panel), all keys on all channels connected to a character set become visible at once for as long as the character set is active. Usually, only keys on channels related to your selection becomes visible. This makes it more difficult to step between keys using the hotkeys (. and , per default) and also obscures what keys are relevant to your particular selection.

3. Finally, from a riggers perspecive, have a look in the hypershade/node editor for a character set.
You'll notice how the connections from your object circle back through your character set. Though unconventional on its own (its called directed acyclic graph, after all), it also makes it, not impossible, but more tedious to connect control connections between your attributes and various utility nodes as you must roundtrip them back in the same fashion.

I stuck with character sets for some time, as I rather liked the fact that I could step between keys in the blocking stages without having to select the whole character. I usually key on an even interval (e.g. every 6 frames), but not all of the controls. So to accurately step between keys every 6 frames, I would either have to select the whole character each time (loosing my current selection) or have a charSet active.

Alas the disadvantages above made me lose interest.
--
You received this message because you are subscribed to the Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email to python_inside_m...@googlegroups.com.

aevar.gu...@gmail.com

unread,
Jan 21, 2014, 4:32:30 AM1/21/14
to python_in...@googlegroups.com
  +Unless you have an RND department showing attentiveness to a native geometry cache and animation curve export format you will get into interesting scenarios when the animator churns these files out and they need to be reworked into a procedural crowd animation where the animation curve syntax becomes they key factor to speed it up. 
  I’m talking about things like Alembic and Atom, but streamlined to treat billions of data containers, the ones listed simply won’t do for that ( without unnecessary complications  ) but if you are not looking to expand your scene and are just treating a couple of shots or so, character sets are great, apart from the limitations Marcus lists.
Reply all
Reply to author
Forward
0 new messages