Keywords

1 Introduction

In computer graphics, tree modeling and animation have wide applications in the fields of film production, video games, and virtual reality because plants increase the realism of virtual scenery. In the past three decades, many approaches have been presented to achieve the realistic modeling and animation of trees. Tree modeling methods can be categorized into rule-based methods [13, 21, 23, 24], sketch-based methods [17], image-based method [10, 26], and modeling methods from point clouds [9, 14]. However, most of these studies concentrated on modeling the global morphology of trees, including the complex branch structures and botanical arrangement of leaves. A typical simplified structure to represent tree branches is a generalized cylinder. Many studies in the animation of tree growth [19] and swaying in wind fields [7, 8, 13, 20] also use the same simplified structure to represent bending branch joints.

Fig. 1.
figure 1

Prevailing apple tree modeling using our approach. In comparison with (a), the tree model in (d) with (b) is a manifold quad-mesh that takes the continuity of branch ramifications into consideration, inherently compensating for the disadvantages of (c).

Although generalized cylinders are efficient and superior in terms of realism in tree modeling, the discontinuity between branches for generalized cylinder representation is obvious, as shown in the close-up in Fig. 1(c). This discontinuity of branches is easy to solve if implicit surface representation is adopted, but this is difficult to control interactively.

The motivation of our work is to create a complete manifold quadrilateral mesh (quad-mesh) effectively, as shown in Fig. 1(d), from user-defined skeletons of a tree (Fig. 1(b)) using Catmull–Clark subdivision for continuous ramification construction, thereby overcoming the drawbacks of both generalized cylinders and implicit surfaces. This study makes two main contributions:

  • We propose a method to generate a tree model effectively with smooth ramifications that combines subdivision surface construction with parametric surface construction.

  • We propose an optimization algorithm for a tree’s control mesh construction using user-defined skeletons.

2 Related Work

The earliest developed plant models were procedural models, which generate content using a procedure that has the function of database amplification and can be used to model, for example, plants, buildings, urban environment, and texture. In the case of plant modeling, they have been applied to simulate botanical organs, the growing process, and various plant structures. Self-organizing parameter characteristics became the basis of the L-system [22] and self-organizing tree modeling methods [18, 28], and we use those characteristics in our approach. Although plausible models have been obtained for the above methods, the final shape of the plant is not easy to control, and many parameters are complex for users to adjust.

A broad trend in computer graphics is data-driven synthesis, where models are created based on real-world measurements, such as those in images or laser scans of geometry. Tan et al. [26] proposed a method of combining input images with user interaction in the construction of trees. Hu et al. [10] modeled trees based on two images from different views with polar constraints for animation using a physical model. Livny et al. [15] reconstructed multiple overlapping trees from point clouds simultaneously without pre-segmentation by applying a series of global optimization-based biologically derived heuristics. Such methods can be extremely effective; however, they are often intended for geometric reconstruction. Hence, maintaining the continuity of ramifications is beyond their scope.

Implicit surface tree modeling is other popular method, which began with an idea presented by Bloomenthal [3]. Compared with parametric surfaces, implicit surfaces are difficult to control and time-consuming, but owing well continuity, noise-resistant, performing Boolean operation easily. There are many types of implicit surfaces, including the convolution surface, which is defined as an iso-surface in a scalar field that convolves a geometric skeleton using a kernel function [4]. An interesting application of the convolution surface is modeling sketch-based models [1, 25, 32], which takes advantage of the rotundity and smoothness of convolution surfaces, which is suitable for tree branches. Another type of typical implicit surface is the Poisson surface [12], which concludes surface reconstruction using Poisson’s equation.

There has also been some effort to model smooth joint structures on both parametric surfaces and implicit surfaces for trees (not for botanical trees only). Tobler et al. [27] combined generalized subdivision with mesh-based parameterized L-systems to generate smooth ramification structures. Felkel et al. [5] generated topologically correct surfaces of branching tubular structures for a vessel tree using the maximal-disc interpolation method. Galbraith et al. [6] built implicit surfaces as hierarchical BlobTrees [30] and combined surface components in both smooth and non-smooth configurations. Angles et al. [2] proposed an interactive method to refine the joint shape using a user-defined sketch.

