Está en la página 1de 6

La Importancia de los Vectores Normales (de caras y vértices)

- )
0.- Introducción. r e
El vector normal es un concepto matemático-geométrico que es utilizado continuamente de modo E y interno en todos
s
los programas de diseño gráfico, como Blender, y tiene gran importancia para la mayoría de operaciones que realiza el
programa. Supongamos un plano que tenga todos sus puntos en un espacio euclídeo deu
dos vectores normales, uno por cada lado del plano, ambos en dirección perpendicular r c dos dimensiones, existirían
a dicho plano pero en sentidos
contrarios. Es como si imaginamos una hoja de papel sobre una mesa, donde e
u
superior de la hoja (el lado o página que estaría visible) apuntaría hacia el techo p el vector normal del lado o página
y el de la cara que está en contacto
con la mesa (el lado o página que no podemos ver) apuntaría hacia el L
- suelo; pero si damos la vuelta a la hoja los
vectores normales cambiarían de sentido, es decir rotarían 180°. Si estuviéramos modelando esa hoja con Blender
tendríamos que hacer saber al programa que lo que antes estaba
L Mabajo ahora está arriba y para eso, entre otras
muchas cosas, Blender dispone de varias herramientas para laAvisualización, edición y gestión de los vectores normales.
Durante el procesamiento del “render”, los vectores normalesM (o simplemente “las normales”) son quizá el elemento
matemático de las mallas que, vinculado tanto con y los vértices de su geometría como con las caras poligonales que
(
definen la topología y la superficie, permiten calcularb y obtener los datos necesarios que concretan el aspecto visual del
objeto para la salida del “render”. De entre
o s la amplia variedad de datos que se
obtienen gracias a los vectores normales
el sombreado de la superficie de lai c
t podemos citar: el cómo ha de apreciarse
malla, el lado de texturización de las caras de
dicha superficie, los ángulos dedreflexión de los rayos de iluminación incidentes
R
sobre la superficie, los ángulosa de refracción de los rayos de luz que atraviesan la
superficie de un objetoEtraslúcido, el cálculo de los ángulos de especularidad en
relación al punto deD vista, el cálculo de la iluminación de las caras por su orientación
N
respecto de las fuentes de luz, los cálculos de la mayoría de efectos “shaders” que
E con el sistema de coordenadas tangente a la superficie en cada
uno de B
L
están relacionados
sus puntos (como los mapas bump y de normales, mapas especulares, etc.),
e incluso la eliminación de muchas caras (o lados de caras) en el cálculo también se
debe a la consideración de las normales y su comparación con otros vectores.
- )
r e
E y
u s
r c
p e
L u
-
L M
A
M
b y
s (
t o
i c
a d
E R
D
E N
B L
1.- Almacenamiento de Datos Básicos Geométricos y Topológicos de la Malla.
- )
Gestión Clásica de Datos:
Triángulo T0, r e
Vértice 1º
Triángulo T0, E yVértice 2º
Triángulo T0
u s Vértice 3º

r c
Triángulo T1,
Triángulo T1,
Vértice 1º
Vértice 2º
p… e
Triángulo T1, Vértice 3º
u
L Triángulo TN-1,

Vértice 1º
- Triángulo TN-1, Vértice 2º

L M Triángulo TN-1, Vértice 3º


A Gestión Indexada de Datos:
M Lista de Vértices: Lista de Caras:
b y V0 x0 y0 z0 T0 V1 V2 V0

s ( V1 x1 y1 z1 T1 V1 V3 V2

t o V2 x2 y2 z2
V3 x3 y3 z3
T2 V1 V4
T3 V1 V0
V3
V4
i c V4 x4 y4 z4
a d
• Una cara poligonal triangular (“Tris”) es siempre plana y convexa, por lo que a los “NGons” se les impone restricciones:
R
- Las aristas no pueden cortarse entre sí (cualquier polígono complejo puede construirse a base de polígonos simples).
E
D
- Los polígonos deben ser convexos (un polígono cóncavo puede, y debe, descomponerse en varios convexos).

E N
- Los polígonos no deben tener agujeros (no se podrían describir con un solo bucle cerrado y no serían convexos).
• “Tiras de triángulos”: Se definen los tres vértices del primer triángulo en sentido anti-horario y luego, cada triángulo
B L
siguiente toma como arista inicial la última del anterior triángulo con vértices en orden inverso y más el nuevo vértice.
• “Abanico de triángulos”: Se define cada triángulo comenzando por el vértice común y se sigue en sentido anti-horario.
• “Cuadriláteros” y “NGons”: El encaramiento de cualquier polígono de N lados se resuelve como tira o abanico de “Tris”.
2.- El Vector Normal a una Cara Triangular.
- )
En un espacio infinito como el que Blender pone a nuestra disposición en la escena, no están claros conceptos como
r e
dentro y fuera, o arriba y abajo, si no se referencian a algo. Por ejemplo, si queremos modelar un dado y el interior de

