Artificial evolution of implicit surfaces

techniques allow algorithmic and mathematical methods to generate complexity to a nearly infinite level of detail. By giving the user parametric control of procedural methods, extremely complex models can be created in a fraction of the time it would require to build them by hand. This methodology has become widely accepted throughout the computer graphics community, as evidenced by the work of Lindenmayer and Prusinkiewicz in procedurally simulated plant growth, 5 and the vast work that has been done in the realm of implicit surfaces. 1,3 However, procedural techniques introduce new levels of difficulty. Creating these procedural tools often requires a strong understanding of complicated mathematics. Furthermore, even if one does have the mathematical knowledge necessary , providing parametric controls to one who does not is a non-trivial task. Sims presented genetic programming as a viable solution to this problem with his procedural texture generation system. 6 Genetic programming has also been proven useful to computer graphics. Dawkins made use of the genetic metaphor to generate 2D branching structures. 2 Gritz and Hahn applied genetic programming techniques to generate various procedural animation methods. 3 And Todd and Latham have combined genetic programming with solid geometry to produce amazing evolutionary art. 7 This sketch presents a system that combines implicit surfaces, as model-ing primitives, with genetic programming to facilitate automated generation of exceedingly complex models. The class of implicit surfaces this system utilizes is characterized by a function f : R 3-> R that assigns some value to each point in three-space. The surface is the set of points such that f (x ,y, z) = 0.4 A few predefined surfaces form our primitive community. The initial parents, from whom the system will generate offspring, are selected from this community. From each new generation the user can again select two individuals to mate, creating the next generation. This process is repeated until a surface is generated that fits the user's needs. Implementation To mate two surfaces, the user begins by selecting two parent individuals from the primitive community that exhibit traits wanted by the user. The functional representations are manipulated as LISP expressions. A series of LISP routines generates hierarchical parse trees from each expression. Mating is facilitated by a "cross-over" procedure in which subtrees are pseudo-randomly selected from each parent and swapped. Thus, two children are "born" to the user-selected parents. This process is repeated until the generation reaches a …