teaser #2

December 2, 2013

teaser3

teaser2

Voxel Worlds

September 11, 2013

I’ve been experimenting further with Ray Marching (using Processing) – which is a 3d rendering technique that uses algorithms and math to create solid forms.  I’ve developed this Ray Marching technique into creating Voxel Worlds.  Voxels are like pixels, except they are 3d, and can be any shape you want (Minecraft is a cube based Voxel world for example).

The concepts below are also potentially the basis of a music video commission, from a Canadian friend of mine and a very talented musician.  More on this as it develops.

I’d also like to thank the Arts Council of Northern Ireland for the support they’ve given me – the work below evolved out of the funding help I’ve received from them.

HI_NL ACNI

Screen Shot 2013-09-09 at 11.00.48 AM Screen Shot 2013-09-09 at 11.02.34 AM Screen Shot 2013-09-09 at 11.06.18 AM Screen Shot 2013-09-09 at 11.10.25 AM Screen Shot 2013-09-09 at 11.14.54 AM Screen Shot 2013-09-09 at 11.16.24 AM

Screen Shot 2013-09-06 at 10.09.54 AM Screen Shot 2013-09-06 at 10.13.41 AM Screen Shot 2013-09-06 at 10.17.34 AM Screen Shot 2013-09-06 at 10.20.43 AM Screen Shot 2013-09-06 at 10.25.40 AM Screen Shot 2013-09-06 at 10.27.37 AM Screen Shot 2013-09-06 at 10.28.35 AMScreen Shot 2013-09-05 at 8.48.34 AM Screen Shot 2013-09-05 at 8.54.28 AM Screen Shot 2013-09-05 at 8.57.47 AM Screen Shot 2013-09-05 at 8.59.29 AM Screen Shot 2013-09-05 at 9.05.45 AM Screen Shot 2013-09-05 at 9.12.38 AM Screen Shot 2013-09-05 at 9.20.48 AM Screen Shot 2013-09-05 at 9.23.24 AM Screen Shot 2013-09-05 at 9.25.36 AM Screen Shot 2013-09-05 at 9.26.45 AM Screen Shot 2013-09-05 at 9.27.35 AM Screen Shot 2013-09-05 at 9.30.29 AM Screen Shot 2013-09-05 at 9.31.11 AM Screen Shot 2013-09-05 at 9.32.51 AM Screen Shot 2013-09-05 at 9.33.51 AM Screen Shot 2013-09-05 at 9.35.09 AM Screen Shot 2013-09-05 at 9.43.54 AM Screen Shot 2013-09-05 at 9.47.50 AM Screen Shot 2013-09-05 at 9.49.20 AM Screen Shot 2013-09-05 at 9.50.36 AM Screen Shot 2013-09-05 at 9.51.28 AM Screen Shot 2013-09-05 at 9.55.00 AM Screen Shot 2013-09-05 at 9.57.42 AM Screen Shot 2013-09-05 at 10.00.18 AMScreen Shot 2013-09-04 at 3.40.12 PM Screen Shot 2013-09-04 at 3.40.47 PM Screen Shot 2013-09-04 at 3.42.25 PM Screen Shot 2013-09-04 at 3.52.28 PM Screen Shot 2013-09-04 at 3.52.51 PM Screen Shot 2013-09-04 at 3.53.25 PM Screen Shot 2013-09-04 at 3.54.13 PM Screen Shot 2013-09-04 at 8.50.28 AM Screen Shot 2013-09-04 at 9.26.18 AM Screen Shot 2013-09-04 at 9.28.13 AM Screen Shot 2013-09-04 at 11.26.27 AM Screen Shot 2013-09-04 at 11.28.13 AM Screen Shot 2013-09-04 at 12.33.38 PM Screen Shot 2013-09-04 at 12.35.06 PM Screen Shot 2013-09-04 at 12.37.33 PM Screen Shot 2013-09-04 at 12.39.47 PMScreen Shot 2013-09-03 at 9.27.01 AM Screen Shot 2013-09-03 at 9.33.04 AM Screen Shot 2013-09-03 at 9.41.05 AM Screen Shot 2013-09-03 at 11.25.31 AM Screen Shot 2013-09-03 at 11.27.28 AM Screen Shot 2013-09-03 at 11.28.31 AM Screen Shot 2013-09-03 at 11.32.18 AM Screen Shot 2013-09-03 at 11.39.25 AM Screen Shot 2013-09-03 at 11.42.40 AMScreen Shot 2013-08-30 at 9.51.30 AM Screen Shot 2013-08-30 at 10.05.32 AM Screen Shot 2013-08-30 at 11.41.27 AM Screen Shot 2013-08-30 at 11.46.38 AM Screen Shot 2013-08-30 at 11.49.22 AM Screen Shot 2013-08-30 at 11.54.41 AM Screen Shot 2013-08-30 at 12.00.08 PM Screen Shot 2013-08-30 at 12.03.17 PM

To continue my exploration of finding physical forms through algorithmic generation – here’s how my imaginary ‘game console’ ended up.  After spending time creating LED light structures, I finished off the materials and colors, and then had some fun playing around with some random mutation of the overall algorithms.

This is just a scrapbook cataloging of my process of coding and experimentation.  Just to reiterate, these 3d forms are created purely out of code and algorithms, there’s no wireframes, polygons or manual design in a conventional 3d sense.

I had in mind to knock out another musical video piece based on this.  Would take a bit of time though to do well, we’ll see…

blog1 blog2 blog3 blog4 blog5 blog6 blog7

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
cp.x=-cp.x;
}
if ( (cp.y)<0.) { // fold 1
cp.y=-cp.y;
}

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.

playbox

Follow

Get every new post delivered to your Inbox.

Join 73 other followers