Graphics Reference
In-Depth Information
where
k
is a suitable smooth kernel function and
h
is a user parameter in-
tended to be the extent of each particle. A Gaussian might be a reasonable
choice for
k
; a cheaper and simpler alternative would be a spline, such as
k
(
s
)=
(1
s
2
)
3
:
s<
1
,
0:
s
−
1
.
This spline has the advantage that it depends only on
s
2
,not
s
, allowing
one to avoid taking a square root when evaluating at
s
=
≥
/h
.
The extent
h
should generally be several times the average inter-particle
spacing
r
, for example
h
=3
r
, but it can be tweaked as needed. (For our
recommended sampling,
r
is half the grid spacing Δ
x
.) The blobby surface
is implicitly defined as the points
x
where
F
(
x
)=
τ
for some threshold
τ
,
or in other words the
τ
-isocontour or level set of
F
. A reasonable default
for
τ
is
k
(
r/h
), which produces a sphere of radius
r
foranisolatedparticle,
but this too can be a tweakable parameter.
Unfortunately the blobby surface can have noticeable artifacts, chief
among them that it can look, well, blobby. Many water scenarios in-
clude expanses of smooth water; after sampling with particles and then
wrapping the blobby surface around the particles, generally bumps for
each particle become apparent. This is especially noticeable from spec-
ular reflections on the water surface, though it can be masked by foam or
spray. The bumps can be smoothed out to some extent by increasing the
h
-parameter—however, this also smooths out or even eliminates small-scale
features we
want
to see in the render. Typically there is a hard trade-off
involved.
A slight improvement on blobbies is given by Zhu and Bridson [Zhu and
Bridson 05], where instead the implicit surface function is given by
x
−
x
i
X
φ
(
x
)=
x
−
−
r,
X
is a weighted average of nearby particle locations:
where
i
k
x− x
i
x
i
i
k
x−x
i
h
X
=
h
and
r
is a similar weighted average of nearby particle radii:
i
k
x−x
i
h
r
i
i
k
x−x
i
r
=
.
h