Download the reports in Word format Progress Reports:
March 12 19 26   March 12 19 26  
April 16 23 30   April 16 23 30  
May 7 14 21 28 May 7 14 21 28
July 30       July 30      
August 5 12 19 26 August 5 12 19 26
September 2 9 23   September 2 9 23  
October 7 14 21 28 October 7 14 21 28
November 4       November 4      

 

Progress Report: 12 March 2004 Top

 

The following information has been collected, read and understood:

 

.     Wildwood: The Evolution of L-System Plants for Virtual Environments - Kenrick Mock (Intel Corporation, Oregon)

 

Symbol use in L-Systems

F, f, +, -, [ and ]

Crossover and mutation of L-Systems

 

.     L-System Plant Geometry Generator - Hung-Wen Chen (Cornell University)

 

3D symbols (adding heading, left orientation and up orientation)

&, ^, <, >, | (pitch down, pitch up, roll left, roll right, turn around)

&, ^, *, /, % (in another paper)

use of { and } to define a polygon

 

.     Modelling Leaf Shapes Using L-systems and Genetic Algorithms (Yodthong Rodkaew et. al. - Chulalongkorn and Iwate Universities, Japan)

 

Association of parameters with symbols

Tag-functions (more research needs to be done here in order to fully understand the syntax and use)

Genetic algorithms (fitness measure à similar to Wildwood, above)

GA: random selection, modification (by crossover, mutation and reproduction), repetition until satisfy terminating condition

Fitness functions

 

.     Various collated Internet research

 

Deterministic, context-free

Bracketed ([ and ])

Stochastic (probability for rule selection)

Parametric (more work needed here)

Tabulated (set of productions in a table can be activated or deactivated as needed) à simulation of temperature change, light change etc.

Timed (lifetimes associated with L-Systems) (more research needed here)

 

Progress Report: 19 March 2004 Top

 

Plans for the week:

 

This week I planned to research more on L-Systems, specifically timed, stochastic and parametric. I also hoped to download some L-Systems software and test out some L-Systems on it.

 

Results:

 

This week has not been as productive as it perhaps should have been. The main reason for this is that the IT department has locked my computer from the Internet due to an exceeded quota. This has meant that I was limited to the research material I had already downloaded. As such, I have done some more reading on L-Systems but have not been able to learn how to implement the different methods.

 

Plans for next week:

 

I shall download the L-Systems software (perhaps the L-Arbor mentioned in the ACM Crossroads paper) and learn how to implement stochastic, timed and parametric L-Systems using it.

 

I shall also research the method used by De Reffye (SIGGRAPH 1988) to procedurally generate plants as a potential alternative to L-Systems.

 

An important goal for this week is also to set up my webpage, a task which I have, until now, been putting off. I hope to have it up and running by the weekend.

 

Progress Report: 26 March 2004 Top

 Plans for the week:

 This week I planned to download some L-Systems software and design some L-Systems. I also planned to research the de Reffye method of plant modelling (“Plant Models Faithful to Botanical Structure and Development”). Finally I planned to post my project website.

 Progress:

After overcoming the problem of being locked from the Internet, I was able to download some Unix software for L-Systems and played around on it for a while. I have not been able to design my own L-System yet but I plan to overcome that obstacle during the vacation.

 I read the de Reffye paper and was very excited by his method. His modeling method makes use of known botanical rules of growth and structure to model the plants. It involves the application of probabilities and variable parameters which allows for the creation of different individuals of a particular species. The method looks to be a solid one that could be implemented without too much hassle. However, for the scope of this project, this method is not viable and so I will not pursue it further unless time permits (ha ha).

 The website was successfully written and posted this week – complete with project proposal, progress reports, daily diary and project writeup (which, obviously, isn’t there!)

 Another course I pursued this week was the researching of procedural modeling techniques. This involved the reading of two papers in particular.

 

 Procedural modeling involves:

v     storing a number of structure varieties

v     defining a set of rules and functions

v     development of a scenegraph

 A scenegraph is a data structure which stores all the information about the geometry structure.

The modeler automates the production process.

Detail is handled so:

