PDA

View Full Version : facial animation setup?


Pages : 1 2 [3] 4

eek
09-22-2004, 11:22 AM
Some research ive been working on, and studying muscles:

pic (http://www.eekstudios.com/cgtalk/edge_top.jpg)


edge topology is really important, and crucially an eveness to the surface. This allows for good derformation.

eek

Tulkas
09-22-2004, 03:31 PM
The link dosn't work?

eek
09-23-2004, 10:12 AM
sorry typo, fixed now.

eek

dimball
09-29-2004, 10:44 AM
Hi Eeek!

I've been reading up and down on this thread for a while trying to understand the concepts for a while now. I was just wondering how your position expressions work exactly, especially on how the cheeks work. Can you write a sample of the position expression for the cheek muscle and how the hierarchy looks like? I just need to get a direction to investigate further...

Anyway, your rig looks really cool!

:bounce:

CarlosA
10-05-2004, 02:28 AM
hmm,
just an idea, may be it's been said before(sorry there is no way i can read the hole thread, so i'm jumping in now.), for doing Rinkles you might be able to use bumb or displacments.
may be use a reactor controller or setdriven keys to trigger a blend.
never tried it but i'm sure it would work. plus it wouldn't be very expensive.
cheers,
Los.

dobermunk
10-05-2004, 08:51 AM
hi eek, great r&d here. I have a question about the topolgy image (edge_top.jpg) you posted. I agree 100% with your note about the geometry to the side of the nose wing and lips, (i.e. maintaining a flow from lip to eye) but am surprised by the the note "bad geometry" pointing to the band around the eye.
Are you referring to the concentric band flowing around the eye geometry?
If yeah, is this for deformation when the cheek squeezes up?

eek
10-05-2004, 09:43 AM
Hi Dobermunk,

Ah right, i just basically cleaned up that edge around the eye, because it didnt really serve a proper muscle deformation. Ive done a few test and you have to be careful around the eye. This face is based on my face to i tried to keep it true to mine. Funnily enough, the bad constentric edgeloop only looses one edge to become good.

But yes you right i think, i may have to put it back. That area is REALLY complicated!

CarlosA,

Yes, theres two methods im thinking of implementing. 1 being true muscle deformation for major wrinkles i.e forrow of brow and forehead. And 2 displacement maps/normal, for areas such as crows feet, around eye. This map will be driven by the expressions of the face and will still be regional.

dimball,

Thats still pretty much under raps, but should hopefully post something soon, I'll try and post the cheek expression working.

As for that its getting there, there's some pretty exciting stuff happening on the horizon,
more to come.

eek

dimball
10-06-2004, 11:08 PM
Hi Eek

Another question about the expressions you are using: Are you using position scripts or position expressions for the mouth corners? Because I noticed that the mouth corners behave differently when you are manipulating different parts of the rig. So there must be some sort of dependsOn functions you are using in the mouthcorner right?

Do you experience any big slow downs using position scripts? One of my collegues experienced a major slowdown in his rig when he used position scripts in a large hierarchy..So I'm a bit reluctant of using position scripts, but if there are no major slowdowns for you then I'll try to use it more.

H

eek
10-07-2004, 09:35 AM
The rig uses a system ive come to call 'Progressive Expression', The rig itself uses a layered aproach combining dynamic expressions, with constraints. I.e they drive each other in a ordered hierachal manner. This ordered hierachy is key to the muscle groups - whats drives what and in what order.

So there must be some sort of dependsOn functions you are using in the mouthcorner right? Yes in a manner of speaking, but i dont use function clauses. Scripts would cause major headaches and dont allow for the frequent changes in the rig.


Are you using position scripts or position expressions Expressions.

Do you experience any big slow downs using position scripts?
I used to get major headaches with the rig with speed issues. But now the rig is fast enough for a production enviroment. In terms of speed the rig is fast in interaction and very fast in playback. The rig works also on a unsubdiv model which is itself subdivided.

I use the skin modifier to bind the mesh onto the rig. This makes it very fast. My current
setup is about 3 times as complex as this and theres no speed issues.



hope i could help.


eek

d0up
10-08-2004, 12:41 PM
hi eek!

i've been looking on this thread and the system u've developed looks really interesting and powerfull. your approach to the system with a layered system sounds like the one pixar and other ones use. so, as i think that u haven't made a specific tool (plugin or addon) for your application (max?) i would be really interested to see the way you're doing it with the tools u have. Right now i'm using xsi and as i don't have max nor maya i don't have the chance to test the rig, so i really don't know how it works and can't look into it to see how it works.

:deal:

So, i wanted to ask you for a tutorial (i know that u had the intention to do it), a tutorial explaining the technique in a software independent way, so the people won't continue asking you for the x software version of the rig. A tutorial explaining the concept behind it (walters muscle paper? facs?...) i think that i would be very useull. Maybe explaining the basics, and giving information about your sources of inspiration... so the people could develop it his way.

well... until u decide something i'll read again the posts and take the cool information. :)

thanks in advance. :D

d0up.

eek
10-12-2004, 10:35 PM
Hey d0up,

Yep that sounds pretty cool, atm i dont wanna give too much away. And your right the principles can be applied to pretty much any piece of software. Funnily enough i made the expression part of the rig in maya as a test, and it seems to work well.

Currently im really happy how the rig is shaping up, the main brunt of the rig is done, im still working on the cheek areas as there pretty complex, and just the unique muscle parts are pretty complex as you have layers of expression driving other layers, basically its like a giant rubber band with insertion and flexion.

Im really pushed for time atm and that really annoys me!, currently im the only animator at my comp so have to work my guts off, (writing this at 10.15 pm-just finished work) And trying to find time for this is tough, but i really want it at a stage where its totally finished off. Also i got a few things on the go: rigging website,short film, etc etc. Im not saying its on the backburner, i just want the time to really finish it off, into say one unified system.

Im aiming for this to be plugged into a production pipeline, with a lot of my other tools, so when ive finished the model i can automatically put the rig on.

So please stay tuned, it may be off and on, but im always generally posting updates and ideas. Ive even got a new version on the way.

eek

IkerCLoN
10-13-2004, 01:20 AM
Again, Eek, thanks for sharing all this stuff with us. Personally, I'm learning a lot analizing your rigs :) , and that's a good point!



***offtopic***d0up, only a question... are you from Spain?

d0up
10-13-2004, 09:42 PM
hi again!

As i see, i'll have to wait, or find a copy of max :) . But well, it doesn't matter, there are a lot of things to research in. :D I'll look how messiahs strechy bones work for facial animation. Just looking for differents ways for doing facial animation...

Anyway, about your rig, there are two things that take my attention right now... the layered controls and the "quick setup" system. Well, no idea how they'll work (internally) but they really sound promissing. :)

Keep on the good work, X)

bye!

d0up.

--offtopic, answering IkerClon--yep,i'm from spain, and if you're going to bcn party we could meet there, ok? ;)

dflipb
10-13-2004, 10:48 PM
ok, i heard something about MAYA! um....If you need some other eyes to take a look and give it a test.... Don't hesitate to lemme know :D

eek
10-14-2004, 09:29 AM
Hey D0up,


You shouldnt have to wait long.

eek

PEN
10-15-2004, 12:31 AM
Hey Dobermunk,

Just caught you message about Messiah, cool! about quick skinning! Heres a clip
of the underlying rig as i mentioned.

