← All ideas
  • Published 8 Jul 2020

Sphere-Mesh Skeleton (Skinning Modifier Update / New Object Type?)

Update:

Change the skinning modifier to allow for sphere-mesh skinning (and possibly other skinning methods). Add a dropdown for the skinning method and a checkbox to interpolate along faces or not. The resolution parameter would control the level of detail of the sphere-mesh skinning similar to the metaballs modifier. It's not currently supported, but the current skinning method could also make use of the resolution parameter. More details below in original post.

Skinning Modifer

Very Rough Roadmap:

  • Phase 1: Update the Skin Modifier to support sphere-meshes and face interpolation (face skinning).
  • Phase 2: Support for simulation optimization (like VIPER) and shape approximation/simplification. Possibly implement sphere-meshes as a new object type.

===================================

Original:

A sphere-mesh is a compact way to represent geometry. Every vertex is the center of a sphere of a certain radius. If two vertices are connected with an edge, the radius as each point along the edge is interpolated to form the frustum of a cone that is tangent to the two vertex spheres. By extension, if three or more vertices are connected with a face, the radius is interpolated along the entire face. I think sphere-meshes would provide the a great starting point for many sculpting and modeling tasks.

The closest way to achieve this in Blender today is to add a skin modifier and edit the vertex radius with Ctrl+A. This skinning method has many limitations and is prone to glitchy behavior. The skin modifier ignores faces. If you were modeling a wooden chair, the skin modifier would be able to approximate the thin, tubular structures like the legs but would fail to approximate the seat area, a flat plate. Despite these limitations, the skin modifier is great for getting a quick approximation of shapes.

Sphere-Mesh

Sphere-Mesh Hand

Other notes:

  • The sphere-mesh object shares a lot of similarities with the medial axis transform .
  • It is also similar to Z-spheres used in ZBrush but also extends to non-tubular structures.
  • A shape created with sphere-mesh could be converted to a mesh and armature. Consider the hand modeled with sphere-meshes. Many (but not all) of the edges of the sphere-meshes would also be good choices for the bones of the hand.
  • It would also be possible to convert meshes into a sphere-meshes using the methods described by Thiery et al. referenced below.
  • Sphere-meshes could make very useful collision objects.
  • Researches at Google have used elastic physics on something like sphere-meshes to simulate muscles VIPER: Volume Invariant Position-based Elastic Rods .
  • There is a LGPL-3.0 implementation of the first sphere-mesh paper on Github by one of the co-authors. The licensing details should probably be double checked before implementation.

References:

2-Figure3-1.png

96.8%

Development Status: Open

Upvote 61 Downvote 2
bradeneliason
8 Jul 2020

26 Comments

BlenderSplendor

If the problem is the skin modifier is glitchy, then shouldn't the solution be upgrading the skin modifier? The skin modifier already can create flat objects. Just select a vertex, control+a, and constrain it to an axis. You're fixing a non-problem.

4
bradeneliason Author

* @BlenderSplendor * Good suggestion! This could definitely be accomplished with changes to the skin modifier. I posted this idea here to get this sort of feedback. Possible changes: adding a checkbox to enable interpolating along faces and a resolution setting similar to the metaball's resolution setting. Scaling the vertex radii along certain axes is a nice trick, though I would say changing the skin modifier to interpolate along faces would be a more natural way to model (i.e. edges turn into tube, faces turn into plates).

The idea to create a new object type was inspired by several computer graphics and simulation papers using them for all sorts of interesting things: shape approximation/simplification, automatic rigging, scalable physics simulations. The VIPER paper by the folks at Google and Nvidia was able to achieve real-time simulation of a ton of soft bodies using a new sphere-mesh-like primitive. Do you think these simulation optimizations possible with changes to the skin modifier or would they require a new object type?

BlenderSplendor

* @SecretOfBatmana * I'm not expert on the subject, but I think that type of simulation optimization might be possible with the skin modifier. Essentially the mesh is only lines, so that could potentially simplify the simulation.

bradeneliason Author

* @BlenderSplendor * If these sort of optimizations are possible with just a beefed up skin modifier, then I would agree the changing the skin modifier is the way to go. I am not expert either, but I could imagine that having a new object type would be a cleaner way to implement all of the benefits of this way to represent objects.

Regardless, changes to the skin modifier seems like phase one on the roadmap of this feature. Phase two would be trying to implement some of the research that I've referenced and then we'd have to decide on if it's worth creating a new object type or not.

1
BlenderSplendor

I'd definitely like to see some bug fixes and new features on the skin modifier. What about a sphere-mesh checkbox on the skin modifier? I think that'd be a neat place to put it since the skin modifier and sphere meshes can use identical input, a set of edges. Just click the checkbox and the vertices become spheres with convex hull interpolation between each set of 2 verts. Making a new modifier would take up UI space, but I think skin modifier is a pretty intuitive name for sphere meshes because they're often used for character modeling.

