| Submitted by , posted on 05 November 2002 |

Image Description, by The above image was created with TReal. TReal is a program capable of generating realistic 3D tree models. TReal generates an internal 3D representation of a tree based on various parameters. The model used for generating the tree is described in an article published by Jason Weber and Joseph Penn, "The Creation and Rendering of Realistic Trees". The article can be found here: http://portal.acm.org/citation.cfm?id=218427.
Using plugins the internal representation of the tree can be exported to a scene file for a particular 3D program. I've currently written one plugin for TReal, called POVTReal. POVTReal is able to output standard POV-Ray scenes that can be rendered with the POV-Ray raytracer.
When the user chooses to render the tree, at first an internal representation of the tree is created. A tree is a TTree object, consisting of a Trunk of the type TStem. Every stem has a list of substems. The tree is recursively generated by first growing the trunk, then all the children of the trunk and so on. The last level in the recursion are the leaves.
The stems consist of a list of sections; in fact 'circles' (when lobing is used these circles are deformed) defined by a number of vertices. More vertices per section of a stem at recursion level n positively influences the quality of stems at recursion level n. The number of vertices can be specified by the user (this is in fact an extra parameter I've added to the model). Every stem and every section making up a stem have a local coordinate system associated with it. When writing the section vertices to the internal representation of the tree, these local coordinates are converted to global coordinates. Please note that all the classes implementing the scaling, rotating, matrices operations, and coordinate conversions have been written by me.
The entire program is written in Borland Delphi. For this reason the program isn't particularly fast as you might notice. I'm currently rewriting the low-level vector and matrix routines in C++, that should significantly improve performance.
Oh, one last thing, the source code and some additional information can be found here:
http://members.chello.nl/~l.vandenheuvel2/TReal/
And don't forget to have a look at a friend's site of mine who used the same model as I did and created a Java program also capable of generating realistic 3d tree models. His program is called Carrot and more information can be found here:
http://home.wanadoo.nl/d_reniers/blue/edu/tue/carrot.html
Sincerely, Ton van den Heuvel

[prev] | Image of the Day Gallery www.flipcode.com | [next]

Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
Please read our Terms, Conditions, and Privacy information.