v     texture maps are shown when viewed from a distance

v     from a specified closer distance, the background geometry starts to be switched in

v     when viewed from close-up, the underlying geometry actually replaced the texture maps

 This paper also threw up a number of papers to be looked at:

v     “The architectural design of virtual environments” – Bridges et al.

v     “Latest Approaches to Modelling and Rendering” – Browne et al.

v     “Scene Assembly to Large Scale Reconstruction” – Flack et al.

v     “Binding Virtual Environments to Toolkit Capabilities” – Shames et al.

v     “Rendering of Large and Complex Urban Environments for Real Time Heritage Reconstruction” – Wright et al.

v     “Parametric Design” - Monedero

 

 This paper describes a method for procedurally modelling virtual worlds consisting of a number of similar structures. It focuses specifically on city scenes but can easily be extended to plant scenes.

 The method describes three basic elements of a modeller – view frustum filling, a cache and a geometry generator. View frustum filling involves determining the actual object space visible and restricting the rendering to only those objects which are visible or potentially visible. The cache holds recently used objects which allows object reuse without regeneration. The geometry generator is a collection of object types all of which are generated from a seed value with optional parameters. This could easily be extended to the use of stochastic L-Systems.

 The problems with this method are the lack of collision detection and the lack of change tracking. This involves the rendering of effects of age and environment of objects.

 This paper suggests a possible framework to use in my procedural modelling. It also lists a number of papers which could prove useful:

 v     “Real Time Design and Animation of Fractal Plants and Trees” – Oppenheimer et al.

v     “Procedural Modelling of Cities” – Parish et al.

v     “Procedural 3D Content Generation” – Macri

v     “Virtual Gardening” – JFP Inc.

 Plans for next week:

 During the April vacation, I plan to work more with the downloaded L-Systems as well as download and use some Windows L-System environments. I also plan to find and read the papers mentioned above and hopefully solidify my approach to procedural modelling.

 

Progress Report: 16 April 2004 Top

 Plans for the week:

 During the April vacation, I planned to work more with the downloaded L-Systems as well as download and use some Windows L-System environments. I also planned to find and read a number of papers and solidify my approach to procedural modelling.

 Progress:

 I have read and summarized the information gleaned from the following papers:

 v     “Procedural Modelling of Cities” – Parish and Müller

v     R. Mech and P. Prusinkiewicz. Visual Models of Plants Inter-acting with Their Environment. In SIGGRAPH 96 ConferenceProceedings, pages 397-410, August 1996

v     PRUSINKIEWICZ,P.,HAMMEL,M.,HANAN,J.,AND M¡ ECH,R. Visual models of plant development. In Handbook of formal languages, G. Rozenberg and A. Salomaa, Eds. Springer-Verlag, Berlin, 1996

v     HONDA,H.,TOMLINSON,P.B.,AND FISHER, J. B. Computer simulation of branch interaction and regulation by unequal flow rates in botanical trees. American Journal of Botany 68 (1981), 569–585

v     “Voxel Space Automata” – Greene (SIGGRAPH 89)

v     “Mathematical Models for Cellular Interaction in Development” – Lindemayer (Journal of Theoretical Biology, 1968)

v     “Developmental Models of Herbaceous Plants” – Prusinkiewicz, Lindenmayer and Hanan (SIGGRAPH 88)

v     “Plants, fractals and formal languages” – Smith (SIGGRAPH 84)

v     “Realistic Modeling and Rendering of Plant Ecosystems”

v     “Compositing 3-D rendered images” – Duff (SIGGRAPH 85)

v     “Ray tracing complex model containing surface tessellations” – Snyder and Barr (SIGGRAPH 87)

v     “A model of competition incorporating plasticity through modular foliage and crown development” – Sorrensen-Cothern et al. (Ecological Monographs, 93)

v     “Creation and rendering of realistic trees” – Weber and Penn (SIGGRAPH 95)

 I believe I more fully understand the workings of procedural modelling and I plan to develop a pseudo-code outline by next week.

 Plans for next week:

 I plan to download Maya and begin to develop the outline for my procedural modelling language by focusing on the structure and syntax of MEL and Renderman’s shader language. I also plan to develop a pseudo-code outline of my approach to procedural modelling with specific focus on the structure of the data types to be used.

 

