ZBrushCentral

Hard Surface Meshing/Retopologizing/Merging Low Poly

Hi there,

I’m currently working on a project, where I have a pretty big “Base Plate” without much detail (view Screenshot 1, green, ZRemeshed, coarse mesh). Onto this surface, I want to add hard surface ribs, which have a thin wallthickness. These ribs allready exist in a CAD-Software, so they can be imported as an obj or stl into zbrush. You can see a cropped out section in the attached screenshots, only ~5% of the ribs present in the whole model are shown here. What I’m trying to get is a single mesh, where these ribs are properly merged into the base plate, while retaining the hard surfaces of the ribs and the keeping poly count as low as possible. It’s not mandatory to work on the existing CAD-file of the ribs, a complete redesign is also possible, if a suitable approach can be brought up. I would appreciate your help!

Thank you in advance!

Hello @Mined

If I understand you correctly this sounds like a job for Live Boolean. It will fuse the two meshes together adding additional geometry only where necessary at the place where the meshes meet in order to force quads and tris. Otherwise the geometry will remain unchanged every place else. This requires that both meshes be closed volumes–2D surfaces wont work.

However the sort of geometry created at the intersection won’t perform well for sculpting purposes. Depending on what else you want to do with the mesh you may want to resurface the fused geometry with Dynamesh or ZRemesher in order to clean it. Hard surface geometry has special concerns here. If you want to retain your hard edges you will either need to resurface the mesh at high enough resolution so that the edges are maintained by virtue of the sheer number of points on the surface, or redraw the topology so that edges are drawn exactly along the hard lines of the model. That way the edges can be creased which will keep them crisp when subdividing.

Making sure that the hard edges everywhere are bordered by separate polygroups will make this easier. You can then use the ZRemesher Keep Groups option to help ZRemesher recognize where you want the edges drawn.

:slight_smile:

1 Like

Hello @Spyndel

thanks for the quick answer!

I tried something simillar to your approach:

  • Mesh the ribs with zremesher seperately
  • Merge ribs with the base plate
  • Remesh by union (I think that does the same as your suggested live boolean option)

The Interface has pretty tiny trias, as you also mentioned before (view Screenshot). My goal is to have a single quad mesh with a low poly count, which keeps hard edges, so remeshing is necessary. If I remesh this single merged part with zremesher again, it will result in a pretty bad mesh. I tried many options: keep polygroups, keep creases, with defined zremesher guidelines and polypaint density. But it seems like that those tiny extrusions combined with a large base plate are not that easy to mesh. Another idea is to just remesh the interface area, but my approaches for this option also didn’t generate satisfying results up to now. You mentioned remeshing the interface area in your answer, what would your workflow be for that? I would also appreciate every other idea to achieve what I described before.

Thank you in advance!

Remeshing hard surface topology is a broad subject and skill set in its own right. It may require minor touch ups or even manually retopologizing certain areas by hand.

Generally speaking the best results are achieved by ZRemeshing first at a very high target polycount with “Keep Groups” which gives ZRemesher enough polygons to comfortably work out the form. Then use the ZRemesher “Half” option to reduce further until it can no longer maintain the form below a certain threshold.

The form of this geometry is very delicate and complicated. I doubt any option other than “Keep Groups” will be able to manage it. This means though that you need very careful and deliberate polygrouping. Many issues with “Keep Groups” Zremeshing are caused by inconsistent polygrouping.

In the image you posted, most of the polygrouping appears sound but you have areas like the following where it is not consistent. In the highlighted area of the image the topmost green polygroup transitions to an orange polygroup, and it’s not clear that the sides are a different polygroup from the top in that area. This will cause the form to break down in that area during a ZRemesh process:

If it looks like the form is breaking down in an area, many times if you Ctrl -Z back to the original topology you can find out that this is caused by tiny polygons near the borders that are a different polygroup than expected. Often this kind of geometry cant be seen unless you smooth the mesh with the smooth brush to relax it, or use Dynamic Subdivision to preview the subdivided form non-destructively.

Likewise you have soft rounded corners in most locations. If you want hard edged interior corners then the surfaces on either side of the corner transition need to be different polygroups.



