loading

Archive for September, 2005

toxi

Two small helpers for doing multiscreen 3D

My current work project involves displaying a panoramic 3D scenery “seamlessly” across a multi-screen/multi-machine setup. The system needs to support a flexible number of viewports and screen dimensions, so each client will have to be coded with a flexible view frustum in mind: Say, if there’re 6 machines used, each box will have to render 60 degrees of the panorama…

Now the issue at hand is that Processing, Shockwave3D and many other 3D engines based on OpenGL usually specify their view angle (FOV) in the vertical direction, not horizontally (as I always assumed since it’s far more natural). That’s not very helpful in my situation above as I need to figure out the horizontal orientation of each machine’s camera/viewport:

Machine #1 camera rotation @ 30 (renders 0-60 degrees)
Machine #2 camera rotation @ 90 (renders 60-120 degrees)
etc.

Since most displays are not squared, but rectangular, the horizontal FOV will be larger than the vertical, but exactly how much? Of course there’re ways to easily compute this horizontal angle, only googling for a solution did take me quite a while - and of course I found it where I’d thought I would - on Paul Bourke’s site (incidentally, one of my favourite websites)

So here’s a tiny code snippet to convert FOV bothways, in case you’ll ever run into similar situations:

/** * computes horizontal FOV from window size and vertical FOV * @param   fov   vertical FOV (in degrees) * @return        horizontal FOV (in degrees) */float apertureV2H(float fovV) {  fovV=radians(fovV);  return degrees(2*atan(width*tan(fovV/2)/height));}

/** * computes vertical FOV from window size and horizontal FOV * @param   fov   horizontal FOV (in degrees) * @return        vertical FOV (in degrees) */float apertureH2V(float fovH) {  fovH=radians(fovH);  return degrees(2*atan(height*tan(fovH/2)/width));}
020200 - analog digital design

thinking: from A to B, coding: from A to nowhere

Computer tools are excellent! You can solve very complex problems within a very short time. With computer based tools your production increases. But half of the last year I spent diggin’ myself into new tools, scripting languages, user interfaces or code syntax. Sure, I could stay at one specific tool and push it to its boundaries. But (another fact of our time): every job need diffrent tools to get the optimum result.

patching-wah!
seen at the streets of vvvv

No matter what you do. At every step in programming there are traps. The most simple steps in thinking can make the hardest step in coding. It happened more than once, that the last detail, the final polishing can make your whole program structure obsolete. Humans and computers are far away from each other.

I am not sure if we have to live with that weight, or if things are getting better by everyday practise. If I have an idea then I think A->B. Then I start coding. It really starts good at A, but then some problem occur and the remaining evening is debugging, searching the web, search in forums etc.. I really hope, that programimng skills enhance by really good practise like every crafting skill does.

Listening suggestion:
Datassette - Computers

thinking on digital tools

thinking: from A to B, coding: from A to nowhere

Computer tools are excellent! You can solve very complex problems within a very short time. With computer based tools your production increases. But half of the last year I spent diggin’ myself into new tools, scripting languages, user interfaces or code syntax. Sure, I could stay at one specific tool and push it to its boundaries. But (another fact of our time): every job need different tools to get the optimum result.

patching-wah!
seen at the streets of vvvv

No matter what you do. At every step in programming there are traps. The most simple steps in thinking can make the hardest step in coding. It happened more than once, that the last detail, the final polishing can make your whole program structure obsolete. Humans and computers are far away from each other.

I am not sure if we have to live with that weight, or if things are getting better by everyday practise. If I have an idea then I think A->B. Then I start coding. It really starts good at A, but then some problem occur and the remaining evening is debugging, searching the web, search in forums etc.. I really hope, that programimng skills enhance by really good practise like every crafting skill does.

Listening suggestion:
Datassette - Computers

blprnt

E.Coli Art

Genetic networks map the interaction between genes. The folks over at MediaLabMadrid have cooperated with The Protein Design Group to come up with some ideas of how to visualize these networks. The result is two applications - Oracle and Landscape, both beautiful (and hopefully useful) visualizations of the genetic interaction network of Escherichia Coli.

My friend Jenn Gardy is doing similar work over at The Brinkman Lab at SFU. I’m going to get some data from her soon… and play with some visualizations of my own.

Link from Future Feeders.

blprnt

Oh Tell Targets, how I miss thee…

Toxi, Processor extraordinaire, has an interesting post on his blog about the benefits of limitations when programming. Specifically, he references the old school Flash 4 ActionScript ‘interface’ (note the use of quotation marks). I learned to program in Flash 4 - as did a lot of us in the Flash and Processing communities, and I have to say I miss some of the creativity that came out of finding ways to make the very limited ActionScript language do what we needed it to do.
020200 - analog digital design