Progress Report: 23 April 2004 Top

Plans for the week:

This week I had planned to download Maya and begin to develop the outline for my procedural modelling language by focusing on the structure and syntax of MEL and Renderman’s shader language. I also planned to develop a pseudo-code outline of my approach to procedural modelling with specific focus on the structure of the data types to be used.

Progress:

This week I got distracted from my original plan and ended up focusing on the tree creation model proposed by Weber and Penn in their paper “Creation and Rendering of Realistic Trees”. I spent the week attempting to understand the complex mathematics and the parameters they used. I believe I succeeded but this did not add anything to my project, as this method is too complicated to realistically use in my procedural modeling language.

I also looked more closely at the model put forward in Prusinkiewicz and Mĕch for interaction between trees and their environment. This, I believe, is a viable model to use in my program and I hope to be able to integrate it into the L-Systems I develop.

Plans for next week:

This week, I will do as I had planned to do this week: namely, develop my procedural modeling language and solidify the procedural modeling approach to be adopted.

 

Progress Report: 30 April 2004 Top

Plans for the week:

This week, I planned to develop my procedural modeling language and solidify the procedural modeling approach to be adopted.

Progress:

I focused on three papers I had studied in order to help me to solidify my approach. In the first of these, “Realistic Modeling and Rendering of Plant Ecosystems” by Deussen et al., an entire system had been created in order to model plant scenes. While I will not be creating an entire system, parts of their system did help me:

v     Quantization – the clustering of a number plants within their parameter space and representation of this cluster by a representative plant.

v     Quantization for other elements such as branches, leaves and flowers

v     Plant density representation by dot to position conversions

v     Use of XFrog

 The second, “Undiscovered Worlds” by Greuter et al., is mostly focused on creating a system that will allow regeneration of already rendered subscenes. That is, it works on the assumption that a tour of the scene will be undertaken and the user may choose to revisit certain areas. While this aspect will not be the focus of my project, this paper did illustrate the relationship between the geometry generator (here, the L-System translator) and the renderer (OpenGL).

 The final paper I looked at was “Visual Models of Plants Interacting with their Environment” by Prusinkiewicz et al. This paper helped me to get a better idea of the structure of the environment data - how different plants will interact with each other.

 This week I also downloaded XFrog3.5 and XFrogTune, two products from Greenworks Organic Software. The first is a 3D graphics program, used for organic modeling and animation while the second is supposed to reduce the complexity of branching structures of trees. Unfortunately, I have had trouble installing them so haven’t been able to use them yet. I will keep trying next week. Another program I downloaded is L-Studio (the demo version) but, again, I have had problems. I specifically wanted to look at these products because the second paper mentioned above uses them in their modeling approach.

 Plans for next week:

 I plan to move further with my literature survey and to work out in greater detail the specifics of my procedural modeling approach. I also plan to get XFrog and L-Studio working properly.

 

Progress Report: 7 May 2004 Top

Plans for the week:

This week the plan was to move further with my literature survey and to work out in greater detail the specifics of my procedural modeling approach. I also planned to get XFrog and L-Studio working properly.

Progress:

I got XFrog installed on my home machine and downloaded and worked through a couple of tutorials so that I now better understand plant modeling using XFrog. I also transferred LParser (an L-System modeler I found on the Internet) onto my home machine and worked through the source code. I have not finished doing that yet. After my meeting with Shaun and Grant on Wednesday, I had a much clearer idea as to what I am supposed to be doing in this project. I also made progress with my literature survey.

Plans for next week:

I plan to start coding my procedural modeler, starting small with merely picking a tree from a library and returning it. Through this I hope to become more familiar with the Cervisia system and refresh my C memory! I will also finish going through the L-System code and hopefully get a better idea of how to translate an L-System to C code.

 

Progress Report: 14 May 2004 Top

Plans for the week:

