Home

Making Worlds: 2 - Scaling Heights

Aug 30, 2009

Last time, I had a working, smooth sphere mesh. The next step is to create terrain.

Scale

Though my goal is to render at a huge range of scales, I'm going to focus on views from space first. That strongly limits how much detail I need to store and render. Aside from being a good initial sandbox in terms of content generation, it also means I can comfortably keep using my current code, which doesn't do any sophisticated memory or resource management yet. I'd much rather work on getting something interesting up first rather than work on invisible infrastructure.

That said, this is not necessarily a limitation. The interesting thing about procedural content is that every generator you build can be combined with many others, including a copy of itself. In the case of terrain, there are definite fractal properties, like self-similarity at different levels of scale. This means that once I've generated the lowest resolution terrain, I can generate smaller scale variations and combine them with the larger levels for more detail. This can be repeated indefinitely and is only limited by the amount of memory available.

Making Worlds: 1 - Of Spheres and Cubes

Aug 23, 2009

Let's start making some planets! Now, while this started as a random idea kind of project, it was clear from the start that I'd actually need to do a lot of homework for this. Before I could get anywhere, I needed to define exactly what I was aiming for.

The first step in this was to shop around for some inspirational art and reference pictures. While there is plenty space art to be found online, in this case, nothing can substitute for the real thing. So I focused my search on real pictures, both of landscapes (terran or otherwise) as well as from space. I found classy shots like these:


Hopefully I'll be able to render something similar in a while. At the same time, I eagerly devoured any paper I could find on rendering techniques from the past decade, some intended for real-time rendering, some old enough to be real-time today.

Making Worlds: Introduction

Aug 21, 2009

For the past year or so I've been reacquainting myself with an old friend: C++.

More specifically, I've been exploring graphics programming again, this time with the luxurious flexibility of the modern GPU at my fingertips. To get me started, I shopped around for an open source engine to play with. After trying Irrlicht and finding its promises to be a bit lacking, Ogre turned out to be a really good choice. Though its architecture is a bit intimidating at first, it is all the more sound. More importantly, it seems to have a relatively healthy open-source community around it.

So with Ogre as my weapon of choice, I've started a new project: Making Planets. More specifically, I want to procedurally generate a 3D planet, viewable from outer space as well as the ground (at flight-sim levels of detail), which can be rendered real-time on recent graphics hardware.

JavaScript audio synthesis with HTML 5

Aug 12, 2009

HTML5 gives us a couple new toys to play with, such as <audio> and <video> tags. On the visual side, we've already seen live green-screening with Canvas and JS, and in terms of audio there's been several JS drum machines already. But the question I was interested in was: can you use JavaScript to stream live data into these media tags?

Enter the JavaScript audio synth. It generates a handful of samples using very basic time-domain synthesis, wraps them up in a WAVE file header and embeds them in <audio> tags using base64-encoded data URIs. Each sample is then triggered using timers to play the drum pattern. It's quite simple to do and runs fast enough in HTML5 capable browsers to be unnoticeable. Yes, it sounds tinny, but that's just because I'm too lazy to design proper filters for toys like this.

Rick Falkvinge on the Swedish Pirate Party

Jul 16, 2009
Pirate party

Last month, I attended the Open Web Vancouver conference. Without a doubt, I thought the most interesting talk at the whole conference was Rick Falkvinge's keynote session about the Swedish Pirate Party.

You may have heard of the Pirate Party. Founded in 2006, the popular image is that of an anarchist movement that grew out of the sense of entitlement of media pirates on the internet. It is said that these people want to abolish modern copyright for purely selfish reasons. Unfortunately this is not just a tired old stereotype, but completely wrong.

Thankfully, Rick's entire session is available online. In one hour, he calmly and intelligently explains his vision. He shows that the Pirate Party's agenda is about civil liberties, and part of a discussion that has been going on for centuries. By tracing back the history of copyright, he shows a clear pattern: when new technology threatens established powers and businesses, those powers try to use legislation to protect themselves and maintain control. It started with the printing press, and continues today with the internet and file sharing technologies. He shows how we've already allowed the establishment to create legislation that tries to control its true potential, and how we need a political countermovement that represents all the interests of a free, digitally liberated society.

You can watch the entire presentation below. The slides with illustrations and stats are available as well.

Part 1:

Part 2:

Our New Art Wall

May 28, 2009

We finished our new office decorations today, with chalk on blackboard paint. It covers the hideous wallpaper very nicely.

Check the YouTube video below, or go to Vimeo for a high-def version.

Yes, we cheated, shamelessly, by using a projector, but it looks rad!

Based on:

Recent comments

Images