Fractal Architect 5 Help Index

See also: Variation Group Chain Concept

Composite Multi-Fractals


Applies to:FA 5

Composite Multi-Fractals are easy to create. Try them and you will see.

Multiple Final Transforms

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.

Multi-Fractals

Composite multi-fractals are fractals built from other pre-existing fractals. There are 5 different categories of multi-fractals:

  1. Morphing
  2. Keyframe Delta
  3. Splicing
  4. Layerz
  5. Sub-flames

It is a Layerz World Now

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.

Morphing Two Fractals Together


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.

How to Create New Fractals by Morphing

Use the CrossBreeder editor to create them. Drag and drop (or copy/paste) the source fractals onto the crossbreed thumbnails. Set the amount slider.

Morphing Example

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.

Fractal Morphing #1
Fractal Morphing #1

Cross Breeder Layer/Transform Permutations

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.

Morphing Principles

Morphing 2 basic fractals having different # of transforms

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.

Morphing 2 layered fractals having different number of layers

The number of layers are equalized by splitting the layer with the largest weight.

Morphing fractals with sub-flames instances

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.

Keyframe Delta Segments

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.

Variants Editor Creates Keyframe Delta Segments

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.

Super Variants Exploits Keyframe Delta Segments

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.

Splicing Two Basic Fractals together


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.

How to Splice 2 Basic Fractals

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.

inlineConcat.lua
Inline splicing.
inlinePlusMatricesConcat.lua
Inline splicing, include 2nd fractal’s pre & post transforms.
postConcat.lua
Post splicing.
postPlusMatricesConcat.lua
Post splicing, include 2nd fractal’s pre & post transforms.
preConcat.lua
Pre splicing.
prePlusMatricesConcat.lua
Pre splicing, include 2nd fractal’s pre & post transforms.

Splicing Example

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.

Fractal Splicing #1
Fractal Splicing #1

Next lets use the postPlusMatricesConcat.lua script, using its default “simil3” script argument.

Fractal Splicing #2
Fractal Splicing #2

Splicing Principles

You don’t need to understand these concepts to use splicing, but some of you want to understand how they work.

Transforms contain Variation Group Chains

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.

Variation Groups

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 - What It Does

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.

Notation

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:

A.pre’s
Fractal A’s pre variation groups (zero or more)
A.variations
Fractal A’s normal variation group (just one)
A.post’s
Fractal A’s post variation groups (zero or more)

Splicing Table

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.

inlineConcat.lua
A.pre’s, B.pre’s, A.variations, B.variations, A.post’s, B.post’s

inlinePlusMatricesConcat.lua
A.pre’s, B.pre matrixGroup, B.pre’s, A.variations, B.variations, A.post’s, B.post’s, B.post matrixGroup.

postConcat.lua
A.pre’s, A.variations, A.post’s, B.pre’s, B.variations, B.post’s.

postPlusMatricesConcat.lua
A.pre’s, A.variations, A.post’s, B.pre matrixGroup, B.pre’s, B.variations, B.post’s, B.post matrixGroup.

preConcat.lua
A.pre’s, B.pre’s, B.variations, B.post’s, A.variations, A.post’s.

prePlusMatricesConcat.lua
A.pre’s, B.pre matrixGroup, B.pre’s, B.variations, B.post’s, B.post matrixGroup, A.variations, A.post’s.

Layerz - Layered Multi-Fractals


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.

Fractal Histogram

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 Properties

weight
Layer weight - determines the render time for that layer.

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.

How to Create Layered Fractals


  1. Thumbnail Grid – Save Selected as Layered Fractal

  2. Fractal Preview Window Layer Panel

  3. Use makeLayers.lua Lua Script

Creating Layered Fractal Using Thumbnail Grid

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.

Layered Fractal Quicklook

==== 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.

  1. Select 2 or more fractals in the fractal thumbnail grid.

  2. 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.

Create Layered Fractal From Selected Fractals

This creates a new layered fractal from the selected thumbnail fractals. The new fractal appears in its own Preview window.

  1. Select 2 or more fractals in the fractal thumbnail grid.

  2. Use the Create Layered Fractal from Selected Fractals context menu item.

