Global Illumination - Ray Tracing

Context:

Personal

Date:

July 2001

Tools:

Visual C++, OpenGL

Downloads:

Screen shot 1

Screen shot 2

No supersampling

 Adaptive Supersampling

 4*4 stratified supersampling

 distributed shadow rays

 metaball animation (376KB divX)

This ray-tracer uses the Phong illumination model and is designed after Whitted's model. It models specular surfaces and supports reflection and refraction, and also implements adaptive supersampling. What makes it interesting is that you can view a 3D openGL representation of the scene that you are ray-tracing while it is in progress and see the rays that are fired, reflected and refracted while the image is being generated on the image plane of a virtual camera which is also represented in openGL (see screen shot 2).

    Recent developments have added distributed supersampling trading structured aliasing for noise which is much more visually pleasing. Pixels are supersampled using stratified random sampling. And smooth shadows are achieved by adding uniform spherical area light-sources and shadow feelers are shot at random locations on the sphere.

 

Real Time Visualization of Complex Terrains

Context:

Personal

Date:

May 2001

Tools:

Visual C++, OpenGL

Downloads:

Screen shot 1

Screen shot 2

Dynamic lighting movie (divX4)

  Visual C++ code/data (1.4MB zip)

 
 
 

This is an extension on my MSc project. The goal is to produce realistic real-time dynamic lighting of the decimated terrains to improve the visual realism. The pre-computed horizons are exploited to produce shadows caused by self occlusion. The local illumination and self occluding shadows are stored in textures that are updated at a user specified interval in order to support dynamic light sources. These maps are blended together with the diffuse texture of the terrain to produce a complete solution. Future positions of the light sources are estimated and blending used between the discrete solutions to the lighting over time in order to produce smooth changes in lighting. Currently this is a multi-pass algorithm I intend to extend it with multi-texturing asap.

 

MSc Thesis - Real Time Visualization of Complex Terrains

Context:

MScVIVE at UCL

Date:

September 2000

Tools:

Visual C++, OpenGL

Downloads:

Thesis screen optimised pdf (1357KB)

Thesis print optimised pdf (9802KB)

  San Francisco height field

  
 
 
 

This project represents the Masters Thesis for the MSc Vision, Imaging and Virtual Environments course undertaken at University College London.
     The project deals with visualizing large scale terrain models. Such models often contain hundreds of millions of polygons which rendering hardware is unable to handle in real-time. One of the solutions to this problem is to approximate the surface using fewer polygons by simplifying the surface yielding a multiresolution levels-of-detail representation. Another is to cull away the parts of the terrain that lies outside the view-frustum or is occluded by the terrain itself.
     This thesis presents a framework that uses the above two techniques to drastically reduce the number of polygons used to represent a given terrain. It employs a hierarchical continuous levels-of-detail representation that simplifies the terrain by orders of magnitude with little or no loss in image quality. The accuracy/speed trade-off can easily be controlled by setting a parameter bounding the maximum screen error measured in pixels. Furthermore the technique employs hierarchical occlusion culling using pre-computed horizons. By pre-computing the horizon for all points in the terrain the technique can compute occlusion regions for blocks in the terrain. These blocks are organized hierarchically and can be culled away using very little effort based on the position of the viewpoint.
     Results have shown that this technique is very powerful and allows real-time visualization of very large terrains.

 

Virtual Environments - Presence Experiment

Context:

MScVIVE at UCL

Date:

June 2000

Tools:

3DStudio MAX, DIVE, VRML, Tcl/Tk 

Downloads:

1024*768 outside view 1 (111KB)

1024*768 outside view 2 (111KB)

Word 2000 report (427KB zip)

.pdf report (720KB)

 
 
 

This project was carried out as a coursework on the Virtual Environments module of MScVIVE at UCL. The aim of the project was to build a virtual environment that would be used in an experiment to measure the sense of presence in the subjects. The experiment  explored the use of an alternative way of measuring the relative subjective sense of presence using the so-called repertory grid technique based on a theory set forth by George Kelly: The Personal Construct Psychology. An in-depth description and results of the experiment can be found in the report.
    The virtual world consists of rooms connected by a virtual space station. The DIVE system was used to to drive the world and Tcl/Tk scripts manipulated the scene graph to produce interactivity and animation. The modelling was done using 3DStudio MAX 3.1 and imported into DIVE as VRML objects. The virtual world was run on an SGI Infinite Reality machine with  192Mb memory using Fastrak trackers and a Virtual Research V8 head mounted display.

 

