PROJECT WRITE-UP PROJECT PROPOSAL PROGRESS REPORTS
PROGRESS DIARY REFERENCE LIST LITERATURE REVIEW
SHORT PAPER PROJECT POSTER
GRAPHICS PROJECT CONTACT DETAILS
Click here to view some IMAGES I have created.
(C) M.C. Escher 1952
Procedural Modelling in Renderman
Renderman is a graphical language used for describing 3D scenes rendered with photo-realistic quality. This quality is due in part to the ability to program shaders for the various surfaces which closely mimic the properties of the equivalent real-world material. This ability to perform procedural shading is enjoying a new surge of popularity as procedural shaders are now being implemented in the latest graphical hardware and software. Many of the spectacular graphical effects in recent computer games are due to the use of these shaders.
At present, geometrical structures in Renderman are specified explicitly as collections of points forming polygons and surfaces. The goal of this project is to provide functionality, similar to the shading language, but to support the generation of objects within the scene. Procedural modelling provides several benefits over the use of objects created explicitly by hand:
1. The object can be parameterized. A procedural model of a house for example, may have parameters stating the number of stories, or number and type of windows and doors. Thus one procedure is capable of generating many models, all different. This is significant when faced with the problem of designing a city with thousands of building, or a crowd scene with thousands of individuals.
2. The model can be generated at a given level of detail. Parts of the model that are not visible need not be created. Sub-components of the model can be generated at different levels of detail depending on their relative size when seen from the viewer.
3. Models can be generated that change over time, for scenarios such as waves on the surface of the ocean.Effects such as motion blur can be achieved by combining models taken at different points in time.
4. Models can be aware of their own surface shading requirements, removing the responsibility from the end-user.
This project will involve:
* Designing a procedural modelling language and data-structures. This should be consistent with the approach used by the Renderman shading language, but may also draw inspiration from the approaches used by 3D modelling packages and other research projects.
* Writing a parser and compiler for the procedural modelling language. This will use techniques taught during the 3rd year compiler course. The most likely scenario will be of a C-like procedural modelling language being compiled into C++ code, which will then be compiled and linked in with supporting libraries and the Renderman application.
* Implementing procedural modelling data-structures and support functions.
* Providing a proof-of-concept by procedurally modelling one or more of the following:
* jungle scene.
* Rapid Procedural-Modelling of Architectural Structures, [http://www.charismatic-project.com/ProceduralModelling.pdf]. A description of the use of procedural modelling for generating buildings.
* Scripting languages for 3D modelling packages, such as Maya. Many 3D modelling packages support a scripting language for generating and manipulating models. These are worth examining to determine the appropriate language structures to support.
* L-systems are used for the procedural modelling of plants (and other growing structures).