PDA

View Full Version : Moving a character by the root over long distances causes poly problems. Help please!


Wes_Brown
03-02-2005, 02:38 PM
Hey guys. I have a character created at the origin but he needs to be moved about 2000 units from there to fit in the HUGE scene I am working on. If I move the root that far (or even the root grouped to itself), there are a ton of polys that get slightly left behind causing distortion and ruining the surface. I have looked at the weighting and it seems to happen because certain areas of the model never have a combined value of 1. If I flood the surface with a value of 1 after it is moved, all the points pop back into their correct place. Is their ANY way to fix this? I imagine there should be a work-around for this without having to repaint your weights after the thing was moved. Bear in mind that this is only noticeable when it is moved over such long distances. In normal movement, everything is fine with the weighting. This leads me to believe this would happen to most 3d characters if they were moved this far in maya. I have attached a pic to show you what I mean. ANY help would be GREATLY appreciated!!

Thanks in advance,
Wes

jgibz
03-02-2005, 02:43 PM
I have looked at the weighting and it seems to happen because certain areas of the model never have a combined value of 1.
You may have already tried this, but double check that you have weight normalization enabled on your geometry. also, as a last resort, try to work things out by hand to equal 1 in the component editor.

sneezy
03-02-2005, 05:17 PM
Depending on your version of Maya, you can just use Skin -> Edit Smooth Skin -> Prune Small Weights and set the cutoff value low enough that it doesn't affect any correctly weighted values

Wes_Brown
03-02-2005, 07:23 PM
Depending on your version of Maya, you can just use Skin -> Edit Smooth Skin -> Prune Small Weights and set the cutoff value low enough that it doesn't affect any correctly weighted values

That helped quite a bit. Thanks! There HAS to be a way though, to move a character and have this not happen at all. I mean, there have been VERY large character scenes done in maya without this being a problem. HMMM........ :hmm:

Morganism
03-03-2005, 01:22 AM
This is actually a good test to see if your weights are normalized properly. And if prune weights doesn't get all of them, you just have to get down and dirty with the component editor, and make sure everything is adding up to 1. Once everything is perfectly normalized, though, you shouldn't have that problem.

jgibz
03-04-2005, 03:40 PM
I actually just finsished skinning a charactrer yesterday and the weights actually worked well for once:) I had this thread on my mind so I moved my char's main transform 2000 in the tX. I had the same problem around the mouth of my character. My face setup was done with bones (cartoony char with huge mouth.) So I parented everything that had anything to do with the mouth, (clusters, spline ik , etc, ) under the main transofrm. Whal@! That fixed the problem. I could trans, and rot in XYZ 2000 units and the skin was prefectly intact.

You have influence objects on that hand that arn't parented under the main trans maybe ?:D

Wes_Brown
03-07-2005, 11:56 PM
Cool! Thanks for the tip! I beieve I had everything parented though. hmm...I certainly try it out! Thanks again.

molonel custard
03-08-2005, 11:47 AM
I had the same problem when i was learning xsi but i didnt use a fancy technical way, i just moved the entire scene around the character, It's a bit of a cheat but if you can't fix using other methods theres always this way.

aaronholly
03-18-2005, 07:00 AM
I ran into a similar issue when working on Neo for the Matrix sequels; he was modeled in real-world units and when flying long distances it looked like his mesh had melted! Turned out to be a rounding error. Try this experiment:

(1) Skin a simple poly cube (no divisions) to a single joint & flood the weights to 1.0
(2) Parent a camera to the joint
(3) Translate the joint, say, 100,000 unites or more
(4) Watch as the verts of the cube begin to oscillate.

Scary stuff, eh?! If you were to write out the weights of the cube you will see numbers like 0.9999959399.... And this issue seemed to amplify as the number of influences increased.

A possible way around this would be to snap your character back to the origin, apply the deformations on each frame then send it back to the final position.

-A

waikitwan
03-21-2005, 01:22 PM
As others here point out it is caused by a rounding error. You can see the problem more clearly in the component editor if you set the decimal places to 6; the total is not exactly 1 . At work we use a custom script to write out the skin weights, which automatically normalizes all vertex weight to 1.

I always test my characters by moving them 1 million units away!

lucille
03-25-2005, 05:51 AM
Hello--

I have encountered this problem often in Maya--it is indeed due to a rounding error or
limitation in the skin cluster precision. Generally, it is not a normalization issue.

Pruning small weights in the skin cluster will work is some situations, but if you must
transform a bound character extensively in the world, you might want to create a
duplicate transform character mesh driven by a blendshape to a non-translating
envoloped mesh. There are several "gotcha's" in this work flow. but all are
fairly easily addressed. Remember--you can blend between hierarchies--so only really
need one blendshape from your transform geo to your skinned geo. If your "set ups"
are scripted, you may find yourself doing this all the time, as it also addresses
potential scaling issues with component bind and sculpt deformers. Paul

CGTalk Moderation
03-25-2005, 05:51 AM
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.