Inverting a mesh

Say, I have a mesh that looks like the streets in a city. The roads are a mesh and the rest is empty.
In the image, we see a top ortographic render. The black area is my mesh (faces) and the white is the “sky”. This mesh is plane.
What I want, is to “invert the mesh”, so that the road becomes empty and what now is empty, becomes a mesh with faces.
Like this (white is sky, black are faces):
Boolean operations with another plane won’t work, the mesh has over 5k vertices and Blender didn’t gave an “answer” (or it was going to take over 4 hours).

So, anyone know how can I do it?
(tags: invert mesh, flip mesh, invert faces, flip faces)

I doubt there’s an automatic way to accomplish this. Are you able to post a .blend with the ‘map mesh’? If so, I’d be able to experiment with some ideas and post the instructions if any of them work.

Yes, get it here (170 KB).

Well, just explianing, what I want to do is to create the streets, i.e., extrude to -Z the roads, remove the top faces to create the road below the walkway level (this I can do), and then automagically create the walkways (squares), by filling the gaps between roads.

I can think of two quick ways to get a rough version of the “negative” mesh you’re looking for.

  1. You could use the Retopo tool on a dense mesh lying “above” your original mesh. Then in side view, delete the vertices that get retopo’d (ie that “fall down” onto the original).

  2. You could use the render as a displacement texture and again from side view, delete the vertices you don’t need.

Again these will only give you a rough approximation of the “streets” as a mesh, unless you use a super-dense mesh. How accurate does the negative mesh need to be? If you need exact vertex to vertex correspondence with the original, I think you’d have to make the original verts into a vertex group. Then fill in faces and edges manually then use the vertex group to delete the original faces

Well, maybe here is an easier question.
In this blend file (355 KB), you see the streets, exagerately extruded in minus Z direction. It is selected a group of faces that I created by extruding the edges loops (no displacement, only to create new edges) in that square and resizing these new edges to the center, resize = 0.
What I want, is an automatic way to create those squares, without having to select edge loop by edge loop and extruding and resizing to 0. Is it possible?

That’s what I was thinking. I checked the mesh to see how easy it would be. The main problem is that the edges are not loops. If they were, you could quickly select one ‘block’ or ‘median’ at a time, extrude and scale to zero at the center. If needed, the entire outer edge could be extruded and scaled out. Finally, select and delete the street vertex group.

The mesh could stand to be cleaned up a bit before you create the secondary mesh. Not just because of the lack of edge-loops, but because there are some overlapping faces, too.

EDIT: Sorry, you beat me to the post. And my suggested method is what you’re trying avoid. But, I don’t know of a script or other automated way to do this . . . would be nice, though.

OMG… how noob I’ve been :slight_smile:

  1. Starting from the 2nd file, go to the side orto view.
  2. select the top verts
  3. press shift-F

Thanks for all who contributed.

Edit: It will still fill some places it shouldn’t, but it’s better than selecting each edge loop and extrude/resize (also not all are loops as the friend said).

Edit 2: Will only work if you extrude to minus Z, otherwise it will fill the roads again instead of the squares.