Armature skinning

In addition to the partial visibility and masking tools I’ve been posting about, the skin modifier is another target I’m working on under the Blender development fund.

I’m looking at taking it in a slightly different direction than its previous incarnation as a mesh modifier. First, have a look at this demonstration video. (I know, you are all wowed by the amazing modeling going on there…)

As you can see, the skinning tools are now sitting on top of the armature object rather than the mesh object. The armature skin can be displayed while in edit mode on the armature, then converted to a real mesh object when ready. The new mesh object automatically gets vertex weight groups and an armature modifier assigned, so switching to pose mode on the original armature allows you to immediately pose the mesh.

There are advantages and disadvantages to using the armature edit mode vs. mesh edit mode. One difference is that your topology is now restricted to a tree rather than an arbitrary graph. (In other words, you can’t have a ring or loop anymore.) On the plus side, you can now use bone roll to control the orientation of skin frames and you get automatic posing. On the minus side, the modeling tools are more limited (until you convert to a mesh, of course.)

I’ve pushed a branch with the new code to github: https://github.com/nicholasbishop/blender-bishop/tree/armature-skin

I’d like to get feedback about these changes. Are these tools even useful? Is this a good direction to go in? What do you find incredibly annoying about these tools? Etc.

Update: thanks for posting builds!

