…but this time, with proper lighting.

And a low-res quick video-grab. Sorry about the pause at the beginning. I can’t be bothered to install QuickTime 7 just so I can trim the beginning off the clip.

Advertisements

15

Oct

09

…but this time, with proper lighting.

And a low-res quick video-grab. Sorry about the pause at the beginning. I can’t be bothered to install QuickTime 7 just so I can trim the beginning off the clip.

Advertisements

%d bloggers like this:

Can you describe what you’re doing here? Or share the source?

Hiya.

It’s based on parametric surface equations. The idea is that you take a flat grid, and apply an equation to each point, so that the 2D grid is bend around into a 3D form.

This is an extension of the idea whereby multiple grids are used, with each grid offset and scaled by different amounts, so you get this fragmented look.

It’s not a new idea, in fact. Members of the vvvv community have been doing this for a long time, and vvvv makes it easy because of the ‘spreads’ concept which is used throughout the program. It’s always been a bit trickier to achieve in Quartz Composer though, and so has been something of a holy grail to me for a while now.

This particular implementation uses the new OpenCL patch in QC to generate the geometry, which is then rendered with simple per-vertex lighting.

Hope this helps explain what’s going on.

a|x

I never got a chance to take a look at this until today (at least I think it’s this one – the VDM OpenCL?)… on my system, it doesn’t run correctly (I have the same laptop as you, and the latest dev seed).

In the log, I get:

[10:54:59.218] Execution failed at time 0.000

[10:55:14.175] : Error creating output stream for index 0

[10:55:14.175] : Failed executing kernel __kernel void main(__global uint *indices, uint count)

{

int tid = get_global_id(0),

x = tid îount,

y = tid / count;

if (y==0) {

if (x<count-1) {

indices[2*tid] = x + y*count;

indices[2*tid+1] = x + (y+1)* count;

} else {

indices[2*tid] = x + y*count;

indices[2*tid+1] = x + (y+1)* count;

indices[2*tid+2] = x + (y+1)* count;

}

} else {

if (x==0) {

indices[2*y-1+2*tid] = x + y*count;

indices[2*y-1+2*tid+1] = x + y*count;

indices[2*y-1+2*tid+2] = x + (y+1)* count;

} else if (x<count-1) {

indices[2*y-1+2*tid+1] = x + y*count;

indices[2*y-1+2*tid+2] = x + (y+1)* count;

} else {

indices[2*y-1+2*tid+1] = x + y*count;

indices[2*y-1+2*tid+2] = x + (y+1)* count;

indices[2*y-1+2*tid+3] = x + (y+1)* count;

}

}

}

Global Dim (0) = 0, 0, 0

Local Dim (0) = 0, 0, 0

Input Arguments:

Output Arguments:

This is so damn cool.

Thanks!

a|x