Software Development
Software development is actually what I know best. Prior to joining the
NCCA I worked at Cambridge Animation Systems
developing Animo. Before that I worked for other non-animation software
companies, and researched computer architecture.
Most of these apps are available for MacosX, Win32, Irix, freeBSD and Linux(x86)
though not all are compiled for all platforms. If there's a particular app you need for your platform, then let me know.
This application lets you view your Mac webcam from an iOS device on the local nework. However that's really just the start of it, as it allows you to write MacOS apps which use the touch device as an extension of their own display - drawing, and recieving multitouch info. Simply install the SceenPad app on your iOS device, and then it can talk to any screenPad compatable client.
My first iPhone app is a simple calculator to see how much diskspace a movie project is going to need.
A simple app to let you nagivate around theatrical plays marked up with Play.dtd XML. All of Shakespeares plays are available in this format, so I thought it might be usefull to someone.
DMX Lighting
I've recently been working with "real" lighting systems - the sort of things you see at gigs. Here are a few programs that I've written that might be usefull to some people
Photon Map Source Code
Angel uses photon mapping, based on code by Henrik Jensen (from his excellent book). I've decided to release this code so you can use the same code as Angel does to create, store, load and access photon maps. Even if your renderer doesn't support GI, you'll at least be able to access maps created in Angel.
Filter Simulator
I'm currenlty researching how photographic approaches can be applied in computer graphics. This Mac Application allows you to experiement with the effect of various filters on spectral light sources.
CoHabit - Audio Unit Host
This Mac Application allows you configure a set list of Audio units, and set between them quicky and easly during a live performance.
Fast Power Function
When porting Angel to the PS2 I needed to vectorize the power function (used for specular highlights). The resulting Power Function could generate 4 powers using only 7 VU instructions - resulting in a massive speedup.
SLander
When developing RenderMan shaders it is common
to repeatedly render a trivial scene at low res to observe the effects
of the code under development.
SLander is a BMRT compatable shading engine
which currently is configured to render a simple plane or sphere with a number of
attatched shaders allowing the results to be viewed more rapidly than would
be possible if full geometry was considered.
Buffy
It's been a long time making it into a portable form, but the
Buffy shader
debugging system is now available for download. Buffy allows shaders to be
single stepped, and variables to be inspected as the shader is running.
Kendra
For those that would rather paint than code,
Kendra
is a basic 3D painting
system. Though not exactly Amazon Paint, it allows textures to be quickly positioned
on geometry described by rib files, and saved as tiff's for import into
a more powerfull 2D painting system.
Angel
Angel
is a renderer which I'm developing as part of the Buffy project.
It's not quite RenderMan compliant, but is
close enough for many practical uses.
HDR Tools
They're currently pretty flakey, but I've started writing a few toos for HDR . They're very basic but if you find them usefull, maybe I'll improve them.
Faith
Faith
is an experimental tool for managing renders, by spliting them into layers.
Inoise
Inoise
Anti-alising shaders is a continual battle.
Inoise
is a filtered verision of
the standard Perlin Noise function, and produces signifigantly better images than simple frequency clamping.
Ethel
Mental Ray's core rendering engine is excellent, but its API's are difficult
to work with, and have limited support.
Ethel converts Rib files into Mental Ray compatable MI files, allowing
Mental Ray to be mixed into a RenderMan based production pipeline.
HaRM
RenderMan allows procedural pritives, where
an external program can be called mid-render to generate additional geometry
for a scene as it's needed.
HaRM demonstrates how
this can be used to invoke
Houdini on the fly,
and extract objects from hip files as required by the scene, rather than
generating rib code for all primitives a-priori.
Edmonds
New in PRMan3.9 is the RiBlobby functions, allowing metaballs to be evaluated
at rendertime. While this is relativly well documented in Pixar''s
Application note #31, and appears to be well designed and thought out,
the actuall RIB syntax is more than a little intimidating, effectivly being
machine code for a virtual dataflow machine. Edmonds
is an assembler for this machine, taking a human readable description of
the required object and producing the required RIB description of the object..
Risch
Houdini's CHOPs are an excellent framework for
creating interactive work. However while they provide good realtime control
over the 3D parts of Houdini, there is no simple
way to control the replay of pre-rendered sequences.
Risch
addresses this by allowing CHOPS to act as a jog wheel for an image replayer
running on a remote machine.
3D Stereo Imaging
Of course the universe is only 2D but by
combining pairs of images
we can create an illusion of the theoretical so called "Z" axis...
Leph
Leph is a basic two pass mesh warp/morphing tool.
Gamma Calibration
Many systems do a very bad job of gamma correcting images for display,
and most users consider Gamma to some kind of magic (if they've head of
it at all!). Here's some
advice on gamma management,
along with some tools to help you get the best from your display.
Padnumber.c
Shell script is great for mucking around with frame sequences. However one thing that is tricky is generating padded frame numbers. I therefore write a C Program so I could easily pad numbers with leading zeros.
Pixmap Library
Virtuarly all these apps are based on the
NCCA Pixmap library.
I've passed this on to a few people, who keep hassling me for upgrades and ports, so I've uploaded some of the libraries. They include routines for loading and saving tiffs and jpegs, drawing of lines, triangles, and quads, Zbuffering, resampling and simple windowing.
Arduino Mumblings
I've been playing with some Arduion boards, and while I've not done anything neat with them yet, they are pretty cool. Here are some usefull bits I've figured out so far...
Synthesising a Hammond
This has nothing to do with graphics, but it sounds pretty nice... How to make a dead sampler sound like a B3.
Ian Stephenson.
DCT Systems
NCCA,Bournemouth
University