There is probably nothing more antithetical to the typical best practices of character modelling than an overhang (or fat rolls!). It's easier to model, easier to bake, easier to paint and easier to rig meshes where everything has lots of clearance and no part is close to self-intersecting. But we don't want to do that, we want big fat bellies resting on people's knees, so what to do?
You simply model something without a steep overhang:
Make the belly never form an angle that's too acute with the body and give yourself space to bake/paint/retopo in the design of the character itself. You can usually get away with this to great success on cartoonier body types. Pros are obvious, this is the simplest, cons are obvious, no tummy on knees.
Move the belly up just to bake and texture it:
For models with a unified subdivision topology between the low and high poly versions (like a model for offline rendering where subdivision with displacement is the name of the game) this is perfect. Just drop it to the lowest resolution and move the offending segments out of the way of each other to bake whatever maps you need and paint it. The cons are that it's still probably going to be annoying to work on the model and get stuff into the right position to begin with, and it's not ideal for games/vrchat where if possible you want a bespoke low resolution mesh that is different to your sculpt mesh for maximum efficiency.
Model with the belly up and bring it down in rigging:
Much closer, now we have all the access we want, and it'll bake perfectly fine, but we're flying a little blind when it comes to the final shape. We have to make it in the wrong shape and then move it into the right shape later. This very much workable but could lead to unoptimal topology and proportions.
Because of all of the issues outlined above, my preferred method is to blockout and begin sculpting with the belly down, move it up for the combining and retopology phases, then move it back down.
Original blockout with belly in the low position, the gut, moobs, arms, legs, head etc. are currently all separate uncombined meshes.
The blockout is saved as a guide, a copy of the blockout has the belly and arms moved up for clearance. The copy gets remeshed together and retopologized into a unified body.
Using the original blockout as a guide, the retopologized combined mesh is brought back down to match the original silhouette, keeping the up position as a blendshape.
That gets us our high poly sculpt mesh (if you were targeting offline renderers with displacement maps you could also just do final topology at this stage). But what about if we want to do a proper game resolution low poly mesh now? well soon as we have an up and a down blendshape, we can now do the game topology onto the sculpt mesh and use a wrap deformer (explained more here), to bring that back down with our sculpt's blendshape.
Sculpt mesh in white, "Game mesh" in teal.
So the entire process for making a game model with this method is.
Blockout with belly down.
Move belly up, combine and retopologize for the sculpt mesh (usually auto retop).
Move sculpt mesh's belly back down and sculpt.
Retop for game mesh with belly up.
Move game mesh back down with a wrap deformer.
This process is slooooow, if you can get away with one of the simpler methods above you absolutely should. However, the advantage of all this work is that you have a no compromises model at the end of the day, you can get the shape perfect when you sculpt it, be absolutely sure you'll keep that shape you worked hard to make and get great, low stretch topology to match it.
Confused? me too. Let's go through it step by step.
For this, I do a significantly more detailed blockout than I might otherwise. Your blockout here really wants to match the silhouette of your final product as close as possible to get the most out of this technique. Once you're happy with the read of your model with the belly down, duplicate the blockout and keep a copy of it, then it's time to move the intersecting pieces up and start combining. On this model of Toner, his moobs were also causing intersection problems so I ended out moving his entire arms and head up too in order to ensure we have baking clearance.
There's multiple ways to bring the belly up so you're just going to have to experiment and see which one works the best for your specific overhangs. You can just move it with a big move brush, deform it with a lattice deformer, bend it up with a bend curve or my personal favourite method shown here is to use a combination of a gradient mask and the gizmo. Swap your ctrl brush to mask rect, then select alpha 27 as your alpha and you can easily mask in a linear gradient in ZBrush, then just select a nice pivot point and rotate the tummy up. If your blockout mesh is low resolution enough, you can also just mask it and blur it a few times with ctrl+clicking and avoid the whole mask rect thing.
Try and move it up as little as you need to while still making sure you'll have enough room under there to retop and bake it.
Now that the blockout has the belly up it's time to combine it together to make our sculpt mesh. I like to just combine the subtools, then set dynamesh really high (like 800-1000) and dynamesh everything together. Once it's one big mesh you can smooth out the gaps where the individual blockout meshes have intersected with each other and now it's time to ZRemesh it. I go into ZRemeshing in greater detail in my article about making clothing meshes using it over here so give that a read if you need a bit more information. The gist of it is, Ctrl+click on the undo timeline at the current spot to put a grey block in there (this stores that part in history), now play around with ZRemesher settings until you get what you want. Having polygroups can help but can also sometimes hinder on particularly complex shapes (like a fat overhang actually is).
Once you're happy with the shape, if your dynameshed version has details on it you want to capture back, you can subdivide it a few times then go to subtool -> project - > Project History. This will project the details from the undo step you put a grey block on over to the final mesh. Go to your lowest subdivision, export an .obj of both the sculpt mesh and the original, belly-down blockout you stored. We're about to get into the meat if this technique!
This is, unfortunately the trickiest part of this entire process. We need to move our sculpt mesh back down and reproject it onto the original blockout. Luckily there is a tool that can help us here, Faceform Wrap. Wrap is a program that allows you to select points on two meshes and "wrap" one bit of topology to another one. In this case, we're gonna be wrapping out sculpt mesh to our original blockout. You can dynamesh the belly-down blockout if you'd like at this point but I've found it works fine with the floating intersecting meshes too. Wrap often does a great job with not caring about self intersections (though you may need to mess with the settings on the wrap node a little bit).
A full on wrap tutorial is well beyond the scope of the overhang article so I'd suggest you go watch one of Michael Pavlovich's videos instead. What I will say is, when setting up the points to wrap to, don't overdo it! Just do the big features, bellybutton to bellybutton, Left middle finger to left middle finger etc. The more you try and direct the wrapping process the worse it can sometimes be, and letting it just fly and do its thing will often get you a better result. You can see in the demo gif above I use VERY few points. Just remember we want the approximate location of the face to be as close as possible to where it originally landed on the mesh or we'll end up in sliding in the reprojected details.
Once we have the wrapped mesh with the belly down we'll export the obj out again. In ZBrush, we'll go up to the highest subdivision, make a layer, go back down to the lowest subdivision, store a morph target, then with the layer set to record, import the wrapped .obj. This will effectively bring in the bellydown version in on the new layer, you can now grab the morph brush and paint out any areas that are not supposed to have moved (like the legs or paws). We only want a difference on the body parts we moved up for baking. Go back to your highest subdivision and you should see your details have reprojected and it's still there. If these got messed up in the process, either try wrapping it again and being a bit more careful on topology sliding, or just delete the higher subdivisions and resculpt in the lost detail, it doesn't take as long as you'd think!
As a bonus tip, go to Movie - > Timeline -> Show to bring up the ZBrush timeline. You can now click on the timeline to add keyframes which you can use to control multiple layers at once if you need to move multiple objects. Now you just scrub the timeline to move everything up and down.
Keep in mind your target platform when sculpting from this point onwards, if you're making a film/offline model, then how the mesh looks with the belly down is more important. If you're making a game/realtime model, then how it looks with the belly up is more important soon as that's the position we'll be baking from. And always make sure you're doing it on a new layer!
Sorry mate, this one is just going to be a lot of hard work then. Use a reverse of the same methods you used to get the belly up + a lot of ProjectAll or Zproject brush work to get it to match the original silhouette perfectly. I've done it this way before my first time doing this method back in the blender days and it's not so bad! In many ways it's a lot better as topology sliding is less likely to happen.
Usually when going to retop a game model I'd suggest decimating the high poly mesh to a really low number and using that as your target, however in this case we want our hi-poly reference to have a blendshape on it. So just find the highest resolution subdivision you think you can get away with not slowing your retop program down and export and .obj with the belly up and the belly down.
Add the second mesh as a blendshape to the first exported one (and for good measure let's set keyframes on the timeline again for ease of use) then just (with the belly in the up position) go about your retop as normal. When doing the belly I like to try and angle the topology slightly so it'd look straight when the belly is brought down, but this doesn't have to be perfect. Bellies are a very smooth, rounded shape, so it can be easier to retop these at a lower resolution then subdivide the mesh.
So now we have the high poly with the up/down blendshape intact, we can use that to bring the retopologized version down by use of a wrap deformer (SurfaceDeformer in blender). I go into this in a bit more detail in the general modelling page but the basic gist is it'll bind the low poly to the high poly verts and try and maintain their distance and orientation to the target. So when our high poly moves the low poly will follow it.
By triangulating the mesh first in our desired position we can ensure the normal map always works!
If you have not read my article on bake groups/bake helpers I would highly recommend reading that first. It's not necessarily more relevant here than on any other bake but may help you.
The only special consideration to make here is that like always we want to triangulate before we bake to ensure the normal map always aligns with the topology. However in the case of our model here. If we triangulate it with the belly up vs triangulating it with the belly down the triangulation will be different. So you have two choices here, you can triangulate it with the belly up or triangulate it with the belly down, it entirely depends on which position you plan on weight painting the model as it's generally a little easier to do that with an untriangulated mesh. As of the time of writing I haven't gone all the way through rigging the model yet so I'm hedging my bets on triangulating with the belly down so we don't need to push it down later with a constantly running blendshape in the game engine.
In maya, triangulating with the belly down will require adding the wrap deformer with the belly up, moving it down, adding a triangulate node, then selecting "delete non deformer history" from the edit menu to apply it. In blender I believe you just have to add and apply the triangulate modifier.
Send your pre-triangulated mesh and related high-poly meshes through your normal baking process (again I'd highly recommend reading my article if you're not used to baking) and you should have a good set of maps to move onto texturing with!