The deformable surface that we use is based on the Generalised Biquadratic B-Spline (GBBS) developed by Loop and De Rose [ 10 , 11 ] for computer graphics. It is a difficult task to compute the surface due mainly to the difficulty of dealing with multi-indices of Bezier simplices.
The GBBS is a powerful and elegant generalisation of the Biquadratic
B-Spline. It automatically maintains
continuity. The GBBS is defined by a set of
M
3D control points
together with connectivity information. The connectivity defines a mesh
topology which is restricted to 4-sided faces, (see for example figure
1(b), 3(d)). Each vertex gives rise to an
n
-sided surface patch where
n
is the number of 4-sided faces using that vertex. Patch
m
depends only on the 2
n
+1 element control vector
consisting of
and the set of all vertices on adjacent faces, i.e. with
k
in the neighbourhood of
m
,
N
(
m
).
In this paper we introduce a new matrix-based scheme to compute the
surface based on notation similar to that of [
2
]. The principal steps in computing the surface are as follows. The
control vector
is converted to the Sabin net vector
by
. The Sabin net vector is converted to a vector of Bezier control points
by another matrix
. This is combined with the Bezier polynomials
to compute the point. Thus we obtain the surface patch
as a mapping from points
p
=(
u
,
v
) contained in a regular
n
-gon Domain
to a 3D surface
The whole surface
S
is the union of the patches
,
. The control vector for patch
m
,
can be obtained from the vector of all control points
by a connectivity matrix
.
The remainder of this section is of a technical nature. We show how to recast the generalised B-spline into the standard form used in computer vision. Readers interested only in how to use the surface may skip to the next section.
B-Splines are intimately related to Bezier curves [
14
,
5
]. When discussing Bezier curves it is useful to replace the usual
single parameter
u
with two parameters
and
and a constraint that
. A depth
d
Bezier curve
is defined in terms of
d
+1 control points
and the Bernstein-Bezier polynomials
as follows
The Bezier curve admits an elegant generalisation called a B-form that
maps a [(
k
+1)-variate]
k
-dimensional parameter space onto any number of scalars. Firstly we must
define multivariate Bernstein-Bezier polynomials. For these we will need
a notation for multi-indices
. The symbol
denotes a multi-index whose components are all zero except for the
j
component which is 1. It is useful to define a modulus of a multi-index
as
. The k-variate depth
d
Bernstein-Bezier polynomials are a simple generalisation of equation (
2
).
The Loop and De Rose scheme is based on S-patches, which are n-sided
smooth patches which map a point
p
=(
u
,
v
) inside
n
-sided domain polygon
D
to a 3D surface. Firstly we form
n
barycentric variables
defined as follows. Define the
n
vertices of the regular
n
-gon as
. Define the fractional areas
as the area of a triangle enclosed by points
p
,
, and
divided by the total area of
D
. Now form
n
new variables
by
Then form normalised variables
The S-patch is now simply defined in terms of the variables
and the Bezier control points
. It is a mapping
where
is a
n
-sided domain polygon and
Note that the n -sided patch uses a k +1 variate Bezier polynomial where n = k +1. The fact that a different dimension multi-index is required for each different sized patch is a bookkeeping headache for implementation.
The Bezier control points for a depth 5
n
-sided S-patch are computed from the Sabin net control points,
v
,
, and
. Letting
, then up to symmetries the Bezier control points are for
i
=1..
n
We now observe that this set of equations is a linear transform from the
Sabin net control points to the Bezier control points. Thus the
coefficients from the above equations may be used to populate the matrix
. (We note that some minor additional steps are necessary since this
leaves some matrix elements unspecified. Consult page 353 of [
11
] for details.) The Sabin net control points are obtained from the GBBS
control points by the recipe that
v
is the central vertex, the
are centroids of each face, and the
are centroids of each edge. This linear mapping can easily be converted
to the matrix
. If we rewrite equation
6
in matrix form as
then we finally obtain
as required.
The constructive procedure specified above is lengthy and complex. We
firstly deal with the indexing problem. The multi-indices
need to be converted to a one dimensional indexing scheme. Each index
may be interpreted as a number in base
d
+1, thus descending order in this value defines a unique mapping to a 1D
array. Enumeration of constant depth 1D array position to multi-index is
straightforwardly done through a lookup table, but the reverse lookup
table from multi-index to 1D array position is inconveniently large
since it is of size
, (recall
d
=5,
n
= no. of sides). However the need for this table can be avoided.
Next we must actually compute the sum specified in equation ( 6 ). Instead of the naive implementation we use the technique of de Casteljau depth reduction [ 5 ]. This is a procedure by which a set of Bezier control points are reduced iteratively in depth to d =0 which corresponds to a point. (This is in fact the basis for the geometric interpretation of Bezier curves!) For the Bezier curve of equation ( 2 ) we note that
where
. This procedure generalises to a Bezier simplex. Thus we don't ever
need to compute the Bezier polynomials, we simply depth reduce the
control points recursively until
d
=0. The remaining trick to convenient computation is a lookup table with
the 1D array positions for depth reduction. In this way multi-indices
need never actually be used. This scheme is based on the suggestions of
Shoemake [
15
].
We have shown that we can compute points on the GBBS in the form
. We now address the speed issues. There is no doubt that the
constructive procedure described above is between one and two orders of
magnitude slower than the equivalent tensor product B-Spline form. This
is partly because the number of Bezier control points (
) grows rapidly with
n
. The solution is to note that the vector
is only 2
n
+1 elements long and needs to be computed only once for each point
p
on the patch with fixed (
u
,
v
) coordinates.
When it is necessary to render the patch we convert the patches by
subdivision into triangles and the same points
p
are always used. Thus lookup tables may be created in advance containing
, and the computation for any point on the patch is reduced to 2
n
+1 multiply and add operations.
We minimise a cost
which balances a smoothness term
and a data force
. The smoothness force may be written
.
In our previous work the data force attached directly to the control points rather than the surface itself. This is unsatisfactory. We now show how to obtain a force which attaches directly to the surface itself.
We suppose that the force arises from a volumetric potential energy term
defined everywhere in space. All points on the surface should seek to
minimise this potential, i.e. we wish to minimise
The integral is approximated as a discrete sum.
With the new matrix form of GBBS the data force becomes easier to evaluate.
The total force
is made up of the sum over sample points
and patches
m
.
The smoothness force that we use is very similar to that obtained by
for curves. The force applied to each control point is equal to the
centroid of its edge neighbours less itself. A reaction force is applied
to the neighbours so that the overall force is always zero. Thus we
solve the dynamic equation
After convergence
and a local minimum of
E
is achieved.
Andrew Stoddart