This is an updated and extended version of a Blender Add-On that I made. This version is tested and compatible with Blender version 3.3, version 3.4 and version 3.5.
Here is a list of the Features this add-on is giving you. How they work is explained below.
- Customize the Amount of Points placed in the spiral
- Customize the Angle of the Points they have towards each other
- Customize the size of the spiral
- Scale the instances individually
- Incrementally scale the instances
- Incrementally rotate the instances
- Incrementally position the instances
- Limit all incremental settings to only start from a specific point
- Instance objects from an instance into the spiral
- Randomize the instancing of the objects
- Finetune the randomness using a seed value
- Extrude the spiral so it starts from specific distance from the middle point
- Define the start and end of a wave
- Apply a scaling factor to the section marked as a wave
- Change the rotation to resemble the shape of a lotus (only works with symmetrical instance objects)
The Node works with 3 main attributes that are used to calculate all the input values.
These 3 attributes are the following.
|Index||The number indicating which specific point is being calculated|
|Angle||The rotation value this specific point is having. Calculated by converting the angle to radians and multiplying it with the index.|
|Distance||The distance from the middle point the specific point is having. Calculated by multiplying the square root of the index with the scale and then adding the extrude value|
The position is calculated by sending the angle through both a sine and a cosine and then multiplying both with the distance. These two values are then assigned both the X and Y in a vector value and named the position attribute in the geometry.
The Angle can be entered into the Z value of a vector and plugged directly into the rotation attribute of the Instance on Points node. To control the Lotus Boolean, an Align Euler to Vector node is used.
For the instancing of objects, you have to use a collection. You can however just plug in a collection with a single object inside of it. The amount of objects inside the collection is sent through a Modulo calculation in order to get all the objects instanced one after another. The Amount of objects is also used in a Random Value Integer node. The Randomness seed input is plugged into this node as well to give some slight control over the randomness. The Randomize Instances Input controls a Switch node, switching between the ordered and the random output.
The incremental settings are multiplying the distance with the vector that was inputted into the node. The limiter is being compared to the distance. The Compare node returns value that is either 1 for true or 0 for false. If the limiter is smaller than the distance, it indicates that the incremental setting is supposed to start from this point. The boolean output is multiplied with the limiter input and then subtracted from the distance. The output from that is then used as a multiplication factor for the incremental factor which is then added to the Scale/Rotation/Position.
The wave facter is two Compare nodes results of the distance value being multiplied with each other. The Wave start factor is a Greater Tan or Equal comparision, the Wave end factor is a Less than comparision. These two results are multiplied and the result from that is then multiplied with the wave factor. The final result from that is added to the scale.
Inspirations and Sources
These are some sources and inspiration that I have used for the creation of this Node group.
A Blender Stack Exchange Post detailing how to create a simple Fibonacci Spiral. I decided to copy this script in node form and then add an abundance of features ontop of it.
Archived Versions that are outdated and missing features but are compatible with older versions of Blender.