El producto punto y el efecto de volumen 3D
Publicado: el 8 febrero, 2017 por AdminKonrad / Konrad Lorenz
En esta entrada veremos cómo esta simple operación vectorial se convierte en una muy útil herramienta a la hora de crear el efecto de volumen en objetos 3D.
Primero veamos unos conceptos básicos acerca de los gráficos generados por computador.
Un modelo 3D, también conocido como modelo poligonal, es un conjunto de puntos o vértices, aristas y caras en el espacio euclideo.
De esta manera, los vértices son puntos con coordenadas x,y,z. La unión entre dos vértices es una arista y las caras son las superficies internas definidas por un camino cerrado de 3 aristas.
A su vez, cada cara tiene asignado un vector orto-normal al plano interno de la cara, que por el momento, solo llamaremos la Normal.
Recordemos que todo lo que vemos en los monitores son pixeles, en este caso el programa 3D le asigna a todos los pixeles la normal de la cara en la que ellos se encuentren. Adicional a esto cada pixel puede representar un color, el cual utiliza un formato llamado RGB (Red, Green, Blue); bajo este formato podemos representar una amplia gama de colores, donde cada entrada puede pertenecer a [0, 1]. Es decir que el negro en RGB es R=0, G=0, B=0, el blanco es R=1, G=1, B=1 y cualquier otra combinación genera todos los colores que conocemos.
Por el momento, estas son todas las estructuras necesarias para hacer modelos 3D por computadora tan increíbles como este.
Imagen 3.
Veamos ahora cómo con estas estructuras, y con la ayuda del producto punto, podemos engañar al ojo humano y darle la ilusión de que algo visto en la superficie plana de un monitor, aparente tener volumen.
Para este ejercicio usaremos una simple esfera. A continuación podemos observar su representación poligonal más básica.
Imagen 4.
Sí, aunque en este momento no parezca, esta es una esfera con coordenadas x = y = z = 0, a la cual solo le hemos dicho que sea de color rojo es decir R=1, G=0, B=0.
Ahora debemos crear una luz en el escenario y para ello solo nos interesa definir en qué posición del espacio se encuentra, así que digamos que sus coordenadas son x=10, y=10, z=0.
Pero, ¿cómo podemos hacer que nuestra esfera “reaccione” a la nueva luz? Aquí es donde comienza a entrar en acción la Normal. Ya que cada punto en la esfera tiene asociado una normal fijémonos en los siguientes puntos y sus respectivas normales.
Imagen 5.
Pues bien, recordemos que el producto punto entre dos vectores normalizados también nos indica qué tan “paralelos” son en un rango de [-1, 1] en donde:
Imagen 6.
-1 son paralelos pero su dirección es opuesta
Imagen 7.
0 son ortogonales
Imagen 8.
1 son paralelos y su dirección es la misma
En ese orden de ideas si definimos una posición para nuestra luz, la podemos usar para tener un vector dirección que nos indique desde dónde viene la luz y así hacer el producto punto entre la Normal y la dirección.
Imagen 9.
De esta manera, podemos tener una función para el color de la superficie:
Aplicando esta sencilla función a cada punto de la superficie obtenemos la iluminación deseada.
Imagen 10.
Veamos ahora la misma función aplicada sobre un objeto 3D un poco más complejo.
Imagen 11.
Evidentemente, esta es solo la punta del iceberg en cuanto a la creación de los efectos sobre la superficie de modelos 3D. Actualmente es un campo de investigación cuyo objetivo es crear efectos tan realistas que el ojo humano no sepa distinguir entre realidad y 3D, todo esto usando álgebra lineal, cálculo vectorial, ecuaciones diferenciales y física de la luz solo por nombrar algunos campos de conocimiento. Para una muestra, a continuación se puede ver un video sobre el futuro de los gráficos para juegos.
https://www.youtube.com/watch?v=fBR4cT-0sKY
[Imagen 1] URL: http://what-when-how.com/digital-sculpting-with-mudbox/a-3d-primer-introduction-to-mudbox-digital-sculpting-with-mudbox/
[Imagen 2] URL: http://help.autodesk.com/cloudhelp/2015/ENU/AutoCAD-Core/images/GUID-D3063913-D3CC-43CD-B8FC-C8750B4A4144.png
[Imagen 3] URL: https://www.thegnomonworkshop.com/tutorials/creating-hyper-realistic-characters-in-zbrush
Autor:
Juan Camilo Acosta
Estudiante de Matemáticas
Fundación Universitaria Konrad Lorenz