Implicit modeling using distance functions
The basic principle of implicit modeling can be illustrated directly by using distance functions [18]. For instance, a sphere can be described as a distance function to a point. Similarly, an infinite cylinder can be described as a distance function to a line, and a torus can be described as a distance function to a circle. Several AM techniques based on distance functions have been proposed. In [19], the distance function was used for the boundary voxel optimization. The implicit slicer proposed in [20] is also fundamentally based on the distance function. It was also used by Liu et al. [21] for the design of material composition functions. With the increasing processing power of modern computer systems and the wide recognition of the simplicity and capability of the distance function-based modeling technique, distance functions have recently been popularly used in a variety of applications. For instance, a popular technique known as the Kinect Fusion developed by Newcombe et al. [22] used for the reconstruction of a real-world 3D object from the sensing data is essentially based on the distance function. As the intersection between a ray and a distance function-defined geometric object can be easily calculated by using a numerical method known as ray marching, it has been popularly used for geometric and material modeling in a ray tracing system. For readers who want to know more about the practical use of distance functions, please visit http://www.shadertoy.com, which is a live online visual effect editor in GLSL shader for generating various graphical effects using mainly implicit functions.
Converting from the explicit representation to the implicit representation
Though distance functions can directly provide the distance information from a given position to the objects that they represent, only a small number of relatively simple objects can be modeled directly as distance functions. As the most popular form of representation of a geometric object, triangle meshes are ubiquitous in the field of computer graphics, 3D games, and CAD. Many complex implicit geometries can be created by converting a triangle mesh model into an implicit representation. One conversion method is to apply the convolution operation to a triangle mesh [23]. Suppose a 3D surface object is represented explicitly by a collection of parametric surface patches, such as triangle meshes \(S_{\triangle _{i}}(s,t)\), i=1,2,⋯,N, \((s,t)\in \mathcal {D}_{i}\). Each point P(x(s,t),y(s,t),z(s,t)) on a surface patch is a source of particle energy, and suppose that each particle emits uniformly the same amount of energy defined by a function K(r)≥0, where \(r\in \mathcal {R}\) represents the distance from the surface point P to a point X(x,y,z) in space. Then, the total energy field generated by the collection of surface patches can be represented by a kind of convolution shown below:
$${}F_{s}(X)= (S\star K)(X) =\sum_{i=1}^{N}\int_{(s, t)\in \mathcal{D}_{i}} K\left(\|S_{\triangle_{i}}(s, t)-X\|\right) dsdt. $$
There are various ways to model the potential function K(r), but it is often assumed that it is non-negative and decreasing with an increase in distance r. Ideally, this function can be described by \(e^{-ar^{2}}\) in order to make it more physically meaningful. However, for a potential function defined in this form, it is difficult to find a closed form solution for the convolution defined above. Most often, the following type of function is used [24, 25]:
$$K(r)=\frac{1}{\left(1+ar^{2}\right)^{2}}. $$
The conversion of an explicit geometric representation to an implicit function can also be achieved by a sampling-fitting process. With this method, a collection of surface points are first sampled from the given explicit form. A certain implicit fitting technique can then be applied to the sampled point cloud to implicitly approximate the given surface [26, 27]. Figure 2 shows the implicitly reconstructed Utah teapot spout by fitting a point cloud sampled from the classic Utah teapot model using the fitting method proposed in [26].
Procedural implicit modeling
Natural objects are in general a procedural result. Typical examples are the biological objects such as plants, trees, and animals, which build up their geometric forms in a process of cell repetition. The L-system is a powerful technique to model and simulate the process, but it is not a 3D printing friendly representation. The modeling of these objects directly as a real function by simulating the biological growth process in the form of an iterative process seems more natural, especially when the modeling of the internal biological material structures of these objects needs to be taken into consideration.
Cell growth simulation
This method is based on the cell growth simulation following the idea of cell division, a process by which a parent cell becomes two or more daughter cells. The process can be modeled by starting from a single cell, which can be initialized as a tiny sphere. This cell then generates new cells, which can be blended together with the older generation of cells and become a relatively bigger cell. In biology, cells behave like stars and planets, which are constantly in motion. By simply combining rotation, translation, and scaling into the simulation process, one can easily model infinitely many different kinds of shapes and material structures (see Fig. 3). One distinctive advantage of the geometries generated in this manner is that they have an infinite level of details, which makes it very suitable for modeling natural objects and biological tissue structures.
Procedural non-linear transformations
The idea behind this technique originated from the Mandelbrot set and the Julia set, which can be interpreted as sequences of non-linear geometric transformations. Indeed, for a complex number z=x+yi, z2+C actually represents a combination of rotation, scaling, and translation operations. This becomes obvious when we rewrite z as z=reiθ, where \(r=\sqrt {x^{2}+y^{2}}\), \(\theta =arctan\frac {y}{x}\). In fact, z2=eiθ×z actually corresponds to a rotation of the point positioned at (x,y) by an angle θ around the coordinate origin. The generalization of the 2D Mandelbrot set or the Julia set to 3D is usually done with the quaternion q=xi+yj+zk+w, but it is difficult to generate meaningful geometric objects by formulating the iterative process by using the formula \(q_{1}=q_{0}^{2}+C\), as a quaternion is in general a 4D object, which can only be visualized in 3D slice-by-slice. Recently, some effort has been made by following a geometric intuition, such as by using the famous MandelBulb 3D fractal object defined by Daniel White [28].
In general, this idea can be generalized in the following way. For any point P(x,y,z), let P0=(x,y,z) and
$$\mathbf{P}_{n+1}=\left(\mathcal{X}(\mathbf{P}_{n}), \mathcal{Y}(\mathbf{P}_{n}), \mathcal{Z}(\mathbf{P}_{n})\right) + T, \hskip 0.5cm n=0, \cdots, N. $$
where \(\mathcal {X}(x, y, z), \mathcal {Y}(x, y, z), and \mathcal {Z}(x, y, z)\) are three implicit functions and T is a fixed 3D translation. Apparently, various fractal forms can be defined in this way. However, how to define a proper transformation to generate a required form is largely a trial and error process.
Implicit modeling using Li-Tian’s area splines
One challenging problem in implicit modeling is that it lacks a technique similar to various explicit spline techniques for modeling free-form implicit objects. While the popular blob-based technique is very effective in the modeling of soft deformable objects, it is difficult to model free-form implicit geometric objects. One way of modeling free-form implicit objects has been the application of the distance functions to a polygon or a polyhedron specified by some control points. However, there are some drawbacks to this method. One difficulty is the integration in the distance function of both the flexibility of specifying the smoothness of a required free-form shape and the accuracy of the shape approximation to the control polygon, which is one of the most important features of parametric spline techniques. To achieve a high level of smoothness around the vertices, when using the distance function to a polygon, a relatively larger value of the distance function has to be used, which will subsequently result in a poor approximation of the original geometric shape specified by the base polygon, as it can be seen in the left two figures shown in Fig. 4.
Another way of constructing a free-form implicit shape is to specify an object as a point cloud and construct an implicit function from the given point set based on a certain surface approximation and interpolation technique [26, 29–31]. However, most of these kinds of techniques are in general computationally expensive and involve the use of a massive 3D data set, which often leads to poor performance, if the data set is very big. Recently, a kind of an implicit free-form shape modeling technique has been developed by Li & Tian [32], which can be used to design implicit objects in a similar way to the conventional parametric spline shapes (See Fig. 5).
The basic idea of the implicit spline is to sub-divide a 2D region into a collection of polygons with different potential functions defined on different regions. Similarly to the control points-based parametric spline techniques, implicit spline objects can be designed as a convex blending of a set of implicit potential field functions corresponding to different regions. These locally defined field functions behave similarly to the control points used in a traditional spline technique and can be referred to as control implicit primitives. The main difference between our 2D implicit splines and an explicit spline technique is that the shape defined by the 2D implicit spline technique corresponds to a solid area, whereas the shape defined by a conventional spline is only a boundary.
The key challenge in our technique is how to construct the basis functions corresponding to a given set of 2D polygons with each individual polygon having an arbitrary shape. Similar to conventional spline basis functions, it is generally expected that the basis functions built from the set of polygons are polynomial, non-negative, and have the property of the partition of unity, if the initial polygons form a partition of a 2D domain. Apparently, polygon-based distance functions do not meet these basic requirements. Our way of constructing the required bivariate spline basis functions is to find a general solution to the following integral convolution, which is similar to the construction of conventional B-spline basis functions. Let \(\square \subset \mathcal {R}^{2}\) be a square of size 2δ×2δ centered at the coordinate origin with δ>0. For an arbitrarily given polygon \(\Delta \subset \mathcal {R}^{2}\), we define a sequence of functions in the following way:
$$ {{\begin{aligned} B_{\Delta,\delta}^{(0)}(x, y)\! &\,=\, \chi_{\Delta} (x,y)=\left\{ \begin{array}{ll} 1, & \text{(x,y)} \in \Delta; \\ 0, & \text{(x,y)} \notin \Delta. \end{array}\right. {,}\\ B_{\Delta,\delta}^{(n)}(x,y) \!&\!= \frac1{4\delta^{2}} \!\int\int_{\mathcal{R}^{2}} \!B_{\Delta,\delta}^{(n-1)}(s,t) \chi_{\square}(s\,-\,x, t\,-\,y)dsdt, \,\,\, \,\,2cm(n\!>\!\!0). \end{aligned}}} $$
The parameter δ in the integral serves as a solid polygon vertex smoothing parameter, which specifies the extent to which one wants to smooth a sharp vertex corner of a polygon. With the properties of integration, it can be seen clearly that each \(B_{\Delta,\delta }^{(n)}(x,y)\) defined in this way has the following two properties. First, \(B_{\Delta,\delta }^{(n)}(x,y)\) is a piecewise polynomial function. Second, \(B_{\Delta,\delta }^{(n)}(x,y)\) is Cn−1 continuous. Though this idea of constructing the required spline basis functions is simple, without an explicit expression of these convolutions, the numerical evaluation of these functions can be very expensive. Fortunately, we have found a way to express these convolutions explicitly in the analytical form.
As it has been shown in [32], the function defined above can be expressed explicitly as a linear combination of a set of bivariate functions \(\Omega ^{(n)}_{E, \delta }(x,y)\) associated with different edges of polygonal Δ and the piecewise polynomial smooth unit step functions Hn(x). For a polygonal edge parallel to the 2D vector E(α,β),α,β>0, \(\Omega ^{(n)}_{E, \delta }(x,y)\) can be expressed as
$$ \begin{aligned} \Omega^{(n)}_{E, \delta}(x,y)\,=\,\frac 1 {(4\delta^{2})^{n}}\! \sum^{n}_{i=0}\sum^{n}_{j=0}(-1)^{i+j} C_{n}^{i}C_{n}^{j} A_{E}^{(n)}\\ \times (x\,+\,(n\,-\,2i)\delta, \, y\,-\,(n\,-\,2j)\delta), \end{aligned} $$
(1)
where
$$ {{\begin{aligned} {}A^{(n)}_{E} (x,y)\,=\,\left\{ \begin{array}{ll} 0, & \quad \!\!\alpha y\ge \beta x \,or \,y\ge 0;\\ \!\frac{1}{(2n)!\alpha^{n}\beta^{n}} (\beta x - \alpha y)^{2n}, & \quad \!\!\alpha y< \beta x, y<0, x\!\le\! 0;\\ \sum_{k=1}^{n}\frac{(-1)^{n+k}\alpha^{k}}{(n-k)!(n+k)!\beta^{k}}x^{n-k}y^{n+k}, & \quad \!\!\alpha y< \beta x, y<0, x\!>\! 0; \end{array}\right. \end{aligned}}} $$
(2)
and the piecewise polynomial smooth unit step function Hn(x) is defined recursively by
$$ {{\begin{aligned} H_{0}(x)&=\left\{ \begin{array}{ll} 0, & \quad x<0; \\ \frac12, & \quad x=0; \\ 1, & \quad x>0. \\ \end{array} \right.\\ {}H_{n}(x)&= \frac12 \left(\!\left(\!1\,+\,\frac {x} {n}\right)\! H_{n-1}\!(x\,+\,1) \,+\, \left(\!1\,-\,\frac {x} {n}\right)\!H_{n-1}\!(x\,-\,\!1)\!\right)\!, \!n\,=\,1, \!2, \!3, \cdots. \end{aligned}}} $$
Note that when the value of the polygon smoothing parameter δ is sufficiently small with respect to the size of the polygon, we have \(B_{\Delta,\delta }^{(n)}(x,y)=1\) for the most part of the interior region of the given polygon. Thus, when \(B_{\Delta,\delta }^{(n)}(x,y)\) is used as a weight function combining a control implicit primitive function F(x,y), we have \(B_{\Delta,\delta }^{(n)}(x,y)F(x,y)=F(x,y)\), when \(B_{\Delta,\delta }^{(n)}(x,y)=1\). When associating F(x,y) with a 2D implicit geometry, the new function \(B_{\Delta,\delta }^{(n)}(x,y)F(x,y)\) will have exactly the same shape as that defined by F(x,y), when the point P(x,y) is well within the support of \(B_{\Delta,\delta }^{(n)}(x,y)\), while the part of the shape defined by F(x,y) that is well outside the support of \(B_{\Delta,\delta }^{(n)}(x,y)\) is removed as \(B_{\Delta,\delta }^{(n)}(x,y)F(x,y)\) will be nearly zero. Therefore, the function \(B_{\Delta,\delta }^{(n)}(x,y)\) can be referred to as a kind of a shape-preserving spline basis function.
It can be shown directly that bivariate functions \(B_{\Delta,\delta }^{(n)}(x,y)\), n=0,1,2,⋯, have the following properties:
-
1.
Nonnegativity:\(0\le B_{\Delta,\delta }^{(n)}(x,y)\le 1\).
-
2.
Smoothness:\(B_{\Delta,\delta }^{(n)}(x,y)\) has a Cn−1 continuity.
-
3.
Piecewise Polynomial:\(B_{\Delta,\delta }^{(n)}(x,y)\) is piecewise polynomial.
-
4.
Local Support:\(B_{\Delta,\delta }^{(n)}(x,y)\) has a finite support if Δ is finite.
-
5.
Additivity:\(B_{\Delta,\delta }^{(n)}(x,y)\) is additive. That is, if two polygons Δ1 and Δ2 do not intersect or they only intersect at their edges, then
$$B_{\Delta_{1}\cup\Delta_{2},\delta}^{(n)}(x,y)= B_{\Delta_{1},\delta}^{(n)}(x,y)+B_{\Delta_{2},\delta}^{(n)}(x,y). $$
-
6.
Partition of unity:\(B_{\Delta,\delta }^{(n)}(x,y)\) takes value in [0,1] and if
$$\bigcup_{k}\Delta_{k} = \mathcal{R}^{2}, \hskip 0.1in area\left(\Delta_{i}\bigcap_{i\ne j}\Delta_{j}\right)=0, $$
then
$$\sum_{k} B_{\Delta_{k},\delta}^{(n)}(x,y)= 1. $$
The solid areas shown in Fig. 5 show the filled contour \(\left \{(x,y): B_{\Delta,\delta }^{(3)}(x,y)\le 0.5\right \}\) corresponding to different δ values for the spline basis function built from the same control polygon Δ. As it can be seen from the figure, the shape of the control polygon can be approximated at a varying level by using a single parameter δ: the smaller the δ value, the more closely the filled contour of the spline basis function approximates the control polygon.
The design process of the free-form solid area spline is similar to the design process of spline curves using a conventional spline technique. In fact, to find \(B_{\Delta,\delta }^{(n)}(x,y)\) for a given polygon Δ, one needs only to specify the control points in the counter-clockwise order and to choose a proper degree of smoothness of the required bivariate function as well as the polygon smooth parameter δ. Some more 2D implicit shape design examples are shown in Fig. 6.
Figure 4 illustrates the difference between our 2D implicit spline technique and the distance functions. Distance functions have gained considerable attention recently, given that they support the fast ray marching of distance function-defined implicit objects. However, distance functions are not good at modeling free-form objects. Though the feature presented by our implicit spline can be achieved by using a distance function defined by a set of connected piecewise low-degree polynomials, it is difficult to achieve a high level of smoothness, such as C2-smoothness. As described above, when a big polygon is subdivided into a set of smaller sub-polygons, the implicit function built from the big polygon is exactly the sum of all the basis functions constructed from the set of smaller polygons. When the distance function is used for a free-form solid area design, the distance function corresponding to the big polygon is the minimum of all distance functions of the sub-polygons, and consequently, the property of the partition of unity is not preserved.
With the proposed bivariate splines, a free-form implicit function f(x,y) can be generated intuitively by laying out a sequence of control points or a sequence of control implicit primitives, similarly to the way one models a shape using, say, B-splines. Suppose Pk(x,y), k=0,1,⋯,m are the locally specified implicit functions with their main features defined on polygons Δk, k=0,1,⋯,m, respectively. Then, these m+1 implicit functions can be combined as a weighted sum of the m+1 implicit polygons and described in the following way:
$$ F(x,y)=\sum\limits_{k=0}^{m} \mathbf{P}_{k}(x,y)B_{\Delta_{k},\delta}^{(n)}(x,y), $$
(3)
where \(B_{\Delta _{k},\delta }^{(n)}(x,y)\) is the implicit spline basis function constructed from the polygon Δk.
The representation of a binary implicit function as a sum of weighted implicit spline basis functions can have various applications. As described in [33], it can be used directly to simplify the task of fitting a big 3D point cloud captured by a modern depth camera. The shape-preserving feature of the proposed implicit spline basis functions allows to sub-divide the depth map captured by a camera into smaller regions. A shape-fitting technique can then be used to fit each sub-dataset individually and then combine them together. The shape-preserving feature guarantees that the main features of each individually fitted shape are maintained, when they are combined together, based on the equation shown in (3). This idea can be very useful, as a complex surface-fitting task can be divided into a set of simpler fitting tasks and implemented directly in a parallel processing system.
The idea can also be applied to a complex implicit geometric design. The shape-preserving feature of the proposed spline basis functions allows us to simplify a complex geometry design task into a process of designing a set of simpler geometric components. The shape-preserving feature of basis functions is becoming more essential when parts of a designed 2D region are taken directly from a slice of a real-world 3D object.
According to the way in which each individual implicit spline basis function is defined, the free-form solid area corresponding to a polygon is obtained by smoothing each vertex of the polygon by using a uniform smooth parameter value. In practice, one might want to apply different vertices with different smoothing parameter values to enhance the flexibility and the capability of the design technique. Since implicit shapes can be easily combined together in a set of solids by using set operations, this objective can be achieved easily by using implicit function-blending operations. Another way to achieve this design feature is to subdivide the given polygon into a set of smaller polygons and specify different smoothing parameter values for different sub-polygons. In this way, different sets of implicit spline basis functions are created by using different values of the smoothing parameter δ. These implicit functions can then be combined, following the idea illustrated in Eq. (3). The 2D implicit shape shown in Fig. 7 is obtained in this way.
3D implicit geometric design using 2D implicit functions
In addition to the above-mentioned direct applications of the area spline technique, 2D area splines can also be used in a number of different ways to design 3D implicit shapes. Just as a surface can be regarded as a family of curves, a volumetric solid object can be regarded as a family of 2D slices, or the volumetric region is swept by moving a 3D solid object or a slice of a 3D object. This idea leads to a number of ways in which the 3D implicit object design can use 2D implicit functions.
Implicit shape of extrusion
The creation of explicit geometric surfaces by extruding a parametric curve is a powerful and popular geometric design technique. This idea can also be followed when creating 3D implicit objects by using 2D implicit functions [16, 34]. One simple example is the implicit description of a cylinder. As it is commonly known, a cylinder can be described as a distance function to a line. However, it can also be described as an extrusion of a solid disc along a line. Suppose the line is defined implicitly as the intersection of two orthogonally oriented planes π1(x,y,z)=0 and π2(x,y,z)=0. Let C(x,y)=x2+y2 be the binary implicit function corresponding to the cross-section of a cylinder. Then, the composite function
$$F(x, y,z)=C(\pi_{1}(x, y,z), \pi_{2}(x,y, z)) $$
corresponds to the implicit function of the cylinder with its central line defined by planes π1(x,y,z)=0 and π2(x,y,z)=0.
This idea can be immediately generalized to the description of other more general geometric objects. Suppose an extrusion path is represented implicitly by the intersection of two distance surfaces F1(x,y,z)=0 and F2(x,y,z)=0, such that they intersect orthogonally. Let the cross-sectional profile curve be defined as an implicit function C(x,y)=0. Then, an extruded implicit object can be directly described by
$$C(F_{1}(x,y,z), F_{2}(x,y,z))=0. $$
However, the specification of the extrusion path as the orthogonal intersection of two distance function-defined surfaces is a practically challenging task. This is because the type of implicit surfaces that can be defined by distance functions is very limited. In addition, except for a few simple implicit functions, it is very difficult in general to check whether two given implicit surfaces are orthogonally intersected. To make the above implicit design method more flexible, the two implicit functions for the specification of the extrusion path can be replaced by two general signed implicit functions. However, it should be noted that the cross-sections of the extruded 3D implicit shape may not necessarily be identical, when the two implicit functions used to define the extrusion path are not the distance functions or when they are not orthogonal along their intersection. A simple implicit object generated by an extrusion is shown in Fig. 8a.
The idea of creating the 3D implicit geometry by extruding a solid 2D implicit profile can be directly implemented by simulating the process, when a sculptor creates a piece of sculpture. In this case, the volumetric region swept by a sculpting knife can be modeled as an extrusion of an implicit function along the path of the motion of the sculpting knife, and the cut of an implicitly represented sculpture can be represented directly as a result of an implicit blending of the two implicit objects.
Implicit shape of revolution
The creation of a geometric object by rotating a given 2D profile is also very popular in geometric design. This idea can also be introduced in the creation of the implicit geometry of revolution. In fact, the implicit revolution can be considered as a special case of implicit extrusion, where the extrusion path is defined by an implicit cylinder and a plane. Suppose the revolving profile of a 2D implicit object is represented by a function F(x,y). Then, the implicit geometry of revolution generated by rotating the implicitly represented profile about the y-axis can be described by \(F\left (r-\sqrt {x^{2}+z^{2}},y\right)=0\), and the implicit geometry of revolution generated by rotating the implicitly represented profile about the x-axis can be described by \(F\left.\left (x, r-\sqrt {y^{2}+z^{2}}\right)\right)=0\). Fig. 8b shows an example of an implicit geometry of revolution obtained by rotating an implicit spline about the z-axis.
Implicit shape as a set of control profile functions
The design and reconstruction of 3D shapes based on planar cross-sections has long being recognized as an effective way of the shape-modeling technique [35–38]. This technique is especially useful in the reconstruction of human organs, such as lungs, heart, and vascular systems [39, 40].
Just as 3D parametric spline surfaces can be considered as a blending of a set of cross-sectional profile curves, any free-form implicit shape can be designed as a blending of a set of 2D implicit shapes, which serve as local control profiles, with each of these 2D implicit functions specifying a cross-sectional profile of a required solid shape. One simple and direct method is to specify a required solid shape as a set of slices along a coordinate axis, say, the z-axis, and to represent the overall geometric shape of the object by using a certain spline technique. That is, we can describe a required implicit 3D object in the following form:
$$ F(x, y, z)=\sum_{k=0}^{m} S_{k}(x,y)B_{k}(z)=0, $$
(4)
where \(\{B_{k}(z)\}_{k=0}^{m}\) are a certain type of spline basis functions. Shapes presented in Fig. 8c are generated in this manner using C2-smooth spline basis functions and by using the Bezier spline basis functions.
Silhouette based implicit modeling
Area splines are also useful for the implementation of 2D drawing-based modeling. Silhouette profiles are an effective feature in the modeling of 3D objects [41]. Figure 8d demonstrates how an implicit object can be designed in this way. This 3D object design method is not only natural in terms of the human vision but is also very effective. However, when modeling a relatively complex object, a large number of profiles is required, which can be quite computationally expensive. A much more effective design method is, when a view is specified, to specify not only the silhouette profile of a required shape but also the depth information, which can be described also as a 2D implicit function depth=D(x,y) in the view space. Figure 9 illustrates how it works, by combining both the silhouette profile and the depth information, where the silhouette profile is described by using Li-Tian’s implicit spline technique. A set of these view-space-specific implicit forms can be transformed into the world space and combined together to form a complete description of a required geometric object by using a certain shape-preserving implicit blending operation, which will be addressed in “Shape-preserving implicit blending operation” section.
Volumetric material structural modeling
The implicit geometric modeling method is also very flexible and effective in the modeling of real-world volumetric forms, varying from fabric objects design to biological tissues and human vascular and neural systems. Due to the high diversity of natural forms, it is impossible to show case by case how each of them can be described by using an implicit function. Here, we illustrate the potential and the flexibility of implicit modeling by using two simple examples.
As shown in Figs. 10 and 11, the external look of an object and its internal material structure can both be modeled implicitly and combined together as a blending of real functions.
Figure 12 shows how a highly complex neural system and a cluster of micro blood vessels can be described implicitly by simply using a few 2D implicit functions. The two 3D implicit objects (Fig. 12b and c) are all modeled by combining a few 2D distance functions, each of which corresponds to the distance to a given set of 2D positions (Fig. 12a).