Wednesday, December 3, 2008

Worksheet Four

This worksheet was aimed at giving an overview of what the project would entail. The key areas of what were to be addressed and the method in which the project would be carried out. It also gave some details on what I had already accomplished so far in the project.


Introduction
What is the topic and aim of the project?
The topic of the project is about creating deformable and destroyable objects using volumetric data or voxels as they are known. The aim is to find out if they are better or worse for the aforementioned purpose over using conventional polygon based models.

Issues
What issues do you want to address?
The main issue that I would like to address is the fact that current modelling techniques don't have any internal representations of structures or how the structure is actually put together. By using volumetric data this will allow for the modelling and simulation of structural properties and even the materials that the structures are made of. For example, using standard techniques, if a wrecking ball was to hit a brick wall the physics implementation would create several predetermined pieces that the wall would break into. Conversely if this was done using volumetric data each brick the ball hit could be analysed and then the corresponding mortar bonds between each brick to simulate exactly what would happen.
Research question
What is your current research question?
Using a voxel based approach to creating deformable and destructible objects what are the advantages over using traditional methods?
Addressing the Question
How do you envisage yourself carrying out the project - a short exposition of the project?
Firstly the data structures that are used to represent the volumetric data have to be researched. This will provide the basis for the project.
Secondly an algorithm for controlling the level of detail in representing the volumetric data. This is to stop voxels, if their size is less than one pixel, being rendered when it’s not necessary.
Next collision detection algorithms will need to be put into place to allow the voxel based objects to be destroyed. The idea is to have this done by a physics simulator such as PhysX or a similar program. This is where the voxel based objects will come into their own as they are simply a set of basic primitive objects.
Next the structural properties of the object will be included into the volumetric data. This will be done by either incorporating the structural data directly into the data that is being used to render the objects or as complimentary data set that holds the structures state. The second data set will allow calculation sot be carried out away from rendering on a separate thread and only update the main data set as required. Also for the deformable objects a similar approach will be used but by incorporating Hook’s law its will the shape of the object to be bent and twisted without ever breaking.
Then more complex objects will be implemented using the marching cubes algorithm. This should allow for the generation of voxel based objects from traditional mesh objects. At this stage some of the previous work may need to be revisited and “tweaked”.
Finally the aesthetics of the project will be considered. Using shaders to improve visual quality, effects such as anti-aliasing to reduce jagged edges, motion blur to disguise the rendered data set being updated and possibly depth of field to blur out objects that isn’t being focused on so as to render them at lower level of detail.
To sum up comparisons between using voxel based approach and traditional mesh based approaches will be made to give a justified answer to the question.


Progress
What have you managed to do so far and how has this influenced you vision?
So far I have worked on data structures to represent the volumetric data, and encompassed them into a class based structure. It allows for a search though the data structure and it identifies which parts of the data are to be rendered. At the moment the rendering is comprised of a series of cubes which is volumetric representations at the most basic level.
I have just finished off work on an algorithm to set the search level for the data structure. It calculates the level of detail that each level of the data structures is going to represent and if it’s less than one visible pixel in size it discontinues the search through that branch of the tree. This is to prevent unnecessary render time.
Next I plan to implement collision detection against the voxel based primitives. This is the first step towards answering the part of the research question on destroyable objects.

No comments: