View Full Version : 3dsMax Face rig Problems
Hi!
- I got Jason Osipa's book, and wanted to do similar setup in 3dsmax 8
- I ran into problems - actually sort of update problems.
1. I need to have dummy morph targets in morph modifier to get secondary "volume" controls to update in realtime. I haven't found any other solution. any ideas?
2. Objects too have update problems. Parameter wiring of eyelids works OK. Eyelids also take eye rotation into consideration in wire script - but they only update after i move time slider? - It's not too bad but it's not realtime :(
- You can see this in video link. Moving eyes don't move lids until I move time slider. See how "BrowVolume" slider works in realtime. Tongue doesn't have dummy connections - that's why "MouthVolume" slider doesn't work in realtime...
- Whole parameter wiring is done in one max script, which then creates all connections - i'm complete newbie with max scripting but i think wirings are OK and i'm just thinking if there is a trick to help update of viewports?
(BTW models are just prototype models, i wanted to see clearly how things work)
http://www.cgmill.com/ss/wip/20060101_face_controls.jpg
http://www.cgmill.com/ss/wip/20060101_face_controls.avi
|
|
marktsang
01-03-2006, 11:53 AM
check out my morph controls script in my signature which does a similar setup
not sure why yours isnt updating could be many things - post a simple example
mark
I know this doesn't help you know but I have just finished the section in the 4th DVD in my series that covers facial rigs just like this. Should be out real soon. Just working on the rigging method for faces.
marktsang:
Thanks for reply! - However, it seems like you don't have any kind of "Volume" Or "Assymmetry" Slider which Jason Osipa used in his setups - The problem what i have is only evident in this kind of situation;
- A is controlled by SliderA and it's effect is multiplied by SliderB
- A's wire is basicly: SliderA * SliderB (slider or joystick type controller - it doesn't matter)
- Now, unless i make the trick i mentioned earlier, realtime update is not working for SliderB part, not even with morphs... But after this trick with dummy morph connections these "SliderB" cases are taken into account every time i move SliderA... Don't know if you have run into this. However, moving time slider updates this parameter wire completely.
Anyway, cool script! - something i can't really do, i have to say! :)
PEN:
- Hehe! - I already checked the video you posted earlier :) I guess i will have to get your DVD!
marktsang
01-03-2006, 08:36 PM
hi,
that can very easily be worked into the script - i have just got jason ospias book so i will look into what you are talking about and may update the script
- A is controlled by SliderA and it's effect is multiplied by SliderB
- A's wire is basicly: SliderA * SliderB (slider or joystick type controller - it doesn't matter)
not really sure what you mean by this - are you sure the LR slider doesnt do what you describe - only with two targets on one controller -
you move the slider up and both L and R targets increae - move Left or Right and the Left and right targets multiply?
maybe i am misunderstanding your explaination - if i am feel free to correct me
cheers
mark
marktsang:
- Yes. i will try again :). I do of course have left-right smile, with 100% symmetrical smile on center and then up-down for smile/frown in one joystick. (upper half of joystick for smile , bottom half for frown) Then i also have volume slider, which acts as multiplier for smile-frown slider... you move this multiplier "MouthVolume" to 50% from 100%, and smile/frown animations are reduced to 50% of Smile/Frown slider animation.
-I want to have this controls, as it's quite useful as secondary control. (you can fade over animated eyebrows / mouth and keyframe this to happen only in certain parts of animation)
- It just doesn't work in realtime, unless i connect this "MouthVolume" slider into "dummy" morphtarget - this wire doesn't actually have anykind of effect on anything... except it makes "MouthVolume" slider somehow "visible" to smile sliders parameter wire! Without this wiring, it doesn't update until i move time slider. For bones i don't get realtime update with this kind of "Volume" controls, object transformations update only after time slider is moved.
Ah ok,
I get it - hmm is everything connected via wireparams, theres no float_script controllers in the scene at all? I'll see if i can emulate the problem i know i can get the same issues with script controllers that are referencing themselves eg a point referencing a ca slider on itself etc.
eek
eek:
Yep. just parameter wires. And i think i don't have any float script controllers in any object, just default controllers.
Ok, and are any wireparams connecting to themselves i.e a point wiring itself to a slider on itself. Ie so wiring controls together on the same object?
eek
eek:
I better send you the file - it's easier to see/understand! when i get home i can send it to you...
foane
01-04-2006, 02:59 PM
hi S-S,
this probably isn't of any help but when I rig the facial controls of my characters I tend to use the reaction manager. it's always realtime and allows great control over everything. it's not so time consuming as well. ok, you have limits to everything but these can easely be set to a limit you won't ever use (i.e. the 'smile' limit is set way beyond a normal 'smile' height).
for the problem you described earlier I would setup a joystick that controls the weight of the position XYZ of the joystick-handle, so you can gradually remove any translation on that.
good luck,
Foane
marktsang
01-04-2006, 03:05 PM
hi,
the problem is afaik is that you are have different wires interdependant on each other -
i would do it a different way -
use expression controllers to read off the controllers values with different expressions
i will look at your file also if youw want to send it this way s-s
mark
foane
01-04-2006, 03:06 PM
oh and by the way, I had the issue of 'only-moving-when-I-scrub-the-time-slider' before with link constraints. Its better te setup some sort of system that uses orientation and position constraints than it is to use link constraints.
Foane
marktsang
01-04-2006, 03:15 PM
hi foane,
that is probably the way you have set it up - i have use link constaints without problems before - can you explain in what situation you had that?
mark
foane
01-04-2006, 03:24 PM
sure,
if I assign the link constraint on frame 0 then there's no problem but if I for any reason assign a link to world first (on frame 0) and then a link to some other object (on frame 1) then the linked object won't move with the object it's linked to on for example frame 30. only when you make keyframes the object will move. MMmmm , so it can't be this problem S-S is refering to because he just moves the time slider without making keys.....
anyway, what do you think?
Foane
marktsang
01-04-2006, 03:26 PM
its completely unrealated to s-s's problem but if you want to send me an example file i will look at it
mark
foane
01-04-2006, 03:35 PM
mark, I've send you a pm...
eek:
I better send you the file - it's easier to see/understand! when i get home i can send it to you...
Ok cool, do you need an email?
eek
eek, marktsang:
Nope actually. Just get it from my server :) I sent you PM!
marktsang
01-04-2006, 07:26 PM
ok ive had a look,
wire parms only update when the controllers that are wired are changed - you are involving another object that is not directly wired in the eqation -
script controllers and expresision controllers are much more suited to these kind of more complex expressions as you can explicitly tell it when to update
what to do...
use either a expression controller or script controller instaed of param wires in this situation - you can use the same expression but just add the ctrl objects involved in the eqation as variables (nodes) and repalce thier names in the eqation with the variables (script and expression controllers upate when the nodes change)
if you're having more trouble i can send you an example
mark
marktsang:
- Yep. I guess i kinda knew that somehow :/
- Anyway i went to parameter wiring, because i don't like the way how objects controlled by script/expression controllers generate keyframes on timeline when you move time slider (to see your animation) This happens if you have "autokey" on - something i don't want. Wiring don't have this problem... It might be that there is some trick to avoid this, but i'm not aware of such yet...
i concour (is that how you spell it)
You had some wireparams wiring $ULcontrol + Ulip ie controls not part of it. Script controls in max 8 and expression controllers are far better suited and now script constrollers can be node base so name independant so faster.
This is why for years in deepest africa i was learing expressions first then wireparams then script controllers. Its pretty cool when you can start to make functions to drive functions.
eek
marktsang
01-04-2006, 08:34 PM
marktsang:
- Yep. I guess i kinda knew that somehow :/
- Anyway i went to parameter wiring, because i don't like the way how objects controlled by script/expression controllers generate keyframes on timeline when you move time slider (to see your animation) This happens if you have "autokey" on - something i don't want. Wiring don't have this problem... It might be that there is some trick to avoid this, but i'm not aware of such yet...
i have never seen this...... are you sure this is what is causing the keys?
steps to reproduce?
mark
eek:
Thanks for info to you too!!
- Do you have any opinion about this thing i was talking about to mark in previous post?
Mark:
I guess i hve to test it again; but i'm quite sure... but i might be wrong.... I had test scene, script controller, and then other objects which were controlled by this script (it was in dummy object...). Every time i had autokey on, it generated keys for those objects = i really have to test it again! :)
marktsang
01-04-2006, 08:40 PM
script controllers and exprssion controllers cant have keys - this is one of the reasons some ppl use them as the controller type for weight lists in list controllers / constraints so that using set key doesnt cause boo boo's
mark
marktsang, eek:
- Yes. You both are 100% correct :) - I just tested it now. I must have done it some other way. Just rigged eyelids x channel with float scripts --> works fine, moving eyeballs moves lids instantly! I must have done it somehow in different way! - Thank you!
- Now i just have to figure out how to do these connection to script controllers from maxscript... :)
eek:
Thanks for info to you too!!
- Do you have any opinion about this thing i was talking about to mark in previous post?
Mark:
I guess i hve to test it again; but i'm quite sure... but i might be wrong.... I had test scene, script controller, and then other objects which were controlled by this script (it was in dummy object...). Every time i had autokey on, it generated keys for those objects = i really have to test it again! :)
Nope your right, ive had its go belly up like this in 8, with both wireparams and script controllers, it would basically generate a key on everyframe - then if you wired it again differently the keys would vanish. This is independant of autokey - i think its something to do with how max has speeded up controllers - im guessing things have to be set in certain ways or something! very odd.
Try this in 8,(without moving the timeslider) make a leg bone chain with a foot and constrain the foot to a point orientationally keep relative on. Now add a standard ik chain to the leg.
Now this is funky - change the swivel angle of the ik chain, look! the whole leg rotates but you just constrained the foot orientationally to a point?! Now move the timeslider, and hey presto its back to normal - odd! well kinda max 8 i guess initates controllers only when it needs them this speed a ton of things up but in certain cases causes oddities like the one above.
eek
p.s Mark cheers for sorting this out, i was just there but working ate my time up. s-s your work is really cool, i dig the spy girl and roy batty (BR is an ace movie) Rocks!, ill have to rig some of these characters your guys are making sometime!
eek:
- Thanks! Then it wasn't just me - phew! :)
I think i just post update of this face setup in this thread! I modeled this head in zbrush/silo during weekend and then i made full set morph targets... which took most of the time. Then i tested my setup scripts on this model and did some skinning.
http://www.cgmill.com/ss/wip/20060110_dumbo.jpg
Test Anim Video WMV3 (http://www.cgmill.com/ss/wip/20060110_dumbo.avi)
CGTalk Moderation
01-10-2006, 07:22 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.