Although the generation of
triangulated surfaces for arbitrary complex
geometries is now well studied problem and in the last few years many
efficient algorithms have been implemented and freely available.
However, there
are many
applications in simulations and computer graphics where having all
quadrilateral or quad-dominated models
provide huge advantages, but unfortunately, generation of All-Quad Elements is non-trivial
that can meet all the quality requirements that
users expect from such a mesh.
Fitting triangular mesh with B-Spline surfaces and then
generating quadrilateral mesh received attention
from many researchers in the past and our present work is an effort
in an efficient
implemention of basic ideas established in (1) Eck & Hoppe
(2) Venkat and Levoy (its source code which will be freely
available.) The
standard pipeline of generating B-Spline surfaces starting from point
clouds is given in the following picture.
The initial parameterization have
influence on the performance of the iterative solver. The initial
parameterization of a given quad patch which is homeomorphic to a open
disk is done by
either (1)
Floater parameterization
(2)
Harmomic Map
Parameterization.
Mathamatical Formulation:
The general equation of B-Spline is given as
Where C(i,j) are control points and B(u)
and B(v) are the basis functions in the "u" and "v" direction
respectively. This equation can be written in the matrix form as
In the surface fitting problem, the
unknown quantities are the control points, which can be obtained using
least square solution as
This raw formulation doesn't guarantee
smoothness of control points values, therefore, some regularization is
performed so that the norm of control points is also minimized. This
leads
to standard "Tikhnov Regularization".
Here Gamma is any suitable matrix, but
in our implementation it is set to identity matrix. Therefore, the
modified controls points are given by
Even after regualization, there is no
guarantee that control points of the adjacent patches will match, if
they don't match, then the resulting model will not be watertight and
seams will be visible in the model. In order to provide G1 continuity,
we will use "constrained least square problem". With this
approach. the boundary controls points are fixed and only the internal
control points are determined using the least square solution.
The initial values of the control points is determined from the
unconstrained least square solution described above. This ensures
that the boundry control points are fixed. However, this simplicity
assumes that the number of controls points are the same on two adjacent
surfaces therefore, this requirement probihibtes using adaptive
controls points.
Once we have control points for each
patch, the determination of full resolution mesh is simple.
Results:
|
|
|
|
|
Cylinder : 8
Patches
|
Torus : 8
patches
|
Bunny 50
patches.
|
Foot 64 patches.
|
|
Note that in these figure, tangent discontinuity is not resolved
properly, but visually it is absent. Mathematically, there might be
someshort comings in our approach to ensure C2 continuity.
Conclusions:
Both manual and automatic approches have advantages in creating high
quality B-Spline patches creations and in this project, we have made an
attempt an engineering attempt to improve both the methods.
Although our present results have shown good quality, but it still has
one serious problem that the quadrilateral mesh may not be curvature
aligned. There are some premature ideas of generating vector field over
the model to give some feedback to facilitate an user to create nice
patches, but this is the work for the future.
The software (JAAL) has many independent components written in C/C++
(both in-house and integrated public domains software). This software
will be freely available once rigrous testing and document is complete.
We used the following 3rd party software in our prototype software
development:
- Intel MKL library for least square solution.
- Floater Parameterization ( from SINTEF )
- Geodesics on Polygonal Mesh (Google).
- libQGlViewer for visualization and Qt4.5 for GUI development.
All the triangulated models were obtained from Standord and Aims@shape
(http://shapes.aim-at-shape.net/viewmodels.php)