Conference at ZKM // Blogs as a research tool

At the weekend I visited a great conference about Weblogs, Podcasting and Videojournalism at zkm, Karlsruhe. This was one of the first conferences of this topic on Germany and all participants agreed that it was the time for an overall new media update. And that this conference was a big success.

Blogger Panel

Blogger Audience

The contributions from Don Alphonso and Jonny Haeusler were very controversal. Don Alphonso said something like “Blogging is the new Punk” and “I am the prototype of a blogger”. It was a pladoyer of “everyone can blog and really should do it”. I had the feeling that he had a younger targetgroup in mind and used a pop-strategy to communicate his message. Media researcher Neuberger than revealed Don Alfonso as a professional journalist and not a punk-blogger. Read all about the first day of the conference at Glück Auf! (in german)

Blogs as research tools

At this point it was very clear, that blogs are not just content, but a technique. Blogs have ease of use, interactivity, exposure and other side-effects that are similar of journalism or classic research. Having a blog as a research-diary you are able to
- express your thoughts,
- get in contact with others,
- have a sketch of your process online,
- get feedback and new ideas.

I made the experience of my own, that this blog can be a very great tool, if you have to write an article or a paper. Many thoughs are shaped in this blog, that would be lost without it. Find more thoughts leading in this direction in my article philosophy of sketchbooks.

thinking on digital tools

Conference at ZKM // Blogs as a research tool

At the weekend I visited a great conference about Weblogs, Podcasting and Videojournalism at zkm, Karlsruhe. This was one of the first conferences of this topic on Germany and all participants agreed that it was the time for an overall new media update. And that this conference was a big success.

Blogger Panel

Blogger Audience

The contributions from Don Alphonso and Jonny Haeusler were very controversal. Don Alphonso said something like “Blogging is the new Punk” and “I am the prototype of a blogger”. It was a pladoyer of “everyone can blog and really should do it”. I had the feeling that he had a younger targetgroup in mind and used a pop-strategy to communicate his message. Media researcher Neuberger than revealed Don Alfonso as a professional journalist and not a punk-blogger. Read all about the first day of the conference at Glück Auf! (in german)

Blogs as research tools

At this point it was very clear for me, that blogs are not just content, but a technique. Blogs have ease of use, interactivity, exposure and other side-effects that are similar of journalism or classic research. Having a blog as a research-diary you are able to
- express your thoughts,
- get in contact with others,
- have a sketch of your process online,
- get feedback and new ideas.

Dr. Claus Leggewie: Demokratie 2.0

I made the experience of my own, that this blog can be a very great tool, if you have to write an article or a paper. Many thoughts are shaped in this blog, that would be lost without it. Find more thoughts leading in this direction in my article philosophy of sketchbooks.

UPDATE: Ich könnt euch die Vorträge jetzt auch Anhören! Ein Dank an das ZKM! http://www.zkm.de/muw/

toxi

1st Ave Machine

Usually I don’t do link blogging, but there’re exceptions to every rule.





1st Ave Machine is a CG animation/postproduction house in NYC, doing some very slick projects mixing (semi)generative 3d and real world footage to blur the line between “what we perceive as real and impossible”. Mutated botanics, weird worm-like creatures, glossy urchins, near perfect light matching, shaky cam, added film grain - the works. It’s a model citizen of Uncanny Valley. A very inspiring one, I think…




Now if only that’d be interactive, some of the creatures would make some cute cyber pets ;)
blprnt

Artificial Creativity

ArchiKluge is an implementation of a genetic algorithm in which populations of simple architectural forms evolve towards a best fit.

In this case the genotype of the Genetic Algorithm of ArchiKluge consists of a 64 bit Java long integer, and the phenotype of the translation of this integer in to a spatial layout, simply produced by folding the long number in to 4×4x4 lattice, each bit expressing the state of a cell in the lattice (empty of filled, 4×4x4=64). There are 2^64 or 18446744073709551616 possible combinations of the lattice. If instead of using a Genetic Algorithm, we would calculate each and every of these possibilities to find out the best ones, taking us a millisecond for each (about the time it takes in an average PC now),we would have to wait about 584,942,417 (585 million) years for the results. By the time we would be finished the computer would have evaporated or fossilised, and ourselves would provably have evolve in to something else, perhaps flying slugs or one legged lizards.

Nice stuff. There is a bounty of other interesting projects on the Army of Clerks site to peruse, as well.

Quasimondo

Flash 8: Cam Kaleidoscope

A litte eyecandy to start the week. This tiny flash file creates a realtime kaleidoscope from your webcam image.

webcam kaleidoscope

Moving the mouse around allows for some additional rotation and scaling effects. It’s amazing how easy it is to build this kind of stuff with Flash 8 now. And I’m just starting to discover what kind of weird things are possible with beginBitmapFill().