2D Compositing - I Could Have website

Context:

Collaboration

Date:

May 2000

Tools:

Photoshop, Poser, 3DStudio MAX, FrontPage 2000

Downloads:

Computer Game Character (71KB)

Dairy Model (88KB)

The Best (79KB)

  
 
 
 

On this project I assisted artist Charlotte Thrane in realizing a website and producing a number of manipulated digital images. My role was to deal with the technical side of realizing the images and building the website. In the images the artist is put in a number of situations that would have been impossible to realize without image manipulation. In the above image for instance the artist is depicted as a stereotypical computer game character. The website can be found at: http://www.icouldhave.net
    To realize the images Adobe Photoshop was used to perform the compositing of backgrounds and images of the artist. The images were taken using a Sony TRV900 digital camera. In the image above the background was created using 3DStudio MAX 3.1 and the body was realized using Poser 4 and Photoshop 5.5 was used to seamlessly add the artist's face onto the Poser character.

 

Image Modeling - Image Intensity Distributions

Context:

MScVIVE at UCL

Date:

March 2000

Code:

IDL 5.2

Downloads:

  
  
 
 
 
 
 

This project was carried out as a coursework on the Physics, Psychophysics and Physiology module of MScVIVE at UCL. The project deals with statistical models of natural images. Looking at an image as a set of pixels it is clear that the combinatorial space of images is very large i.e. there exist 167772161000000 different 1000*1000 pixel true-colour images. Obviously if one were to draw images from this space randomly most of them would not resemble anything natural; they would be random noise. One of the distinctive features of natural images is that they contain particular types of structure, and research has indicated that this structure is present within ranges of scale. This and the fact that the appearance of fractals resemble naturally occurring texture is strong evidence of the claim that statistical models and fractals can be used to model natural images such that most of the perceptually relevant information is retained. This suggests that natural images occupy an infinitesimally small part of the space of all possible images, which means that natural images are highly redundant and are suitable for compression, which is a research field in itself. In the project a number of natural images of outdoors scenes were analysed to see how well a Gaussian distribution models natural imagery and the power spectra of the images were examined  to see whether they exhibited fractal behaviour. IDL version 5.2 for Windows was used to implement the code.

 

Global Illumination - Radiosity

Context:

MScVIVE at UCL

Date:

January 2000

Code:

MS Visual C++, OpenGL 

Downloads:

  Visual C++ code (29KB zip)

  .pdf report (1012KB)

  mesh (79KB jpeg)

  wire frame (295KB jpeg)

  interpolated (55KB jpeg)

 
 

This project was carried out as a coursework on the Graphics module of MScVIVE at UCL. The radiosity technique is part of the global illumination family of techniques which are used for high quality rendering of 3D environments. The radiosity technique subdivides a scene into a discrete mesh of patches and elements and shoots energy from patches to  elements. This is done recursively until equilibrium is reached. Radiosity creates very realistic illumination and models phenomena such as colour bleeding and soft shadows. This project extends a classical radiosity implementation  using the hemi-cube in order to overcome artifacts at shadow boundaries and high gradient areas. This is done by subdividing (square) elements which has sufficient different radiosities at the corner vertices. The effect of this is that shadow boundaries are rendered using a finely subdivided mesh and large uniform areas are rendered using a relatively coarse mesh. Interpolation is used when rendering the resulting mesh.
    The project involved implementing the adaptive subdivision scheme by modifying a simple hemi-cube implementation created by Eric Chen (Apple Inc. 1990). The image above was rendered using my implementation.

 

Image Processing - Comprehensive Colour Normalisation

Context:

MScVIVE at UCL

Date:

January 2000

Code:

IDL 5.2

Downloads:

  
 
  
 
 
 
 

This project was carried out as a coursework on the Physics, Psychophysics and Physiology module of MScVIVE at UCL. The practical is concerned with issues of colour imaging and processing. The impact of illumination on objects has several desirable properties with object recognition in mind, and it can be shown that it is possible to remove image dependencies due to lighting geometry and illuminant colour, which renders object recognition based on colour distributions feasible. Moreover, it can make object recognition systems more robust with respect to changing lighting conditions, which are often unpredictable in many real applications. This feature of colour constancy has been analysed in depth in the report. IDL version 5.2 for Windows was used to implement the code.

 

Machine Vision - Object Recognition

Context:

MScVIVE at UCL

Date:

January 2000

Code:

IDL 5.2

Downloads:

 
 
  
 
 
 
 

