Geometry Nodes - Use Case: Christmas Tree lights

A use case to help guide GN development by as closely mirroring the user’s desires as possible.

Let’s say that I want to recreate this image, but with colored lights…

The steps I would think of doing are:

  1. Design the individual lights
    1a) Create a base
    1b) Create a glass
  2. Create the wire
    2a) Make a curve
    2b) Put wires along the curve
    2c) Do something so wires have random twist and distance between them.
  3. Attach the bulbs
    3a) Adjust how frequently they occur.
    3b) Adjust how they are rotated - assume that the wires will adjust to look appropriate.
    3c) Change bulbs to have individual colors.
  4. Adjust physical parameters of the wire so it acts appropriately - hopefully having a wire preset for “things like this” - ie stiff-ish tubes that are connected at regular intervals.
  5. Have bulbs blink

The result I would like is a Node setup that lets me easily change the number of bulbs, move the wire around and that Blender would respect the wires and not let them intersect and bulbs would appropriately connect to the wires.

Currently, the language for accomplishing these tasks is not conducive to moving from natural language to a model. Bringing the language and methods of node construction closer to how a non-technical user would go a long way to making GN more approachable.

For example I am surprised that the 1st nodes don’t replicate current modifiers. An Array node would be much more consumable than all of the obscure instancing language

You can do it all now
(even checking for the intersection itself) (partially) (making a simple fractal so that it would be processed as a loop)
Do you want to do it and tell us, or is it a request?

I read the descriptions for all of the nodes and it is not obvious how to put this together.

I am looking for GN to be more straightforward:

  1. By using the same concepts in the modifiers - like Array and taking that further to do circular and hex arrays.
  2. Some of it is language - For instance I would look for a Rotate node, not a Tilt node for rotating around a curve.
  3. Having some nodes that are more sophisticated - like a physics node that you pump the geometry into that gives control over the physics. Or a curve on a path node with controls in the node for how the profile proceeds along the path, instead of having to figure out how to build a complex networks to move, scale and rotate relative to the path curve.
  1. Just make an array with instances. This is called the abstraction layer.
  2. How to rotate - depends on what type of object you are using. As you can see, different types of geometry have different operations.
  3. Physics is not a linear operation. The current nodes target 1 pass, otherwise wait for a loop. There will be no physics in the nodes. As we will in the coming years, in these nodes.
    If you need to prohibit the intersection itself, you can create analytical geometric noise, providing for the absence of the intersection itself.

Hi @modmoderVAAAA,

  1. There doesn’t seem to be an Array GN. If there was one I would assume it would have the same functionality as the Array modifier.
  2. I would assume that an array along a curve uses the direction of the curve as Z+. And from there all of the translations, scales and rotation directions resolve.
  3. Is a wish/desire so that Dev knows it is something users want to do. What it takes to make it happen would need thought and planning.

meant abstract functions. You don’t need to wait for a node from the developers if you can do it now.
As an example, here’s the implementation:
modifier curve

solidify modifier

https://cdn.discordapp.com/attachments/609513157559320586/923942341977456700/Solidify.blend
array

You can do most of what you need right now.