View Full Version : Any recommendations: Pose Corrections using Blendshapes - problem!
07 July 2007, 06:30 AM
Hi. I'm not quite sure I uderstand why I am getting this result and I'm hoping someone can shed some light on it...
I want to sculpt some corrections for particularly badly deforming poses. I'll use the bent elbow as an example.
So I dupe the posed geometry and sculpt it to look right, and blendshape that model plus a second unmodified duplicate into a 3rd bind pose model. I set the blendshape values so that I end up with geometry that is the bind pose, plus only the vertex repositioning that is needed to add to the flexed arm... so this is all good. What I have as a result is a single shape that I can blendshape to the bound geometry.
The problem is as follows: When I flex the arm (driving the corrective blendshape) it looks great, but when I go and rotate the character on any joint above the elbow (would be the root joint even) the corrective blendshape acts strangely, and no longer deforms the geo correctly.
It appears that the change in position of the vertices by the blendshape ignores the relative position of the bound geometry's verts. So the modified verts say.. along X axis to correct the pose is still a movement in X on the bound geometry even though the orientation of the bound geo had changed due to the rotation of the root joint... Is there a way to get the blendshape node to consider the relative position of the bound geo? using "Local" option in the blendshape creation dialogue sortof does the opposite of what I need... I'm trying michael comets poseDeformer, but I was looking for a more out of the box solution considering this technique is promoted in the learning maya hyperrealistic modeling and rigging dvd's (but they dont mention this problem) (I am using parallel order of deformation)
Has anyone here come across a solution for this?
07 July 2007, 10:06 AM
Freeze Transforms , XForms, delete history,...on the original object, before making a duplicate.
Sounds like Maya's bindpose is causing the problem. You can select your mesh and deforming bones,... and go to the material editor, and delete the bind pose. (hypergraph)?
I hope this helps.
07 July 2007, 03:57 PM
A solution I had posted on jonhandhisdog that I use frequently here for touching up poses in need of correction:
The vector setup is mainly used for multi-axis solvers (shoulders mainly) because you end up working in 3 axis of rotation which will force you into gimbaling (axis 3 will inherit values of the rotation).
Personally I stay away from using any rotation solver for blending in shapes and I strictly use translation. I'll give an example for a corrective shape on the knee:
1. generate corrective shapes by posing the character
2. sculpt the corrective shaping on the skinned character while it's posed.
3. reset the character back to its default skinned position
4. duplicate the corrective shape and export it to a new scene.
5. re-open the character, mirror the blendshape if you need to (wrap deform -1 trick)
6. apply the blendshape to the character.
7. Create a locator, position it at the ankle joints location and point constrain it to the knee joint.
8. Create a set driven key on the locator's translateY and the blendshapes value (0 & 0 respectively).
9. Move the leg control up and blend the shape on, overdrive your pose so that you can achieve more than what you sculpted for.
10. create a set driven key on the current translateY value of the locator and the value of the blendshape (it will be 1 at this point).
The cool thing about this setup is that you can flip the character 180 degrees and the shapes will still blend properly because the locator works off of worldspace coordinates. Also, because you are using translate, you dodge the bullet of gimbal and by using a SDK you can adjust your curve to give a nice smooth transition into the shape. The key trick with this is that the corrective shape is stored as an offset (you've sculpted on the original skinned model, so when you reset the pose back to default and duplicate the shape, the deformation is localized to just the desired area you sculpted, not having to take into account the entire movement of arms or other appendages etc).
Let me know if you have any questions about the setup, I can post a more detailed process.
08 August 2007, 06:03 AM
i was trying to follow ur method...but i get lost in the middle..if u can please post a detailed work flow of ur method it would be helpful.
Thanks in advance
08 August 2007, 03:55 PM
When you sculpt corrections on the skinned character, by default all modifications are written into tweak node placed before skinCluster. It works ok for translated into pose joints, but when joints are ROTATED, you'll get a really weird behavior while moving vertices. That's because relative movements are recorded without respect to rotational transformation via joint, and then get transformed by skinCluster again... Putting simply, you would get a mess most of the time. Putting tweak node after skinCluster would give a good result, but won't work correctly while reaching the pose.
Making corrective blendshapes via parallel blender shown in alias video doesn't actually work - it crashes when you rotate joints above in hierarchy.
The only workable way (and great way ;)) available right now (that could be shared to public :)) is CorrectiveShape plugin by BSpirit (and his old script also). Search the forum - there's a topic here.
08 August 2007, 05:13 PM
that...and comet's pose deformer that was recently released for 8.5
08 August 2007, 08:13 PM
That couldn't be shared to public that freely ;)
08 August 2007, 06:45 AM
I think Pose deformer does something like this... Reads current bones' xyz rotations(at any frame), records them, gets original bind bose, records skinning information, deletes skinning information and bind bose, then lets you make any changes such as removing or adding influences, then after it records influences back thus making a new bind pose with the new information you added with no loss of skinning... then returns it back to whatever frame or xyz rotation you were messing around with it at.
And with visual feedback of course.
Sagroth is correct on this I believe. Something about the way Maya code sets up the world space binding info and rotations.
..btw.. DJX recompiled Michael Comets plugin (since Comet uploaded the source code) to Maya 8.5 somewhere on this forum.
08 August 2007, 11:38 AM
I compiled two versions of poseDeformer for maya 8.5 - one requires maya 8.5 sp1, the other doesnt.
Both can be found here (http://www.djx.com.au/blog/2007/06/06/posedeformer-recompiled-for-maya-85-sp1/).
08 August 2007, 12:11 PM
Thanks. Any chance to have this for 8.5 x64?
08 August 2007, 12:11 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.