House building with geometry nodes

Hello!
I’m fairly new with Geometry Nodes so there is a lot of nuances I still don’t get… but I wanted to see if there was a way to do a procedural building system but this time, not based on input and seed values but with a percentage of hand modeling. To keep some artistic control. Here is what I got so far but I need your help to improve this:

The technique I’m using is pretty simple. I’m modeling the basemesh and assigning different shader to control where I want to use different looks of the building.

There is a lot of way to improve that and I got some plan for the next but my main challenge right now is this:

How can I scatter a geometry on faces and scale the instances to match the original face size? Basically, how to get the face dimensions without knowing the Vertex index?
I want to use this method for the Ledges of the building. Right now I’m capturing the Face area and scalling the instance with that. But it means that the source have to be already a certain size, if not we end up with something like that:

Maybe there is another method I haven’t though about but do you guys know any way to do that?
I’ve tried my best using Edge Vertices node but never got the result I wanted… I still don’t understand the logic of fields and instances.

My aim would be that the distributed object would take the size of the original face.

Any ideas would be very much appreciated :smiley:

18 Likes

you should add more styles and sell it on Blendermarket :smile:

It looks really interesting ! The style reminds me of the awesome village creator / game Townscaper on steam. How does it fare in terms of number of poygons ?

Thanks! If I manage to do everything I want maybe I’ll release it along a couple of other buildings style yes :slight_smile:

I have been fighting my whole weekend on how to get the face dimension to scale my instances accordingly… and I gave up for now ^^ I’ll just use some simple extrude for now to make the Ledge, without any special design :frowning:

By the way, I did this simple node setup to get a more regular extrude:

Because by default this is what we get with the extrude node:

The technique is not the most accurate and doesn’t work when the edges angle are too sharp but it does the job. If anyone has a better solution please let me know ^^

2 Likes

I figured out temporary solution for my previous ledge problem. But…
Got some WIP update on another subject, related :slight_smile:

It’s far from being perfect but it’s good enough for what I need this thing to be doing. It’s was a huuuge pain to figure out stuff (that are still not working properly) such as manipulating normals… for instance you can see some of the support arches are popping outward for some reason…

I also need to improve the shader a lot :slight_smile:

6 Likes

I featured you on BlenderNation, have a great weekend!

1 Like

That’s awesome @Renart84 !

This second setup is quite intriguing ! I should definitely look into similar cases !
I was looking into how to generate some stairs but too early in my learning process…
I should definitely give it a second shot now that I start to understand all that better.

I’ve also looked at your work … That really motivates me to make more design exercises mixed with some procedural ! It’s truly inspiring to see people with really good artistic and technical skills !

For getting the size of edges of one face, I think you can find some answer by looking around this post :

I’ll be checking out your experiments ! I’m really thrilled to see what you can come up with !
I find this one quite inspiring too :
https://blenderartists.org/t/medieval-castle-and-geometry-nodes-workflow/

Keep up the good work !

1 Like

Ohhh really cool. I actually neeeever looked into accumulate field stuff… It looks way more reliable and a easier than the method I’m doing right now. Spliting the faces, deleting the inside, turning them into noncyclic curve, deleting the endpoint to end up with 2 splines per faces, one for each side. then I can get the length and tangent.
I’m spawning a curve in the middle of these edges and orient them to allign with the face. We can then resample them based on the length to get an array of point to distribute the stairs.

This is what I have so far for the stairs. It’s far from being perfect and inside of this groupnode it’s a mess of spaghetti that I should organize… I’m constantly fighting orientation manipulation and I got little errors and bugs with the Transfer Attribute not picking up the correct info sometimes. It also doesn’t work when the face seize being rectangular…

1 Like

Then we we apply this on all the faces of my geo. I go this result… Very unreliable when applying on 2 touching faces. I guess I need to find another solution. I’ll look into the one you sent me ^^’

1 Like

Just note there is a way to do what sozap mentioned without the accumulator - Xeofrios figured out a faster way using domain interpolation trickery (still only viable for vertically aligned quads):

Good work!

I just figured out how to create a ledge that meets evenly at the corners.
It still relies on the height of the ledge faces, and only supports perfectly horizontal ledges but it’s progress.

2 Likes

Nice! I’m wondering how you ended up doing that. I found a solution too using some curve conversion :slight_smile:

4 Likes