Corrective blend shape losing detail.


#1

Hi.
Wondering if someone has any insights into a corrective blend shape issue I’m having.

As a simple test I have a basic leg mesh and two joints. The steps I’m taking are :

  1. Make two copies of the deformed/bent leg. Call one “Negative” and the other “Positive”.

  2. The Negative mesh I don’t touch, the Positive I take into Zbrush for a quick sculpt of the corrective shape.

  3. Back in Maya I apply the Positive and Negative blend shapes to the original mesh using the Parallel blend shape option.

  4. The Negative blend shape I give a weighting of -1, the Positive blend shape I give a weighting of +1. From here I use a set driven key to drive the weight of the blend shape envelope with one of the joints rotations.

This works reasonably well, except …
… the resulting blend shape loses some of the detail from the positive blend shape, i.e. it’s a bit “soft”, as if it is not being fully applied.

Any ideas ?

Cheers.


#2

I’m still pretty new to morphs/blend shapes in Maya, being more familiar with another app. At a guess though I think you’d get more consistent results possibly if you made a new shape from the +1 and -1 shapes, ie add them both to the mesh in its bind pose, duplicate the mesh and then use that as the joint rotation driven shape rather than always using two shapes.

Hope that helps,
cheers,
Brian


#3

Hi Brian.
Like you I’m coming from a different application, so it’s a bit of relearning for me.

If I’m reading you right (not certain), your suggesting making the Positive and Negative blend shapes as before, after sculpting the corrections and applying to the original rigged leg, straighten the rig leg with corrective blend shape applied, take a copy, remove the Positive and Negative blend shapes from the rigged leg … then just apply the copied combined blend shape back as the corrective blend ?

Unfortunately I have already tried this, and got the same smoothed / averaged result. :sad:

I suspect that I would get better results with a less extreme initial deformation, as the Negative blend wouldn’t have to correct the sculpted Positive blend so much. Perhaps better rigging on my part to prevent such extreme colapsing might be a (partial) solution, but for the limited rigging I do, blend shapes seemed the easier solution.

Thanks for the reply.


#4

Quick update.

I found that using GOZ to export the Positive blend shape for sculpting, instead of manually exporting an OBJ, gave much more consistant results. Not sure why, but I’m not arguing.

The only down side is that GOZ tends to mess with a mesh’s pivot point by centering it on re-import. This means that instead of creating the positive and Negative blend shapes and then moving them off to the side for clarity’s sake, it’s best to leave the Positive blend shape in it’s original position until it has been sculpted and applied to the original mesh as a corrective blend shape … then it’s safe to move it.


#5

Useful to know, I’ve recently added ZBrush to my workflow too but mainly just for modeling/texturing so far, not really for blend shapes, although I’d like to use it for that too. I guess you could script something that could fix the pivot back in Maya maybe if you could work out exactly how far ZBrush is moving it.

One thing I’m curious about - in the screen caps above the mesh looks smoothed to me in Maya, ie you pressed ‘3’ to get smooth preview on a lowerpoly mesh (at least that would be the typical approach for characters). When sculpting the morph targets in ZBrush do you sculpt on the lowest level of the mesh or do you subdivide it? I’d guess if you did that would account for the difference in result as the mesh that actually gets sent back to Maya will be the lowest subdivision, which won’t look exactly like what you’d get sculpting on a subdivided mesh in ZBrush as it’s simply a low poly cage smoothed, rather than the actual hires mesh. Unless you are using displacement too… but then that’s a whole other issue…

Hope that made some sense . ; ) I could probably explain better but in a rush right now.

Cheers,
Brian

Cheers,
Brian


#6

Hi Brian.
No additional smoothing / subdividing at any step, as I didn’t want Maya or Zbrush messing with the point ID’s. So all the meshes are the same poly count.

Even in the tests above all the meshes are reasonably hi-rez to allow for sculpting. Just about the only charachter work I do is in my own time and for my own pleasure (hence the fumbling around with Maya’s joints and blend shapes now after all this time :wink: ), and as these don’t tend to be animated much (or at all), I can get away with poly counts that would be unaceptable to others.

At this point the resetting pivot issue isn’t proving to be the problem I thought it might be. Once the corrective blend is applied I can then move the copy out of the way (or drop it on a hidden layer), and I then just have to remember to place it back on the origin if I ever need to reaply the blend.

Cheers.


#7

The problem is a bit more convoluted than the results loosing detail I’m afraid.

