Geometry Nodes

CAGE_LATTICE_instances.blend (959.3 KB)
CAGE_LATTICE.blend (927.5 KB)

3 Likes

That is actually a bug in Blender 3.1 only for subdiv modifier at the end of a modifier stack.

You can currently get around it by either disabling GPU subdivision in the preferences or adding another (dummy) modifier after the subdiv.

1 Like

Hi I got a question. I want to make a building generator where i can scale a instanced premodeled part(like a window)to the size of the face it is instanced on. I want to be able to take a cube and extrude faces to make the general shape of the building. How can i figure out the edgelenght of the adjacent edges and then scale the part to it ? i hope that makes sense.

1 Like

Well this is dirty, but you can extrude the edges and use raycast to find the distance between the point and the edge.

image

1 Like

Ah thanks for the info!

Hi
Face Placement.blend (115.3 KB)

Put collection objects on existing geometry’s faces (Using material index to filter out “window” faces.):


…use an accumulator to add vertical and not-vertical edge lengths per face and divide by 2:

…It uses a Z-Up dot product to filter out the vertical edges and assumes 2 of those per split (separated) face to make up the height and the rest to make up the width… So, works for rectangular vertically aligned quads only.

… other limitations are that in the instance collection all objects have to have the same dimensions where it crosses the Y-axis-plane and the “wall” mesh vertexes needs be on that same plane.

Dimensions get normalized to the instancing face tho:


…so watch out for that.

Edit: Sorry, this reply was meant for @pmeg

Good luck.

6 Likes

Animated recursive subdivision using instancing
Now the challenge is to add 3rd dimension :grinning:



recursive_sub_anim.blend (145.3 KB)

25 Likes

Ahh using the accumulate field is so smart! You solved the problems I had problems with domain interpolation.

You can actually don’t need to the same operation both the axis (x & z). You can get the other by dividing the first by face area.

Face Placement.blend (115.3 KB)
(I also removed some extra capture attributes and other other nodes)

3 Likes

Donno, it felt kludgy to me… also, without splitting the faces it becomes very tricky to use face-edges. A general index mapping from face-index to vertex-indices still eludes me.

Yeah, figured that out just now… :man_facepalming:
Square rooting for the Y scale makes sense… :+1:

Adding a subdivide and re-split into this bit …
image

…also adds instant detail:


…low effort high payback.

7 Likes

It is nice to see solutions to essentially ‘texture’ using actual geometry in an automated way, because I’m willing to guess modeled tiles is a heck of a lot less memory intensive than micro-displacement.

That has always been the case, but modeled tiling with no way to automate has always been a pain when you want to change something.

2 Likes

That’s quite clever ! well done !
I was thinking of trying something similar but I would never though about how you did it !
Not that I understand everything you did :smiley:
You can mix that with the awesome setup @zeroskilz just pulled out and that’s some recursive fun ²

3 Likes

Are there any recent updates on loop nodes? Or have there been people that have made their own? Or is there some roundabout way to make it so that something like the following is possible: A bunch of circles are indexed on a line, and as index increases also increase the scale? Or a little more complicated, start from the middle index having the largest scale and as it goes towards the endpoints the circles get smaller and smaller?
Thanks!

No news on loops so far, but what you describe should be possible with current geonodes. You can scale instances relative to their index by remapping it to 0…1 and using a float curve to shape the scale.

1 Like

Loops not needed:


makes:
image

Loops will be very specific and will only be useful for for things like complex convolutions or in places where you find yourself stacking the same node-group multiple times (doing the same thing)… it does not apply to your requirements, as you’ve stated them.

Blender’s GN already does more than 80% of what most people have in their minds when they think of “loops”. (using combination of index-based math, the accumulator, grids, curves, etc.)

Good luck.

7 Likes

@mysticfall could this be used for a ‘grid’ element system?

If you meant that it can be used for grid subdivision, it won’t work with default grid primitive because of vertex indices order incorrect for this setup, but if grid is created using instancing it would work

3 Likes

Wow, Blender’s non-overlapping UI paradigm gets everywhere.

7 Likes

Turns out you don’t need the accumulate field after all :man_shrugging:


Face Placement (optimized).blend (105.2 KB)

2 Likes

Ah, ok, so compensating for the interpolation by multiplying by 2… that should be quicker.
:thinking: Could possibly utilize edge-index modulation to make a general solution for any rectangle quad - not just vertically aligned ones…

1 Like

Sounds like something that could be generalized with the tesselate mesh patch ? https://developer.blender.org/D13515

Then again I haven’t been following your experiments very very closely. You guys are wrangling that stuff beyond my understanding

3 Likes