View Full Version : Can't get back to bindpose. How to add influence joints?
Nenox 07-28-2004, 08:32 PM Hi.
I have a problem getting a character into the bindpose. The characters setup has been tampered quite a bit with since skinning and I find getting it back to the pose quite imposible with my knowlage.
Now the thing is that I would like to add some influences joints, but of cpurse maya wouln't let me do that.
I've tried reseting the bindPose:
string $nodes[];
$nodes = `selectedNodes`;
dagPose -reset $nodes bindPose1;
Don't know if I'm surposed to detach the skin first (with history), allthough I didn't try that yet. Anyway, when I add the influence joints, the verts go funky places.
I'm thinking that exporting a skin weights map, killing the mesh history and reskinning + importing the weight map is my only option. But I would rather not since I have a lot of work put into assigning blendshapes and driving them in complex ways.
I should mention that I also don't have the option of of manualy rotating the character into bindPose, since all the joints are zeroed out at their current position but way off their original placement. (No I didn't skin this Baby! :) )
Hope this makes a little sense, and that you can help! :) Thanks
|
|
fortner
07-28-2004, 09:34 PM
just delete it.
Nenox
07-28-2004, 11:09 PM
I tried selecting all joints and running this command:
dagPose -q -bindPose;
It returned: bindpose6
I typed: delete bindPose6.
Now i get the message No bind pose when i do: go to bind pose.
Cool - but..
Still, when I add an influence, as soon as I assign weight to that influence the verts move to where the mesh originaly was bound. (I can see this by turning off the skinCluster).
So that did not work. Unless I did something wrong??
Thanks.
Nenox
07-28-2004, 11:34 PM
OK. Here's where I'm at.
Deleting my bindPose or reseting it, like I had allready tried, alows me to add influences. That's a step in the right direction. :)
Came up with a hack.. :scream: After doing one of the above, I was able to match the position where the mesh was bound initialy. (by turning my skinclusters influence up and down and then tweaking my skeletons rotations to match the unbound pose as closely as I needed.) This will work for my current needs.
Still it would be nice to hear if there is indeed a "propper" way around my problem.
Cheers.
p.s. Finaly starting to include mel in my posts... I feel all grown up now! :wise:
john_homer
07-29-2004, 12:06 AM
check out the -ibp/ignoreBindPose flag in the help on the "skinCluster" command.
you can add an influence when NOT in bindPose AND keep the bindPose...
.j
Nenox
07-29-2004, 12:28 AM
Nice one John.
I tried this:
skinCluster -e -lw true -wt 0 -ibp -ai L_Clavicle skinCluster2;
I worked just fine. I still had the problem of the verts going to the place of the original bind when weighting them to the new joint, but I guess that was not the point of using the -ibp flag.
Cheers.
john_homer
07-29-2004, 02:25 AM
oh, OK, didn't realise that....
I would just delete it...
or..have you tried just turning off all the IK etc (with modify->evaluate nodes->...)
and then, got to bindPose?
.j
Nenox
07-29-2004, 11:02 AM
Yeah. I made sure I unlocked all transforms and turned evaluation of approiate node types off, but no go..
B.t.w.: Was the point of using -ibp flag:
-To be able to add influences while not at bindpose.
-To be able to add influences while not at bindpose and avoid the problems of verts jumping back to the bindpose when weight is added to the influence.
- Something different entirely ;)
Sorry, I just wan't to be sure I understand You correctely.
Thanks a bunch.
p.s. Just made a little script here for locking all influence weights of a selected skinCluster:
string $skinClusterName[];
$skinCluster = `ls -sl`;
string $influenses[];
$influences = `skinCluster -q -wi $skinCluster`;
for($i in $influences)
{
setAttr ($i + ".liw") 1;
};
(Works in reverse by changing 1 to 0 ;) )
zeroeefx
07-29-2004, 12:12 PM
I agree with homer----I would NEVER delete it .... this is all you have to do .. Go to Modify>EvaluteNodes> Ignore ALL(this will turn off your ik,expressions,and constraints.) Then go to Edit>Select By ALL Type> Joints. Now go to Skin>Go to Bind Pose... Now you can add all the influences you want. Just make sure after you add all of them,You go back to Modify>EvaluteNodes> and turn on Evaluate ALL...... If you like the mel for it here it is make it to easy buttons.....
on (file:///on) button (to make you able to get to bindpose )
--------------------------------------------------
DisableAll;
select -r `ls -type joint`;
GoToBindPose;
--------------------------------------------------
off (file:///off) button (after you add what you need ,to get things back to normal)
--------------------------------------------------
EnableAll;
--------------------------------------------------
Hope this helps
-Ken
fortner
07-29-2004, 04:56 PM
you can't always get back to bind pose by turning off evaluation of nodes. I've never had any problems deleting a bind pose at all, and I've done it like crazy on countless characters on a number of productions. It's fast, you don't have to trouble shoot, and it's never done anything harmful to any of my characters.
- Mike
www.reelfx.com (http://www.reelfx.com)
www.mikefortner.com (http://www.mikefortner.com)
zeroeefx
07-29-2004, 08:05 PM
I have never seen a rig that i could not get back to the bindpose.(and i to have been alot of rigs ) By doing that cause it turns off all connections to the joint.( ik,expressions,and constraints) (your back to basic rotate of the joint) But if you saying that you have seen a rig, That would not get back to it would not supprise me. ( dam Maya made by humans) hahaha
john_homer
07-29-2004, 08:22 PM
I'm with Mike,
I've been deleting the little buggers for years...
and have had lotsa cases where maya fails to achieve bindPose, even with evaluate all OFF..
hi Nenox,
not that I'm trying to show you up... ;)
but I have a script similar to yours, but you just select the surface... rather than the skinCluster...
also it forces the component editor to updaye.. cos its not to flash at that...
same as your for setting ON or OFF... first line...
here 'tis
// ON OR OFF
int $val = 1;
// GET THE JOINTS IN THE SKIN CLUSTER
// ON THE SELECTED OBJECT
string $sel[] = `ls -sl`;
string $history[] = `listHistory $sel[0]`;
string $clusterName[] = `ls -type skinCluster $history`;
string $infs[] = `skinCluster -q -inf $clusterName[0]`;
for ($current in $infs)
{
setAttr ($current + ".liw") $val;
}
// UPDATE COMPONENT EDITOR
compEdMenuCmd CEMIAutoUpdate componentEditorPanel1WindowComponEditor;
zeroeefx
07-29-2004, 08:51 PM
Its just a place holder not saying you can't delete it , but if i can keep my first one i will :)
Nenox
07-30-2004, 01:10 PM
Thanks a lot for your time guys!
- Ken:
Evaluate>ignore all + unlocking joint transforms was done before posting the thread. I did however neglect to unlock non joint transforms in the skeleton hierarchy. :blush: Now I can indeed get to bindPose. The only funny thing is that even though I can all influences, and the verts don't move when I apply weight to them, the mesh still moves quite a bit away from the joints when i turn my skinCluster off.. Thanks.
- John:
Funny!
"you just select the surface... rather than the skinCluster..."
I was trying to find a way to do just that myself! :) I didn't suceed and I'm afraid I'm not quite sure why your code works and I failed misserably! :cry: Anyway, thanks for sharing!!
B.t.w. The mel i posted was not really intended to enlighten you, but more for someone less knowing (like me) readning along.
One last thing. I did find that i have to kill my character sets before i can add the influences without any trouble. The mess starts as soon as i grabb the timeline, and verts start flying off into space. This is when adding joints that have been in the skeleton hierarchy all along, but have not been part of the skinning. When createing a brand new joint, I must also kill all the connections from my animcurves to avoid this issue. Beats be.. ?!?
Thank again,
Sune
CGTalk Moderation
01-18-2006, 08:00 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.