I am not quite sure what non-manifold geometry is. I thought non-manifold geometry was just floating vertices and hole in a mesh. From my experience this is not always the case however. What is non-manifold geometry and what are the types of it and how do I avoid it? Is there a case where it is acceptable?
Non-manifold geometry is essentially geometry which cannot exist in the real world (which is why it's important to have manifold meshes for 3D printing).
As JulianHzg points out in the comments, intersecting geometry (faces sticking through other faces) is not technically non-manifold geometry on it's own. However it will often cause the same issues as non-manifold geometry, i.e. confused volume calculations.
Non-manifold geometry can be problematic, because it complicates some tools & operations:
Rendering of refractive effects
Among many other cases.
You might want non-manifold geometry in some kind abstract model (as non-manifold geometry cannot exist in the real world), or as an approximation of a very thin object (e.g. paper, leaves, etc.)
Common causes of non-manifold geometry:
Disconnected vertices and edges:
Areas with no thickness:
Fixing non-manifold geometry:
You can select all non-manifold geometry with CtrlShiftAltM.
Internal faces can be selected by pressing 3D view > Header > Select > Internal Faces in edit mode.
Loose geometry (elements without any other connecting elements) can be selected with 3D view > Header > Select > Loose geometry. Note that it only selects vertices, edges, and faces depending on the current selection mode.
Other useful tools for repairing non-manifold geometry:
ShiftG (Select Similar). This is often useful to select vertices with only one connecting edge, etc.
CtrlL (Select Linked). This is often useful in combination with Select loose and Select similar to select all geometry connected to the selected geometry.
W> Specials > Remove doubles Doubles, (multiple vertices in the same place) are usually non-manifold (not always).
Since a common cause of non-manifold geometry is lack of thickness, the solidify modifier can also be useful.
How To Find Non Manifold Areas in a Mesh
While in Edit mode, you can select all non manifold areas with CTRLSHIFTALTM.
One type of non manifold situation is when you have overlapping edges.
For example, I'd frequently have a mesh that'd look fine, like this:
But then when I checked for non manifolds, I would get an edge highlighted like this:
I discovered the reason this edge was highlighted was because there were overlapping edges.
The way to find the overlapping edges is to grab one of the middle vertices in the highlighted area (circled in green), drag it around and see if you discover a hidden edge, like the white one here:
Once you find that edge, delete it, then put the dragged vertex back into place. One trick I discovered about how to put the vertex back into place easily is when you are first dragging it out out of place, only drag it on one axis, rather than freely in 3, because then you only have to snap it back to that one axis, rather than 3.
When Non-Manifold Geometry is Useful or OK
Ok, I haven't found any uses for interior faces or overlapping edges, but I find open ended meshes and intersecting ("sunken") sub-meshes to be useful in some situations, provided you are:
- NOT making an object that's supposed to be transparent, translucent, refractive, or have other internal light effects
- NOT making an object that's expected to hold up in simulation by itself
- NOT doing that 3d-printer stuff
This is probably mostly useful for lowpoly modelers, though I use it with solid subsurf stuff sometimes as well. Here is a device I've been working on for a modding project:
It's made up of several mesh object. The front iPhone-colored-specular-map-showing one is protruding into the rear cargo unit so that no gaps are visible. If we hide the back one with the hatches, we can see:
There isn't actually a inside-rear to this part. Also you can see that the sidelights also have open edges sticking into the head mesh, and that the grate-things are protruding into the head a little too despite being closed objects. In this case, users probably aren't going to be able to get close enough to the object that modelling any more detailed connections between things would be meaningful.
One more thing to note about open edges like this: you can actually loop select them. If you were to fill the hidden area with an N-gon or an efficient triangle spread, you wouldn't be able to loop select anymore, which I find kind of annoying.
When making environmental static meshes for games and such, some designers go for designs like this to save polygons:
(In these examples, presume that the giant yellow UV map is some ugly/error texture that the users are hopefully never to see, and the other three colors are proper textures)
The problem with this design, is that each tiny error in meshing by the map designers can cause a huge immersion-breaking mess for the users:
From my experience wandering artificial environments, these errors, like software bugs, are not so much a 'if' as a 'how many, how bad, and where' situation.
It does cost some extra polygons, but I find I much prefer making a backing hull for this kind of mesh:
In this case, after extruding the top and bottom edges and creating the rear face, I created an N-gon in each side loop and then triangulated it for a minimal fill. I unwrapped the UVs on these faces and shrunk them to a tiny dark spot in the corner of the map. If I were making lightmaps, I'd try to minimize all these faces to a combined pixel or so as well.
The result when looking at the messed up seam:
I find the pretense of solid mass here much less immersion breaking, even though the unintended faces are minimally texture. Even when you look dead on through the gap:
You can barely even see the 'bad texture' texture.
As a final note, some game engines -- or at least later versions of Unreal engine as of UDK a bit before UE4 was announced -- require solid, enclosed meshes to make their magical static-mesh-occlusion-optimization-magic work, which is important for managing framerate and so when putting maps together.
The question is not well stated. There is nothing like non-manifold geometry. Non-manifoldness is a topological property and when we come to computers non-manifoldness is a combinatorial property.
Given a bunch of triangles you can build a manifold or a non-manifold stitching together edges in different ways. Manifoldness of what comes out do not depends of the shape of triangles you use. You can end up in a nightmare of self intersecting triangles but this can not be considered strictly related to non-manifoldness. You can choose other vertexes or you can let yourself float out of 3D to a nD space and all intersections can go away, pushing n high enough. Nevertheless if you stitch a segment to a triangle vertex the broomstick you get is a non-manifold even if you can see all the dimensions of the String Theory.
Defining non-manifoldness could be surprisingly daunting. Manifoldness is a black night in which all the cows are black. Recognizing manifold cows is obvious for triangulated meshes (a.k.a. 2-complexes) and tetrahedralization (3-complexes) but recognizing if a n-complex is a manifold, in general, cannot be done for n greather than six (let alone the String Theory...). That has something to do with the Halting Problem.
So, all manifolds are equal but some are more equal. There are Pseudomanifolds, Lienhardt's Quasi Manifolds and Initial Quasi Manifolds, the latter being something that you cannot decide easily how to decompose into parts. There is a linear time algorithm for a non-preemptive decompositon of a non-manifold into Initial Quasi Manifolds.
What hell do I mean for a non-premptive decomposition? Take this tetrahedralization Without being too preemptive you might consider this natural decomposition Next you cannot decide how to go on (seriously?). The orange edge is a non-manifold edge. If you look at this complex as a triangulation then you can see that there is a unique natural option, i.e. to inflate it.
However if you consider this as a tetrahedralization you have several options to decompose but none is more equal than the others. You can take this four component decomposition and decide to stitch one or two of the lonely tetrehedra (marked 1 and 2) to one of the two pies or both to the same and get either a three or two component decomposition. Furthermore, a one component decomposition can be obtained cutting at the orange edge and thru one of the thick black triangles. However, There is no good reason to chose one of these decomposition. Interested in this? See the Maths behind this here.
So in the end non-manifoldness is a combinatorial property that depends on how I stitch together things. If I am not careful at the way I stitch together things I end up in a non-manifold. However, looking at a non-manifold it is not always possible to tell which was the wrong stitching. Sometimes you (or an AI system) look at the 3D non-manifold object and see its assembly, sometimes you can't.