Breathe – VR Walkthrough

February 25, 2017

This is a walkthrough video of my soon to be released VR meditation app ‘Breathe’.

It will be free, at least initially.  I want to keep working on it, adding content and features.  This first version is quite basic – with only a ‘sunflower’ animation and some color variations.

I want to eventually add more animations, e.g. different flowers (lotuses etc), geometric mandala patterns… and also different types of backgrounds e.g. underwater, fractal etc.

This extra content will give the possible combinations and variety between animation / background / colours much more than the base version of the app.

As you use the app, you can browse through ‘scenes’ – these are effectively randomly generated scenes with a unique combination of animation, background and color setup.  The scene number is really a seed number – similar to how Minecraft generates random worlds based on a seed number.

This concept I hope, encourages exploration of randomly generated worlds – and if you find something you like, you can remember or save the seed / scene number.

You can use your favourite scenes for meditation.  You can adjust the tempo of the animation to fit with your breathing, and try to unify the whole experience with your breath.  Or you can go ‘free’ from the breath syncing and just enjoy the animation at whatever pace feels relaxing to watch.

Future ideas for the app include a guided, structured meditation, with possibly a voice over to help instruct.

I will also keep adding to the generative ambient soundtrack.  The first version has about 6 tracks which blend in and out of each other randomly, creating a continuous generative audio work.


Now for the fun part in preparing the app for submission to the Oculus store!







A meditation…

January 27, 2017

Just putting the finishing touches to my new meditation VR app ‘Breathe’.

Featuring generative ambient music, rhythmic fibonacci animation, and preprogrammed / customisable meditation options.

Watch this demo and enjoy a 10 minute meditation on a sunflower.  You can choose to try and bring your breathing down to the speed of the animation, or simply relax and enjoy the experience on its own.




some early stills from my vr meditation app ‘breathe’ – and some screenshots of development – including my own fibonacci / golden angle formula for creating sunflower seed patterns…


breath1 breath3 breath4breathe2 screen-shot-2016-12-01-at-07-07-13 screen-shot-2016-12-01-at-07-31-40


‘Breathe is a breath visualisation VR app for relaxation, meditation training and developing Mindfulness, transforming the mundane act of breathing into an act of beauty, wonder and calm, and nurturing mindfulness through Mindfulness of Breathing. ‘


Funded by Northern Ireland Screen –

2. menu1



Recently, being happily lost in my new world of 3d generative code art, i.e. 3d forms, fractals and geometric structures created out of functions and algorithms via the technique of Ray Marching, something made me stop and direct my focus to a real world application of this concept.  This was the launch of the new Play Station and XBox consoles.  I’ve been a fanboy of both machines over the years, and waited eagerly for the big reveal, as much to see what it looked like.  I was kind of disappointed.  Nothing more than square black boxes.  Was this lack of imagination, or fear of being bold?

The old PS2 had its distinct corrugation, and the last XBox slim had its womanly curves.  But since then, ever more conservative product design it seems.

I started to think of designing my own console, using functions and algorithms that established a framework, and through which, random mutation could create endless possibilities of physical design.  I’m starting to believe more and more we need computers to augment and extend human imagination – and doing this through generative processes.

So I thought I’d kickstart a blog on this, and begin with something basic.

The fist stage is the overall ‘hull’ or superstructure.

Screen Shot 2013-06-08 at 9.10.35 AM Screen Shot 2013-06-08 at 9.13.03 AM Screen Shot 2013-06-08 at 9.17.20 AM Screen Shot 2013-06-08 at 10.17.54 AM Screen Shot 2013-06-08 at 12.06.40 PM Screen Shot 2013-06-08 at 12.15.22 PM Screen Shot 2013-06-09 at 4.01.57 PM

Let me explain the above..

With Ray Marcing, imagine that the camera point of view is looking in the direction of every pixel on screen, sending every position in space from near to far into a single function, that function will return a number telling you whether you are on the surface of an object, or  inside or outside the object.

Lets start with a simple box.
float d2=sdBox2(cp, new PVector(1, .1, 1));

Deform that box with some Perlin Noise to give it some random curves and mounds.
float hull= d2-nv(cp); // nv is the noise function

Wouldn’t be very console looking though.  But add in some symmetry rules, i.e., mirror the horizontal plane, and mirror a vertical plane down the center of the console, so that left and right are symmetrical too.
if ( (cp.x)<0.) { // fold 1
if ( (cp.y)<0.) { // fold 1

Then quickly animate the deforming ‘noise field’ to see one new design automatically created after another.

After tweaking the algorithms, shaping the general framework of design possibilities, the last image above I was happiest with.

To breifly reiterate, Ray Marching is a 3d techinuqe that doesn’t require geometric meshes or wireframes to be created, instead, everything is expressed as a mathemcial function.  This gives rise to very complex and experimental 3d graphics impossible in conventional 3d animation and software packages.

Next up is adding some heat vents.  I’ll start with a basic sphere shape, and using boolean operations, cut away a cavity to create the vents.

Screen Shot 2013-06-10 at 7.51.47 AM Screen Shot 2013-06-10 at 7.57.11 AM Screen Shot 2013-06-10 at 8.07.48 AM

I’ll now use the same sphere shape to do another boolean operation with a grill structure to create the vents structure.

Screen Shot 2013-06-10 at 8.19.09 AM Screen Shot 2013-06-10 at 8.38.51 AM

now place the final vent structure back into the hull.

Screen Shot 2013-06-10 at 8.40.08 AM

up the number of vents a bit

Screen Shot 2013-06-10 at 8.42.06 AM Screen Shot 2013-06-10 at 8.42.45 AM

Finally, I want to add a nice bevelled edge around the vent structure.  It’s another boolean operation that uses a slightly larger scaling of the original sphere that intersects with the hull to find a conforming rim.

Screen Shot 2013-06-11 at 9.20.28 AM Screen Shot 2013-06-11 at 9.21.39 AM Screen Shot 2013-06-11 at 9.23.48 AM

So now that the basic hull, vent & rim elements are created, and importantly, all connected via a single algorithm / function, I can start playing around with mutating and randomizing the whole, by changing as little as one parameter / value.

Here I scale up the sphere.  Remember, the whole object is based on a simple box and sphere that uses lots of boolean operations to create the final console prototype.

Screen Shot 2013-06-11 at 9.34.35 AM

add left / right symmtery to the vent structure.

Screen Shot 2013-06-11 at 9.35.57 AM Screen Shot 2013-06-11 at 9.42.03 AM

4 way symmetry, perhaps too much!

Screen Shot 2013-06-11 at 9.46.23 AM Screen Shot 2013-06-11 at 9.47.55 AM

left / right symmetry, with noise deforming the sphere (which creates the vents)

Screen Shot 2013-06-11 at 10.10.19 AM Screen Shot 2013-06-11 at 10.12.31 AM Screen Shot 2013-06-14 at 10.22.27 AM

So there it is, creating a random prototype out of algorithms. It’s just a start though, I’ve a lot more I want to develop with it.

This video I hope demonstrates best my overall philopsophy of using algorithms and random generation to discover new forms and conepts that would be impossible to us through conventional pen and paper and conventional software packages.

Next up is refining the algorithm, adding a nice abstract LED light panel.  Texturing and surfacing – black plastic, metal chrome, neon blue lights etc..

Here’s a preview of the next stage, I discovered an better shape I was happy with, and put the vents flat in either side as a starting point (which can still be deformed in many ways) – and also with vents, I added some nice curving deformation on the grill structure, and you can also see the start of my abstract geometic thoughts on the LED lights – which will be added to the surface structure front and back.