Tuesday, 31 March 2009

Postcards from paradise

buy print of 'Postcards from paradise' at Fine Art America

Wish you were here.

Thursday, 26 March 2009

The shaman's mask

buy print of 'The shaman's mask' at Fine Art America

The smaller version at the forehead represents the opening of the third eye in the form of the shaman's higher self in direct contact with unseen dimensions.

Wednesday, 25 March 2009

Death's heads

see 'Death's heads' at deviantART

"We ended up having to eat each other."

Initial parameters from this Spherical-Juliascope script.

Tuesday, 24 March 2009

Timewave zero

see 'Timewave zero' at deviantART

During his famously monumental psilocybin session in the early '70s, Terrence McKenna 'downloaded' the idea of connecting the I Ching with a description of time. The result was the Fractal Timewave, predicted to complete its final infinitessimal cycle in 2012, as the ingress of novelty approaches the infinite.

First outing for the excellent new qwave plugin: http://keeps.deviantart.com/art/qwave-116810485

Full view essential.

Glynn goes clubbing

see 'Glynn goes clubbing' at deviantART

What will Julian say?

After the rain

buy print of 'After the rain' at Fine Art America

Blurry, smudgy abstract, like a watercolour left in the rain.

Monday, 23 March 2009

Only 313 shopping days left till Christmas

buy print of 'Only 313 shopping days left till Christmas' at Fine Art America

The madness of consumerism.

Saturday, 21 March 2009

Dream alembic

buy print of 'Dream alembic' at Fine Art America

The recurrence of an elusive form.

Friday, 20 March 2009

Cave painting

buy print of 'Cave painting' at Fine Art America

A depiction of winter plant skeletons, illuminated by torchlight.

Sunday, 15 March 2009

Khronos

buy print of 'Khronos' at Fine Art America

Tales from the time machine.

Tip: ad hoc scripting #2 - rapidly change variables for a group of transforms

I have already published a set of utility scripts for working on groups of transforms (link). It's easy enough to write scripts that generalise when it comes to working with variations (one simply needs to maintain a list of currently installed plugins in alphabetical order): the old method of referencing variations by number is most useful in this context. But it doesn't allow for easy manipulation of variables. Rather than write an enormous script that covers all, I've developed a (wait for it) spreadsheet that picks up all the variables via a lookup table. But it's not necessary - just a code snippet repository or, better, a clipboard utlility (e.g. ArsClip, my review) will do the trick. As an example, we'll take the lazysusan variation - all that's required is:

Transform.lazysusan_spin := 3.14159;
Transform.lazysusan_space := 0;
Transform.lazysusan_twist := 0;
Transform.lazysusan_x := 0;
Transform.lazysusan_y := 0;

These are the default values. Also, a loop wrapper:

for i := a to b do
begin
SetActiveTransform(i);
...variables...
end

