75
$\begingroup$

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?

$\endgroup$
84
$\begingroup$

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

  • Fluid simulations

  • Boolean operations

  • 3D printing

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:

    enter image description here

  • Internal faces:

    enter image description here

  • Areas with no thickness:

    enter image description here

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.

$\endgroup$
  • 3
    $\begingroup$ Just a note about You might want non-manifold geometry in some kind abstract model since it can't exist in the real world. “Thin walled” objects, such as leaves, flower petals, silk, etc. should almost always be modeled with no thickness (a single layer of faces), especially if they are partially transparent or translucent. $\endgroup$ – PGmath Dec 5 '14 at 20:41
  • 6
    $\begingroup$ I think it's worth noting that while non-manifold surfaces enclose objects that can't exist in the real world, there are many manifold surfaces that also represent objects which cannot exist in the real world - an example would be the Klein bottle. So being manifold is necessary, but not sufficient, for a "realistic" object - it should also be orientable. $\endgroup$ – JulianHzg Jun 9 '15 at 8:56
  • 1
    $\begingroup$ @JulianHzg kleinbottle.com/images/7-Klein-BottlesA.jpg $\endgroup$ – Dan Feb 1 '17 at 15:34
21
$\begingroup$

How To Find Non Manifold Areas in a Mesh

While in Edit mode, you can select all non manifold areas with CTRLSHIFTALTM.

Overlapping Edges

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:

enter image description here

But then when I checked for non manifolds, I would get an edge highlighted like this:

enter image description here

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:

enter image description 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.

$\endgroup$
10
$\begingroup$

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:

device model

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:

device head interior

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.


Debatable Cases

When making environmental static meshes for games and such, some designers go for designs like this to save polygons:

minimal static mesh example

(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:

mesh seaming error

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:

enter image description here

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:

less ugly 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:

enter image description here

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.

$\endgroup$
  • 1
    $\begingroup$ by any chance, was this an some sort of Energy weapon (based on the reloadable rocket launcher) for a small ship in Space Engineers $\endgroup$ – X-27 the fluffy unicorn Jan 6 '17 at 0:45
  • 1
    $\begingroup$ @X-27 Actually it was the spiffed up version of my laser welders that I never finished, but yes for space enginees. :3 $\endgroup$ – StarWeaver Jan 6 '17 at 0:47
  • 1
    $\begingroup$ I recognized the cargo port immediately :) $\endgroup$ – X-27 the fluffy unicorn Jan 6 '17 at 0:48
1
$\begingroup$

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 Shark Without being too preemptive you might consider this natural decomposition enter image description here 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. enflate

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 enter image description here 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.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.