Fractal Architect 5 Help Index
See also: Variation Group Chain Concept
Applies to:FA 5
Composite Multi-Fractals are easy to create. Try them and you will see.
Fractals can now have zero or more final transforms. Earlier versions of Fractal Architect only supported at most 1 final transform.
Final transforms are applied in series.
Composite multi-fractals are fractals built from other pre-existing fractals. There are 5 different categories of multi-fractals:
All FA 5 fractals are now layered fractals. Legacy fractals from earlier versions of Fractal Architect or Apophysis are converted to a single layer fractal.
Layerz are supported everywhere.
You can morph them, splice them, and have sub-flame fractal instances in them.
Two different fractals can be combined using linear interpolation to create a new fractal. The output fractal’s properties are created from an interpolated combination of all of the two source fractals’ properties.
The parent fractals can be layered fractals.
New in FA 5:
Both basic and multi-fractals can be morphed together. Basic fractal morphing with the CrossBreeder has been supported since FA 2.
Layered fractals can be morphed too.
Use the CrossBreeder editor to create them. Drag and drop (or copy/paste) the source fractals onto the crossbreed thumbnails. Set the amount slider.
Here I chose 2 layered fractals as the parents. I opened the CrossBreeder and dropped the parents in the keyframe thumbnail slots.
I dragged the slider until I get a nice morphed fractal.
There are many transform permutations available when cross breeding two basic fractals.
With two layered source fractals, you first choose the layers permutation, then the transform permutations for each of the resulting layers.
The number of normal transforms are equalized by the technique of splitting the transform with the largest weight. The number of final transforms are equalized by adding new “empty – no effect” final transforms.
The number of layers are equalized by splitting the layer with the largest weight.
If one fractal has a transform containing a sub-flame variation and the other fractal does not, the morphed fractal transform will also include that same sub-flame instance.
If both fractals have sub-flame variations, then the resulting sub-flame variation’s fractal will be created by morphing the corresponding 2 parent sub-flame fractals.
Fractal Architect 5 introduces the very powerful ability to capture the differences between 2 fractal keyframes as a Keyframe Delta Segment.
These segments contains a bundle of animations that captures the entire delta between 2 keyframes. Unlike morphing 2 keyframes, these Keyframe Delta Segments exposes all of the keyframe differences as individual property animations.
When used for animation, the keyframe delta segment coupled together with the first keyframe, setting an animation amount of zero, creates a fractal that is identical to the first keyframe. For an animation amount of 1.0, that creates a fractal this is identical to the second keyframe.
If you think about it, this is a new way to do a morph, but with the added advantage that you have access to manipulating the whole bundle of individual property animations.
The Variants editor combined with Lua Tweak scripts can create some new wild fractals from an initial fractal (think of this fractal as the keyframe 1). Think of the variant fractal as keyframe 2.
So with the Variants editor, select one of the variant thumbnails, then click the Copy Animations button. This creates a Keyframe Delta Segment and copies it to the pasteboard. The initial fractal is copied to the pasteboard as well.
The Super Variants editor is a consumer of these special segments and the initial keyframe.
From the Variants editor, you can select one of the variant thumbnails, then click the Super Variants icon button. This opens a new Super Variants window, configured with the Keyframe Delta Segment and the initial fractal from the Variants editor.
Click Roll Dice, which applies random animation amounts, to get a new set of random fractals.
Note that unlike, morphing, super variants will vary the random animation amount for each property in the Delta Segment. So the potential variety of fractals created by the Super Variants editor is much larger than the Cross Breeder.
You can also apply different animation curves to each property animation in the segment. This means you are not locked into the strictly linear ramp curve that morphing uses.
Fractal Architect 5 introduces the ability to splice 2 fractals together to create a new fractal.
The output fractal’s transforms all are created by splicing together the parent fractals’ transforms variations group chains. There are many ways to splice (discussed below).
Splicing exploits the serial behavior of variation group chains.
These Variant Lua scripts create spliced fractals from 2 parent fractals. The parent fractals can have multiple layers or be basic single layer fractals.
Simply choose one of the scripts listed below and use it as a Tweak script.
These scripts all have a script input argument that says what Lua script will be used to create the 2nd fractal. The default script is “simil3.lua”, if you don’t choose another one.
Here I am using a 2 layer fractal, then opening a Variants window for that fractal.
I chose the prePlusMatricesConcat.lua script, using its default “simil3” script argument.
I clicked the Roll Dice button.
Next lets use the postPlusMatricesConcat.lua script, using its default “simil3” script argument.
You don’t need to understand these concepts to use splicing, but some of you want to understand how they work.
Fractal Architect 4 introduced the concept of Variation Group Chains. Each normal and final transform has its own chain of variation groups. A chain can have one or more variation groups in it.
These chains can be used to apply variation geometric transformations in series. (The traditional model used by legacy Flam3 and Apophysis fractals is to combine variations’ geometric transformations in parallel by summing their outputs.) The output from the first variation group becomes the input to the 2nd group and so forth.
A chain with one variation group behaves exactly the same as Flam3/Apophysis.
A Variation group contains zero or more variation instances in it. With zero variation instances, the variation group simply copies its input to its output.
A variation reads the variation group’s input and applies a variation type specific geometric shape transformation to it. These transformed points are the variation’s output. (Variations impose a characteristic shape.)
All of the output of variations’ geometric transformations are summed together inside one Variation group (this applies the transformations in parallel). This creates the output from the Variation group.
Splicing copies variation groups from another fractal and inserts them into the receiving fractal’s transforms’ variation group chains. There are many ways to do this splicing.
For fractal A, each transform has a chain of variation groups. In Lua, for backwards compatibility with Oxidizer/Flam3 fractals, the chain is split into 3 parts:
For two fractals A and B, these are the ways the variation groups are copied by each script .
There are many other possible ways of doing this splicing.
Andreas Maschke introduced Layerz first in Jwildfire. Jwildfire used the term “layerz” for this feature to emphasize that it is not image layering, but fractal layering.
Layerz are multi-fractals composed of multiple layers, where each layer itself is a basic (non-layered) fractal. Unlike image editor layers, fractal layers are not order dependent and there are no layer effects available.
In the past, you could render two different fractals and use image layering in an app like Photoshop, to get a combined image.
Fractal layering achieves the “layered” effect at render time. No manual image compositing required.
In FA 5, all fractals are layered, but typically most only use a single layer.
The fractal rendering process writes to a fractal histogram each fractal iteration. At the completion of the render, that fractal histogram is reduced to obtain the final image.
For a basic fractal, the fractal histogram is cleared before each render.
Layered fractals, on the other hand, share the same histogram by each layer fractal rendering step. The histogram is only cleared before rendering the first layer.
This results in an output image combining features from the original layer fractals.
Layer weight controls how many fractal iterations are done for that layer.
Just like a basic fractal, a layered multi-fractal has a quality input parameter which determines how many fractal iterations are done to create the output image. Higher quality implies proportionally more fractal iterations. Higher quality reduces sampling noise and creates higher “quality” output images.
So:
layerIterations = layerWeight * totalIterations
Layer weight influences how “bright” the layer appears in the final image.
Using a thumbnail grid’s tools for creating layered fractals, is definitely the easiest way to create good looking layered fractals.
First you should use the Layered Fractal Quicklook feature (see below) to evaluate layer candidates. (Do they look well together?)
Then, with good candidates create the layered fractal as a second step.
Candidate layer fractals can themselves be layered or not.
==== This is so EASY!! ====
The most important step in creating layered fractals is to use this handy shortcut to first see how well the layer candidate fractals look together.
Select 2 or more fractals in the fractal thumbnail grid.
Press the Spacebar key to open a Quicklook view of a Layered fractal made from all of the fractals you selected. (Or use the Quicklook menu item from the context menu.)
Using the Stash
If the two fractals are not in the same thumbnail grid, first copy them over to the Stash.
This creates a new layered fractal from the selected thumbnail fractals. The new fractal appears in its own Preview window.
Select 2 or more fractals in the fractal thumbnail grid.
Use the Create Layered Fractal from Selected Fractals context menu item.
This creates an “equal” weighted layered fractal.
Another approach to creating a layered fractal is to use the Preview window’s Layerz popover.
Open the Layerz popover by clicking the L button.
This table has one row per layer.
With this approach, you use the “makeLayers.lua” Lua script. This is a main Lua script, so use it as the main Lua script choice on the Scripted Random tab of the Welcome screen.
It creates fractals containing 2 to 4 layers. Each layer is created by calling another script(s).
It has 4 input arguments: script1, script2, script3, and script4. These all default to “simil3”.
You can override these defaults by modifying the script arguments.
The Triangle editor can only edit one layer at a time.
Near the top of the Triangle editor is the Layer Select popup menu button. Use that to switch over to editing other layers.
The current layer (the one you are looking at now) fractal’s Triangle editor instance shows a Layer Select popup menu, then the current layer number, then the text “For Main”, then this layer’s Uuid.
Near the bottom of the editor window, is the Solo Layer / All Layers toggle button.
Sub-flames are another Jwildfire innovation.
The Fractal Architect sub-flame implementation is very different (so it can be used on GPU) from Jwildfire. So, alike in spirit, but not expected to appear the same.
Sub-flames is a general term that refers to the technique of using special variation types to invoke another sub-flame fractal instance each fractal iteration.
There are 4 Sub-flame variation types:
These special variation types contain a link to a separate sub-flame fractal instance, which is a basic fractal, not a layered fractal.
So the Fractal Info window shows both the parent fractal , plus all of its sub-flames. You will see Uuids being used to identify the fractal pieces.
The offset parameters allow you to place the sub-flame instance in 3D space.
Both final and normal transforms can use Sub-flames .
The subflame or pre_subflame variation type should be used inside normal transforms. The subflameFinal or pre_subflameFinal variation type should be used inside final transforms.
(In fact, you can use the subflameFinal variation type inside normal transforms, but there are side effect issues, where the sub-flame affects the fuse history of its parent fractal.)
When used as a variation, for every fractal iteration, the subflame variation first applies one randomly selected sub-flame’s normal transform, then all of the sub-flame’s final transformations are applied in series.
Sub-flame fractal instances can themselves contain their own subflame variation instances. There is a stack limit of 16 levels for this sub-flame invocation recursion.
The two variations types use different fusing techniques.
The subflame variation type allocates separate point pools for the sub-flame fractal instance and maintains clear separation away from the parent fractal’s point pools. It stores point state in these point pools every fractal iteration.
So point fusing operates in a similar manner to basic fractals. In Fractal Architect, each point has its own fuse history. A point is not applied to the histogram until it has received more iterations than the fuse threshold.
The subflameFinal variation type, which expects to be used in a final transform context, does not allocate point pools and does not save point state. (Final transform point state is always discarded – never saved.)
You can experiment with sub-flames using Lua tweak scripts. This is very easy
Sub-flames, like layerz, depend on choosing a good candidate fractal for the sub-flame.
You can use these 2 Lua tweak scripts to add sub-flame transforms to your existing fractal.
Both of these scripts add sub-flames to the fractal.
They both have a script input argument, specifying which Lua script to use to create the sub-flame.
Special Note: You can save any fractal as a main Lua script. This is helpful for sub-flames as then you have full control of which fractal is used as the sub-flame by these scripts.
So for this special technique, you would save the desired sub-flame fractal as a main Lua script. Then when using these tweak scripts here, you would specify their script input argument to use the main Lua script you had saved.
Example: Here I am using the Variant editor and have selected the
addSubflameXform tweak script.
You can manually add one of the 4 sub-flame variation types to the transform of your choice. Like any variation instance, you can set its variation weight, which controls the strength of the variation shaping affect.
Next, you must designate the sub-flame fractal instance that the sub-flame variation instance is linked to. The sub-flame fractal becomes a private copy of the original dropped or copied fractal. So you can edit it freely without affecting the original source fractal.
Just below the list of variations are the controls for setting up this sub-flame fractal instance:
You can tell which fractal component, parent or sub-flame fractal instance, by looking at the labeling near the top of the Triangle Editor.
You can open a sub-flame fractal instance, by first finding the subflame variation instance in the parent’s variations table, selecting that, then clicking the Triangle Editor edit button found below the variations table.
The parent fractal’s Triangle editor instance shows a Layer Select popup menu, then the current layer (the one you are looking at now), then the text “For Main”, then this parent fractal’s Uuid.
The parent fractal’s Triangle editor instance shows the text “For Subflame:”, then its fractal’s Uuid.
Near the bottom of the editor window, is the Sub-Flame / All Layers toggle button.