Geometry Nodes

Did a quick setup for random point z locations:

random_sine_geonodes.blend (117.0 KB)

4 Likes

That works very well. Iā€™ve been able to modify it to make it work with rotations in X. The only addition I would like is to be able to make some to oscillate faster, randomly of course.

Add an additional random attribute and multiply it with the frame input:


random_sine_geonodes_2.blend (114.7 KB)

4 Likes

I wish attribute randomize could output to any attribute. It would simplify everything so much.

Iā€™m sending you a Blender Bob cookie! :cookie:

Thank you all so much.

3 Likes

is there a way to get the different location of objects inside of a collection ? the collection info node doesnā€™t give me the list of vector i need

Currently there are no (accessible) object or instance domain attributes. Only point/edge/face/face-corner domain. You can do an attribute fill in individual objects with the location info.

How do you link the instance (Icosphere) to the plan?

image

Canā€™t seem to wrap my head around this method, probably Iā€™m doing something wrongā€¦

It goes to point out how geometry nodes in general is still not there yet in terms of user friendliness, having to go through hoops and loops to do something I consider ā€œbasicā€.

I thought of many different ways to do this, none of them looks as intuitive as it should be:

  • Use 12 geo node trees one for each object, then randomize them individually (the dumbest/slowest thing I could come up with)ā€¦
  • Start with just the 4 ā€œdifferentā€ pieces, then instance/position them ā€œindividuallyā€ to form the"block" inside GN then tessellate/randomize. (less dumb, seems much quicker to calculate, but will take some time to come up with).
  • Make everything inside GN, using 1 cube primitive (after all, the 4 pieces have the same vertex count and are basically different scales of the same cube) and go from there (the smartest thing I could come up with, but yeah, Iā€™m not that smart to execute it)ā€¦

All this could be way easier if there are object/collection related attributes/nodes to help bridge the gap between GN and ā€œnormalā€ blender workflow.

1 Like

I gave up using any extra nodes (as it seems like a dead end right now) and gone the ā€œdirtyā€ way, by manually changing the location/rotation of each of the 12 pieces in object mode on top of the whole ā€œblockā€ random ā€œz locā€ in GN.

Pros:

  • End goal kinda reached.
  • No extra nodes.

Cons:

  • Semi destructive way of working, defeating the purpose of GN (what if I donā€™t like this random ā€œseedā€ ?).
  • Although the tile shape + random color + random ā€œblockā€ ā€œz locā€, are helping negate any noticeable repetition, the individual pieces randomness is the same on each and every ā€œblockā€.


With a cylinder as a human reference

1 Like

Well first you can replace a lot of that for a much simples node setup tbh. You really donā€™t need to separate the position vector in this case just create one displacement vector with random values on z component like so:

Second, what you are trying to produce is very complex for any procedural toolkit , even programming this on python would turn out to be a very complex task. So it is not much as limitation of GN but that actually generating random geometry making it fit would be quite a complex task in itself. I believe it is possible to do it on the current state but it would require a lot of work atm and a lot of creativity. Can you do easily do this with the animation nodes addon for example ? I donā€™t think so.

We have still a lot of missing features atm, such as geometry instance , which the devs are working on atm and a way to randomly/parametric instance generator nodes. For example, I create a geometry node setup do create vases based on a few parameters, then I create a another node setup that uses that node setup to instance several vases with those parameters randomized. This is not impossible to do atm but very complex and still quite limited as we canā€™t instance from geometry yet. However what we have now is a very capable system already, and there is already a lot of node packs that have plenty of functionality such as creating hexagonal grids and so on and I canā€™t wait to see what more we will be capable to do when we have more features implemented.

2 Likes

Thanks for the tip, I guess it should become a little bit faster as it wouldnā€™t need to create more attributes ?

You can add something like this to all the tile objects to randomize their z location and rotations

The approach of tiling a predefined pattern is inherently going to look repetetive and I donā€™t think randomizing the z location and rotation (if it is even possible) would help too much. Perhaps you can have more than one pattern which look different but tile correctly with each other?

@Voidium,
I have a crazy idea.

Make your tiles simple planes. Fill an attribute on the face domain. Randomize that attribute. Solidify afterwards. Displace/triangulate/remesh if needed.

This is actually not completely correct, you can output your random attribute to a vertex color and use that in your shader.

1 Like

I was looking for that in the blend and I didnā€™t find it. I thought you used another method.

Oh, I did not include it at all, I was focusing on the randomized oscillations.

This ā€œblockā€ can tile on itself

And when joined by two different non-tillable ā€œblocksā€, they form this ā€œMega blockā€ where they can all be tiled together.

Something like this ?

My knowledge with nodes is quite limited, I only know of this method to randomize color

For anyone interested, here is the .Blend file in case you found a different method to tackle this problem.

Tiles.blend (2.7 MB)

Thanks in advance.

1 Like

Doing it in that manner is just ignoring the problem by making a larger tile. What I meant was something like this-

Tiles.blend (3.1 MB)

2 Likes

Cool, but there is a slight problem introduced with this technique, which is the ā€œ+ jointsā€ā€¦

You see the whole purpose of those non square shaped patterns is to avoid this ā€œ+ jointā€ in favor of only ā€œT jointsā€.

Thanks anyway.