This creates an “equal” weighted layered fractal.

Preview Window Layer Panel

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.

Preview Layers Popover
Preview Layers Popover

Fractal Layers Table

This table has one row per layer.

Weight
Layer weight.
Show
Shows this Layer.
Editable
When checked, Preview edit operations affect this layer.
Description
Shows the fractal Uuid for that layer.

Layers Popover Controls

+
Adds a new empty layer.
-
Removes the selected layer.
Triangle Editor button
Opens the Triangle editor for the selected layer.
Gradient Editor button
Opens the Gradient editor for the selected layer.
Info button
Opens an Info window for the selected layer.
Quicklook button
Opens a Quicklook window for the selected layer.
Drag to Here
Drag a fractal to here and drop it overwrites the fractal for this selected layer.
Copy
Copies to the pasteboard the fractal for this selected layer.
Paste
Paste overwrites the fractal for this selected layer.
Undo
Undoes the last layers edit operation.
Redo
Redoes the last undone layers edit operation.
Drag to Append Here
Drag a fractal to here and drop it appends a new layer.
Paste Append Here
Paste appends a new layer.

Use makeLayers.lua as Main Script

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.

Triangle Editor and Layerz

The Triangle editor can only edit one layer at a time.

Switching Between Layers

Near the top of the Triangle editor is the Layer Select popup menu button. Use that to switch over to editing other layers.

Layer Labeling

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.

Layer Labeling
Layer Labeling

Preview This Layer vs All Layers

Near the bottom of the editor window, is the Solo Layer / All Layers toggle button.

Show just this layer or all layers
Show just this layer or all layers

Sub-Flames


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.

Sub-Flame Variation Parameters

The offset parameters allow you to place the sub-flame instance in 3D space.

weight
The variation weight.
flame
The Uuid for the variation instance’s basic sub-flame fractal.
offset_x
X offset from parent’s fractal origin where the sub-flame fractal will be position.
offset_y
Y offset from parent’s fractal origin where the sub-flame fractal will be position.
offset_z
Z offset from parent’s fractal origin where the sub-flame fractal will be position.

Final vs Normal Transforms

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.)

How They Work

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.

Subflame vs SubflameFinal

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.)

How to use Sub-flame variations

You can experiment with sub-flames using Lua tweak scripts. This is very easy

  1. Sub-flame Lua tweak scripts
  2. Use Triangle editor

Sub-flames, like layerz, depend on choosing a good candidate fractal for the sub-flame.

Sub-Flame Lua Tweak Scripts

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.

addSubflameXform
Adds a new normal transform to the fractal using a “subflame” variation.
addSubflameFinal
Adds a new final transform to the fractal using a “subflameFinal” variation.

Example: Here I am using the Variant editor and have selected the
addSubflameXform tweak script.

Sub-flame Example #1
Sub-flame Example #1

Manually Adding Sub-Flame Variations

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:

Drop Subflame Here
Drag and drop the subflame fractal here.
Paste Sublame
Paste the subflame fractal here.
Subflame’s Triangle Editor button
Opens another Triangle Editor window so you can edit the linked to sub-flame fractal instance.
Sub-flame’s Uuid
The sub-flame fractal instance’s Uuid.
Sub-flame Example #1
Sub-flame Example #1

Separate Triangle Editor Instances

You can tell which fractal component, parent or sub-flame fractal instance, by looking at the labeling near the top of the Triangle Editor.

Opening an editor for the Sub-Flame

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.

Parent Fractal’s Labeling

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.

Parent Fractal Labeling
Parent Fractal Labeling

Sub-Flame Fractal’s Labeling

The parent fractal’s Triangle editor instance shows the text “For Subflame:”, then its fractal’s Uuid.

Sub-flame Fractal Labeling
Sub-flame Fractal Labeling

Preview This Sub-flame vs All Layers

Near the bottom of the editor window, is the Sub-Flame / All Layers toggle button.

Show just this sub-flame or all layers
Show just this sub-flame or all layers