Metaball feature proposal
I just found out about metaballs, and they seem to be a very powerful modelling technique, but there are a few restrictions, that hold back their full strength.
Especially rigging using metaballs seems interesting, but too difficult for more complex objects.
So I'll list, what I think, should be done about this.
Feature list
Merging metaballs
Currently, the metaballs of a single object always merge, metaballs from different objects merge, when they have the same name, and some hava a number.
The most obvious problem is, that metaballs representing different objects need to have similar names. For example, I might want to create a humanoid person using metaballs, and I want to use multiple objects, so I have no idea, which body part is where, when just looking at the name.
I'd like it to be possible to have names like this:
-
Person.Body -
Person.Arm.L -
Person.Arm.R -
Person.Leg.L -
Person.Leg.R -
Person.Head
The most straightforward option would be allowing more names, and only looking at the first letters before the first ".", but there are reasons, to use a different approach.
In some cases it's useful, if metaballs only merge with some objects. For example, arm merges with shoulders, shoulders merge with body, but body doesn't merge with arm, so when the arm overlaps with the body, it doesn't.
Therefore I'd introduce metaball merge groups. Every metaball from the same metaball merge group merges with every other metaball in the same group. A metaball even could belong to none or multiple groups. For example the shoulder in the example could belong to the arm group and the body group.
I'd prefer, if every single metaball of an object can have different groups, since this will allow more possiblities, especially when I come to my next point.
Modifiers for metaball objects
A metaball object should also be able to have modifiers. Basically every modifier, that primarily operates on vertices could be implemented for metaballs. There are some modifiers, that seem very useful to me.
Mirror modifier
The mirror modifier for metaballs would make mirror editing for metaballs much easier. The metaballs in the center of the objects could even be merged, like in the mirror modifer for vertices, so they don't become larger after mirroring.
Armature modifier
Using armatures with metaballs is possible but extremely inconvenient. You have to parent every metaball to a bone, and it only belongs to a single bone.
This modifier would make inner object metaball merge groups more useful, since the arm and body could be dynamically moved inside the same object.
The problem here is, the metaballs also need to be able to store vertex weights or at least be able to automatically compute the weights, preferably the same or similar options to the armature modifier for meshes.
Metaball data and modes
Like vertices in meshes, each metaball should be able to contain some metaball data like vertex color, vertex weights and maybe even UV if reasonable.
Therefore also vertex paint and weight paint mode should be supported.
Additionally, some other modes could also be supported, like some kind of sculpt mode, where you can edit all metaballs of the selected objects at once (growing when touching with a mouse button, shrinking, wehn also pressing shift and maybe approaching each others size when also pressing ctrl).
Also particle systems and particle edit mode without the need of converting to a mesh before could be possible.
It would be best to have just everything available, that's already possible for meshes, at least if the feature makes sence on metaballs.
Use cases
Personally I got the idea when wanting to model and animate slime monsters, which merge, when they touch each other. Therefore it's not necessary to have different metaball merge groups, but it's still useful, so you may animate the merge groups and let the slime creatures sometimes merge and then, after they become solid, not merge again, for example.
Besides, when only using simple shapes for modelling, collision detection and ray tracing may be simpler, when exporting it to a (self written) game engine (I don't think, there exists a game engine, not based on meshes, yet). This would also require some way to export metaball files, but it shouldn't be difficult to find a simple format for it (not sure if there already is, but I'd go with a binary file of this format: 64-bit integer for object count, then for each object 8-bit integer for a shape ID, then the transform, 3 64-bit integers (vector), 4 64-bit integers (unit quaternion, not normalized), maybe some padding for alignment purposes, could also be extended for lower and higher dimensions).
There's also an interesting talk I found about metaballs, which shows, it's already possible to use metaballs in a useful way.
And maybe you also have already heard about dreams, a very promising game which uses signed distance field rendering with primitive shapes, very similar to metaballs. When seeing what they can do with that approach, I think, something like this would be reasonable to be used more often in modern games, and adding more features to metaballs would help.
My proposal only covers the very basics. In order to make them usable in blender, but I can imagine them becoming a more common modeling technique, especially when they are faster and since it's easier to have dynamic detail.
6 Comments
I like this idea, though I would say metaballs grouping based on name is annoying and obtuse and I would prefer that to be gone completely. I much more would like manual, explicit grouping through metaball merge groups or something similar.
Hi man, Just take look at this post: blender.community/c/rightclickselect/R1fbbc/ I just realized that you had the same idea than me. I'm still searching for someone to create an addon able to create an armature made with capsule metaballs already parented to the first bone, with an automatic process to create by extruding new bones, instead of parenting each of the new metaballs to the new created bone, and in the direction of this last one. ( which is actually a pain I agree ). And by the way, left clicking in the creating process of "meta-bones" and right to end could be GREAT. Thanks.
RCS Admin - Can we merge this into This Proposal
* @ammusionist * I really think this should be split up into several proposals. Only part of this is like your idea! And I'd really like to upvote each part individually. I love metaballs! Also, I think I read sometthing on the code blog about changing metaball naming conventions to be something like what you're proposing. I can't find it now. But I think it might be in development.
* @Josephbburg * It's possibly been triggered by all the bugs that I and one or two others have been posting about Metaballs.
Unfortunately, the "bugs" turned out to be By Design, but at least it's got the devs talking!
* @ammusionist * You only try to fix the naming conventions. I didn't think about such an approach, and it would work, too. If it's not possible to only merge some metaballs together, I prefer that approach over my approaches.