bradeneliason Author

* @BlenderSplendor * Yeah, I'm imagining something similar. Thinking more generally, there might several skinning modes (the current method and sphere-meshes being two of possibly many). I think it's important to have an option to interpolate over faces or not. It just seems like a natural extension to have faces be "skinned" to turn into plates.

Do you think it's worth starting a new proposal for changes to the Skin modifier?

1
BlenderSplendor

* @SecretOfBatmana * Yes, definitely! You should edit your current proposal with an update if you've decided on something different. I'm on board with a sphere mesh option in the skin modifier, but I'm curious to see what you come up with.

rankxerox74

There is also a web app, Skimlab Editor skimlabs.appspot.com/editor/ , wich I found better than zsphere for basemesh generation. It would be a dream come true to have somethiong similar inside Blender.

1
bradeneliason Author

* @rankxerox74 * Nice! I've bookmarked that website!

I don't see a way to skin a face (interpolate the radii along a face). If face skinning is implemented, it would be an even more versatile method to generate base meshes.

CUBEinTHEmiddle

Didn't Pablo talk about a similar feature in the livestream last week? He had a task open in the developer board where someone was experimenting with this feature. At least it looked pretty similar. Unfortunately it didn't look like it was for the pipeline yet.

1
bradeneliason Author

* @Henry Neumann *, I didn't catch that. If you find the section where they're talking about it could you share the link?

CUBEinTHEmiddle

* @SecretOfBatmana * Unfortunately I did not find the link in a hurry. I'll have a look again if I find some time.

1
arkoprobhogupta23

What we actually need is more stability of blender at higher polys like zbrush ....

1
arkoprobhogupta23

It is called zsphere in zbrush

1
Lauloque

* @arkoprobhogupta23 * everything in zBrush is called zSomething. That's cheating.

5
bradeneliason Author

* @arkoprobhogupta23 * Yes, but if I'm not mistaken zSpheres don't interpolate over faces. I've never used ZBrush, so correct me if I'm incorrect. I think being able to interpolate over faces makes it a more versatile tool because you can model large flat surfaces as well as thin tubular structures.

dino107

yess yess yessπŸ˜ƒπŸ˜ƒ

michele1

I think this should be a nice feature!

bradeneliason Author

After sleeping on this, I realized this could also be implemented as a modifier. It could share the same Ctrl+A shortcut as the skin modifier.

There are pros and cons to doing it as a modifier. A modifier might be faster to implement. Sphere-meshes are really a new object type somewhere between metaballs and meshes. I think there's a lot of benefits to having the tool to convert to and from different object types.

Thoughts?

peter.boos

As for good hands legs, the way how one creates a mesh, and where a bone is placed (not just at center) has also a great effect on how a figure mesh behaves. Things with with google muscles, something alike it is in makehuman i believe or at least the human simulator that was made to work within blender itself. which used a lot of bendy bones to achieve it.

Having that said i can imagine that a outside mesh where projected on your tube system upon moving arms, then you could do without weights as in essence de circles provide shrink and stretch over its bone surface to reposition the mesh, It wouldn make muscles (perhaps thats something that can then be weightpainted (raise here a bit if bend). ... i think i understand what you mean...yeah its a good idea.

bradeneliason Author

* @peter.boos *, converting a sphere-mesh to a mesh and armature is just one possibility. There are many cases where I'd just convert a sphere-mesh into a mesh without an armature. Also, I think the armature would almost always require tweaking after conversion to remove unnecessary bones and tweak bone positions and weights. It might be a good start.

The first paper linked discusses how sphere-meshes can be used for rigging. I'm not familiar with the backend of rigging, but I think sphere-mesh approximations of a geometry would make a very good starting point for rigging.

The muscles used in the VIPER paper is just scratching the surface of how sphere-meshes could be animated. The VIPER muscles are a really cool idea in my opinion because it preserves volume, so the squash and stretch of the muscles looks very natural.

peter.boos

hm as for blender bones we're often told that they should be in the middle. People often use volume snap to center for it. However as for a finger the bone should not be placed at the exact center but slightly near upside of the hand and with the right mesh around then it will bend correct. Same for legs, as it should only extend inwards. Its shown here : youtube.com/watch

As for bals, and fingers eventually one gets into the same problems that in real life we dont bend alike it, although .. i like your idea.

have you ever modeled with the skin modifier, it kinda looks a bit alike it. pluralsight.com/blog/tutorials/understanding-power-skin-modifier-blender

1
lsscpp

Would this be better than metaballs?

arkoprobhogupta23

* @ Lsscpp * yes

Lauloque

I wouldn't say better, it's just different. Having both would give us mutch more flexibility.

1
bradeneliason Author

* @ Lsscpp * I don't think they're better or worse. It depends on what you're doing. I'd say sphere-meshes would provide more control over the final geometry so for many modeling tasks, I would prefer to use sphere-meshes over metaballs.