Geometry Nodes in Blender 3.0 - Status Update

It does, but currently the geometry data type cannot be used as a field.

3 Likes

Hi, one thing I keep noticing (when working with nodes) is that for some reason, there is no support for using the inputs of the transform node with fields. Without that support, it is not straightforward to rotate and scale parts of a mesh like you can already do with translation (using the set position node).

We have rotation and scaling nodes for instances (that support fields), but we don’t have the same for general geometry (so there is an inconsistency). I thought I remember seeing patch tracker entries that add these, but they never went anywhere.

2 Likes

I made a nodegroup for that

There’s a lot of useful Vector nodes from shaders that could be useful in Geonode too
I think that a “Node Uniformity” dev curfew would be nice. It’s weird that some node are exclusive to some nodal editors (ex Compositor got some cool color nodes that could be used elsewhere)

5 Likes

So how will it be possible to have curves with multiple materials (where each strand can have a different material)? That is possible in Blender right now, the materials are stored in the curve data (per strand), not the object data.

Will the bevel / extrude nodes have a Material socket? How will you select which material should go onto which curve strand? What if you want to combine bevel + extrude?

These are not just hypothetical questions
 there are a lot of use cases for having multiple materials on the same curve (this is used by Hair Tool, for example).

No worries, geonodes handles materials.
https://wiki.blender.org/wiki/Reference/Release_Notes/3.0/Nodes_Physics#Materials

Yes it handles materials for meshes
 but we’re talking about curves. What if I want to create a curve in geometry nodes, assign materials to it, assign extrude / bevel to it, then apply it so the end result is a curve object (not a mesh object)?

There are a lot of use cases for generating curve objects instead of mesh objects, because curve objects are much easier to edit by hand, they’re non-destructive. And with the upcoming snapshot / freeze node, that will become even more important (I might want to generate some curves, snapshot them so they can be edited by hand, and then do more transformations on them).

I think geometry nodes should support every aspect of curves which are supported in native Blender. Otherwise it will limit the usefulness of curves, curve aren’t only raw points, they’re much more useful than just that.

Curves can’t have materials, they’re just curves they can’t be rendered. When you bevel your curve it becomes a mesh, and that’s what’s getting the materials

That’s incorrect, as I said, the materials are stored in the curve data itself, not the object. You can test this yourself by assigning multiple materials to the same curve object. So how will that be possible with geometry nodes?

If I want to generate meshes, then everything is fine, I use Curve to mesh and then Set material, but what if I want to generate a curve object that has multiple materials (which is possible outside of geometry nodes right now)?

2 Likes

I’m not sure what you are aiming for. All I am saying is curves don’t render, and linking materials to curve data in Blender only affects the resulting mesh. Of course this would be different if we had parametric surfaces made from curves, but right now Blender is really not good at this. Maybe tell us more about what you’re trying to do ?

As I said, I’m trying to create a curve object. The same sort of object that is created when you do Add → Curve → Bezier (or similar).

This is not a mesh, it is a curve, so it can be edited as a curve, it has all the usual curve options (Resolution, Bevel, Extrude, Twist Method, etc.)

So using Curve to mesh does not work, since it generates a mesh object, not a curve object.

Do you mean when you apply the modifier?

Yes. Though it could also happen with the snapshot / freeze node as well.

When the snapshot gets here we’ll see how it behaves, but probably you will enter in the corresponding mode for the internal defined type.

For the apply modifier, I have to test what does it do when you apply it, naturally if the final result is a curve it should convert the data type to curve, however I think that’s under development yet, so it’s not that what you are asking is not reasonable, is that it’s more complicated than what it looks.

An example: what happens when you have a curve and a geometry in the output node together and the you apply the modifier

That’s completely fair, I don’t expect the MVP to have every feature. I’m just mentioning a use case which should be kept in mind for future versions of Blender.

I don’t think geometry nodes should be only for meshes, I think it should encompass all of Blender’s object types, like curve, nurbs, metaball, text, volume, lattice, armature, etc. But the impression I got is that those other types are now second-class citizens and that everything is now about meshes.

I think that’s the idea, but @jacqueslucke or @HooglyBoogly can help clarifying that.

But they can be considered “second class” since something has to come “first” hehehe it’s a matter of time IMHO :slight_smile:

I’ll try to clean up my current experimentation with GN + curves a bit to demonstrate what Pauan means, and post it here. Because Pauan is IMHO right. Currently GN in some cases ignores the materials that are attached to the curve data in a way which feels very counterintuitive.

I generate shapes based on input curves, and I’d really like my GN tree to use the material that was on the input curve for it’s result. That currently only works if you go to the hassle of

  • select curve object
  • create material (so far so good, I’d expect to be done here)
  • click link dropdown (isn’t it strange by the way that the link dropdown only appears once you have a material attached to the objectdata, but that aside).
  • link material to object as well.
1 Like

Apologies, I do understand the problem with the following clarifications. I tried to capture an attribute using material selection to re-use it on the resulting mesh, but it seems this node doesn’t work on splines, because the attribute appears empty on inspection.

On the contrary, geometry nodes is all about doing the opposite. That’s why the socket type is “geometry”, which can contain any and all geometry types at the same time. Data types are abstracted with attributes, so many nodes can work on any geometry type with a position attribute, for example. That was never possible before, and it will only happen more in the future.

If it looks like curves are “second-class” in geometry nodes, just compare the curve and mesh categories in the add menu.

This is correct. The list of materials in the curve object materials tab only applies to the evaluated mesh. Currently materials on a curve are not used in geometry nodes, because, like @Hadriscus says, data without a surface cannot really have materials. That may change in the future though, I’m not sure.

6 Likes

Hi Hans, -even though curves can’t render materials they can still technically have one assigned right ? this is what Pauan was asking. If passing through geonodes destroys that assignment, is there a way to restore it ?

I tried something in my previous post (capturing boolean attribute with material selection node and re-applying it later on the beveled curve) but it didn’t work. I feel like it should work
 Or is it more like a known limitation ?
(In light of your explanations I assume the captured attribute is empty because the curve loses material assignments as soon as they enter geonodes)

sorry for the ninja edit

2 Likes

That’s what I meant, curves in geometry nodes don’t store a list of materials. Personally I think we should find a more general way to make passing a list of materials possible, rather than adding a list of materials to a geometry type that can’t directly use them.

3 Likes