This week I was supposed to start coding my procedural modeler, become more familiar with the Cervisia system and refresh my C memory! I also wanted to finish going through the L-System code and hopefully get a better idea of how to translate an L-System to C code.

Progress:

I successfully checked out the Harrier code and started looking at it but some problems (possibly with the version of C I have) with compiling meant I couldn’t really do anything. I did, however, explore the environment and brush up on my C. I finished going through the L-System code but I don’t think I fully understand the algorithm yet. I also went through a paper by Prusinkiewicz (surprise, surprise) which helped me in that regard. Finally, this week saw a lot of time being spent on my literature review.

Plans for next week:

This week I will implement a simple version of my procedural modeler and solidify the workings of the Harrier program. I will also attempt to set down the algorithm I will use for translation of L-Systems to C. Once again, more time will be spent on my literature review.

 

Progress Report: 21 May 2004 Top

 Plans for the week:

This week I planned to implement a simple version of the procedural modeler in order to solidify the workings of the Harrier program. I also wanted to formalise the algorithm for translation of L-Systems to C.

Progress:

This week I spent a lot of time fighting with Cervisia. This morning, especially, much time was spent on debugging and trying to correlate Shaun’s code with the installation on my machine. This afternoon and this weekend I will get that working (hopefully) and test the code I have written. This week also finished a draft of my literature survey and made inroads into defining my algorithm.

Plans for next week:

Next week I will work more with Cervisia and implement random number and parameter versions of the modeler I have. Then I will work more with my L-System translation algorithm. I will also do another draft of my literature survey.

 

Progress Report: 28 May 2004 Top

 Plans for the week:

 This week I wanted to work more with Cervisia and implement random number and parameter versions of my procedural modeler. I also planned to draw up another draft of my literature survey and make some more progress with my L-System translation algorithm.

 Progress:

 Once I had got Cervisia working nicely and Shaun had helped me to get the OFF objects to sit in the right places, I managed to implement my procedural modeler without much effort. I then implemented parameter and random number versions. I finished a second draft of my literature survey but I didn’t get around to working any further with my algorithm.

 Plans for the June vacation:

 This vac, I intend to spend working on the L-System translation algorithm. First, I will draw up a pseudo-code version and then start working on the coding of it. Hopefully, I will have a working version (probably not complete but at least the bare bones) by the start of next semester.

 

Progress Report: 30 July 2004 Top

 Plans for the vac

 I planned to develop my L-Systems algorithm.

 Progress

 During the vac I found all the L-Systems from the various literature which I think would be beneficial to me. I also looked at a couple of the programs I had downloaded and formulated a basic algorithm for L-System translation. Still to be done in this respect is to translate the methodology I have derived into parameters to be input into the harrier program.

 I designed and planned my second presentation which I presented on Wednesday morning. I think it went extremely well and the feedback from Shaun was positive. I also started on the basic design for my poster which is due in just over three weeks time.

 This week I played around with the harrier program and learned how to create my own simple meshes. I also created myself a day-by-day schedule for the rest of the semester in order to break the project down into manageable pieces. The project looks a lot less daunting now! I e-mailed a guy who is developing an L-System modeller for Mac at Trinity College in Hartford. I’m waiting for his reply but I’m hoping we’ll be able to exchange ideas and methods. His method involves a breadth-first parsing and rendering of the L-System, a method which allows for communication with higher branches and such functions as collision detection. The method I looked at is a depth-first parse.

 Plans for next week

 This week I plan to work more with meshes in the harrier program. I want to start creating some complex shapes using parameters and random numbers in order to build a foundation for when I must create L-System trees. I also plan to look more closely at the L-System programs and try to break them down into parameter lists for the harrier program.

 

Progress Report: 5 August 2004 Top

 Plans for the week

 This week I planned to work  on complex meshes in the harrier program. I also planned to look more closely at the L-System programs in order to break them down into parameter lists.

 Progress

 I created a number of “square trees” – I haven’t yet figured out how to display cylinders. First I explicitly added the branches in their various position and then I implemented a branching procedure to handle this.

 

       

I also developed a basic L-System translation algorithm. This I plan on implementing this afternoon and working on for the rest of the week. I also worked some more on my project poster.

