Fractal Explorer

by chaos nuggets in Scripts and Addons

What does it do?

The Fractal Explorer allows you to easily make 3D fractals using any base-object. 

How does it do it?

Fractal explorer makes a nested tree-like structure of copies. The copies are parented to previous copies, and constrained to inherit the transforms. The first 'generation' of the tree is free to manipulate. Any change in the location/rotation/scale of the first-generation copies affects the whole tree. So the shape is not set by the plugin. You decide what the structure looks like using blender's normal rotate, translate, and scale tools. Check out the Documentation for a more detailed explanation.

What is it good for?

If you like playing around with fractal geometry, this is an excellent tool. No math is required, and the range of fractal forms you can express is huge. This is a good tool for modeling natural forms that are fractal-like: trees, corals, veins, clouds. You can also animate the fractals!

Fractal Explorer vs. Array Modifier

Blender's array modifier can easily make spiral fractals. Simply apply an array modifier and input an empty in the Object Offset field. This is a wonderful tool for making spiral-fractals, but it cannot express branching or more complex fractals. This is because the array modifier can only create a chain of copies. Fractal Explorer creates a branching tree of copies. Using this tool you can specify the depth of the tree, the geometry (using bender's native transformation tools), and how many branches per copy.

What are the limitations?

This is not a modifier! This means that there are some quirks, and also some advantages.

Modifiers can be used, but you have to be careful

The main one is that if you apply a modifier to the base object after the tree has been generated, it will NOT apply to all the copies! However, I use this tool too, so I found a workflow to get the desired behavior. See the Documentation for details. 

No End Cap Geometry

The array modifier has a Start Cap and End Cap field, which lets you apply geometry to the first and final copy in the array. This sort of functionality does not exist for this plugin. Luckily Blender's 'F' command is quite intelligent and can close up holes. This can be used to effectively create caps on the ends of a fractal structure.

Don't go to deep!

Blender/Computers can handle only so much data. So if you make a fractal with, say, 5 branches, and 10 levels, thats 1 + 5^0 + 5^1 +...+ 5^10 = 12,207,031 (geometric series). That's alot of copies and constraints to keep track of, so Blender is going to get slow :(  That is why I have a "grow tree" and a "prune tree" button. You can get the shape you like with a few levels, and then crank it up for the final render or export.

How to Install

File > User Preferences > Add-Ons > install from file ... find file > activate by clicking check-box

  1. In blender, go to File > User Preferences. 
  2. In the window that opens, click the Add-On tab. At the bottom of the add-on tab, click “install from file.”
  3. Select the FractalExplorer.zip file that you downloaded, and then press enter to accept the selection. You do not need to unzip the file.
  4. Search “fractal explorer” in the search bar of the add-on tab, or select the ‘user’ category. You should see the Object: Fractal Explorer add-on. Make sure the small box is checked. This enables the add-on. 
  5. To verify it is enabled, check the 3D View > Toolshelf > Tools. There should be a new section titled "Fractal."

Location

3D View > Toolshelf (t) > Tools > Fractal

Basic Use

1) Generate a "tree."

Note: This step does not create a tree that you can see in the 3D view. In fact it will look like nothing happened. Check the outliner. That is where you will see the "tree" structure that I am referring to.

  1. Select the object that serves as the 'base' of the fractal. This will get copied over and over again. Any blender object will work including: cameras, lamps, metaballs, curves, meshes.
  2. Click or run the Generate Fractal  command. 
  3. In the operator panel choose the Number of Branches and the Initial Depth. I suggest leaving the initial depth low. This will make the next step easier.

2) Move the first copies to set the shape of the fractal

  1. Expand the base-object node in the Outliner. (Click the little plus icon)Notice that the number of copies nested inside of the base-object (Cube) is the same as the Number of Branches parameter you set. Similarly, if you expand one of the copies, here Cube.001, and all of its copies, you will see that the number of nested levels equals the Initial Depth.
  2. Move the first set of copies (Cube.001 and Cube.002) however you wish. You can rotate, translate and scale as you would with any blender object. This sets the shape of the fractal.

3) Change the depth of the fractal

To add or subtract levels in the hierarchy of copies:

  1. Select any copy in the fractal
  2. Click Grow Fractal  or Prune Fractal  to increase or decrease the depth, respectively.


Tip: There will be a ton of blue dashed lines showing constraint relationships. To hide these, uncheck 3D View > Properites (N) > Display > Relationship Lines.


Post-Processing

There are many ways to do stuff in blender. Here are some ways I go about doing post-processing. I followed these steps to make the banner image for this plugin.

Join all of the copies into a single mesh object:

  1. Select the entire fractal by selecting the base-object, then Shift-G > Children.  Make sure the original object is still selected.
  2. Ctrl-J to join into a single mesh

For more ways to select parts of the fractal, go here.

Make a modifier apply to all copies in the fractal:

  1.  Apply all desired modifiers to the base-object before running Generate Fractal.
  2. To change modifier settings, select all of the objects. Then Alt-Click when you change a modifier setting. The change will apply to all of the modifiers.


How it Works in Detail

If you run into problems my best suggestion is to understand what the Generate Fractal tool actually does. The best documentation for this is the code itself! Open up the FractalExplorer.zip file and have a look at __init__.py, which sets up the buttons, and makeTree.py

Generate Fractal creates a bunch of copies of the active object. Each copy has a parent, which is Blender's way of saying the copy is in the local coordinate system of the parent. So if you move the parent around, the 'child' follows it. Same goes for rotation and scale. 

The second bit is the tricky trick that makes the fractal do the fractal. Each child inherits the transforms (rot/loc/scale) of either its parent or its "aunt/uncle." So lets say parent A and parent B are "siblings." Suppose parent A has two children, called A' and B'. The plugin sets up these children so that one, lets say A', inherits the transform of parent A. The other child B' would inherit the transform of parent B. This means that when parent A scales, so will child A' relative to parent A. Similarly, when parent B scales, so will child B' relative to parent B. 

You can see that the transforms are being linked by clicking on one of the second-generation copies (use the outliner). Go to Properties > Constraints (little chain icon). You will see a constraint called "copy transforms." Try turning the constraint off (click the eye icon).

How do I select just the final "generation" of the fractal?

Select the original base object. Press "]" to move deeper in the fractal. Press "[" to move shallower in the fractal.

What is a fractal?

My understanding is that a fractal is a set or shape that has stays the same under scaling. A circle stays the same under rotation, but if you zoom infinitely close to a boundary of the circle, it looks like a line. A fractal, on the other hand, when zoomed into, looks the same or similar. The Fractal Geometry of Nature has lots of technical details. The Computational Beauty of Nature has a somewhat more accessible section on fractals.

There are a ton of dashed-blue lines between copies! How do I make them go away?

These are relationship lines showing parent/child and constraints. Go to 3DView > View > Properties (N) > Display and uncheck Relationship Lines

I clicked "Generate Fractal" and nothing happened!

Generate Fractal makes a bunch of copies but they are all in the same place. So, initially, you don't see any difference in the 3D view. Check out the Outliner. Once you move the first generation copies you will see lots of structure.

Item Rating

This item has an average rating of 5 from 1 ratings by the community.

100%
0%
0%
0%
0%
  • tcwik 5 months ago

    Great tool, and work with GroupPro.

Purchase this item to leave a review!