Geometry Nodes - Extrude - how to keep original face?

Hi, in this as easy as possible setup, I can’t get to work simple thing - extrude a Plane into a cube. Extrude Mesh node removes the original face. I can use the Join Geometry node, but the original face is not connected to the extruded faces. Theoretically I can use the Merge by Distance node, but this is horrible approach with bad results in my other, bigger setup.

Any ideas?

You must join the original with the new faces via “Join Geometry” node.

here is what I get with the Join Geometry node:

The face normals are not corrected by the node. Not sure if it is a bug, but seems so.
The subdivision behaves weird cause the face normal of the origin face has the wrong direction.
You can see this if you turn on face orientanion in the viewport.

Nope, it’s not about normals. It’s disconnected geometry.
Try to Apply Geometry and select the top face:

Don’t think it’s a bug… inverting the normals when inverting the offset seems like sane behavior to me :thinking:

Totally is, use the Face Orientation view to confirm what rigoletto is saying.

Can make your own node-group and re-use it everywhere:

Features of this node-group:

  • only considers the original and “side” vertices for merge.
  • auto-corrects normals if offset is negative.

(remember to unhide the OffSet Vector and remember it won’t default to the normal, you’ll have to explicitly plug it in)

Good luck.

1 Like

I want to avoid Merge by Distance. This will not work correctly if you have multiple planes side-by-side.

I guess the best way will be feature request for input “Keep Faces” in the “Extrude Mesh” node with options “Auto”, “Keep” and “Remove”.

Fair enough, but GN has a lot of ways to achieve similar results… The whole Keep Faces debate has not affected me since I tend to use extrude to create paneling or buildings - which require insets, so I’ve never in a practical situation had a need to keep the bottom face when using the extrude mesh, and the things I extrude tend to have a preparation step which separates or creates boundaries, so merging has not been an issue yet.

If what you’re trying to create requires “closed” geometry, it may be better to use curve-to-mesh or to start with a Mesh Cube primitive… so, it could be that the problem may require a different way of stating it.

Side-by-side planes to extrude from to then subdivide? I’m struggling to understand your use-case.

Good luck.

1 Like

I’m trying to make books with random x, y, z scale. My first approach was

  • 2 x 15 grid
  • set position offset with white noise
  • extrude individual faces and scale
  • extrude Z axis

I tried also multiple different approaches, still with bad results.

But honestly, I’m mostly trying to get a little bit of GeoNodes mindset. The result will be useless even if I find answers for my questions.

Why not make the books first, use them as points, and distribute them on a mesh? That way you can extrude just one book however you want, change the scale/rot/loc easily, etc. it’ll be way easier than building a book on each vertex manually

1 Like

Here is an updated version of the node-group you desire:

… it pre-shrinks the faces, does the extrude, merges, and then puts the “shrink” back (if Individual Faces setting is on).

But yeah, don’t assume just because you have a hammer that every problem is a nail.

Check this as an example of how to make random books efficiently:

Also, this whole thread:

Good luck!

1 Like

Oh, thanks, Accumulate Field is answer for most of my problems here obviously. I was thinking about something like this, but didn’t believe it exists :slight_smile:

But still, if you have a classic plane and extrude by pressing E key, you get a cube. Maybe I should forget about what I know from classic modeling in Blender while using GeoNodes…

1 Like

Only in one very special case… 99.99999999% of the rest of the time it behaves like GN extrude.

Here is me starting with a cube, insetting, extruding and then deleting the bottom vertices.
… as you can see it doesn’t keep the face… so in fact, even when modeling, the behavior you describe and expect has never been my practical experience…

and, yes, GN’s building blocks are way more primitive and you require a lot more first-principle thinking or you’ll get lost (a lot of your modeling experience does carry across though, so it is still important knowledge).

Good luck.


Btw, how are you doing inset? All I can find is this and the solution is absolutely insane

…or this

haha, had a small part to play in that first one:

… initially developed a different method which used even-curve-sweeps which was even more insane but now use higgsas’ method.


Yess GN is lacking a proper inset node, that is more or less planned in the long term.

You’ve just pointed out the good and bad about GN : it’s full of minimalistic tools that allow to solve a lot of problems, and allow to make new tools to add more basic functionalities to GN.

But on the other hand, creating these new basic tools can become quite complicated.

For now dev’s works more on adding core functionalities like physics / loops etc… rather than adding the missing basic nodes. That second part is more or less done by the community.
There are a lot of missing nodes for modeling, like inset , bevels… These will come eventually.