Plans for next week

I plan to implement my L-System translation algorithm and create a number of L-System images. I also plan to create some images using some of the software I have downloaded and comparing the realism (of shape, not colour and so on) with mine. I will also be making a decision regarding which L-Systems I will use in my final project.

 

Progress Report: 12 August 2004 Top

 

 

Progress Report: 19 August 2004 Top

Plans for the week

I planned to continue work on the L-System parser by adding the functionality for L-Systems to be read from a file.

Progress

I added the functionality for L-Systems to be input from a file. Currently, however, the parser only reads the heading and generates the start string. I have worked out a number of methods to read and parse the production rules and I will implement and test these next week.

I have done some research into a method of generalised mesh subdivision that Shaun found at the Vienna University of Technology. The papers I have looked at define a way to subdivide meshes using more than one technique during a single procedure. They also talk about more realistic ways to join more than one mesh together into a single one. This looks as though it may have merit, certainly more than my current method of sticking many meshes together in the same vertex field and hoping they won’t interfere with each other! More research is necessary but, at first glance, there appears to be possible integration with Graeme Tankard’s generalised cylinders.

I also started deeper research into Prusinkiewicz and Lane’s method for determining tree placement and density. They discuss many approaches in their paper and I plan to examine each in detail in order to decide on the best approach for my project.

Plans for next week

I will add the production rule parser to the L-System translator and test a couple of L-Systems with it. I will also continue my research into generalised mesh subdivision, generalised cylinders and plant placement algorithms.

 

Progress Report: 26 August 2004 Top

Plans for the week

I planned to add the production rule parser to the L-System translator as well as continue my research into generalised mesh subdivision, generalised cylinders and plant placement algorithms.

Progress

I added a production rule parser and can now generate L-System strings to the iteration level required. I fought with C strings for a while before giving up and creating my own data structure. This makes parsing much easier as well. The functionality is still a bit unwieldy but I plan to streamline it and make it less so this week.

I looked more at the generalised subdivision mesh papers that Prof. Purgathofer provided me with, as well as looking more at Graeme Tankard’s generalised cylinders. It looks to be a viable option though I haven’t been able to produce a pseudo-code algorithm as yet.

I looked at Prusinkiewicz and Lane’s approach to plant distribution and, due to the work that I have already done on L-Systems, it looks as though multi-set L-Systems are the technique to use. I have looked at how to include these in my project, and hope to try it next week.

I also began work on my short paper, summarising my literature review to be the previous work section, writing the introduction and dividing the remaining sections into smaller, more manageable chunks.

Plans for next week

I need to improve the L-System data structure and look to add probabilities to the rules.  I also need to attempt to add multi-set L-Systems to my project to help with the placement of the trees. Finally, I must try to set down my approach to generalised cylinders and meshes.

 

Progress Report: 2 September 2004 Top

Plans for the week

I planned to improve the L-System data structure and add probabilities to the rules.  I also planned to add multi-set L-Systems to my project to help with the placement of the trees. Finally, I planned to set down my approach to generalised cylinders and meshes.

Progress

I worked very hard on improving my L-System data structure for the simple reason that the way I had done it earlier was confusing even myself! I introduced an L-System string data structure in order to decrease the amount of string handling I would have to do. I encountered more than a few problems with my program this week, my main issues arising from pointers. In particular, a rogue invalid pointer arose from nowhere and plagued my coding throughout the week, throwing segmentation faults everywhere!

Due to the problems encountered with ordinary L-Systems, I was not able to implement multi-set L-Systems. I hope to be able to fix my problems and implement these multi-set L-Systems next week.

I have thoroughly read, summarised and understood the various papers I have on generalised cylinders and meshes and I believe I have developed an implementable approach to these. This I plan to implement if and when I manage to get my L-Systems working again.

Plans for next week

I plan to fix the bugs in my L-Systems and implement both the multi-set L-Systems and my generalised mesh approach.

 

Progress Report: 9 September 2004 Top

Plans for the week

I planned to fix the bugs in my L-Systems and implement both the multi-set L-Systems and generalised mesh approach.

Progress

 

Once again I was foiled in my bug fixing and only managed to get it working this morning. As such, I haven't been able to implement the multi-set L-Systems or the generalised meshes.

I did make some progress on my short paper, however, so I shall have more time over the vac to work on the actual implementation of my project.

Plans for the vac

I will finally get my multi-set L-Systems working and implement generalised meshes.

 

Progress Report: 23 September 2004 Top

Plans for the week

I planned to get my multi-set L-Systems working and implement generalised meshes.

Progress

 

I worked on implementing multi-set L-Systems but wasn’t happy with the results. As such, I changed my approach to plant distribution. The plants are now placed randomly and grown and killed according to domination. I have had problems with my domination algorithm in terms of finding the areas of the plants.

I implemented the generalised by conducting a number of subdivision procedures. The trees generated now take much longer but look more realistic.

Plans for next week

I will look into using the BoundingBox functionality to discover the areas of the trees and thus have a value to work with in my domination algorithm. I also want to look into Maierhofer’s technique for vertex displacement which adds ridges to the tree meshes for more realism.

 

Progress Report: 7 October 2004 Top

Plans for the week

I planned to look into using the BoundingBox functionality to discover the areas of the trees and thus have a value to work with in my domination algorithm. I also wanted to look into Maierhofer’s technique for vertex displacement which adds ridges to the tree meshes for more realism.

Progress

I reread Deussen et al. 1998 and discovered that I now understood what they were saying in the ecosystem simulation section. I have implemented this algorithm and I now have growing trees. Unfortunately, I haven’t fine-tuned it to the point where it looks realistic yet and the domination is still a work in progress. As such, the trees grow into each other and disappear immediately when they die.

I reread Maierhofer’s technique for texturing the trees and I believe I can implement that. I will move onto that when I have the forest growth working to my satisfaction.

Plans for next week

I plan to work further on my ecosystem simulation so that the trees grow at realistic paces and die out slowly when they reach their maximum size or are dominated. I am contemplating using a file to hold the population information so that it doesn’t have to be re-calculated every frame. Once this is working I will look at Maierhofer’s texturing. I also plan to move further in my write-up – finishing those sections that I have completed.

 

Progress Report: 14 October 2004 Top

Plans for the week

I planned to work further on my ecosystem simulation so that the trees grow at realistic paces and die out slowly when they reach their maximum size or are dominated. I also planned to look at Maierhofer’s texturing and to move further in my write-up.

Progress

I altered my program so that it reads the population information from a new data structure (called, originally, Population). This means positions and sizes aren't recalculated every frame but can be updated from the old data. It's not working quite as planned yet, however, as it appears that my domination algorithm needs some tweaking.

I also started my write-up, planning the basic structure and starting to add detail to the areas I have completed so far (that is, the Introduction, the Previous Work and the Design).

Plans for next week

This week I plan to get my domination algorithm working to my satisfaction, implementing the Maierhofer texturing and moving further in my write-up. I am hoping that this will be the last week I spend programming as I would like to have two weeks to spend on writing up.

 

Progress Report: 21 October 2004 Top

Plans for the week

 I planned to get my domination algorithm working to my satisfaction and move further in my write-up.

 Progress

The domination works beautifully and I have forests which grow and die and all sorts of pretty things and it looks realistic. I am still tweaking the rate of death of plants that have reached maximum size.

I finally got hold of some L-Systems which I will add to my program to check the interactions between plants of different species. I am having a small problem with my program at present but will hopefully get that fixed this weekend and then have some pretty pictures and interesting figures to add to my write-up.

I added some more recent publications I have read to my Previous Work section and finished my Extensions section. I also completed the Introduction and fleshed out the Design and Implementation sections. I have to work more on these two and on the Conclusions and then, hopefully, by next week I will have something resembling a draft.

Plans for next week

 I will tweak my program until I can get a number of species of tree interacting with one another in a forest. I will then take some images, videos and statistics for use in my write-up. I will also work further on the write-up as detailed above.

 

Progress Report: 28 October 2004 Top

 

Progress Report: 4 November 2004 Top