Xaos Tutorial

August 23, 2008

This is a tutorial on the new Apophysis 2.08 feature chaos, a.k.a. xaos.

So, what is xaos, exactly?

(If you already know this, feel free to skip past this section towards the more advanced stuff)

In the past, when rendering a flame in Apophysis, the transform used each iteration was entirely defined by a single value: Its weight in relation to the others. Imagine that each transform is a city. There are a certain number of tourists visiting the country, and they randomly travel between cities. The bigger a city, the more tourists it gets. This is how Apophysis has always behaved – until now.

With xaos, you get more information than just the city sizes of this mysterious country (let’s call it Flamia). You see, not all roads in Flamia are equal. Some roads are broader than others, making specific pairs of cities more strongly connected than others. Sometimes the road between two cities is underdeveloped or even nonexistent, forcing the tourists to go through intermediate cities first. With xaos, you control which roads to put more emphasis on, and in which directions.

A practical example

You should consider xaos on the same level as post and final transforms. It’s not the kind of feature that is able to create entirely new stuff, but used correctly, it can finetune your work significantly.

Now, let’s do a little exercise. Copy the flame below and paste it into Apophysis.

<flame name="xaos" size="250 250" brightness="4" gamma="4" >
<xform weight="1" linear="1" coefs="0.9 -0.3 0.3 0.9 0 0" />
<xform weight="1" linear="1" coefs="0.4 0 0 0.4 1 -1" />
<xform weight="1" linear="1" coefs="0.25 0 0 0.25 -1 1" />
<xform weight="1" blur="0.2" coefs="0 0 0 0 0 0" />
<palette count="1" format="RGB"> 6088AA </palette></flame>

As you can see, there are lots of circles, big and small, scattered around the image, created by transform 4. Why does this happen, when blur itself only creates a single central circle? The reason is that each transform interacts with every other one in the flame; it’s a fundamental part of how an IFS works. You can see how transform 4 would look like alone by checking “solo” in its color tab.

Until now, you had no way to control this behaviour. Adding a transform meant accepting all the changes it caused, good and bad. With xaos, that’s not true anymore.

Follow along

Let’s go back to our flame. Go to the xaos tab in transform 4, and make sure it’s in the “to” view. Set the path towards red to 0. Huh? Nothing happened. The reasons for this are a bit too complex to discuss right now, but bear with me for a second. Now, also set the path towards yellow to 0. There’s a clear change in the image now. What happened? The upper part of the fractal is created by transform 2 and copied into a semi circle by transform 1. You just eliminated all possible paths on which the blur could have reached that area. Note that this change propagates everywhere, making the upper lines of pearls dissapear in all little copies of the fractal, even the ones in the bottom half.

Ok, now reset the image (or just paste it in again). Let’s try to make transform 2 completely invisible. The first obvious step is to go to the color tab and check invisibility. But, this only removes transform 2 directly, not all the copies spawned by the rotated red one. Let’s see if we can fix that. Back in the xaos tab, set the path to itself to 0, ditto with the path to red. If you try deleting transform 2 entirely, you can see that what we did looks completely different. Any image you get with xaos and invisibility will always be a subset of the whole flame. It will also keep its self-similar fractal properties.

What now?

I could go on and on giving examples, but instead I suggest you play around a bit yourself. I chose this flame because of its simplicity, so that the effects created and their origins are clearly visible. Go and try this kind of effect on your own flames, and see what you can achieve. Only experience will let you navigate all these new possibilities in any coherent way, and knowing the advanced stuff is definitely worth it!

If you have any questions, feel free to ask. This tutorial doesn’t even come close to covering everything, it’s nothing more than a starting point for your own experiments. If you want to know more, you can also check out my explanation of linked transforms, which has some related info.