Academia.eduAcademia.edu

Blobtree trees

2004

In recent years several methods for modeling botanical trees have been proposed. The geometry and topology of tree skeletons can be well described by L-systems; however, there are several approaches to modeling smooth surfaces to represent branches, and not all of the observed phenomena can be represented by current methods. Many tree types exhibit non-smooth features such as branch bark ridges and collars.

BlobTree Trees Callum Galbraith Peter MacMurchy Brian Wyvill Department of Computer Science University of Calgary callum/peterm/blob@cpsc.ucalgary.ca Abstract In recent years several methods for modeling botanical trees have been proposed. The geometry and topology of tree skeletons can be well described by L-systems; however, there are several approaches to modeling smooth surfaces to represent branches, and not all of the observed phenomena can be represented by current methods. Many tree types exhibit non-smooth features such as branch bark ridges and collars. In this research a hierarchical implicit modeling system is used to produce models of branching structures that capture smooth branching, branch collars and branch bark ridges. The BlobTree provides several techniques to control the combination of primitives, allowing both smooth and non-smooth effects to be intuitively combined in a single blend volume. Irregular effects are implemented using Precise Contact Modeling, Constructive Solid Geometry and space warping. We show that smooth blends can be obtained, without noticeable bulging, using summation of distance based implicit surfaces. L-systems are used to create the branching structure allowing botanically based simulations to be used as input. Figure 1. Photographs of poplar trees showing: branch bark ridges, rings around branches, branch collar. 1. Introduction Modeling of branching topologies for botanical structures is a well-studied problem, as is their subsequent visualization. However, generating a realistic and smoothly connected surface around an arbitrary branching skeleton remains difficult. Current methods do not capture the subtleties of the blends at branching points, in particular the branch bark ridge [28] and collars, shown in Figure 1. Previous work has focused on the construction of smoothly connected surfaces using parametric, implicit, and subdivision techniques. In this research, a method is proposed for the next step in generating realistic models of trees. The approach uses skeletal implicit surfaces in the context of a hierarchical data structure called the Blob- Tree [31], which combines blending operations with nonblending operations such as Constructive Solid Geometry (CSG), spacial warping, and Precise Contact Modeling (PCM) [13]. The method combines PCM and blending to model both smooth blending and the branch bark ridge at branching points as appropriate. Sufficient blending control is demonstrated using summation of distance based skeletal implicit primitives to model smoothly blending branching structures without noticeable bulging. This obviates the need for convolution surfaces, which impose an increase in computational and implementation complexity. Non-smooth qualities of trees, such as scars formed where branches have been discarded, are also easily incor- Figure 2. Photograph of an arbutus tree showing smooth junctions between branches. porated. The resulting surfaces are resolution independent, providing a well-defined surface at all levels of detail. The well-studied computer graphics technique L-systems [20, 27, 26] is used to generate a string that encodes a branching structure. The string is then used to generate an implicit surface retaining the overall structure of the model described by the string rewriting system. 2 Background Research into methods for modeling botanical structures initially focused on the skeletal branching structure of trees and herbaceous plants [12, 17]. The simplest step in the quest for realism was the representation of internodes as 3D cylinders [10, 27]. A visually more advanced technique was the use of generalized cylinders [5, 16, 21, 23]. Unfortunately, generalized cylinders do not properly capture the smooth geometry of branching points, shown in Figure 2. Modeling of the geometry around branching points was first addressed by Bloomenthal, who initially proposed to solve this problem by crafting parametric surfaces [5]. However, the method is not easily extended to arbitrarily complex ramiform structures. Bloomenthal also proposed the use of implicit surfaces [6], and convolution surfaces [8], which fit surfaces to branching structures in a general way. A common side effect of implicit surfaces is bulging, an unnatural-looking increase in girth where two or more branches are blending together [6]. Convolution surfaces based on skeletal line segments are bulge free for non-ramiform structures, but do exhibit bulging for ramiform structures. Using a polygonal skeletal structure with convolution removes bulging in ramiform structures, but cannot produce circular cross sections. In general, convolution surfaces impose an increase in both computational and implementation complexity. Hart modeled trees using implicit methods and a procedural bark texture [15]. Maritaud [22] modeled trees using combination blending [6] and procedural bark texturing. Jin et. al [18] used convolution surfaces with polynomial weight distributions to model trees and other ramiform structures. All Figure 3. A model built from the BlobTree. previous work using these methods produced models which were globally smooth. Tobler et. al. [30] first proposed the use of subdivision surfaces for the modeling of branching structures. They procedurally grew a mesh by repetitively applying mesh operations including subdivision and growth. Related techniques using subdivision were introduced by Aitken et. al [2] and by Akleman et. al. [3]. The latter two techniques are globally smooth, failing to capture the smaller rough details. Additionally, it is problematic to create the initial subdivision mesh for arbitrarily complex branching structures. 2.1 Implicit Surfaces An implicit surface [7] S may be derived from a field function F (x, y, z), and is defined as the set of points P = (x, y, z) at which the value of F equals 0, as follows: S = {P = (x, y, z) ∈ R3 , F (x, y, z) = 0} (1) Implicit surfaces are an intuitive means for modeling smoothly blending branching structures in computer graphics [6]. A common approach is to first define the underlying skeletal structure, then represent each skeletal component using implicit surface primitives, which have the inherent ability to blend smoothly with each other. In contrast to other methods, implicit surfaces use the same approach regardless of the branching structure’s complexity. Recently, implicit surfaces have been used as the basis for more complex modeling systems [1, 31] which incorporate techniques such as controlled blending, bounded blending, CSG, PCM, and spacial warping in hierarchical structures. 2.2 The BlobTree The BlobTree provides a hierarchical data structure for the definition of complex models based on implicit surfaces. Implicit surface primitives based on distance fields are used as leaf nodes, while internal nodes consist of operations on arbitrary implicit surfaces (see Figure 3). The BlobTree is an extensible data structure, currently supporting the following modeling techniques: CSG, space warping, PCM, 2D texture mapping [29], controlled blending [14], local refinement [19] and R-functions [24]. As Pasko [25] points out, there are problems with using the max/min functions for CSG in certain circumstances. However, these are not problems in the case of the tree examples presented in this paper. Operations on the BlobTree, such as visualization of a surface, depend only on the ability to evaluate the field function at any point in space, which is performed by a traversal of the BlobTree. For example, a blend of m child functions Fi is expressed functionally as follows: F (x, y, z) = m X Fi (x, y, z) Figure 4. Precise contact modeling. (2) i=1 The power of this methodology comes from the fact that the large number of operations mentioned above are easily implemented in the context of a tree traversal [31]. Specification of BlobTrees can be done through a specialized interactive user interface, or using a procedural approach either through the interpreted language Python, or the C++ programming language. These approaches, together with the intuitive appeal of combining geometric skeletal elements to form models, make an appropriate choice for modeling complex biological objects. 2.3 Precise Contact Modeling Precise Contact Modeling (PCM) [11, 13] is a method of deforming implicit surfaces in contact situations to maintain a precise contact surface with C 1 continuity. The method is only an approximation to a properly deformed surface, but is an attractive algorithm due to its simplicity. The deformation is applied by adding a deformation term d to the implicit function F . There are three cases when calculating d, shown in Figure 4: in the interpenetration region: d < 0, simulating compression and creating a contact surface; in the propagation region: d > 0, modeling local expansion due to compression in the interpenetration region; elsewhere: d = 0, implying no deformation. A complete description of this function is given by Cani [9]. 3 Modeling Trees Initially, a branching hierarchy representing a botanical tree is constructed using L-systems, which defines length, Figure 5. A BlobTree cone primitive. base radius, tip radius, position, and connectivity of each internode (branch segment). An instance of a BlobTree data structure is then built by interpreting the L-system string; thus botanically based simulations may be used as input. Each internode is represented by an individual skeletal implicit primitive, and a hierarchy of BlobTree operations combines the primitives in a single blend volume. Both smooth and non-smooth blending operations are applied between primitives depending on their relationship within the branching hierarchy. Spacial warping and 2D texture mapping are incorporated to enhance the photo-realism of the resulting models. 3.1 Modeling Branches The increased complexity of convolution surfaces over implicit surfaces is warranted when the model requires perfectly smooth blending between branch segments. However, it can be observed that the branching structures of trees exhibit small amounts of bulging at branching points, and in general are not perfectly smooth. Skeletal implicit surfaces allow for sufficient control over bulging for modeling realistic trees, thus convolution surfaces are not employed. Individual internodes are represented by skeletal cone primitives, shown in Figure 5. Where rb defines the base radius of the internode and rt defines the top radius (rt ≤ rb ), the radius of the cone is set to rcb = rb − rt at the base and rct = 0 at the top, and the distance di from the cone to the visualized iso-surface is di = rt . Branches are modeled by Figure 6. Bulge when two line segments with coincident end points are blended. Blended surface P A B Non−blended surface P B Figure 8. Two cone primitives with their end points offset are blended using summation. Left: 180 degrees separation. Right 90 degrees separation. A Figure 7. Left: two skeletal primitives A and B intersect at branching point P , resulting in bulging. Right: length of A is shortened to reduce bulging. summing the fields defined by cone primitives representing successive internodes. An undesirable feature of summation blending is the appearance of bulges (Figure 6) where skeletal primitives intersect. Bloomenthal noted that bulging in ramiform structures using convolution surfaces based on line segments may be reduced by offsetting the skeletal elements [6]. The same approach may be used with skeletal implicit surfaces to reduce the bulging to an acceptable level for the modeling of trees, while retaining smooth blends. The length of the skeletal primitive representing the basal internode A is reduced by an amount δA , defined in equation 3, where rBt is the top radius of internode B. δA = 1.75 ∗ rBt Figure 9. Examples of branching structures using summation blend. the length of A fixed. It was found that this results in less smooth blends when the radius decreases noticeably from A to B. Additionally, if the lengths of both A and B are reduced so that neither of the skeletal elements actually intersects the branching point P , then an undesirable indentation on the elbow of the blend occurs. Thus the base of B is fixed to the branching point P . 3.2 Branching Points (3) Figure 7 shows the resulting iso-surfaces when skeletal line primitives A and B are blended. On the left, A and B are connected at the branching point P , resulting in a large bulge. In contrast, the right image shows the result of reducing the length of A by δA . This method does not completely remove the bulging between internodes, but makes it practically unnoticeable, while maintaining a large blending radius in the interior angle between adjoining internodes, shown in Figure 8. It was found that the scale factor 1.75 used in Equation 3 could be varied by up to 3% without affecting the bulge appreciably. Further to the method introduced above, it is possible to reduce the length of internode B, and displace it away from the branching point P along its axis, while keeping One of the advantages of using implicit surfaces to model branching structures is the automatic way in which any number of branches may be combined. The operators used to combine the branches are commutative, thus the branches may be defined in any order. Additionally, there is no limit to the number of branches that may be combined at a single location, making the method directly applicable to branching structures of arbitrary complexity. The only problem is to ensure that no unwanted bulging occurs. With a summation blend, the unwanted bulging is mitigated by the fact that, in trees, the sum of the cross sectional areas of the branching internodes Bi is less than or equal to the cross sectional area of the basal internode A [27]. This implies that the radius of the field of A is larger than that due to the branches. This disparity in field radii Figure 10. Branches combined with PCM, then blended with base. Left: union of primitives. Center: PCM combines the branches. Right: basal internode is blended with the branches after PCM is applied. Figure 11. Left: bulging from PCM reduced by offsetting branch primitives from P . Right: use of PCM in higher order branching situations. tends to smooth out any bulging. Figure 9 shows three examples of branching, and the amount of bulging is minimal in all three. The branching primitives all intersect at the branching point, while the basal internode has been reduced in length by δA from Equation 3. 3.3 Precise Contact Modeling at Branching points While smoothly blending branching points can be generated using a simple summation blend, the resulting surfaces do not model the appearance of the branch bark ridge. To model this phenomenon, PCM is employed. Although the formulation of PCM does not emulate the growth of tree bark, similar visual effects are observed. Each primitive modifies the field due to neighboring primitives, by adding to it in the propagation region. The advantages of using PCM in this way are that it is easy to apply, and that the branch bark ridge can be generated without having to perform a physically-based simulation. The field FJ of a branching junction J with basal internode A and m branching internodes Bi , i ∈ [0, m − 1] is formed by first combining the branch primitives Bi with each other using PCM to produce the field FB . FJ is then defined as the blend of FB and the field FA due to A as follows: FB FJ = P CM (FB0 , FB1 , ..., FBm−1 ) = FB + FA (4) (5) The process is shown in Figure 10, with the result in the right hand image. Unfortunately, unwanted bulging is observed in the region just below the branching point. This is caused by the PCM operation adding material not only in the space between branches, but also on the outer part of the branching junction, due to the branching skeletal primitives intersecting, and thus overlapping at the branching point. In Section 3.1, it was required that the base of branching skeletal elements B intersect with the branching point P to produce natural-looking blends between internodes. To apply PCM at a branching junction without bulging, this requirement must be altered. To reduce the bulging, each branch Bi is displaced away from the branching point P along its axis. The amount of displacement δBi is given by Equation 6, where rA is the radius of the basal internode A, and ri is the radius of branch i: δ Bi = r A − r i (6) To avoid a loss of blending between the basal primitive A and the branches, the length of A is increased by rA − max(ri ), where max(ri ) is the maximum of the radii of the child branches. This results in two equations for the value of δA , which is used to reduce the length of the basal primitive. Equation 3 is used when the basal internode has a single branch at its tip, and Equation 7 is used when multiple branches are present, as follows: δA = 2.75 × max(ri ) − rA (7) The resulting blend when using this formulation is shown in the left image of Figure 11. This method extends easily to higher order branching nodes as shown on the right in Figure 11. Three effects of this formulation are observed: the first observation is the formation of ridges between branches; the second is that large branches continue to blend smoothly with the basal branch; the third is that smaller branches exhibit a collar where they blend with the main trunk. As a lateral branch is increased in diameter, the collar will gradually become a smooth blend with the main branch while maintaining a branch bark ridge between itself and any other branches present. All three of these effects are found in real trees. 3.4 Modeling Missing Organs Trees, and indeed all plants in nature, often lose lateral organs for a variety of reasons. Shedding organs can be Figure 12. Use of CSG to prune branches as if they were cut off with a saw. Figure 13. Use of negative potential fields to create scars where organs have been lost. intentional, as in the case of deciduous leaves, or unintentional, as when a branch is broken. We would like to capture these effects in our model. The surface left behind when a branch is broken is by no means simple to define, and this phenomenon is not present in the proposed method. We speculate that CSG may be used to capture these effects. As a simple example, CSG is used to simulate the effect of pruning a branch by cutting it, shown in Figure 12. To model the scars left behind when a plant organ is lost, a negative potential field is used to make an indentation into the structure of the tree. This negative potential field is blended with the BlobTree in the same location at which a shortened branch stub has been placed. By varying the radius of influence of the branch stub and the negative potential field a variety of different sized scars can be achieved, shown in Figure 13. 3.5 Bending the Branches Previous work involving tree modeling has focused on generating perfect versions of real world plant structures. As a result, many models of plant structures tend to be too rigid, and lack a feeling of life. The BlobTree provides a set of spacial warping operators which are used to reduce the regularity present in the model. A good example is to use the Bend operator [4] to alter the perfectly straight individual internodes. Randomly applying bend results in a very artificial look. Figure 14. Spacial warping used to bend internodes. Bend is applied in the plane defined by the internode and its basal internode. Better results can be obtained by applying bend to individual skeletal primitives based on their position in the hierarchy and their relationship to adjacent internodes. The direction is chosen so that the result of the bend will cause the bent internode to grow more directly away from the axis of its basal internode, then slowly bend back toward its defined termination point. This choice is based purely on aesthetics and is not based on biological principles. The bend is parameterized so that regardless of what angle is chosen, or what plane the bend occurs in, the bent internode will have its initial and terminal points at the same location as if it were not bent. This allows individual internodes to be bent without altering the connectivity of the surface or modifying the global position of any internodes. In order to achieve this effect, rotations are applied, and the length of the internode is increased depending on the amount of bend. Figure 14 shows a simple example of bend. The branch segment which is collinear with the basal internode is not bent at all. The lateral branch is bent in the plane defined by its original position and its basal internode, and its direction of bend causes it to grow more directly away from the axis of the basal internode, then bend back toward its original terminal point. 3.6 Applying Texture The final step in building the tree model is to apply texture to give a more realistic appearance. The BlobTree defines several methods that can be used to apply 2D texture; the most straightforward of them is used [29]. Individual BlobTree primitives can be described parametrically, and thus have their own natural 2D coordinate systems. The global surface attributes at any point will be determined by a linear combination of the attributes defined by the contributing primitives at that point. Each contributing primitive uses its native 2D coordinates to determine its contribution. This method results in an automatic blending of textures across branching points. The effects are good when viewing the whole tree. However, when viewed from close up the method gives a slightly unnatural look to the texture within regions of blend if the texture contains an anisotropic pattern. The poplar texture used in Section 4 does not have this property and gives good results for all levels of detail. 4 Results Figure 15 shows the results of our model, and was rendered on an Intel(R) Xeon(TM) CPU 2.66GHz with 1 Gb of RAM using direct ray tracing. It required just under 1 hour to render Figure 15 at a resolution of 1536x2048 pixels with adaptive super-sampling. The BlobTree may also be viewed using OpenGL with an approximate polygon mesh. It requires at least 60 seconds to generate enough polygons to be useful, prohibiting the use of the method for interactive modeling. However, PCM allows us to intuitively model the phenomenon of the bark branch ridge shown in Figure 1. Thus, the lengthy visualization times are offset by the power of the modeling paradigm. Current problems with the method are as follows: more work needs to be done to correctly model the branch tips, which are currently tipped by hemispherical caps, and it is difficult to control the shape of branch bark ridges and collars. As a result of the latter problem, producing models of trees with varying properties at the branch bark junction is not currently possible. 5 Conclusions and Future Work An outstanding problem in the modeling of trees is the construction of a surface which captures both the smooth and non-smooth attributes of their branching structure. Whereas previous methods have focused on smoothly blending branching junctions and simulated rough bark texture, the method presented is the first to combine smoothly blending branching junctions with those that exhibit the branch bark ridge and collars. The method relies upon the BlobTree to provide both smooth and non-smooth operators to combine skeletal implicit surface primitives. PCM was used to model the branch bark ridge and collars, two phenomena which have not been modeled by any previous technique. The resulting surfaces are similar to the phenomena observed in nature, as illustrated by a model of a poplar tree. Additional operations, such as spacial warping and CSG, can be used to enhance realism in the resulting model. The proposed method enables the production of complex models not easily obtained by other means. Summation blending of skeletal implicit primitives without noticeable bulging was shown to be easily obtained. Thus, the method compares favorably to convolution surfaces, which would impose an increase in computational and implementation complexity. Figure 15. A poplar tree model using PCM to simulate the branch bark ridges. While the branching structure was generated using the Lsystem formalism, interactive techniques may also be used to generate the underlying skeleton. Future areas of research are: • The deformed fields resulting from PCM may be used as input to a procedural texturing algorithm to modify the texture on the branch bark ridge, where a discolouration is observed. • Providing greater control over the shape of the branch bark ridges. • Correlating the resulting branch bark ridges with biologically accurate measurements of this phenomena. • Incorporating information pertaining to the development of non-smooth surface features into the underlying L-system model. • Applying the model to animations of tree growth, and extending the method to capture time-varying effects resulting from discarded organs. 6 Acknowledgments We would like to thank the many students who have contributed toward implicit modeling research at the University of Calgary. In particular, we thank Dr. Prusinkiewicz, whose tree modeling inspired this work, and for providing the photograph of an arbutus tree, shown in Figure 2. This work is partially sponsored by the Natural Sciences and Engineering Research Council. References [1] V. Adzhiev, R. Cartwright, E. Fausett, A. Ossipov, A. Pasko, and V. Savchenko. HyperFun project: a framework for collaborative multidimensional F-rep modeling. In Proceedings of Implicit Surfaces ’99, pages 59–69, Sept. 1999. [2] M. Aitken and M. Preston. Foliage generation and animation for “The Lord of the Rings: The Two Towers”. SIGGRAPH 2003 DVD-ROM, ACM SIGGRAPH, New York, 2003. [3] E. Akleman, J. Chenb, and V. Srinivasan. A minimal and complete set of operators for the development of robust manifold mesh modelers. Graphical Models, 65(5):286–304, Sep 2003. [4] A. H. Barr. Gloabl and Local Deformations of Solid Primitives. In Proceedings of SIGGRAPH 84, volume 18 of Computer Graphics Proceedings, Annual Conference Series, pages 21–30, 1984. [5] J. Bloomenthal. Modeling the Mighty Maple. In Proceedings of SIGGRAPH 1985, volume 19, pages 305–311. ACM, Jul 1985. [6] J. Bloomenthal. Skeletal Design of Natural Forms. Ph.D. dissertation, University of Calgary, 1995. [7] J. Bloomenthal, editor. Introduction to Implicit Surfaces. Morgan Kaufmann, ISBN 1-55860-233-X, 1997. [8] J. Bloomenthal and K. Shoemake. Convolution surfaces. In Proceedings of SIGGRAPH 1991, pages 251–256. ACM, 1991. [9] M.-P. Cani. Layered models with implicit surfaces. In Graphics Interface (GI’98) Proceedings, Vancouver, Canada, Jun 1998. Invited paper, published under the name Marie-Paule Cani-Gascuel. [10] P. de Reffye, C. Edelin, J. Françon, M. Jaeger, and C. Puech. Plant models faithful to botanical structure and development. In Proceedings of SIGGRAPH 1988, pages 151–158. ACM, 1988. [11] M. Desbrun and M.-P. Cani-Gascuel. Active implicit surface for animation. Graphics Interface ’98, pages 143–150, June 1998. ISBN 0-9695338-6-1. [12] D. Frijters and A. Lindenmayer. A model for the growth and flowering of Aster novae-angliae on the basis of table (1,0)L-systems. In G. Rozenberg and A. Salomaa, editors, L-systems, Lecture Notes in Computer Science 15, pages 24– 52. Springer-Verlag, Berlin, 1974. [13] M.-P. Gascuel. An Implicit Formulation for Precise Contact Modeling Between Flexible Solids. Computer Graphics (Proc. SIGGRAPH 93), pages 313–320, August 1993. [14] A. Guy and B. Wyvill. Controlled Blending For Implicit Surfaces. In Implicit Surfaces ’95, Apr. 1995. [15] J. C. Hart and B. Baker. Implicit modeling of tree surfaces. In Proceedings of Implicit Surfaces ’96, pages 143–152, Oct 1996. [16] M. Holton. Strands, gravity, and botanical tree imagery. Computer Graphics Forum, 13(1):57–67, 1994. [17] H. Honda. Description of the form of trees by the parameters of the tree-like body: Effects of the branching angle and the branch length on the shape of the tree-like body. Journal of Theoretical Biology, 31:331–338, 1971. [18] X. Jin, C.-L. Tai, J. Feng, and Q. Peng. Convolution surfaces for line skeletons with polynomial weight distributions. Journal of Graphics Tools, 6(3):17–28, 2001. [19] X. Liang and B. Wyvill. Hierarchical implicit surface refinement. Proc. Computer Graphics International, Hong Kong, pages 291–298, 2001. [20] A. Lindenmayer. Mathematical models for cellular interaction in development, Parts I and II. Journal of Theoretical Biology, 18:280–315, 1968. [21] B. Lintermann and O. Deussen. Interactive modeling of plants. IEEE Computer Graphics and Applications, 19(1):56–65, 1999. [22] K. Maritaud. Rendu réaliste d’arbres vus de près en images de synthèse. PhD thesis, University de Limoges, France, December 2003. [23] P. E. Oppenheimer. Real time design and animation of fractal plants and trees. In Proceedings of SIGGRAPH 1986, volume 20, pages 55–64, Aug 1986. [24] A. Pasko, V. Adzhiev, A. Sourin, and V. Savchenko. Function representation in geometric modeling: concepts, implementation and applications. The Visual Computer, 2(8):429– 446, 1995. [25] G. Pasko, A. Pasko, M. Ikeda, and T. Kunnii. Bounded Blending Operations. In Proceedings of the International Conference on Shape Modeling and Applications (SMI 2002), pages 95–103. IEEE Computer Society, May 2002. [26] P. Prusinkiewicz, M. Hammel, J. Hanan, and R. Měch. Handbook of Formal Languages, chapter Visual models of plant development. Springer–Verlag, Berlin, 1996. [27] P. Prusinkiewicz and A. Lindenmayer. The Algorithmic Beauty of Plants. Springer-Verlag, New York, 1990. [28] A. Shigo. Tree Autopsy . Tree Care Industry, 7(6), Jun 1996. [29] Tigges. M. and Wyvill, B. Texture Mapping the BlobTree. Implicit Surfaces, 3, Jun 1998. [30] R. F. Tobler, S. Maierhofer, and A. Wilkie. Mesh-Based Parametrized L-Systems And Generalized Subdivision for Generating Complex Geometry. International Journal of Shape Modeling, 8(2):173–191, Dec 2002. [31] B. Wyvill, E. Galin, and A. Guy. Extending The CSG Tree. Warping, Blending and Boolean Operations in an Implicit Surface Modeling System. Computer Graphics Forum, 18(2):149–158, Jun 1999.