I am trying to model arrows arranged in spiral manner. The effect I want to achieve is similar to the one in the picture:

enter image description here

Essentially, I want to have the arrows rotate and tilt inwards in a radial fashion.

I have tried to recreate this using a curve spiral and create a particle system consisting of the arrows, but I can't control the rotations as I want within the particle system. What would be the best method to achieve this?


  • 1
    $\begingroup$ Would it be ok to use add ons like animation nodes? $\endgroup$ – bstnhnsl Nov 5 '20 at 10:22
  • $\begingroup$ @bstnhnsl I have heard about animation nodes, and if a beginner like me can follow along then why not! $\endgroup$ – koroma Nov 5 '20 at 10:44
  • $\begingroup$ Ok. That should be fairly easy (and thus fairly easy to follow), give me a minute. Your example image isn’t a spiral though. $\endgroup$ – bstnhnsl Nov 5 '20 at 11:15
  • 1
    $\begingroup$ I appreciate it! You are right, the image is not spiral. If I know how to do it for circular paths then I will try and extend it to spiral ones. Thanks for your time. $\endgroup$ – koroma Nov 5 '20 at 11:40

This Answer uses the add-on Animation Nodes. I’m not gonna describe how to download and install it. That’s easily googleable.

We start by adding a Distribute Matrices node and set it to spiral. That gives us an easy to control list of points on a spiral. You can search for specific nodes by pressing CTRL + A. Use SHIFT + A to see a sorted list of all available nodes.

enter image description here We don't have any geometry yet, so I added a 3D viewer node to see the result in the viewport.

We now need to add our arrow object to the Scene. I just added a simple cone, a more arrow-like shape will also work (it doesn't really matter). To use the same values as I, make sure your arrow points up (in +z direction).


We now need the following nodes:

Object Instancer Here we can select our arrow object. Connect the Vectors output from the spiral node to the instances input of the Instanced. AN automatically creates a Get Length node for us. We can now control the instances with the amount-slider of the spiral node.

Compose Matrix We take the positions of each point of the Spline for now, compose Matrices and translate our objects with these.

Object Matrix Output

enter image description here

Tangent Rotation

New Nodes:

Spline From Points We don't actually draw the spline as an object. But now that we have the spline, we have simple access to the tangents and can even distribute our objects more evenly.

Evaluate Spline Use uniform to distribute the arrows evenly or resolution, to use the initial points. Make sure to click the little arrow next to the drop down menu so the node works on multiple points instead of a single value. Connect the get length node to the amount input.

Connect the locations output to the translation input of the compose matrix node and the tangent output via a Direction to Rotation node to the rotations input.

enter image description here

Rotation Falloff

New Nodes:

Point Distance Falloff Creates a falloff for the rotation in relation to the origin 0/0/0. You can controll the size and width of the falloff here.

Evaluate Falloff This checks, how much every arrow is affected by the falloff depending on its location. Make sure to check the list icon.

Invert Falloff

Float Math Multiply the Strength of the falloff with an angle of 90deg.

Combine Euler Set to degrees

Euler Math combine the tangent rotation with the falloff rotation.

enter image description here

That's it. You can play arround with the values in the Distribute Matrices and the Point Distance Falloff Nodes to finetune the result you need.


Concentric circles

Creating the same effect with concentric circles instead of a spiral is a bit more complicated. The spiral redistribute note in combination with the evaluate spline node does a lot of work for us: creates the vector list, handles the amount and the spacing of our objects, delivers useable tangents.

The only node that has some kind of built in concentric circle function is the circle mesh node. And with it we can create something like this:

enter image description here

A better apporoach is to create a loop to create individual circle splines. Its a bit more work, but not that bad. I'll just screenshot my nodetree for now. I'll add some description later if you have problems understanding whats goning on.

The Loop: enter image description here

The loop addet to our old node tree: enter image description here

The final result: enter image description here

  • 1
    $\begingroup$ Terrific answer, IMO. $\endgroup$ – Robin Betts Nov 5 '20 at 15:07
  • 1
    $\begingroup$ Fantastic answer. Is possible to create the same thing but for concentric circles instead of a spiral? I have tried adding a circle, but there are no options to add more circles. I believe this can be done with 'replicate spline', but I am not able to place the nodes correctly. $\endgroup$ – hat Nov 6 '20 at 0:08
  • 1
    $\begingroup$ There are a few different solutions. If I have some spare time later, I’ll add that to my answer. $\endgroup$ – bstnhnsl Nov 6 '20 at 10:21
  • 1
    $\begingroup$ @hat I edited my answer. Let me know if you need more detailed explanation. $\endgroup$ – bstnhnsl Nov 9 '20 at 11:00
  • 1
    $\begingroup$ @bstnhnsl really appreciated! This is what I was aiming to achieve. $\endgroup$ – hat Nov 11 '20 at 7:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.