7
$\begingroup$

While testing a change to an add-on that automatically creates node groups I noticed that the links in the group in the Geometry Node Editor window were dashed instead of solid. It seems to be related to the input group - so that the links proliferate through the tree - as they revert back to being continuous when not linked to the Node Group Input node as demonstrated in this animated image :

animated showing dashed lines

Iinitially thought I'd managed to manually create the node group without having the same problem but on re-trying it does seem to occur with manually created groups (so perhaps it's not my code after all!). Presumably, this behaviour is intentional and indicating something.

The nodes still seem to work as expected and produce the same output. What do these dashed links indicate? I haven't spotted the same happening in the Shader or Compositor node editor windows so maybe this is Geometry Node related only.

Note that this was on Blender version 3.00 (I know - it's an unfinished development release... perhaps this is just a new feature...?)

$\endgroup$

3 Answers 3

6
$\begingroup$

This is something new for 3.00 as of change T91563 and the Release Notes report that

Dashed lines are used to represent the flow of functions while data-flow node links look the same as before

The feature is meant to support the field rewrite of Geometry Nodes.

This has been a very controversial choice and there is massive user feedback on devtalk, but it is unlikely that this will change.

$\endgroup$
2
  • $\begingroup$ Thanks @Marty - that’s really helpful info. I can see why highlighting this might be useful and have noticed that if you hover over the ‘data’ sockets you get a display of the value at that point, which is quite helpful when you know about it. I do think the choice of dashed line is a bad one though - it gives the wrong impression as I thing the ‘function’ dataflow should be highlighted as somehow stronger since there is more content, rather than weaker as it seems with dashed lines. Different colours would have been sufficient (blue/green, blue/cyan, green/yellow or something like that). $\endgroup$ Oct 7, 2021 at 22:15
  • 1
    $\begingroup$ The most common complaint on Devtalk is precisely what you said, so there's some hope that this will change in future. Of course, the problem with using colors is that they introduce their own set of readability issues, especially for the color blind. (The principle cause of problems is solutions.) $\endgroup$ Oct 7, 2021 at 22:17
7
$\begingroup$

It seems to be an early attempt to distinguish function flow from data flow.

Quoting the relevant developer task:

The "data flow" is evaluated at every single node. A user can inspect the output sockets of those nodes and have a glimpse at their values.

The "function flow" (nodes) however is only evaluated in the geometry nodes. The noodles are not transporting data in the same sense of the "data flow". All that can be inspected are the attributes the functions depend on.

The project seems to be abandoned now, or at least stagnant

$\endgroup$
4
  • 1
    $\begingroup$ Thanks @Duarte - that’s really helpful info. IMO the dashed line is the wrong and confusing choice for this but I can see why it’s useful to distinguish them - and do like the new hover-over display of the data at a socket. Different colours would probably be clearer, less confusing and easier to implement. Hope you don’t mind me marking Marty’s answer as accepted - the two are very equal and so I chose based on who’d gain the most from the reputation points! :-) $\endgroup$ Oct 7, 2021 at 22:21
  • 1
    $\begingroup$ No problem, seems fair. From my superficial understanding it was quite a controversial change it might not be kept in the long run $\endgroup$ Oct 7, 2021 at 23:52
  • $\begingroup$ I noticed in the new 3.00 build the link lines take on the colour of the socket throughout all the node editors. Must say I like the updated node editors. $\endgroup$ Dec 3, 2021 at 23:55
  • $\begingroup$ Thanks for the reminder almost forgot to download it, gotta give it a try, haven't really played with 3.0 yet $\endgroup$ Dec 4, 2021 at 0:03
3
$\begingroup$

What do these dashed links indicate?

Difference between plain and dashed links

The simple answer is: Plain lines are used for links returning constant values and dashed lines for links returning variable values:

enter image description here

Unfortunately the documentation introduces fancy historical concepts "field" and "function flow" which today (version 3.1) add nothing for the learner but blur everything.

In your case

You had a dashed line between your two Add nodes because your group output was expecting a variable value, so the inputs of the second Add were expected to be variable too, and similarly the inputs of the first Add.

As soon as you disconnect the first Add inputs, this node can only provide a result based on the preset values 0.5 and 0.5, this result is a constant (1.0). Hence the link between the two nodes now depicts a constant value link.

Note when only one input is disconnected, the output can still be variable, and the link is still a dashed one.


Details

In the geometry node editor a link between two nodes, whatever its nature, is the visual depiction of method calls between node objects (in the object-oriented programming sense) in the underlying program.

When connecting two nodes, we actually instruct the caller node (the one with the input) to call a method of the callee node (the one with the output) to get a value. The call may or may not require additional information, this is what the plain/dashed line depicts:

  • Constant value: Each time a value is needed by the caller, it is provided the same value by callee. This requires no additional information from the caller.

  • Variable value: Each time a value is needed by the caller, the caller provides one or more parameters to the callee. The callee computes a value based on the parameters (using some internal function indeed):

    enter image description here

Interest of a variable value

The interest for a variable value is to be compatible with nodes which process multiple elements (vertices, faces, instances, ...) in a sequential way. Such node is able to process each element differently as long as its inputs are able to provide different values, one value for each processed element.

Example: Individual scale for each instance

E.g. the Instance On Points node is used to create instances of some secondary object for each vertex of the main object. This node doesn't process all "points" (vertices) simultaneously, the node starts a loop and processes one vertex at a time during each iteration of the loop:

  • It requests the geometry of the secondary object to a provider (e.g. a UV Sphere node). It also see if this newly created instance should be adjusted. For instance it looks for an individual scale factor on the Scale input:

  • If the Scale input is connected to a scale provider, it calls the provider method associated with the connected provider output. If the provider is able to deliver a variable value, the node provides a parameter in the call: An incremental index, therefore different for each call.

  • The provider node method computes a variable value based on the parameter provided in the call, and returns this specific value.

  • The caller node uses this specific value to scale the specific instance.

  • The next vertex is processed in a new iteration of the loop until all vertices have been processed. The caller node job is then done but will be restarted whenever one of its inputs is updated, including when only one of a variable value input is updated (this monitoring task is part of the node event system).

Documentation

This notion of call is essential to understand the difference between constant and variable value. It's what the documentation tries painfully to describe referring to esoteric wording "field" and "function flow" and plenty of arrows suggesting something is flowing between nodes.

enter image description here

This "flow" just corresponds to the calls and the returned values.

It is easier to understand when simply stated this way: Links are calls, plain links are associated with parameter-less calls and constant values, dashed links are associated with parametrized calls and variable values.

$\endgroup$
1
  • 2
    $\begingroup$ Excellent explanation in everyday language!! Thanks to your clear explanation and the simple examples I got it all right!, without any fancy confusing words. BRAVO AND THANK YOU SO MUCH $\endgroup$ Nov 27, 2022 at 18:49

You must log in to answer this question.

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