3D matrices, take 2.

Two years ago I tried writing my own rendering engine using Quickdraw, Max/MSP, and homespun matrix libraries, but found that my ability to maintain model data in Max was pretty lacking.

Since that time, a few developments have made this easier:

  • I found Meshworks, a stripped-down 3D modelling package whose sole purpose is to generate low-density mesh surfaces for use in realtime applications such as games. Its data format is text-based, and is superbly easy to interpret. This provided me with a more direct way to create simple shapes, so I wrote a PHP parser/manipulator (link coming soon) that could work with the provided data.
  • Cycling74 released Jitter, a matrix-processing library for Max/MSP that provides a hook into OpenGL rendering output, so I don't need to dive into depth-sorting or other nastiness inherent in 3D.
  • I discovered Open Sound Control, a Berkeley-developed standard for sending music-related data packets over a network. A Max/MSP implementation exists, and I wrote a PHP OSC parser/generator that communicates via sockets, allowing me to perform geometrical calculations in a more familiar programming setting, while letting Jitter pick up the rendering slack. Geometry is generated on one machine, and displayed on another.

At right are the initial results, with alpha transparency and geometric repetition.

Next Steps:

  • Color, using HLS color model for smooth transitions through geometry.
  • Texture, using images or video to texture surfaces and provide photo-like appearance.

go home