Empowering rigs using Offset Parent Matrix [MAYA 2020]
HTML-код
- Опубликовано: 5 фев 2025
- Maya 2020 features a powerful new way to drive transforms in your rig using an Offset Parent Matrix. This lets you cut down on the number of joints, speed up your rig performance, and allow for more adaptability.
*Update*: I tried my hand at adapting the Emma rig using Offset Parent Matrix. Currently this is still a prototype, but if you're interested in seeing one possible solution you can check it out here: areadownloads.a...
Maya 2020 What's New: help.autodesk.c...
The Matrix is © 1995-2015 Warner Bros.
The Matrix emojis are used according to the Link Ware license and are available at www.visualphar...
*Update*: I tried my hand at adapting the Emma rig using Offset Parent Matrix. Currently this is still a prototype, but if you're interested in seeing one possible solution you can check it out here: areadownloads.autodesk.com/wdm/maya/matrix_math_emma_V1.0.zip
This is an incredible feature and a huge game changer, but I was wondering... if I'm rigging, let's say a character in A pose, how do I preserve the orientation of regular curve controls so that they match with the joints, which are angled? If there are no offset groups, I'm not sure how I should zero them out without them getting oriented to the world.
@@gretchenasmar7371 Are you manually creating curve controls out of NURBS curves? And if so, are you keeping their transform nodes or parenting the curve shapes directly to your control bones? If the latter, you shouldn't need to worry about it at all since you can just manually orient the controls using their Control Vertices.
If the former - first off, I would avoid doing it this way since extra transforms could introduce extra variables into your rig. But if you must do it this way, you should be able to use the multMatrix node to multiply together all the spaces before the control (so in an arm control's case, the upper body * arm space matrices) to give you the diagonal arm space as "0-orientation".
@@Autodesk_Maya I'm creating them and creating an offset from the same curve (deleting the dup shape and parenting the original to that group), which is what I'm trying to eliminate
@@gretchenasmar7371 Sorry, do you mind posting an example file somewhere I can get to it (such as area.autodesk.com's forums)? I'm having a hard time envisioning what you mean.
@@Autodesk_Maya No worries! Sorry I took a bit, apparently I couldn't upload the file directly onto the forum. Here's the link with a description and the drive file, hope it helps :)
forums.autodesk.com/t5/maya-animation-and-rigging/how-can-i-keep-control-curve-orientations-when-using-offset/td-p/9394491
ey this is a secret appendix to the rigging tutorial. this is so good. cant wait for you to revist the old rig with the tech
I'm still experimenting with this new functionality and figuring out all the things it can do (spoiler alert: it's a lot). However, if you're interested, here's an early prototype of the Emma rig adapted with some of the baseline concepts of matrix math.
areadownloads.autodesk.com/wdm/maya/matrix_math_emma_V1.0.zip
I've included a text file and documentation in the scene itself on what I did. I apologize in advance for any bugs you may encounter - it's still early days even for me with this stuff.
Hell yeah, awesome guys!
This was really needed. Building older rigs with the old system was very messy by comparison.
Make sure you check out the link to the example rig in the description too!
This is awesome, I wish there is a menu command to do these connections right away instead of doing it in the node editor, other wise, it seems to result in more clicks.
Yes, they need to rework the connection editor with filters and tooltips to make this kind of feature easier to use.
@9:26 - In Maya 2020.4 testing this doesn't behave the same. I am trying with a new scene, and a two joint chain duplicated, so a simple set up. Using both matrix and world matrix have the same result. There's an offset like you demonstrate, but matrix doesn't fix it, nor does zero-ing out the 'child' as it's also rotated from its original position, but without rotation values. I'm ultimately trying to see if I can use it as an inbetween for retargeting mocap skeletons while leaving the joints free to adjust, but every time I try this method, even with matrix and not world matrix, it creates a weird offset in the transforms. Any ideas?
+1 the same shit...
I really appreciate this helpful content! After watching this last video about the use of the Offset Parent Matrix before doing the full playlist, it feels a lot more difficult to decide whether or not to follow this tutorial from the beginning. I understand that the real-time creature rigging playlist here on @Autodesk_Maya channel does use the Offset Parent Matrix, but perhaps doesn't include as many features as this playlist creating the Emma rig. I am trying to decide where to start. I have lots of experience rigging in 3ds Max, so would like to dive in and learn as much about advanced Maya rigging as possible, but am not sure I want to commit to this or the other with the intention of eventually doing both. So with the understanding that I am possibly only choosing one, do you think that if I understand the Offset Parent Matrix while going through this (Custom Rigging for animation (film / tv / shorts), that I will be able to apply the fixes using the Offset Parent Matrix as I go? If not, that's not really a dealbreaker, as my goal is to learn the more robust rig. Any suggestions? Thanks so much!
Dear autodesk and Will Telford thank you thank you thank you thank you !!
Dare I say "Whoa!!"
Very cool!!!! I think this just changed a lot of rigging workflow issues. I'll be curious to see how a rig scales now and how much lighter the rig will be. As far as speed goes I know Parent constraint is faster then Hard Parenting so Ill be curious to see the difference here.
These are much faster than even parent constraints (which you can check for yourself by running the Profiler).
I think it's time for a new "Creating a Character Rig" series with the new workflows :)
PS; how do u make that fading floor?
Circular ramp in the shader's opacity channel.
I'm still experimenting with this new functionality and figuring out all the things it can do (spoiler alert: it's a lot). However, if you're interested, here's an early prototype of the Emma rig adapted with some of the baseline concepts of matrix math.
areadownloads.autodesk.com/wdm/maya/matrix_math_emma_V1.0.zip
I've included a text file and documentation in the scene itself on what I did. I apologize in advance for any bugs you may encounter - it's still early days even for me with this stuff.
8:03 - _[pick walking]_ - its okay if you use controller's parent tagging
I wish there was a way to scale the joint handles up.
Looks pretty usefull, thank you guys!
actually the oid constraint , comes with some offset target constraint which i use many times to do this kind of offsets things , new constraint matrix is same but just more clean? its ok , thx
Is there Eigen values and eigen vector in Maya 2020
please provide some study material for flexible facial rigging ..... it would be very thankfull
But the use of Offset Parent Matrix is pointless if you want to get your rig into another Maya scene. Maya can't export the OPM values and results in a broken rig. If there is no way to export and import a rig with OPM values, I fail to see how this empowers rigs and is not a detriment to them?
That's odd - there shouldn't be an issue importing these into another scene unless you're doing so in a version of Maya that doesn't support Offset Parent Matrix. For example, the Mayabot rig in the Content Browser makes plenty of use of OPM, and anytime you load it you're literally importing it into a new scene.
4:55 Or just parent the cube under the cylinder?
The video gets into why you might not want to do this (especially in rigging).
this reminds me a lot about XSI's set neutral pose
Why dont we just get this as an option under constraints?
They're not really the same thing. Although I'm showing how to use this to mimic a constraint, you can actually do much more with them.
@@Autodesk_Maya I get that, it just would be nice if you could do it with a single button. Still, can't wait to finally add improved finger controls to my rig because I was bout ready to rip all my hair out with adding sliders while still keeping FK controls
Maya Learning Channel I think the question is more “Why not add a button for this?” Though it only takes a minute to write your own script some users aren’t comfortable with scripting
@@AerysBat
I don't have maya 2020 ( so perhaps my syntax is off) yet but if you do and want a tool, here is some python to get it working as a button. ( just save the code out to your shelf). ( in python)
#FOR MAYA 2020 ONLY
import maya.cmds as cmds
#Select the parent then child object
def constrainObjWithOM():
sel = cmds.ls(sl=True)
if len(sel) < 2:
print ("only select two objects please")
elif len(sel) > 2:
print ("only select two objects please")
else:
cmds.connectAttr ('%s.worldMatrix'%sel[0],'%s.offsetParentMatrix'%sel[1])
print ("yay")
constrainObjWithOM()
@@Z33Garage I love you man
sorry im noob at rig, i think this offset matriks is great, but when i rig i usually lost the hierarchy of the parent, with parent constraint, i can search it within hierarchy graph to look for an extra sign of parent constraint in the child, and i could click it and see where the parent at.
but with this offset matriks... it just so neat at hierarchy graph... that it hard for me to troubleshoot when i had the connection mistake.
what is the solution?
For Offset Parent Matrix, you'd be able to follow the hierarchy in the Node Editor rather than the Hierarchy Graph (aka Outliner).
Is there a way to adjust the OPM using the manipulators instead of adjusting it using only the values?
You could always connect a locator to the OPM inputs. Then you can just select/move the locator to change the OPM.
Is this going to be available for Maya LT anytime soon?
Awesome
Does it also replace the function of having two parent constraints with a blend like when we animate an object going from one hand to another?
There's a blendMatrix node that allows you to do the same sort of thing, and it even lets you choose which channels (Translate, Rotate, Scale) to pass through.
@@Autodesk_Maya So I don't see any advantage as to using parent constraints. Is there a way to make this connection into a script? If it's possible, then it's easy as selecting a parent, shift selecting a child and run script just as you would with a regular constraint
Well, as mentioned in the video, the primary advantages are performance increases (matrix operations are simply faster and less complex behind the scenes than constraints), and more versatility (ability to adapt joints, perform additional stacked transforms, etc).
@@roxonogueira the advantages are less dirty nodes in between, less connections, and far greater stability when working in a pipeline. Ask an animator when a constraint in their scene from a rig or one they made randomly just breaks.
@@Z33Garage yes I worked in some cinematics and moving props around was always a pain. I always set some extra groups and locators over a single object to animate it's offset when constrained. Specially books. They were hard to animate between hands but it was fun.
This is absolutely great!
Any chances of having a bidirectional constraint as well?
Hmm, you could use the pickMatrix node to setup a situation where object A controls object B's rotation and object B controls object A's translation without getting into a cyclical error, but I'm not sure how much I would recommend it.
@@Autodesk_Maya
Yes, that's why I mentioned bidirectional constraint. For these kind of operations they are easier and mostly error free.
Thanks for the tip though.
Is this like delta transformation like in blender?
Sort of, though you could also achieve the same results as a delta transform simply by grouping an animated object and then moving the group. Offset Parent Matrix works at a much deeper level and allows you to do more complex things. For example, you wouldn't be able to do the simplified hand controls shown at the end of the video using delta transforms. In fact, I don't think they work on bones at all (though I could be wrong).
When using offset matrix instead of parent constraint is it possible to bake the child's transforms somehow?
At first sight it doesn't seem to be possible. I guess you could parent( with no offset) a locator to the child, bake the locator, unbind the child, parent the locator to it, rebake. I agree such a procedure should be made into a button by default but let's not wait 5 years for Autodesk to make it. It's a simple MEL script to make.
I'm not sure you'd really want to bake matrix transforms since one of their greatest strengths is the ability to quickly disconnect/reconnect them to make changes to the rig. Just curious, what's your thought process on wanting to do that?
@@Autodesk_Maya It may be useful in some animation scenarios.
For example what I had in mind with offset matrix:
To connect a backpack to an animated character, bake the animation, reconnect and offset the keys to get a secondary overlapping animation. The advantage is that the transforms would be in world space and easier to work with. This could be done with constraints but it maybe faster and cleaner to do with matrix connection.
@@ivnbgtv Hmm, if I'm understanding the scenario properly, you could just do this by connecting a locator (parented under the character) to the offset parent matrix of the backpack, then animate both the locator (in character space) and the backpack (in world space) to get primary/secondary animations. No baking required.
Or if you want to keep everything in world space, feed the character matrix into the locator's offset parent matrix, then the locator's matrix into the backpack's matrix, while keeping them both in the root hierarchy.
@@Autodesk_Maya I make rigs geared for animating characters for video games, so being able to bake all of the animation down to the joints so I can export skeletal animation to a game engine is crucial. If I were to use matrix transforms in these rigs only to learn that they do not allow the animation to be baked properly then the rigs would be completely worthless for the very thing they are made for.
Additionaly, baking animation is used in motion capture and animation retargeting workflows as well, so if matrix transforms prevented that then it would give riggers another reason to avoid them completely.
I don't have maya 2020( so perhaps my syntax is off) yet but if you do and want a tool, here is some python to get it working as a button. ( just save the code out to your shelf). ( in python)
#Select the parent then child object
import maya.cmds as cmds
sel = cmds.ls(sl=True)
cmds.connectAttr ('%s.worldMatrix'%sel[0],'%s.offsetParentMatrix'%sel[1])
Super useful !
Mw ha ha so powerful!
ahhhh that's so useful!!!!!!!!!
I saw in the following tutorial that you can have an issue with rotation when you connect a transform to a joint and have to tackle with the solution.
ruclips.net/video/_LNhZB8jQyo/видео.html
In this tutorial, you connected the matrix of one joint to another. so does this mean that you can connect with joint matrices without worrying about destroying the rotation?
💻📱
@dhamalasticworld
🔋💊🐇🕳🔌📡