View Full Version : "Toon Guy" character rig
Hi! Another weekend/late night hobby project, which i sort of finished today. 3dsmax and max script.
Here's the video first, i hope it's not too long. Under the link there is more ramblings for interested.
Toon Guy Rig (h264 quicktime, 5min20sec, 20Mb) (http://www.cgmill.com/temp/20080602_toon_guy_h264_sml.mov)
For last month and half or so i have been making a character rig. I've been learning max script for a couple of years now, whenever i happen to have time for it. So i've done small pieces of code and script, while learning, but never had time to put them into proper use. I decided to put them into form of one character. Sort of wanted to gather all pieces into one package.
Character was created first and i refined it as i rigged the character. While rigging character i wrote more scripts for automated rigging. Facial rig came as sort of after thought.
I guess i'll take a break from this project for now and continue with the characterization module later as i think is interesting concept. I couldn't fit everything into video...
Hope there are some interesting ideas and such, and thanks for rigging gurus here in forums for help!
|
|
AsaMovshovitz
06-03-2008, 01:57 PM
Hi Sami,
that looks great, very impressive,
could you share a little bit more on what is your setup for copy/paste poses like you did for flipping the hands?
thanks,
Asa
d-brooks
06-03-2008, 02:58 PM
Really nice work dude! I really liked the storing of poses, that's cool. The facial setup was nicely done too. It must be satisfying to have completed it :D
Hi Asa.
I was going to explain more, but it was well past midnight last night! So i'll explain it now.
In rigging part you see parts i selected for rig. I evaluate the "characterize" script. It will sort out rig parts, to which array each part should belong.
After a lot of experimentation, i found out that key is here that everything is sorted in top-down hierarchy. This made it easier to do mirror operations, as i just go "down" in hierarchy from slot 1 of an array. Each rig part is fed in correct order to mirror or flip function which reside in custom attribute definition of "animation control panel" (the one you see in video).
For mirroring routine i first used quaternions then eulers, and finally ended up using matrixes - so far i have tested rig in upside down poses, on walls - flips and mirroring works ok. With other methods i had problems. I first feared that mirroring would be way out of my scope, but working in "character space" makes things easier. Legs are mirrored in body space (big rectangle control of body) and arms in body space or arms space. I think Paul Neale does it this way in his "Maxine" rig.
It doesn't matter either if there are different branches in hierarchy, it's possible to have free floating parts too, i.e. there's no need for one fk style hierarchy in limbs. So far it has worked fine, but i guess i'll rewrite the code later if possible.
This makes it possible to do various biped rigs. I simply haven't had time, but basicly control panel functionality would already work for quadruped, when i mark front legs as arms. Also, i could make four arms, without problems (actually it now has two pairs of arms, as rig containts fk and ik arms). It doesn't matter if rig parts control fk or ik, either way, i just store nodes in arrays, then process each limb array in question and mirroring and flipping functions process each node one at time.
I just run characterization script again, whenever i changed something.
I have to say, that idea for this "characterization" came from the writings of mr. Neale here in cgtalk. I'm not quite sure how or if he has something very similar or not for "characterization" but the idea of "tagging" each part which belongs to rig came from him!
Thanks David!
I just wish that storing poses in general would be easier in Max! That's why i wrote routine to store poses. I couldn't fit this part in video, but i also have done a script for this, which will add selected tracks automaticly to modifier, so i don't have to do this manually.
archanex
06-03-2008, 10:42 PM
Hey great job SS! The pose mirroring is especially impressive. I really like the design of your model too, that's something you don't see in a lot of rigs.
IkerCLoN
06-04-2008, 01:41 PM
Awesome job, Sami! :)
Thanks Andrion! Then i didn't waste my time!
Hi Iker! Thank you very much for compliments!
Aritz
06-04-2008, 10:26 PM
Really great work :wise:. Congratulations!!
Leanndro
06-05-2008, 06:51 PM
Hei Sami, awesome job and great character design too!
It would be wonderfull if we can put our hands on this great rig!
I saw your blog too, you have a great modeling skill!
Congratulations:bowdown:
Aritz:
Thank you. Dig the the green guy you made!
Leanndro:
Hi Leanndro! Thanks! I'm trying to balance between too many things i guess :) Don't know if i'm able to share the rig at this point but send me a PM if you have some questions!
IkerCLoN
06-06-2008, 02:37 PM
May I ask you something related to the rig? I'm on another thread (where also you posted a messager) discussing about aligning the pivot of one object to the pivot of another. Great posts over there, and very useful too. In the video, you have a point on the foot that makes it rotate using the pivot of that point (and you have like 8 buttons in the modifier panel for choosing where to align the pivot, 'a la Biped').
I'm gonna start 'seriously' with the developing of a custom rig system for the studio I'm working on. Since they are used to Biped, your system seems like the logical step (animation supervisor saw yor 'toon guy' reel and he shouted 'Iker, that's what we want!'... Playing with the transforms, and thanks to the message in the thread I was pointing to before, I got something fancy. But, of course, when animating... everything is screwed.
So my question, after all this long explanatory thing, would be... 'can you animate this point? And could you tell us, in general, how did you achieve it?'. It would be very useful information, if you can share it :)
Thanks again, Sami!
labbejason
06-06-2008, 04:58 PM
Wow that was awesome!!
labbejason:
Thanks jason!
IkerCLoN:
Well, i guess it won't nudge me to either direction, if i explain the concept. I got the idea from phoelix, and his writings about these on-face tweaker nodes (if you remember).
Foot "pivot" is not as good as i wanted it to be. A disapointment for me, that it is not actually like biped pivot. You see that it exists in "foot sole" control space. So, actually it's sort of "inbetween" foot animation control for tilting foot. I had to stop tinkering with it, as i had sort of deadline for myself to put the whole rig into package.
But if you are still interested after this fact, what it does:
Visual pivot is animatable. It's parented to foot sole i.e. master control of foot. Visual pivot has one child, which you can't see in video. This child counters all xyz translations of pivot -> it's not moving, while it's parent moves.
All IK foot controls are parented to this invisible pivot. So, move doesn't affect this invisible pivot, but rotation does. This is done with script controller in this pivot, movement is calculated in coordsys of sole, to make it work when foot rotates. Drop me a line if this isn't enough info to replicate it.
I'm still going to try biped like pivot, as soon as i have time. Or better, if someone has such in use, it would be nice to hear how to make one.
I made a video of how it works for animation. You will see that there's a sort of slipping, but it's due to ik chain being relatively inaccurate, and close to ik-snap.
http://www.cgmill.com/temp/toon_guy_foot_rig.mov
ErikE
06-11-2008, 12:40 AM
wow, nice job :thumbsup:
Polimeno
06-11-2008, 04:58 AM
really awsome work man !
=)
edwardG
06-11-2008, 04:19 PM
Reel looks good!
There's only 2 things that I would suggest:
1. Start with the more complex/advanced material first, then show the mundane necessary controls afterwards.
2. You had a caption in the reel that said, "If you're still watching this..." that should be an indication that it's probably too long. You have a lot of talent, and organizing the reel a little better will help to show that. I'm sure you've seen d-brooks' reel here on the forum, and one thing that I like about his is that he shows functionality but chases straight to the point. If you can speed up the transitions between one idea and the next, it would really help the pacing of your reel.
To S-S, Iker,
So my question, after all this long explanatory thing, would be... 'can you animate this point? And could you tell us, in general, how did you achieve it?'. It would be very useful information, if you can share it :)
Thanks again, Sami!
Yes. The problem i see here is that when you rotate the pivot the the control itself essentially drifts from pivot itself. This is what i tend to see alot - the control drives the pivot and mesh or another controller rides this. What happens though is that you get the object and the pivot drifiting away from each other.
The best way to understand the systems involved is not to treat the pivot as a pivot but really an offset from a transform space.
Essentially if you understands max's internal transform space matrix using the object-offset space and the node transform space you can abstract the idea a level up and in turn allow the user to use it and key it.
The reason why max wont allow you to do it and also that you shouldnt allow the pivot to be interpolated over time is because of the offset. This the internal space that max uses to calculate the difference between the node.transform and the object-offset.transform. Its why you see it wobble.
Once you understand, these ideas, the pivot becomes a trivial system to set up, and can easily be applied to different aproached such as storing different locations for it.
A word of warning though - implementing the system once you know the internal maths is one thing. Making it friendly to the user is completely another - you have to deal with not only let the user when to key it but also deal with the offset problem.
If i have time i can talk about this more or you can pm me, I've been working on r&d for a long time - only now am i starting to look at cartoony stuff.
eek:
I'm not quite sure if i understood correctly what you are saying and partially it was for iker i guess but anyway, this solution isn't definitely quite there yet like i said, i'll continue working on this pivot thing!
It works ok as long as one keeps it oriented like foot sole when moving it, nothing is drifting in this case, but moving control when it's tilted (diamond shape) definitely causes slight drifting in up and down direction. (i just tested this again yesterday...). This is one reason i think i'll take new angle to this thing when i have time.
Here's another recording of the pivot in work. I think for this purpose it would work for me to some degree - as "tilt" control, without too much headache. Like i said, but not for anything else! Usability is also another issue, let alone use in production!
And BTW I think i'll have to digest your comments few days once again, before even thinking about asking! ;) I've found very little info on pivot solutions, maybe i'll have to dig a bit more - Thanks Eek!
Foot pivot video (MOV) (http://www.cgmill.com/temp/20080611_toon_guy_foot_rig.mov)
renato, edwardG:
Thanks!
And thanks for suggestions Edward - even though it's not a reel. If it was, i'd try to edit it tighter, with things you mentioned in mind. It's just a sort of "video diary" of what i've done with this rig during last month and half - for those who might be interested in this stuff.
eek:
I'm not quite sure if i understood correctly what you are saying and partially it was for iker i guess but anyway, this solution isn't definitely quite there yet like i said, i'll continue working on this pivot thing!
It works ok as long as one keeps it oriented like foot sole when moving it, nothing is drifting in this case, but moving control when it's tilted (diamond shape) definitely causes slight drifting in up and down direction. (i just tested this again yesterday...). This is one reason i think i'll take new angle to this thing when i have time.
Here's another recording of the pivot in work. I think for this purpose it would work for me to some degree - as "tilt" control, without too much headache. Like i said, but not for anything else! Usability is also another issue, let alone use in production!
And BTW I think i'll have to digest your comments few days once again, before even thinking about asking! ;) I've found very little info on pivot solutions, maybe i'll have to dig a bit more - Thanks Eek!
Foot pivot video (MOV) (http://www.cgmill.com/temp/20080611_toon_guy_foot_rig.mov)
Cool yes definately have a think -
The way to really understand it is to understand how max handles transform spaces - the key is the node transform space - which is basically the pivot of an object. And the object-offset transform which is the mesh offset. The internal calculation uses the node.transform * object-offset.transform.
This object-offset transform intern has internal calculations to derive the relative space i.e its internal offset. ( this is pretty much what i understood from the manual)
cheers,
eek:
Another thing this rig is in need of, is space switching for hands (arms), something i'll have to find some info about. Maybe i'll try it next, in addition to this pivot thing!
eek:
Another thing this rig is in need of, is space switching for hands (arms), something i'll have to find some info about. Maybe i'll try it next, in addition to this pivot thing!
Yep ive got space switching working - only rotation so far local, parent, and world, space rotation space. I'd get a handling of transform space and calculating them. Also id look into how transform offsets work - its the key to how space switching works.
Polimeno
06-12-2008, 04:37 AM
ps:
your scripts seems quite interesting !
if you can,
talk more about them.
ps:
specialy the "face creator" Ui that colect and sort the face morphs to controls automatcly...
=)
phoelix
06-12-2008, 05:02 AM
Hi Sami!, great work you've done there, there's a lot of cool features. What i liked most were the mirror interface, the rigging automate scripts and how you took the idea from the in-face tweak points and developed it to make an animatable pivot for the foot's rig, nice!.
I was trying differents methods to make a foot rig with animatable pivot or even better multiple pivots (like biped's one), but i didn't find a perfect method either. What i've seen in max, to make something as flexible for animator as biped does using standard max tools is impossible, cause the way that biped handles stuff like removing keyframes, modifing previous pivot's position if the current pivot is modified in its first frame, switching between them, etc. Maybe with several change handles, but i think that'll be inappropriate for large scenes with a lot of foots :D.
The counter position offset (what you've used) is a goog method using standard max tools. But, unfortunatelly it doesn't work in a progressive manner, as you said before, if you don't get the rotation back to zero, and move it, there's gonna be some drifting because the counter offset effect is respect to the origin, or foot sole. If the pivot moves from the origin the transform inherited to the child with counter offset is going to be in respect to this distance.
A way that i though to get rid of this problem was to animate the origin too (a helper can be used as origin) move it to the child's position after being transformed by the parent's rotation, wait until the parents moves and rotates again and do the same process.
Here i made a video showing the idea:
(sorry for the video quality)
http://www.3dphoelix.com/files/animatablePivot_1.rar
Well, but if we animate the origin, then we have to deal with its keyframes also, that'll be annoying for the animator when moving or removing keys.
Another method that i though about was to calculate all the origin translations inside the child script controller using the parent's rotation keyframes. That'll be a lot better cause there aren't origin's keyframes to deal with.
Here's another video with this method:
http://www.3dphoelix.com/files/animatablePivot_2.rar
The problem with this is that the script controller calculation is key dependant, the more keyframes used the slower the controller is, and it has some problems with key editing also. So is not perfect either. But it's gonna be cool if you can try these methods and improve them :D.
Also, i don't see the need to have a pivot's position interpolation, the pivot position movement is not supossed to affect the child behavior and there are cases where you explicity need to jump from one pivot position to another in one frame, i.e: foot reaching the floor with the ankle, pivot from it until the ball touch the ground and continue pivoting from the ball.
Ok... again... nice rig you've there, see ya!
Offtopic: Sami, Could you tell me what screen capture utility do you use? and how do you compress your .mov files? thanks :D
RNThead & all, If i have some more time this week i'll try and discuss more about this stuff.
IkerCLoN
06-12-2008, 10:17 AM
Wow, guys, I just wanna to say a big THANKS to you all. I'm doing some R&D at work for our next project and you are taking me to the next level, making me thinking deeper and deeper :D
Hooray for you, dudes!
p.s.: sometimes I wake up a bit over-selfmotivated :scream:
Polimeno
06-12-2008, 04:06 PM
EDIT:
RNThead & all, If i have some more time this week i'll try and discuss more about this stuff.
donīt worry and thanks so much eek.
Iker : thatīs nice dude, keep going !
phoelix:
Thanks, and thank you again for information - will check your videos too!
RNThead:
It's basicly an UI for fast access to commonly used morph scripts...which i would otherwise add manually.
What it does it creates script controller for each picked morph and creates script for it, which then uses selected joystick as "driver".
What comes to other parts of rig i was testing dotnet for characterization part, i guess i'll give it a try and continue this part when i have a bit more time...It's mostly about visuals of UI.
There's also automatic arm and leg "sculpt" (yellow rectangles in arms and legs) node maker. I Did't put it into video, but that is automated. It works for posed limbs of any size and will create all necessary parts for this, based on wanted control count, and relative bone lengths.
Polimeno
06-15-2008, 10:37 PM
There's also automatic arm and leg "sculpt" (yellow rectangles in arms and legs) node maker. I Did't put it into video, but that is automated. It works for posed limbs of any size and will create all necessary parts for this, based on wanted control count, and relative bone lengths.
couldnīt think about it.............
if you can share with us your "trick" will be cool.
=)
CGTalk Moderation
06-15-2008, 10:37 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.
vBulletin v3.0.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.