2
$\begingroup$

Using Blender 3.0, I wanted to use a weight paint(multiplied by a number) for the Radius of a Curve Circle. But when I connect the "grey diamond" to the "gray circle" in the image below... Before the pink connection

... suddenly all the "diamonds" become "circles" and the weight paint input in the modifier tab gets kicked out. Compare the two images. Pay attention to the modifier tab

This doesn't make sense! I know the weight paint is a factor(0 to 1) and the Radius is a float(any number). But they're still both numbers! it should be able to read a factor as a float! Is there any method to make this work? Thank you.

$\endgroup$

1 Answer 1

2
$\begingroup$

As you say, the resultant types at either end of the noodle match, (or can be cast to one another). But there is a distinction between Fields, marked by diamond sockets, and regular data, marked by circular sockets.

Fields are function-calls, returning the results of attribute look-ups and interpolations, and other calculations in the tree, in which the target geometry is a parameter. So a Field, for example, will return a different Position value for every vertex in the target geometry, and interpolate for points in between them.

At the point of creation, a Curve Primitive > Circle, is a single entity. It has only one radius, which is set directly via a variable, not a function-call. The base-radius can be set via a single float in the interface.

If, then, for example, you instance your circle on the points of a grid, all the instances share the creation-data. The data can not be varied per-circle, until the instances are realised. But the circle-instances do each carry their own transform. The instances can be scaled, rotated and translated independently, just as instances can outside GN, in Object Mode.

The blue nodes in this tree show the instances (not the primitive) being scaled, by a function of vertex-weights, when generated per-point of a grid:

enter image description here

Here's the modified grid, showing its vertex-weights, and the result:

enter image description here

The instances do not have the vertex-weights as an attribute themselves. If, say, you want to translate the instances by the grid's vertex-weights, you have to transfer the weights from the grid to the instances, possibly as shown by the green nodes, above. Here the transfer can be made with the Index as key, because at this stage, the instances have the same Index as the vertices they were created on.

enter image description here

$\endgroup$
2
  • $\begingroup$ Thank you very much. It was somehow complicated for a beginner like me but I'm sure it'll help others a lot. Despite this, I understood the instance part which elaborated lots of thing, and I kind of imitated your node arrange and followed on. You solved some problems but created a lot more new incoming questions in my mind( I guess that's how knowledge works). So I might come back for new questions. Thank you $\endgroup$
    – Barbod M
    Commented Dec 18, 2021 at 18:48
  • $\begingroup$ @Barbod you're welcome. Don't think you're alone. I'm finding it quite tough to figure out how and where attributes are captured and transferred myself. It's not very explicit in the interface. $\endgroup$
    – Robin Betts
    Commented Dec 18, 2021 at 18:51

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .