BBoP

bbop multiobject

I once had an idea for a 3D rendering technique, and I was curious what it would look like. So I built it, learned some OpenGL, and basically had a good time. It’s currently has "toy" status, though it’s a project I come back to every now and again.

This page under construction.

The idea

The concept is this: instead of breaking objects into triangles, render them as volumes made up of squares. I call these voxel grids, though the term "point volume" is probably more accurate.

There are several interesting things we could do with this, for example:

  • Naturally vary the opacity of an object based on the number of semi-opaque voxels between the viewpoint and the object behind.

  • Break apart objects easily by separating chunks of the voxel grid.

  • Assign different gameplay attributes to different parts of the object, using the same grid structure.

I was particularly interested in the first, and the transparency effects are definitely the party piece of the current version of BBoP, as demonstrated in this video:

BBoP transparency demo

Precursors

This isn’t a totally new idea; The Build engine (of Duke Nukem 3D fame) had similar objects in its later iterations. These didn’t exhibit the fun transparency effects though, so while they are very cool they didn’t quite capture what I wanted. They were also only used for a few types of objects, such as pickups and weapons.

The game Outcast was closer in the way it used voxels for terrain, though not quite the same. Some of the things I’ve seen in my work in 3D imaging get close, but those are obviously systems with different goals (conveying information rather than looking cool).