PDA

View Full Version : Painting Weight Question


Michael5188
11-15-2007, 11:34 PM
Quick question, been painting weights, came to a problem wasn't sure about. I changed the weight of a skin point, or vertice, and the vertice moved. Mind you the controls are all zeroed out, haven't moved them. I even have another vertice literally right on top of that vert, and I assigned them the exact same weigh distribution, made sure by looking in the component window, yet the one vertice stayed still. Why would one vert move and the other not? (the two verts are on seperate geometry.)


**I wouldn't mind if it moved, if both verts moved, I just need those two verts to be alligned, and one moving and the other not is messing me up. Its along a neck seam, and the other verts along the neck seam are not doing this, only about 3.**

omega3d
11-16-2007, 08:02 AM
It could be that the vertex was weighted to another bone and it wasn't showing the color in the vertcolor. it could also be the fact it only has one weight on it, and it doesn't know how to go about weighting it between two locations... Just throwing out ideas

thanks,
j

twedzel
11-17-2007, 05:02 PM
One of your joints has probably moved between you binding the two pieces of geo.

Michael5188
11-17-2007, 06:50 PM
Ah, I think that might be it. Thank you.

Michael5188
11-17-2007, 07:01 PM
Got another problem. I am trying to bind the head again, found out what joint had moved when I bound it. But now when I try to bind it says:

Error: Skin on L_Arm_Root was bound at a different pose. Go to the bindPose to attach new skins. //

Earlier I had added some joints as influences, and in order for it to work I had to delete the bindpose node.

The frustrating thing is I know for a fact it was bound at this pose, because all of the controls were zeroed out. Why doesn't Maya realize this, and does it really need this bindpose node to bind the head back on? Any way around this or am I kind of in trouble here...?

arrow000
11-18-2007, 05:54 AM
If you right click on a bone, and accidently click set prefered angle, it can mess up your bind pose.

A work around would be to duplicate your geo, transfer weights, then delete the old geo.

Don't forget, you can always redo your weighting. I know it seems frustrating, but the more you do it, the more efficient you get.

Hope this helps.

ErikSvensson
11-18-2007, 03:19 PM
Open the hypergraph, look for the mesh, there is a yellow block button, click it, and look for a node called "bind-pose", delete it, and then bind again. I think it will keep the skinweight, otherwise grab michael comets script with ability to save skinweights, then just reload it onto the mesh after deleting the node again. :)

Erik

Edit. Ok it seems like you already deleted the node... well a hint is to never begin to make controllers before you like the pose you got the skeleton in, but you can always save the skinning and redo some controls and skeleton stuffs. :)

Michael5188
11-18-2007, 06:54 PM
Ok, thanks for the help but I'm not sure you guys completely understand what happened.


Basically I guess I'm going to have to delete all binding and rebind everything. Is there a way to transfer the weighting I've done on a duplicated body.

This is what happened. I set the controls and everything perfectly fine, I bound the head and body perfectly fine, so I was good. Then suddenly maya bugged out, and every scene I opened the head was gone, there was an error reading the file...oh well. So I had a duplicated head for high res, so I just bumped it back down to low res and put it with the lo res body. Well, I had to bind the head to the skeleton the body was already bound to, so I did. Unfortunatly, I didn't notice my elbow pivot point was moved slightly since the time I had bound the body. So the neck seam between the body and head wasn't perfect because they were bound to the body at different poses. Well, I tried detatching the bind on the head, bringing the elbow pivot control back to zero, the basic pose for the skeleton that the body was bound to, then rebind the head so the neck seam would link up. Unfortunatly, as I stated above, the error I got occured, and I was stuck, I couldn't rebind the head at the zeroed out pose that the body had been bound to for some reason. I guess Maya didn't recognize that as the bindpose, or basic pose, but it is.

I know that was long but it's hard to explain, did that make sense? Anyways, I guess I have to detatch everything bound to the skin and rebind out, is there a way to get the old weights on the body after I rebind it?