Whenever you’re doing the +1 -1 trick to cancel out a pose from your sculpted mesh, you aren’t actually cancelling out everything and are even actually adding things as well that you probably don’t want to add.

This problem is most visible when dealing with poses that have been rotated, like your two-limb setup. Remember that the vertices on both your “Positive” and “Negative” shapes have no notion of rotation; i.e. they are all deformed in world space, so when you try and cancel out your sculpt with the pose, it’s doing so in world space when you should be doing it in joint-space.

Therefore, the only fully accurate way of getting a corrective shape that can be applied before skinning is to cancel it out using your skincluster and apply the same rotation and translation as is being used in the posed mesh.

I do believe however that there was a trick involving the “tweak” node that could make this process easier. Maybe someone else could fill in those details.

Oh, and the only way I can think of that would create a difference in “export as obj”, and “goz” might be that the normals are preserved/not preserved in one of them?


#8

Sorry to hijack, but not really understanding what you mean by canceling out using skincluster. Could you possibly elaborate or point towards further reading on this subject as I’d really like to understand it properly. I’m coming from another rigging system where corrective morphs are very easy to set up and trying to get my head around the correct way to do it in Maya. Any more information much appreciated.

Cheers,
Brian


#9

@Horganovski: What you’re after, is to apply the same deformation your skincluster is doing, but in the negative. Essentially doing the +1 -1 trick, only now you’d be including rotations as well. I honestly can’t think of any 1 click way of doing that though… Perhaps query the skincluster for changes, negate those changes and apply them to the sculpt?

It’s not a fully solid workflow in the long run though, since you’d have to take into account, not just the skincluster, but all deformers that contribute to the final posed mesh. Some apps take care of this for you (xsi for example)

You should try and find information about how you can use the “tweak” node for correctives, I know there’s also a plugin available (for versions earlier than 2011 I think). I suspect it might do most of the work for you, or at least shed some light on the subject. Post it here if you find more information, I’d like to see it too.


#10

Thanks, appreciate the info.

Up to fairly recently I worked mainly in Cinema 4D, generally using rigging plugins that allow you to sculpt corrective morphs right on top of the joint deformation, without any pose space weirdness, which is a really simple workflow, so I’d like to get close to that in Maya, maybe with a little MEL to help the task. One thing I might try would be just exporting characters from Maya to C4D with the animation baked into the joints, then creating the corrective shapes in Cinema and exporting them back to Maya to use as fix shapes. Not sure how well that would work, but worth a try I guess.

I’ve also played around with Joe Alters beta L-Brush/Lipservice plugin but to be honest I found it hard to get my head around how it’s supposed to be used effectively. I get the feeling Joe might be the only one who really knows how to use it but I didn’t find his videos on it very clear. I might look back at them again though.

Thanks again,
Cheers,
Brian


#11

Oh, yeah, well if you’re just looking to sculpt your pose with regular maya tools then the process is much simpler, since the tools themselves would take care of the conversion for you on the fly. What the OP was describing was how to get the model out into zbrush and then back in again.

Have a look at Michael Comet’s PoseDeformer plugin also. It’s fairly straightforward and replaces the corrective blendshape node at the bottom of your operator stack with the poseDeformer node. It does joint-space calculation of your sculpts and would also allow you to export the pose to zbrush and then back in a gain with a little trickery.

Edit: Actually disregard that first part. My head is in Softimage at the moment… Posedeformer should work out for you though.


#12

Thanks, I’ll check Pose Deformer out, I use the Comet rigging scripts a lot here but haven’t really tested out that plugin yet, sounds like it would be very handy.

Cheers,
Brian


#13

Hi Marcuso - Thanks for the tips.
I had looked at Michael Comet’s PoseDeformer previously, but hadn’t got very far with it, especially the part about using it with Zbrush sculpting, mainly due to my own lack of understanding.
However, I have just found this LINK , where there is a very good tutorial on it’s usage.

The tutorial also pointed me to the solution with my problems with Zbrush.
What I found was that I had to export a copy of the tempory deformed mesh created by PoseDeformer, sculpt it in Zbrush and then import it back into Maya. This gives you three meshes, the original, the deformed copy created by PoseDeformer and the sculpted copy from Zbrush. Use the Zbrush copy to make a blend shape on the PoseDeformer copy (after which it can be deleted), then complete the PoseDeformer operation, at which point the PoseDeformer plugin will delete the tempory copy it initially created. Making for a very clean setup.


#14

Yep, that’s the trick.


#15

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.