View Full Version : Facial GUI - How to set up blendshapes on diagonal movements
JaredTaylor 10-22-2010, 08:17 AM Hi,
I hope the thread title was clear enough.
I want to have a blendshapes linked up like this:
Mouth control moves to the left = widen blendshape
Mouth control moves up = raise cheek upward blendshape
Mouth control moves diagonally up/left = blendshape widens and raise cheek upwards and sideways to the left (different blendshape than raise cheek upwards)
I know how to make it do what I want for the left/up, but when making it move diagonally, you can't use a SDK or connection editor, I assume there is an expression people use, or even utility nodes to drive it. Can someone elaborate for me? Cheers. Baby words, please!
I use Maya 2011
|
|
Hi,
I hope the thread title was clear enough.
I want to have a blendshapes linked up like this:
Mouth control moves to the left = widen blendshape
Mouth control moves up = raise cheek upward blendshape
Mouth control moves diagonally up/left = blendshape widens and raise cheek upwards and sideways to the left (different blendshape than raise cheek upwards)
I know how to make it do what I want for the left/up, but when making it move diagonally, you can't use a SDK or connection editor, I assume there is an expression people use, or even utility nodes to drive it. Can someone elaborate for me? Cheers. Baby words, please!
I use Maya 2011
Treat it as a value in n dimensions of [0.0,1.0]. So if left goes 0 - 1 and up does too, just multiply them together for there combination value, it'll always return a value of 0 - 1, but most importantly it'll be non-linear. e.g left0.1 * up0.1 = 0.001 , left0.5 * up0.5 = 0.25.
left_up = (left * up) , i.e [0.0,1.0] * [0.0,1.0]
This is what a weight space is, n dimensional axis' of 0.0 - 1.0 - where a knot/value can be place anywhere inside it. It position can be anywhere on the axis too i.e 0.5 but thats more indepth.
shinyprem
10-22-2010, 03:51 PM
Hi
Try "http://www.creativecrash.com/maya/downloads/scripts-plugins/interface-display/c/sliderlist-mel"
http://www.creativecrash.com/maya/downloads/scripts-plugins/c/facials-setup-gui
Rgds,
Prem
JaredTaylor
10-23-2010, 12:02 AM
Treat it as a value in n dimensions of [0.0,1.0]. So if left goes 0 - 1 and up does too, just multiply them together for there combination value, it'll always return a value of 0 - 1, but most importantly it'll be non-linear. e.g left0.1 * up0.1 = 0.001 , left0.5 * up0.5 = 0.25.
left_up = (left * up) , i.e [0.0,1.0] * [0.0,1.0]
This is what a weight space is, n dimensional axis' of 0.0 - 1.0 - where a knot/value can be place anywhere inside it. It position can be anywhere on the axis too i.e 0.5 but thats more indepth.
I'm a little confused, but trying to understand.
I made an expression that said
face.l_smileWide = face.l_widen * face.l_smileUp);
And it sort of worked. Now, when I move it up, it uses l_smileUp, when I move to the side, it uses l_widen, when I move it to the corner it uses l_smileWide......... and l_widen, and l_smileUp. I don't want to use l_widen and l_smileUP when it's using l_smileWide.
I don't have a good enough understanding of MEL to know how to do that.
Am I headed in the right direction?
I tried writing an expression saying:
if (face.l_smileWide >= 1) face.l_widen = 0, face.l_smileUp = 0;
else face.l_widen =
Then I got lost, and didn't know what to put in. Also the part where it says "face.l_widen = 0, face.l_smileUp = 0;" was invalid so I don't know what to do.
Please help me a little more, I'm almost getting it... I think.
JaredTaylor
10-23-2010, 12:12 AM
Hi
Try "http://www.creativecrash.com/maya/downloads/scripts-plugins/interface-display/c/sliderlist-mel"
http://www.creativecrash.com/maya/downloads/scripts-plugins/c/facials-setup-gui
Rgds,
Prem
I don't want to use other people's scripts, the entire point of doing this for me is to learn to do it myself :)
JaredTaylor
10-23-2010, 11:37 AM
Apparently I also need some form of corrective blendshapes, like when I blend smile_wide with smile_up it looks horrible, I need it to use a third blendshape in place of the mixture, or something like that.
Any ideas?
Well thats basically what i was getting at - because in most programs the blendshape is tied to is weight. When combining two you'll generally need a corrective sculpt to fix the mixture.
'face.l_smileWide' is essentially your combination shape. One way to treat it like an absolute is to detach the blendshapes from there weights e.g. (roughly)
blendShapeA = (weightA - weightC)
blendShapeB = (weightB - weightC)
blendShapeC = weightC = (weightA * WeightB)
JaredTaylor
10-23-2010, 11:50 PM
That makes me think that I should be writing something like this:
face.l_widen = (face.l_widen - face.l_smileWide);
face.l_smileUp = (face.l_smileUp - face.l_smileWide);
face.l_smileWide = (face.l_widen * face.l_smileUp);
But then how do I make my controller actually control them? Because that way they're all keyed from the expression and can't be moved :D lol =/
Thanks for the help so far =)
I feel like I should of understood by now how to do it, but I really can't :/
CGTalk Moderation
10-23-2010, 11:50 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.
vBulletin v3.0.5, Copyright ©2000-2013, Jelsoft Enterprises Ltd.