Home Technical Talk

3dsmax - Skinning - How do I fix the hip area when thigh bends up and out?

sr3d
polycounter lvl 2
Offline / Send Message
sr3d polycounter lvl 2
When I rotate the thigh up and out, the hip collapses inwards.  Is there anyway to pull those verts out using helper bones of some kind?  I tried adding an extra bone to the left of the problem area, but when I skinned to it, it did not pull those vertices outwards.  Even if I put the bone like 1 foot to the left of the problem area, the verts still refuse to pull outwards.



Replies

  • PolyHertz
    Options
    Offline / Send Message
    PolyHertz polycount lvl 666
    The upper leg bones top should be very far outward instead of in the center of the leg to avoid collapsing. Your skinning probably also needs some work.
  • Mark Dygert
    Options
    Offline / Send Message
    Yep what polyhertz said will help, but it will start to create problems with the characters ass collapsing. Something always has to give, or a heavier solution needs to be put in place.

     Depending on the project you might be able to do a joint angle deformer, its inside of the skin modifier, it lets you create a morph target that is driven by the angles of the bones. As the bones move toward a certain pose, the verts start to move to a "fix pose".

    These can get really expensive really quickly and can be hard to maintain and work with, often don't transfer to a lot of real time engines but it can fix a lot of areas like this. Engines like Unreal do have joint angle morphing but I don't think it directly transfers from Max or Maya, it has to be set up in unreal.

    Joint angle deformers can also unexpectedly turn on at weird poses or over blend and cause ugliness. It's best done on a quaternion rig that won't have issues with gimbal and on joints that mostly have one rotation to manage, like a knee or an elbow. Multi axis joints like shoulders and hips can lead to a lot of unexpected blending... 

    Also joint angle deformers don't transfer with the skinwrap method of transfering weights so they have to be set up each time you transfer weights. Which depending on the project, it might be untenable.  For example if you have hundreds of pairs of pants that will need to copy the weights from a base mesh, you might rethink using joint angle deformers. If its just one character in a rendering project and the hip area is crazy important, yea maybe they're worth it.

    Alternatively you can start to add bones to help the ass keep its form or push out the geo around the hip, but often these helper joints need to be dynamically driven and then baked out because the engine won't understand the rules that drive them. Baked helper joints can become a liability with animation blending.

    So long post short, do what polyhertz said, try moving the joint toward the front of the model and then try to deal with the collapsing ass as best as you can. If that doesn't work, you can afford to go heavier, try joint angle defromers.
  • sr3d
    Options
    Offline / Send Message
    sr3d polycounter lvl 2
    I remember having this problem 12 years ago.  12 years later, nothing has changed.  You guys have confirmed all my research. I'm pretty much screwed.  I can't have the ass collapsing. 

    I will most likely use morph targets in unreal engine and time the morph target strength given the current animation that is taking place.  Basically custom morph targets for each animation to make it look right. Not that big of a deal, but it will take extra work.  Should yield good results I think.

    Thank you guys!
  • Mark Dygert
    Options
    Offline / Send Message
    That's a pretty tech heavy solution. It seems like adding 1-2 support joints for the ass would be simpler to setup and less of a performance hit for a realtime engine.
  • musashidan
    Options
    Offline / Send Message
    musashidan high dynamic range
    Have you tried massaging it with dual-quaternion blending? Or I often find using a .6/.4 ratio in the weight table on collapsing vert rows helpful, by just selecting each row of offending verts and clicking plus or minus until you can manually/visually blend it out. Works very well on limb/finger joints but waist/arse/thigh and shoulder/neck areas are always trickier.
  • Mark Dygert
    Options
    Offline / Send Message
    You can probably get better results from Dual Quaternion but Unreal4 doesn't supports DQ skinning/blending. It is pretty intensive to process it at realtime speeds. They were working on including it but then backed off because it was a significant hit to performance and it is not something that could be toggled on and off easily. You either use DQ and build your assets specifically for that workflow or you take the traditional path (less math, more joints), but the two don't cross over easily.

    https://answers.unrealengine.com/questions/8508/questiondual-quaternion-skinning.html 
  • Scruples
    Options
    Offline / Send Message
    Scruples polycounter lvl 10
    @mark dygert, I feel like I should point out Everquest 2, a game from 12 years ago launched with exactly that feature, and a toggle for it.
  • sr3d
    Options
    Offline / Send Message
    sr3d polycounter lvl 2
    That's a pretty tech heavy solution. It seems like adding 1-2 support joints for the ass would be simpler to setup and less of a performance hit for a realtime engine.
    This is what I'm curious about, unfortunately I can't find any information on this topic.  How does one setup these support joints?  Do you know of any youtube video that covers how this works?
    Have you tried massaging it with dual-quaternion blending? Or I often find using a .6/.4 ratio in the weight table on collapsing vert rows helpful, by just selecting each row of offending verts and clicking plus or minus until you can manually/visually blend it out. Works very well on limb/finger joints but waist/arse/thigh and shoulder/neck areas are always trickier.
    I'd love to check out dual-q, but the model is for a game in unreal engine 4. UE4 doesn't support dual-q.

  • Mark Dygert
    Options
    Offline / Send Message
    Scruples said:
    @mark dygert, I feel like I should point out Everquest 2, a game from 12 years ago launched with exactly that feature, and a toggle for it.
    Are you sure about that? I don't remember hearing about it at the the time and it would have been pretty big news. What program did they use to do the skinning? Were they using a plug-in? I think it was implemented in maya 2011? It really wasn't talked about all that widely until 2006-08. Also I was just watching some EQ2 videos and it doesn't look like they used it at all. I think the only other game company flirting with the idea has been Naughty Dog but I don't think they've implemented it in any of their games, yet.


  • Mark Dygert
    Options
    Offline / Send Message

    sr3d said:
    That's a pretty tech heavy solution. It seems like adding 1-2 support joints for the ass would be simpler to setup and less of a performance hit for a realtime engine.
    This is what I'm curious about, unfortunately I can't find any information on this topic.  How does one setup these support joints?  Do you know of any youtube video that covers how this works?
    There are a few different ways to add support joints and drive their positions and rotations, but it starts to get very specific to what the engine can handle, the person doing the rigging, the type of movement required and the overall goal of the game. If people barely move their legs up into a seated position then support joints probably aren't needed. 

    Inside of max you can use, wire parameters, link constraints, look at constraints and reaction manager to drive support joints in different ways. Then those typically get baked down and exported. Which can become an issue if programers start rotating joints and the support joints aren't being driven by anything.

    You can see some examples of support joints in the last of us rigging talk: https://www.youtube.com/watch?v=myZcUvU8YWc

    But yea, it's a pretty personalized process with a lot of different ways to approach it and there doesn't seem to be a lot of reference or tutorials floating around. Mostly riggers have a bag of tricks and do what they have to do, to make it work. But really you should answer the question of if it's even worth it, or can you work out something with what you have that everyone can live with. In a lot of cases, people just accept that the ass is going to cave in a little or the hip area is going to deform a little weird.
  • Scruples
    Options
    Offline / Send Message
    Scruples polycounter lvl 10
    @Mark Dygert not to digress too far but the slider was originally called "Animation weighting quality" they later changed it to "Animation quality" other than allowing for some pseudo cloth physics elbow and knee joints appeared to puff out as if they were switched to a DQ weighting solution, so I could still be wrong.

    There's some interesting DQ/Linear blending comparisons, visible in this video @0:20, 4:19 and 4:39 that illustrate the differences very well (along with some other weird skinning solver).
    https://www.youtube.com/embed/RHySGIqEgyk
Sign In or Register to comment.