View Full Version : pixar-like facialRig in max?
thinkingPoly 01-10-2008, 12:47 AM hello everyone!this is my first thread here~
i am an animation student in china, making my own short these days.i really really like to know how can i set a facial rig more cartoon?like pixar?what systerm should i build for that?
could anyone explain it for me?
thanks~
|
|
cntalker
01-10-2008, 03:29 AM
kan you jion me?i'm chinese too,and i love CG best(my english not so good)my qq id is 765562132,i have someting to ask you.please.
labbejason
01-10-2008, 03:53 AM
I'm sure Pixar's facial stuff isn't much different from what you've seen here, so you can do a search for facial rigs.
You can also check out CG-academy.net for Paul's facial setup DVD.
Eek did some really neat setups at http://forums.cgsociety.org/showthread.php?f=54&t=20832.
Jason Osipa's 'Stop Staring' is a popular book on facial rigs.
There's alot of ressources out there, just dig around.
thinkingPoly
01-10-2008, 07:24 AM
THANK YOU!labbejason!
it is a honor to get a reply frome a TD of Frantic films,i just love you guys and your VFX,please,countinue suprise me!
I ve watched the paul's dvds,really great!
And i also check out eek's thread,i think these are just what i want!
thanks again!
(sorry for my poor English:))
Unfortunately, Pixar facial rigs are very much different that max, maya or any real standalone package uses. Firstly there built ontop of a propiertary scripting and object language called 'menV' this took Pixar 9 years to write. With this language they wrote 'Marionette' - the application that the animator uses in conjunction with AVAR's (animation variables)
The AVAR's are essentially animation variables which drive clusters of verts using 'Geppetto' - another propiertary tool. The real power of this system is that if an animator needs a new variable to control a part of the face - a TD can just drive the correct verts and add the variable to the toolset (and any animator using this gets the new slider)
Woody if I recal had 280 AVAR's in Toy Story, - there approaching 600 now - by my estimation. Alongside this they have 'Goo' with is simple skin simulation that takes in infleuence muscles to drive it ( My incredible has this on his body, fat neck, etc etc) This from what i can gather uses sort of 'patches' of muscles.
Pixar also relies heavily on Paul Elkmans research, studing some 52 facial action units, there corrisponding intensities and combinations.
If you want to go anywhere near Pixars setup - you need to start driving the verts of the face both directly with expressions and indirectly. Ontop of this, you'll need to cache the system at some point because Max would die - either via 'one step back, two steps forward' interactive method as Pixar does it, or baking it down.
C# or C++ is the only real way to implement quite a system - You can do moderately complex setups with max, ray detection etc with a layer of abstraction being skin/morphs etc - driving verts directly would need more strong root programing foundations.
cheers,
thinkingPoly
01-10-2008, 04:14 PM
o my!
thanks eek!!!
i just don't know what to say now,i've got a lot of help from you here! i learned how to
build a IK/FK rig from you! here is a great chance to say thank you to you!
i think i can not open your blog all the time,may i have your E-mail adress? i really want
to send you my work and get some guide from you!~
EricDLegare
01-10-2008, 05:11 PM
eek, How did you gathered so many infos about Pixar's facial rigs ? Siggraph conferences ? The Graphics.Pixar thing ? You have "contacts" ?
You seem to know a lot of things about Pixar's pipeline...
Wish I knew more about how it's done at Pixar...
eek, How did you gathered so many infos about Pixar's facial rigs ? Siggraph conferences ? The Graphics.Pixar thing ? You have "contacts" ?
You seem to know a lot of things about Pixar's pipeline...
Wish I knew more about how it's done at Pixar...
Well I picked up the Toy Story book (3d cover) which had fullscreen images of there tools about 7 years ago. Also looking around on the web, and checking out patent websites. I've read about a lot of pixars tools this way. For example - they cache there animation variables in realtime whilst the animator animates with them on a last pose method.
They also use a defrobulated xyzx animation method - which the animator animates 4 controls to determine rotation. Standard xyz vectors and a 'hint' x vector. This is evaluted in realtime and processed back to 3 angles.
It's pretty hard for me to understand as, defrobulating rotation seems only known at Pixar. But my best knowledge is a 4X3 matrix where by you control 4 vectors, in turn govering realworld euler rotations.
cheers,
iSOBigD
01-10-2008, 10:32 PM
I think what you're essentially saying is, "don't bother - just fake it"? I think there are just some things that take more than one person to do...and having millions of dollars, decades of experience and some of the most talented people in the world helps too. If you're one guy trying to make a movie on the same level as Pixar movies, it's just not gonna happen.
Sure, you can make a cartoony character, animate it, etc. but when you get into the super-complex rigs, proprietary software and render farm work it's just not something average Joes have.
Eek has it right there and has done his home work on it. The advanatage of the way Pixar has built there pipeline is it doesn't rely on anything they cant rip the guts out of and change it.
What it comes down to is if you wrap a UI around a tool you have just limited what it can do. What Pixar has are tools that can be extended or reinvented easily compared to that of Max, Maya or XSI.
Popeye3D
01-11-2008, 01:49 PM
Hello everyone!, so pixar doesn´t use maya?
Hello everyone!, so pixar doesn´t use maya?
Pixar along side its propiertary software uses both Max and maya in production. Max ive been told has be used for digital matte extensions and maya as an excellent pipeline bridging tool for hair, cloth, etc etc.. (similar to ILM with Zeon)
The trick with anything is to use the softwares strengths and build on its weaknesses - max's controller paradigm is second to none. With it's script_controllers, ability to weight them and weak referencing make it amazingly powerful. For example here are some things that can be done with it:
Animatable Pivots
Bi-directional constraining
Transform space switching
And from its core framework, ui, custom attributes and plugins can be built to extend, and enhance any of it. Where max falls down is inconsistencies between its system - it uses both left and right coordinates, script controllers cant do certain things expression controllers do, vectors are class based and therefore cant be instanced between on another.
So to do really powerful stuff you have to go to the core framework of max's object orientated base and understand that - then extropolate these ideas to the user.
Pixar were very clever in building an entire language devoted to object creation and deformation - essentially it means they can write in anything they want.
"The most successful systemto date that adds interactive capabilities to a procedural animation language is Pixar’s Menv system [111]. The key technology in Menv is a language level mechanism called the articulated variable that permits the procedural representationof objects to be modified interactively. The articulated variable is an extension of previouswork by Hanrahan and Sturman [60] and Reynolds [113]. The Menv system and articulatedvariables are discussed further in Section 2.5."
Menv. The Menv system18 is arguably one of the mostsuccessful efforts at using a script-based system for producinganimation. A descendant of the system is still in use todayby Pixar for producing animated feature films. Modelsare created in Menv using a specialized language, with primitivesfor creating 3D geometry and performing commongraphics operations. Menv’s authors point out three majoradvantages that language-based modeling systems have overinteractive ones: replication, parameterization, and precision.While both types of systems allow replicating a modelthrough instancing, a language-based system has the additionalpower to allow calculation of how many times to replicateand how to transform the various instances. A proceduralspecification of models also allows for complex parameterization,so that multiple instances can vary in nontrivialways. The third advantage, precision, derives from the factthat the model’s subparts can be positioned through calculation,eliminating the problems in alignment that can comefrom graphical placement, especially as the model is animated.All of these issues are as relevant for the creation ofabstract 2D figures in SLITHY as they are for the creationof realistic 3D characters, yet this style of authoring is notcommonly seen in 2D tools.
Pixar has a special purpose modelling language called ML.
Popeye3D
01-11-2008, 09:17 PM
Thank you very much!!, your information is very useful !!:thumbsup:
script controllers cant do certain things expression controllers do
So what are you getting at here. What can't script controllers do that expressions can?
Fabiomussarela
01-14-2008, 11:51 AM
Wow, this thread is very interesting :) I´m following it :)
So what are you getting at here. What can't script controllers do that expressions can?
max[],min[] and some other pure math functions - but generally I've found I can do 90% with script controllers - else I just encapsulate it into a function and call that in a struct. I myself are entering the realms of doing everything through scripts and script controllers - makes debugging and fixing very easy. (I was just getting picky :))
I was watching Ratatouille over the weekend - and basically there faces like there bodies are volumus blobs, that can basically be stretched pulled however they want, now whether this is due to the harmonic coordinate stuff there using I dont know. What I do know is that if you want to get towards that level of deformation your gunna have to start looking on a vert level - ffds etc or some sort, grouping verts and assigning deformers to them, etc.
Ruramuq
01-14-2008, 02:51 PM
max, min, that's what I thought, it should be available in maxscript, much simple than if else. like javascript, and others..
but does it means that 'expression controllers', overall, are not better/faster than script controllers? I mean, is it becoming obsolete?,
I need to do some speed test about that..
max, min, that's what I thought, it should be available in maxscript, much simple than if else. like javascript, and others..
but does it means that 'expression controllers', overall, are not better/faster than script controllers? I mean, is it becoming obsolete?,
I need to do some speed test about that..
Im not sure, i used expressions for a long long time before switching over to script controllers - infinitly more powerful. As to max min, there not really similiar to if else, there just the min of two values. I was using them to blend in the minimum of facial sliders etc. Now though I i just sort an array: (sort #(10,20,3,4))[1]
I do like the parenthesis if else statement in expressions though: if (10,10,20) simple and effective.
Ruramuq
01-15-2008, 09:12 PM
yes, I see what you mean, but I was a bit surprised when I didn't find min / max in Maxscript. Sometimes when I use expression controllers, and then I want to use maxscript, I need to rebuild the controller, so I use script controllers from the start, but planning to change them to expression controllers(thinking that they are faster), but usually I forget to do that. I still need to investigate the differecences of speed with these controllers..
thank you eek.
I do like if else statement in expressions, too :]
ngrava
01-28-2008, 07:39 AM
Well I picked up the Toy Story book (3d cover) which had fullscreen images of there tools about 7 years ago. Also looking around on the web, and checking out patent websites. I've read about a lot of pixars tools this way. For example - they cache there animation variables in realtime whilst the animator animates with them on a last pose method.
They also use a defrobulated xyzx animation method - which the animator animates 4 controls to determine rotation. Standard xyz vectors and a 'hint' x vector. This is evaluted in realtime and processed back to 3 angles.
It's pretty hard for me to understand as, defrobulating rotation seems only known at Pixar. But my best knowledge is a 4X3 matrix where by you control 4 vectors, in turn govering realworld euler rotations.
cheers,
Hey Eek,
From what I've heard they are really just the same as the Vector rotations like in Hash's Animation Master (of all places). If you watch Jeff Lew's video (the killer Bean guy) he talks a little bit about it. What you have is a position that the object "points" at described in X,Y,Z then you have the fourth value that controls the Roll which is basically the same as an Up Vector. It's pretty much like defining all your rotations with "Look at" constraints. They are pretty easy to implement but the issue that comes into play is figuring out how the animator deals with them in a graph view. It's the same issue with Quaternians too. In my head, graphs just shouldn't be used for rotations. ;) they don't even translate when looking at them in XYZ let alone any other system. The best way to deal with that is to give the user a visible trajectory curve that they can see in 3D. The other issue with Vector rotations is that you run into some of the same issues you run into with animating IK arms. They don't swing quite right because they are just rotating to follow something that could be moving along a liner path. So, extra care needs to be taken to animate curvature into the motions.
Anyway, Vector rotations are the future if you ask me. :)
Im not sure, i used expressions for a long long time before switching over to script controllers - infinitly more powerful. As to max min, there not really similiar to if else, there just the min of two values. I was using them to blend in the minimum of facial sliders etc. Now though I i just sort an array: (sort #(10,20,3,4))[1]
I do like the parenthesis if else statement in expressions though: if (10,10,20) simple and effective.
For the most part script controllers are just as fast as expressions if you keep a cool head about you. You can achieve anything in a script controller so people tend to use them un-wisely. Make sure that they are used with the variables that you can create and assign controllers and value to them.
As for min max well any function can be written and called. Because script controllers can call global scripts or even functions nested in custom attributes there isn't much that you can't do. Just make sure that all functions and code that is used is as optimized as it can be if you are looking for speed in a character rig.
As for the rotations I would love to see what the viewport control looks like that they are using at Pixar. I don't think that it would be that hard to recreate something like that at least just for testing to see if it is a better solution for animation.
Xeash
01-28-2008, 02:18 PM
Hey that's cool thread I like it :thumbsup:
I interested in your opinion about this paper
Acting with Contact in Ratatouille - Cartoon Collision and Response
Gordon Cameron Robert Russ Adam Woodbury
Pixar Technical Memo #07-10 Pixar Animation Studios
Maybe this paper is not new, but I think this can be interesting Pixar's rigging thread :rolleyes:
Hey that's cool thread I like it :thumbsup:
I interested in your opinion about this paper
Maybe this paper is not new, but I think this can be interesting Pixar's rigging thread :rolleyes:
I've read this paper - it's not really to do with the animation tools albeit the deformation system for ratatouille - which in any case was a simplified surface deform where the animator could animate the curve/falloff of the deformation. Good read though.
The present invention includes a method and apparatus for representing joint rotations of character models that eliminates the artifacts imposed by the ambiguities inherent in four angle rotations. An embodiment of the invention transforms joint angles from their original four angle representations into a set of defrobulated angles that provides the least confusion between position and twist information. Manipulating the character model using the set of defrobulated angles eliminates the angular discontinuities responsible visual “popping” and other visual discontinuities. In an embodiment, an animator specifies a pose using joint angles in their four angle Euler form. The joint angles of the pose is transformed to the defrobulated form. The defrobulated joint angles are weighted and applied to the points of the character model. The weighted sum of the defrobulated angles for each point are then converted back to an Euler angle form to pose the point.
Theres a little more to it Ngrava - The weighted sum, im guessing is some normalization like normalizing a matrix. This is think is part of the AVAR stuff like:
angles defined though xyz x > sent to mesh > euler angles come back to pose. If you search around you can find pics on there rigs:
http://moviesmedia.ign.com/movies/image/article/560/560433/the-incredibles-20041026004935468.jpg
ngrava
01-28-2008, 04:48 PM
Theres a little more to it Ngrava - The weighted sum, im guessing is some normalization like normalizing a matrix. This is think is part of the AVAR stuff like:
angles defined though xyz x > sent to mesh > euler angles come back to pose. If you search around you can find pics on there rigs:
Oh yeah, I didn't mean to say that's all there was to it. Obviously that's not the case. Pixar is full of PHD's who are way smarter then I am. I just meant that there system is based on vector rotations. Obviously you ultimately have to transform the mesh and how you get the points into the correctly rotated state from the vector is another issue entirely. You can't just convert it to a euler or you run into the same issues with flipping and locking. There are some who suggest conversion to quaternians or multi vectors. I don't know enough about that stuff to make any further comments but my main point is just to show that the XYZ-X matrix is not too uncommon and needs to be looked at further.
Check out Pen's dvd tutorials. They are great.
If you are looking for somthing like "Face robot" for max to come out keep holding your breath.
The best facial riggs that I have seen in max are the ones on pen's DVD's
And the best thing about it is he gives you the riggs and shows you how to make them.
Way to go pen on teaching the rest of us to "fish".
Way to go pen on teaching the rest of us to "fish".
Your welcome.
Oh yeah, I didn't mean to say that's all there was to it. Obviously that's not the case. Pixar is full of PHD's who are way smarter then I am. I just meant that there system is based on vector rotations. Obviously you ultimately have to transform the mesh and how you get the points into the correctly rotated state from the vector is another issue entirely. You can't just convert it to a euler or you run into the same issues with flipping and locking. There are some who suggest conversion to quaternians or multi vectors. I don't know enough about that stuff to make any further comments but my main point is just to show that the XYZ-X matrix is not too uncommon and needs to be looked at further.
I think I basically understand there control system, they basically have this, a node 'A' looks at node 'B', and swivels about 'C'. C is parented to a control shape, or path constrained to it etc. And this control shape gets its transforms directly from the object being skinned to the system.
This way it stops dependency loops from happening, whilst keeping the final control 'C' in the same direction as the actual mesh.
You would get double of transforms though, so you'd have return a matrix3 from the mesh itself, and convert this into eulers only passing the z and y coords to the control shape. Or back transform the x.
masterbubu
02-04-2008, 08:17 PM
max(x,y) = (x+y+|y-x|) / 2
min(x,y) = (x+y-|y-x|) / 2
math formula's for min\max functions.
Man that must have been one nasty shot to animate with any setup.
grundelboy
02-08-2008, 03:14 PM
They also have a package that they developed called Marionette. (http://www.animationnation.com/cgi-bin/ultimatebb.cgi?ubb=get_topic;f=1;t=011390;p=)
Click on the link to read a thread on another form about it.
There was also a thread a while back here (http://forums.cgsociety.org/archive/index.php/t-255550.html) that talked about it.
naza0222
02-10-2008, 02:16 AM
pau neal
Sir, is there any way to do such as Animatable Pivots such as maya
Yes there is but it takes some work to set up and needs some Max script to make a UI so it is usable. But just like in Maya it is some times harder to use then to just deal with one pivot.
Yes there is but it takes some work to set up and needs some Max script to make a UI so it is usable. But just like in Maya it is some times harder to use then to just deal with one pivot.
Quoted for agreement. Animatable pivots that act like 'real' pivots, for an object that you can key and stay with the object, and not drift off via a control are possible in max. You have to do a lot of math to break down the theory of the system, provide very clean support for the animator. Also you have to deal with 'popping' keys, if you alter them afterwards (same as transform space switching). This alone takes a while to figure out.
It's not a case of the math being hard or lots of script, its getting you head around the idea of transforming the space and not the pivot which is key. The code is more a case of generating the keys for the pivot and easy clean up afterwards.
Complex math 'ideas' understanding
A simple solution for the animator - simple to key
back-end scripting gui
ability to clean up popping etc
Ruramuq
02-11-2008, 01:45 AM
animating pivots, well, after trying some weird ideas, there it was the most obvious of all, but there are still many other weird ideas to test, in any case.. it is fun.
http://img.photobucket.com/albums/v360/Ruramuq/RIGGING/ruraq_DynamicPivot15.gif
http://www.youtube.com/watch?v=Su85b3I7bfo
In my case, I tried several complicated ideas, (mucho complicado), then, simplification shows, that there are much easier ways, personally I don't use it, not yet, because I see it as something a bit risky/beta, and I don't want surprises in the middle of something. But that's about to chage :]
animating pivots, well, after trying some weird ideas, there it was the most obvious of all, but there are still many other weird ideas to test, in any case.. it is fun.
http://img.photobucket.com/albums/v360/Ruramuq/RIGGING/ruraq_DynamicPivot15.gif
http://www.youtube.com/watch?v=Su85b3I7bfo
In my case, I tried several complicated ideas, (mucho complicado), then, simplification shows, that there are much easier ways, personally I don't use it, not yet, because I see it as something a bit risky/beta, and I don't want surprises in the middle of something. But that's about to chage :]
Nice stuff, from you clips looks like we both came up with the same conclusion :) - I call it abstractionism of the fundementals of max :). Maybe we could talk about it more sometime - As to gimbal lock its something im thinking about too, making a gimbal fix button
I'm sure that you both find the same problems with key management that I did? With Max script it is not possible to lock keys together so you can end up with the pivot keys unsyncronized with the animation keys very easily. Your solution looks a little better then mine as I needed a UI devise to move the pivot.
http://paulneale.com/temp/multiPivotBox.mov
Ruramuq
02-11-2008, 01:49 PM
eek, thank you, we should definitely talk about it, there are still many obscure themes. There are ideas that nobody seems to talk about, but those seem possible. For example the gimbal lock issue, or something like this: :)
http://img.photobucket.com/albums/v360/Ruramuq/RIGGING/ruraq_breaking_joint_opt.gif
PEN, I was doing something different that gave me solutions to control the keys, just to achieve enough consistency, and I think it is possible, if there are not surprises, the script I use, already has some of that, it detects if something is inconsistent, and fixes it when the pivot is being animated, simple really, but it is unfinished. another simple trick, that I call 'ghost keys'(a fancy name), helps to sinchronize the keys. the problem is the curves/keys in the track view, should be locked. keyable = off does not prevent the animator to create/modify keys in the track view, but that's a problem since ever and for any object. Apart from that, there's a change to create a button(make consistent) to fix the whole animation range in case it turns spoiled somehow, but that still needs to be implemented. we'll see.. and if I'm not very lost, it could be implemented always, without the button itself.
Manual modification of keys, is flawless, if the animator knows what is happening.
eek, thank you, we should definitely talk about it, there are still many obscure themes. There are ideas that nobody seems to talk about, but those seem possible. For example the gimbal lock issue, or something like this: :)
http://img.photobucket.com/albums/v360/Ruramuq/RIGGING/ruraq_breaking_joint_opt.gif
PEN, I was doing something different that gave me solutions to control the keys, just to achieve enough consistency, and I think it is possible, if there are not surprises, the script I use, already has some of that, it detects if something is inconsistent, and fixes it when the pivot is being animated, simple really, but it is unfinished. another simple trick, that I call 'ghost keys'(a fancy name), helps to sinchronize the keys. the problem is the curves/keys in the track view, should be locked. keyable = off does not prevent the animator to create/modify keys in the track view, but that's a problem since ever and for any object. Apart from that, there's a change to create a button(make consistent) to fix the whole animation range in case it turns spoiled somehow, but that still needs to be implemented. we'll see.. and if I'm not very lost, it could be implemented always, without the button itself.
Manual modification of keys, is flawless, if the animator knows what is happening.
Hehe sounds very similiar, i was thinking about the 'cleaning' or basically checking the array of the pivot keys, to the 'special' keys :thumbsup: in an automated fashion and fixing it on the fly - I'm still on the fence as to doing it. I tend to just have one button 'key' and the same button with 'ctrl' pressed to clean any pops you may get. It's very clean so far. There's a few other things going on but I got it down to just a few controllers, and objects. Also just the fact of trying to make it friendly on both sides is really important - friendly to the animator in keying and feedback for td's to debug.
I sent you a PM btw - I'd love to look into some new area's of research. Systems that max is able to crunch at, namely controllers etc. Dynamics is a good one as all it need is a reference of some sort to base the solution off and you can boil it all down into a function. Anything more diverse like deformation needs a 3d programmer to write plugins etc - (i really should start learning c++/c#)
The animatable bug is just a systemic wide problem and the only way I can solve it is by giving enough tools to fix any mistakes you make. Basically its the rule of any system and something i only seen in seasoned td's, provding tools and controls to fix the systems you build.
Im currently looking into facial systems - really just notes atm. Trying to unify themes of 'on face controls' with curviture of the face. It's a tricky problem as you want lots of control but familiarity i.e move them around but be consistent to how the face moves. And also be simple enough - I'm thinking bones that follow an arc, that you can put anywhere atm.
Stretch is probably the next area to seriously look into - breakable IK, soft IK, true bend bone, consistant twist.
I played with some face stuff like that charles. Haven't ended up using it in production at all as it is to restrictive for what animators what most of the time.
I should get back to working on the animatable pivot and seeing if I can clean it up a bit more. It works great but I never had a solution for dealing with the keys. I would love to hear more about that if you want to include me in that pm. One solution that I thought of using was note tracks to keep track of what was what. Sounds messy though. I wish I chould tack a ca def to a key. So another posible way is to keep track of the keys in the controller with a def that stores what keys should go where. This can still become a problem if someone deletes a key.
Hey Paul,
I was more of a PM to discuss more 'out there' ideas.The animation pivot stuff I've done took about 3 months from start to finish, firstly working out the math behind the tools. Secondly making it fun and usable and thirdly cleaning up any problems of either:
Adding or deleting pivot keys, after they'd already been made.
Moving pivot keys
moving or deleting object keys (the actual object with the pivot)
All of these would cause differences in the 'offset' because it's not a live link - I tried that with a change handler, which worked for a little bit. Im still thinking about constantly checking the 'difference' discussed below.
This was basically my remit, also and more importantly which was vital was not to interfer or alter the animators pivot or object keys in anyway - and only fix the 'space' keys if you will - that get tucked away behind the scenes. And to provide viewport feedback when they need to key the pivot i.e if they've moved it and it needs to be keyed.
This idea was inspired from Jason over at his johnandhisdog forum - infact, im able to synthesize most of his research now in max. (max is very very powerful, thats why it bugs me they people bitch about it - if it had better referencing it would rock!)
Basically Jason was discussing LOTR and transform space switching or pivots, and the problem arose where by if an animator makes a lot of pivot keys or even space switches, and then goes back and alters them - the 'offset' would all be screwed along the timeline, and so you'd get popping all over the place.
The way he fixed was by traversing along the timeline on each key of the pivot object and working out the 'difference' before and after the key was generated and applying this 'difference' back onto the space offset keys.
Note keys wouldnt work i think - because you can basically get either the object or the pivot out of sync with each other. The only constant the needs to be in sync is the offset.
* most of this is in-house r&d, so cant really show it. Just discuss the ideas.
I played with some face stuff like that charles. Haven't ended up using it in production at all as it is to restrictive for what animators what most of the time.
The face stuff is so complex i really dont know where to re-begin :)
I quess realy this would be a better job for C++ as we would be able to tie keys together and have the pivot keys hidden.
I quess realy this would be a better job for C++ as we would be able to tie keys together and have the pivot keys hidden.
Yes definately - i'd love to learn c# and write this - I like I could make it work. Remember its just transform spaces we are storing in the end and changing.
labbejason
02-11-2008, 08:08 PM
Funny, Ruramuq, as I was just messing around with scripting my own Inverse Kinematics system. I don't know if the breaking of the joints would be more useful or annoying to work with though :P. Guess it depends on the shot, and style of animation. Something to ask the animators about!
I dont think the 'prefered angle' is the best solution, throw in a pole-vector and it'll flip. I have however got it working in another way, without it flipping.It is completely custom built, but does give the ability to bolt on additions, non-flip, soft-ik etc etc.
Well lets see it Eek. Don't just be a tease.
Well lets see it Eek. Don't just be a tease.
Well its based on the custom ik chain you showed me - i just blend the final degree between negative and positive. using:
result * (1-t) * -1 + t * 1
simple :)
naza0222
02-11-2008, 10:06 PM
eek
your Post privileged. I am always impressed by it
Ruramuq
02-12-2008, 08:30 AM
Funny, Ruramuq, as I was just messing around with scripting my own Inverse Kinematics system. I don't know if the breaking of the joints would be more useful or annoying to work with though :P. Guess it depends on the shot, and style of animation. Something to ask the animators about!
Yes definitely, I think the same, but we have to see what happens, we might get good or bad news, and who knows, it might clearify what can we do with it. the idea I suppose it is, to activate a mode, something like 'Break the Joint', and the animator decides, but it has to be flawless, like 'animating pivots'
.gif created with GIMP, die adobe, die..
http://img.photobucket.com/albums/v360/Ruramuq/RIGGING/RURAQ_Breakable_Joint_2.gif
this could complement better with other things (http://ruramuq.blogspot.com/2008/01/anti-gimbal-lock-graph-analysis.html) I've been trying, and something else that I cant' solve yet,( top secret :] ), which I find very, very interesting. but these all are only little attempts, so we'll see.
The swivel node, rotates automatically when the joint is broken (Flipped), it can be done manually, but I tested it anyway, cause it looks logical this way.
The swivel node is attached to the knee, I think it is more consistent and intuitive.
The swivel node is animated too, as the trayectories shows
I dont think the 'prefered angle' is the best solution, throw in a pole-vector and it'll flip.
pole-vector ? that's the swivel node, right?,
I don't have flipping when I flip the IK angle, or when the swivel is animated, nor any other weird thing, so far it seems to work as planned, as you can see in the gif, it just needs 'much more' implementation, to see if it could really be useful as labbejason comments. So far I haven't found surprises.. not yet, but my method seems to allow different directions too, we'll see, it still needs MXS support..
··
Creating a custom ik looks great but, I ask, how flexible it would be?, I imagine, that it will loose a lot of that a normal IK has, but at the same it could get all the control one could script ... :) , we need to test all these ideas.. pronto
··
Nice work Ruramuq (http://forums.cgsociety.org/member.php?u=100168), looks like a muliple chain system I expect, blending from one to the other?
Jason have a look what Mat did at Keyframe on Pinky as this is realy the same sort of system. Animators like to be able to break joints on cartoon characters. The work that you will be doing more of the time will not need it but when you are dealing with cartoons and funky robots it helps a lot. One thing that I have seen animators do a lot is to switch to FK to make that easy. If you are having to do it on a let like Ruramuq (http://forums.cgsociety.org/member.php?u=100168) is showing well then you need a system in place to handle it.
Yes definitely, I think the same, but we have to see what happens, we might get good or bad news, and who knows, it might clearify what can we do with it. the idea I suppose it is, to activate a mode, something like 'Break the Joint', and the animator decides, but it has to be flawless, like 'animating pivots'
.gif created with GIMP, die adobe, die..
http://img.photobucket.com/albums/v360/Ruramuq/RIGGING/RURAQ_Breakable_Joint_2.gif
this could complement better with other things (http://ruramuq.blogspot.com/2008/01/anti-gimbal-lock-graph-analysis.html) I've been trying, and something else that I cant' solve yet,( top secret :] ), which I find very, very interesting. but these all are only little attempts, so we'll see.
The swivel node, rotates automatically when the joint is broken (Flipped), it can be done manually, but I tested it anyway, cause it looks logical this way.
The swivel node is attached to the knee, I think it is more consistent and intuitive.
The swivel node is animated too, as the trayectories shows
pole-vector ? that's the swivel node, right?,
I don't have flipping when I flip the IK angle, or when the swivel is animated, nor any other weird thing, so far it seems to work as planned, as you can see in the gif, it just needs 'much more' implementation, to see if it could really be useful as labbejason comments. So far I haven't found surprises.. not yet, but my method seems to allow different directions too, we'll see, it still needs MXS support..
··
Creating a custom ik looks great but, I ask, how flexible it would be?, I imagine, that it will loose a lot of that a normal IK has, but at the same it could get all the control one could script ... :) , we need to test all these ideas.. pronto
··
Yep I only tested in very briefly, the power of custom ik is that well you can essentially build how you want it to work i.e you can have a non-flipping ik system, and a pole-vector system in one, and then you can bolt on additional systems like soft-ik etc.
Im not talking CCDIK which is a sort of iterative aproach using angle to distance,(which does work to a point, but needs iterations) i mean actual analytical IK, using standard law of cosine math to get the angles.
As to system layers, my aproach is this:
We set about an IK system and FK system with the deformation between the two. Each system has a constant: stretch and scale - the fk bones inheriting the ik stretch, and length of bones to keep consistency when snapping. Bend bone is a system driven by the deformation chain. And this inturn drives the twist bones 'direction'. Twist itself comes from the deformation and some pose based distance methods.
IK system
FK system
deformation chain driven by the two
bend bone driven of deformation chain
twist complimented in direction from the bend bone, but driven in twist from the deformation chain.
Now with this in mind i'll talk more about IK system, I guess im moving into stretchy systems and this is a good of place to start than any. I wrote some notes yesterday on what basically animators are expecting for IK:
Ability to break the ik
no-flip and pole vector driven
stretch and length systems
soft-ik systems
It does bring up some questions though with the breakable ik. Question 1: if you break the ik with bend bone on, does bend bone then look buckled? or does it straighten out, then bend in the opposite direction?
My personal take on this is that it does the later, it just reacts to the system if its broken or not.
Question 2: With stretch on when you break the bone does it alter the length of the bones? I'm assuming it does - this to work out though could be relatively tricky. Because stretch itself only happens at the point of the ik goal distance over driven. So do we still forcably change the length? or only once its been over stretched?
Stretch and length, is a constant of the system but breaking of joints is relatively unique to each IK and FK. So gets a little trickier.
(where derailing this thread, but oh well)
Ruramuq
02-12-2008, 03:29 PM
hi PEN,
I pm it to eek, it is really the initial idea but it is somehow related with something, that is called ik pop / soft ik in cinema, (I guess,I don't know about names) ..so it is a problem to solve. not a big one.
I should have post this explanation before, , but I was just answering eek in the previous pages, and I thought, I'm gonna post something else than animatable pivots. I picked one of the max icons I have in my desktop(archived interesting ideas for me), and it, suddlently became even more interesting..
The basic idea is so simple as animating pivots, and I just asked myself, people should discuss about this, I bet pixar already has clever solutions. In any case now I have to finish this too. :[ it never ends
I don't like having several chains, it is unnatural, say nø tø blending http://forums.cgsociety.org/images/icons/icon14.gif, I'm flipping the prefered angle of the IK. Positive, become Negative!!, The real goal for me, would be to get rid of FK, completely. simplification
p.d, I've just seen that eek has posted(previous post), I'll submit this one..
··
hi PEN,
I pm it to eek, it is really the initial idea but it is somehow related with something, that is called ik pop / soft ik in cinema, (I guess,I don't know about names) ..so it is a problem to solve. not a big one.
I should have post this explanation before, , but I was just answering eek in the previous pages, and I thought, I'm gonna post something else than animatable pivots. I picked one of the max icons I have in my desktop(archived interesting ideas for me), and it, suddlently became even more interesting..
The basic idea is so simple as animating pivots, and I just asked myself, people should discuss about this, I bet pixar already has clever solutions. In any case now I have to finish this too. :[ it never ends
I don't like having several chains, it is unnatural, say nø tø blending http://forums.cgsociety.org/images/icons/icon14.gif, I'm flipping the prefered angle of the IK. Positive, become Negative!!, The real goal for me, would be to get rid of FK, completely. simplification
p.d, I've just seen that eek has posted(previous post), I'll submit this one..
··
Soft-IK is very simple. I can write out the math directly here for you if you want as I basically took it from an XSI thread and modded it to work. It's not soft-ik persay more-over soft-distance and can work with anything. Basically its a inverted exponent of the difference of distance of IK to chain length via a value.
There was a whole thread on soft IK some where. The easy answer was using the limit controller. Was that thread here in the rigging forums?
Ruramuq
02-12-2008, 06:21 PM
Yep I only tested in very briefly, the power of custom ik is that well you can essentially build how you want it to work i.e you can have a non-flipping ik system, and a pole-vector system in one, and then you can bolt on additional systems like soft-ik etc.
I've been doing some little things, and the code suddenly becames long, if that code runs interactively, it is slower, if you duplicate your IK several times for a character, could it be a problem? it seems there are several techniques for IK, so Im curious about it. but using max own tools as much as possible, it's better, right?, for example, I used a simple mixed IK, with MXS and controllers, simple but it was ok.
the non flipping ik systems, Is another interesting thing(if I understand the name)
the solution (http://img.photobucket.com/albums/v360/Ruramuq/Imilla/ruraq_no_flip_IK.jpg) I have allows 30º of added freedom on each side, a total of 60º, which is much better than a normal IK chain. but a total no flip solution would be amazing..
the soft ik, I think I have a good technique, complex one, but it is working not as I'd like, not yet, but I might use it to try to fix gimbal lock, because the basic idea is similar.. all I can say is that I don't agree with the threads I've seen in this forum about it.
IK system
FK system
deformation chain driven by the two
bend bone driven of deformation chain
twist complimented in direction from the bend bone, but driven in twist from the deformation chain.
what you'r saying is something very attractive, that could be complex with maxscript. but if it works and you release that as a plugin, there would be a full benefit..
something I'de like from max, is a controller like (input)[maxscript](output), where input is the interactivity a normal controller has, and output, the creation of keys, again like a normal controller..
Soft-IK is very simple. I can write out the math directly here for you if you want as I basically took it from an XSI thread and modded it to work. It's not soft-ik persay more-over soft-distance and can work with anything. Basically its a inverted exponent of the difference of distance of IK to chain length via a value.
I think , I've seen an xsi blog (http://xsi-blog.com/archives/108) that explains it, but I don't agree with it. not way.
yes PEN is right, here I've seen 2 threads with interesting solutions, but can't agree with that. you need to move the control beyond, that's bad for animation, because the space and time is wasted. and as far as I've tested, it would be easier if the animators uses old tricks about keys to easy in/out, the knee/goal.
··
ngrava
02-12-2008, 07:14 PM
As far as I'm aware, Soft IK was the bone dynamics system built into the previous Cinema 4D MOCCA system (still there but doesn't work with the new Joints system). Maybe I'm wrong (I am a beta tester for Maxon) but I don't think this is actually related to what you guys are talking about with eliminating IK popping.
but a total no flip solution would be amazing..
A non-flip solution is very doable, using custom math. I'm directly ripping ideas from maya rigs, porting them over to max. I basically stole its pole-vector idea into max.
what you'r saying is something very attractive, that could be complex with maxscript. but if it works and you release that as a plugin, there would be a full benefit..
Am working on it, :) - as to a plugin I'd love too but i dont know c# or c++.
Ruramuq
02-13-2008, 09:08 AM
As far as I'm aware, Soft IK was the bone dynamics system built into the previous Cinema 4D MOCCA system (still there but doesn't work with the new Joints system). Maybe I'm wrong (I am a beta tester for Maxon) but I don't think this is actually related to what you guys are talking about with eliminating IK popping.
aha, I see, I misunderstood then, perhaps because there's a xsi blog, and it says :
soft ik in xsi (http://xsi-blog.com/archives/108) :
......a similar functionality is already implemented in Cinema 4D
also : soft ik - Non snapping IK (http://forums.cgsociety.org/showthread.php?f=98&t=586471&highlight=limit+soft)
@eek, :thumbsup:
_
··
Hmm.. I have some thoughts on broken IK.
If we go with out preferd angle system, or similiar inverting the angle of the IK. We now have the issue of the pole vector - should in matching the fk chain, match the elbow position of the fk chain, because this in turn would make the chain look un broken. Because the pole-vector stays stationary when breaking the chain.
So it brings up a greater issue - whether breaking the chain should only happen at the deformation chain level, where things like twist and bend bone happen? To me its like scale, in that its a constant that happens to all. The real issue of breaking the chain is keeping the twist in the right direction, and not flipping.
Also, how does a broken hierachy work with a multiple chained limb, where by you can only break one joint in the fk chain? How does the ik now match?
ngrava
02-15-2008, 07:44 PM
aha, I see, I misunderstood then, perhaps because there's a xsi blog, and it says :
soft ik in xsi (http://xsi-blog.com/archives/108) :
......a similar functionality is already implemented in Cinema 4D
also : soft ik - Non snapping IK (http://forums.cgsociety.org/showthread.php?f=98&t=586471&highlight=limit+soft)
@eek, :thumbsup:
_
··
No problem. ;) A few months ago I had to animation two squirrels for a movie in C4D and I would have loved this "Built in" feature if it had it. Alas, "Soft IK" is a simple misunderstanding of terms. They do have the best hair/fur though. :)
rcarr
02-18-2008, 07:08 PM
Getting pretty close to wrap up this rig.
Rig consits of paths constrained to each other and a box object (my Bone) path contrained.
paths follow the contour of the face
Input would be awseome
CGTalk Moderation
02-18-2008, 07:08 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.