To sum up, I recommend:

  1. Use Live Boolean to fuse the meshes, and then use Geometry> Crease > CreasePG to crease all polygroup borders at once. Then subdivide the mesh one time. This will do 2 things:
  • It will distribute more points along the surface of the mesh which gives ZRemesher more information to work with. In some areas you have only a single row of polygons defining a surface and ZRemesher can have trouble with this.

  • It will allow you to see which areas may not have adequate polygrouping to capture the form there. Any place where the form begins to soften when subdividing means no creasing was assigned there, which means the polygrouping is not sufficient.

  1. Once the mesh returns the expected results when subdividing, use ZRemesher at max target polycount with “Keep Groups” active. Look for areas where the form is not maintained in the expected way, then Ctrl-Z and examine those areas closely while smoothed for inconsistent polygrouping or overly complicated topology that ZRemesher can’t parse. Use ZModeler to touch up the geometry or polygroups as needed.

  2. Once you get good results with max target polycount, start making subsequent ZRemeshes set to “Half”, and keep reducing the polycount until ZRemesher can no longer maintain the form. It may be necessary to perform further spot touch-ups with Zmodeler as you go.



If you still can’t get good results doing this, as an alternative try Dynameshing the entire fused mesh first at max resolution. If polypaint is disabled, it should keep the polygroups. Then try Zremeshing that mesh from step # 2 above. Zremesher may have better luck.



If you can’t get good enough results no matter what you do, then the geometry is simply too thin and complicated for this process and will need to be manually retopologized.



Additional tips:

  • Re: Remesh by Union. This uses the Live Boolean process, but is a destructive option compared to the normal Live Boolean chain which will preserve your original meshes.

  • Don’t use more than one edge detection solution at once. So “Keep Groups” or “Keep Creases”, but not both at once. They may conflict.

  • Be sure to use “Keep Groups” and not “Freeze Groups”

  • Sometimes your results will be better with Group Smoothing (ZRemesher> Smooth Groups), sometimes you’ll get better results with this set to zero.


Good luck ! :slight_smile:

Thank you for this quick and useful answer! I tried all your tips in the last few days, but didn’t really come to a satisfying solution. I think an automatic retopology process is not really suitable for this thin and complex geometry. So I will now focus on manual retopologization, since I wasted a lot of time on tweeking polygroups and ZRemesher options where the clean up of the result will still probably take more time than a manual retopoloziation process. Since I haven’t done any manual retopologization yet, I’m currently searching for the best option for this kind of geometry. My goal is still to have a single quad only mesh that contains the rib and the base plate with a poly count that is as low as possible. What would be your manual retopologization approach?

Thank you in advance!

I do a lot of hard surface things of this type. You have many options available to you. Yes it is possible to get hard edges for a shape like this. Live Boolean is a good start. I make liberal use of the following: CREASE, POLYGROUPS, ZMODELER and ZREMESHER in a number of workflows to guide the topology the way I want it. You may have to use a combination of all of these to get the mesh you want. Save the pieces that make up the shape you want in their own subtool. This may seem counterintuitive but I often use ZREMESHER to remesh to double (or more) the polygons necessary, apply Crease to the hard edges that I want to keep, and then reduce the number of polygons gradually until I have something sort of like what I want. Then, I fine tune by hand.

Thanks for your reply @Doctor.Teatime! I’m able to create proper meshes for the base plate and for all the ribs, but the connection of these two meshes (with quads only) is the point where things get tricky. Connect them with e.g. live boolean and ZRemesh them will lead to bad results in my case (pretty huge base blate > 0,5m x 0,5 m with 3mm thickness and about 50 of those ribs with 3mm thickness). If you have any other advice, feel free to let me know.

1 Like

Yes, I understand. If I think of anything good, I’ll let you know.

Forgive me for possibly rehashing old trouble with this, but I love solving problems. I work with a jeweler. At work, I often incorporate ZBrush into my production pipeline. So your question is an intriguing one to me and it reminds me of something I do all the time.

One of the processes I use often is to stamp masks onto a mesh and then use Edgeloop Masked Border and GroupsLoops to create and then extrude the masked ‘stamp’. If I want sharp edges, I use Crease. I also make liberal use of ZRemesher to ensure that the mesh is all quads, and so on.

This method however, is not precise and expects that you start with more geometry than what I’m seeing in your picture. So… it might not suit your purposes.