arrow000
11-18-2007, 07:13 PM
I believe you can save out your weighting as maps. It will generate a map for each one of your bones. Or like i was trying to explain earlier, I am pretty sure you can transfer your maps of your old model to a fresh one.

Skyer
11-20-2007, 12:44 AM
If you right click on a bone, and accidently click set prefered angle, it can mess up your bind pose.

A work around would be to duplicate your geo, transfer weights, then delete the old geo.

Don't forget, you can always redo your weighting. I know it seems frustrating, but the more you do it, the more efficient you get.

Hope this helps.

A more helpful advice is to switch to XSI, you don't have problems like these. I switched to XSI because of things like these.

The reason it did that is because in maya, I believe once you apply IK, or by doing simple things like undoing, it will "change" (or recalculate) rotations on joints and change them by very a very small amounts (like .0001) which will give you this error. I've seen it before many many many many times.
have you applied IK already? A work around I did was to keyframe the skeleton in bind pose, then keyframe a bunch of poses to test the weighting, then after done I'll delete the keyframes and apply IK and the rest of the stuff... Worked every time.

arrow000
11-20-2007, 01:35 AM
keyframing your bind pose is a smart idea, I never thought of that.

Skyer
11-20-2007, 02:10 AM
I believe you can save out your weighting as maps. It will generate a map for each one of your bones. Or like i was trying to explain earlier, I am pretty sure you can transfer your maps of your old model to a fresh one.
saving your weights as maps does not work very well, trust me on this one. you can however transfer the weights from one geometry to another using 3D space... but to be honest... I have not made it work correctly either.
XSI is the solution, trust me ;)

DeepGreenJungle
11-21-2007, 04:55 PM
Hey, you shouldn't need to reskin your geometry, don't worry all is not lost.

Like somebody earlier was saying, each skinCluster can have it's own neutral position for each joint. That data is stored on the skinCluster and can be changed after the fact.

But first things first, you might want to get rid of the bindPose nodes. They don't do much, and usually just get in the way. You might get some warnings later when it can't find it, but it's usually harmless.

So, if you want to change the neutral pose, there's an attribute on each skinCluster called ".bindPreMatrix". This is where the neutral-pose information is stored. If you graph the skinCluster, you should see all the joints connected to the ".matrix[#]" attributes on the skinCluster. The indices of the ".matrix" attribute correspond to the indices of the ".bindPreMatrix" attribute, so if your joint is connected to ".matrix[12]", you'll want to modify ".bindPreMatrix[12]".

So the next question is, how do you actually modify that to produce useful results? The most straightforward way is to create a locator and position/orient it to where you think the neutral position of the joint should be. The easiest way to do that is just to move your joint to its neutral pose, parent the locator to that, then zero-out the locator, then unparent it. Now that you have the locator where you want the neutral pose to be, connect it's ".worldInverseMatrix" attribute to each skinCluster's ".bindPreMatrix[X]" attribute, where X is the index of the ".matrix" attribute that the corresponding joint is connected to.

eg:
connectAttr "myLocator.worldInverseMatrix" "mySkinCluster.bindPreMatrix[12]";

Now you have a locator in your scene that you can use to dynamically set the neutral pose of that joint. When you are done, you can delete the locator, or break the connections, and the values should stick around.

Hope that helps...

Michael5188
11-21-2007, 05:06 PM
Hey, that helped a lot! I got everything bound and the neck seam is working smoothly, Thank you everyone for your insight! In the end I learned a lot from this problem, so I'm glad I got something out of it.

arrow000
11-22-2007, 12:31 PM
Cool trick, thanks for sharing this info this us DeepGreenJungle!

Skyer
11-24-2007, 09:44 PM
Cool trick, thanks for sharing this info this us DeepGreenJungle!
I shall keep that in mind next time I run into that problem! :D

DeepGreenJungle
12-02-2007, 11:17 PM
Cool, I'm glad that helped.

CGTalk Moderation
12-02-2007, 11:17 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.