Geometry Nodes

Which is why i mentioned impostors…

This ones a pretty old example. I’m sure there are better implementations around these days. Not to mention possibly some toolkits able to auto generate them at least that good.

1 Like

For scene layout and previs purposes especially it would be perfectly fine. And for distant instances it would look way better than any ‘normal’ LOD.

Can someone explain how to use that new Rotate Points node and what it’s for? I thought maybe it could be used to align objects to the surface, but there’s no way get the surface normal as an attribute.

1 Like

How can I get the actual (joined) mesh out of the geometry nodes point cloud, so I can export it as a mesh to a game engine? It is not possible to apply the modifier, nor convert to a mesh. With ParticleInstance modifier I just do Alt C -> Convert to Mesh. Thanks

there’s nothing inherently game-centric about the concept, its’ just a performance measure. it does require baking out imposter sheets that can be mapped to view angles, but theoretically this could all be handled ‘under the hood’ and the user doesn’t even necessarily need to know about it, similar to shadow maps. Speaking of which, up until very recently shadow maps were also considered a game-engine feature and ignored in DCC applications, but now we have eevee and the rest of the industry is rushing to catch up.

1 Like

How can I get the actual (joined) mesh out of the geometry nodes point cloud, so I can export it as a mesh to a game engine?

Unfortunately not possible yet.

Thank you, do you have idea whether it will be possible in 2.92 stable release?

do you have idea whether it will be possible in 2.92 stable release?

Don’t know really, but maybe @HooglyBoogly could shed some light, I’m interested in this feature as well. It’d be actually enough for me to have at least access to generated points and their location/rotation/scale via API.

1 Like

I’m honestly not sure. It does seem like a very important feature, and it doesn’t seem too hard to do. Unfortunately the last week of Bcon2 (this week) is a bug sprint week, which means it’s hard to justify working on something like that when I’m supposed to be fixing bugs. We’ll see.

2 Likes

D10059 Geometry Nodes: Make instances real when applying the modifier

Hopefully this will do the trick? If anyone builds Blender and wants to test this, that would be helpful.

5 Likes

Just build it and it seems to work very naturally (meaning just as you’d expect). I like that the created instances directly become instances. :slight_smile:

While I was at it, I also build the Attribute Vector Math patch and I’m loving it! Good bye Vertex Weight modifier for (simple) distance based effects! :stuck_out_tongue:

I assume the Attribute Math node will get some more operations from the regular math node, as well?

I also found my new favorite feature of geometry nodes: storing the vertex position as vertex colors and using those as coordinates for the shader nodes. Means I can use 3D procedural textures that deform with the mesh - no UV unwrapping or dealing with seams!

6 Likes

I also found my new favorite feature of geometry nodes: storing the vertex position as vertex colors and using those as coordinates for the shader nodes. Means I can use 3D procedural textures that deform with the mesh - no UV unwrapping or dealing with seams!

This sounds very interesting, can you please post a screenshot of your node setup for this?

1 Like

Wait, can you now read custom attributes from geometry nodes in a shader ?

The setup itself is super simple. And after trying some different things I found out, that you don’t even need the vertex colors to store the coordinates. You can access (some of) the attributes directly from the shader! (@statix)
Here is a simple demo that is deforming the mesh after storing the vertex position in an attribute:

Some things I noticed:

  1. Passing the attribute like this only seems to work with the Attribute Mix node. Trying the same/similar setups with the Attribute Vector Math node or trying to initialize the attribute as Vector type first using the Attribute Fill node just gives you (0, 0, 0)/black for all coordinates in the shader.
  2. The Attribute is clamped when accessing it through the shader (- this seems to be a limitation of the shader rather than the geometry nodes?)
    So you need to remap the coordinates manually to map them from (0, 0, 0) to (1, 1, 1) over your entire mesh. This can be done using some more Attribute Mix Nodes or by scaling the mesh and moving the object origin.

Here is the setup with the default cube. The subdivision modifier is only there to help evening the interpolation of the vertex colors.

Default Cube without any mapping:

Default cube with mapping setup inside Geometry Nodes:

All in all pretty awesome! :slight_smile:

6 Likes

Thank you! Currently we are using ParticleInstance modifier to populate the vegetation assets over our (large) game-scenery and I find really convenient to get the single merged mesh by simple Convert to Mesh.
I will test your patch, I believe it will do the job as well, I just think getting a single mesh out of the Geometry Nodes should be an option as well, especially for scenarios with large amount of instances.

This is the demo of the simple joining procedure I would love to see with G. Nodes (something similar):

I think this might require some more thinking about how we deal with instances inside of the node tree.

One idea we’ve had floating around for a while is some sort of “Make Instances Real” node that could do the instancing to combine all instances of a certain geometry component into a single item. Or maybe we want to make “instances” simply an implementation detail in the node tree. Personally I’d lean to the former, thought it would probably require some changes to the way the instancing system works.

1 Like

thanks @lone_noel that is very interesting. Have you managed to find a way to transfer color or vertex color data to point instance meshes, so that a shader can use this data? So that you could, for instance, randomise colors via geometry nodes or control a color ramp based on the distance to an object?

2 Likes

Wow, is this really as groundbreaking as it looks?

Something I could not get to work is “recursive” scattering points on instanced objects. I assume this is a limitation, I think there’s something in the documentation about that.

Is there any hope to get that in the future? I’d love to have one node group to place houses on some landsape, than another one to place greebles (balconies, air conditioning boxes, antennas …) on the houses, while having it all be adjustable.

Looping functionality will need to be introduced for such a thing. You could in such a case add a node setup that scatters blockout geometry, refine it, and a for loop to work over each connected piece to generate the final housing structure on each isolated building.