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.
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).
Distribution
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
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.
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.
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.
Edit
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:
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:
The loop addet to our old node tree:
The final result: