A Webwide World

Instructions: Click to zoom in, alt-click to zoom out. Click on the arrows to rotate.
You can also use the arrow keys on your keyboard to zoom and rotate.


Webwide World is an "earth-like" planet that runs interactively in Web-browsers. You explore it by rotating around it and zooming in with your mouse.

I think it's beautiful.

The planet has recursive real-estate - many islands have littler islands around them, and so on. I suspect it's got many more islands all together than the number of people in the world, so there's plenty of room for everyone.

I showed this at the SIGGRAPH98 Web 3D Roundup in Orlando. There were dozens of demos there, and mine was the only one that did not use any plug-ins (I dare you to try to make one of these in VRML...).

I've also recently made a somewhat different interface that lets you zoom in and out continuously.

Technogeeky Info: This work is a variant on the "Random Fractal Forgeries" by Richard Voss, when he was working with Benoit Mandelbrot at Yale and IBM. In that work Voss introduced the idea of zooming forever into islands around islands on a fractally generated planet, and he created a nice little film demonstrating that. I wanted to try something in the same spirit using my noise function, and to make it all work in real-time on the Web.

The surface texture is formed by a summation of noise functions. Portions of this summation are used in various ways to form clouds, ocean, mountains, snow, etc. The starfield that surrounds the planet is also formed out of noise functions. The planet has atmospheric haze (how else could you breathe?).

Four dimensional noise: Java really can't compute the planet. In related work, NYU grad student Daniel Thor Kristjansson ported the planet into C++ and we got it running in real time on a 32 processor SP2, graciously donated by IBM, with each processor computing every 32nd pixel. For this, we wanted the continents to evolve interactively. So I provided Daniel with a four dimensional noise function. By dragging the planet through time, you can watch planetary evolution take place. You can see gorgeous movies of this here.

More Technogeeky Info: Java really can't compute the planet in real-time. So I've got a new, patent-pending (yes, really) progressive rendering scheme, which renders the image as a gradually finer fractal pattern. It's "optimal" in the sense that no surface point is ever computed twice, and it provides a cool impressionist look while the planet is rendering (while actually only plotting squares).

Practically, what this gives you is a good sense of the planet's appearance in well under a second, even if you're running on a slow machine where the super-quality final rendering might take more than a minute.

Way Too Technogeeky Info: Normally, rendering would become intolerably slow as the user zooms in, since I need to sum ever more frequencies of noise with increasing magnification. But rendering doesn't get any slower, because I cache low frequencies of this summation into a grid of Catmull-Rom splines, so I only need to recompute the high frequencies. The code for the Java class I implemented to do this splining is accessable here.

Further reference: If you want to read about Voss's work and related work, a good place to start is the on-line manual page for ppmforge. Also, the most beautiful fractal planets are the ones created by Ken Musgrave, who worked with Benoit Mandelbrot after Voss moved on to other things.

Future plans: I'm going to open it up for a real-estate grab at some point soon, thru a server-side registry. Anyone will be able to have their own island, to own, build on, put messages on, set up shop in, or trade. I'm going to set up the rules so that "size doesn't matter." Tiny islands with the right features (lakes, lagoons, proximity to the right cool places and folks, etc) will be worth more than big boring islands.

People can always find a really awesome tiny new island in the land grab (which can go on for quite a while) that had been overlooked. Then people can start to build their semi-automatically architected cities, trade messages, form alliances, etc.

I am also about to add a "survival of the prettiest" (brilliant concept by Karl Sims - who is a living example) evolution scheme so that people can genetically evolve their own personal planet, which can appear mars-like, venus-like, or whatever. In this scheme, the user can ask that different portions of the planet have different "looks". They can click on the portion that they think looks best, which defines a median starting point for the next set of variations, and so on. Serve when done.

Under the hood, any particular "look" is actually a set of parameter values. But it will be more fun to let people evolve their own personal planet by example than to make people tweak a bunch of sliders.

-Ken Perlin