Geometry Nodes

Hi,

one thing that confuses me - why do we have separate Attribute Vector Math and Attribute Math nodes? From my experience, I always reach for the Attribute Math node first, just to realize it is a wrong one. It’s especially confusing that it’s an exception in case of Attribute Math.

For example, we do not have Attribute Compare and Vector Attribute Compare, instead we just have Attribute Compare with a dropdown to pick data types to compare:
image

At the same time, we have data type dropdown in both Attribute Compare and Vector Attribute Compare:
image

Since floats and vectors are compatible (pretty much all the arithmetic can be done between these two data types), why do not we have just one Attribute Math node, with Attribute, Float and Vector choices in the Type A/B dropdowns. Wouldn’t it make the whole thing easier and simpler to use?

5 Likes

I want to bring to the table again a matter that IMHO is important.

Node Groups are not good enough as we know them to collaborate or work with a proper nodes workflow.

I mean the following:

Node groups are a great thing to organise node graphs and different tasks, but they lack in many areas.

They are not portable, with that I mean that to bring a node snippet, a functionality developed inside a compound node you have to append it from another blend file, they are not generally available for you work in your environment, that makes them very hard to share or to properly leverage since you have to be constantly getting them from the outside (and you have to remember what outside).

The UI is kind of hard to configure and it’s very limited, e.g. we don’t have booleans or drop downs, the configuration is very limited.

It’s really uncomfortable to do some kind of things, so while for the “limited” usage in shaders was “good enough” for GN and EN it’s really lacking.

In the end, we need to be able to have a proper “container node” that we can share and can be installed, and that we don’t need to get constantly from a library or another .blend, something that you install, and that’s it, you have it ready in the add menu, and that has proper aspect and UI, that we can properly design.

So I know this is something already known, but I think it’s important to re-bump this concept and push a bit for it, it’s really needed to be able to properly collaborate with something like GN, and not just the old Node Groups.

P.S.: Also the future capability of being able to “precompile” the container node to gain performance for computational intensive compounds, like an SPH solver programmed with nodes for example (I know it’s not for now, but I want also to remark this)

10 Likes

The problem that you’re describing affects not only geometry nodes. For example custom sculpt and paint brushes are also hard to manage and share, so the solution should be Blender-wide and not just tailored for GN. Maybe if the Asset Browser had a special type of library that is loaded automatically for every Blender session, then you could put all kinds of small assets in there and have them always readily available. But that’s more dependent on the design of Asset Browser that GN.

1 Like

Nice @Erindale, would you have a higher resolution screenshot just to analyze and learn from your GN flow ? Thanks !

1 Like

From the left is just my geometry input of the ground object that I sculpted and on the right everything just goes out to a Join Geometry node. I have the camera culling node in there but ended up muting it because it wasn’t helping the performance which I need to look into. That’s the node that’s muted throughout so you can just ignore that one. The RotScale node is just a bipolar randomise rotation and scale node and the vector math stuff with Dot Product lets me be picky about the maximum slope things can appear on.

2 Likes

Thanks for sharing @Erindale ! :ok_hand:

1 Like

btw, not related to this, but still on geo nodes: any idea how to get a unique, random value for each ‘point’, just like we get ‘for free’ in the ObjectInfo shading node, any idea @Erindale ?

I’d like to use that to drive the seed value in some nodes, in a layered, recursive use case of a geonode graph (where having the seed hardcoded makes every point distribution exactly the same on each level… imagine a sphere with smaller sphere distribute on its surface, which have smaller sphere distributed on their surface, which have… etc…)

there is a built in id attribute, not sure if thats what you are looking for

Thanks RC12 I didnt know that.

Here’s the exercise I am trying to do to get train on geonodes (cf screenshot)
I just want my base sphere, covered regularly with A-multi color spheres (which each has a randomized color),
and each A-multi color sphere, randomly covered with a few B-small detail sphere, which are emitting light (like small electrons).

I got almost there, but now I am stuck because I would like the B-small detail spheres to be randomly located on the surface of each A-colored sphere… and here my seed (5) is the same for each of those…

thanks for your help guys !

1 Like

The issue that you’re having is that right now you can’t transfer attributes between objects. To try to hide the repetition you could give each sphere instance a random rotation:

Or alternatively you could distribute your smallest points on top of the distributed spheres and just have the one geo nodes tree:

1 Like

Thanks @Erindale! it worked, looking forward to have a simple way to just randomize the point distribution’s seed using an instance unique attribute for ex.

Still on this same practice ex: adding hair particles on this,
I’d like to make something like vegetation falling down from each of those smaller white spheres.
But when I add hair, set them to a proper length, add dynamics … then the gravity is applied in local coordinates, with the hair falling towards the parent’ colored sphere, instead of just falling down with negative absolute Z…

any ideas ?

3 Likes

This is because you’re instancing. Instances are literally just the original object on a position which is why they’re super performant as there’s no extra computation needed. To get particles from them all then you’ll need your particle system on the larger ball of balls. Not sure if we can keep vertex groups through join geometry nodes so I’m not sure if you’ll be able to isolate the partlces to the smaller spheres specifically but worth a test!

Thanks ! I’ll try something like that an report back ; )
I should use vertex groups to somehow constraint the particiles only on those ‘regions’ then ?

1 Like

Hello everyone

I feel a little but dumb because i simply want to move my instances along the GLOBAL Z axis and i couldn’t find a way to do that…
I did play with nodes for a month, so I did made much more complex nodes set up than this… but somehow i cound’t find a solution to this simple Global/Local space problem…

It’s easy to move particles along local or normal but along Global Z axis seem quite tricky, anyone to help me on this simple problem? (I’m stuck in my project :frowning: )

ddd

File :
https://pasteall.org/blend/9c9a11a3f44d439382ab26371e4e677e

1 Like

I had the same issue

I believe that the only solution is the following
you will need first to find the reverse XYZ euler information,
as there currently no rotation vector node (it still needs to be converted from cycles)
you will need to use quaternion to do this, here’s a XYZ euler to quaternion and quaternion to euler nodegroup example

after that you can find the reverse XYZ by doing this

Unfortunately this translate node don’t work with XYZ euler, so you will need to convert your angle to a direction, which can be done like this

And it’s working

Easy right?

Here’s the file
https://pasteall.org/blend/f1db32d546b44b2e97e7e2138d808d1d

5 Likes

i guess this might be very obvious, but when i take a plane and instance cubes on it and i want to instance a second object but only where theres space. Shoud i use Attribute Math using the ID Attribute?

Of course ! could do this with my eyes closed and a one-button mouse

Thanks for the reference, this is greatly helpful !

1 Like

I understood that better way to use array modifier on single vertex in this case…

Joke aside, i really wish we have more vector nodes
I’m quite jealous when i see these from cycles
as they would be even more useful for geometry node (duh)

I’m still confused how we can rotate a texture.

I guess my quaternion set up can help.
i also did a quaternion multiplication node available above

3 Likes

I have an Attribute Vector Rotate node which can be used to rotate mapping coordinates :sunglasses:

giphy (1)

I would definitely like to see a native one though because at the moment the attribute search menu gets a bit full:
image

5 Likes