0
$\begingroup$

(EDIT: Here's a copy of the file, the only difference is that I had to remove the cloth simulation to fit the file size limit.)

I'm new to Blender, and I've been struggling with this for a while. Everything else seems to be working fine, but whenever I rotate the bone joints to reposition the arms or the wings, a large area of the wing mesh gets pulled toward the arms. I don't know what I did wrong or how I can fix it. I originally parented with automatic weights, then tried with envelope weights, then tried with empty groups. I've tried with and without weight painting, which I honestly don't understand in the slightest.

Setup notes: the bones for the wings are in a separate group from the rest of the armature. The model itself is divided into separate objects; hair, body, sweater, and wings. The sweater has cloth simulation on it, though I'm not sure how that would affect it. (side note: if anyone knows how I can make just part of the sleeves and bottom of the sweater loose and floppy without changing the rest, in a way that would work with a playable character in Unity, let me know please!)

CONTEXT: The character's wings should be able to flap, and this character is intended to be playable in a Unity game.

Without moving:W

After moving:enter image description here

$\endgroup$
2
  • 2
    $\begingroup$ The answer is probably weights. But this is a question where we'd really need to see the file. Preferred hosting here is blend-exchange.com . $\endgroup$
    – Nathan
    Feb 15 at 23:08
  • $\begingroup$ Thanks for the tip Nathan, I'd wanted to upload the file but couldn't figure out how. It's now been added to the question. $\endgroup$
    – MagicDawn
    Feb 17 at 1:08

1 Answer 1

0
$\begingroup$

If we enter weight paint mode on the wings, in vertex masking mode, and actively select a vertex that is deforming incorrectly, we can see why:

enter image description here

This part of the wing has acquired weights to hand.Fr.001.L, which is an arm bone, not a wing bone. When we rotate the arm, the hand follows because of parenting, and the wing moves with the hand bone because it is weighted to it.

These look like automatic weights. The wing gets weighted to the hand simply because it is close to the hand bone. I'm not sure exactly how a left leg doesn't get weighted to a right leg bone, it may be because there is intervening mesh that blocks the bone heat, but here, there is no intervening mesh (only the frontfaces of the wings, which don't block bone heat.)

To get good autoweights, lets weight it first to an edited armature, and reparent it to the original armature. We'll start by duplicating the armature and editing this duplicate such that it contains only wing bones-- we'll delete everything else. And we'll delete all vertex groups on the wings:

enter image description here

We'll autoweight to this duplicate armature to generate weights, but only from the bones we want. After that, we'll unparent the wings object with keep transform and delete the armature modifiers on it, then parent to our original armature with "armature deform" (only armature deform, not automatic weights!)

enter image description here

Now we can see that the wings are properly weighted, deforming with the wing bones, but no longer deforming with the hand bones:

enter image description here

$\endgroup$
2
  • $\begingroup$ Thanks so much!!! I've got it working now :) Do you have any suggestions for what I said about the sleeves? I'd really like them to be floppy and loose, like the sweater's too big, but I don't even know where to start with that. $\endgroup$
    – MagicDawn
    Feb 17 at 6:13
  • $\begingroup$ @MagicDawn You would probably want to implement physics, but you'd want to set that up in Unity. $\endgroup$
    – Nathan
    Feb 17 at 6:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .