Smooth Signed Distance Field Textures
Smooth Signed Distance Field Textures
by
Ehren Choy,
©Copyright
Ehren Choy, 2016
The undersigned hereby recommends to the
Faculty of Graduate and Postdoctoral Affairs
acceptance of the thesis
ii
Abstract
iii
This thesis is dedicated to my parents, Robin & Marie Choy, for their endless love
and encouragement.
iv
Acknowledgments
v
Table of Contents
Abstract iii
Acknowledgments v
Table of Contents vi
List of Tables x
List of Figures xi
1 Introduction 1
1.1 Goal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Previous Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
vi
2.6.2 Patch-Based . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6.3 Optimization-Based . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6.4 Surface Texture Synthesis . . . . . . . . . . . . . . . . . . . . 20
2.6.5 Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.7 Implicit Modeling Methods . . . . . . . . . . . . . . . . . . . . . . . . 22
2.8 Smooth Distance Field Textures . . . . . . . . . . . . . . . . . . . . . 23
vii
5 Results 61
5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2 Method Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.3 Irregular Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.3.1 Irregular Spot Texture . . . . . . . . . . . . . . . . . . . . . . 64
5.3.2 Irregular Stripe Texture . . . . . . . . . . . . . . . . . . . . . 65
5.4 Smooth Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.4.1 Rounded Spot Texture . . . . . . . . . . . . . . . . . . . . . . 66
5.4.2 Smooth Stripe Texture . . . . . . . . . . . . . . . . . . . . . . 68
5.5 Voronoi Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5.1 Voronoi Definition . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5.2 Irregular Voronoi Patterns . . . . . . . . . . . . . . . . . . . . 71
5.5.3 Smooth Voronoi Patterns . . . . . . . . . . . . . . . . . . . . . 72
5.6 Complex Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.6.1 Image Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.6.2 Non-Stationary Texture . . . . . . . . . . . . . . . . . . . . . 74
5.6.3 Boundary Constraints . . . . . . . . . . . . . . . . . . . . . . 77
5.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6 Discussion 79
6.1 Rationale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.1 Mesh Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
6.1.2 Field Definition . . . . . . . . . . . . . . . . . . . . . . . . . . 80
6.1.3 Texture Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . 82
6.1.4 Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.2 Storage and Performance . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.2.1 Random Access . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.2 Fixed Resolution . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.3 Field Value Computation . . . . . . . . . . . . . . . . . . . . . 88
6.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7 Conclusion 91
7.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
7.2 Future Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
viii
List of References 94
ix
List of Tables
6.1 Timing results for our algorithm for a binary texture (400 × 400). . . 89
6.2 Timing results for our algorithm for different resolutions. . . . . . . . 90
x
List of Figures
1.1 Examples of inspirational biological patterns. (a) toad [24], (b) ze-
bra [20], (c) blue poison arrow frog [66], (d) leopard [56], (e) lion
fish [73], (d) lizard [61] . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Texture creation using our algorithm. Given a labeled mesh (a), we
derive two sets of line segments (b). The created texture is shown in
(c). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1 Examples of patterns with different characteristics. The pattern found
in the leopard gecko [81] (a) is stationary and appears similar un-
der translation, while the butterfly [51] (b) is an example of a non-
stationary pattern. The zebra pattern [21] (c) is an example of an
anisotropic pattern. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Examples of Worley noise . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Behaviour of partition-of-unity textures. (a) texture created by assign-
ing a random color to each point, and in (b) the support of a feature
point is shown as a red outline, and the underlying graph is shown in
blue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Examples of reaction-diffusion . . . . . . . . . . . . . . . . . . . . . . 17
3.1 A signed distance field of an infinite line (a) is intersected with the
signed distance field of a circular field (b) producing a smoothed field
(c). Isocontours of the produced fields are shown on the bottom row. 35
3.2 Joining implicit fields. (a) The smooth distance field of a polygon, and
(b) isocontours of the produced field. . . . . . . . . . . . . . . . . . . 37
4.1 From left to right, top to bottom, the six major steps of our algorithm:
(a) mesh generation, (b) label assignment, (c) point grouping, (d) con-
tour definition, (e) field creation, and (f) region merging. Each field
created in step (e) is combined together to form the texture in step (f). 39
xi
4.2 Initial steps of our method. (a) Mesh generation (b) Label Assignment
(c) Point Grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.3 Interior and exterior contours for a set of points. The interior contour
is shown in black, and the exterior contour is shown in gray. The
exterior contour consists of two sets of connected line segments, and a
single point. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.4 Polygonal regions of the interior points of a mesh, with regions high-
lighted in gray. (a) Labeled Mesh (b) Region ΩI (c) Region ΩE . . . 44
4.5 Graphical representation of dI (p) and dE (p) for the interior points of
a simple mesh, with the corresponding exact distance fields shown as
dashed lines. The cross-section area is shown as a dashed line on the
mesh image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.6 Smooth signed distance field of the interior contour for the interior
points of a mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.7 Smooth signed distance field of the exterior contour for the interior
points of a mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.8 Cross-section of dM (p) and dN (p) for the interior points of a simple
mesh, with the exact distance field midway between contours shown as
a dashed line. The cross-section area is shown as a dashed line on the
mesh image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.9 Distance field dM (p) with gradient discontinuities. . . . . . . . . . . . 50
4.10 Distance field dN (p) that is C 1 continuous. . . . . . . . . . . . . . . . 50
4.11 Merging implicit regions to form a textures. (a) simple texture, and
(b) random binary texture. . . . . . . . . . . . . . . . . . . . . . . . . 51
4.12 Blending of implicit regions with different blending radius r. . . . . . 53
4.13 Cross-section of wi (p) with different blending radii. The cross-section
area is shown as a dashed line on the mesh image. . . . . . . . . . . 53
4.14 Different offset distances K to expand or contract a region. . . . . . . 55
4.15 Cross-section of dN (p) showing different offset distances for a simple
mesh. The cross-section area is shown as a dashed line on the mesh
image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.16 Stripe and spot patterns created with a graph-based traversal. (a) spot
patterns, and (b) stripe patterns. . . . . . . . . . . . . . . . . . . . . 57
xii
4.17 Branching structures created using a graph-based traversal. (a) texture
with initial set of labeled points, and (b) texture with labeled points
connected to form a minimum spanning tree. . . . . . . . . . . . . . 57
4.18 Random binary textures with varying point densities . . . . . . . . . 59
4.19 Different textures generated by varying the point distribution. . . . . 59
4.20 Textures produced with a color spline to produce an outline. (a) initial
texture image, (b) discontinuous color transition, and (c) smooth color
transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.1 From left to right, top to bottom, examples of patterns found in the
natural world: (a) spotted marsh frog [80], (b) strawberry poison-
dart frog [34], (c) clown triggerfish [28], (d) emperor angelfish [39], (e)
pufferfish [19], and (f) common giraffe [53]. . . . . . . . . . . . . . . . 62
5.2 Irregular spot and stripe patterns. (a) irregular spot pattern created
with d = 0.10 and k = 4 (b) irregular stripe pattern created with
d = 0.05 and k = 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.3 Irregular spot patterns each with varying point densities d and cluster
sizes k. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.4 Irregular stripe patterns each with varying maximum stripe length k. 66
5.5 Bend in an irregular stripe pattern. (a) stripe pattern created with
k = 8 and d = 0.10, and (b) region in the texture with sharp bend. . 67
5.6 (a) example of a rounded spot texture, and (b) example of smooth
stripe pattern. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.7 Parameters dependent on smooth distance field. (a) smooth distance
field of a single line segment, and (b) implicit field of texture with
varying smooth distance fields. . . . . . . . . . . . . . . . . . . . . . 69
5.8 Examples of Voronoi patterns. (a) example of an irregular Voronoi
pattern, and (b) example of a smooth Voronoi pattern. . . . . . . . . 70
5.9 Irregular Voronoi patterns each with varying point densities d and
boundary widths w. . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.10 Examples of different smooth Voronoi patterns. . . . . . . . . . . . . 72
5.11 Examples of complex patterns found in nature: (a) maze coral [10], (b)
blue poison arrow frog [40], and (c) lizard [7] . . . . . . . . . . . . . 73
5.12 Example of maze texture. (a) maze texture, and (b) corresponding
binary image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
xiii
5.13 Examples of textures created from images [5,45,67]. (a) original image,
and (b) texture produced using probabilistic assignment of labels from
image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.14 Example of non-stationary texture. . . . . . . . . . . . . . . . . . . . 76
5.15 Example of non-stationary labeling. . . . . . . . . . . . . . . . . . . . 76
5.16 Texture with single set of boundary points. . . . . . . . . . . . . . . . 78
5.17 Texture with two sets of boundary points. . . . . . . . . . . . . . . . 78
6.1 Bulging in a smooth distance field. (a) Single line segment smooth
distance field. (b) Bulge formed by joining two separate line segments. 80
6.2 Analysis of bulging problem. (a) Implicit field of two joined line seg-
ments. (b) Gradient magnitude of joined line segments. . . . . . . . . 81
6.3 Implicit field created using an interior and exterior contour. . . . . . 83
6.4 Implicit field created using a single set of line segments. . . . . . . . . 83
6.5 Texture with rotated interior contour. . . . . . . . . . . . . . . . . . . 84
6.6 Examples of patterns created using partition of unity textures. . . . . 86
6.7 Examples of patterns created using reaction diffusion. . . . . . . . . . 86
6.8 Examples of patterns created using our method. . . . . . . . . . . . . 86
xiv
Chapter 1
Introduction
Textures are used extensively in computer graphics to add visual details onto synthetic
images. A texture, or texture map, is an image that is mapped onto the surface
of an object to modify surface properties such as color, reflection, transparency, or
displacement. Although any arbitrary image can be referred to as a texture, we use
a more narrow definition, adapted from Wei [87] and Lewis [49]:
Given this refined definition, a major challenge is how to efficiently create high-quality
textures for use in objects of a generated scene.
Procedural texture functions are automatic methods for generating texture that
can be solely described through algorithms or mathematical functions. These func-
tions do not rely on artists providing digital photographs or samples, but instead
create textures through modifiable parameters. Different procedural texture func-
tions are used depending on the type of texture to be created.
Our work focuses on generating textures that resemble organic patterns found in
the natural world. Textures we wish to generate include the various spots and stripes
found in the animal kingdom. Within this collection of patterns, there is a tremendous
variety in color, shape, and size. Patterns range from the black-and-white stripes of a
zebra, to the complex skin patterns found in certain toads. We show several examples
of organic patterns in Figure 1.1.
There are several advantages for creating texture using procedural texture func-
tions. We can describe texture as a whole, rather than having to specify a particular
1
CHAPTER 1. INTRODUCTION 2
Figure 1.1: Examples of inspirational biological patterns. (a) toad [24], (b) ze-
bra [20], (c) blue poison arrow frog [66], (d) leopard [56], (e) lion fish [73], (d)
lizard [61]
1.1 Goal
Our goal is to create a procedural texture function capable of automatically generating
a large class of organic patterns, including certain types of amphibian skin and animal
coat markings. The control parameters should be intuitive for a designer, and it
CHAPTER 1. INTRODUCTION 3
should be possible to gradually change a texture once produced. Our method should
also provide the traditional benefits of procedural texture functions, including being
efficient and having a compact and continuous representation.
Figure 1.2: Texture creation using our algorithm. Given a labeled mesh (a), we
derive two sets of line segments (b). The created texture is shown in (c).
1.3 Overview
Our method creates a texture by first generating a mesh over the texture domain.
Each point of the mesh is then labeled with a color value. Once labels are assigned
to the points of the mesh, we divide the points into different groups. Each group
consists of points which all share the same label, and are all connected to each other
in the mesh. An implicit region will be created for every group.
To define an implicit region, we derive two different sets of mesh edges from each
group of points. The two sets of edges define the interior and exterior contour. The
interior contour connects outer points of the group together, while the exterior contour
connects points that are neighbours of the group. The implicit region is defined to
be between the interior and exterior contour, as illustrated in Figure 1.2.
We construct a smooth signed distance field for each contour, and blend the fields
of the contours together to form the implicit region. By using a pair of contours,
rather than using a single set of line segments, we are able to create an implicit field
that is smooth everywhere. Wherever one distance field is discontinuous, we use the
distance field of the opposing contour to define the region. A texture is created by
blending together the implicit fields from all connected components.
Because regions are defined using smooth implicit fields, we can blend different
regions together, and can also expand or contract each texture region. We demon-
strate the effectiveness of our algorithm by generating a variety of textures evident
in the natural world.
CHAPTER 1. INTRODUCTION 5
1.4 Contributions
Our work makes the following two contributions:
We propose the idea of defining a smooth implicit region by using the smooth
signed distance fields of two sets of boundary line segments. By using such an
approach, we are able to produce regions whose implicit fields are everywhere
smooth.
Figure 2.1: Examples of patterns with different characteristics. The pattern found
in the leopard gecko [81] (a) is stationary and appears similar under translation,
while the butterfly [51] (b) is an example of a non-stationary pattern. The zebra
pattern [21] (c) is an example of an anisotropic pattern.
6
CHAPTER 2. PROCEDURAL TEXTURE FUNCTIONS 7
a particular size, the subset appears to come from the same underlying process.
Repeating spot patterns, where spots are distributed uniformly and possess the
same size, are stationary patterns. The wing patterns of many butterflies are
non-stationary (Figure 2.1), as the size of a butterfly spot varies depending on
distance to the boundary of the wing.
Isotropy - We say that a texture is isotropic if rotating a texture does not change
the statistical qualities of the texture. Many stripe patterns are not isotropic,
but are anisotropic because all stripes would follow a particular direction in the
texture. For example, zebra stripes (Figure 2.1) typically run vertically along
the zebra body.
Periodicity - We say that a texture is periodic if there exists a pattern which re-
peats at a regular interval, and where the interval is known as the period. A
checkerboard pattern is an example of a pattern which is periodic. Lattice-
based noise functions (Section 2.3) exhibit periodic artifacts which are caused
by interpolation from an underlying grid structure.
Compact - The texture function should use a small amount of memory. In the ideal
case, the memory usage of a texture function should be independent of the size
of the texture. In many cases, storage is dependent on the complexity and size
of the generated texture.
Efficient - The texture should be generated quickly and should not be computa-
tionally expensive. This is especially important for procedural textures, as the
texture function must be evaluated many times at different locations in a render.
The remainder of this section reviews existing methods for generating texture.
We first discuss procedural noise functions, and describe in detail the popular Perlin
noise and Gabor noise functions. We next explore existing methods for creating
organic patterns including reaction-diffusion textures, Worley noise, and partition of
unity textures. We then deviate from procedural methods to discuss exemplar-based
texture and implicit modeling methods. Exemplar-based methods are not procedural
texture functions, but are still widely used in producing texture. For each method,
we describe the attributes that generated textures possess, and how well it matches
the above desirable properties.
We conclude this section by framing our method in the context of existing proce-
dural texture functions. This section assumes that the textures are generated in R2 ,
although many of the described methods directly generalize to three dimensions.
range of perturbation, the range of the noise function should be bounded to some
fixed interval (such as −1 to 1).
A possible, but insufficient, method of perturbation is to use a pseudorandom
number to modify every sample of the original pattern. This approach is insufficient
when we consider rendering the pattern onto a surface; slight changes in the scene re-
sult in different samples to be chosen in the pattern, leading to a completely different
texture. A sequence of random uncorrelated numbers is known as white noise; per-
turbing images using white noise creates textures with arbitrary and uncontrollable
detail.
Described in the frequency domain, white noise has an expected constant power
spectrum, whereas we would like procedural noise functions to produce noise only
within a prescribed range of frequencies. Noise functions are distinguished by their
spectral properties; Perlin noise has been described as “an approximation to white
noise band-limited to a single octave” [62].
The final noise value is obtained using an interpolation of the contribution from
the four corners of the cell. A spline interpolation, rather than a direct bilinear
interpolation, is used to create an everywhere smooth texture.
The original Perlin noise function has since been improved in a later work by Per-
lin [64]. The original spline produced texture continuous only to its first derivative,
and visible discontinuities existed on a noise-displaced surface when shaded (as the
surface normal is a derivative operator). Perlin improved the noise function by in-
creasing the order of the polynomial spline to be smooth up to its second derivative.
A second improvement was to modify the way the random unit vector is assigned to
CHAPTER 2. PROCEDURAL TEXTURE FUNCTIONS 11
Lagae later improved upon Gabor noise [44] by introducing an isotropic kernel for
Gabor noise, an error analysis of Gabor noise from kernel truncation, and spatially
varying Gabor noise. Other researchers have also developed Gabor noise for other
contexts. Galerne et al. consider automatically estimating Gabor noise parameters
from exemplar textures [31]. Zanni et al. considered Gabor noise for the texturing of
implicit surfaces [95].
where Ai is the scalar coefficient for Fi (p). Values of the distance function are mapped
onto colors to produce a texture. A simple texture can be created by using only the
distance to the nearest feature point F1 (p). Distance values will increase radially
around the a feature point, and mapping this distance onto a color produces a simple
Voronoi pattern.
CHAPTER 2. PROCEDURAL TEXTURE FUNCTIONS 13
Like sparse convolution noise, partition of unity textures first distributes a set of
feature points across the domain, and has each feature point assigned a random value.
From this set of points, a triangulation is constructed. Each feature point xi has a set
of axes, where each axis is an edge originating at xi and terminating at its neighbor
in the triangulation. The value at a location p in the texture is the weighted average
of the values from each of the feature points.
The weight of a feature point at a location p is calculated as follows. The location
p is projected onto each axis of the feature point. Each projection is then normalized
as a fraction of the axis length, and is clamped to be between zero (exactly on the
feature point) and one (beyond the axis length). The normalized distance is then
transformed with a spline function to have a derivative of zero at both ends. The
weight is computed as the product of these transformed distances.
The noise value f (p) at location p is calculated as follows.
∑
wi (p)vi
f (p) = ∑i (2.3)
i wi (p)
The function wi (p) gives the weight of the feature point xi , and vi is a random
variable associated with xi . Partition of unity textures can be considered an interpo-
lation method; the texture smoothly interpolates the feature points where f (p) = vi
when p = xi .
This method of interpolation was proposed by Runions [70], and Caron [17] used
this method for texture. Smooth organic shapes were generated by varying the point
distribution, and mapping the resulting values onto colors. The usefulness of this
formulation can be seen by considering the region of influence, or support, of the
feature point xi . The boundary of support of xi can be considered as the intersection
of half-planes, where each half-plane is perpendicular to its associated axis and passing
through xi ’s immediate neighbor. If the Delaunay triangulation is used, this boundary
can be considered as an extended Voronoi region; dividing all axes lengths by two
exactly reproduces the Voronoi diagram. Figure 2.3(b) illustrates the support of a
single point of the texture.
If the underlying triangulation is the Delaunay triangulation, we can loosely de-
scribe partition of unity textures as a blending of smooth Voronoi regions. The
produced texture would be similar to a texture produced by Worley noise when F1 (p)
(the distance to the nearest feature point) is used. We show an example texture
CHAPTER 2. PROCEDURAL TEXTURE FUNCTIONS 15
created using partition of unity in Figure 2.3(a); the triangulation of the points is
shown in blue, and the Voronoi diagram is shown in red on the texture.
equations:
∂a
= F (a, b) + Ka ∇2 a (2.4)
∂t
∂b
= G(a, b) + Kb ∇2 b. (2.5)
∂t
The first equation describes the change in concentration of chemical a over time
at a fixed position. This change is dependent on the function F (a, b) of the local
concentrations of a and b, and the difference in neighbor concentrations of chemical
a scaled by some constant Ka . The operator ∇2 is the Laplacian operator, and ∇2 a
will be positive if chemical a diffuses toward this position and negative if chemical a
diffuses away from this position. Similarly, the second equation describes the change
in concentrations of chemical b.
With reaction-diffusion, only a small initial variation of chemicals is required to
drive a complex simulation. The system would converge to a stable state where
chemicals are distributed across the domain based on the reaction-diffusion equations.
A limitation of using reaction-diffusion is the difficulty in selecting a set of equations
to generate a particular texture. Furthermore, only an approximate solution can be
obtained through numerical simulation. Turing gave the following simple discrete
simulation in one dimension:
In a single dimension, the simulation produces irregular peaks and valleys in the
chemical concentrations of b relative to a. In two dimensions, a similar procedure
gives spot patterns. A five-chemical system by Meinhardt [55] can be used to create
stripe patterns (Figure 2.4). Witkin and Kass proposed several modifications to
traditional reaction-diffusion to vary the types of patterns generated [90]. Their
work proposed a method of anisotropic diffusion which varied the diffusion rates of
chemicals depending on direction. They also described space-varying diffusion where
parameters of the system varied across the domain, for use in non-stationary patterns.
Turk [84] used a series of reaction-diffusion systems, described as a cascade process,
to create more complex patterns. In this approach an initial system is run, and based
on its chemical concentrations, certain regions of the system are marked as fixed.
CHAPTER 2. PROCEDURAL TEXTURE FUNCTIONS 17
Figure 2.4: Examples of reaction-diffusion. (a) spots in simple two chemical system,
(b) stripes in five chemical system by Meinhardt, and (c) leopard spots created
using cascade system.
A different reaction-diffusion system is then run, but chemicals are only allowed to
change outside the fixed regions. The idea is that the fixed regions act as a set
of constraints for a secondary system. This process of applying constraints on a
simulation can be repeated iteratively with varying fixed regions. Leopard spots
can easily be created with this method: an initial system lays down large spots in
the texture, and a secondary system refines each spot by adding surrounding details
(Figure 2.4).
A standard reaction-diffusion system is solved using a discrete simulation on a grid,
but it is often desirable for a texture to be rendered on a general surface. Witkin
and Kass proposed a method using anisotropic diffusion as a correction mechanism.
In this method, the output texture would appear distorted on a grid, but would
then appear correctly on a parametric surface. Turk proposed an alternative method
that distributed points on the surface of the mesh, and having reaction-diffusion run
directly on this surface. This problem of rendering on a surface is a common problem
in texturing, and is discussed further in Section 2.6.4.
2.6.1 Pixel-Based
Pixel-based methods operate by iteratively copying a single pixel from an exemplar
image to an output image. A well known pixel-based method is due to the work of
Efros and Leung [27], which later became the foundation of many other exemplar-
based algorithms. Its approach is simple, but still allows for the generation of many
different types of patterns.
The algorithm of Efros and Leung is initialized by first copying a random region
from the exemplar image to the output image. This region is then grown outward one
pixel at a time through a neighborhood search process. That is, for a user specified
neighbourhood (say 5×5) centered at an output pixel, a set of similar neighbourhoods
are found in the exemplar image. The output pixel is set to be the center value of an
exemplar neighbourhood randomly selected from this set. The neighbourhood size is
a parameter of the method and should be set to be the size of the biggest regular
CHAPTER 2. PROCEDURAL TEXTURE FUNCTIONS 19
feature [27].
To measure the similarity between output and exemplar neighbourhoods, each
known pixel value in the output is compared with the corresponding pixel in the
exemplar. The squared difference between corresponding pixels are taken, and then
multiplied with a weight depending on the spatial distance from the output pixel.
Efros and Leung used a Gaussian function so that pixels further away from the output
pixel are weighted less. The sum of the weighted values give the distance measure.
Because only some of the pixels in an output neighbourhood may be known (be-
cause they have not yet been processed by the algorithm), a normalization process is
used where only a subset of pixels are used for matching.
The searching process of this method is very expensive because it requires a linear
search through all exemplar neighbourhoods, and is due to an output neighbourhood
having a varying number of known pixels for matching. A later method by Wei and
Levoy [88] uses a fixed size output neighbourhood. This allows techniques such as
tree-structured vector quantization [88] or k-coherence [82] to accelerate matching.
2.6.2 Patch-Based
Patch-based methods operate by iteratively copying groups of pixels (patches) from
an exemplar image to an output image. The motivation for patch-based over pixel-
based methods is that there should be an improvement in quality, as pixels that are
together in the exemplar should already be correctly related to one another. The
major issue is to correctly handle joining seams of copied patches.
The approach taken by Praun et al. [65] is to have patches overlap and simply
overwrite previously synthesized pixels. By varying the shape of patches, this ap-
proach is simple but works surprisingly very well for stochastic textures [88]. Liang
et al. [50] blended between overlapping patches, but this may cause blurry output in
some instances.
Instead of attempting to blend overlapping patches, alternative approaches con-
sider cutting patches to fit coherently with each other. Efros and Freeman considered
finding an optimal cut of a patch using dynamic programming [26], and this work
was later improved using graph cuts by Kwatra et al. [41]. Another approach is to
warp patches so that a pattern is continuous across patch boundaries [79, 92].
CHAPTER 2. PROCEDURAL TEXTURE FUNCTIONS 20
2.6.3 Optimization-Based
Optimization-based methods operate by minimizing some global energy function. The
energy function is based on the differences between exemplar and output neighbour-
hoods, and a lower energy implies a more similar texture. The energy function can
be expressed as the following equation:
∑
E(X, Z) = |xp − zp |2 (2.8)
p
Turk first distributes a set of points regularly along the mesh surface. This is
done by randomly placing points on each triangle in the mesh, and using a point
relaxation scheme where neighbouring points repel each other. Once points are evenly
distributed, a newly formed mesh is created from this point set. This secondary mesh
is created to ensure points are evenly spaced for texturing.
After creating the secondary mesh, a vector field is defined on the mesh surface,
and is used to control the orientation of the texture. The field is defined by having a
user specify directions at several locations on the mesh, and using a diffusion method
to propagate the field everywhere on the surface. A second vector field is then created
by rotating this field 90°. Taken together, these two fields are used to define a local
coordinate system.
Once a local coordinate system is defined everywhere along the surface, texture
synthesis can proceed similar to the pixel and patch methods described earlier. Neigh-
bourhoods are defined along a local coordinate system, instead of the canonical Eu-
clidean axes. Turk used this method in a hierarchical manner to improve performance
and texture quality.
2.6.5 Extensions
Traditional exemplar-based methods are costly in several ways. The methods we have
described require the entire output image to be generated at once, which implies a non-
compact representation. This also impacts performance because often only a subset of
a texture needs to be used for rendering. These limitations lead to the development
of texture-on-the-fly methods which provide random access of synthesized texture.
Later methods by Wei and Levoy [89] and Lefebvre and Hoppe [47] support random
access synthesis of texture.
Exemplar-based methods are also usually done at particular sampled resolutions
where a separate interpolation process is done during rendering. Work by Wang
et al. [86] considered directly synthesizing a vector representation of an exemplar
texture. This was done by using signed distance function to define region boundaries,
and colors in regions were represented using compact radial basis function.
The methods we described so far have only generated stationary patterns, but
other methods can generate globally-varying textures. This can be done with the
introduction of a control map, which describes the global behaviour of the texture.
The work of Ashikhmin [4] synthesized non-stationary textures by allowing a user to
CHAPTER 2. PROCEDURAL TEXTURE FUNCTIONS 22
As an example, let us consider a point primitive with fall-off filter g(r) = 1/r2 .
The field is maximal at the point, and rapidly diminishes as the distance from the
point increases. If we place several points randomly in the plane and sum their field
functions, we can create a texture by mapping the field value to a color.
General splatting of point primitives is an early method of generating texture,
and a thorough discussion is given by Schachter [72]. Partition of unity textures can
be considered as splatting point primitives over the domain with asymmetric field
functions.
We can generalize splatting to include other types of primitives. Other primitives
such as line-segments, triangles or curves can be used, so long as distance to the
primitive is well defined.
We can also generalize how fields are composed. A simple example is to take the
minimum or maximum of the fields. Ricci [69] proposed summing fields exponentiated
to the nth power and then taking the nth root. Another method combines fields of
primitives in a hierarchical manner by combining two primitive fields at a time [93].
To obtain more complex texture, an artist can specify the exact implicit primitives
and blending relations to use.
The subject of implicit modeling covers many techniques, and include skeletal
implicit modeling, offset surfaces, level sets, variational surfaces, and algebraic sur-
faces [77]. Implicit modeling is usually discussed in the context of surface modeling,
where the zero set of the implicit field defines the boundaries of a three-dimensional
model surface. For example, Galbraith et al. [30] previously used implicit modeling
CHAPTER 2. PROCEDURAL TEXTURE FUNCTIONS 23
techniques to model the Murex cabritii sea shell. Several examples using implicit
modeling are described by Gomes [32]. These examples show that implicit methods
are able to generate very complex surfaces, but require detail to be explicitly specified.
The traditional strength of implicit surfaces is that they naturally define the entire
interior of a surface; field values greater than some threshold are said to belong to
the surface. Point classification (determining whether a point is inside, outside or on
the boundary of a surface) is also straightforward. Bloomenthal et al. [14] gives a
thorough discussion of implicit modeling in comparison with alternative parametric
representations.
Using similar approaches to Galbraith et al. and Gomes, complex texture can be
created. Instead of using the zero set of a field as a boundary surface, field values
of the primitives are mapped to colors. Smooth color transitions are obtained by
blending of field values. A key difference is that the whole implicit field, not only the
zero set, must be well behaved. This concern is revisited for smooth distance fields
in Chapter 3.
Our approach, described next, uses many of the techniques found in implicit mod-
eling. We generate complex texture, but without explicit specification of primitives.
surfaces can be used for texture synthesis by mapping field values to colors.
Our method combines the advantages of several approaches, we are able to gen-
erate smooth, continuous and organic patterns. Like partition of unity textures, our
method is parameterized only by a set of labeled points on a mesh, but is capable of
generating more general curvilinear shapes. Our method is procedural, smooth, and
does not require a grid discretization.
The solution we provide relies on the blending of smooth normalized distance
fields between primitives, and is similar to the previously described implicit modeling
methods. We review existing methods for creating smooth distance fields in the next
section.
Chapter 3
3.1 Definition
Computing the distance from an object is a fundamental operation in implicit model-
ing. Section 2.7 described how an implicit field is constructed by composing a distance
function with a fall-off filter function, with the boundary of a surface defined as some
isocontour of the created field. For some applications, including our method for cre-
ating texture, distance fields are required to be smooth and everywhere differentiable.
This chapter reviews different methods for defining a smooth signed distance function
to create such a field.
A smooth signed distance function can be described as a smooth approximation
of the exact signed distance function. A formal definition of the exact signed distance
function f (p, Ω) of a region Ω can be expressed by the following equation:
where p is a point in the domain, Ω is the defined region, and ∂Ω is the boundary of
that region. The function dist(p, ∂Ω) is the Euclidean distance to the region and is
given by
dist(p, ∂Ω) = inf ∥ x − p ∥ . (3.2)
xϵ∂Ω
25
CHAPTER 3. SMOOTH SIGNED DISTANCE FUNCTIONS 26
That is, the sign of the distance function is negative in the interior of a region,
zero at the boundary, and positive otherwise. The zero set of a distance field is the set
of points that lie on the boundary of the surface. The exact signed distance function
is defined everywhere in the domain for one or more regions.
A limitation of using an exact signed distance function is that the produced field
may contain gradient discontinuities, even if the boundary of the surface is smooth.
For example, if the boundary is a circle, there exists a single point of gradient discon-
tinuity at the circle’s center. If the boundary is an ellipse, this gradient discontinuity
stretches into a line.
More generally, gradient discontinuities exist along the medial axis of the region.
The medial axis is where a point is equidistant to two or more points of the region
boundary. Described in terms of the smoothness of a function, an exact distance
function is C 0 continuous everywhere, but has C 1 discontinuities at the medial axis
of its associated region. For any location where the gradient is well-defined, the
gradient magnitude is unity, and the gradient orientation is in the same direction as
the normal at the nearest point of the region boundary.
A smooth signed distance function is an approximation of the exact distance
function that is smooth everywhere, except possibly at the region boundaries. There
are several methods for constructing smooth signed distance functions, and different
methods are used depending on the application. For our purposes, we desire distance
functions that are continuous and fast to evaluate. We also desire our distance func-
tion to be well-behaved, in the sense that the field does not contain widely varying
values some fixed distance away from the region boundary. In the next section, we
will describe how to characterize a signed distance function by its behaviour at the
zero set.
CHAPTER 3. SMOOTH SIGNED DISTANCE FUNCTIONS 27
with scalar data values {v1 v2 . . . vn }, scattered data interpolation obtains a function
f (p) : RN → R for all p such that f (xi ) = vi for i = 1 . . . n.
Note there can be infinitely many such solutions for this interpolation so long
as the function passes through the prescribed data points, and therefore the quality
of the interpolation depends on the application. There are many scattered data
interpolation techniques, but we focus on the well-known inverse-distance, natural-
neighbour, and radial basis interpolation methods. Because our focus is on generating
texture, we restrict ourselves to interpolating over the image plane.
where vi is the value associated with data point xi , ∥ p − xi ∥ denotes the Euclidean
distance between the query point x and the supplied data point xi , and M is a positive
constant.
This method is simple and extends to arbitrary dimensions, but has several lim-
itations as mentioned by Shepard. A major drawback of this method is that it is
a global interpolant; that is, the interpolated value depends on all data points. A
global interpolation has performance implications because the interpolation complex-
ity becomes linear in the number of data points. A modified Shepard’s method was
later proposed by Renka [68], and interpolates using only a local set of data points.
In the method by Renka, each data point contributes to the interpolation calculation
only within a given radius of the datapoint. Both methods can be described within
a framework for interpolation, which we next describe.
The set of weights are said to form a partition of unity. Shepard’s method is a
special case of this framework where the weight functions are
∥ p − xi ∥ M
wi (p) = ∑ M
. (3.8)
j ∥ p − xj ∥
This property provides exact interpolation at the data point, but also results in the
interpolation function having gradient zero at that point and appearing flat. Radial
basis interpolation is an alternative method of interpolation that does not appear flat
at the sampled data points.
In radial basis interpolation [15], a function ψ(r) is selected as a basis to describe
a surface. Every data point is associated with a basis function, and the surface is
described as the sum of these basis functions over all points. The basis functions are
smooth and radially symmetric. Following the earlier notation, let xi be the data
point with value vi and let ψ(r) = exp(−r2 /k 2 ) be the basis function where k is a
constant. With the constraint that the function must interpolate the data points, the
interpolation function is given by
∑
f (p) = ci ψ(∥ p − xi ∥) where f (xi ) = vi . (3.10)
i
Solving the above system gives the particular radial basis interpolation.
The choice of using the Gaussian function ensures that this system is positive
definite, and therefore has a unique solution. The Gaussian radial basis interpolation
CHAPTER 3. SMOOTH SIGNED DISTANCE FUNCTIONS 31
we described produces a smooth surface which interpolates the control points, and can
reproduce any surface that can be represented as scaled and shifted Gaussians. Simple
surfaces, such as a plane, cannot be represented in this manner. However, radial basis
interpolation can be extended so that it is possible to reproduce an underlying surface
of fixed polynomial degree [37].
Other kernels besides the Gaussian kernel can be considered. Thin plate splines
have the property of minimizing the bending energy of an interpolated surface, and
are defined using the radial basis kernel ψ(r) = r2 log(r).
Radial basis functions are a very common data interpolation technique, but have
also been used for implicit modeling. Variational implicit surfaces [85] use radial basis
functions to define the surface boundaries in implicit objects. In a variational implicit
surface, values assigned to data points are used as constraints to an implicit model.
Positive values assigned to data points are used as constraints for the interior of the
surface, zero value data points are used for the boundary of the surface, and negative
values are used to define the exterior of the surface. Normal constraints are defined
using a zero value and a positive value data point. A three dimensional interpolation
of all data points defines the surface. Variational implicit surfaces have been used in
many sketch-based algorithms [3, 38] to define a three-dimensional model.
A major limitation of using radial basis functions is that determining the weights
for interpolation requires solving a dense matrix, which would be computationally
expensive for a large number of data points. A faster alternative is to use compactly-
supported radial basis functions, where only a sparse matrix needs to be solved [57].
Other approaches divide the points into separate groups and solve each group sepa-
rately, referred to as partition of unity techniques [59].
Depending on the choice of kernel, another limitation is that radial basis functions
are not well-behaved; field values can take on a wide range of values away from the
interpolated data points. This behaviour is undesirable for applications that use the
magnitude, instead of only the sign, of the distance field. Our method for creating
texture does not use radial basis functions because we uses the signed magnitude of
distance values to blend between texture elements.
In implicit surface modeling, if an insufficient number of constraints are specified,
the variations in field behaviour may create unintended, spurious surfaces. The cre-
ation of spurious surfaces from variational implicit surfaces was discussed in detail
by Mann [52]. Their work found that using normal constraints produced reasonably
CHAPTER 3. SMOOTH SIGNED DISTANCE FUNCTIONS 32
smooth implicit surfaces, but still found instances of spurious surfaces being unex-
pectedly created.
A common concern of all interpolation-based methods is that the accuracy and
smoothness of the distance field will depend on the sampling density of the data
points. The next method we discuss does not create a distance field from sampled
points, but instead derives the distance field from the boundary of the associated
surface.
where S is the boundary of the surface. This function produces a value of infinity at
the boundary, and the field value dissipates further away. We can use the reciprocal
of this function as a general distance field. A potential-based distance field has been
previously used to quickly compute an approximate medial axis [1].
An alternative potential-based method uses a double-layer potential model. In
this alternative model, the boundary of a surface is defined as having a layer of
positive point charges on one side, and an opposing layer of negative point charges
on the other. For the particular case of N = 1, the potential value corresponds to
the normalization function used in transfinite mean-value interpolation [8]. Smooth
signed distance fields using double-layered potentials were later generalized by Belyaev
et al. [8].
Potential field methods are attractive for several reasons. Field values can be
solved analytically for simple boundaries, such as line segments or circular arcs. Fur-
thermore, because potentials are defined as an integral over a point set, the field does
not suffer from the bulging [12] common in many implicit modeling techniques. How-
ever, these fields are flat on the boundary (the derivatives of S vanish) and cannot be
CHAPTER 3. SMOOTH SIGNED DISTANCE FUNCTIONS 33
where f (x) is the original exact distance field, p is a displacement vector from x,
and w is a smooth kernel such as a Gaussian. The smoothness of the distance field
is parameterized by the choice and width of the kernel. A notable drawback of this
approach is that a general convolution does not preserve the zero set of the distance
field.
Preservation of the zero set can be done with a variable radius convolution where
the width of the kernel decreases based on the distance to the zero set. Sanchez et
al. [71] provided a method of variable radius convolution of a signed distance field,
given by ˆ
g(x) = f (x − ph(x))w(p)dp, (3.16)
R2
where f (x) is the exact distance field, p is a displacement vector from x, and w is
a smooth kernel. The function h(x) is used to control the kernel size, and smoothly
CHAPTER 3. SMOOTH SIGNED DISTANCE FUNCTIONS 34
varies from 0 to 1 away from the zero set. One way to define h(x) is to use the
smoothstep function such that
We see that the function is negative only if both arguments are negative. If we treat
the sign of the function as a binary variable, this R-function would correspond to
logical disjunction (x ∨ y). In general, R-functions allow applying logical operators
(such as conjunction, disjunction and negation) onto the set of real numbers. Complex
shapes can then be composed by applying R-functions onto a set of simple primitives.
We now describe the method by Biswas and Shapiro [11] to construct a smooth
distance field using R-functions. The method assumes that the region boundary is
composed of a set of connected line segments.
A smooth and continuous distance field is formed by creating an implicit field
from each line segment of the boundary, and then applying a separate R-function
CHAPTER 3. SMOOTH SIGNED DISTANCE FUNCTIONS 35
operation to join the implicit fields together. The implicit field for a single line
segment is created using the R-function intersection between the implicit fields of an
infinite line and a circular disk.
Figure 3.1: A signed distance field of an infinite line (a) is intersected with the signed
distance field of a circular field (b) producing a smoothed field (c). Isocontours
of the produced fields are shown on the bottom row.
The implicit field for a single line segment is constructed as follows. For a line seg-
√
ment ℓ = ((x1, y1 ), (x2 , y2 )), with length d = (x2 − x1 )2 + (y2 − y1 )2 , we construct
the scalar field
1
f (x, y) = ((x − x1 )(y2 − y1 ) − (y − y1 )(x2 − x1 )). (3.20)
d
The field f (x, y) is the signed distance function for an infinite line passing through
the endpoints of ℓ, and has a unit gradient everywhere. We next define the circular
CHAPTER 3. SMOOTH SIGNED DISTANCE FUNCTIONS 36
implicit field
[( ) )2 ]
2 ( )2 (
1 d x1 + x2 y1 + y2
t(x, y) = − x− − y− . (3.21)
d 2 2 2
The field t(x, y) is centered at the midpoint of ℓ, and has its zero set passing through
ℓ’s endpoints. The circular field can be derived from the general equation of a circle
(x − x0 )2 + (y − y0 )2 = r2 . The factor 1/d is used so that the boundary is normalized
to the first order.
We intersect the circular field t(x, y) with the infinite line field f (x, y) to produce
the implicit field for the line segment. Shapiro described a method to intersect a field
w1 with another field w2 to give a combined field w that is normalized to the first
order, given by
√
(|w2 (x, y)| − w2 (x, y))2
w(x, y) = w1 (x, y)2 + . (3.22)
4
Making the substitution w1 = f and w2 = t gives the normalized field function for
the line segment h, and we have
√
(|t(x, y)| − t(x, y))2
h(x, y) = f (x, y)2 + . (3.23)
4
We show the procedure of creating the implicit field for a line segment in Figure 3.1.
For every line segment of the boundary, we apply the above procedure. Let L =
{h1 h2 . . . hn } be the field values obtained for the set of boundary line segments. To join
the implicit fields of the line segments together, we use a generalized R-equivalence
operation. The R-equivalence operation of order m is defined as
1
d(h1 , ..., hn ) := √ . (3.24)
1 1 1
m
hm
+ hm
+ ... + hm
1 2 n
(a) (b)
Figure 3.2: Joining implicit fields. (a) The smooth distance field of a polygon, and
(b) isocontours of the produced field.
The distance function of Figure 3.2 is reasonably well-behaved, although the gra-
dient magnitude varies away from the zero set. In the next section, we will use smooth
signed distance functions created from R-functions to generate texture.
Chapter 4
38
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 39
4.1 Algorithm
Our method can be broken down into six steps: mesh generation, label assignment,
point grouping, contour definition, field creation, and region merging. Each step of
our method is shown in Figure 4.1.
Figure 4.1: From left to right, top to bottom, the six major steps of our algorithm:
(a) mesh generation, (b) label assignment, (c) point grouping, (d) contour def-
inition, (e) field creation, and (f) region merging. Each field created in step (e)
is combined together to form the texture in step (f).
We start by constructing a mesh over the domain of our desired texture. We create
the mesh by distributing a set of points on the plane, and applying a triangulation
to the produced point set.
We next assign a label to each triangulated point of our mesh. A label is defined
as a unique identifier with an associated color. The color of the labels are used to
determine the colors of the texture.
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 40
Once labels are assigned to the points of the mesh, we divide the points into
different groups. Each group consists of points which all share the same label, and
are all connected to each other in the mesh. An implicit region will be created for
every group.
To define an implicit region, we derive two different sets of mesh edges from each
group of points. The two sets of edges define the interior and exterior contour. The
interior contour connects outer points of the group together, while the exterior contour
connects points that are neighbours of the group. The implicit region is defined to
be between the interior and exterior contour.
We then construct a smooth signed distance field for each contour. We define an
implicit region by blending together the fields of both contours. By using a pair of
distance fields to define a region, we are able to create an implicit field that is C 1
continuous.
The implicit regions of all groups are combined together to form a texture. A
simple binary texture can be created by separating regions into either background or
foreground. Pixels within any foreground region are assigned the same color, and all
remaining pixels are assigned an alternate color.
Because each region is defined using an implicit field, we can also create more
sophisticated textures by blending regions together, or by expanding or contracting
the boundaries of different regions. Sections 4.1.1 to 4.1.6 give a detailed explanation
of each step of our algorithm, and Sections 4.2 to 4.6 describe the effects of varying
the different algorithm parameters.
produced. Our method uses this type of mesh to generate many different unstructured
patterns, such as the patterns found in certain toads and frogs. Alternative mesh
construction methods may be more suitable depending on the type of texture we
want to generate. Section 5.4 discusses how to create smooth patterns using more
regular point distributions.
To simplify the discussion of our method and the various parameters, we assume
that points are distributed in [0,1]2 in R2 with the origin in the top-left corner. We
will create a square texture by regularly sampling from within this unit square.
Figure 4.2: Initial steps of our method. (a) Mesh generation (b) Label Assignment
(c) Point Grouping
same label, and the four points that lie on the interior of the mesh are given a different
label. The labeled points are then grouped into two different connected components.
Figure 4.3: Interior and exterior contours for a set of points. The interior contour is
shown in black, and the exterior contour is shown in gray. The exterior contour
consists of two sets of connected line segments, and a single point.
Figure 4.4: Polygonal regions of the interior points of a mesh, with regions high-
lighted in gray. (a) Labeled Mesh (b) Region ΩI (c) Region ΩE
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 45
0.3
d 0
dI (p)
dE (p)
−0.3
0.5 0.6 0.7 0.8 0.9
x
Figure 4.5: Graphical representation of dI (p) and dE (p) for the interior points of
a simple mesh, with the corresponding exact distance fields shown as dashed
lines. The cross-section area is shown as a dashed line on the mesh image.
(a) (b)
Figure 4.6: Smooth signed distance field of the interior contour (highlighted in
white) for the interior points of a mesh with (a) color representation of distance,
and (b) isocontours of the produced field.
(a) (b)
Figure 4.7: Smooth signed distance field of the exterior contour (highlighted in
white) for the set of interior points of a mesh with (a) color representation of
distance, and (b) isocontours of the produced field.
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 47
A possible signed distance function that estimates the distance from the midway curve
is given by
dI (p) − dE (p)
dM (p) = . (4.2)
2
This distance function is positive near the exterior contour, and becomes negative
near the interior contour. The zero set of this distance function also matches that of
the midway curve. Unfortunately, the combined distance field dM (p) is not smooth
everywhere, and discontinuities exist wherever the interior or exterior contours are
discontinuous. Specifically, dM (p) is discontinuous at the intersection point of any
two edges of a contour.
We next describe an alternative distance function to produce an everywhere
smooth field, also based on estimating the distance from the midway curve. To
avoid gradient discontinuities, we do not use the distance field of a contour near its
zero set. Instead, we use the distance field of the opposing contour to estimate the
distance from the midway curve.
At the exterior contour, we approximate the distance to the midway curve as
dI (p)/2. At the interior contour, we approximate the distance to the midway curve
as −dE (p)/2. We use a smoothstep function s(x) to blend between approximations.
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 48
0.2
dM (p)
dN (p)
d 0
−0.2
0.5 0.6 0.7 0.8 0.9
x
Figure 4.8: Cross-section of dM (p) and dN (p) for the interior points of a simple mesh,
with the exact distance field midway between contours shown as a dashed line.
The cross-section area is shown as a dashed line on the mesh image.
where
This smoothstep function gradually transitions between unity and zero, and has zero
first and second derivatives at both ends of the transition.
The function dN (p) has the same zero set as dM (p), and also behaves as a smooth
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 49
signed distance field for the midway curve. We show a comparison between the two
methods we have presented in Figure 4.9 and Figure 4.10 for the interior points of a
simple mesh. Notice that there are gradient discontinuities present in dM (p) at each
vertex in the mesh, but that these discontinuities are not present in dN (p).
Figure 4.8 shows a specific cross-section of the visualized field. The x-coordinate
of the texture is shown on the horizontal axis of the graph, and the distance value
is shown on the vertical axis. The function dM (p) is shown as a solid gray line, and
dN (p) is shown as a solid black line. The exact distance field for the interior contour
is shown as a dashed line on the graph.
Examples of textures produced by this method are shown in Figure 4.11, with the
texture for our example mesh shown in Figure 4.11(a). The texture in Figure 4.11(b)
was created by distributing points in a Poisson disk distribution, and randomly as-
signing a point to have either a foreground or background label.
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 50
(a) (b)
Figure 4.9: Distance field dM (p) with gradient discontinuities. (a) color representa-
tion of distance, and (b) isocontours of the produced field.
(a) (b)
Figure 4.10: Distance field dN (p) that is C 1 continuous. (a) color representation of
distance, and (b) isocontours of the produced field.
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 51
(a) (b)
Figure 4.11: Merging implicit regions to form a textures. (a) simple texture, and
(b) random binary texture.
We can use the distance fields of each region to create more elaborate effects. In
the next section, we show how to blend regions together by deriving a weight function
from each distance field.
4.2 Blending
To produce a smooth transition between regions in our texture, we use the distance
function of the region to define a weight function. The weight functions of all regions
are blended together to produce the texture.
Let C = {C0 , C1 . . . Cn } be the set of connected components in our mesh. For
each connected component Ci with associated color ai , we define an associated weight
function wi (p) : R2 → R. The color of the blended output texture at some location p
is given by ∑n
wi (p)ai
f (p) = ∑i=1n . (4.8)
i=1 wi (p)
Our texture function f (p) then becomes a weighted average of color values from each
connected component. Other possibilities of combining the different weight functions
can be considered, such as selecting the color with the largest total weight.
To define our weight function wi (p), we use the distance function dN (x) of the
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 52
where the definition of s(x) is given in Section 4.6. The smoothstep function is used
to smoothly transition between the weights of the different connected components.
Figure 4.12 shows a set of textures where each texture has a different specified
blending radius. Figure 4.13 shows a cross-section of the different blended textures
in Figure 4.12. The set of textures with a blending radius r = 0, 0.05, and 0.10 are
shown as a solid, dashed, and dotted line.
The variable K can be interpreted as an offset distance, with the region being defined
as a shifted offset from the midway contour. Inflation of the region R occurs if K is
positive, and deflation occurs if K is negative.
The behaviour of changing the offset distance can be described based on the inte-
rior and exterior contours of a region. When a region is expanded, the boundary more
closely follows the distance field of the interior contour. When a region is contracted,
the boundary more closely follows the distance field of the exterior contour.
In Figure 4.14, we show a set of implicit regions created with different offset
distances for the interior points of a simple mesh. A cross-section of the distance field
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 53
1 r = 0.00
r = 0.05
r = 0.10
0
0.5 0.6 0.7 0.8 0.9
x
Figure 4.13: Cross-section of wi (p) with different blending radii. The cross-section
area is shown as a dashed line on the mesh image.
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 54
dN (p) of the mesh is shown in Figure 4.15, with different offset distances highlighted
as a dashed line. The boundary of the implicit region is where the distance field
intersects the offset distance, and is shown as a solid red line.
4.4 Labeling
4.4.1 Stripes and Spots
This section discusses different methods for assigning labels to points in the graph. We
have shown that a random binary labeling of points will produce an appealing organic
image, but more sophisticated patterns can be generated by taking into account the
underlying graph. Caron and Mould [18] considered different methods of reasoning
over a graph in their work on partition of unity textures, and these methods can be
directly applied to our algorithm. We reproduce their method of using a depth-first
and breadth-first traversal of the graph to create stripe and spot patterns.
We generate stripe patterns as follows. We select a random point p in the graph
and a fixed number k representing the length of the stripe. We mark p with a
foreground label, and add its unlabeled neighbors to the front of an exploration list.
To grow the stripe, we iteratively repeat the previous step by removing a point from
the front of the exploration list, marking it as the foreground label, and adding
unlabeled neighbors to the front of the exploration list. The stripe stops growing
when it is of size k, or when the exploration list is empty. Once the stripe ceases
growing, we mark all remaining points in the exploration list with the background
label. We repeat this process until all points are labeled.
We generate spot patterns by modifying how stripe patterns are generated. Specif-
ically, when neighbors are added to the exploration list, we add to the back rather than
the front. The labeling procedure has the effect of forming clusters resembling spot
patterns. Figure 4.16 shows a stripe and spot pattern created using our algorithm.
0.2
K
d 0
−K
-0.2
0.5 0.6 0.7 0.8 0.9
x
Figure 4.15: Cross-section of dN (p) showing different offset distances for a simple
mesh. The cross-section area is shown as a dashed line on the mesh image.
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 56
stops when there are no neighboring points to claim. The result is a connected but
non-Voronoi like growth pattern.
Branching structures can be created by labeling paths between points using the
same label. In this method, a set of initial points are selected, and an approximate
minimum spanning tree is constructed using the method of Mehlhorn [54]. Every
point belonging to the spanning tree is labeled with a foreground label, and all other
points are assigned the background label. Figure 4.17 shows an example texture
created by connecting a set of foreground points to form an approximate minimum
spanning tree. We expect other graph labeling methods to produce their own inter-
esting organic phenomena.
(a) (b)
Figure 4.16: Stripe and spot patterns created with a graph-based traversal. (a)
spot patterns, and (b) stripe patterns.
(a) (b)
Figure 4.17: Branching structures created using a graph-based traversal. (a) texture
with initial set of labeled points, and (b) texture with labeled points connected
to form a minimum spanning tree.
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 58
4.7 Summary
In this chapter we described a method for constructing organic textures using smooth
signed distance fields. In our method, a collection of points are grouped based on their
labels and connectivity within a mesh. For each group of points, two smooth distance
fields were used to define an implicit region. Implicit regions were then combined
together to produce the output texture.
We showed how blending between regions can be controlled by modification of
defined implicit fields, and how we could expand or contract an implicitly defined
region. We also demonstrated how different textures can be generated by changing
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 59
(a) (b)
Figure 4.19: Different textures generated by varying the point distribution. (a)
random uniform point distribution, and (b) varying density point distribution.
CHAPTER 4. SMOOTH SIGNED DISTANCE FIELD TEXTURES 60
Figure 4.20: Textures produced with a color spline to produce an outline. (a)
initial texture image, (b) discontinuous color transition, and (c) smooth color
transition
how points are labeled and distributed across the domain. In the next section, we
apply these different techniques to produce the organic patterns we desire.
61
CHAPTER 5. RESULTS 62
Chapter 5
Results
5.1 Introduction
Figure 5.1: From left to right, top to bottom, examples of patterns found in the
natural world: (a) spotted marsh frog [80], (b) strawberry poison-dart frog [34],
(c) clown triggerfish [28], (d) emperor angelfish [39], (e) pufferfish [19], and (f)
common giraffe [53].
CHAPTER 5. RESULTS 63
In the previous chapter, we presented our method for generating organic textures
using smooth signed distance fields. We showed how to produce a simple binary
texture by distributing points in a Poisson disk distribution, randomly assigning a
point one of two different labels, and having the texture depend on whether or not a
pixel was in a foreground region.
This chapter will show how other kinds of textures can be created. Specifically,
we will show how to produce different irregular patterns, smooth patterns, Voronoi
patterns, and complex patterns. In the next section, we give a summary of the
different parameters of our algorithm. The remainder of this chapter describes how to
vary these parameters to produce specific kinds of textures. The patterns we generate
are motivated by examples found in the natural world, as shown in Figure 5.1.
d Minimum distance between any two points in the mesh, when points
of the mesh have been distributed in a Poisson Disk distribution.
(a) (b)
Figure 5.2: Irregular spot and stripe patterns. (a) irregular spot pattern created
with d = 0.10 and k = 4 (b) irregular stripe pattern created with d = 0.05 and
k=8
Figure 5.3: Irregular spot patterns each with varying point densities d and cluster
sizes k.
To create spots that appear more irregular, we can increase the cluster size and
point density of the texture. As the number of points belonging to a spot increases,
the boundaries of the region become more irregular. This irregularity is caused by
the introduction of additional edges used to define the region boundaries, as each
introduced edge creates a bend in the distance field of a contour. We show irregular
spot textures with increasing cluster sizes and offset distances in Figure 5.3.
Using color splines for the background and foreground labels provide smooth color
variations in the texture. Because the distance fields for each spot do not vary widely
away from the zero set, we are able to produce a consistent appearance for each spot.
Figure 5.4: Irregular stripe patterns each with varying maximum stripe length k.
and occur when two connected edges of a contour form a large bend.
Creating smoother stripes would require modifying the mesh creation process, such
as adding additional points along the path of a contour. Section 5.4.2 will describe
how to produce smooth stripes by changing how the mesh is constructed.
(a) (b)
Figure 5.5: Bend in an irregular stripe pattern. (a) stripe pattern created with
k = 8 and d = 0.10, and (b) region in the texture with sharp bend.
(a) (b)
Figure 5.6: (a) example of a rounded spot texture, and (b) example of smooth stripe
pattern.
CHAPTER 5. RESULTS 68
x = x′ + sin(2πkx) (5.1)
y = y′ (5.2)
where k is a parameter used to specify the frequency of the stripe pattern. The
variables x′ and y ′ are points that are sampled from a rectangular grid pattern. For
Figure 5.6(b), the grid pattern has a constant horizontal spacing of w = 0.05 and a
variable vertical spacing of h = 0.05 + 0.01n, where n is the index of a particular row
of points.
A Delaunay triangulation is used to generate a mesh from the set of points we
distributed. Each row of points in the mesh are all given the same label, and a
color spline is used to color each individual stripe. The stripe pattern we produced
is smooth, and resembles the stripes found on the clown triggerfish, as shown in
Figure 5.1(d).
A major limitation of our method is that it is not immediately clear how to produce
more complex stripe patterns, such as producing stripe bifurcations. The mesh in
Figure 5.6(b) was deliberately generated to produce a particular stripe pattern, and
a different labeling of the mesh points would not produce a desirable texture.
A second limitation of our method is evident when we compare between stripes
of different thicknesses in Figure 5.6(b): thinner stripes in the texture have a thicker
yellow outline. The behaviour of the color spline associated with each stripe is not
CHAPTER 5. RESULTS 69
(a) (b)
Figure 5.7: Parameters dependent on smooth distance field. (a) smooth distance
field of a single line segment, and (b) implicit field of texture with varying
smooth distance fields.
(a) (b)
Despite the previously mentioned limitations, we have shown that our method can
generate different smooth stripe patterns by distributing points in a systematic way.
Stripe patterns similar to Figure 5.6(b) can be found in the emperor angelfish (shown
in Figure 5.1(d)).
Figure 5.9: Irregular Voronoi patterns each with varying point densities d and
boundary widths w.
Voronoi sites, and the partitioned regions are known as Voronoi cells. A Voronoi cell
consists of all points that are closer to a fixed site than any other site.
The line segments that form the boundary between Voronoi cells are known as
Voronoi edges. A Voronoi vertex is defined as the intersection of three or more Voronoi
edges, with each Voronoi vertex being equidistant to three or more sites. We will use
the above definitions in the remainder of this chapter.
Figure 5.11: Examples of complex patterns found in nature: (a) maze coral [10],
(b) blue poison arrow frog [40], and (c) lizard [7]
(a) (b)
Figure 5.12: Example of maze texture. (a) maze texture, and (b) corresponding
binary image.
Figure 5.13: Examples of textures created from images [5,45,67]. (a) original image,
and (b) texture produced using probabilistic assignment of labels from image.
CHAPTER 5. RESULTS 76
(a) (b)
(a) (b)
Figure 5.15: Example of non-stationary labeling. (a) texture with varying cluster
sizes for each spot, and (b) image used to determine cluster size.
CHAPTER 5. RESULTS 77
5.7 Summary
In this chapter, we discussed how different textures can be created by varying the
parameters of our algorithm. We showed how to create different irregular stripe
and spot textures by using a color spline with a graph-based labeling strategy. We
then showed how to create smooth patterns and Voronoi patterns by changing the
point labeling, point distribution, and graph construction of our method. Lastly, we
described several techniques to create more complex patterns.
CHAPTER 5. RESULTS 78
(a) (b)
Figure 5.16: Texture with single set of boundary points. (a) complete texture, and
(b) section of the texture, with boundary edges shown in yellow.
(a) (b)
Figure 5.17: Texture with two sets of boundary points. (a) complete texture, and
(b) section of the texture, with boundary edges shown in yellow.
Chapter 6
Discussion
6.1 Rationale
We started with the goal of creating smooth organic patterns, and we wanted these
patterns to be created procedurally with a minimal set of parameters. The user would
not be required to specify individual elements of the texture, such as spline control
points. The solution we presented uses smooth signed distance fields to define an
organic texture. In this section, we discuss the rationale, benefits, and limitations of
our approach.
79
CHAPTER 6. DISCUSSION 80
(a) (b)
Figure 6.1: Bulging in a smooth distance field. (a) Single line segment smooth
distance field. (b) Bulge formed by joining two separate line segments.
Biswas and Shapiro [11] provided an analysis of the problem based on the gradient
CHAPTER 6. DISCUSSION 81
magnitude at the zero isocontour. Recall that in the case of an exact distance field,
for any point not on the medial axis, the gradient magnitude is unity and all higher
derivatives vanish.
In the case of the smooth distance field, the gradient magnitude is not unity every-
where, and specifically is less than unity at a joining point where two line segments
meet. Figure 6.2(a) shows the field of two line segments joined at 90 degrees. Fig-
ure 6.2(b) shows regions, marked in gray, where the gradient magnitude is less than
1. For a R-equivalence operation of two line segments, a further analysis [74] shows
that the minimum value of the gradient occurs at the bisector of the joined segments.
(a) (b)
Figure 6.2: Analysis of bulging problem. (a) Implicit field of two joined line seg-
ments. (b) Gradient magnitude of joined line segments.
This bulge problem has been discussed in the context of other methods. In the
case of binary blending, Gourmel [33] proposed the solution of blending two implicit
primitives based on the angle between their respective gradient fields. An improved
method for general composition was later considered by Canezin et al. [16]. These
methods produce smooth bulge-free joins between implicit primitives, but have the
limitation of not being associative: the field depends on the blending order of the
primitives.
In the case of implicit modeling, convolution surfaces [13] were proposed as a
generalization of point potential surfaces to reduce bulging. In this method, the field
CHAPTER 6. DISCUSSION 82
(a) (b)
Figure 6.3: Implicit field created using an interior and exterior contour. (a) implicit
texture, and (b) isocontours of the produced field.
(a) (b)
Figure 6.4: Implicit field created using a single set of line segments. (a) implicit
texture, and (b) isocontours of the produced field.
CHAPTER 6. DISCUSSION 84
(a) (b)
Figure 6.5: Texture with rotated interior contour. (a) implicit texture, and (b)
isocontours of the produced field.
6.1.4 Comparison
Chapter 2 previously mentioned partition of unity textures and reaction-diffusion
textures as other methods that can be used to produce different types of smooth
CHAPTER 6. DISCUSSION 85
organic texture. Our method is distinguished from previous approaches by being able
to generate texture that is continuous, and that can contain smooth and non-convex
texture elements. This section gives a comparison between our method, Worley noise,
and partition of unity textures.
The approach we take is similar to partition of unity textures in several ways: we
use a mesh to define our texture, and we use a weighted average of field values to
determine the color of a pixel. A major drawback of partition of unity textures is the
difficulty in creating smooth non-convex shapes. To see this drawback, we observe
that the weight functions possess the Kronecker delta property (Section 3.3.3), and
will therefore have a texture with unit gradient at each feature point. When a region
is comprised of multiple points, the boundary of the region becomes bumpy and
irregular. Figure 6.6 shows several textures generated using partition of unity. In our
method, the smoothness of a boundary is governed by the edges of the mesh. We are
able to produce both irregular and smooth patterns by varying how a mesh is defined
and constructed, as shown in Figure 6.8.
Reaction-diffusion textures use chemical simulation systems to generate a variety
of organic patterns, including the smooth and non-convex regions we desire. Reaction-
diffusion textures can also generate additional patterns that cannot be easily produced
with our method. For example, leopard spots were created using reaction-diffusion
by using a cascade system of chemical reactions, as described in Section 2.5. We show
several patterns generated with reaction-diffusion in Figure 6.7.
The difficulty with using reaction-diffusion textures is that the method requires
numerically solving a set of non-linear partial differential equations. The texture is
discretized to a particular resolution, and the parameters of the texture may be diffi-
cult to control. In contrast, our approach gives a continuous texture representation,
with region boundaries defined using the mesh edges. The parameters of our method
are more closely related to the final output texture, and we expect to create different
textures by varying how a mesh is defined and labeled.
algorithm.
Because our texture is defined using a mesh, storage of our texture is linear in the
number of mesh vertices. The entire mesh, as well as the labels associated with each
point, are required to determine the pixel value at a specific location.
support. For a pixel location uj within a region support we add wi (uj ) · ai to A[j].
At the same time, we also add wi (uj ) to B[j]. After we have iterated through all
regions, we obtain
N
∑
A[j] = wi (uj )ai (6.1)
i=0
∑N
B[j] = wi (uj ) (6.2)
i=0
where N is the number of regions in the texture. The color value of a pixel at location
uj is obtained by dividing A[j] by B[j].
Table 6.1: Timing results for our algorithm for a binary texture (400 × 400).
field. Larger values of K increase the computation time but generate a smoother field.
Table 6.1 shows the timing results of our method for a texture created with a
random binary labeling in a Poisson disk distribution, with blending radius parameter
r = d/4, and with different values for the parameter K. The timing results were
generated on an Intel Core i5-5200U processor using a single-threaded unoptimized
implementation. We note that the performance of our algorithm is linear in the size
of the image. Table 6.2 shows timing results for a random binary texture generated
at different resolutions.
Choosing a value for K generally depends on the parameters used to generate the
texture. For the binary texture that we generated our timing results for, we do not
notice discontinuity artifacts beyond K = 2.
6.3 Summary
This chapter discussed the rationale of our algorithm. We described how using a mesh
allows us to group points together, and provides us a way to define region boundaries.
Because each region is defined using a pair of contours, we can create smooth fields
that limit bulge artifacts. Creating a field for each region then allows us to create a
CHAPTER 6. DISCUSSION 90
Table 6.2: Timing results for our algorithm for different resolutions.
Conclusion
7.1 Summary
We presented a method for generating smooth organic patterns using labeled points
on a mesh. We used the edges of a mesh to group points together, and to define
region boundaries in the texture. Each region is defined by blending together the
distance fields of two different sets of boundary edges, and produces a field for the
region that is everywhere smooth. We created a texture by composing the fields of
different regions together.
Our method is distinguished from existing techniques by being able to produce
a continuous, implicit representation of texture that can contain both smooth and
irregularly shaped regions. Regions in the texture do not have to be convex, and
can be smoothly blended with each other. Furthermore, the inputs to our method
are closely related to the output texture, and different textures can be generated by
varying how a mesh is constructed.
Partition of unity textures produce continuous textures, but region boundaries
would appear bumpy and irregular. Reaction-diffusion textures produce a variety of
organic texture, but each texture is discretized and has its input parameters be a set
of partial differential equations.
There are several limitations to our method as well. In our approach, the gradient
magnitude of a region distance field is not constant, which may cause variations in how
regions are blended in the texture. Section 5.4.2 showed how the blending behaviour
of a stripe varied depending on the stripe width. In Section 5.3.2 we discussed how
texture artifacts could be created depending on how the underlying mesh was defined.
Despite the above limitations, we have shown several types of smooth and irregular
91
CHAPTER 7. CONCLUSION 92
patterns. We were able to produce different spot, stripe, and Voronoi textures that
resembled patterns found in the natural world.
dependent on layers previously generated. Many patterns found in the natural world
consist of features that have a large variety of size and shape.
Although we can extend our method in several ways, we have shown the usefulness
of using smooth signed distance fields to produce texture. Our approach gave us a
flexible and resolution-independent method to construct several different types of
smooth and organic patterns. We believe further study of our work may lead to the
generation of many other complex organic phenomena.
List of References
[1] N. Ahuja and J.-H. Chuang, “Shape representation using a generalized potential
field model,” IEEE Trans. Pattern Anal. Mach. Intell., vol. 19, no. 2, pp. 169–
176, Feb. 1997.
[2] K. Anjyo, J. P. Lewis, and F. Pighin, “Scattered data interpolation for computer
graphics,” in ACM SIGGRAPH 2014 Courses, ser. SIGGRAPH ’14. New York,
NY, USA: ACM, 2014, pp. 27:1–27:69.
[3] B. R. D. Arajo, R. A. Redol, J. Armando, and P. Jorge, “Blobmaker: Free-form
modelling with variational implicit surfaces,” in In Proc. of the 12th Portuguese
Computer Graphics Meeting, 2003, pp. 17–26.
[4] M. Ashikhmin, “Synthesizing natural textures,” in Proceedings of the 2001 Sym-
posium on Interactive 3D Graphics, ser. I3D ’01. New York, NY, USA: ACM,
2001, pp. 217–226.
[5] T. Baert, “Eye,” https://www.flickr.com/photos/60588229@N05/5725913600,
2011, [Online; accessed 03-09-16]. Licensed under CC BY-NC 2.0.
[6] J. B. Bard, “A model for generating aspects of zebra and other mammalian coat
patterns,” Journal of Theoretical Biology, vol. 93, no. 2, pp. 363 – 385, 1981.
[7] P. Batty, “Lizard,” https://www.flickr.com/photos/ebatty/17453720, 2003, [On-
line; accessed 03-09-16] Licensed under CC BY-NC-SA 2.0.
[8] A. Belyaev, P.-A. Fayolle, and A. Pasko, “Technical note: Signed Lp-distance
fields,” Comput. Aided Des., vol. 45, no. 2, pp. 523–528, Feb. 2013.
[9] A. G. Belyaev and P.-A. Fayolle, “On variational and PDE-based distance func-
tion approximations,” Computer Graphics Forum, 2015.
[10] Bemap, “Christmas tree worm on brain coral,” https://www.flickr.com/photos/
40626436@N00/4502224625, 2010, [Online; accessed 03-09-16]. Licensed under
CC BY-NC 2.0.
[11] A. Biswas and V. Shapiro, “Approximate distance fields with non-vanishing gra-
dients,” Graph. Models, vol. 66, no. 3, pp. 133–159, May 2004.
[12] J. Bloomenthal, “Bulge elimination in convolution surfaces,” Computer Graphics
Forum, vol. 16, no. 1, pp. 31–41, 1997.
94
95
[86] L. Wang, K. Zhou, Y. Yu, and B. Guo, “Vector solid textures,” ACM Trans.
Graph., vol. 29, no. 4, pp. 86:1–86:8, Jul. 2010.
[87] L.-Y. Wei, S. Lefebvre, V. Kwatra, and G. Turk, “State of the art in example-
based texture synthesis,” in Eurographics 2009, State of the Art Report, EG-
STAR. Eurographics Association, 2009.
[88] L.-Y. Wei and M. Levoy, “Fast texture synthesis using tree-structured vec-
tor quantization,” in Proceedings of the 27th Annual Conference on Computer
Graphics and Interactive Techniques, ser. SIGGRAPH ’00. New York, NY,
USA: ACM Press/Addison-Wesley Publishing Co., 2000, pp. 479–488.
[89] L. Wei and M. Levoy, “Order-independent texture synthesis,” Computer Science
Department, Stanford University, Tech. Rep. TR-2002-01, 2002.
[90] A. Witkin and M. Kass, “Reaction-diffusion textures,” Computer Graphics
(Proc. ACM SIGGRAPH 91), vol. 25, no. 4, pp. 299–308, Jul. 1991.
[91] S. Worley, “A cellular texture basis function,” in Proceedings of the 23rd Annual
Conference on Computer Graphics and Interactive Techniques, ser. SIGGRAPH
’96. New York, NY, USA: ACM, 1996, pp. 291–294.
[92] Q. Wu and Y. Yu, “Feature matching and deformation for texture synthesis,”
ACM Trans. Graph., vol. 23, no. 3, pp. 364–367, Aug. 2004.
[93] B. Wyvill, A. Guy, and E. Galin, “Extending the CSG tree. Warping, blend-
ing and boolean operations in an implicit surface modeling system,” Computer
Graphics Forum, vol. 18, no. 2, pp. 149–158, 1999.
[94] L. Ying, A. Hertzmann, H. Biermann, and D. Zorin, “Texture and shape syn-
thesis on surfaces,” in Rendering Techniques 2001, ser. Eurographics, S. Gortler
and K. Myszkowski, Eds. Springer Vienna, 2001, pp. 301–312.
[95] C. Zanni, P. Bares, A. Lagae, M. Quiblier, and M.-P. Cani, “Geometric details on
skeleton-based implicit surfaces,” in Eurographics 2012 - 33rd Annual Conference
of the European Association for Computer Graphics, ser. Eurographics 2012 :
Short Paper. Cagliari, Italy: Eurographics, May 2012, pp. 49–52.