Home Technical Talk

Low poly joints - How can I stop the deform?

polycounter lvl 10
Offline / Send Message
Bombshell polycounter lvl 10
I'm working on an engine in XNA but before I can do anything with it I need an animated model to test with.
So I've made the main character, the topology was perfect it was 260 poly's sticking with the retro look while maintaining a good form.
When it came to animating, I set up vertex groups and an armature and it all looked like it would work out well, but it collapsed, deformed and was a complete mess.

I looked up low poly joints and found about stopping the collapsing, applied it to all the joints and it was okay until I started turning.
I was still getting massive deforming when turning the limbs, loop-cutting didn't help, re-arranging the joints and vertices and armature helped.
But I can't seem to get the arms, wrist and body to turn without completely ruining the models form.

Could someone help me fix this?
I have screens of the model (I'll put links, because their too big to put in img)
Front: http://imageshack.us/m/809/5687/screen01y.png
Side: http://imageshack.us/m/641/3479/screen02bo.png
And if necessary I would be willing to post the model, as you can see it is made in blender, so if requested I will post the .blend file.
But methods of fixing and tips on the matter would suffice.

Thank you in advanced,
Bombshell

Replies

  • sprunghunt
    Options
    Offline / Send Message
    sprunghunt polycounter
    the only way to stop collapsing from joints twisting on a rig is to add other bones that soften the amount of twist applied to the vertexes. So for example on a shoulder joint you'd add bones between the elbow and the shoulder and constrain them to twist along their long axis incrementally as the shoulder twists.

    Of course the other way is to just not twist the joints so much.

    Looking at your example you could probably do with using another bind pose. The T-pose you're using is always going to cause twisting for most motions. Having the arms down at 45 degrees would help. It does depend on what kind of animations you want to do. Is this character going to use a gun a lot?

    there's a thread where people have discussed bind poses, and why they're used, here:
    http://www.polycount.com/forum/showthread.php?t=84508
  • Bombshell
    Options
    Offline / Send Message
    Bombshell polycounter lvl 10
    thanks for that,
    and no the character won't use a gun a lot, its for an action platformer with brawling elements, so it will be running, crawling, punching, blocking, kicking, etc, etc.
    So judging by what people say in that topic relaxed would give me a wider range of accurately deformed movement?
  • sprunghunt
    Options
    Offline / Send Message
    sprunghunt polycounter
    Bombshell wrote: »
    thanks for that,
    and no the character won't use a gun a lot, its for an action platformer with brawling elements, so it will be running, crawling, punching, blocking, kicking, etc, etc.
    So judging by what people say in that topic relaxed would give me a wider range of accurately deformed movement?

    Yes.

    For example the range of motion sounds like a game similar to uncharted 2. Here's the drake model from uncharted in the bind pose:

    http://www.zbrushcentral.com/attachment.php?attachmentid=171589
  • Wrath
    Options
    Offline / Send Message
    Wrath polycounter lvl 18
    sprunghunt wrote: »
    the only way to stop collapsing from joints twisting on a rig is to add other bones that soften the amount of twist applied to the vertexes. So for example on a shoulder joint you'd add bones between the elbow and the shoulder and constrain them to twist along their long axis incrementally as the shoulder twists.

    Of course the other way is to just not twist the joints so much.

    Looking at your example you could probably do with using another bind pose. The T-pose you're using is always going to cause twisting for most motions. Having the arms down at 45 degrees would help. It does depend on what kind of animations you want to do. Is this character going to use a gun a lot?

    there's a thread where people have discussed bind poses, and why they're used, here:
    http://www.polycount.com/forum/showthread.php?t=84508

    Extra joints don't help with geometry collapsing from twisting. This is an artificat commonly referred to as the 'candy wrapper' effect from linear blend skinning. Dual quaternion skinning is one solution to deal with this:
    http://isg.cs.tcd.ie/projects/DualQuaternions/

    From my experience, dual quaternion skinning handles twisting deformation well, but inflates or balloons geometry on bending joints. So, the ideal solution is something that will allow you to blend between linear and dual quaternion skinning.

    For a less high-tech solution, don't twist your joints so far in poses that are held long enough to be seen and don't sweat it to much if your geometry gets a bit funky in a pose that you're moving quickly through.
  • sprunghunt
    Options
    Offline / Send Message
    sprunghunt polycounter
    Wrath wrote: »
    Extra joints don't help with geometry collapsing from twisting. This is an artificat commonly referred to as the 'candy wrapper' effect from linear blend skinning. Dual quaternion skinning is one solution to deal with this:
    http://isg.cs.tcd.ie/projects/DualQuaternions/

    .

    The extra bones don't stop the collapsing. They stop the twisting from being so severe and therefore reduce the collapsing. It's a well known rigging technique. Biped rigs come with these bones called "twist bones"
  • cman2k
    Options
    Offline / Send Message
    cman2k polycounter lvl 17
    Looking at your topology, specifically your knees, it seems to me you could minimize your problems quite a bit without any complex rigging additions.

    I'm no professional when it comes to rigging & characters, but hear me out.

    limb_deformations.gif
    (image courtesy of ben mathis)

    What you have going on is what's on the right. Adding full loops (like in the middle) for the knee and presumably elbow area would already help quite a bit with your collapsing. You need two full loops, one weighted to each bone from a joint, to achieve clipping as opposed to collapsing and volume loss.
  • Mark Dygert
    Options
    Offline / Send Message
    sprunghunt wrote: »
    The extra bones don't stop the collapsing. They stop the twisting from being so severe and therefore reduce the collapsing. It's a well known rigging technique. Biped rigs come with these bones called "twist bones"
    It's also a lot easier to implement in game than Dual Quaternion which I think requires quite a bit of code and fiddling to get working.

    The Dual Quaternion isn't really widely used in games, but I think both UDK and Crytek support Dual Quaternion, but I think they discourage its use on every character?

    From what I remember its largely too expensive for real time on the current console hardware. Twist bones on the other hand are pretty common and probably aren't going anywhere.
  • Bombshell
    Options
    Offline / Send Message
    Bombshell polycounter lvl 10
    I restarted the model http://www.polycount.com/forum/showthread.php?t=84955
    I got the joints fixed up, a better form and topology for roughly the same poly count and I've already rigged it and tested it, the 3rd video down is the animation test. I'm getting some artifacts under the arms but that is due to no constraints and twisting the arm awkwardly, which I will work on after I have set up the UV's for texturing.
  • Wrath
    Options
    Offline / Send Message
    Wrath polycounter lvl 18
    sprunghunt wrote: »
    The extra bones don't stop the collapsing. They stop the twisting from being so severe and therefore reduce the collapsing. It's a well known rigging technique. Biped rigs come with these bones called "twist bones"

    I'm well aware of how other people utilize twist bones, but I disagree with them. You can limit twisting by weighting between a non-twisting bone, and twisting bone. The only reason to use multiple twist bones is if you intend to be weigthing verticies primarly using envelopes. For games, that's just wasteful.

    Twist/helper bones should really be used to eliminate rotation on one or more axis. IE, the twist helper for a wrist would still rotate around the X (or twist) axis of the forearm with the hand in pronation or supunation, but limit rotation around the Y or Z axis so that the hand can pitch and yaw without influencing the wrist.

    Outside of that, more edge loops along the length of a twist can also be helpful in reducing how much the volume collapses from the combination of linear blending and twisting. But in this particular case I still contend that you're better off animating within the limitations of the rig and geometry.
Sign In or Register to comment.