E y
una habitación, en ambos casos partiríamos de un cubo, pero para el dado las normales apuntarían hacia fuera
mientras que para la habitación lo harían hacia dentro. Si las normales no están bien calculadas los resultados pueden
u s
no ser los esperados en muchas ocasiones, por ejemplo al aplicar el modificador booleano, o al hacer el renderizado, ya
r c
que los cálculos efectuados serán erróneos debido a que la referencia también es errónea, y puede que Blender no
e
comunique ningún error y, simplemente, el resultado no sea el esperado, lo cual desconcierta mucho. También es muy
p
importante en la impresión 3D, ya podría interpretarlo como un agujero en la malla y estropear el modelo impreso.
u
L dicha, son necesarias para identificar
Aunque las normales no forman parte de la estructura de la malla propiamente
-
la orientación de las caras de una malla y afectan a muchas de las operaciones que se hacen con ella como ya se ha
dicho, por ejemplo: en el renderizado, es necesario excluir un lado
L Mde cada cara (normalmente el que es interior al
volumen que encierra la superficie de la malla) a fin de ahorrar A cálculos y tiempo de computación a la hora de aplicar la
textura, iluminar, sombrear sólo un lado, etc. M
b y
En el almacenamiento de los datos geométricos y topológicos de la malla, el orden en el que se dan los vértices al
s (
describir una cara (orden en sentido circular anti-horario) define la dirección positiva del vector normal según la “regla
del sacacorchos”
t
, o de “la mano derecha”o , y es lo que se denomina “encaramiento”.
El cálculo de la normal al plano de i cuna cara triangular puede ser útil, cuando los datos de la malla
poligonal se guarda sin datos ded
vectores: y R a las normales. Para calcular la normal a triángulo necesitamos sólo dos
. El producto vectorial, o producto cruzado, de estos dos vectores dará
E
la normal al plano del polígono triangular. El sentido direccional de dicho vector normal depende del
Den el producto vectorial o cruzado:
N
orden de los vectores
Lo normal esEque en la superficie de una malla, todas las normales de sus caras estén apuntando hacia dentro o hacia
L
B fruto del complejo y laborioso proceso de modelado puede terminar sucediendo que haya algunas caras
fuera, pero
que presenten su vector normal en dirección opuesta a la esperada. Si en una misma malla hay caras con normales
diferentes pueden dar errores, por ejemplo, con el modificador booleano que, en este caso, sí daría error.
3.- El Vector Normal a una Cara Cuadrangular y a un NGon.
- )
El cálculo del vector normal a una cara poligonal con más de tres vértices es un poco más complicado. A menudo,
tales polígonos no son perfectamente planos, por lo que si se sigue el procedimiento de las
r e
caras triangulares, pueden obtenerse diversos resultados diferentes dependiendo de qué
tres vértices se eligen. Si el polígono de la cara es un cuadrilátero, un buen método es tomar E y
el producto vectorial o cruzado de los dos vectores que se forman al tomar pares de vértices u s
r c
opuestos (los que conectarían las diagonales del cuadrilátero), como se muestra en la figura.

p e
Y al igual que en los triángulos, el sentido direccional de dicho vector normal depende del
orden de los vectores en el producto vectorial o cruzado por lo que se escogerá el orden que
coincida con el criterio de “encaramiento” con el orden de los vértices. L u
-
Para caras poligonales con más de cuatro vértices (“NGons”), puede ser difícil elegir los mejores vértices que se
L M
utilizarán para calcular el producto vectorial o cruzado. Lo mejor es intentar elegir vértices que estén los más alejados
A
unos de otros, si es posible, o bien el resultado medio de varios productos cruzados.
M
y la Malla.
4.- El Vector Normal en un Vértice de
b
s (
En mallas poligonales cada vértice suele ser compartido por múltiples triángulos (dos o más). ¿Cómo determinar el
vector normal para tal vértice? Podemoso copiar cada vértice compartido de tal manera que sea único para cada cara
t triangular a sus propios vértices. Esto conducirá a cambios visibles entre los
triángular, y asignar la normal de cadaccara
polígonos durante la iluminación dei las caras, lo cual puede ser un efecto deseable, o no, para todas ellas. Por ejemplo,
d
para la malla del cubo, cadaauna de sus caras tiene normales que son iguales a las normales de los dos triángulos
E
coplanarios que se obtienen R al dividir la cara del cubo por su diagonal y ello resultará en una igual iluminación de los
pixeles a ambos ladosD de la diagonal (arista invisibilizada del cuadrángulo) del “quad”; en cambio dos triángulos
adyacentes a una N arista del cubo (pertenecientes a distintas caras “quads” del cubo) requieren tener normales
E por cada cara en los dos vértices extremos de la arista común. Si no es deseable una diferencia visual
L
individualizadas
B entre polígonos, entonces las normales deben ser suavizadas (editar la propiedad “Smooth”).
del sombreado
Existen los siguientes métodos para calcular las normales suavizadas (el resultado debe normalizarse en todos los casos):
• Sumar las normales de todos los triángulos que comparten un vértice. N = N1 + N2 + N3.
Este método se utiliza con mayor frecuencia.
• Multiplicar la normal de cada triángulo por el área del triángulo apropiado. Y, a - )
continuación, sumar las normales de todos los triángulos que comparten el vértice.
r e
N = N1*A1 + N2*A2 + N3*A3. El área de un triángulo se calcula como la mitad del módulo
del producto vectorial o cruzado de las aristas de los triángulos. E y
u s
• Multiplicar la normal de cada triángulo por su ángulo adyacente al vértice. N = N1*q1 + N2*q2 + N3*q3. El ángulo se
r
calcula como arccos del producto punto de las aristas que son adyacentes al vértice. c
N = N1*A1*q1 + N2*A2*q2 + N3*A3*q3. p e
• Método combinado: Los valores normales son ponderados por las áreas de triángulos y ángulos adyacentes:

L u
- (“Smooth”).
5.- Teselación de la Superficie y Sombreado Suave
L M
Para suavizar el efecto de sombreado de un objeto, debe usarse la misma normal en un vértice dado para todos los
A
polígonos que comparten el vértice. La forma más sencilla de hacerlo es sumar todas las normales (normalizadas a
M
módulo=1) de las caras comunes y, a continuación, renormalizar el resultado. Esto proporciona resultados razonables
y
para las superficies que son bastante lisas, pero no se ve bien para las superficies con bordes afilados o duros.
b
Un objeto con una esquina aguda, como un cubo,
s ( debe tener un borde duro, en lugar de un borde suave. El ángulo
o un borde duro, pero algunos modelos se ven
entre los polígonos que deben producir un borde duro puede variar de un modelo a otro. Es bastante claro que un
t
c menos de 45°, mientras que otros se ven mejor con
borde de 90 grados siempre se debe considerar
mejor con bordes duros en ángulosi de
a d de 45°. Este parámetro en particular debe dejarse
bordes suaves para ángulos mayores
generalmente bajo controlR de usuario con un valor por defecto probable alrededor de 45°.

D E
Para determinar el ángulo θ° entre polígonos, tomar el producto escalar (“dot product”) de las
N
normales de las caras adyacentes a la arista común (que deben tener de módulo la unidad).
E
producto
L
Un producto escalar devuelve el coseno del ángulo entre los vectores. Por lo tanto, si el
B escalar de las dos normales es mayor que el coseno del ángulo del borde duro deseado, la arista debe
considerarse suave, de lo contrario debe considerarse dura. Para crear una arista dura, se genera una normal diferente a
cada lado de la arista. Asegúrese de mantener comunes las normales para el resto de aristass suaves de la superficie.

También podría gustarte