Speedy Gonzales the robot

For my Building Intelligent Robots class at the University of Missouri – Columbia, we worked in teams of two to create (and recreate) a robot for a number of different tasks.

The robot’s brain is a MIT Handyboard, and we used LEGO bricks and motors to actually build the thing.  We designed him for high torque, and as a consequence he was one of the slowest robots in the class, earning him the moniker Speedy.  The sombrero came during a late night build session after taping out some boundaries on the floor…

The final project report is available, and it includes more pictures, prose, and the source code.

Graphics research framework

This is pretty much just a laundry-list of features with some pretty pictures.


Useful stuff

  • Flexible scene-graph with multiple render targets
  • Virtual File System for seamless loading from regular directories, Quake PAK archives, or ZIP files.
  • Limited GUI support (transparent text windows which can be dragged around or typed into, great for debugging)

Level formats supported

  • Quake level loading (.BSP, version 0x1D)
  • Quake II level loading (.BSP, version 0x26)
  • Quake III level loading (.BSP, version 0x2E)

Model formats supported

  • Quake II model loading (.MD2)
  • Quake III model loading (.MD3)
  • Molecule loader (.M3D)
  • 3DS loading (.3DS, incomplete)

Textures/materials supported

  • JPG
  • PNG
  • TGA
  • PCX
  • BMP
  • Q2 .WAL
  • Q3 .shader

Demo effects:

  • Tunnel
  • Infinite 3D grid
  • Tie-dye (composite effect)
  • Sinus Scanlines
  • Copperbars
  • Iterated function systems with multiple morph modes and pre-defined matricies for the morphers: Binary, Coral, Crystal, Dragon, Fern, Floor, Spiral, Swirl, Tree, Triangle, and Zig-zag
  • Particle systems: Snow, rain, grid-bugs, explosion debris

Full-screen processing:

  • Radial blur
  • Roto blur
  • Motion blur
  • Glow blur

Procedural surfaces:

  • Sphere
  • Ellipsoid
  • Cylinder
  • Rectangular prism
  • Torus
  • Superellipsoid
  • Supertoroid
  • Elliptic Torus
  • PQ torus knots
  • Springs
  • Bezier curves
  • Supershapes
  • Spherical harmonics

Misc. features:

  • Texture-mapped fonts
  • For a neat effect, text strings can be bound to any of the path objects, such as the PQ torus knot.
  • Skydome (including real sun position and CIE clear/cloudy sky luminace)
  • FBm generated heightmaps
  • Heightmap from image
  • Skybox

Generated surfaces (no parameters):

  • Pisot Triaxial
  • Triaxial Tritorus
  • Pillow Shape
  • Whitney Umbrella

These are all generated using a general purpose parameterized-surface generator with different parameter matricies.

Real-time ray tracer

Here are a few images from my real-time raytracer (taken on a 900 MHz Athlon):

It supports temporal supersampling, where only a fraction of the pixels are rendered in any given frame, so the image is rendered at interactive rates with degraded quality when being moved, but it converges to an optimal solution if the camera is left alone for a second or so (not enabled on these pictures).

I intend to add adaptive sub-sampling to increase speed without much loss in quality, and as an extension, the level of subdivision can be increased when the camera is still. This should give the speed advantages of sub-sampling without the problems in static images (missing small objects), although it will still have aliasing in animation if an object projects to something smaller than the initial grid resolution and falls fully inside of a grid cell.

It currently only supports spheres and planes, another area for expansion.

Note: The scene files are from an computer graphics course I saw online a long time ago, but I don’t remember exactly where they came from. If anyone has contact information, please let me know and I’ll add it here.

Mappy VM source code released!

Mappy 0.9d is the 4th release of the Mappy Virtual Machine and the first release to be Open Source. The complete source code to both the Mappy VM user interface and the Mappy VM core is available under the Bottled Light Public License, similar in terms to the MPL.

The binary version of Mappy VM 0.9d is an interim release to accompany the source code. In addition to a number of bug fixes, 0.9 is also considerably faster than 0.8. Most of the viewers have also been improved and the source debugger has been rewritten from scratch.

More information, binaries, and source code can be found at http://www.bottledlight.com/mappy

Mappy VM: GBA emulator and development tool

Mappy VM is a fully featured virtual machine which behaves very similar to the Gameboy Advance from Nintendo. It fully supports the CPU, input hardware, all graphics modes, DMA with correct timing, and many aspects of the sound system. Both a compiled version and the complete source code can now be downloaded from the Mappy VM website. However, it needs a BIOS image from a GBA for proper operation, as the included stub BIOS only includes an IRQ handler.

Mappy VM also provides an extensive suite of tools to assist developers in debugging and developing their games:

All of the viewers are updated in realtime as the simulation progresses, and most of them have editing capabilities. Being able to pause a simulation and edit system conditions can be extremely useful in attempting to reproduce bugs. In addition, Mappy VM also supports

saving or restoring the entire system state, making it easier to debug problems that only occur after several minutes of gameplay or to test multiple hypotheses.

The source debugger from MVM 0.9 (current version)

A number of pictures from the current version (0.9) can be seen in the online help.

Collage of features from 0.8b

Cactus Jack: The Adventures of the Deranged Space Monkeys

A 3-D shooting game where you will have to work hard to figure out how all of the objects can be tied together! The camera hovers above and behind the player, allowing you to have the best control over him as you blast away at chocolate bunnies and surplus space telescopes.

Cactus Jack was my final project for CECS 361 (now CS4610) Computer Graphics I, along with Mike Reall and Mike Sullivan.

The gameplay is constrained to 2D and is a bit like asteroids, but the graphics are 3D.

Gauntlabo

Gauntlabo was a project to create a fun little Gauntlet-style game for the GBA. Although the project never really got off the ground, mainly due to other commitments for the group members, we did create two map editors and quite a bit of concept and tile art.

I did one of the map editors and a GBA stub to display maps, mainly to get the artists started. The editor isn’t very complicated, you select a tileset (stored in a free-form bitmap), and define your metatiles (including HV flips), although they are saved in the map file itself. This isn’t really a bad thing, since you can always copy a map with decent metatiles defined, and then clear it, but it’d be one thing I’d change.

The editor has 2 standard layers, and it lets you paint properties on any tile (although there were only two properties in the game engine at the time). It has all the code to place and save entities, but no entities to place…

Feast your eyes on my programmer-art tileset (yes, that green blob is meant to be a bush)

Gautlabo Editor
Some of JayC and J-Rod's artwork
Some of JayC and J-Rod's artwork