It does, but currently the geometry data type cannot be used as a field.
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.
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)
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)?
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
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.
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.
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
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.