by all four lights. The reason for this is that the five
areas exhibit different low frequency errors, as the er-
ror caused by each light nudges the estimated normal
in a different direction.
Let N
sharp
be the normal map we have just ob-
tained, N
blur
a low-pass filtered version of that nor-
mal map and N
vertex
a low-pass filtered normal map
generated from the 3D geometry, which is created by
rendering the vertex normals into texture space.
We define a new normal map N
comb
as follows:
N
comb
:= N
sharp
+ N
vertex
− N
blur
N
comb
has the useful property that when it is itself low-
pass filtered, the result is very close to N
vertex
- the
low frequencies of N
comb
consist of information from
N
vertex
, while only the high frequency information is
taken from N
sharp
. This is highly useful, as variations
in incoming light intensity are always of a low fre-
quency nature.
Since the correction is performed on each vector
component independently, the resulting normals have
to be renormalized.
Our method is similar to the one presented in (Ne-
hab et al., 2005), except that we perform the low-pass
filtering by convolving the normal map linearly with
a gaussian kernel, instead of estimating a rotation ma-
trix for each normal - we assume that the difference
in the lower frequency bands is small enough for that
not to make any difference.
Once the five patches of N
comb
have been com-
puted for all five areas, they can be safely put to-
gether - because they all share the same low frequency
information, there is no longer any danger of edges
(discontinuities in the normal map) appearing at the
seams.
At points illuminated by only two or less lights
(the sixth area), the original vertex normal map,
N
vertex
, is used.
After the low pass correction, the normal map
looks like Fig. 1 (c). In order to render images with it,
a texture containing the surface albedo is needed. The
albedo a
λ
for color channel λ is defined as the ratio
of light of color λ that is reflected off a surface, when
the incoming light direction is perpendicular to it.
5.3 Albedo Estimation
Only after the low pass correction has been com-
pleted, is it safe estimate the surface albedo.
We define the albedo a
iλ
for texel i and color chan-
nel λ as follows:
a
iλ
=
∑
valid l
(
→
L
il
·
→
N
iλ
)I
ilλ
∑
valid l
(
→
L
il
·
→
N
iλ
)
2
→
N
iλ
is the estimated surface normal at texel i for
color channel λ,
→
L
il
is the normalized vector towards
light l and I
ilλ
is the λ channel of the diffuse lumi-
nance of texel i under light l. The expression can be
seen as a weighted average over the individual contri-
butions I
ilλ
/(
→
L
il
·
→
N
iλ
), weighted by the squared lam-
bert factors (
→
L
il
·
→
N
iλ
)
2
. The weights are squared in
order to suppress the influence of dark pixels, where
the relative error is the largest.
At the end, the albedo is grown into areas where
it is undefined. This is done so tiny cracks can be re-
moved that can form mostly around the lips, where
occlusion is critical and the texture resolution is low
(in our case). This is done by setting the value of each
undefined pixel to the average value of all defined
neighboring pixels (after which the pixel becomes de-
fined), and repeating the procedure a number of times.
Although the data computed so far is sufficient to
render images, the quality of the normal maps can still
be improved. This is done by computing a 3D surface
at the resolution of the normal map with surface nor-
mals that match those of the normal map as closely as
possible. The normals of that surface are then used as
a more realistic normal map.
5.4 Surface Reconstruction
Not every vector field is a possible normal map - at
least not as long as the surface it is supposed to repre-
sent has been adequately filtered prior to sampling.
We are looking for a normal map that actually cor-
responds to a real surface. By enforcing that fact,
we can remove part of the photographic noise that
has found its way into the normals without sacrificing
higher frequency bands of the normal map. We do
that by reconstructing the surface at the resolution of
the normal map. The reconstructed surface can then
be either rendered directly or its surface normals can
be written into a normal map, and the original, coarse
mesh rendered using that normal map.
If the normal map is to be used with the coarse
mesh, the normal maps for all three color channels
have to be used to reconstruct three different meshes.
If the high resolution mesh is to be used for render-
ing, only one of the meshes has to be reconstructed,
preferrably the one corresponding to the green chan-
nel. The effects of subsurface scattering on the color
of skin are thereby lost. The green channel is chosen
because it offers the best trade-off between signal in-
tensity and contrast, because the normals correspond-
ing to the red channel are much softer, while the ones
corresponding to the blue channel are noisy as only
very little blue light is reflected off human skin.
GRAPP 2009 - International Conference on Computer Graphics Theory and Applications
16