I am currently the Senior Software Engineer at Vertual, developing a life-size virtual training system for radiotherapy (cancer treatment). The main product (VERT) is used as standard by the NHS throughout England and Wales, and by an increasing number of clinics/universities overseas.
A full installation includes an active stereoscopic display and head tracking, utilising real-world patient data to visualise anatomy and dose delivery. It is mainly programmed in C++, using OpenGL for graphics.
I have worked extensively on nearly every aspect of the software, from fixing bugs and updating the engine, through to implementing large new features. Some of my notable contributions are listed below:
I developed a parallelised method of simultaneously sampling an oblique planes from multiple arbitrarily-aligned data volumes, processing and compositing the results in the CPU, and rendering it to a texture in the GPU. This allows for features such as “Dose on CT”, as shown here.
A CT scan of the patient’s body is shown in greyscale, combined with a colour-wash showing the amount of radiation received at each point. The positions of the sampling planes and the parameters of the colour map and compositing can all be adjusted in real-time.
Using DirectShow and the QuickTime SDK, I integrated 2d and 3d (stereoscopic) video playback into the software. The video frames had to be processed and buffered in a worker thread, and then passed to the main thread to be rendered as part of the scene graph, allowing it to be moved and resized on-the-fly.
We developed a piece of custom hardware to let customers use real-world hand-held controllers with our virtual environment. It used a 32-bit ARM microcontroller. I was jointly responsible for developing the low-level firmware (in C), and for reviewing the hardware design.
One of my major tasks was developing an object-oriented future-proof library to handle the huge DICOM medical imaging data format (the specification runs to thousands of pages!). This was central to Vertual’s software as it enabled our customers to load real patient data. This task took several months of planning and implementation. During the process, I wrote a number of tools to automate code generation based on specification information (one of them is pictured here).
I had lead responsibility for Vertual’s secondary product “PEARL”, which is aimed at patient education instead of training radiotherapists. I designed a completely new user interface for it, aiming to make it look modern and usable, but distinct in appearance from VERT (the company’s main product).