Hey! I think there’s a couple options; can you describe what kind of patterns are most important on the arrows? Like, traversing the outlines? Lighting each individually? Tail to tip? How would you like to coordinate the rings with the arrows, if at all?
Some of the 3D line generation map code we’ve seen here might be a good place to start:
So the biggest problem I see is that those arrows are freely spinning.
Imagine they were pasted onto a tin can that descended from the ring… you’ll essentially have a cylinder with a pattern of arrows on it, right?
Treat it that way. It’ll look right.
So your map is:
Rings at top of cylinder
Top of arrows further down cylinder, spaced around the cylinder
Sides of arrows
Bottoms of arrows going to the point
You could (and likely easier) map each arrow fully around the cylinder, rotating around the cylinder based on the “center point” of each arrow. That will cause a slight curve in the map, but I suspect you won’t notice that in real life
Define the cylinder radius
Map the rings at the top
Define an arrow mapper function, given an xyz location
Map each arrow around the cylinder, at a given xyz location.
If you want to do your arrow outline, then Z will define the top to bottom effect you want.
I would be tempted to map the arrows as if they were folded in half and fixed in position (each side of the arrow would be mirrored) ,with the folded center towards the middle and the arrow barb toward the outside.
With this, imagine a pattern that goes from inside outward, it would hit the ring and the center of the arrow at the same time, and then travel outward from center of the arrow (long the top and tip). You’d still get some action along the circumference of the large ring, but it would be equal/mirrored on the arrows and wouldn’t matter how they were rotated.
Here’s the strategy for how I would implement it:
Use a circle function to draw the ring at a fixed Z height (adapted from the ring example)
Make a function that draws the arrows at a given angle and offset from center (position around the circumference of the large ring), using a few line functions to make each arrow.
Use a for loop to call the arrow function to generate each arrow distributed around the circle.
Yeah, similar to my view except you see it this way:
-| top half of arrow (mirrored)
7 half of arrow (mirrored)
I was picturing flat against the cylinder, imagine them painted on.
Either will work. But I prefer mine because the left and right “sides” of each would have different angles, while in yours, the entire arrow would be in one “angle” entirely. That would be good for lighting up an entire arrow (where angle is X), while in mine, an arrow is between angles A and B.