>>Play<< (http://www.eekstudios.com/clips/frigctl.wmv)

eek
Very cool eek, I wonder if you run into the same problem that I did when doing this sort of rig? I'm interested to see what happens to yours.

Take the whole rig and move it about 10000 units in any direction and see if you can still slide the helpers along the splines. My guess is you will find that they pop from one end to the other uncontrolably. To get around that of course you could do all your animation at world center, pointcache it and load the point cache on the final character.

PEN
10-15-2004, 12:35 AM
Heres a screen capture of the rig with its gui in action:

>>Play<< (http://www.eekstudios.com/clips/frigtest.wmv)

This was a test on how Jason's gui approach would work. hope you like it!

eek
Once again, very nice.

Harvey
10-15-2004, 01:49 AM
Thats an intersting problem you are talking about Paul. It sounds just like a rounding error we were having in max a year or so ago when animating characters a long way from world zero. What happened to us was the teeth chattering effect. Our characters teeth would start to shake as if a noise was applied to them...and there was no animation on the teeth what-so-ever...just linked to the jaw. In the end it turned out to be a rounding error in max...don't know if it was ever fixed.

Eek: very nice set-up...we should definately talk. Your UI set-up is very similar to a new facial system that I made last year ... I don't use any splines in my rig but the UI is very similar both in design and functionality. I would be intersted in bouncing some ideas back and forth. By the way are you achieving the expression targets via wieghted list controllers? Also in a post awhile back you mentioned that your expressions were "hardcoded" and couldn't be modified...in my system you can easily change them and add new ones via a scripted interface. I just can post it here due to NDA reasons...so contact me directly if you are intested in seeing it.

martinc
10-15-2004, 01:59 AM
Thats an intersting problem you are talking about Paul. It sounds just like a rounding error we were having in max a year or so ago when animating characters a long way from world zero. What happened to us was the teeth chattering effect. Our characters teeth would start to shake as if a noise was applied to them...and there was no animation on the teeth what-so-ever...just linked to the jaw. In the end it turned out to be a rounding error in max...don't know if it was ever fixed.

Heya Chris, Paul, Eek, ect...

Yep, I've seen this a few times as well. I don't think this is something that can be fixed without going to a double percision float system. I would love to see this happen, but I have no idea if it's something that can be easily changed.

BTW, your facial rig looks really nice Eek. I'm looking forward to see what you end up with.

-Martin

eek
10-15-2004, 10:31 AM
First off Paul,

Just wanted say your an inspiration to me, i grew up on your work, anticz, FACs etc etc.
So thankyou very much for the compliment, in kind of in awe.

Next Harvey,

As to hardcoded, i didnt mean not accesible just that there wasnt a straight gui to do it, you have to go into the expression controller. So its for a td really, but i like the idea. Im thinking about making the expressions adjustable, so you can change how the rig actually works on the fly.

Thirdly Paul, harvey and Martinc,

This is a major problem in max, i think its due to additive affect, i.e max keeps inherient history of movements under its hood, so stacking controllers ontop of each add to affect. It seems to be relative to postion at creation of controller.

At the minute its an issue, but not too much of a problem. I made the decision to keep the mesh and the rig seperate only connected by a skin modifier. This firstly allows pretty quick results and also allows you to tear off the rig and apply it to new faces. After the rig is tweaked i just hide it, and parent the head to the controls so it doesnt matter if the face is off from the rig, you wont see it, only affecting the gui. Also at say frame -20, i have it all at 0,0,0. Then at start of animation i can move the head round etc etc.I tweaks are need just go back to -20, add poses what knot etc.

Until i find a solution, this is it for the minute. I think it an inherant problem it max's core code.

So yes its been around since the start of the rig, until theres a proper fix im using a work around.

eek

Tughan
10-15-2004, 01:20 PM
Eek, your rig is getting better and better everytime I see it.
As I see in frigtest.avi video, you've made seperate controls for up and lower eyelids. It's looking sweet and seems very fun to pose a character freely like this. But couldn't it be tedious to animate eyelids one by one everytime to make a blink animation? After all a blink is blink. :) It could be great to have a blink slider that makes eyelids fully closed and wide open poses. Couldn't my friend?

I don't know if it could be tedious to animate 16590 blinks one lid at a time. But I guess it will in long term. :D

eek
10-15-2004, 01:34 PM
easy, just copy a slider generate a new float in the stack, rig them up and there you go a new slider for just blinking.


eek

PEN
10-15-2004, 02:46 PM
easy, just copy a slider generate a new float in the stack, rig them up and there you go a new slider for just blinking.


eek
I'm you building in some sort of pose capture utility? It is nice to have the flexability of the on screen GUI but like it was said about the eye lids, it can be tedious to work with. I find one of the things that makes Morph Target animation great for the average TV series or like is that you can get to known poses quickly, you just can't tweek them very easily. I'm actualy just writting a pose cature tool for facial animation in a game. The rig is not nearly as complex as what you have but really just the same thing on a much smaller scale. It will be interesting to see what you come up with.

lucavfx
10-18-2004, 05:14 PM
easy, just copy a slider generate a new float in the stack, rig them up and there you go a new slider for just blinking.


eek
Compliments I've been following the 35 pages' thread since this morning (uao!) and I'm really looking forward to try it.
Just one question: would it be possible to have 2 or 3 systems running in the same scene (in case you wanted 2-3 characters rigged using your system)

Regards and again congratulations
Luca

foxadn
11-04-2004, 09:52 PM
Hello eek, first of all sorry if my english isn't very good, but I'm French.

I read a message from you : "Ive been inspired recently by Golum from Lord of the rings, so im gunna give it a go at putting my rig in a character ooow!!"

Can you tell me if you have a model of Golum, please? I'm searching for the head of Golum, something that can be modified with Maya or 3dsmax. Does anybody have got one?

Thanks very much for your answers.

SkullboX
11-10-2004, 10:34 AM
Hey Eek, this rig looks totally amazing. I just found about this thread and finished reading all your post throughout all the pages. I'm personally about to finish the first face I'm going to use for an animated short. Though the facial animation will not be very elaborate, and no lipsyncing will be done at all, this solution look amazing, especially for the other character.

It looks like quite a lot of scripting, if only in the form of expression controllers, needs to be done in order to create a rig of this kind. In the case you're still working on a tutorial to be released in the near future on how to construct such a lovely rig, do you think the tutorial would be suffice for somebody with only rigging experience in the form of bones, skinning and morph-targets? I learn fast an naturally am willing to, but will it be possible without extensive tutorials and books on the subject of scripting?

The only think I kind of missed out on was having automated eyelids. The eyelids normally automatically adjust relative to where the eye is looking. Of course that system would require manual control for the eyelids on top of that. I've seen this used on many maya-rigs before and it looks like something rather useful, though it might not be everybody's preference.

I just tested the first max rig you posted in this thread and it looks awesome, I can only imagine how well your current revision works with the on screen controllers for the custom attributes. Good luck on the project, it looks extremely cool. I hope it's available in some state in the near future so I can use this method in order to construct my rig. If not, I'm sure I'll get back to this later. :)

eek
11-10-2004, 11:27 AM
Hey Skullbox,


Thankyou very much, the rigs looking very promising atm, theres a few problem areas to fix.

It looks like quite a lot of scripting, if only in the form of expression controllers, needs to be done in order to create a rig of this kind. In the case you're still working on a tutorial to be released in the near future on how to construct such a lovely rig, do you think the tutorial would be suffice for somebody with only rigging experience in the form of bones, skinning and morph-targets? I learn fast an naturally am willing to, but will it be possible without extensive tutorials and books on the subject of scripting?
Theres no scripting involved, just a lot of expression. Theres tons of ideas in the pipeline such as sticky lips, eyelids that follow the eyes around etc and these are really easy to put. In general terms its a layerd aproach, so for td/animators its a dream, as you can have as little or as much as you want. Also you can build new shapes on the fly as theres no morphs/bones involved but rather relying on the muscles of the face.

The aim of the project is to build a production model, i.e a system to fit into the pipeline of a short or feature and to this end theres certain things that have to go in. current im looking into two areas 1: the rig completely automated from the ground up. I.e you just load your character model, arrange a reference model for the face and click build and it builds the rig. All you have to do it skin it.

Gui would also be built, basically you would ask for ee,ohh,aahh,ff v shapes and it would produce it.

2: export and import of animation data, i.e animate one character. Export the lip syncing and apply it onto another. The rig from the start has been design for this purpose.

Also with new versions of max its very/very fast even though its running about 40 expressions in the mouth alone!

I just tested the first max rig you posted in this thread and it looks awesome, I can only imagine how well your current revision works with the on screen controllers for the custom attributes. Good luck on the project, it looks extremely cool. I hope it's available in some state in the near future so I can use this method in order to construct my rig. If not, I'm sure I'll get back to this later. :)Yep the rig will be automated, so you dont even need to build it from scratch :thumbsup:

So more to come, ive been a little busy of late. Work/jobs etc etc.



eek

SkullboX
11-10-2004, 02:54 PM
Thanks for the quick reply man

Also you can build new shapes on the fly as theres no morphs/bones involved but rather relying on the muscles of the face.Yeah that's exactly why I'm so interested in this system. I don't care much for animation sharing between characters at this point but the intuitivity and accuracy of such a system really appeals to me. With Morph targets it's a lot harder to make really subtle movements, and animating with values blending pre set targets just isn't a nice way to work, even though it can be effective.

1: the rig completely automated from the ground up. I.e you just load your character model, arrange a reference model for the face and click build and it builds the rig. All you have to do it skin it.What would this reference model consist of? Setting up the The m-lines (I believe that's what they were called) for face, nose, mouth and eyes then having the 'click buid' construct the controls for any setup?

Well, it sounds even better after these awnsers. If you need someone to test your system on a rather unconventional human face setup somewhere soon let me know. :P

eek
11-10-2004, 06:38 PM
Yeah that's exactly why I'm so interested in this system. I don't care much for animation sharing between characters at this point but the intuitivity and accuracy of such a system really appeals to me. With Morph targets it's a lot harder to make really subtle movements, and animating with values blending pre set targets just isn't a nice way to work, even though it can be effective.The systems come to use what i call " progressive expression" i.e expressions , driving expression. All linked up in a muscle matrix. The benefit of this is two things, reduced additive effect, i.e when you push two morph targets together to far they can break. With this they dont.

And secondly layered nuances, this is crucial in the setup. In keyframe animation you do block out, keys, mids , overlape etc etc. This use a similiar aproach you do your basic lip sync performance, then add subtlty, make it frown,snigger, talk out the side of the mouth. But the nice thing is that it retains the performance lip-sync. Your not in morpher based animation adding another target, which can dillute the mouth shapes, rather your pulling muscles around.

Its in a way a combination of bone/ and shape setups. But slightly new in certain areas.

What would this reference model consist of? Setting up the The m-lines (I believe that's what they were called) for face, nose, mouth and eyes then having the 'click buid' construct the controls for any setup?
um, i dont mean that. More over, you would click generate reference which would builder markers for you to place on your characters face. Then you would hit build rig. So the markers could in theory be put on any face, dog/monkey/alien etc etc.

Ive been a bit busy of late, but i should be able get back to it this week.

eek

dimball
11-15-2004, 02:23 AM
Hi

I've just been playing around with expression controllers now, and I've seem to come over a slight problem:

If i create the expression with the timeline from 0-100 and then expand the frames from 0-500 (or some other number), and then hit auto key and then go to frame 500, the expression value is reduced to almost nothing. I think this may be something with the normalised time value, as it still thinks that the timeline is still at frame 100. So you would basically get 1/5 the value for that expression at frame 500, this is also applies if you reduce the number of frames too, which would make the value too great. Eek, i'm sure you've been through this problem, or is just me? This only happens when auto key is on, when off, it works fine.

Bug?

one way around this is to delete the expression, change the time line to what it should be and then create the expression over again. Very tedious!I must have missed something....

Anyway, just wanted to let you know, since you probably have a lot of expressions working there..

Cheers
Huy

marktsang
11-15-2004, 02:50 AM
hi dimball,

expression controllers, script controllers, and wires all have there effective ranges set to the current timeline length when created. so when you create them you could set your timeline to 0 - 10000000 so their ranges will always be long enough, or you could change them in the dope sheet by hand or (and this is recommended)you could go to scriptspot.com and get the set wire ranges script, which will set all ranges to a specified length.


mark

eek
11-15-2004, 09:11 AM
Thats correct

i think i start with a range 0f -10000 to 10000


eek

joconnell
11-15-2004, 02:59 PM
Heya Eek - Really great rig and definitely looks like the way forward for really nice expressions in facial animation. When you're skinning the face do you pretty much know what weights you need to use on a vertex to get the appropriate deformation already? I notice that in the test scene you released it was pretty much one helper per vertex around the mouth - Whats your plan for more complicated meshes? Also I notice a huge difference in speed of update of generations of the script, especially the jaw rotations on the blue cyclops screen capture videos - Have you changed from position constraints on the vertices to another method to get more interactive rigging? Also it seems like the jaw control is driving a helpers rotation in some fashion and that the mouth helpers are parented to this - is that the case?

Really enjoying this thread - I'm going to start properly picking apart the older rigs and hopefully will get a better understanding of how youir speed ups are done.

P.s. MarkTsang - just noticed your location now - Ha ha ha! Where you working?

eek
11-15-2004, 07:47 PM
Hi People,


Well i decided to build a new version over the weekend:

http://www.eekstudios.com/cgtalk/frig3.gif

This has got some of the new ideas, ive been discussing recently. Firstly 'crease control', ive added interactive muscle which bulge around the brow area, and nose when you sneer. Ive also added 'lipstick' basically when you open your mouth, your lips slightly stick together. Now this is in only a rudementary version so far. Ive also done a rework on the base expressions and added new eye setup. Ive also reworked the cheek system.


The rig consists on 148 expressions, around 60 constraints, 48 controls, and tons of more stuff even before mouth shapes!!!. Speed wise its slightly slower that the blue characters rig. But not much.

Over the next week ill be discuss the ideas in the setup, namly how the creases work etc. Also atm theres no gui, but hopefully soon.


ok onto questions:

Hi Joconnel,

When you're skinning the face do you pretty much know what weights you need to use on a vertex to get the appropriate deformation already?
A little, it really depends on each area, In previous rigs, i was skinning directly to vertexs, in this version ive added spline as actual bones. So its a combination of both. I use the approach of skinning all to one point/spline then weigting off onto the next. It takes its time!

notice that in the test scene you released it was pretty much one helper per vertex around the mouth - Whats your plan for more complicated meshes?
Umm, it doesnt matter, vertices do have to rest exactly on specific areas, just have tobe i close proximity.

Also I notice a huge difference in speed of update of generations of the script, especially the jaw rotations on the blue cyclops screen capture videos - Have you changed from position constraints on the vertices to another method to get more interactive rigging?
Someone posted the idea that i should use the skin modifer instead of xform, from then on it became production viable! And i got the speed increases.


Also it seems like the jaw control is driving a helpers rotation in some fashion and that the mouth helpers are parented to this - is that the case?

Yes, its a little more complex than that, its drives, points, which drive and are driven by other points, controlled via expressions.

Hope i could help,

Right i gunna got get the facs manual, and try to simulate some of the poses.

eek

ngrava
11-15-2004, 07:58 PM
I think I missed somthing... Did you recently post a version of this that we could download and checkout?

-=GB=-

Tughan
11-15-2004, 08:45 PM
[QUOTE=eek]
...The rig consists on 148 expressions, around 60 constraints, 48 controls, and tons of more stuff even before mouth shapes!!!. QUOTE]

Wow... You're not getting any tired do you? LOL :)

It gets better and better. Keep it up my friend. :thumbsup:

eek
11-15-2004, 09:20 PM
I think I missed somthing... Did you recently post a version of this that we could download and checkout?

-=GB=-
Umm i only posted a pic of the mesh, not the rig. As i only finished today. The gui not even ready, i just wanted to show you guys!

Hey Tughan,

Cheers man, you seem to have have followed my ideas from the start, and im very grateful for that.


eek

mmm, (thinking aloud) checking out incredibles, may need to tweak some areas.

dflipb
11-16-2004, 04:50 AM
As usual, More brilliant stuff!

joconnell
11-16-2004, 11:27 AM
Eek it looks fantastic so far - I've never done a facial rig past using the morpher so it's a bit more daunting looking at all that weighting. The results are fantastic though - the range of expressions and sense of volume you're getting is really fantastic. Could you replace the expressions with reactor controllers or is there something more sinister being done?

Thanks again - it's been a great insight into a really good approach into rigging :)

eek
11-16-2004, 11:33 AM
Eek it looks fantastic so far - I've never done a facial rig past using the morpher so it's a bit more daunting looking at all that weighting. The results are fantastic though - the range of expressions and sense of volume you're getting is really fantastic. Could you replace the expressions with reactor controllers or is there something more sinister being done?

Thanks again - it's been a great insight into a really good approach into rigging :)

Why i chose expressions over reactors,

The problem with reactions is that you can only drive one reaction with another object, that is once say x is being driven by another y, it cant be driven again. Its not like set driven key in maya. The benefit of expressions is that there very stable, and through using the float list you can have multiple drivers on the same axis.

Thats the key!

eek

SkullboX
11-16-2004, 12:15 PM
It seems to be coming along very well, looks awesome.

One thing though, I noticed there didn't seem to be too much control or detail in the deformation of the cheek. I attached a pretty simple picture, but you can see where the control seems to be lacking, and where the expression looks 'rigid' compared to the rest.

nottoshabi
11-16-2004, 04:51 PM
Wow... Eek thats phenomenal. Can you post a down load?

eek
11-16-2004, 05:48 PM
It seems to be coming along very well, looks awesome.

One thing though, I noticed there didn't seem to be too much control or detail in the deformation of the cheek. I attached a pretty simple picture, but you can see where the control seems to be lacking, and where the expression looks 'rigid' compared to the rest.
yep, your right. Back to get fixed. This is a nice thing about the rig it can get tweaked to suit the animators needs.

eek

joconnell
11-17-2004, 04:22 PM
I suppose another benefit of using things based on the percentage controls of the path constraints is that it makes it quite easy to re-use animation as the percentage values are independant of the size of the rig - is this the case with some of the expressions too?

For a complicated character how long do you find it takes to skin a face using the current setup?

eek
11-17-2004, 04:39 PM
I suppose another benefit of using things based on the percentage controls of the path constraints is that it makes it quite easy to re-use animation as the percentage values are independant of the size of the rig - is this the case with some of the expressions too?

For a complicated character how long do you find it takes to skin a face using the current setup?
Yes, and about a day/2 days. It depends on what you want out of the rig, it may take upto a week, to get everything just right.

eek

joconnell
11-17-2004, 11:42 PM
Hmm - Unfortunately I work in commercials so I probably couldn't afford the time based on 3 weeks for a 30 second ad on shit irish budgets :/

It seems Like the risk is worth it though - I generally model characters in a fashion that would set up nicely with it so it'd be interesting to try all right. I'm sure even a simplified version of this type of rig would allow me greater expression than a morpher setup. The Jaw movement on the blue alien example was really fantastic and pretty much sold it for me - I might aim to get just that as a start and build it up as I have time and get my skinning process refined.

I'm really looking forward to seeing the next release of this - It's an eye opener :)

eek
11-18-2004, 09:41 AM
Well in time terms, the blue guy only took about 4 hours to skin up. My recent rig took in all about a day. Personally i thinl it is worth it if your trying to get accurate deformation, eg. say if your doing a face replace, its pretty important to to ge a nice balance.

Also, importantly sync can be applied to multiple rigs. So you do say one guy cheering and apply the animation to all of them.

Thanks for your interest, Yep the jaw system is pretty complex, it took me ages and ages to work it out, i studied tons of facial reference, and muscle deformation. Its has around 70 expressions in it, and several constraints.

The version i recently released has the same system, much more refined and improved.And the mouth system is used in the eyes to. I need to make a few tweaks then ill post a video.

eek

eek
11-20-2004, 07:35 PM
Im going to start working on a new system of generating animation via a non-linear system aproach. Im calling it "Emote" as it will combine phonemes and emotive nuance, using max script and sdk. Similiar to bobo's enlarge script. So i might be in need for some scripters out there?

Ive looked in the approach valve are using in hl2, firstly there using a similar approach interms of setup. I think there using a FACs based aproach with around 40 muscles, mine uses 48 currently.

Theres some key things im gunna try and incorperate:

It'll be a layered aproach: the sound clip, the nla clips of phonemes and the emote layer i.e happy,sad,shy,fear, anger etc

It will be standalone window in max
The ability to save you nla scene, eg after effects and premier.
The ability to export/import layers
The ability to tweak individual layers, so ohh.1 might be different to ohh.2 etc

The system wont rely on phoneme shapes i.e ee ohh arr v/f i dont think, but more on and textual reprenstation.eg.

waveform: ...;'''';;;''''''..'.'.'.'.'..''''''.'.''.'.'.'.'.'.'''''''''''''''''''..'.''
text: Th i s i s a t es t
rather than:
oh ah v/f eee oh ahh

But it will still run on an underlying phoenome/viseme system


The system will work like this 1: import/load dialogue 2. open drop down list for textual phoenemes and add the clip you want eg. Th 3: your be able to drag the clip/stretch it and change its value. 0 -100%

Then add another and layer it across eg. e The blend will be how much it overlaps.

This part is the speach part.

Then ontop of this is emote layer. A similar aproach but using nauance clips eg. happy sad shy etc. Options to turn off left/right side may be added.


Each clip will refer to a pecentage value of a slider, which inturn goes back to the rig.

Maybe the ability to layer to clips together ontop should be simple enough.

Maybe another layer for head turn/positon?

So im gunna look into nla setups and sdk scripting. Its just an idea atm, but i think its possible.

eek

eek
11-24-2004, 08:38 PM
So i just read a great article about gollums face and about how each shape had a number so in theory you could do stuff like 12*13*45

The nice thing was that combining 2 combinations to produce over 100% would never happen, shapes would equal themselves out. So i gave it a go, i knew they relied on expressions so i spent today figuring it out and wow! how hard is it!

Hats of to them! I can see why its so hard now!

Below is just half an expression!! for just two mouth shapes ive been working out:

if (a>b,a+(-b+b/2),-b/2+(a/2+b/2))


if i can get it to work ill post it.



combining 3 now thats gunna be tricky!

eek


Quick edit: Just tried it out on the blue guy and its absoultly amazing!!! no, exploding, due to too much additive affect.

DogBreath
11-24-2004, 10:56 PM
Sounds like you've made some great progress, if you can solve the 100% conflicting shape dilema.

Do you have a link to the article?

eek
11-24-2004, 11:07 PM
http://www.lowend.se/3d_festival_notes/3df_03_facialanimation.html here you go.

Also another expression currently working on:

if (a>b/3-c/2-d/3,a+(-b/3)+(-c/3)+(-d/3),(-b/3)+(-c/3)+(-d/3))

Im posting this just to show you how complex these things can get, ^ is using 4 shapes,all tweakable. btw not finished yet.

eek

eek
11-25-2004, 11:28 AM
I found a possible better,cleaner way to parse the above expression off. More to come...

edit:

I dont think its possible to parse off all the shapes under one expression, i think im gunna have to use a float list controller. As im aiming for exponential, shape balancing eg. 1 shape 50% then 25% then 12% etc etc. Its a bit complex.


eek

eek
11-26-2004, 10:04 AM
Ok after a day of grinding my head, i think ive worked out exponential blending of three poses.

So first the expression(alot cleaner than before)

((a+(-b/2^c/2^a)+(-c/2)

"a" BasicallyDescribes 1 path controller controlling another path(the expression controlled one), with "c" and "d" 2 other path controllers having an influence. Then i apply this to the other two path controller.

So in total you have 3 paths controlling 3 other paths eg. a b c
controlling d e f.

A controls d, but b & c have an influence, and so on and so on.


So this is expression, but due to path controllers going below 0, you need a condition.

if ((a)<0,0,a )

so a is the above expression, this basically say if a goes below 0, then the controlled path stays at 0, else it carries on with the expression.

so in total you get:

if ((a+(-b/2^c/2^a)+(-c/2) )<0,0,a+(-b/2^c/2^a)+(-c/2) )

Theres a few things i need to work out. But this is base expression.

First test is to get frown> anger> surprise working.

eek

eek
11-29-2004, 11:50 AM
This is more difficult than i thought, firstly there so many ways to go about keeping volume. You could go by the theory that says that each muscle keeps 100%, so 2 poses combined = 50/50. Etc etc.

The other way to go about it, is how gollum was acheived, basically if two poses where combined and broke, a new fixer pose, would be introduced, to counteract the problem and fix. Now to do this with every combination is incredible! And there must of been a hierachal matrix of combination in strength. For instance jaw open would be 0 or the base pose, with the next most powerful/used shapes coming from that and their relative fixers.

Now on top of this is which pose you blend to, and from. So blend from a to b, may have a fixer ratio different to than blending b to a.(similary to how muscles work, i.e the insertion will pull differently to the end attachment)

Now if each pose in gollum was a combination of actual muscles/muscle groups(similiar to mine), is the fixer pose, counteracting the entire combination or the individual muscle thats causng problems? If this is right then, it wont be that hard to implement.As i already have base system there.

Are these fixer poses based on actual muscle poses?, this needs more research. The fact with gollum is that the fix wouldnt cause 50/50 ration, but rather, if the combination started to break then a fixer would be introduced. But this begs the question how to extrapolate, individual muscle shapes?, as you cant see them individual in your face, only combinations?

Im going to look into whether its a case of fixing broken combinations via a whole pose fix, or an individual muscle fix. And look into in the hierachal order thes take affect, probably from the base muscle groups first i.e. Jaw open.

Fixing a broken muscle of a combination, is relatively easy. The order of which pose you come from is the hard part.

eek

joconnell
12-07-2004, 03:49 PM
I reckon your username is becoming more and more appropriate judging by the list of expressions ;)

seven6ty
12-07-2004, 05:34 PM
Heyyyy! And his number of posts is my name, whoop whoop!

Hah, not for too long though, I'd imagine. :)

Tughan
12-07-2004, 08:35 PM
LOL :)

Eek, if you're reading this, don't post any message ever to ruin this beautiful harmony. :D

oveis86
12-10-2004, 07:19 PM
new in this thred.... can somebody tell me how get this for max6?!

eek
12-13-2004, 12:11 PM
(sorry, im gunna go over the 760 mark),

Im working on a reskin this week, of the model after some modelling tweaks round the nose area. I reworked the stickylip system over the weekend, now known as "zipper". Previously it worked in one foul swoop, i.e being closed or not. Now its very subtle, the mouth middle opens first the then the corners, peel open. Atm its driven off the mouth opening, but it can also be place into a slider to be controlled any time.

http://www.eekstudios.com/cgtalk/ziptest.jpg

>>PLAY<< (http://www.eekstudios.com/cgtalk/zipper_test.avi) -test 1
>>PLAY<< (http://www.eekstudios.com/cgtalk/zipper_test_smile.avi)- test 2 (with smile)

ive been looking into the viseme/phoneme approach recently. Both hold up nicely in different areas. The approach im going for is, similair to visemes but each viseme drives a component set of muscles, so e.g smile will drive the cheek up, plus the lower eyelid and maybe a little of the nose. The nice thing with this is that you have control to exactly how you want the system to work.Basically you can tailor make the system.

eek

joconnell
12-13-2004, 04:27 PM
Zipper seems appropriate - it could be the interpolation possibly but it seems like the mouth peels apart now like the top of a zip lock bag - Looks like the expression that drives the other points kick in linearly. Again really impressive stuff - Can't wait to see more facial tests and hopefully will start my own implementation of something similar (though a lot simpler) soon :)

eek
12-13-2004, 04:56 PM
Yep, in the clips Zipper is 100% on, but its completely tweakable. You can even turn it off when you dont want it.

Looks like the expression that drives the other points kick in linearly.yes, its very simple system but laid on a pretty complex one. The nice thing is you can add as many layers/controls to the system as you want. This is just one of them, and its infinately tweakable.

>>PLAY<< (http://www.eekstudios.com/cgtalk/zipper_test_comp.avi) - another test showing off zipper, the red line is the mouth open smiling, the white line is the Zipper in action driven by a slider.

eek

Harvey
12-14-2004, 04:25 AM
Looking cool Eek. Couple of thoughts on the zipper.




it looks good on the opening but I personally think it feels wrong when closing...basically this is becuase the zipper effect is caused by lips sticking together. However by zippering together on closing it feels more like its muscle driving them together as apposed to the lips just sticking. Did that make any sense? Basically I think the zipper effect should only be enabled upon the mouth opening...not in closing.


It would be very cool if you could offset the zipper effect sideways...so you could open the mouth from the corner first or whatever and still have the zipper effect (maybe its already set-up this way).

eek
12-14-2004, 09:19 AM
ah yes, your right.Oops! That should be an easyish fix to do, need to add another val in there, cheers Harvey.

Offset is a part of the system ive been thinking about for a while, it pretty complex to set up, but i'll giv it ago. Getting the zipper to do the starting from left or right thing can be done. Basically my brain needs to think about it lateraly. The key is what is driving it, from a control point of view.

I could go via the theory of if a and b are too close to each other they stick, but this might lead to popping.

anyway cheers,

eek

PEN
12-21-2004, 02:22 AM
Ok after a day of grinding my head, i think ive worked out exponential blending of three poses.

So first the expression(alot cleaner than before)

((a+(-b/2^c/2^a)+(-c/2)

"a" BasicallyDescribes 1 path controller controlling another path(the expression controlled one), with "c" and "d" 2 other path controllers having an influence. Then i apply this to the other two path controller.

So in total you have 3 paths controlling 3 other paths eg. a b c
controlling d e f.

A controls d, but b & c have an influence, and so on and so on.


So this is expression, but due to path controllers going below 0, you need a condition.

if ((a)<0,0,a )

so a is the above expression, this basically say if a goes below 0, then the controlled path stays at 0, else it carries on with the expression.

so in total you get:

if ((a+(-b/2^c/2^a)+(-c/2) )<0,0,a+(-b/2^c/2^a)+(-c/2) )

Theres a few things i need to work out. But this is base expression.

First test is to get frown> anger> surprise working.

eek
Your mad I tell ya! mad!

Keep up the good work eek. I wish we could work together it would be alot of fun:)

eek
12-21-2004, 09:47 AM
Your mad I tell ya! mad!

Keep up the good work eek. I wish we could work together it would be alot of fun:)hehe, i do love using expressions, compared to constraints there indestructable! and amazingly powerful. You should see my notebook! filled with the inner workings of my head!. I had a little break from the expressions, need to understand exactly what i want to do. The hardest part of all of this is know exactly what you want the rig to do i.e how exactly do i want to keep poses from exploding. Theres so many ways! I sent the prob to Kees, i think he's thinking about it slowly!. It took the gollum guys 2 years to work it out eek!

Paul,

Your one of the guys who inspired me to get into this industry!, i would love to work with you on this. I'll PM you my email, and msn. It would be great!

eek


BTW eveyone whos helped me out on this thread, your've all been fantastic and a incredible help, thankyou and have a very merry christmas!

Tughan
12-21-2004, 12:10 PM
merry christmas my friend! :)

I know what will I want from Santa this Year. If I see him, before he say "ho..." I'll jump on and grab his beard and scream "I want eek's brain dude!" :scream:

But if he keeps his promise and put a brain inside a pair of socks on christmas night, that would be disguisting hehehe. :p

Peddy
01-06-2005, 08:21 AM
my god. you have patience!

markbehm
01-08-2005, 11:26 PM
Hey, Eek.
I've read the thread a few times now, and tried to follow the changes. I wanted to make sure I have the basic idea of the current lip functions. Eek, Can you (or anybody that really understands it) clarify if I have it right?



Mouth corner "nulls" directly drive the corners of the mouth m-line directly.
Mouth corner nulls indirectly drive the positions of the other mouth m-line points (verts or CV's) to "shape the mouth".
Jaw also drives the mouth m-line verts AND the mouth corner nulls - to open and close the mouth.
Each vertical mouth m-line's "lip point" (mid point) is attached to a point on the mouth m-line.
Each vertical mouth m-line's end point are attached to the head at one end and the jaw at the other end.
The lip null box (skinning is to these) is "home" at the "lip point" of the red and blue lines - and can travel up or down from there along the vertical m-line.

Other than the layer of higher level expressions is that about how it works?
Much appreciated.

eek
01-10-2005, 10:00 AM
Im kinda Mark, yes. The key is that is there an order to it. At its base is a set of expressions, which drive and are driven by other controllers/helpers.

Mouth corner "nulls" directly drive the corners of the mouth m-line directly.

Um no, they drive a set of expression, in which m-lines are connected.


Mouth corner nulls indirectly drive the positions of the other mouth m-line points (verts or CV's) to "shape the mouth".


Jaw also drives the mouth m-line verts AND the mouth corner nulls - to open and close the mouth.

No, but rather the expression layer dynamically.


Each vertical mouth m-line's end point are attached to the head at one end and the jaw at the other end.

um, in a way yes.


The lip null box (skinning is to these) is "home" at the "lip point" of the red and blue lines - and can travel up or down from there along the vertical m-line.

Yes, theres two reasons for this. Firstly linkage and secondly abiltity to add more functionality e.g bulging/creasing etc etc.


So kinda Mark, Btw im big big fan of you work right back to the creature sweeping up. Really nice work! Ill pm, you my contact details if your stuck, or wanna know more stuff. Atm im do a version for a friend/whilst animating.

eek

eek
01-11-2005, 11:18 AM
Ok, ive been given the go ahead to post a pic of the rig for a friend of mine.

Here you go:

http://www.eekstudios.com/cgtalk/fred_rig.jpg

This is currently in developement, not skinned yet. There's a few more muscles i need. And scripts to be written. Ive also added a new cheek muscle to keep shape.

There'll be three layers of controls:

1. High Level - poses
2. Mid Level - muscle Vismemes
3. Low Level - Finite control

The ability to generate poses is currently in the works to.

eek

cecofuli
01-11-2005, 11:54 AM
Eek, good job! For my rig

http://www.treddi.com/upload/cecofuli/Upload/02%20-%20Tutorial/04%20-%20Character%20Modeling/03%20-%20Facial%20setup/Compressa.avi
i have taken in consideration your method. but if you want to obtain a cartoon pose (therefore extreme pose) with your sistem is a little difficult. I'v see the nabu script and I have understood the bae of this sistem. For you what is the best method for a face righ? Bones, morph or eek system? See you later :-)

laber
01-11-2005, 12:58 PM
hey, thats a nice and solid rig, good work

Kizza
01-13-2005, 04:35 AM
That rig is wild. I must learn to do this in Maya because I'd really like to get a cartoony rig like this for my work. Must learn!

eek
01-13-2005, 10:15 AM
Ive found a way, to control each side of the face. Eg. 50% oohh shape on Left, 25% on right etc etc.

...more to come.

eek

king21
01-29-2005, 12:06 PM
Hello EEK!

I read through thread and my jaw felt down. Amazing stuff.
i just want to ask you how the thing with maya is going on.
I reaaaally would like to se it working in maya.

Good work, from you really.

Bye

eek
02-07-2005, 10:03 PM
More work on "Fred", a character for John Lee's short film...

http://www.eekstudios.com/cgtalk/fst.jpg


Testing out the eyes working properly, and the brow muscles. The mouth is pretty much done.

more to come...

eek

dobermunk
02-07-2005, 11:03 PM
What's the control for the jaw?
I see one that I interpret as being the lower lip, but not one where I would immediately assume I'd control the jaw by moving it.

This looks really hot. Can you make a video of interaction with the handles?

Kizza
02-08-2005, 03:33 AM
Whoa! That's looking awesome.

eek
02-08-2005, 09:46 AM
Hi Dobermunk,

Hows things going?, the control for the jaw is th big box point by the left cheek. Its very simple just rotate/move and the jaw opens, but because everything else drives off it, works very well.

Yep, ill have a video up soonish..

eek

dobermunk
02-08-2005, 10:00 AM
:-P
Things are good! Also working on a short - still in pre-viz and story.
("What Women really Want".)
Looking forward to what John does with this - he's a great voice actor.
And animator. Say hi from me!

eek
02-08-2005, 07:33 PM
Skinning is pretty much done, need to add nostril snarl controls and skinning. Then its onto setting up each control layer.

http://www.eekstudios.com/cgtalk/muscle_test.jpg

Checking out the frown muscles working really nice!.

Dobermunk, thats cool!. Ive got a short in the works also, which will use this rig too eventually.

eek

cecofuli
02-14-2005, 01:56 PM
Eek, you have a PM full box. I can't sand you a PM

Greate facial setup!!!:buttrock:

eek
02-14-2005, 02:04 PM
Sorry, cleared now. Try again.


eek

Goig!
02-26-2005, 05:17 PM
Ack!!! I read 39 pages and the tutorial is not ready yet, what a ripoff!!! :scream:

No matter, your ideas are exellent, and worth the wait, keep up the good work, Eek

barbapapa
03-02-2005, 10:05 PM
hey eek great work on that rig (you must be tired of people telling you that, but man , this is a really good work , amazing.) will you release it with the tutorial that you promised?? it would be fantastic to learn the whole thing from the basis!
cheers

eek
03-03-2005, 09:50 AM
Hi people,

Sorry ive been away. Very busy at work i.e all hell breaking loose!. Heres a another pic of all the controls in place. Now i have to start adding the gui and working out the M-Visemes. (btw a tutorial?, yes it will happen.But not quite yet)

http://www.eekstudios.com/cgtalk/frig.bmp

eek

Dodgeas3d
03-03-2005, 11:18 AM
This thread is incredible, took whole day to read all of this :)))

Regards to eek! with a wonderfull and educational work and others for the feedback.

That kind of rigging was new to me i used kinda old method of morphing in max (facial morphing - expresions), but I found it limited of some reason, cant get much controls (need to model alot morph targets :/) so Im looking for new methods of face rigging, and I found this (Your) interesting and usefull method. But at the moment of your screens and talk i cant get , even stetup these muscles, or however u call rigg. Just technicaly intersting how u do it on max.

Looking forward for your tut!

Keep it going with good work!

coolwizj
03-10-2005, 09:09 PM
Awesome method! I'm hoping to find a way to achieve the same in Blender3d. Is there anyone that can help me?


- Ian

eek
03-11-2005, 09:43 AM
Im just about the build the gui system, its taken awhile just to work out the viseme order, and the three levels of control. At one stage i was gunna make a hard and fast decision on the top level i.e poses stored into the gui, but now through discussing ideas with friends, im gunna build a script that will store these and drive the lower visemes. This makes generate poses from a TD's point of view very easy and hopefully a animators to.

Im gunna build a prototype ,first of the gui , then of the viseme order and script system. More to come.

Also as a side note thinking of automated updates, that get sent here, as i work. But i dont know.

eek

SamSed
03-11-2005, 01:30 PM
very good work you're doing,no , an excellent work Eek:buttrock:, keep going man.
i'm waiting for the tutorial impatiently:bounce:.
Thank you

eek
03-29-2005, 06:38 PM
Been rather busy lately, (website,work etc etc) But had some time to work out a new muscle type for my rig over the easter break. Im getting some speed issues with the rig that im trying to sort out, interactions really quick its scrubbing the time slider thats causing some bugs.

So anyway theres tons of control in every part of the face except the cheeks , which simply relied on a basic set of expressions to drive them. So i developing two types of muscle: complex types which im calling "T-Muscles" and simple which are called "CL-muscles"

T-Muscles also known as tangent muscles rely on accessing bezier handle controls, and diriving them with expression. This enables precise control of squash and stretch whilst retaining control over the top and bottom.

http://www.eekstudios.com/cgtalk/T-muscle_pic.jpg


>>CLIP<< (http://www.eekstudios.com/cgtalk/T-muscle_clip.avi)

(ill add these updates along with more stuff on my site)

eek

dimball
03-29-2005, 06:59 PM
Hi.. I had the same problem when i did my dissertation on a hand...

To overcome this problem, I wrote a script replacing the timeslider. What happens it that max tries to pre-compute or cache all the movements in the expression controller when you hit the play button or move the timeslider. If you try to use the spinner or just type in a frame number it will jump there fine. The script is just a slider telling which frame to go to.
One other thing too, is if you try to go to the root of your hierarchy and animate that, you will probably experience the same slowdown. I had the same problems trying to use the preview render, so i made my own that could do that... Normal rendering is not affected.

I hope this helps a little on your problems..

Huy

Tughan
03-29-2005, 07:02 PM
That's really cool. Like a muscle tissue isn't it?

Can't wait to see it on a face. :)

Harvey
03-31-2005, 06:35 AM
Very cool looking Eek. The T-Muscles (if those are the ones shown in the clip) look very similar to a new spine system I have started using recently. You can get a lot of great control out of the bezier handle set-up like that!

eek
03-31-2005, 08:13 AM
Its a lot more stable and presice, the control is there to *control* how each part reacts like the mouth, so .eg he maybe boney and have no cheeks, or very few so you can in essence design how you want the face to react.

Btw, Hows things going Harvey. Havent spoken to you in a while.

eek

Harvey
04-01-2005, 04:33 AM
Sounds very cool Eek. I would love to play with it one of these days. As to how things are going...things are good. Been pretty busy with work, been down in Australia for the last few months working on a film. And on the side I am finally putting together my Vehicle Rigging DVD's. Also I am currently building a new rigging/animation tool or pipeline, whatever you want to call it. I am pretty excited about it but it seems its hard to get enough time to finish it up. Once I get more of it complete I will share some teasers here.

How are things going with you?

eek
04-01-2005, 08:37 AM
Good Harvey, im good. Pretty much same as you - working out pipes, rigs, animations. Theres a few things in the works, and as you say never enough time!.
But yes it be great to catch up some more and discuss more setups and techniques etc etc you got my email i think, dont know if you have my msn?

eek

p.s - more to come.

lyppeter
04-02-2005, 12:22 AM
ekk!
will you share a facial file ? older version is ok,the link before is broken.thx!!!

Hellbring
04-18-2005, 08:55 PM
eek, those objects that you have moveing along the mlines, are you able to interact with them directly or only through a slider?

eek
04-18-2005, 10:09 PM
both.


eek

Hellbring
04-20-2005, 04:41 PM
I have been trying to make a setup like this in XSI however the object you have "contrained" to the m-line is giving me the most hassle.


In XSI constraining an object along a path is % based(which in most cases seems to work fine) however, it seems that in your setup you have the m-line for the top lip connected to the jaw as well as nose. So when opening/closeing the jaw the mlines get longer which in turn move the contrained object due to its % value. Are you counter animating the top lip so it doesnt pull down when opening the jaw or is there some other setup that woudl work better?

eek
04-20-2005, 05:42 PM
When i did the very first version of the rig yes your correct, i had to counter animate to make the jaw open. Only until i started to implement a expression based aproach in combination to this setup was the rig production viable.

So in terms of the lips, each part of the lip is skinned to a point, which resides on a spline path. But this is only the first part. On top of this the spline path itself is controlled via a series of points via expressions and constraints and skinning. The mesh itself is only skinned to the top most layer i.e the contol layer.

eek

poly-phobic
04-20-2005, 07:24 PM
great work eek.
but now id like to see more maya/XSI facial rigs.
not too bump you or anything, but you have a great method. ill be sure to try to apply it in maya, but id like to see more maya or xsi user inputs in this great thread.
:)
ill post a wip im working on soon.

eek
04-21-2005, 12:02 AM
This pipe definately can be ported to maya. I done some tests in maya, using the same theorys and pretty much everything works, the expressions, the splines. You have to go down the route of clusters and cv's but the brunt of it is identical. Soft is pretty much the same pipe. Thats the nice thing about it. Theres some pipes friends of mine are working on. It be great to do a riggers meet up..

eek

nottoshabi
04-21-2005, 07:59 AM
It be great to do a riggers meet up..

eek

You know that would be really good. Maybe on line kind of thing. We can toss theories around. That always gets the creative juices going.:)

eek
04-21-2005, 01:55 PM
yes definately - ive been thinking of something this year. Probably mid year, when i have some holiday time. I'll post a new thread about it soon. (and on my site)

eek

Hellbring
04-22-2005, 04:41 PM
I think I got the mouth m-line to work how I want however it seems like the verticle m-lines are the most difficult to get to work correctly. Do these verticle m-lines have the controler object path contrained(% based)to it. If so how did u get over the fact that that curve is stretched when the jaw is opened?

I have tried to control the % of path constaint with the object's own global pos (which of course causes a loop and sometimes doesnt update correctly) to try and override the stretching,but I think I am goign about it all wrong.

nottoshabi
04-22-2005, 05:05 PM
If so how did u get over the fact that that curve is stretched when the jaw is opened?



Yeah thats were I got stuck my self. I was going to try the arch lenght way. But I got slaped with a really bad cold. Damn thingk its still going. I swear you can sell me to a science, I have never seen anything this bad. Well anyways, when I regain counsciousness I will try. I was thincking in the way the strechy Ik works. I have done strechy spline before and I thinck its the same concept. Maybe?

coolwizj
04-25-2005, 03:46 PM
Sorry to bother you, eek, but... when do you think you will make a tutorial on how to make this facial setup? I'm getting anxious... :D


- Ian

greyface
04-27-2005, 10:49 PM
Dang this is a long thread, I went through most pages really fast and this looks cool, are you going to write a general tutorial or explanation on this system? I'd love to try this out in XSI, but I didn't see any explanation on the rig, most of the videos aren't working anymore =(.

desty

eek
04-30-2005, 11:01 PM
Hi People,

Sorry for the delay, my lifes pretty busy atm trying to sort lots of things out. Work stuff etc etc. As to the rig, well im trying to fix some problems atm, also trying to setup the control system i.e the gui - which is hard to say the least. Im trying to make it as friendly as possible, really interactive and gui based - kinda of a new way of making poses which is frying my brain atm.

Al-x, hmmm. What vids dont work? Theres two clips on my reel which show off the rig and are the most up to date : www.eekstudios.com/tmp/rigging_reel.html (http://www.eekstudios.com/tmp/rigging_reel.html)

So more to come definately soon!

eek

anthonymcgrath
05-05-2005, 03:42 AM
Hi Eek,
I've read thru this from start to finish tho I'm not really sure how much of it I've picked up. I can seriously see the advantage of this kind of setup and I'd be after figuring out a simplified version in maya. Could you spare a few moments to write down the basic methods for rigging the mouth area? I know you've prob done it a dozen times thru this thread in different ways but I got lost with all the expression stuff!
Is it possible to get similar results without expressions? For example I've got a character I'm working on that has a simple head and jaw bone that her head is skinned to. I want to create a similar kind of structure in her mouth - should I lose the bone setup and approach it with this clusters/locators constrained to a curve method? or can I keep the current jaw bone method and build on top of that?

cheers
ant
newcastle
uk

eek
05-05-2005, 07:32 PM
Hi Ant,

So im currently in the states atm (get back on friday), coming back from discussing this whole pipe with Bay Raitt, the problems and ideas for his and my approach - so lots of ideas! And i see exactly why bay approached his setup. And the whole "preservation of volume" topic.

As for rigging this with bones yes certainly, you can setup the same mouth pipe. The area that might not work would be the mouth driving other areas.(im just not sure). Cane toad is a great example of this. And i know for sure, my pipe can work in maya, using a cluster/spline aproach.

How does your setup currently work - is it just a head bone and jaw bone with good skinning? do you have lips and cheeks etc etc being controlled? As for building on top, i think its do-able. You'd probably need some expressions coming off that jaw bone driving anything - for e.g. you could have a entirely bones driven pipe with a series of bones round the mouth, ik handles on each being driven by the jaw and then ontop of that have set driven keys make shapes.

One thing im looking into atm is mixing the idea of combination sculpting and my system. Simliar to the plumber rig which is bone and morph driven so certain bone drivers drive morph and set driven key data etc etc.

I'll send you a pm, so we can discuss more.

eek

Tughan
05-05-2005, 08:08 PM
Hey Eek! I told you that Rigging inside an airplane would be a timesaver. Remember? Heh heh. :D I suppose you'll be coming back with a lot of cool ideas soon my friend.

anthonymcgrath: You may want to check out Chris Harvey's Facial Bone Rig. It's a pretty cool setup. Here you go; http://www.cgtalk.com/showthread.php?t=170634

:)

Harvey
05-06-2005, 03:05 AM
Doing a combination facial rig is in my opinion the best approach. And is where my facial rigs have been going for the last 3 years or so (maybe 4 , can't remember now). Anyway the thread that Tughan posted was from a facial rig that was a very early test on this system...bones driving morphs. That particulr rig only emplyed the bones side of thing to see how far it could be pushed before morphs were inlcuded. But the bottom line is that I firmly believe for extremely detailed (we're talking film and creature/digital double stuff) facial systems a hybrid approach is the best. Ultimately it will give you the most control and you can take the best from both methods.

Eek, you must have had fun with Bait...I'm jealous..hehe.

eek
05-06-2005, 10:52 PM
Harvey,

Your exactly right, combination systems are the key i think. I may be using splines but i got all the aproaches and ideas of other systems, pose blending, points acting as bones, expressions. Also its good to look outside the box, theres some research out there which is scary.

Tughan, Harvey,

Bay gave me a lot of ideas, i understand the whole reason he built his setup they way he did. He came up with an interesting problem, if forget what it was called, "zygo- " something that hes aproached solved and im working on(but its :eek: hard!). i.e "convergence" when 3 shapes poses/muscles/groups come together: which takes president, there order, the ratio of each pose i.e 33%,33%,33% or 20%,40%, 40%, etc etc its an interesting idea. As you dont want the face to break or fracture if you will. It's interesting -we attacking the same problems but from different directions. It was cool!

eek

Tughan
05-07-2005, 12:38 AM
Man, you should've record these conversations to a DVD video or something.:) I know that video would sell. :D

Theta-Dot
05-07-2005, 03:55 PM
Q:

Those neat little manipulators in your rigging reel, eek -- Where did you get those? Did you make them or is it a plugin for max? It'd be SO helfpul to have some of those...

omarhib
05-08-2005, 10:51 AM
hey eek...l

at the begining of this thread you where talkin' about some kinda tutorial you are going to post... where is it man... i need it really.

eek
05-08-2005, 01:11 PM
Ok,

Tughan, Theta,omarhib,

I dont want to go of topic. So this is a quick answer: dvd is coming. And those gui control were custom built, im working on some slicker ones now.

eek

Hellbring
05-10-2005, 07:40 PM
Any xsi users in here that figured out how to have an object contrained to a path and be able to move it along the curve ? I think I am close to haveing a mouth setup like this one for xsi but I am still missing some of the functionality that having the verticle m-lines gives. Ill post what I have so far for the mouth setup soon as I get my webspace sorted.

eek
05-10-2005, 10:02 PM
Hi Hellbring,

Do you have things like path constraints in XSI? I think your stuck on the lip part of the mouth area right? i.e to move the lip controls on the mouth but still retain functionality of the overall.
Send me a pm, or ill send you one if you need some more indepth stuff. What types of curves can you use in xsi, bezier or CV curves?

eek

omarhib
05-11-2005, 08:17 AM
Hi eek,


I guess i have the same question as Hellbring... but i'm a max user can you please advise me in deapth technique.. please i'll appreciate that man.

Thanks.

Hellbring
05-11-2005, 03:35 PM
XSI has the ability to have linear curves or CV curves there are no Bezier to my knowledge.

XSI does have path contraints which are precentage based(I assume all packages are like that). I think I understand how to get the mouth curve itself working correctly, I am mostly useing expressions/parenting to control this all. However the vertical m-lines are where the issue lies.

I usualy create a curve (cv or linear) then contrain a null to the path. This works fine in the fact that if you adjust the % it will slide along it nicely. The problems are:

1)If you move a point on the curve it will move the Null due to the fact that a path contraint is percentage based and changeing the length of the curve changes the placement of the percentages.

2)If you try to control the % based on the global position of the null itself, it will work till you try and keyframe or move part of the curve, then it will jump to the end of the path contraint.

I tried to send you an icq message but it says im still waiting for authorization.

motorsep
05-18-2005, 04:29 AM
Hi eek!

I was reading all thread yesterday but I couldn't find tutorial about face rigging in MAX.
Have you written it? If not could you please explain at idea of face rigging and the way you have done it?
Im not a novice to 3DS MAX, but I haven't done facial animation yet. So it hard for me to get into it without knowing how to do it. I have to animate low-poly faces and it could be bones or the way you did it with Golum. Also I would like to know how to link sliders with actual points on the face?
I would really appreciate your help.
Thank you!

eek
05-18-2005, 09:31 AM
Hi,

So a tutorial is coming, ive just been in a bit of turmoil atm, I lost my job about 4 weeks ago. So am trying to sort out my life! Setting up some sort of studio.

As to how the rig works, well for starters you need a good understanding of expressions(math). The basic premise is at the base level you have a base muscle "sphincter" made out of points and expressions. This muscle has control at the corners, top/bottom. And can also be opened/controlled by another point "jaw" Then a set of splines that make up the muscle across the mouth top to bottom are controlled by the earlier muscle. Then points run across these and the lips are skinned to these. Thats the basic premise, theres lots more going on.

Btw - i didnt setup gollum. That would be Bay Raitt, very cool guy!

eek

motorsep
05-19-2005, 03:46 AM
Hi eek!

I don't understand expressions at all. I was studying math in university but it was 4 years ago and I totaly forgot everything :) How points are skinned to a mesh? Points are dummies, right?
Is it universal solution? Does it suit any mesh?
Is it script? It would be nice to have a script that allow you to have 5 sliders for each lip, 3 or 4 for each eyebrow, etc. Is that how it looks like?

eek
05-19-2005, 09:17 AM
im building a pipe for that very purpose! atm its custom built it'll fit most well modelled faces.

eek

motorsep
05-19-2005, 12:52 PM
Is it going to suit low poly meshes? When is it going to be ready?

eek
05-19-2005, 12:59 PM
Its gunna incorporate bipedal setup as well and lots of very very cool stuff.

As to the facial part (theres lots of parts!) - It should suit low/high poly meshes. As to when it gunna be ready ive just started on it. - i dont wanna give too much away. Anyway back the the thread!

eek

daskog
05-19-2005, 05:10 PM
a Midi Controller device vould be a cool way of working..im looking into it now..i use Softimage Xsi thoe, found a writing about it.

gona trye with my Roland Keyboard first. And if that works gona buy me one of them cheap Midi sliders with 100's of buttons and shit...this is going to kickass :P

http://www.maxon.net/pages/dyn_files/dyn_htx/htx/57/00057_00080.html

gona custom make one so i can drive my car in real time within XSI maby a steeringwheel or somthin

eek
05-20-2005, 02:35 PM
hmm, thats very very interesting idea! - reminds me of protazoa doing there mocap stuff. Very interested in new ways or old of animating.

cheers

eek

eek
05-23-2005, 09:47 AM
Hi people,

So the key issues im trying to work out atm are good flexibilty with the system also good formulation i.e pose making and the ability to not break. Bay had a really interesting problem, which was basically consistency of animation. Which has made me really think about the system.

Atm its freedom of movement is very good and highly flexible, the downside is its reliancy on using XYZ condinates to generate poses i.e using animating 3 axis, when really you want one control.

So this brought me onto thinking about a system to give you lots of control, but easier to use. Over the weekend i sat in my hotel room, grinding my brain down, until i had a possibly solution - " muscle combination sliders". Its a little theoretical atm, but generally the idea follows the solution similair to the rigging part, its muscle based and principle is you drive sets of muscles: left face, right face with sliders to form poses. I.e a slider drives the zygomatic, a sider drives the frown, pucker etc etc.

The idea is also based around not breaking, to that affect its percentage based. e.g a smile to frown may be 100% smile - 60% frown 40% smile - 100% frown. Also the key muscle the sphincter round the mouth is getting some new properties to allow much better deformation i.e make a pucker then add a zygomatic and mouth open and as the system is percentage based wont break.

Your also be able to tailor muscle sliders, i.e the you may only want the zygomatic to pull all little at 100% of the slider. Also your have free reign to move the end results around in world space. So for instance if hes cheeks are fatty they could jiggy when he smiles.

So thats what im doing at minute, (thinking kinda out the box)..

more to come..

eek

eek
06-03-2005, 01:23 PM
Little update,

Im also looking into caDef, and node store techniques (thx paul) and also using weighted list controllers to define major muscle combination and reducing breaking of poses (thx Bay)

I should have some media for you soon.

eek

Harvey
06-03-2005, 08:38 PM
Weighted List controllers GOOOOOOOD!!

Tughan
06-03-2005, 09:31 PM
Eek, man, we want those media files now! :D

eek
06-04-2005, 10:43 AM
Harvey,

Yes my lord,

muhhaha i have the power!, we'll keep it a secret till everyone else finds out! Now are you in vancouver? or australia? Man max keeps me on my toes! We'll have to discuss all this stuff some more some time.


eek

eek
06-06-2005, 10:58 AM
oohhh,

Another crazy expression for you, this is a precursor to a script i.e a prototype, to get 2 blends working with breaking percentage values!

if(100-(a+b)< min(a,b),100-(max(a,b)-min(a,b)), 100-(a+b))

hehe, i know im crazy! - next stop 3 and with weighted list controllers, eek!

eek

edite: hmm few issues with this...few tweaks to make

Tughan
06-06-2005, 11:43 AM
Now we know what your nickname really means. :eek:
Man, that is beyond crazy! I started playing with expressions just a few months ago you know. I struggled with a few basic expressions a few days and started to see nightmares about expressions man! Like one time, I was a number in a expression box, and I was running away from the slasher "/" that tries to "divide" me in half... it was awful!
One of the scariest nightmare I've seen since another nightmare I've seen when the day after I've watched Jurrasic Park 1. :)

I hope you're ok my friend? :)

eek
06-06-2005, 12:03 PM
hehe,

Im good man, very good. Things are look up atm! Yes expressions can be a bit daunting but generally are simple things like a+b/2. The fun stuff happens when you mix vectors and scalars together then have them reference scripts!!

As to the last expression:
if(100-(a+b)< min(a,b),max(a,b)-(max(a,b)-min(a,b)), 100-(a+b))

a & b are just scalars looking at sliders, a - param 1, b - param 2

This just drives a point constrained between 3points and keeps the balance. I.e if you move 2 sliders up 100% the point stays 50% percent between them, actually you have to take into account the base point its parented to so really its:

2 sliders = 100% value = 33%
3 sliders = 100% value = 25%

atm this block 'max(a,b)-(max(a,b)-min(a,b))' is giving me the trouble as if you have one slider at say 50% then start to bring up the next it finds it hard getting the right percentages.

eek

Harvey
06-06-2005, 07:15 PM
Hey Eek...I am back in Vancouver now...just got back from Australia a week ago. And man what week..., got back found out I had to move, went house searching, found a place, packed, moved...yadayadayada...lots of fun. Oh ya..and of course had some crazy rigging deadlines at work. But its all fun. And yes we definatley have to talk one of these days about all this stuff sometime. Are you going to be at Siggraph this year?

eek
06-06-2005, 08:24 PM
Hey Chris,

hAHA you crazy kid, well ive been similarly crazy - going to seattle for 3 days flying back to uk then off to ireland for 2 weeks on a commercial then back to uk for 4 days then back to ireland again.

Siggraph: Yes quite possibly, havent thought about it much, we need a big riggers meet up, up there. Oh man, im discovering some way way cool stuff now. Im gunna have to discuss weighted list controller expressions with you and all manner of things. I'll try an post some pics and clips over.

eek

--little pic, is a little app that lets a td or animator change the face on the fly just by calling its name. e.g "boney face",this isnt pose but how the actual face works entirely! Eventually im gunna make it so Td's write face types, and add them to say an intranet, where this little script will update its array along with the rig.

hamu73
06-07-2005, 12:26 PM
where can you find some infos and tutorials about the "weighted list controller"?
does it work with max5?

FatAssasin
06-08-2005, 08:32 PM
Eek: I haven't seen any mention of this, but I might have missed it... Just curious, are you skinning directly to the splines, or are you skinning to bone are dummy constrained to the splines? The main reason I ask is becuase, I general, I find skinning to splines to more difficult than skinning to bones. It seems like you have less control when it comes to weighting the verts.

eek
06-08-2005, 09:31 PM
ok ,

Hamu,

weighted list controllers are like any other controller. There weights are similiar to position constraint weights. But they work with values of 0 to 1 rather than 0 100. There very powerful as Harvey and i are finding out as you can wieght the value of pretty much anything you want be it positions, controls, or *erhhmm* my stuff. - I'll explain what im up to in a bit.:D


Assasin,

Points and spline im skinning to. Ive had no probs as to vertex skinning. You can weight them fine. I'll try and fire of a PM to you.

eek

Harvey
06-09-2005, 07:31 PM
I haven't heard of any specific tutorials out there for the Wieghted list controllers either but I know that I ALWAYS go over them in all my training sessions. In all seriousness the are in my opnion the most powerful controller in all of max. Obviously by themselves they are really nothing but a sort of container but with this "Container" the way you can start to combine other controllers together is extremely powerful. I do not make a rig without them...in fact any object I ever animate has a list controller on it if for only having a zero out layer. But its uses are extremely varied....for instance:

A few years ago on Jason vs. Freddy I used them extensively as a sort of non-distructive relative and absolute animation layering system. With it I was very quickly able to modify animation. For example I would create the base animation and then the director might come in and say "cool, but could you have the arm go up and bit higher on this frame...but don't change the timing of anything else". Well that was extremely easy to do...just add another layer...add 3 keyframes to relatively move the arm up on the said keyframe and to hold it before and after adn I was done with the change. No having to play with curves, edite lots of keyframes or redo any animation. And then of course as it is invevitable the director would come in and make more changes and more changes and go back and forth between different things...and all I had to do to revert to previous animations or combinations of them was simply turn layers on and off or change the percentage of affect they had. Super useful use for the List Controller.

Another use if for storing bone poses. I use this etensively on facial rigs. You can store a different pose on each layer and then simply turn then on and off by hooking their weight values to a slider or whatever...or other layer wieghts even...so taht way one can affect another.

Anyway thats just a couple of things you can do with them...really the possibilities are endless.

And Eek...if you haven't tried it yet...wait till you start playing with nested weighted list controllers....lots of fun there!!

eek
06-10-2005, 10:12 AM
Harvey, ill PM you what im up to.

eek

Tughan
06-10-2005, 01:03 PM
How do you guys keep track of all that many wires and "List Controller" and float script, or even constraints etc? Do you take notes? Actually I don't think taking notes will do any help cause Max's Schematic View does that pretty well, but it gets crazy if you're making a complex setup.

I for instance, keep can keep track all the numbers, constrain's weight percentages, yada yada yada, in my memory for the time I keep working on that rig. 5 days, 10 days, or 1 month whatever. But when I take a break from it for a while like 1 week I start to forget numbers, percentages, etc. It's like brain works like a RAM. It's fast, efficient, but it keeps only flowing data. Once you cut the flow, you start to lose control. :D

How is it work for you too?

eek
06-10-2005, 01:14 PM
You havent seen my little black books?

I keep everything in them - rigs, expressions, muscle tips and research. And your right - you leave the rig for a couple of weeks and then you have to remember everything - so thats what the books are for. hehe ones filled up, another ones slowly filling.

Im looking into ways of holding these values within the scene, because *hint* its the not the script/expression/list controllers you need to worry about but the data they reference.


eek

FatAssasin
06-10-2005, 03:57 PM
Eek, look up Scripted Plugin Clauses in the maxScript reference for the parameter types you can use in both scripted plugins and scripted custom attributes. They're very usefull for holding information, especially the tabs.

A trick I got from taking apart Paul Neale's attribute holder was to store an array of values, or anything really, as a string using the string parameter, and then get it back using 'execute'.

Another good place to store arrays using the tab parameters is in a global track as opposed to an object. This is good if you only need the info to remain in a particular scene, and don't need it to travel from scene to scene with a rig, for example.

I'll post up some code examples when I get to work.

eek
06-10-2005, 04:07 PM
hehe, hey Fat,

Yes there very nice, im using all kinds of stuff, CA def, weighted list controllers lots of other stuff. So yes im doing some very cool stuff, i can PM you what im up to, or we can share some stuff off thread. Im building whole pipes to handle this kinda stuff.

Im looking into ways of holding these values within the scene, because *hint* its the not the script/expression/list controllers you need to worry about but the data they reference.

hehe - this was in the past tence. I explain more soon.

eek

nottoshabi
06-10-2005, 09:22 PM
Hey can you guys go into a little bit of detail and describe Wieghted list controllers? In maya we dont have them or at least I dont know abot them.

Harvey
06-10-2005, 10:51 PM
I hesitate to say "all" because it is so powerful but basically "all" a wieghted list controller is a container that holds other controllers. So you could say have a position contraint controller in it. And then also have a position noise controller in it. Now each of these different controllers in the list has a wieght...so you can then animate their influence on and off. Funny it really doesn't sound like much but it is huge. I would be surprised if Maya doesn't have something like this...but maybe not.

DoctorSharky
06-18-2005, 04:01 AM
Hey i saw that some of you posted plugins you have made for face rigging. And since i am new and i dont have the time to read all 44 pages. Any chance you have a plugin for max6?
Thanks.

luigi
07-01-2005, 11:04 AM
totally agree with saying that weight list controller are great.:thumbsup:
I´ve been using ti a lot in my lat rigs, i facial setup i find it really useful ,
for a sytem using morph (blend shapes in maya ) when you want to do and accurate sytem you have to do every morph very regional for especific area of the face and sometimes when to morphs mix toguether they produce undesired result so you need a third morph to mix toguether and fix the problem.

With weight list you can do all kind of fancy thinks like activate a third morph and disactivate the others , activate it and mix with the other two morphs , and with a bit of script activate when it have the others two morph arrive to a specific state….

For this cases I use node store and script controller than make it quicker tan normal scripts controller and doesn’t happen anything if you remame any object or merge a equal sytem on the scene.I used expresion controller on the past but with expresion I couldn’t be able to do things like this.

if a>b then (if b>35 and b > 35 then (-1*((35-b)/15)) else 0) else (if a>35 and b > 35 then (-1*((35-a)/15)) else 0)

this is basically a weight list than start working when value of a and b are bigger than 35 and use the smaller of the a or b to controll the weight so it minimizate the jump when the third morph start working.

I find expresion very quick but not accesible by script and the same time not able to do complex staff , probably eek than you are and expert on expresion can tell me who to do that.

I have a lot of ideas with weight list controller I send you eek and harvey a pm to discuss that or if you guys want we can start a new therad to discuss the utilities of weight list .:)

ReaperXVIII
07-06-2005, 07:10 AM
I feel so lost. :(

I really want to start doing some animation but I have no clue what you guys are talking about...all these weighted things and so on. I have found a few books in my online library for my school but they're a bit difficult to follow without the CD content that is supposed to come along with the book. I need a book or something to help me. I have no experience in animation whatsoever. If someone could help I would appreciate it. :)

Edit: I'm using max 7.

nottoshabi
07-06-2005, 06:35 PM
Hey guys I have a question. I got the controlers to work on the curves, they manupulate the face pretty good. The problem I'm having at the moment is. I cant seem to control the controls with the UI and at the same time be able to animate them manually. How did you guys do it? Simply how did you get your UI slider to control 6 or 7 controlers at once? And still be able to manually tweek them? I'm using Maya6.


Thabnks guys.

JHaywood
07-09-2005, 05:16 PM
I think the whole point of having a UI is so that the animator doesn't have to manipulate the bones (or whatever) manually.

joconnell
07-11-2005, 09:21 AM
Heya Nottoshabi - the way it's working inside of max is by using list controllers as harvey mentioned which is pretty much layered controllers - one position controller is automatically driven by a slider but you have another controller on top of that which can be manually moved - I'm not familiar with maya and it's controllers but I'm sure you could get something similar by having a null that slides up and down a curve, then another null parented onto the curve null that you can manually move which causes the actual deformation - not smart but it should work.

eek
07-12-2005, 09:10 PM
Hey Guys,

Sorry for the delay, been pretty busy recently sorting my life out. Just got back from canada for an interview. And need to buy a computer. As for WLC well there tons of things you can do:

Firstly drive position/rotation values of controller via there wieght

The same with modifier controllers eg morph and possibly the baracentric morpher too as that keeps 100% or work with Paul's hermite script

Im doing some really complex stuff in terms of driving the weight of script controllers, I discuss more soon.

I find expresion very quick but not accesible by script and the same time not able to do complex staff , probably eek than you are and expert on expresion can tell me who to do that.

This is not the case, you can fire off pretty much anything with script (you can make the script controller look at data), I'll send you a pm about this or we can discuss it over msn luigi. Because when you start doing this kinda stuff man you can do amazing stuff!! eg build and controll rigs on the fly i.e how the work on the fly!! Im building script pipelines to work with this stuff. I.e editors etc


Simply how did you get your UI slider to control 6 or 7 controlers at once? And still be able to manually tweek them? I'm using Maya6.


Ok so first off give you controller a 'list controller' i.e a float list. Then have its avalible slot driven by expressions or CA or scripts. The wieght list controller (max 6,7) is added so you can drive the weight of this value in turn. Its like a morph target but your blending between controller values rather than vertex data.

After you have the object controlled by this stuff, you can use a bezier controller or an XYZ controller in the avalible slot to allow it to have its own control.

ReaperXVIII,

Most of us learn this stuff by playing and pressing buttons, My best advise is to do all the tutorials then start playing with around with ideas you have. Find a problem e.g bird wings then try to solve it. Always ask questions here were happy to help.

If you need some books on max and stuff, get the "NEW RIDER" ones, i.e the "max Bible' ones. They have everything in.

JHaywood,

It depends, ive wrestled with the whole gui idea, and theres a fine line between it being a hinderance, looking cool and working. So it really a good mixture of software sliders, for finite control, custom pipes and scripting and viewport control.

Hey Jo,
Just got back from canada - hows things going.

Hopefully ill get some more stuff up soon. Trying atm to script my facial pipe which is a little compex.

eek

king21
07-12-2005, 09:36 PM
Hey Ekk hello!

Nice to have u back

It seems that this is the only place to get u.

I am hoping u will get on msn soon, i have tons of questions for u.

Bye

joie
07-12-2005, 10:27 PM
Hey Eek;

Just a question for you.

I can figure out the way to make the curve network or so, but I have no idea of the way to skin the face, What method do you use, Clusters?, Bones?, Wraps?..., personally I found clusters a bit limited for this kind of setup, not to mention they can´t be ported to other characters, wich, I think, is the reason for all this stuff.

Any suggestions?

Tughan
07-13-2005, 12:36 AM
I am hoping u will get on msn soon, i have tons of questions for u.

Hey, sign me in for the queue too my friend. :)

king21
07-13-2005, 08:36 AM
Hey Eek;

Just a question for you.

I can figure out the way to make the curve network or so, but I have no idea of the way to skin the face, What method do you use, Clusters?, Bones?, Wraps?..., personally I found clusters a bit limited for this kind of setup, not to mention they can´t be ported to other characters, wich, I think, is the reason for all this stuff.

Any suggestions?

I guess u are doing it in maya, the way i figured out to use curves as deformers is through influence objects.

First u have to skin geometry to at least one bone, so i can add influences later. Than u have to add curve as an influence object. Than the most important part. Turn on "use components" in skin deformer.

Thats all it works.

eek
07-13-2005, 11:42 AM
Hey Ekk hello!

Nice to have u back

It seems that this is the only place to get u.

I am hoping u will get on msn soon, i have tons of questions for u.

Bye

Yep,

Been very busy lately, lots on. I really need a new machine and a good internet connection!Hey Eek;

Just a question for you.

I can figure out the way to make the curve network or so, but I have no idea of the way to skin the face, What method do you use, Clusters?, Bones?, Wraps?..., personally I found clusters a bit limited for this kind of setup, not to mention they can´t be ported to other characters, wich, I think, is the reason for all this stuff.

Any suggestions?

In maya, you would fire off cv splines or point splines driven by clusters, its pretty much the same approach in xsi. I think you can you splines as skin data(bones) As to porting the rig well im not porting the rig literally im porting the data between rigs i.e character may have the same rig, but the tech allows to to port the way the rig works and its animation between characters.Also im trying to script it!


King's doing some interesting stuff on this, pretty much porting some of the tech over to maya. I could do it but am just a bit tied up atm with it in max - still lots more to do! Wish i could do some talk on this stuff.

eek

JellyFire
07-13-2005, 10:59 PM
Hey there, i haven't seen this book mentioned yet, but I haven't checked all 45 of them!!!
Jason Osipa's Book "STOP STARING" is amazing, it's a general book for facial animation, however he takes you through the process using maya etc..

He uses slider control's for blend shapes to animate his faces. He seems to be revered by fellow animators so it's worth checking out...
His website is http://www.jasonosipa.com/JasonOsipa_Main.htm

There is a link there to by the book from Amazon USA, but you can by it intenationally as well. It's from Sybex/Maya Press I think...

Hope this helps.
Niietzshe

IestynRoberts
07-15-2005, 03:54 PM
Hi everyone. Just came across this thread. The rig look awsome Eek. Just a quick post to ask what happened to the Tutorial, and the Maya version? I've scanner through all 45 pages of the thread with a comb, and i couldent find anything. Hows it all going dude?

Iest

eek
07-15-2005, 09:11 PM
iest_rob,

Everythings going good atm, ive been off this stuff a bit lately as i was out of a job. So have been trying to get a new one which is going well!

Anyway well lots been going on recently - kinda away from the computer. Basically been trying collate all this stuff i.e the scripts,rig everything into some sort of system. Its only been possible with max 6 and some new features. Im trying to script everything into a system that makes it easy to do all this stuff - rather than building it all by hand! so im working on the tooling part. Thinking also about the animation tools - as im im gunna have to write some. The gui will be scipted too possibly like templates that you pick.

The only part i want the user involved is skinning, and making animation and poses. Its all towards a complete system with my biped and quad, but just getting to grips with the more complex scripting stuff.

Losing your job after 2.5 years kinda knocks the wind out of you so just getting back into it.

eek

ivanisavich
07-17-2005, 02:51 AM
Dude! You lost your job? I'm sorry to hear that! Can't imagine a company letting someone like yourself go...your rigging talents are incredible!

IestynRoberts
07-17-2005, 03:06 PM
Hey Eek, thanks for getting back in touch, really sorry to hear about your job loss, that sux, glad to hear tht everything is going back on track nowadays. Excellent to hear about the rig man, just keep it up and take your time, it really looks awsome.

Take care
Iest

IestynRoberts
07-17-2005, 03:08 PM
Hi, sorry another thing, what's up with your homepage? I ca'nt get from the main screen, when i click on e.g 'learn' i'm directed to the same main page.

Thanks
Iest

king21
07-18-2005, 06:07 PM
Hey guys!

For the last couple of days i 've been writing a script wich will create a muscle lin efor facial setup from just a curve.

I am in feze where i am writing expressions so the stretching and contratcing will be right.

Here is movie how the thing looks now.

www.jureprek.com/mix/muscleLine.mov

p.s I tried to take curve as an influence object on skined geometry but it just didn't deform well. (i checked use components ). So i decidet to use joints, because of right orientation. It really suck that maya doesn't have the option to turn everithing into bones like max do.

joie
07-18-2005, 08:24 PM
I´d like to try that MEL, Can you use your custom curves with it?

RoundRobbin
07-18-2005, 10:45 PM
dang, that script would

eek. SAw your reel, and i was in awe.

few things tho
with the little knowledge i know about rigging in comparison with you. i figure if you would use your facial setup in maya, would create your facial spline cage skin it to the head joint, than create clusters at each splines vertex, parent (cube) controllers to the clusters.

Would you just use set driven keys in maya to animate other parts of the splines when a controller has been translated?

How would the methods from the other aps fit a method for maya?

also your bi-ped setup from the reel.
clueless on that leg setup, where the foot maintains its position while the knee swivels off a translation. kinda like Fk with ik.

king21
07-18-2005, 11:31 PM
Hey joie!

Still havent finished the script jet, and when it is done with all the others for facila setup (i have one wich sets the lip joints controlers) i will need some beta users (but that is close jet)

Joie what do u mean by (can u use ur custom curves with it).


Durty my curves will be deformet with tabgents and a couple of expressions (and of course animator) wich i am refining right now. The end and beging controlrs will be controled by contrains and expressions.


Later

ryusen
07-19-2005, 03:32 AM
really sorry to hear about your job charles.. i'm sure you'll get a better one soon..

joie
07-19-2005, 11:00 AM
I mean this:

I have my character´s face, I model my facial curve network and want to use them with your scritp.

Or may I need to use your script to make a curve and position it where it´s suppose to be?.

I´d be very pleased if I could join your beta-tester team for sure!.

:D

king21
07-19-2005, 02:51 PM
joie read ur pm

and jest it can be created from whathever curve u like (this was my priority)

joie
07-19-2005, 11:17 PM
So I add your ICQ adress to my buddy list uh?, one day we must talk about these terms :)

eek
07-23-2005, 05:40 PM
Hi Everyone,

Thankyou for the support, I got back from canada a week ago. And have been offered a position over at Bioware so just waiting for the visa now hopefully!.

Durty & all,

Thankyou for liking the the reel, yes the biped stuff is pretty cool. ive recently made a new version of that with a gollum style 8 bone spin that stretches and compresses and also changes color when it goes past its extent!

Right back to facial piping, im current working out the systems to build the facial rig via scripts. And also currently planning a custom animation system that will work with the rig to animate it. So the system will have:

Scriptable rig generation - rig building, tweakable on the fly, muscle view etc etc
Custom skinning system - easier skinning system, designed for the face.
custom animation pipe - pose builder, animator, layer based system im working on some ideas which if they work will be very cool!

It will be a plugin, in which you can blend animation between characters, change the the face on the fly! and lots more. Im currently working out the tools to make tools!

Joie - yes, ive made part of the rig in maya and it works fine. Generally expression in softs are the same. Things that are different are points, which are locators. Also its hard to rip out tangent handles in maya - so you have to use cv clusters to simulate it. In soft its pretty much the same. Just trying to make one version work so far. Because the rig is so flexible i need to make a system that will work with is flexiblity i.e pose that can be changed on the fly, etc etc.

So lots going on - ill try and post some pics soon of the tooling! & cheers for the support!

eek

IestynRoberts
07-25-2005, 10:19 AM
Hi Eek, Congrats on the new job! That's excellent news.

Can't wait to see some new pics! Hang on in there!
Iest

eek
07-29-2005, 10:58 PM
Heres some of the tool that make tools for the rig..

http://www.eekstudios.com/cgtalk/facial_tools.jpg

Ape tools, is just an expression editor, you put in values and it fires out a vector expression and scalar result. This will eventually be al hidden and all on the fly with spinners and such- as you build the facial rig.

Def change is a tool (early stages) to change CA definitions on the fly, it will eventually look at a main server so TDs around a studio can use different defs or make new ones on the fly and call them. It basically allows you to change the face on the fly without breaking the rig.(very new tech - thx Paul)

These are in there early stages atm, but im slowly building the tools pipe. I should have an early prototype soonish. Still working out scripting tangent handles hmm...

eek

more to come...

Tughan
07-30-2005, 02:27 AM
Man, now I'm definately %101 percent sure you're crazy. :rolleyes:

And because of that you rock too :buttrock:

Keep it up my friend. Also, congratulations for your new job. :applause:

eek
08-01-2005, 11:11 AM
hey Tughan,

Thx man - hehe pretty insane tooling!

right so the system gunna be three parts builder, skinner, animator. Im gunna build a proof of concept of the builder, which will eventually be a plugin. Im gunna make a simple test, post it up and get you guys to play with it, then if it all works, ill build all the rest. The animator is gunna be the hardest as ive got some interesting new ideas on the system - so ill propbably be grabbing some help from some coders/scripters!

eek

king21
08-02-2005, 03:09 PM
hey Maya 7 arrives and guess what it will have paintable blendshapes and wiredeformers, damn this is the best thing that could happen to my facial setup (hopefully i will get rid of bones and cluster only curves will deform skin yeha)


And that's the only think i have to say


p.s Joie i cannot see u on my icq.

send me an email jure@jureprek.com

Abhimation
08-05-2005, 03:54 PM
Hi Guys,

Its suchha long thread to find out few of the good links to tutorials to a facial rig setup through joints in Maya.

M a newbie to it, looking forward for some help from you guyys...

Thnx in advance...

joie
08-05-2005, 04:58 PM
If you have ICQ we may be in contact, I´m in contact with King21 and is good to share ideas.

I´m holydays right now and be right back the last week of august, happy summer to all!

:)

Abhimation
08-05-2005, 06:12 PM
I dont have ICQ brother, here's my msn and yahoo messenger ID's. I wish they are a help.

msn - abhishek3d@hotmail.com
yahoo - abhimation

Thnx

eek
08-08-2005, 11:57 AM
So as i showed you guys before some new tangent muscle types that would allow much greater freedom/control and the ability to be written in different packages - there was one major problem that had to be fixed:

Working out a tangent handle to work in 2 axis is easy. 1[z] is a simple ratio based expression,2[y] is a simple script that is based on a distance. These two work for the buldge and stretch fine. But what happens in x.

Well the problem happens when each tangent handle (top and bottom) goes past its base control in Z. Below this its fine if you use a ratio based expression in x but over it screws up.

So I rebuilt it in the form of 'T-Muscle 3 (after a day of banging my head)':


http://www.eekstudios.com/cgtalk/tmuscle3.jpg


So pic 1 and 2 are now correct, pic 3 shows what was happening before.

The way to solve this problem is Trigonometry:

http://www.eekstudios.com/cgtalk/tmuscle3_diagram.jpg

so to work out 'TH2' [x] movment you first need some expressions:

so first of you get c to follow th2's x and z axis

then you need a script on the 'th2's x axis with some variable:

d1 = distance a b
d2 = distance b c

to get the offset right you need a formula so:

b.pos[x] + (b.pos[x]*d2/d1) - (a.pos[x]/d1*d2)

so this is causing an offset to the tangent handles x axis based on the distances of two points and the base objects x axis.

Now this is fine if the tangent handle is above in z of the base object but what if its under it, well you need an if clause:

if b.pos[z] > c.pos[z] then b.pos[x] + (b.pos[x]*d2/d1) - (a.pos[x]/d1*d2)
else b.pos[x] - (b.pos[x]*d2/d1) + (a.pos[x]/d1*d2)

its the same formular but taking away and adding instead.

These idea will work in any package, its pretty simple math (i was terrible in school)

And the benfit of this is now access to custom controls e.g 'buldge', 'distance', position of th1,2 etc. And the ability to script it. And you can use this technique in bone setups too.

eek

eek
08-23-2005, 11:47 PM
http://www.eekstudios.com/cgtalk/edge_top.jpg

This a new face model ive been working on for a new version of my rig for the full plugin. Ive posted up some stuff about the edge topology as it benefits not just this type of rig but also bones, morphs etc etc:

So the first red line (circle) is the edge of the outer muscle of the eye that joins the skull. It seperates the brow from the eye and allow it to raise and lower without affecting the eye or its socket. It also give overlap to the skin between the eyelid and brow.

The second edges are the edges that join the procerus and frontal muscles of the face (nose and brow), there important not only as they allow for frowning, surprise anger etc but they also give an even supply of poly's when the mesh is subdivided.

I'll talk about some more stuff soon such as the nose area, crows feet etc etc soon. And hopefully get some more muscle/gui/rig pics/clips up for you.

eek

anthonymcgrath
08-24-2005, 08:06 AM
man it looks really great - keep posting updates :)

el-vio
08-24-2005, 11:20 AM
Very Great stuff Eek, i love the techniques used, i'm trying now to make a facial setup too, but on maya, i will try to do it with a techniques near yours.
I have some problem about symetrise my constraint, i can do it manually but i'm searching for a automatisation solution, i don't know if this thread can be centralise on maya cause you are talkking only about max facials riggs.
but if someone can direct me, that's will be cool !

here a simple view of my simple setup not down :

http://armando.pouya.free.fr/cgtalkwip/spendingtime.jpg

http://armando.pouya.free.fr/cgtalkwip/separation.JPG

That's where i am, i'll try to put 3 constraints on each joints, but it will be complicate if i have to do it again for the mirrored part...

I'm trying too find how to do the same techniques of eek on maya, if i find and feel it easier, i will abandonned this stuff...

but symetrise setup on maya is melting my brain down, HOW TO :s , i am so preoccuped about this I post thread every where ! on cgtalk character rigging post, on a 3DVF cg french forums, here here there and there again, replys ? 0 niet, nada, none nothing ! RIEN DU TOUT.....
help ^^

eek
08-24-2005, 03:22 PM
symmetry in rigging -- well im doing it with a script. What exactly do you want to do? -- if your on msn send us a mail and we can chat about the prob.

eek

el-vio
08-24-2005, 03:53 PM
ok i send u a pm with my msn adress, thx man.
using a script to do that is in fact the way to take i think for my case

nottoshabi
08-24-2005, 07:00 PM
I was able to recreate what EEK did with splines in maya, but I got stuck at the UI. With out the UI to control the masive amount of control system the, facial set up is a pain to animate. How do you control yours?

eek
08-24-2005, 07:23 PM
-- im building a scripted animation pipe for that very reason. Cant quite show too much as a friend and I are kinda developing it. (but should be very cool)

eek

eek
08-27-2005, 09:23 PM
So ive been doing some work work on the cheek muscle stuff, and have pretty much resolved the issue ( i think!). Im basically achieving the same result of a look-at controller,path constraint etc etc but with scripts and expressions. Im trying to get the memory down as possible as if you have 20 of these things in a scene it'll slow down.

Also this will be able to be scripted, and the added benifit is if you make a spline IK bone chain with the spine, you've got bone muscles, wiith a curviture.

eek - i'll try and post up a pic. Maybe a movies better to show off what i mean?

eek
08-29-2005, 03:27 PM
hi all,

Here's a early surfacing test of the tmuscle 4 in action, infact theres three being used:



>>DOWLOAD CLIP<< (http://www.eekstudios.com/cgtalk/test_muscle_action.zip)

you have control over the distance of each muscle, when it starts to buldge and and the buldge strength.

Im gunna add control over tangent handles next, so you can shape the muscles.

eek

Tughan
08-29-2005, 05:45 PM
Now isn't that the coolest thing in the world? :)

It makes an urge to chew it. :D

Harvey
08-29-2005, 08:35 PM
Looks cool Eek...what is the speed like when you have a lot of these in your scene?

dobermunk
08-29-2005, 09:20 PM
me wants it!

eek
08-29-2005, 09:31 PM
Hi Harvey, Dober

Harvey its very quick, i have three in a scene and it can be played/edited in real-time. Also this is an early version of it. So im cleaning it up a little, adding tangent control so should be even quicker!

I had 6 in a scene in an earlier version and its still as quick.

Btw i'll have to get your MSN if you have one.

Dobermunk,

hehe - glad you liked it.

Paul gave me an idea of using a patch suface to be driven, so im gunna give it a try. This way you could embed them under the surface and drive it with skin wrap. Its an idea anyway.

You can do this anyway with the system...hmm but maybe you loose the middle curviture.

eek

eek
08-30-2005, 10:02 PM
Updated with cleaner scripting, better stability and tangent control:

>>DOWNLOAD<< (http://www.eekstudios.com/cgtalk/test_muscle_action_2.zip)

test shows:

base length trigger set at 200
bulge length trigger set at 150

edge muscle length power: /2

middle muscle has a inv strength of 1 to give the feel of inner stretching (opening jaw)

All these value can be tweaked, and animated on the fly. There also manual control of the handle to make specific bulging (inflating, squeezing, etc )

eek

omega3d
09-11-2005, 04:08 PM
I tried doing something similar with your rig (using linkedxform) but how do you make it move with the bones (because when I move the bones, I linked the facial helpers to the bone... I get a double rotation)?

foane
09-13-2005, 11:20 AM
hey eek,

I like your spline approach to skinning a face but I'm really wondering how you've managed to make the jaw open nicely. On my rig (which uses the same kind of rigging as yours) I'm a bit stuck atm on how to open the jaw so the upperlip doesn't follow the lower lip (which should rotate with the jaw). I want to implement something that makes the mouth corners follow as well......
are you willing to share your methods for the jaw or do you have any suggestions?

a quick discription of your approach to creases would be cool as well....
p.s. : I fixed the jawproblem for the moment with a second helper that has its rotation point aligned to the one of the jaw + it is linked to the path-constrained helper + has an orientation constraint connected to the jaw's orientation (with adjustable weighting for the other mouth-points)

any help would be appreciated.
thanks

eek
09-13-2005, 04:05 PM
Hi foane,

Well yes your right, i had the same problem about two iterations ago, you would open the jaw and everything would move with it as if the mouth was stuck together. Basically now ive got a series of expressions which drive points, which themselves are being driven. Its an open system, as you can control each part as you want. For instance ive got a version, where by you can dial up/down the percentage of the mouth sticking together for stich lip -realistic stuff. Its nice that you can make it what you will whether its realistic or not.

As for creasing, well before it was just a basic point being drive by two other and a spline skinned to it. But now ive added tangent control so you can direct how you want the crease to work. The creases use the same system as the cheeks - my t-muscle setup. Im deciding whether to have a simple version for creases though.

Other finite creases im doing via normal maps, and driving them off the main muscles e.g crows feet, eyelid wrinkles.

Im still deciding whether to to add phsical creases (not maps) for the frown - the rule being more mesh creases, more mesh detail.

My jaw system is similiar to yours, its basically layered so built onto of the mouth muscle. So the sphincter muscles is one unit, then ontop ive got a system that pulls this basically down via the jaw.

The order is something like this:

cheeks ->mouth ->jaw. So the mouth controls the cheeks, the jaw controls the mouth. The key being the order of your muscles. So if you generalize your muscles model theres only few muscles you need:

sphincter
linear
flexor


Sphincter for things like the mouth, eyes. linear for like brow, lip pulls. And flexor for like the cheeks and main creases.

Ontop of this, is you action of muscles. This is pretty important as your not only driving the order/linkage but you have to set when you want you muscles to bulge.

For instance in older people, facial muscles weaken so there delayed reaction, secondly you have fat. The system ive got easily enables you to add springs to controllers to make them jiggle whilst compressing.

So its a combination of:
muscle design
order/linkage of muscles
muscle trigger*

*This is even more important to control, eg say you character has a scar against his face, those muscles are gunna be much tighter than the others, so therefore work differently. The system has also tried to be as generic as possible and to that end, tweakable, For instance say you build two characters with the same rig, but for one they have a scar/closed eye, talk out the side of there mouth. Well you dont rebuild the rig, you just change the attributes of how it works, ie. what values the scripts read etc etc.

This generalize facial muscle map, also doesnt need to be splines, Im even with the system gunna add an 'convert to bones' button. Its just an aproach.

Foane ill pm you with my msn.

eek - more to come (bit hectic atm -moving to canada!)

foane
09-13-2005, 10:00 PM
eek,

thanks for the extensive explanation of your system analysis, I'm sure this is of some use to other members as well...

altough it's nice how everything works there's just one big problem in my case. I don't know expressions. Maybe you could explain a bit more about what you just do with the expressions, I think I can make the same things happen without any expression controllers (probably a bit harder/longer). maybe we could talk once in a while on msn...or maybe it's nicer for the thread to post everything here? we'll see

thanks again
greets,

Francis

eek
09-13-2005, 11:59 PM
The system is i think possible without expressions, but you may possibly kill your speed. My first versions were done entirely without the use of expressions, but i soon relised that building a system purely on constraints would be bad news, and also the vision in my head had to use expressions just for the things i want it to do.

I changed over to expressions mainly and importantly due to the mouth muscle system. The problem i faced was that driving previously a point between 2 others gave a uniform constraint, i.e 50/50 in all directions/axis. Even if the ratio was odd, its was still uniformily odd in all directions.

The problem was and is, is that muscles of the face act very specifically, i.e some are bound to bone, some hang, some even are bound in layers of skin. (an area i still need to look into) and to this end are constrained differently in different axis.

A muscle working in x, may work differently in y and z. It may be triggered in x and not y/z.

Im now using script controllers, to control chunks of it as im trying to make it easly accessible.

A little on Expressions:

Expressions in max work with scalars and vectors.

A vector expression works with the entire transform i.e rotation xyz, scale xyz, transform xyz.

A scalar expression works with single variables i.e transform x, rotation y, scale z, and things like sliders, spinners.

But both can mix,

So you can drive the x rotation with the vector of another by simple pulling the specific vector attribute. eg expression on $sphere01 x's rotation may be:

a.x/2 + b.x/2 - 'a' and 'b' being a whole object transform, and .x being the specific axis.

(btw you can do this in paramwiring just by adding .x,y,z at the end of the controlling object if its bezier)

This makes them very powerful.

With the system ive got im doing very simple expressions like the one above. Just lots of them.


Heres a quick example:

So we'll drive the entire position of a box (box01) via 2 points 'a' and 'b'. Well put the expression on the bezier position of the box. So well need [,,] in our expression. We'll make two vectors 'a' and 'b' and assign them to each points bezier transform respectively.

example 1:

[a.x/2 + b.x/2,
a.y/2 + b.y/2,
a.z/2 + b.z/2]

So here were driving the the box evenly between the two, but there som much more power, you'll see:

[a.x/2 +b.x/2,
a.x/2 + b.x/2,
a.y/2 +b.y/2]

So now were driving the box's x and y position with the x position of the two points and the box's z position with the y of the two points position.

ontop of this you can add clauses:

[if (a.x + b.x < 100, a.x - b.x/2, a.x/3 +b.x/3),
a.x/2 + b.x/2,
a.y/2 + b.y/2]

So the first line looks complex but it isnt it just using an 'IF/THEN/ELSE' clause to say

if a.x + b.x is greater than 100, then a.x - b.x/2, else do a.x/3 + b.x/3

Now that is simple, you can also nest expressions within each other like in scripts:


if (a.x>b.x,(if a.x > 50 , b.x-50, a.x/2),0)

This is an if clause nesting inside the then of another if clause.

you can also mix and match for intance say you have a slider called 'mult' as a scalar variable.

you could then have and expression like so:


[(a.x/2 +b.x/2)*mult,
(a.y/2 +b.y/2)/mult,
(a.z/2 +b.z/2)-mult]

mult could be a slider of 0 -100, so now you got a way of changing the expression outside of it.

You also got things like '^' powers of. Max, min eg

Min (slider1, slider2) - will be the smallest of those two sliders.
also max (slider1, slider2) the same but the opposite.

An expression can work, between list-controllers, for instance you can get the vector of a bezier controller then the scalar euler of the controller on top.

So you can really mix and match.


you can limit things eg. the foot going through the floor:

if (a.z < 0 ,a,a.z)

So there really really powerful, and thes in combination with scripts, gives you amazing power. Remeber also expressions working within a script too.

dependson $point01 $point02

$point01.pos[1]/2 + $point02.pos[1]

[1] - being x [2] - y and so on...

Also youve got controller types:

$point01.pos.controller[2][1] - eg might be a float list then a sub-xyz[2] then x[1]


I'd need a day to talk on expressions and such, its so so powerful, its like the backbone to rigging.

eek

foane
09-15-2005, 10:53 AM
I've looked into some things about expressions and I have to admit they're goooood. I was also amazed of how easy they where (as long as you keep em simple and short).
I would really like to hear how you deal with path constraints and how you've managed to control tangents...

advice for every rigger: look into expression controllers!!!

hope to hear you soon,

Foane

eek
09-15-2005, 11:29 AM
Also the key thing with expressions, is there pretty much generic to rigging. If you work it out in one package it should be very much identical in another.

Path constraints are exactly what they say, im using them to glue the skin on basically around the mouth,eyes and brown. Because there built on an underlying deformation model (muscle model) they just move around with it. The added benfit of this is complexity of rig.

If you character is low poly, you can put less and less muscle detail, in the rig fewer m-lines (path line) fewer t-muscles (cheek muscles) and fewer detail in the lips.

Tangent type access has been in max for a long time, as the discreet/autodesk people like to say "everything is animatable' - and because of that accessable with controllers.

The big big reason, to change of is basicall speed, and memory. Previously i was using 3 points to drive the cheeks, 1 at base, middle and top. The system was very complex to setup to. I was using odd expressions to drive the middle point something like:

if (a-b)<100, then b-100+a, a)

Because i was trying to find the exact distance between the top two points.

It was complicated, as i was having to pull exact values from the expression debug. Now ive moved over to scripts, with expressions. The power with scripts combined with expressions is very powerful. Instead of pulling out z values in an odd manner.

I just use the distance fn. Now i spose i could write an fn to do it: something like normalize (a-b).

Now i creating the bend with 2 points. To pull out tangent handles its very easy - but first they need to be animated. Then they appear in the graph window as: object>master>InVec1, Outvec1 etc etc

The only important thing is to pick the right one. So i give it a float_list (so i can move it around later) then an expression controller. The expression is very simple, its a vector expression on its bezier controller:

[-a.y,
a.z,
-a.x]

The difference here being that its inverted for some reason, i think points in space are treated differently in the other objects. They dont contain rotational data there just floating points.


Atm im controlling the handle with a point so i can put additional animation on it without having to go into sub-edit mode. I could however drive the entire muscles without any points but id rekon it be pretty hard.

The other quite major issue i had, is something called tilt. Basically what im trying to achieve is a bend a piece of plastic between you fingers. Now with that it can tilt back and forward, left and right. The buldge still maintains its position correctly tilting up/down left/right.

But in cg simple things are hard!

So to get the right tilt, i swatted up on matrix's, and thats what fixes the problem (thx Paul)

eek

- be great to show you guys some of this stuff in person. Maybe a talk or meet up next/this year sometime maybe a festival.

foane
09-16-2005, 12:54 AM
A thing I'm looking into atm is the fact that when you assign a dummy or whatever to be the control of a point on a spline, you can rotate the dummy (and point) + you can scale him (which controls the tangents of the splinepoint. Altough in tangent pairs, not individual). the dummy's pos/rot/scale can easely be controlled by something else....just thinking out loud here, so forgive me if I'm saying stupid things...

oh and by the way, in my last post I meant I would like to know how you set up an expression as an alternative way to path constraints. so how do you make a path constraint in expression form?

Foane

eek
09-16-2005, 01:13 AM
Making a path constraint via an expression is not hard. Its just a matter of driving the ratios via a slider or something. You wont get control of the point itself as its being driven.

Ive written a lot of this stuff down to ill send you a pm with more stuff.

eek

foane
09-16-2005, 05:46 PM
I'm kinda stuck here, I've used some script controllers and other constraints with my timesliders maximum at frame 70.....now some of the controllers don't do what they should do after frame 70. Do you by any chance know if there's a parameter I can change so I can offset the time limit of the controllers?

thanks,
Foane

eek
09-16-2005, 07:12 PM
go into your graph editor - grab all the timelines that corespond and end at frame 70. Then just stretch them till you want the controller to stop. (pull the ends)

eek

LiquidSpider
10-13-2005, 10:10 PM
its pretty cool ur taking so much time and dedication on this.. its been years in development for you!!

hope you can muster up a tut soon.. but i remember reading you'd have one 'soon' in 2003!!

heh.. well.. hope all goes well for you :)

eek
10-13-2005, 11:07 PM
Its getting there slowly - lots of research recently in muscles/pose stuff. Ive been looking into face|robot, as well as combination sculpture systems. Max 8 solves a lot of the issues ive been having with its loose referencing. Im tooling it slowly so eventually i should have a bunch of scripts!

eek

foane
10-14-2005, 01:09 AM
what's "loose referencing"?

eek
10-17-2005, 07:38 AM
basically your referencing nodes, like the expression editor. But with the next script controller, so you dont have to worry about name dependancy etc

eek

aquafina a great
11-09-2005, 05:03 AM
wow! i just read all 48 pages :eek:

This is pretty much my first time researching facial setup. I was doing trial and error at first and started to get confusing so i decided to do some research here and boy my brain having some cell sex :thumbsup:

I'd like you thank everyone who has contributed to this thread.

eek
11-09-2005, 07:22 AM
I'll try and add some more stuff up soonish - been really busy lately with Bioware, learning all the tools and such.

Ive got some more ideas, which may (probably) make your heads hurt, generally im scripting most of the tools and stuff. Most of the muscle stuffs done, just thinking about new techniques etc etc.

eek

maxflame
11-10-2005, 05:17 PM
Eek you tha man! :thumbsup: This is exactly what i've been searching for. I don't know why but i can seem to access your file cept some images and vids you posted but would like to understand more.Just went through all 48 pages and i must say at least give us a brief walkthrough on how you setup your first. Before going too advanced so we can understand some of the mad scientist stuff you've posted. i'm sure this is gonna be the hottest plugin ever.

eek
11-12-2005, 01:53 AM
Ok a little how to:

[simple guy]

Make a head with very good edge loops, these are vital for good deformation. Preferably med poly.

To make a muscle all im doing is driving a spline with a point. Eg drive a points x position via a points z so when it going down, it bulges.

For the mouth, im driving splines, with points path constrained to them. Then skinning the lips to these points. So you move the splines and inturn drive the lips. I'll see if i can find my original and post it up as its a little hard to explain.
----------------------------------------------------------------------------------------

Ive started reading the facs manual. Facial action coding system. With facs you have AU's Action units, these are the muscle actions of the face.

So the first AU is AU4 'brow lower', An AU also has and arc, this is the greatest marked change from its start, not the end pose.

Also AU's have an intensity chart from a to e:

a - trace
b - slight
c - marked
d - extreme
e - maximum

So the arc of AU4 might be from a to c, then it easies off to d and e.

So now you have au4a, 4b,4c,4d and 4e.

Now the way combinations work are like so:

AU 1 + 2 + 4 is not a additive blend of all three, but going from au 1 to 2 to 4.

Now you cant go from au1a, to 2a, to 4a because the face doesnt do it. So you set a rule to say when going from au1 to 2, to 4 you use intensity b like so:

au 1b, 2b,4b.

This is why gollum has so many shapes, because 1 slider may call au4a fine but in combination with au2 on another slider au4b has to blended in i.e a combination fix shape to fix the intensity.

So i need to make a rule based system, but least i dont have to make fix shapes as muscle and bone system are linearly interpolated.

eek

eek
11-12-2005, 04:34 AM
I was slightly wrong in the last post, combinations do occur but its kinda how the order of combination works.

In a way a slider for an AU should start from -1 to 0 to 1 eg.

So if you move AU1 to value 1 its at intensity e, when you add AU2 to the combination at 0 value, AU2 can only reach intensity level b, but past 0 to 1 AU2 goes on to level e, but AU1 drops down to level B. At a value of 1 any slider overides any other action (in this case).

So firstly a slider is ramp, from neutral to arc to end pose. This isnt relative to -1 , 0 ,1. Or maybe it is? hmmm...

I think this is correct. More research...

eek

foane
11-12-2005, 01:06 PM
hey eek,

why don't you use squash bones for the bulging facial muscles? They pretty much do the same thing don't they? Also, what about making a circular spline around the mouth (which will be skinned instead of the path constrained points) with some kind of controller that can change the tangents around the corners of the mouth (tangent controllers like the ones you're using for the bulging muscles...). You could constain the points of the circular spline to the path constrained points you're using now.

Foane

maxflame
11-12-2005, 09:52 PM
Thanks alot Eek! I've been able to decode the setup but not up to the expresions part.I'll leave that to you pros.

eek
11-24-2005, 06:06 AM
So im looking into the control system for this - its been in a way the hardest part of the system. Combining the free form nature of the rig, with the constraints of sliders and spinners is very hard, namely because they have to exist in the same space. I.e they have to work both at the same time!

So, as ive been looking into combination sculpting ala, gollum. Well i was way off, thx Daniel for putting me straight. In a way my system is very similar, you moving vertices through space, yes this is like blends, but my blends are based off muscles and user input. Now Euclindean space, or n-space as we'll call its in in a way garentees infinite amounts of blends for a face.

A little on n-space:

Ok so a vector, can be classified as a series of points, held in parenthesis: (brackets)

(1) - 1d a dot
(1,2) - 2d a line
(1,2,3) - 3d a vector (direction)

n-space is the space these vectors are held in. eg

((1,2,3),(1,2,3),(1,2,3),(1,2,3))

so this is '4 space' so i suppose you could classify an array as n space if what it contains is a series of vectors.

A n-space doesnt have to have 3d vectors in it. It could be a mixture:

((1),(1,2),(1,2,3)) - this is still a 3n space.

Now a vector can also be classed as a direction for instance, if you have 2 vectors a,b and you take a-b you get a direction from an origin. So if your output is (1,2,3) and you origin is at (0,0,0) then you have a direction from 0,0,0 to 1,2,3.

Still there?

So from an origin to a vector can be thought of as going from going from 0 to 1. a value of .5 is half way along this imaginary line. This can be achevied using a linear blend fn.

So n-space is basical a container of vectors of any value from 1d to ...nd.

Now,

In a way if you collect this n-space, to a string eg. val1 = ((1,2),(1,2,3)... you have in essence a pose of vector space. So imagine a box, collect all its vertex positions and you have a n-space pose. If you move all the verts and collect again you have another set.
So you get:

pose1
pose2
etc,etc

Now your input mesh can go from any pose to any other pose, because you just moving your mesh through sets of n-spaces. But these sets are just data values. How this input mesh goes between these value are defined by rules, i.e the pose's are 'loosly' associated with a value,slider,controller etc etc.

So for instance, you associate pose1 with slider1. And pose2 with slider2 you will get the standard morph blend. But the power comes in because you can drive the input mesh anyway you want, so you could set up an association that say pose3 = slider1 + slider2. So a pose can have 2 controllers.

So if your sliders on there own are fine, but combined mess the mesh up. You associated a fix pose, this isnt a combination fix shape, its just how you want the mesh to look like when both the values are combined.

So all this does is move the verts to there new fix pose when 1,2 sliders are combined eg.

1 is fine at 100%
2 is fine at 100%

But when 1 is combined with 2, the verts dont add they just linearly blend to the fx shape. When you bring 2 down again, they move back to 1s value and vice versa with 2. This is different to morphs.

Now going from the origin to the pose is linear, but this could be ramped, inverse etc Theres lots more to it, and this is a general over view. My system if i can get it to work will be cool, because your'll be able to animate in any pose freeform but also go to any predefined pose, blend those poses have fix poses - because your just moving verts etc through space of n-spaces.

eek

miracle9979
12-01-2005, 06:34 AM
The best book that shows u how 2 add minute details in facial expressions is "Character Animation" by Chris Maraffi.The book tells u how u can use joints 4 detail facial expression.Also shows how 2 use joints as an influence rather than using geometry.

eek
01-07-2006, 02:44 PM
Hey people,

Happy new year, first off sorry for the delay. Ive been pretty busy with work lately, but after seeing Kong i got a new burst of ideas. So im gunna try and add them into a new face (having to think about a good face to use). Currently im cleaning up a lot of the math making my own functions etc

Ive also been looking into cubic vs bezier muscles i.e whether to have tangents with handles or weighted cubic splines to make the muscles. (simulated NURBs cv curves) Cubic splines a little cheaper as they dont need a couple of extra expressions, but the curve can they produce can be flatter - but they can be weighted so maybe a combination. Also trying to build the pose tool - which is pretty complex to think about. So hopefully some more pics soon.

eek

maxflame
01-11-2006, 08:21 PM
Eek sorry to ask but how did you skin this head without it going crazy? when you move the bones.I skinned the head with your setup and it worked fine but when i rotate the neck bone the places skinned to the point controller act crazy.

eek
01-11-2006, 10:26 PM
This is a problem im still working on too - there are ways around it, but its very hard. I may end up keeping it on the spot and use a copy of the mesh to drive with a body rig. The control system is gui/slider based so should hopefully work out. I may be down to parenting - i need to look into it some more.

Edit:

Not as hard as i thought, well i havent been thinking about this part much. (as i was using a clever little technique), but the issue was just parenting. Either parent all the controls before setting up the controls or after. I made a simple constraint with a point between two others then parented the lot to a point - works fine.

I havent looked into this much, as ive been looking into some the muscle bulge, chin, eyelid stuff.



eek

maxflame
01-12-2006, 09:52 AM
Thanks for the tip.The thing is i alrady did the parenting but it works fine on a small less complex model, i'll try crating another from sratch.

eek
01-12-2006, 04:31 PM
Yes its a little fiddly, basically your zero'ing out an object by parenting it. And then driving it with an expression, this means its expression is gunna work relative to its parent.

eek

ghoul
02-02-2006, 04:37 PM
hi there,

I've read through this thread few days ago and saw the idea of driving spline handles by script controllers to simulate folding of the skin. Then I tried to set up one of those for use in my rig (that combines bones, path constraints and morph targets) but just couldn't get the idea how should the handle react depending on distance between points. Eek, I would greatly appreciate if you spend a couple of minutes to explain the principle behind your T muscle and show us the formula you use. I am also willing to make a short tut about setting them up in max (so I don't forget it:)), if you don't mind of course.

thank you.

-ivan

eek
02-04-2006, 02:48 AM
Hi,

Sorry for the delay, im currently learning houdini. And am a little busy at work. Previously i was ripping out tangent handle values via animating them for a frame, exposing the controller -well giving them one.

Previously i was using a really simple expression [-a,y,-z] on a vector variable. But now ive found out about a script controller version (thankyou aaeron).

fn addhandles ss v1 v2 v3 v4 =

(
setKnotPoint ss 1 1 v1.pos setOutVec ss 1 1 v2.pos
setInVec ss 1 2 v3.pos
setKnotPoint ss 1 2 v4.pos
updateShape ss
)
so this is held in a struct in the start folder so i can call it easily. So id make 4 points and and a control shape. plus the line, on the line i change the handles all to be 'bezier' corner.

I assign a scriptcontroller to the constrol shapes scale (a channel i dont use)i make 4 variables in the script controlller ss, v1 ,v2,v2,v4 and assign each to a node pointing to the points. ss points to the line. Then i run the fn eg. test.addhandles() - test being my struct.

There a whole load more to it, plus a fn that controls the bulge, rotation etc.

eek

Tughan
02-04-2006, 12:18 PM
Eek, after you learned Houdini too, I'm sure you'll create incredible rigs while your hands tied behind your back, and inside a sack. :)

(ok, that was a bad houdini joke)

ou98dtbiggs
02-08-2006, 11:09 PM
Using Character Studio with Physique, and I thought to put a Multi-res modifier so that my 40K guy can be animated and worked with at around 3000polys. Anyway it was working fine, but then when after I animated a walk with biped,(walk cycle was fine) and then started adding to the walk and used the dope sheet and play the animation in the perspective view it pops to the hi-res model and and the multires modifier is frozen! The mod stack is Physique -MultiRes-Editable mesh. I wanted the ability to have my guy be different res if animation took to long Please help!

-Darren

eek
02-09-2006, 07:29 AM
You tried multires at the top of the stack?


eek

paconavarro
04-05-2006, 11:13 PM
EEk I'm more than impressed with this system :)

Keep it up

jasontheaker
05-04-2006, 12:14 PM
Hi there folks

I’ve tried to read as much of this thread as possible and I'm very impressed in the content is very interesting. I’m sorry to say I haven’t had time to read all of it I got to about page 22! So I was wondering if there is any online tutorials (Maya scripts) that I've missed that are for facial animation.



Thanks in response guys!

Jason

eek
05-05-2006, 11:47 PM
EEk I'm more than impressed with this system :)

Keep it up

Cheers man, Hopefully i can spend more time working on it. Work pretty much eats up your time. THeres lots of ideas ive been looking into including pixars menv, and facial robots setup process. I think ill still stick with my spline system, even if it turns into strips of muscles. Skinning is an issue, but unless i write my own skin system i dont know. Also im thinking about secondary movement eg, inflating you cheeks, pushing them with your tongue. So yes, sorry for been away from this stuff - im learning lots here so next iterations should be far faster and cleaner.

eek

nottoshabi
05-06-2006, 02:57 AM
Eek how did you divide your face? For example when you pull the corners of the mouth does anything ellse fallow it? What about the upper face do the eyes also strech and squash? And will the brows also move with thte forehead? Cause I'm having problems figuring out what should strech when I pull the splines. So far what I have is divided the face in 3 parts. The mouth and nose. And the upper face left and right. But i'm not happy with that. I was wondering how did you divide the face? Does the whole face pull and strech in any direction?

eek
05-06-2006, 03:52 AM
I got quadrants, the mouth left/right, and upper left/right. The mouth corners drive the face up till the obolisks round the eyes, it also drives the muscles around the nose and brow as its linked to the cheek muscles. The nostrilll flare also drives this. The eye oblisks drive the brow too, which also drives the wrinkle muscles at the brow. These wrinkles can be driven also by individual brow controls.

The face is driven by triggers, this is very important it doesnt all move at once, muscles trigger other muscles when they reach a certain amount, both bulge laterial and veritical is uniquely triggered.Because with the face there are muscles inbedded in muscles layers, they have to insertion point. Untill they meet bone. Also there unique as the action isnt bilateral, ie both sides dont go in at the same time there asymetric. Its very complex stuff.

eek

ratatat
05-12-2006, 08:14 PM
hi all...

I've went through a few pages of this thread, and very impressed.
I thought i'd throw out a general question to those who may have some experience...

I am creating a facial rig in maya for gaming. I was wondering what the most efficient method would be in regards to keeping it cheap for the programers. I'm familiar with blendshapes, but is there an better alternative. this thread is very helpful, Thanks!

eek
05-12-2006, 09:13 PM
Bones i think is your best bet, does your engine support blend shapes?

eek

ratatat
05-12-2006, 11:16 PM
Hi Charles.. We're brainstorming what to use. I'm thinking bones, but we want to use the least amount as possible. Using blendshapes is a possiblity, but we'd have to work around a few other things to get it into the programming side.

Would you happen to have any tuitorials or links in mind could take a look at for various types of rigging? Thanks for the notes.. josh

eek
05-12-2006, 11:38 PM
Well for game side stuff i only know of bone rigs as in an unbroken heirachy that gets exported. As for blendshape thats gunna be pretty heavy , engineside as your pushing verts around all over the place. Tutorials wise not atm sorry - most of my research into this area is on going pretty much. I think in my last place we had 12-15 bones in the face. I cant talk about our current tech(NDA's), but most engines support bones. And with good skinning you can pretty much emulate all the poses gained from blendshaped with the added benefit of control the bones on an individual basis.

eek

LucentDreams
05-16-2006, 10:34 AM
for a game if your looking at morphs definitley do not look at the maya style blend shape but rather stored deltas, much more optimal, eash post only stores the deltas or differences, far less data to handle than blendshapes where theres copies of meshes.

nottoshabi
05-16-2006, 11:59 PM
EEK, how did you deal with the parenting of the quadrants? I'm having double transforms when I parent the quadrants and the guides together. If I parent just the guides everything is fine and it all works great. But the quadrants do not fallow the head so that part does not work. When I parent the quadrants then the guides dont fallow the head and that is reall bad. This is my order of operations:

Bones that are constrained to the guides (curves). The curves have clusters wich are weighted to 2 or more quadrants. The quadrants allow for the distortion of the guides.

I know I'm parenting the worng thing. So wich way should I be looking at it?

oveis86
07-08-2006, 01:51 AM
where can I download the maya version of this?! there is no link around here!! I'm searching for half an hour now!! :scream:

help me out please..
thanks

eek
07-08-2006, 04:51 AM
Sorry for any updates, Ive been very busy lately, work is ramping up so its harder to find the time. As for the quadrants/curve issues double transform - i got the same issues and am currently trying if slowly to resolve it. The issue being skin> clusters>to head doubles the transform on the head. The ways around it im looking into is either keeping the rig at 0,0,0 and driving the mesh off it i.e essentially the rig being a realtime morph/blendshape and skinning on top. The issue with this being the controls - which could be parented to the head bone.

Or driving the muscles to follow the head perfectly, but getting muscles to work in all axis plus have parent transforms on them is really really bloody hard. So as to the tool there really isnt one per say, more that im in state of research for the face, thats on going. Im am still looking into the face, but a little slower.