Geometry Nodes

Alright, I can force the redraw with a bpy.context.active_object.update_tag(). More information with the ticket share by @HooglyBoogly.

1 Like

Hello guys. Is there any news or current plans on making any kind of viewport visualization of the geometry nodes node tree? For instance, something akin to weight painting.

1 Like

Do you mean for attributes? That could be nice.

It would be nice if float attributes could be painted with weight painting as well.

I donā€™t know. I mean attributes but pretty much everything to be honest in order to make our lives easier.

For instance:

  • vertex/faces/edges index numbers;
  • visualize map range/color ramp values and its influences on the geometries/instances;
  • preview just a part of the node tree;
  • a point display system on curves (for instance) without the need to use dummy primitives and Instancers nodes;

Sometimes is real hard to work without proper visual feedback. Just imagine weight painting using only numbers and the viewport resulted mesh but with no color gradients.

2 Likes

I like your points about visual feedback. The viewer node is a start, but something like an overlay node, where you could somehow enable ā†’ show normals/indices/tangentsā€¦ for different domains like in the edit mode overlay options. that would be very helpful.

The experience of using the String to Curve node in Geometry Nodes feels broken.

It is very difficult to get instance data (position, index, id, scale, rotation) into text strings. Itā€™s even hard to pass a random number into a text string.

There is so much potential for making amazing text-based procedural work in geometry nodes, but the limitations of the String to Curve node make it nearly impossible. I realize this has to do with the fact that it is field data, but this kind of thing works with other instance-based operations, so I would imagine it is possible here.

If instance data (and random/noise data) could be easily passed into a String to Curve instance it would be an incredible tool for things like future UI and motion graphics work.

Thanks for listening to my rant.

1 Like

Working on a long-term project, trying Geometry nodes for scattering stylized character fur. Overall potential is impressive, but Iā€™ve Stumbled upon inability to get polygon orientation for scattering. I guess a UV tangent input would come in handy.
Any clues on if it could be implemented in neari-ish future would help with some decisionmaking.
Also - if anyone has any hacks on how to calculate one :slight_smile:

I believe the rotation output of the distribution on faces node is what you are looking for.

1 Like

Thanks. Been there, done that. Unfortunately rotation is calculated based purely on normals/object Z. Deform the geometry and those will change. The correct term probably is ā€œspinā€. That is - the instances will maintain rotation to normals, but the spin around normal is controlled by tangent to Z. To lock spin to geometry one needs a tangent to a property of the face (UV usually).
But it seems the DIY solution is somewhat possible: Extra Nodes for GeometryNodes - #2 by Strike_Digital if the required data can be accessed from Python.

1 Like

Its possible to calculated tangent that points to face edge and use that to lock spin, here is setup:

5 Likes

You could have an array of objects (empties), weight them according to distance and orient the instances according to the resulting vector. I am working on the same problem as you currently (feathers on a bird), and am looking for a better solution as well.

3 Likes

How do i create UVs that can be used for weight painting vertex groups? The best i could find was some rumours about a ā€œbounding box trickā€, but not more. Is it possible to draw maps on vertices and use them in GN, without using an unwrapped primitive mesh?

Try use transfer by nearest

?
If there is only a GN mesh primitive grid? Transfer from what then? Sorry if my questions sounds silly. I wouldnā€™t ask if it was clear enough.
My situation: I have a terrain asset without UVs and want to weight paint a displacemant for a river bed. And since i want to be able to share the asset on a single-object basis, i canā€™t just provide an additional default plane just to borrow the UVs from it.

Doesnā€™t workā€¦

If you are using UV Iā€™m not sure if it should be a scalar
Also, it looks like not correct work, which is strange
but I could misunderstand what you are doing

In theory, you simply donā€™t have a general analytical method to transfer attributes correctly unless you know that the geometry is identical ( by index ) or at least similar to (by nearest)

I donā€™t really understand what you mean, but it seems to me you want to weight paint in point generated by GN and then use that vertex groups as input for the same GN.

Which is of course impossible, so thatā€™s probably not what you mean ;-). You canā€™t weight paint on the output points of GN without first applying the modifier. If that were possible every chaneg to the GN tree would wipe your painting work.

A question: Why was the Edge Angle slider removed from Edge Split (now called Split Edges) node in 3.0?

Itā€™s now part of a more general node called ā€œEdge Angleā€. That means you can use the edge angle wherever you want, not just as part of the split edges node.

2 Likes

Does a node that would recalculate/flip normals exist? Or is there a way to manipulate the attributes to get that?

In 3.1, there is a flip faces node that lets you flip the normals of a face. As for recalculation, it may be possible to use raycast and select only faces that are pointing in the wrong direction. That would be extremely complicated though.

I think the long term solution would be to add a ā€œbackwardsā€ boolean output to the face normal node, and you could use that to flip only faces that are backwards after an automated calculation.

1 Like