blprnt

Nomen Nominandum

Evan Westwang was commisioned by a secondary school in Norway to create a project for their network of laptops. The result was Nomen Nominandum, a digital organism that resides on the school network:

If you call for it by voice or mouse movement it may come to your machine. If you play with it in the right way it will stay until it gets bored. When sleeping it curls up on its secluded plasma screen. It has real-time moods, sleeps in on Mondays and may decide to go away for a month in January. Its growth is very slow and as with living things you may never see it grow, but rather remember that it looked completely different some years ago.”

There’s a pretty cool quicktime movie showing the creature, which is rendered in 3d and looks a bit like a dragonfly.

RobotAcid

Thumb twiddle

Thankyou k10k (warning - big fat movies):

Funky plants
Video tune

Have started making stuff for mobile phones. I’ve downloaded Processing for Mobile. It is the lord and master of bugs. It can’t do prescison math either, I had to look here to find out how to do square roots with out floating point numbers. When I’ve finished formatting the examples for java I will archive them.

Douglas Edric Stanley

Processing

Simple Processing demo

Here’s an excerpt from an email I send to the CEDAR group of French multimedia art instructors. It announces my intention to give up teaching Macromedia Director and move entirely to Processing, as well as other open standards-based environments.

De retour de Los Angeles où j’ai pu rencontrer l’équipe de Processing ainsi que quelques-uns de ses utilisateurs, j’ai décidé de franchir le pas. Les bibliothèques de Processing ont évolué depuis notre première tentative (maintenant on a du Son, MIDI, OSC, Post-Script, Port Série, Surveillance, OpenGL, …), ça marche en ligne, le projet est Open-Source, et depuis peu la plate-forme s’ouvre vers les mobiles et l’électronique (deux obsessions majeurs de l’atelier depuis quelques années). Et pour finir, c’est du Java : on peut donc l’ouvrir vers ce qu’on veut.

[…]

Bon, j’arrête là. Il y a encore beaucoup à dire. En tout cas, fini Director chez nous (de toute façon Macromedia vient de se faire racheter, les Xtras évoluent au ralentis, etc.) et j’arrête d’emmerder les étudiants avec du OpenGL/C. S’il n’est pas encore l’outil idéal — rien ne le sera — il est pas mal, et vous pouvez de toute façon l’améliorer si vous voulez. Je fonce, j’espère que d’autres y vont aussi. J’attends vos réponses.

The rest of the email suggests possible collaborations with CEDAR members.

There have been quite a few replies so far, and a lot of requests for a simple starter in French which I quickly whipped up as the following, which is translated here:

Quick and dirty method :

To start, download the software (Mac / PC / Linux) : http://www.processing.org/download/index.html

Then open Processing and enter the following text :

line(20, 20, 50, 50);

Press the PLAY button (or ctrl-r). Admire your chef d’Å“uvre.

Now if you want something that moves, replace the previous program with the following, then press PLAY again. See what happens.

void draw( ) {

    stroke( random(0,255), random(0,255), random(0,255), random(0,255) );
    line( random(0,100), random(0,100), random(0,100), random(0,100) );

}

Once you’ve gotten over your emotions, you can read this introduction: http://www.processing.org/reference/environment/

And check out some previous work built with Processing: http://www.processing.org/exhibition/

Then, start dipping into the online examples where you can directly copy the code (always short) and then modify them in your own copy of Processing : http://www.processing.org/learning/

From here on it’s up to you to find your own way.

You can also learn a bit from this comparison with other well-known environments: http://www.processing.org/reference/compare/

Quasimondo

My Flashforum Tour 2005 Lecture Notes

I have uploaded the presentation files of my Schöne neue Pixelwelt session in Düsseldorf so you can have another look at the presentation.

As an extra, you can download the source files for the draw() demo [FLA], the displacementMapFilter() demo [FLA] and the hitTest() demo [FLA].

Of course all the texts of the lecture are either in German or in Actionscript, but there’s not much text anyway. The presentation swf is neither load optimized nor is there any explanation what you’ll have to click or which keys you will have to press in the different screens. In general: use the left/right key to navigate between the pages and click the active big areas to load the demo. Here are some hints:

In the start screen click anywhere to move the logo.

In the Bitmaps() Screen the active Keys are [R] [G] [B] [A] [SPACE] and you can drag inside the bitmap as well as into the zoomed area

In the attachBitmap() demo you can rotate with the [UP] and [DOWN], scale with [+] and [-], blur with [B] and delete with [DEL]

In the draw() demo you can change the brush with [SPACE], scale with [+] and [-], rotate it with [UP] and [DOWN].

In the displacementMap() demo you’ll have to press the arrow button in order to get to the next page as I had do disable the keyboard listener in this screen.