Geometry processing is an area of research that uses concepts from applied mathematics, computer science and engineering to design efficient algorithms for the acquisition, reconstruction, analysis, manipulation, simulation and transmission of complex 3D models. As the name implies, many of the concepts, data structures, and algorithms are directly analogous to signal processing and image processing. For example, where image smoothing might convolve an intensity signal with a blur kernel formed using the Laplace operator, geometric smoothing might be achieved by convolving a surface geometry with a blur kernel formed using the Laplace-Beltrami operator.
Applications of geometry processing algorithms already cover a wide range of areas from multimedia, entertainment and classical computer-aided design, to biomedical computing, reverse engineering, and scientific computing.[1]
Geometry processing is a common research topic at SIGGRAPH, the premier computer graphics academic conference, and the main topic of the annual Symposium on Geometry Processing.
Geometry processing involves working with a shape, usually in 2D or 3D, although the shape can live in a space of arbitrary dimensions. The processing of a shape involves three stages, which is known as its life cycle. At its "birth," a shape can be instantiated through one of three methods: a model, a mathematical representation, or a scan. After a shape is born, it can be analyzed and edited repeatedly in a cycle. This usually involves acquiring different measurements, such as the distances between the points of the shape, the smoothness of the shape, or its Euler characteristic. Editing may involve denoising, deforming, or performing rigid transformations. At the final stage of the shape's "life," it is consumed. This can mean it is consumed by a viewer as a rendered asset in a game or movie, for instance. The end of a shape's life can also be defined by a decision about the shape, like whether or not it satisfies some criteria. Or it can even be fabricated in the real world, through a method such as 3D printing or laser cutting.
Like any other shape, the shapes used in geometry processing have properties pertaining to their geometry and topology. The geometry of a shape concerns the position of the shape's points in space, tangents, normals, and curvature. It also includes the dimension in which the shape lives (ex.
R2
R3
In computers, everything must be discretized. Shapes in geometry processing are usually represented as triangle meshes, which can be seen as a graph. Each node in the graph is a vertex (usually in
R3
One particularly important property of a 3D shape is its Euler characteristic, which can alternatively be defined in terms of its genus. The formula for this in the continuous sense is
\chi=2c-2h-b
c
h
b
\chi=|V|-|E|+|F|
Depending on how a shape is initialized or "birthed," the shape might exist only as a nebula of sampled points that represent its surface in space. To transform the surface points into a mesh, the Poisson reconstruction[3] strategy can be employed. This method states that the indicator function, a function that determines which points in space belong to the surface of the shape, can actually be computed from the sampled points. The key concept is that gradient of the indicator function is 0 everywhere, except at the sampled points, where it is equal to the inward surface normal. More formally, suppose the collection of sampled points from the surface is denoted by
S
pi
ni
\triangledowng=\begin{cases}bf{n}i,&\forallpi\inS\ 0,&otherwise\end{cases}
The task of reconstruction then becomes a variational problem. To find the indicator function of the surface, we must find a function
\chi
\lVert\triangledown\chi-bf{V}\rVert
bf{V}
\chi
\chi
\sigma
(x,y,z)
\chi(x,y,z)=\sigma
\chi
One common problem encountered in geometry processing is how to merge multiple views of a single object captured from different angles or positions. This problem is known as registration. In registration, we wish to find an optimal rigid transformation that will align surface
X
Y
PY(x)
X
Y
R
t
\intx||Rx+t-
2 | |
P | |
Y(x)|| |
dx
While rotations are non-linear in general, small rotations can be linearized as skew-symmetric matrices. Moreover, the distance function
x-PY(x)
X
X
Y
x
When shapes are defined or scanned, there may be accompanying noise, either to a signal acting upon the surface or to the actual surface geometry. Reducing noise on the former is known as data denoising, while noise reduction on the latter is known as surface fairing. The task of geometric smoothing is analogous to signal noise reduction, and consequently employs similar approaches.
The pertinent Lagrangian to be minimized is derived by recording the conformity to the initial signal
\barf
λ
l{L}(f)=\int\Omega\|f-\barf\|2+λ\|\nablaf\|2dx
Taking a variation
\deltaf
l{L}
0=\deltal{L}(f)=\int\Omega\deltaf(I+λ\nabla2)f-\deltaf\barfdx
By discretizing this onto piecewise-constant elements with our signal on the vertices we obtain
\begin{align} \sumiMi\deltafi\barfi&=\sumiMi\deltafi\sumj(I+λ\nabla2)fj=\sumi\deltafi\sumj(M+λM\nabla2)fj, \end{align}
\nabla2
M-1L
L
M-1
λ
\barf=(M+λL)f.
L
Lij=\begin{cases}
1 | |
2 |
(\cot(\alphaij)+\cot(\betaij))&edgeijexists\\ -\sum\limitsiLij&i=j\\ 0&otherwise \end{cases}
Where
\alphaij
\betaij
(i,j)
Mij=\begin{cases}
1 | |
3 |
m\begin{cases} Area(t) | |
\sum\limits | |
t=1 |
&iftriangletcontainsvertexi\\ 0&otherwise\end{cases}&ifi=j\\ 0&otherwise\end{cases}
Occasionally, we need to flatten a 3D surface onto a flat plane. This process is known as parameterization. The goal is to find coordinates u and v onto which we can map the surface so that distortions are minimized. In this manner, parameterization can be seen as an optimization problem. One of the major applications of mesh parameterization is texture mapping.
One way to measure the distortion accrued in the mapping process is to measure how much the length of the edges on the 2D mapping differs from their lengths in the original 3D surface. In more formal terms, the objective function can be written as:
\underset{U}{min
Where
E
U
Another way to measure the distortion is to consider the variations on the u and v coordinate functions. The wobbliness and distortion apparent in the mass springs methods are due to high variations in the u and v coordinate functions. With this approach, the objective function becomes the Dirichlet energy on u and v:
\underset{u,v}{min
There are a few other things to consider. We would like to minimize the angle distortion to preserve orthogonality. That means we would like
\nablau=\nablav\perp
\begin{bmatrix} \dfrac{\partialu}{\partialx}&\dfrac{\partialu}{\partialy}\\[1em] \dfrac{\partialv}{\partialx}&\dfrac{\partialv}{\partialy}\end{bmatrix} =1
Putting these requirements together, we can augment the Dirichlet energy so that our objective function becomes:[6] [7]
\underset{u,v}{min
To avoid the problem of having all the vertices mapped to a single point, we also require that the solution to the optimization problem must have a non-zero norm and that it is orthogonal to the trivial solution.
Deformation is concerned with transforming some rest shape to a new shape. Typically, these transformations are continuous and do not alter the topology of the shape. Modern mesh-based shape deformation methods satisfy user deformation constraints at handles (selected vertices or regions on the mesh) and propagate these handle deformations to the rest of shape smoothly and without removing or distorting details. Some common forms of interactive deformations are point-based, skeleton-based, and cage-based.[8] In point-based deformation, a user can apply transformations to small set of points, called handles, on the shape. Skeleton-based deformation defines a skeleton for the shape, which allows a user to move the bones and rotate the joints. Cage-based deformation requires a cage to be drawn around all or part of a shape so that, when the user manipulates points on the cage, the volume it encloses changes accordingly.
Handles provide a sparse set of constraints for the deformation: as the user moves one point, the others must stay in place.
A rest surface
\hat{S}
\R3
\hat{x}:\Omega → \R3
\Omega
x
S
d=x-\hat{x}
minbf{d
While this method is translation invariant, it is unable to account for rotations. The As-Rigid-As-Possible deformation scheme[10] applies a rigid transformation
xi=R\hat{xi}+t
R\inSO(3)\subset\R3
t\in\R3
bf{R}:\Omega → SO(3)
bf{x}
bf{R}
minbf{x,R\inSO(3)}\int\Omega||\nablabf{x}-bf{R}\nabla\hat{bf{x}}||2dA
Note that the translation vector is not present in the final objective function because translations have constant gradient.
While seemingly trivial, in many cases, determining the inside from the outside of a triangle mesh is not an easy problem. In general, given a surface
S
isInside(q)
1
q
S
0
In the simplest case, the shape is closed. In this case, to determine if a point
q
r
countr
q
S
S
countr=0
S
q
countr
q
S
S
isInsider(q)=\left\{ \begin{array}{ll} 1&countr is odd\\ 0&countr is even\\ \end{array} \right.
Now, oftentimes we cannot guarantee that the
S
The naive attempt to solve this problem is to shoot many rays in random directions, and classify
q
S
k
r1,r2,...,rk
rayTest(q)=
1 | |
k |
k | |
\sum | |
i=1 |
isInside | |
ri |
(q)
isInsider
isInside(q)=\left\{ \begin{array}{ll} 1&rayTest(q)\geq0.5\\ 0&rayTest(q)<0.5\\ \end{array} \right.
In the limit of shooting many, many rays, this method handles open meshes, however it in order to become accurate, far too many rays are required for this method to be computationally ideal. Instead, a more robust approach is the Generalized Winding Number.[11] Inspired by the 2D winding number, this approach uses the solid angle at
q
q
q
wn(q)
wn(q)=
1 | |
4\pi |
\sumtsolidAngle(t)
For a closed mesh,
wn(q)
S
isInside(q)=\left\{ \begin{array}{ll} 1&wn(q)\geq0.5\\ 0&wn(q)<0.5\\ \end{array} \right.
Because
wn(q)