Hi, I’m working on my first facial rig based on influence objects (curves in this case) and I’m having some trouble with one thing. When I turn the head joint (or any higher-tier joints that influence the head joint, like the hips or neck) the skinning goes out of control for all the curves.
I have all the facial controls follow the head (they’re grouped and parent constraint’d), which then moves the curves. This shouldn’t affect the face geometry at all, because relative to each other, all the influence objects are the same as before, but instead it’s flipping out at the moment:
Anyone know why this is or how to set up the rig to prevent this?
You could do as others have done and make your face rig separate from the rest of the rig. What I mean is that if you have your deforming face (with influence objects) static, and then feed the deformations into the rest of the rig with a blendshape that is always on, then your actual face won’t trip out when the head turns. Obviously something must be double transforming so to avoid it, keep it static and use the blendshape method. Keep your controls on the face as part of the rest of the rig, but they drive the influence curves on the static face.
Gonzalimator: ok, I’ll keep that in mind for a backup, but would rather avoid the complexity of having a blendshape with face controls on it, whereas I should be able to just have the controls on the face and have it work. I’m pretty sure I’ve seen it before.
Pritishd: No, i’ve never seen that tutorial before (although going to read it now). A while ago I watched a facial rigging video from Digital Tutors, but this rig is essentially done on my own, just using the concept of using curves to drive the geometry. The weird thing is that I tried also parenting the curves themselves to the head joint and it appeared to keep the geometry in place, but would then of course double transform the curves so they no longer followed the face.
Maybe I have the parenting wrong? Is it not enough to simply group and parent the controls (which drive the clusters which drive the curves) to keep the controls in the right places? Thanks,
ok, I’ll keep that in mind for a backup, but would rather avoid the complexity of having a blendshape with face controls on it, whereas I should be able to just have the controls on the face and have it work. I’m pretty sure I’ve seen it before.
I think with those type of setup, they are actually triggering a blendshape, when they move their control around the face, or they might be using point muscle.
Blendshapes are good, cause that way you get the base facial expression and then use the additional controller to tweak the face.
I got it working in the sample file attached.
The heirachy setup I used came from my Auto Rigging Tool. IMHO I personally think that wire deformers would give you better results than skinning curves directly, cause wire defromers gives a bit more muscular feel when you move the individual control.
The trick is to setup the wire deform in a way so that you would not get a laggy interaction. Here is how I do it.
Personally I’d go with having the wire deformers on a shape that is then feed into the skinned model with a blendshape. Otherwise I think you’ll just have a big headache trying to prevent double transformation issues. Otherwise I think the only way you could possibly get this work is to make sure that the wire deformer and skincluster do not have any overlapping weighting on any of the CV’s and to me that is way more work than using the blendshape as an intermediate.
He isn’t using wire deformer at all, but just skinning the actual curves themselves to the geo, but yes that is the best way to implement wire deformers
Ok, ignorant question, but I haven’t used wire deformers before – how are they different than using curves as skin influence objects? (advantages/disadvantages?)
I think I might just go with the intermediary Blendshape technique, just to avoid a headache, but will definitely check out your scene file - always good to learn another technique - thanks a lot for taking the time to put that together.
The focus of this project is going to be nCloth, there won’t be extensive facial animation, so I just need a rudimentary rig. Just as a refresher, I want the deform order to be Blendshape before Skinning, correct?
I think it is more of a artistic choice really. Wire deformer tend to maintain volume information much better than simple skinning. I find that setting the rotation attribute to 1 give the best result
The only main disadvantage is that the file size would get bigger.
The focus of this project is going to be nCloth, there won’t be extensive facial animation, so I just need a rudimentary rig.
Then in that case I would just go with simple skinning of the curves, rather than wire deformers
Just as a refresher, I want the deform order to be Blendshape before Skinning, correct?
Yup, a easy way to remember that is that generally objects get deformed(wire/bend etc) first before they are moved(skinned)
How are you driving the curves? What I’m guessing is… you have controls controlling the CVs of the curve and when the head turns, the controls move with it, and as a result all the CVs of the curve also move, seemingly keeping the curve in shape while the head rotates yeah?
IF this is the case…
One thing about curves is that they’re just lines in space, as far as I understand they don’t really have any orientation data to tell maya what direction a curve is ‘facing’ (aside from the transform itself)… compare this to geometry which has surface normals and things which tell us where a surface is facing.
When you move or “rotate” the CVs of a curve (We’re talking about the CVs itself and not the transform) remember that all it is doing it is just moving the points only, even though it appears to “rotate” the cvs, there is no orientation data telling maya that is it changing the way it is facing. As far as Maya knows, it’s still facing the same direction, but the points are warping.
This makes it tricky use curves directly as influence objects, cuz the deformation can’t account for rotation when you want to “rotate” the CVs with the head (e.g. like in that rig setup)… the result is that you are rotating the head, the end result is that it the curve influeces are instead translating, causing the undesirable deformation.
One possible workaround that I would recommend is using geometry instead of straight curves, e.g. use a nurbs instead of a curve etc. or, if you want to really want to use curves, you are better off using more than one curve and then lofting them, and use the loft as the influence object.
I got a quite similar problem. I have a spline IK and control objects attached to the vertices via clusters. And if I move my center of gravity, no control object of the spline will move, but the spline itself does.
Now when I parent or point constraint the control objects to my CoG, it will add the transformation to the transformation inherited by the root bone, so the curve bends and cracks etc. as soon as I Move Everything together.
Is there a way to tell the CVs to only inherit the local (or object) transform of the control object, rather than world transform?
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.