This project was carried out as a coursework on the Machine Vision module of MScVIVE at UCL. This project deals with invariants and image measurement. Invariants - as the name implies - remain unchanged for certain imaging transformations and are thus useful tools for object recognition and verification. Using invariants it is feasible to some extent to disregard viewing conditions, making it possible to do object recognition without constraining the viewing conditions and thus avoiding painstaking calibration procedures. In the following a system will be implemented that computes invariants for viewpoints that are normal to the view plane, represents an affine transformation and a perspective transformation. IDL version 5.2 for Windows was used to implement the code.

 

Machine Vision - Canny Edge Detector

Context:

MScVIVE at UCL

Date:

November 1999

Code:

IDL 5.2

Downloads:

 
  
 
 
 
 
 

This project was carried out as a coursework on the Machine Vision module of MScVIVE at UCL. Edge detection is an important image processing technique used in many applications such as object recognition and industrial inspection. It is a hard problem to solve since edges in images are ambiguous due to noise, lighting conditions etc. Canny described an efficient three step edge detection technique which produces good results. The technique uses Gaussian filtering, non-maxima suppression and hysteresis to achieve its goal. This project implements this technique using Interactive Data Language. The implementation includes all three steps as well as Deriche recursive filtering. The report includes an in depth discussion of edge detection and a description of the implementation with experimental results. The image above was computed using my implementation (the source image has been overlain).

 

Modeling & Character Animation - Eye

Context:

Personal

Date:

November 1999

Tools:

3D Studio MAX 3.1, Photoshop 5.5

Downloads:

3DS Max 3.1 source (333KB zip) 

Large version of image (69KB)

1024*768 close-up (57KB)

1024*768 bone structure (68KB)

 
 
 

The Eye creature was created using Nurbs. The eyeball and toenails are separate objects and the body is one large Nurbs surface, which has the advantage of allowing the user to determine the tessellation of the model later on. This way different level of detail models can be created using the same model. Bones Pro was used to build a custom skeleton for the creature with a spine and three tendons for the toes. IK was set up for the hierarchy with appropriate constraints on the joints and Physiqye is applied to the body to deform it when animated. Handles are placed at the ends of the chains to ease manipulation when animating the character. A procedural bump map (cellular) was used to model the scaly texture of the skin and the blotches were modeled using a procedural texture map (splat). To create the image shown above an image was used as background and the camera and lighting was adjusted to match the image. Shadows on the foot was created using cylinders representing the railing. Finally the image was retouched using Photoshop 5.5.

 

Local Illumination - Rendering System

Context:

BScCS at University of Copenhagen

Date:

May 1999

Code:

MS Visual C++

Downloads:

Visual C++ code (68KB zip)

  
 
 
 
 
 

This project was carried out as a part of the Graphics module of BScCS at University of Copenhagen. Local illumination is a way to render 3D environments efficiently. The rendition of a surface is based only on its material properties and its spatial relation to any light sources in the environment. This precludes effects such as shadows, reflections, colour bleeding which all hinges on interaction between several surfaces in the environment. However the model is in widespread use due to its efficiency; it is mainly used in interactive applications. The Phong illumination model is used together with Phong shading (normal interpolation) or Gouraud shading (colour interpolation) to calculate the colours of pixels on a surface.
    This implementation is a full fledged object oriented rendering system. It supports n-polygon meshes and Bezier surfaces which are rendered using subdivision. It uses the Phong illumination model with an unlimited number of light sources and supports flat, Phong and Gouraud shading. The viewing is modeled in a general way using Foley's approach (see Foley et al: "Computer Graphics: Principles and Practices").
    The image above was rendered using my implementation, the teapot consists of 32 Bezier surfaces. The code uses Microsoft OpenGL to render pixels to the screen.

 

Modeling & Animation - Sentry

Context:

Personal

Date:

May 1994

Tools:

3D Studio R4, 3D Studio Max 3.1

Downloads:

3DS Max 3.1 source (133KB zip) 

1024*768 Screen shot 1 (127KB)

1024*768 Screen shot 2 (132KB)

 
 
 
 

This scene was initially created in 3D Studio R4 but later ported to 3D Studio Max 3.1. It is a model of the sentry weapon system used in the directors cut of the film Aliens. Extensive lofting was used to model the corridors and the weapon itself is created from primitives set up in a hierarchy to ease animation. The scene consists of 391 objects with 23636 faces, 11 lights and 3 image maps.

The code and downloads may be used for any non-commercial purpose.