Kitbashing primitives/Insert Mesh Brush

Dumb idea. I have seen in ZBrush and 3DCoat and some VR sculpting applications the ability to add a mesh not just at the world center 0,0,0, but also where a brush hits a mesh surface. You are also not just limited to application primitives but custom meshes you have created like greebles, spikes, engines, etc. I believe in ZBrush it is called the Insert Mesh Brush. Examples of it are on YouTube.
Ideally in Nomad it would be a brush with a library of meshes in the stroke menu the same way we choose an alpha.
Once a mesh is chosen the user would either chose drag radius or just insert which would insert the mesh at its default size.
When the brush touches a mesh the new mesh is inserted with its center point aligned with the mesh surface. Ideally the mesh will be a new Scene object with the gizmo on by default so it can be moved and scaled into position. Ideally the gizmo will have a button to mirror the mesh geometry but not change the center point location of the mesh.
The idea is to speed the roughing out of shapes using primitives without always having to move them from the world center.

3 Likes

Yes that’s something I’m thinking about.

I might be done for the next release actually.

5 Likes

You surely want IMM (Insert Multi Mesh)?

1 Like

Insert Mesh Brush is hot. :+1:
Can’t wait to do primitive inserts.

Some thoughts for inspiration.
Due to limited HD space on mainly IOS devices, this could be challenging.
Maybe an optional temp download from cloud just when one needs the IMM?

Some IMM brush sets for zBrush have several hundred MB on my HD, which is no fun on a PC, but a problem on a 256GB device.

It could work if for example we would use objects with a maximum weight, we all know that we are not on pc. But I take an example where I want to add cones on a sphere to make a spiked ball, I don’t need my cones to have many polygons. We’re definitely not going to put in big, heavy stuff. But with the IMM one could also insert hairs and fur can be.

I don’t plan on doing IMM (with all the managing and stuff), but just a tool to insert primitive directly in the surface.

I do hesitate on a single vs many tool though.
If I do one tool for each primitive, it might clutter a bit the toolbox, so maybe it will be a single “Insert” tool with different primitive on the left screen.

I could add an option “Mesh” where you can simply clone the current mesh (similar to clone tool except the mesh would spawn where your cursor is).

If the mesh used is saved as a tool setting, we can just make our own per-mesh tools, right?

Yes I could do that indeed.

4 Likes

The IMM option with primitive selection plus the option to import would be a blast.
Or in add menu the option (as IMM) to drag it directly where needed, multiple times as long as one changes the IMM object. :grinning:

1 Like

This would be cool with instancing support (many clones all sharing the same memory for the geometry, just having different transforms)… but could be tricky to manage in the scene view

I think it is very important that after the primitive is spawned at the brush location that the primitive mesh is a seperate mesh in the Scene menu AND the gizmo is automatically activated. I found that insert mesh brushes never place the mesh exactly where I want them and at exactly the correct scale. Having the inserted mesh a seperate mesh in the Scene menu and the gizmo turned on would save a lot of button pushing. An inserted cylinder is never the right size or orientation.
There is a method of ZBrush sculpting where one sketches out an armature (Zspheres) and attaches primitives to it and then deforms these primitives like with a move or drag brush. This is what I would hope to see with this tool. Thank you.

It will work a bit differently (at leat at first).

When the object is spawned, the “Transform” tool take over and when you release your fingers it selects back the “Insert” tool.

The idea is to really use the 2 fingers to rotate/translate/scale in the same gesture.

1 Like

Stephomi, I just installed v1.43. Thank you very much. I have a question. Did you add a feature in the Insert tool to clone a mesh I have sculpted and have it spawn where the brush touches? I can’t see how to do that.
Thanks!

Not yet, I’ll probably add it later.

Not sure about what the UX should be like.
The simpler for me would be to have an “insert current” where you simply insert the current selected object.

1 Like

Maybe a button on each object in the scene hierarchy, that activates the insert mesh tool with that mesh. Or maybe a long press on the duplicate button to enter insert mesh mode?

Or just stick it in the menu at the end of each row?

1 Like

I like the idea (of re-using the same icon) but there’s aready too many icons.
I need to rework the whole hierarchy list interface.

Also don’t forget there’s already a “clone” feature for the gizmo/transform.

Honestly, this looks very good to me. Make inserts of any geometry loaded to scene is cool. The move object icon could I.e. be deleted instead. Long pres, floating & move like in painting apps layer menu is very common gesture language already.

I’ll remove most of the icons and simply open a popup if you click the name (for example like the tool preset or alpha delete, etc).

3 Likes

Stephomi, thank you for this tool. If you intend to add to this tool the ability to spawn a cloned custom mesh may I suggest something? Let’s say I am adding cone like spikes to a ball. I want the flat end of the spike to be near the surface of the ball and the pointy end facing away from the ball surface. Is there any way that a custom mesh can be oriented in a camera view so that when the custom mesh is cloned that orientation is saved? Then when the Insert tool spawns the clone it is aligned in the direction of that ball’s polygon’s normal. It doesn’t have to be perfect. I just want to reduce position and scale adjustment time after spawning each clone. Just an idea.

I think the trick there would be telling the app which axis you want to align with the surface normal. Doable, but a UI concern at minimum.