Zhu et al. [31] proposed a method of modeling high-quality quad-only tree shapes efficiently based on local convolution surface approximation, which offer credible for our idea of modeling manifold trees with smooth ramifications. However, they focused on remeshing a given triangle mesh of a tree into a quad-mesh. Another solution for continuous vascular structure reconstruction was proposed by [29]. The resulting meshes were not manifold because of the bifurcation tiling scheme in their method, whereas our meshes are manifold because we adopt the cut-paste process.

Although the works of [5] and [29] are similar to our work, the ramifications of botanical trees we attempt to reconstruct possess their own features.

3 Overview

The final aim of our work is to create a manifold tree quad-mesh with tolerable visual distortion and smooth ramifications, which is described by the following objective function:

$$\begin{aligned} f(Rems) = \sum _{i=1}^{N}RU(Rems_i)+\sum _{}^{}RC(Rem_{i,j})+\sum _{}^{}CP(Rem_{i,k}), \end{aligned}$$
(1)

where Rems denotes the set of all ramifications in a tree extracted from the skeleton information of branches, and is regarded as an independent variable in the objective function. Sub-objective function RU is the distortion function of the ramification unit for Catmull–Clark subdivision. \(Rems_i\) is the i-th ramification in the set Rems. Sub-objective function RC is the distortion function of the ramification connection between two neighbor ramifications. \(Rem_{i,j}\) is the connection between the i-th ramification and j-th ramification. Sub-objective function CP (cut-paste) is the fitness function of the pasted ramification between two overlapping ramifications. \(Rem_{i,k}\) is the i-th ramification merged with the k-th ramification.

Fig. 2.
figure 2

Overview of our tree modeling approach. (a) Users define the skeleton information of branches. Extract the close-up of one ramification skeleton and create a basic ramification unit. (b) Propagate ramifications for a single ramification unit. (c) Connect ramification units using an optimization algorithm and distinguish the additional ramifications from the main mesh simultaneously. (d) Subdivide the main mesh to which the additional ramifications are pasted back. (e) Obtain the final mesh with one more subdivision.

Hence, we convert the problem into creating a tree model with minimum f(Rems). Figure 2 shows the workflow of our tree modeling system, which consists of three parts.

First, skeletons of a tree are defined by the user. Then, basic ramification units, which can represent continuous ramification structures after Catmull–Clark subdivision, are created with an RU value equal to zero as the initial state using the skeleton information of branches in the local coordinate system, thereby setting their parent node as the origin. The ramification units are mapped back to the world coordinate system. This part of the procedure is described in Sect. 4.

Once all ramifications are arranged, they can be easily sorted according to the order of their parent nodes and checked to determine whether they are connectable ramifications or additional ramifications. A bottom-up optimization algorithm is applied recursively to adjust all connections among connectable ramifications, thereby striking a balance between the RU and RC functions in addition to making the ramification propagate. We obtain the main mesh of the tree at the end of this step. The details of this part of the procedure are described in Sect. 5.

If there exist any additional ramifications, then this means that some child branches that could destroy the manifold of the tree mesh have been detected. They should be cut and pasted into the main mesh after its first Catmull–Clark subdivision. The CP function indicates the distortion in this operation as discussed in Sect. 6. In addition, the reason why we select Catmull–Clark subdivision scheme is that Catmull–Clark subdivision can generate smooth surface for trees with keeping the symmetry from its control meshes, which means it would not introduce extra distortion into tree models. The details of discussion about subdivision scheme selection are discussed in the appendix.

4 Basic Branch Unit Creation

Figure 3 shows two typical basic ramification units: the connection unit shown in Fig. 3(a) is for those segments of branches that do not have any child branches, whereas the ramification unit in Fig. 3(b) is for a child branch that has start direction \((\varvec{cv}_{1}-\varvec{cv}_0)\) located in the \(i \)-th node \(\varvec{bv}_i\) of its parent branch, counted from the root node.