27 thoughts on “Armature skinning”

  1. I haven’t tried it yet, but, creating the skin mesh from an armature and having it assigned to the mesh immediately was something I wished for since you posted the first skin modifier video.

    What I had in mind before you posted this was the possibility of having the skin modifier as before and converting the mesh to an armature when the modifier was applied.
    Would this be an option? That way we could have benefits form using mesh edit mode plus still getting an armature as a result.

    Will have to do some testing, but I’d say this is a great direction to go in.

      1. Yep, the internal armature structure in Blender is a tree. It makes sense, gets tricky to work out the rotational chain otherwise. You either get twisting, or you can try to do some kind of minimization of the twisting (using math that I probably don’t know.)

        In my implementation of the skin modifier, I dealt with this by treating the mesh “mostly” as a tree. Wherever a loop occurred, I basically built a “bridge” of four quads across the gap. That worked OK, but meant that adjustments to other edges would tend to flip the bridge connections, making it unstable for animating.

        So in other words, it’s possible to solve the loop problem, but hard to do in a way that doesn’t have drawbacks. :) And hopefully it’s not too much of a problem in practice; after generating a mesh from the armature you can manually bridge two ends together.

        With all that said, it is still worth considering whether it’s better to build the skin in mesh edit mode and have a button to construct the corresponding armature, or the other way ’round as in this code. In either case, it’s necessary to do some hacks to transform and drawing, so from a code perspective I’m not sure I see a clear winner. The main difference I can point to is that if we use mesh edit mode it’s maybe harder to indicate if a loop exists (whereas armature edit mode won’t let you create loops.) So it should come down to which seems clearer from the user/UI perspective.

  2. I think it makes sense to have it somewhere other than modifiers. I can’t wait to have a go. I hope someone does a windows build soon ;)

    How far can you take this? Can you actually model with a lot of detail if you just keep adding more and more bones? Could you make an eye for instance by adding a small bone or two?

  3. I really don’t like the idea of making it into an armature thing. Please don’t :(
    Armatures are not for modeling, they are for rigging. This will be really confusing. Plus, you can’t make loops with armatures.

    If you really want to make the skin follow an armature, all you need is a button to create armature from edges.

    Thanks.

  4. In mesh edit mode, we can easily select and grab one vertex.
    Modifier panel is alone in Modifier properties.
    Skin display is in middle of lots of armature properties.
    Converting to mesh create a really low mesh with a subdivision modifier not applied. ?! And Skin display is still active and confusing by overlapping real mesh.
    From a user perspective, creating a shape with skin modifier is easier to use.
    When trying several loops to create muscles reliefs, remesh modifier does not look very helpfull without a previous boolean union.
    I don’t think obtained mesh can be enough detailed without being forced to redo skinning. And the created armature is designed for shape creation and it is not really helpfull to pose the mesh.
    Like this, it is not useful at all.

    1. Good points about simplicity in the UI. :)

      “When trying several loops to create muscles reliefs, remesh modifier does not look very helpfull without a previous boolean union.”

      I don’t think I understand what you’re saying there.

      “And the created armature is designed for shape creation and it is not really helpfull to pose the mesh.”

      Why? I find it a great time saver for simple posing. It wouldn’t be useful for animating, but for posing the sculpture I really don’t see the problem.

    2. > In mesh edit mode, we can easily select and grab one vertex.
      This is true for bones as well — you can grab the tip or root and it’s exactly the same as grabbing a mesh vertex.


      > Modifier panel is alone in Modifier properties.
      > Skin display is in middle of lots of armature properties.

      UI could indeed be cleaner. I don’t think this is an important distinction between the options though; the UI shown in this post is very preliminary (i.e. I just threw a slider and two buttons where it was easiest.)

      > Converting to mesh create a really low mesh with a subdivision modifier not applied. ?!
      It creates a mesh with a subdivision modifier. The modifier gets the same level of subdivision as the preview (not really shown in the video, my bad.)

      > And Skin display is still active and confusing by overlapping real mesh.

      Again, this is a pretty minor thing that is easy to fix if we stay with the armature approach.

      >From a user perspective, creating a shape with skin modifier is easier to use.
      >When trying several loops to create muscles reliefs, remesh modifier does not look very helpfull without a previous boolean union.

      This I also didn’t really follow.

      >I don’t think obtained mesh can be enough detailed without being forced to redo skinning. And the created armature is designed for shape creation and it is not really helpfull to pose the mesh.
      Again, not sure here — why would the armature not be helpful to pose the mesh?

      > Like this, it is not useful at all.

      That’s good to know (seriously.) I wasn’t sure from reading this though — are you saying that the general idea of skinning (whether from mesh or armature) is not useful, or just that you would strongly prefer mesh modifier rather than armature buttons?

      Thanks for the feedback :)

      1. “This is true for bones as well — you can grab the tip or root and it’s exactly the same as grabbing a mesh vertex.”
        Yes! Theorically, it works the same. In practice, a tip or a root is not always deselected by a right click near another. I thought it was the hotspot area that is bigger for a vertex displayed by a little dot than for a root or a tip displayed by a bigger wired sphere. But maybe I am wrong and it is a GL select bug with skin display.

        “This I also didn’t really follow.”
        When skin modifier was published, everybody says :”Wow, Zspheres in blender”.
        It would be cool if we could use bones with Stretch to constraint or isolated bones to create fascicules of muscle fibers.
        If we try to add mesh capsules like that. We can obtain a correct mesh by separating all mesh parts, rejoining them by boolean modifiers and finally using a remesh modifier.
        Directly using a remesh modifier creates lots of holes.

        “Again, not sure here — why would the armature not be helpful to pose the mesh?”
        If you use bones armature to create a shape; you scale joints . So, joints are in the middle of the bumps and hollow. You will create more bones than neccessary to pose the mesh.
        If you use bone to create a simple armature to pose mesh, you will detail the mesh in a second time and you will probably have to redo skinning. And It is faster to manipulate vertices, you don’t have to deal with parent relationships.

        From my point of view, it is really faster to create a mesh by ctrl click-extrude or skin modifier. Creating an basic armature is really easy with skeleton sketching. And for people who want a transpose tool, I regret that retargetting was not debugged in 2.6.

        “are you saying that the general idea of skinning (whether from mesh or armature) is not useful, or just that you would strongly prefer mesh modifier rather than armature buttons?”
        I like to ctrl click-extrude a face but I admit that general idea of skinning can be more intuitive and a little bit faster.
        from my first impression, I just want to say that having to jump from armature to mesh and mesh to armature is less efficient than to only have to deal with mesh.

  5. Impresive, the idea of rotating the flow of the mesh is interesting, just a doubt, in any time anyone mention the idea of using curves/splines/paths?
    the curves has rotation or tilting scale per vertex curves and straight lines (vector) if i remember right there was an script to create trees using this idea.

  6. I think that both options – armature skin and mesh skin have many advantages and disadvantages and the best solution is to have both of them and converter operator – mesh to armature and viceversa! this will give the most flexible workflow, I think, and of course if we can actually combine them with all other modifiers, especially to add a multires on top and sculpt it without loosing the posing additions of mesh/armature skin modifiers on the bottom level, so we can always change the pose of the sculpted mesh and then continue to sculpt it! and… if we can directly assign vertex groups we can use more modifiers on top that require vertex groups such as solidify and others! this will give maximum flexibility, of course interactive work and combination with array modifier will make this a monster feature! I dont know if these ideas can actually be implemented, but, if it can, Im sure it will be worth the hard work!

  7. Pehaps, Nicolas Bisop could put all this code into the “add” menu (like ‘add mesh’, ‘add metaballs’,….) named ‘add skinning mesh’ with the option ‘make armature from skinning mesh’ ?

  8. OK, I tried it, I must confess that the results are awfull, dont want to insult You, Nicholas, but this is just a honest feedback! You can see what I mean if you add the default skeleton for generating the rigify and enable armature skin… take a look at fingers now and try to make a good hand from that mess – looks impossible for me, I tried it!as with the mesh skin modifier it was possible – I made a five fingers hand with it before – not a problem! anyways, I still do think that implementing both can give an extra power and flexibility to the users

  9. How about a workflow like this:
    1. Create a mesh object or use an actual mesh object.
    2. Add a “skin” modifier to it, and that modifier uses an armature object as a input “parameter” to generate geometry in the mesh object.
    3. We modify the armature and the mesh object geometry gets updated automatically since it’s a modifier.
    4. When the modifier is applied it can do all the vertex weighting work (perhaps a “convert to Armature modifier” button), and other to just apply the new geometry without vertex-weighting nor armature modifier applied automatically (it could delete the armature).

    – This way we keep the roll control.
    – The workflow is less destructive: we could add geometry to an existing object, and still modify the previously existing geometry of that object while the armature-generated geometry is still there and modifiable.
    – It may be possible to use more than one armature to generate isolated parts of geometry in the same object. Or perhaps combined parts that get glued automatically?
    – Don’t know how much useful, but there would be flexibility for more than one object to use the same armature for generating their own geometry. Artists may figure out an use. Like having different poses for the armature and applying each pose to a different object…

    Being a mesh modifier it seems to keep things more in their place, without mixing armatures and geometry features.

    Congrats for the work thus far, looked really good since the beginning.

  10. Personally I preferred the old mesh edit way. For a couple of reasons. And everything I’m about to say is purely from a modellers perspective.

    -Firstly, Being able to work in mesh edit mode is way more intuitive to modellers that having to deal with armatures.
    -not being able to use the proportional editing is a big disadvantage.
    -Being able to create loops is a big one up over zspheres, which this will inevitably be compared to.
    -I liked the way the previous skin modifier added edge loops when the (edge/armature for lack of a better word) got stretched out. this version doesn’t seem to do that. Its good modelling practice to not have stretched out faces like that.
    -The ability to create an armature rig is nice but not really necessary as a modeller. Rotating around the 3d cursor with proportional editing is usually the quickest an easiest solution for posing.
    -and as a feature request. Non uniform scaling would be awesome!

    Having said all that. I hope this doesn’t discourage you. I love your work man, keep it up :)

  11. One thing that comes to mind: If it’s implemented as a modifier using an armature as parameter, that “input-object” could be either an armature or a mesh object. That way we keep both posibilities alive.

  12. The first implementation is better to regard flexibility to edit the generated geometry, the good of the second implementation is the ability to pose and skinning, I think the best would be a tool like the sketch tools in Modo or ZSphere or so; or a hybrid of the two.
    Note: the good of the original paper is the topology of the geometry and quality of the generated Quads and the evolution feature.

    See the modo sketch tools in action: http://www.youtube.com/watch?v=IYt7R7SvnGI&feature=related

  13. I like both methods for modeling. I prefer bones for posing, and it could be used for animating too.
    But the killer features would be to use the sculpt tool (with a multires) dynamicaly with the skin.
    Anyway, you’ve done a great job!

Leave a Reply

Your email address will not be published. Required fields are marked *