where a and b are the first and last transforms of the group (zero-based counting, that is the first transform of the flame is in fact transform #0).

Running Apophysis with the script editor window open (Ctrl-D), just click the New tool and paste in the code, amend the values as desired and click the Run tool - one click to perform what would take perhaps 30 seconds to accomplish in the Transform Editor.

Saturday, 14 March 2009

The dig

buy print of 'The dig' at Fine Art America

Complete abstract, or an aerial view of an archaeological dig... or something else?

Friday, 13 March 2009

Tip: ad hoc scripting #1 - batch rendering multiple .flame files

Following on from the previous tip, this becomes a very simple but powerful tool to enhance lengthy unattended rendering, ideal for setting up before a weekend away. With reference to the previous tip, [script code] represents the chosen block of script for rendering the contents of a single .flame file. The choice of method may be varied for each .flame file. The following code will render the content of three .flame files in a single run:

SetFlameFile('full path\filename1.flame');
[script code]
SetFlameFile('full path\filename2.flame');
[script code]
SetFlameFile('full path\filename3.flame');
[script code]

The snippet may be stored in a text file and then amended and copied to the clipboard (Ctrl-C). In Apophysis, open the script editor (Ctrl-D), click New and paste (Ctrl-V), then click Run. This way, you don't end up with a load of stored scripts that won't be used again.

Morning shadows brush away the traces of last night's bloodshed

buy print of 'Morning shadows brush away the traces of last night's bloodshed' at Fine Art America

A surreal vision of a self-sweeping public space.

Thursday, 12 March 2009

Curling

buy print of 'Curling' at Fine Art America

Abstract.

Wednesday, 11 March 2009

Information: Changes

I have become 'stalled' at deviantART (for a variety of reasons which needn't detain us here), but haven't been altogether idle in the interim. I have launched myself at Fine Art America in the hope of earning a little income from my art, and so new work posted here will link directly there. Also notice the widget, hand-coded in order to retain the complete list of available prints, rather than just the latest 15 that the site's feed offers.

I've been working on a new style of abstracts, plus there's a backlog of disc-julians and some miscellaneous others. Not all will make it to the print stage, but I may decide to upload elsewhere so that the preview images here may link to something satisfyingly larger. Also some more tips on the way, and I have draft notes for the outline of 'The definitive guide to disc-julians' which may eventually surface as a stylish (sic!) .pdf ;-)

The Sultan's bedchamber

buy print of 'The Sultan's bedchamber' at Fine Art America

Lavishly brocaded hangings...

Tuesday, 10 March 2009

Quantum plenum

buy print of 'Quantum plenum' at Fine Art America

Down below the Planck length, "empty space" is a seething ocean of potentiality.

Saturday, 7 March 2009

Tip: batch rendering

Historically, this was always accomplished using a script, whether with the internal renderer or flam3. We now have a bulit-in batch rendering command, plus I have my own custom (script) method. Which method to use depends very much on one's preferred workflow. Essentially, we can divide this into two groups:

1. All renders share the basic rendering parameters.
2. Each render has individual requirements.

Case #1 is simple: its simplest solution is to use the bulit-in method Flame, Render All Flames (Ctrl-Alt-R), offering the usual dialogue for setting parameters. Scripted, the equivalent is:

Renderer.Width := ##;
Renderer.Height := ##;
for i := 0 to FileCount - 1 do
begin
LoadFlame(i);
Flame.SampleDensity := ##;
Flame.Oversample := ##;
Flame.FilterRadius := ##;
Renderer.Filename :='path' + Flame.Name + '.ext';
SetRenderBounds;
Render;
end;
UpdateFlame := False;

where ##, path and ext should be specified as desired.

To render the contents of a .flame file other than the current one, simply precede the code with:

SetFlameFile('full path\filename.flame');

Case #2 requires a little more work, but provides more flexibility. Each parameter set would require saving with the desired dimensions, set on the Image Size tab of the Adjust dialogue (make sure to click Apply). The script code would then read:

for i := 0 to FileCount - 1 do
begin
LoadFlame(i);
Renderer.Width := Flame.Width;
Renderer.Height := Flame.Height;
Flame.SampleDensity := ##;
Flame.Oversample := ##;
Flame.FilterRadius := ##;
Renderer.Filename :='path' + Flame.Name + '.ext';
SetRenderBounds;
Render;
end;
UpdateFlame := False;

But there is no easy way to set individual values for quality, oversample and filter radius, other than editing the .flame file manually, either with a text or XML editor. To this end, I developed a spreadsheet in which values for each parameter set are entered into adjacent cells, then a button pressed that copies the code to form a consecutive set of instructions, like this:

LoadFlame(0);
Renderer.Width := 6000;
Renderer.Height := 6000;
Flame.FilterRadius := 1.2;
Flame.Oversample := 1;
Flame.SampleDensity := 1000;
Renderer.Filename := 'C:\Program Files\Apophysis 2.0\Prints\' + Flame.Name + '.jpg';
SetRenderBounds;
Render;
LoadFlame(1);
Renderer.Width := 6000;
Renderer.Height := 6000;
Flame.FilterRadius := 0.8;
Flame.Oversample := 1;
Flame.SampleDensity := 500;
Renderer.Filename := 'C:\Program Files\Apophysis 2.0\Prints\' + Flame.Name + '.jpg';
SetRenderBounds;
Render;
.
.
.
etc.

This takes very little time and provides complete flexibility for parameter choice for unattended rendering.