For the connection unit between \(\varvec{bv}_i\) and \(\varvec{bv}_{i+1}\), \(\varvec{DS}_i\) is the unit start direction that is the same as \((\varvec{bv}_{i+1}-\varvec{bv}_i)\), and \(\varvec{DE}_i\) is the unit end direction. Additionally, \(\varvec{S}_j\)(\(j=0,1,2,3\)) denotes the vertices of the start boundary and \(\varvec{E}_j\) denotes the vertices of the end boundary. They are created by basis {\(\varvec{B},\varvec{N},\varvec{DS}_i\)}. Both the start and end boundaries of ramifications are sorted clockwise when these ramifications are created.

The ramification unit is an expansion of the connection unit, in addition to a sub-branch. \(\varvec{Q}\) is the intersection of main face \(\varvec{ABCD}\) and the child branch skeleton. Subface \(\varvec{abcd}\) is also called a sub-branch start boundary, which is recorded for boundary calculation using Catmull–Clark subdivision as explained in Sect. 6. At this step, \(\varvec{Q}\) is also the center of main face \(\varvec{A}_0\varvec{A}_1\varvec{A}_2\varvec{A}_3\), and \(\varvec{Q}'\), which superposes \(\varvec{Q}\), is the center of subface \(\varvec{a}_0\varvec{a}_1\varvec{a}_2\varvec{a}_3\). The sum of cosine distances between the pairs of vectors is selected as the RU function, that is,

$$\begin{aligned} \begin{aligned} RU(Rems_i) =\sum _{k=0}^{3}CosDistance(\varvec{QA}_k,\varvec{Q'a}_k)=\sum _{k=0}^{3}\frac{\varvec{QA}_k \cdot \varvec{Q'a}_k}{\left\| \varvec{QA}_k \right\| \cdot \left\| \varvec{Q'a}_k \right\| }. \end{aligned} \end{aligned}$$
(2)
Fig. 3.
figure 3

Two typical basic branch units created according the skeleton

4.1 Criteria

A suitable basic ramification unit plays a large role in ramification representation. Taking the properties of Catmull–Clark subdivision into consideration, the following criteria should be satisfied naturally for high-quality tree quad-mesh construction.

  1. 1.

    A ramification unit is created corresponding to a subbranch.

  2. 2.

    Each RU value of the ramification unit when it is built is zero (the minimum value) initially because this value will be increased in the subsequent connection optimization step, so a zero value simplifies the calculation.

  3. 3.

    The diameter of a branch should be multiplied by correction factor \(\alpha \) to counteract the shrinkage caused by Catmull–Clark subdivision (particularly the first two subdivisions).

4.2 Ramification Unit in the Local Coordinate System

Let {\(\varvec{X},\varvec{Y},\varvec{Z}\)} denote the basis of the world coordinate system in \(\varvec{R}^3\), in which the skeletons of all branches from a tree are user-defined. Local coordinate systems with basis {\(\varvec{x},\varvec{y},\varvec{z}\)} can be built for each child branch, and their mapping to the world coordinate system is decomposed into one \(1\times 3\) translation vector \(\varvec{T}_0\), and two \(3\times 3\) rotation matrices \(\varvec{Rot1}\) and \(\varvec{Rot2}\). Given a vector in the world coordinate system, \(\varvec{P}\), and a vector in a local coordinate system, \(\varvec{p}\), we have the following surjective mapping equations:

$$\begin{aligned} \varvec{p} =\varvec{Rot2}\cdot \varvec{Rot1}\cdot (\varvec{P}-\varvec{T}_0) \end{aligned}$$
(3)
$$\begin{aligned} \varvec{P} =\varvec{Rot1}^T\cdot \varvec{Rot2}^T\cdot \varvec{p}+\varvec{T}_0, \end{aligned}$$
(4)

where \(\varvec{T}_0\) is \(\varvec{bv}_i\) in Fig. 3; \(\varvec{Rot1}\) is the rotation matrix calculated by the Rodrigues rotation formula to make the parent branch direction (\(\varvec{bv}_{i+1}-\varvec{bv}_i\)) aligned to the \(\varvec{y}\) axis, whereas \(\varvec{Rot2}\) makes \(\varvec{y}\times (\varvec{cv}_{1}-\varvec{cv}_0) \) aligned to \(\varvec{x}\). Then ramification unit \(Rem_i\), such as that in Fig. 3(b), contains set of vertices \(V_{local}\), and set of faces F is built in this local coordinate system. Then, according to Eq. 4, \(Rem_i\) in the world coordinate system can be obtained easily by translating \(V_{local}\) to V, which is a corresponding set of vertices in the world coordinate system. With the help of the local coordinate system, it becomes trivial to check whether the neighbor ramifications are connectable by converting them into the same local coordinate system and projecting them into the same plane.

5 Ramification Unit Connection Optimization and Propagation

After all ramifications are built and classified, we link all connectable ramifications first using a connection optimization algorithm to alleviate distinct distortion among ramifications. Thus, we should first distinguish connectable ramifications from additional ramifications.

If a node has more than one child branch, then one child branch is selected to create a ramification as the “current ramification”, and the other branches are checked to determine whether they are additional ramifications, as shown in Fig. 4. According to the shape of the ramification unit, there are two cases in which a child branch can be considered as an additional ramification:

  1. 1.

    The absolute value of the angle between two projected vectors of the child branch in the current ramification modulo 45\(^\circ \) is smaller than 10\(^\circ \) (Fig. 4(a)).

  2. 2.

    Q and \(Q'\), which are the intersection points of two child branches on the current ramification, are not on the same face (Fig. 4(b)).

Fig. 4.
figure 4

Distinguishing the ramification type in the transverse view of the ramification unit cross section (black square). The black arrow is the projected vector of the child branch in the current ramification. The red arrow is that in the additional ramification. The blue arrow is that in the connectable ramification, which can be attached to the current ramification trivially before the subdivision step. (Color figure online)

In this section, sub-objective functions RU and RC must be considered simultaneously. Thus, \(f_2\), which is the objective function in this step, is

$$\begin{aligned} f_2(Rems) = \sum _{i=1}^{N}RU(Rems_i)+\sum _{}^{}RC(Rem_{i,j}). \end{aligned}$$
(5)

To determine the minimum value, we divide this task into two independent parts: a radial neighbor ramification connection and axial connection calibration with repulsion equilibrium.

The radial neighbor ramification connection attempts to determine corresponding adjacent start and end boundaries between neighbor ramifications along the directions of skeletons:

$$\begin{aligned} Idx=argmin\sum _{k=0}^{m-1} CosDistance(CE_{k}^{(i)},CS_{(k+Idx)mod(m)}^{(i+1)}), \end{aligned}$$
(6)

where \(CE_{k}^{(i)}\) is the end boundary in \(Rem_i\) and \(CS_k^{(i+1)}\) is the start boundary in \(Rem_{i+1}\). When the ramifications on one branch connect correctly, axial connection calibration is applied to expand the connection space between neighbor ramifications, which is described as

$$\begin{aligned} \left\{ \begin{matrix} S_{i}^{(k)}=argmax(\sum \nolimits _{i=0}^3\left\| E_{i}^{(k-1)}-S_{i}^{(k)} \right\| ),s.t.\left\| Q^{(k)}-S_{i}^{(k)} \right\| \ge \alpha \cdot Dia_{max} \\ E_{i}^{(k)}=argmax(\sum \nolimits _{i=0}^3\left\| E_{i}^{(k)}-S_{i}^{(k+1)} \right\| ),s.t.\left\| E_{i}^{(k)}-Q^{(k)} \right\| \ge \alpha \cdot Dia_{max} \end{matrix}\right. \end{aligned}$$
(7)
Fig. 5.
figure 5

Axial equilibrium between two connectable ramifications

For a pair of neighbor ramifications, the solution of Eq. 7 can be explained by Fig. 5. \(\varDelta {x_e}\) is the axial movement of the end boundary in \(Rem_i\), and based on the law of cosines, the increment of RU is

$$\begin{aligned} \varDelta {RU}=4\cdot cos(\angle A_2Q_iA_2')= 2\frac{\Vert Q_iA_2 \Vert ^2+\Vert Q_iA'_2 \Vert ^2-\Vert A_2A'_2 \Vert ^2}{\Vert Q_iA_2 \Vert \cdot \Vert Q_iA'_2 \Vert } \end{aligned}$$
(8)

where \(\varDelta {x_e}\) equals \(\Vert A_2A'_2 \Vert \). \(\Vert Q_iA_2 \Vert \) is the radius of the sphere tangent to edges of the cube with an edge length of \(Dia_i\) before axial connection calibration. The constant 4 results from the symmetry of the cube. Simultaneously, the increment of RC is

$$\begin{aligned} \varDelta {RC}=\left\{ \begin{matrix}-(1-\frac{P}{T})\cdot CosDistance(CE_{k}^{(i)},CS_{(k+Idx)mod(m)}^{(i+1)}) &{} 0\le P < T \\ 0 &{} P \ge T \end{matrix}\right. , \end{aligned}$$
(9)

where P is the distance between the center of the end boundary in \(Rem_i\) and that of the start boundary in \(Rem_{i+1}\), which can also be regarded as the repulsion between the neighbor ramifications because \(\varDelta {RC}\) is only valid for a sufficiently close distance. Threshold T is set to \(Dia_i\). When \(\varDelta {RC}\) is negative, this means that axial movement \(\varDelta {x_e}\) is helpful for reducing the visual distortion of the connection.

The solution retrieval of \(\varDelta {x_s}\) and \(\varDelta {x_e}\) for \(min(\varDelta {RU}+\varDelta {RC})\) is conducted iteratively, and the effect of connection optimization is shown in Fig. 6. The figure shows that connection optimization avoids the overlap between the neighbor ramifications (Fig. 6(a)). Moreover, the subdivision surface of the ramification connection (in the red box) after optimization (Fig. 6(d)) is smoother than that without optimization (Fig. 6(c)).

By contrast, for any \(\varDelta {x_e}\), if \(min(\varDelta {RU}+\varDelta {RC})\) is always larger than given additional ramification threshold \(T_{add}\), then \(Rem_i\) is considered as an additional ramification and should not be connected into main mesh in this step; it is also the last case to obtain an additional ramification.

Fig. 6.
figure 6

Effect of connection optimization

After all additional ramifications for the next step have been picked up, we also obtain connectable ramification set \(Rams_c\). Then, the connection optimization algorithm is applied from bottom to top in \(Rams_c\) recursively for sub-branch propagation, as shown in Fig. 2(b), which can be described by the propagation Algorithm 1. The main idea of this algorithm is to search all child branches along a branch’s node list (skeleton) and connect corresponding connectable ramifications successively. When this algorithm is applied from the root node of a tree, we can obtain the main mesh of the tree, and the remaining task is a cut-paste operation for additional ramifications.

figure a

6 Additional Ramification Cut-Paste

As all basic ramifications are constructed first, our modeling method has a local priority. Distortion accumulates if all basic ramifications are connected, and the two-manifold structure of the tree modeling surface is distorted by the overlap of ramifications. If a ramification can cause high distortion or overlaps with other ramifications, then we select it as an additional ramification before the ramification connection optimization step to avoid it having a bad effect on the entire tree. To merge those additional ramifications back into the main mesh created in the ramification connection optimization step, cut-paste is performed.

Only when additional ramifications exist can this operation be implemented to merge those additional ramifications into the main mesh after the first Catmull–Clark subdivision. Each additional ramification grows up according to Algorithm 1, and is cut alone with the sub-branch boundary after the first subdivision. Then, according to the Catmull–Clark subdivision process, the original sub-branch boundary is determined by recording the new edge vertices that were generated from vertices that belong to the original sub-branch boundary. This method stably calculates the current sub-branch boundary shown in Fig. 7. As the sub-branch boundary is known, we can extract the vertex set and corresponding face set of the grown sub-branch beginning with any seed vertex in this sub-branch.

Fig. 7.
figure 7

Boundary calculation after Catmull–Clark subdivision. From left to right: Original boundary, boundary after 1st, 2nd and 3rd subdivision.

Then, a segment-quad-face intersection test based on segment-triangle one [16] is implemented to determine the intersection face in the main mesh in addition to the closest vertex. To save time, we limit the intersection test scope to a sphere, with the joint node of the additional ramification as the center point and 1.5 times its diameter as the radius. The one-ring neighbor of the closest vertex constitute the paste-destination boundary. The sub-branch boundary can match the paste destination boundary using an equation similar to Eq. 6:

$$\begin{aligned} Idx=argmin\sum _{k=0}^{m-1} CosDistance(\varvec{SB}_{k},\varvec{PB}_{(k+Idx)mod(m)}), \end{aligned}$$
(10)

where \(\varvec{SB}\) and \(\varvec{PB}\) are the sub-branch boundary and paste destination boundary, respectively, which were projected into same plane following their center point alignment. Additionally, \(m=8\), in this case.

When merging the two boundaries, sub-objective function CP between \(Rem_{i}\) and \(Rem_{k}\) is described as

$$\begin{aligned} \begin{aligned} CP(Rem_{i,k})&=\beta \sum _{j=0}^{m-1} {CosDistance(\varvec{SB}_{j}^{(i)},\varvec{PB}_{j}^{(k)})}\\&\quad +(1-\beta )\sum _{j=0}^{m-1}{\Vert \varvec{SB}_{j}^{(i)}-\varvec{PB}_{j}^{(k)}}\Vert , \end{aligned} \end{aligned}$$
(11)

where \(\beta \) is a weight factor for the boundary merge, \(\varvec{SB}^{(i)}\) is the sub-branch boundary in \(Rem_{i}\), and \(\varvec{PB}^{(k)}\) is the paste destination boundary close to \(Rem_{k}\), which is regarded as an additional ramification. As we can see, two factors contribute to cut-paste distortion: the angle deflection between \(\varvec{PB}\) and \(\varvec{SB}\), and the Euclidean distance between them. Thus, we need to rotate and translate \(\varvec{PB}\) and \(\varvec{SB}\) to determine the minimum CP. Figure 8(a) to (d) show the entire cut-paste process as an example. The additional ramifications’ cut-paste process is described as follows:

  1. 1.

    Calculate the intersection point between the skeleton in an additional ramification and main mesh after the first Catmull–Clark subdivision.

  2. 2.

    Determine the closest vertex to the intersection point in the main mesh.

  3. 3.

    Delete the face that contains the closest vertex and its one-ring neighbor in the main mesh, and obtain the entire boundary as a paste destination boundary.

  4. 4.

    Extract a sub-branch from the additional ramification along with its sub-branch boundary.

  5. 5.

    Merge the sub-branch boundary and paste the destination boundary with minimizing Eq. 11 using the rotation and translation operation.

  6. 6.

    After all additional ramifications are cut and pasted, apply the Catmull–Clark subdivision to obtain the final modeling of the tree.

Fig. 8.
figure 8

Cut-paste process for an additional ramification. (a) Merge the sub-branch at the right-hand side, which is an additional ramification, with the main mesh. (b) Extract the additional ramification with its sub-branch boundary after the first Catmull–Clark subdivision. (c) Determine the closest vertex in the main mesh in addition to its one-ring neighbor as the paste-destination boundary, which is used to delete the overlapping face when implementing the paste operation. (d) Match the sub-branch boundary of the additional ramification to the paste-destination boundary and merge the two branches using one more subdivision. (e) Another ramifications’ cut-paste result for an additional branch with a different diameter, rotation and position.

Figure 8(e) shows the generality of our cut-paste process by pasting another additional ramification into the main mesh with a different position, rotation, and diameter.

7 Results and Discussion

In this section, we present the results of our method using a sketching tree modeling interface. To obtain the 3D skeleton of branches for our method, we drew and adjusted our tree from both the front view and side view, adopting the same method as that in [10]. The main user interfaces of the tree modeling system are shown in Fig. 9(a), which denote two 2D views. We input two pictures of a tree with its camera parameters and sketched the 2D skeletons along the pictures so that the 3D skeletons of branches could be calculated.

In our first experiment, as Fig. 9 shows, we attempted to reconstruct a simple binary tree whose point cloud in Fig. 9(b) was obtained using structure from motion as ground truth from photographs that covered the tree fork 360\(^\circ \).

Compared with the classical generalized cylinder method, the results in Fig. 9(c) and (d) demonstrate that our approach modeled tree ramifications as a manifold, preserving the shape and features expressed by generalized cylinders faithfully. The gray parts of the point cloud indicate the difference between the modeling surface and real surface. Without any special approximate algorithm to fit the point cloud, our result in Fig. 9(d) had fewer gray parts than that for the generalized cylinders in Fig. 9(c), particularly around the ramification part, which means that our method was more suitable for describing the tree structure than generalized cylinders.

This experiment also demonstrated that our result, which was available by drawing simple skeletons, was a suitable summary and simplification of that created by screened Poisson surface reconstruction [11] from a dense point cloud. Although the Poisson surface in Fig. 9(e) had more details, our result in Fig. 9(d) demonstrated a similar global geometric impression to its result. By contrast, the Poisson surface could not express the texture of bark well geometrically because it was limited by the density of the point cloud obtained from pictures. In this case, texture mapping for a bump map may be a better choice to represent tree bark, and our surface could be smoother and easily parameterized for texture mapping.

Fig. 9.
figure 9

Examples of a model for a ramification of a real-tree

Fig. 10.
figure 10

Multi-furcation ramification construction

Another experiment was conducted to verify whether the cut-paste step was suitable for multi-furcation ramifications. In this experiment, we set all the ramifications as additional ones manually for verification. We present the results for ramifications with a furcation number from 4 to 7 (additional ramification numbers were 3 to 6) in Fig. 10. The two-manifold property for the meshes were maintained well as the furcations increased, which means that the cut-paste process that we adopted decreased distortion and avoided overlap for multi-ramifications. Table 1 records the face number for the final mesh, and the time cost for cut-paste and subdivision; the furcation number is in proportion to all of other items.

Table 1. Time cost for multi-furcation ramification construction

As the results of the experiments have demonstrated, our method was suitable for tree ramification modeling. Our method was applied in the next experiment to some complete trees. Figure 11 shows a variety of results generated from skeletons of different trees. The complexity of the skeletons ranged from a small number to a large number. All the meshes of trees were manifold, with continuous ramifications, which increased the realism of the trees. Our method obtained a complete tree model for different types of trees, and maintained the two-manifold property of their ramifications.

The corresponding time cost of these trees in each step is shown in Table 2. The additional ramifications were recognized automatically according the Sect. 5. The table shows that, in our method, a complete tree was modeled in a short time. Taking Table 1 into consideration, we can found that the average time consumed in the cut-paste step per additional ramification was far longer than that in Table 2. Thus, this also demonstrated that the most time-consuming step was cut-paste because of the intersection test between additional ramifications and the main mesh, which is why we limited the search scope in this step. Further research is necessary to reduce the time of the cut-paste step.

Fig. 11.
figure 11

Variety of results generated from user-defined skeletons of different trees. From top to bottom: cherry tree (Tree1), maple tree (Tree2), and manual apple tree (Tree3).

Table 2. Time cost in each step of modeling for different trees

8 Conclusions

We proposed an effective and intuitive tree modeling system to generate manifold quad-meshes with smooth and continuous ramification structures. The resulting surface was generated using a Catmull–Clark subdivision scheme directly without any extra virtualization algorithm. To improve the surface quality of the tree and retain the two-manifold property of the mesh, ramification connection optimization and additional ramification cut-paste were conducted for our local priority mesh generation algorithm.

The user-defined skeleton information of the branches was intuitive and essential as input, which decreased the difficulty of interactive control for tree modeling. Our resulting meshes were purely quadrilateral with continuous ramifications, which makes them similar to those that adopt generalized cylinders, and can be a reasonable summary of the Poisson surface in a short time.