Graphics Reference
In-Depth Information
weights corresponding to values on the outside (and renormalize the re-
maining weights).
The only downside to this solution is that if we choose not to reinitialize
signed distance every time step—which, given the error this adds to the
surface geometry, is a wise choice—we don't necessarily have an up-to-date
closest-point index array. An attractive remedy is then to reinitialize signed
distance each time step but without modifying the φ values close to the
surface that actually determine its shape (e.g., those φ values less than 2Δ x
in magnitude), except once per frame or so when we do full reinitialization.
An alternative espoused by some is to cast extrapolation as a PDE. If
we set a quantity equal to the value at the closest point on the surface,
then that quantity must be constant along lines normal to the surface,
which means its directional derivative along
φ is zero. In other words,
extrapolating a quantity q is equivalent to solving
φ
·∇
q =0
outside the fluid. This can be discretized with finite differences, biased
to the direction towards the surface: for example, to estimate ∂q/∂x at
grid point i , one should select either ( q i +1
q i− 1 ) / Δ x
depending on whether φ i +1 or φ i− 1 is smaller, respectively. The resulting
system of linear equations can be solved with variations of the fast marching
method or fast sweeping, or directly with sparse matrix methods (in fact,
the bias towards the surface forces the linear system to be equivalent to a
lower-triangular matrix, which can be solved by forward substitution after
topologically sorting the unknowns, all in linear time). However, if φ isn't
guaranteed to be signed distance, and in particular might not be strictly
increasing as you go further from the surface, this can get a little flaky, to
say nothing of the complications of handling staggered grid quantities such
as velocity.
q i ) / Δ x or ( q i
6.4 More Accurate Pressure Solves
The methods we have developed so far still fall short when it comes to
visual plausibility. The culprit is the voxelized treatment of the free surface
boundary condition p = 0. Even if we can track and render an accurate
water surface, so far the core of the simulation—the pressure solve—only
sees a block voxelized surface, with some cells marked as water and some
as air. Thus the velocity field, and from there the motion and shape of the
surface itself, cannot avoid significant voxel artifacts. For example, small
Search WWH ::




Custom Search