Home Technical Talk

How does a solid bracer twist with the forearm?

Zablorg
polycounter lvl 6
Offline / Send Message
Zablorg polycounter lvl 6
This is something I've been pondering the last day, but is something that I can't seem to find much visual reference for, if any at all, so I was hoping someone could give some insight:

Basically, a forearm twist is continuous over its length: the wrist matches the rotation of the hand 1:1, and this twist tapers off so that the elbow doesn't twist at all. We achieve this effect with weighted twist bones, which is all well and good (though I do have a bonus question at the end about that, for anyone who cares to answer).

But say your character is wearing a solid steel band in the middle of the forearm, encompassing, say, a third of the forearm's length. It's rigid, so its twist has to remain constant across its length. How do I reconcile this with the previously described natural twisting motion? Do I set the twist of the bracer to be approximately the average of what the twist of the skin underneath it would be?

This would also mean that there would be a bit of a twist discontinuity where the bracer meets the forearm on either end. To help visualize this, imagine this string of numbers is the amount of twist the forearm experiences at various points along its length, from hand to elbow, where the hand has '10' twist:

10, 9, 8, 7, 5, 3, 1, 0

A reasonably smooth transition. If we add a bracer, though, some of the points will have to be the same amount of twist. I'll represent these points as being contained in square brackets. Near as I can tell, it'd look like this:

10, 9, [7, 7, 7], 3, 1, 0.

So, there'd be quite a sudden change from 7 to 3 units of twist. Do I simply... let that happen, and make the twist look fairly natural by adding an appropriate number of edge loops to prevent volume loss?

EDIT: to clarify, the mesh I am envisioning has no actual flesh underneath the bracer, just to reduce the amount of stuff to draw. The arm/bracer interface would be one continuous mesh, though I'd be open to having separate meshes if that's just how one has to do it.

------

Bonus question: what is the advantage of using multiple twist bones (matched to the twist of the hand, diminishing in influence the closer you get to the elbow), as opposed to a single twist bone with appropriate weights? So, say you have three twist bones, matched to the hand-twist with an influence of 1, 0.6, and 0.3, respectively. Is there any difference between that and me simply taking the vertex weights of each twist bone, multiplying them by the total bone influence, and then using those weights and applying them to a single twist bone? As far as I can tell it's a linear system, so the effect would be exactly the same.

Replies

  • wardle2403
    Offline / Send Message
    wardle2403 polycounter lvl 3
    I cant answer your question but I would add a layer of cloth under the Bracer, of course only if fits the character. 
  • Scruples
    Offline / Send Message
    Scruples polycounter lvl 10
    I would give the bracer it's own bone, parented to the furthest wrist twist bone and animate the bone based on the wrist twist. I honestly can't remember how to do this it's been years since I've done any serious rigging, goodluck, maybe Mark Dygert or one of the other rigging genius' around will grace you with their knowledge.

    Bonus Question answer: The problem lies in the fact that it is a linear skinning system and the vertices will collapse on themselves, known somewhat as the candy wrapper effect. There are tons of papers on it.
  • Zablorg
    Offline / Send Message
    Zablorg polycounter lvl 6
    Scruples said:

    Bonus Question answer: The problem lies in the fact that it is a linear skinning system and the vertices will collapse on themselves, known somewhat as the candy wrapper effect. There are tons of papers on it.
    I thought this was combated with a sufficient number of edge loops along the length of the arm? Not quite sure how multiple bones helps against this as opposed to a denser mesh with which to deform (ie more incremental twisting and less volume loss). I guess I'll try it myself and see, but as I described before, if the weighting is tweaked appropriately, the overall twisting effect on the vertices would remain the same in both scenarios, was my thinking.
  • Scruples
    Offline / Send Message
    Scruples polycounter lvl 10
    The mesh will collapse in on itself no matter how many edgeloops, it's a problem with the linear deformer, other skinning methods like Dual Quaternion have their own issues too, which is why people mostly still use multiple bones or influence objects.
  • Zablorg
    Offline / Send Message
    Zablorg polycounter lvl 6
    Scruples said:
    The mesh will collapse in on itself no matter how many edgeloops, it's a problem with the linear deformer, other skinning methods like Dual Quaternion have their own issues too, which is why people mostly still use multiple bones or influence objects.
    I tried it just now and you're right. I seem to have misunderstood how bones work with regards to rotation, then- when twisting a bone shouldn't the vertices just.... orbit around the bone? I really don't understand why we get such an unintuitive result. It's particularly jarring because I've successfully rigged an eyelid to drive a blink animation based on rotation and didn't observe this result.

    Scaling and transforms work as expected, why not rotation? It's not as if when I select a bunch of vertices to rotate around an axis in the app normally they shrink to nothing. I figured the candy-wrapper stuff was because if you have a cylindrical prism with only two loops, and twist one end 180 degrees, the edges that connect the two circular faces are going to intersect at the middle, resulting in something that looks like two cones with their points touching each other.
Sign In or Register to comment.