3
$\begingroup$

I am making a Minecraft character following BorncCG's tutorial, and this is my result for the arms movement: arms bending As you can see, the outside of the arm bends nicely, but the inside has this ugly crease.

If I bend the arm even more, the crease disappears, but the arm intersects itself which I'm sure will cause problems later. Here is how the arm is weighted:

For the upper arm bone: enter image description here

And for the forearm bone: enter image description here


How do I fix the crease, and hopefully the intersecting too?

thnx.

Update:

Using a combination of both the answers I have gotten (thanks!) I have created a much better result, but there's still a problem.enter image description here I think the problem is that the top and bottom edges circled here are not parallel, so instead of retaining it's cube shape, it gets sheared/stretched. How do i fix this? If the problem is in my mesh, I will happily change how it is made to fix the problem, pretty much anything it takes. Thanks!

$\endgroup$
4
  • 3
    $\begingroup$ Try reading this: wiki.polycount.com/wiki/Limb_Topology $\endgroup$
    – scurest
    Sep 1 at 3:53
  • $\begingroup$ This is something for the #ops to think about, as i dont collect downvotes i removed my answer how this is solved in the animation/vfx industry. its clear to me that helping result in punishment, there is no benefit in here for me. $\endgroup$
    – Peter
    Sep 4 at 22:22
  • $\begingroup$ I feel for you @Peter . I had a long insane conversation in the meta where I was told that I am not allowed to thank people in the comments. Insane. Anyways, thanks for trying to help, and I can look up stuff about corrective shape keys. =) $\endgroup$
    – Millard
    Sep 5 at 3:00
  • 1
    $\begingroup$ You're not going to be able to avoid a certain amount of pinching, because you are trying to mimic flexible containers with a rigid body. As I said in my answer, you can add topology to reduce the degree, but even real objects stretch their skins when they're flexed. $\endgroup$ Sep 6 at 22:03
7
+50
$\begingroup$

All tips aiming to bend arm up to 90° ...

Version 01

Enable under Armature modifier > Preserve Volume

enter image description here

enter image description here I used Automatic Weight and manually set 0/1 weigt to bottom / top vertices.

As you can see upper and lower arm cubes are not cubes anymore, but you are able to rotate 90 degrees and some small inverting is happening too, but not as early and much as like in your example.


Version 02

... to bend arm in 90° with this topology makes mesh deformed or overlaped (when weights of upper/lower arms are set 0/1).

enter image description here

To keep shape cubish and rotate 90 you would have to change bone position.

enter image description here


Version 03

or ... change topology - like two cubes (upper/lowwer arm) with loop in a middle and use Corrective Smooth modifier affecting critical vertices specified by Vertex Group.

enter image description here

enter image description here

Notes: In this version Armature > Preserve Volume is disabled and Factor of Corrective Smooth is animated to bend nicer.


All versions ...

$\endgroup$
4
  • $\begingroup$ Hey thanks vklidu, preserving the volume helped a lot. I've updated my question to show my current situation. thanks! $\endgroup$
    – Millard
    Sep 6 at 20:01
  • $\begingroup$ Than is why I tried to offer version 2 or 3 ... I don't know how to help more, sorry :) To keep it paralell all sides you would have to add two extra bones specifically for two middle loops. $\endgroup$
    – vklidu
    Sep 7 at 6:51
  • $\begingroup$ I've added IK, and I'm actually pretty happy with the result if have now. I'm not sure who to give the bounty to though, I used both @MartyFouts and your answer to get this result. I also had to adjust one thing on my mesh. $\endgroup$
    – Millard
    Sep 8 at 18:17
  • $\begingroup$ Great you found solution, I cant say whats the most helpful answer (I'm not so in depth of your issue) so you would have to decide :) Personaly I dont care about credit and Marthy answered first so you can give it to him :) $\endgroup$
    – vklidu
    Sep 8 at 18:37
5
$\begingroup$

The first thing to do is move the outer edge loops farther from the center edge loop.

Next set the weights of the edge loops in proportion to the distances. In my example, I'm using a "top" and "bottom" bone, because that's how I happen to have stacked the armature.

Example showing relative distances and weights.

Here you can see the block with a UV checker material, with the top bone rotated about 60 degrees.

Top bone rotated approximately 60 degrees

Here you can see the top bone rotated 60 degrees in the other direction.

Top bone rotated 60 degrees in the other direction

If you want even smoother deformation, add more edge loops, and set the weights proportional to the distance from the center, with the bottom weight being 1 - the top weight for a particular edge loop.

Edit: Objects that bend often do have real creases. If you want a more realistic "elbow" effect, inset the center loop cut:

cube showing center loopcut offset

As you can see there's even less stretching:

bent at 60 degrees showing even less stretching

$\endgroup$
1
  • $\begingroup$ Hey, Marty Fouts, thanks for the answer. I have edited the question to show my current situation after following it. Thanks! $\endgroup$
    – Millard
    Sep 6 at 20:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.