Y la luz se hizo

¿Por qué vemos un objeto? Esta es la clase de pregunta que generalmente, solo los niños y los físicos se hacen, debido a que parece que la respuesta es obvia, partiremos de ahí, para explicar cómo se genera una imagen por computadora.

Artículo publicado en la desaparecida revista "Posibilidades Amiga" publicada por Chepe Nicolli en 1993, como una explicación de cómo funcionan los programas de animación. Las bases generales siguen siendo las mismas, solo que en lugar de MS-DOS y Windows 3.11, ahora usamos Windows 10, MacPro o render farms, con máquinas miles de veces más rápidas. Nota: el articulo original tenia algunos errores de concepto ya corregidos o anotados.

¿Por qué vemos un objeto? Esta es la clase de pregunta que generalmente, solo los niños y los físicos se hacen, debido a que parece que la respuesta es obvia, pero ¿lo es? Sabemos que vemos los objetos porque la luz de una fuente se refleja en su superficie y de ahí va a nuestra retina. En realidad no es tan simple.

Cuando un rayo de luz llega a una superficie, pueden pasar varias cosas:

  1. Es absorbida parcialmente y otra reflejada.
  2. Es absorbida y reflejada en otro color.
  3. Es reflejada en la superficie.
  4. Atraviesa la superficie y es reflejada desde el interior.
  5. Atraviesa la superficie, se deforma y se refleja.

Y para complicarnos la vida, las tres cosas pueden pasar al mismo tiempo. Todo eso afecta cómo vemos el objeto. Toda la tecnología actual de animación por computadora está basada en poder estudiar estos detalles, y tener un realismo tal, que nos haga creíbles esos mundos virtuales.

La absorción es responsable del color del material, al segundo fenómeno lo llamamos reflexión y es lo que nos permite ver al objeto, y el tercer fenómeno es la refracción.

Los griegos y los algoritmos...

Los griegos creían que al fijar la vista en un objeto, una especie de rayos salían de nuestros ojos y la forma en que rebotaban esos rayos era lo que nos permitía ver. ¿Les suena tonto? Pues así es exactamente como funciona una de las técnicas de generación de imágenes tridimensionales más realistas: "Ray tracing".

Los programas Ray Trace siguen la trayectoria de cada rayo de luz como si salieran del ojo del observador, y aplican las leyes de la física a cada una de las interacciones del rayo con la escena, en sentido inverso a como ocurre en la naturaleza. Esto requiere de numerosos cálculos para cada píxel de la pantalla y la exactitud de la escena está limitada solo por el tiempo de cómputo disponible.

A jugar

¿Quieres experimentar? Los programas más populares de animación actualmente son 3D Studio, Maya, LightWave, pero no son los únicos. Sin embargo, pueden ser un poco caros. Afortunadamente, existe un software libre que se llama Blender (http://www.blender.org/), con el que se pueden obtener trabajos de nivel profesional, aunque con un poco más de trabajo.

Puede crear un objeto, asignarle una superficie y listo. ¡A jugar! Por razones históricas, casi todos los programas de animación incluyen una tetera... y se espera que el novato sea con lo primero que juegue. Así que búsquenla y abran las características de superficie.

Generalmente vamos a trabajar en medio de estos dos extremos, así que volvamos a la tetera y hagámosla 100% brillante y 100% reflejante: ahora tendremos una hermosa tetera de loza. Estas son las dos maneras de reflejar la luz. Todos los objetos reflejan una parte de la luz y dispersan la otra.

Antes de seguir leyendo, mire los objetos a su alrededor, trate de clasificar y evaluar las propiedades de cada objeto y comience a hacer una lista. Por ejemplo, la madera es bastante mate y poco reflejante, pero la madera laqueada o barnizada es bastante reflejante y un poco mate; los plásticos lisos son mates y reflejantes. Intente darle valores numéricos, comparándolos con objetos creados en el programa que utilice.

¿Qué sucede con la luz que atraviesa la superficie del objeto? Imagine lo que es pasar repentinamente de un material gaseoso como el aire a un objeto sólido como el cristal. La luz no puede viajar a la misma velocidad en los dos medios; al pasar de uno a otro, el cambio de velocidad produce un cambio de dirección. ¿Ha observado los objetos en el fondo de un estanque? Si trata de tomarlos, nunca están donde se ven: la luz se desvía. Si además la superficie es curva, como en un lente, la luz viaja en distintas direcciones, deformando lo que vemos a través del objeto. Por esto podemos ver algo transparente: por la forma en que deforma la luz que lo atraviesa (además de que siempre refleja un poco; el vidrio refleja un 4% de la luz incidente).

A la relación de la velocidad de la luz en el vacío y la velocidad en un medio determinado se le llama índice de refracción. Por ejemplo, el índice de refracción del agua es de 1.33 y el del vidrio varía de 1.5 a 1.9.

Así que si usted desea crear un elixir para volverse invisible, recuerde que no es suficiente con volverse transparente: es necesario tener el mismo índice de refracción que el aire. Y para complicarle la vida aún más a nuestro rayo de luz, cada color puede desviarse en distinto ángulo. Para un fabricante de lentes, esto es una tragedia, puesto que las imágenes vistas a través del lente tendrán un halo de color, pero también es lo que nos permite ver el arcoíris que produce un prisma o las gotas de lluvia en la atmósfera.

(Nota: En la actualidad, Blender se ha convertido en uno de los programas más potentes y versátiles para renderizado, animación y modelado 3D, ampliamente adoptado en la industria independiente y educativa.)

Reflejos

Generalmente se requiere usar "Ray Trace" para reproducir el efecto de la refracción y del reflejo tipo espejo. Ya que los programas que se basan exclusivamente en Phong no siguen los rayos individuales de luz, solo pueden simular la reflexión tipo espejo a través de lo que se llaman mapas de reflexión, es decir, que no pueden reflejar los elementos de la misma escena. Para producir las sombras deben utilizar una técnica de Ray Trace simplificada, lo que implica mayor cantidad de cálculos por cada fuente de luz que tenga nuestra escena. Por esta razón, la mayor parte del trabajo de animación tridimensional no usa sombras.
(Nota: Hoy en día, gracias al aumento en potencia de cómputo y a los motores de render como Cycles o Arnold, el uso de sombras y reflejos realistas es común en producción profesional.)

Sin embargo, aún no es suficiente. Con las propiedades que acabamos de describir podemos simular cualquier material, pero aún hace falta cierto realismo y existen aún algunos fenómenos que no hemos considerado, como polarización, refracción, interferencia y fluorescencia. Además, en el mundo real los objetos no son puros: son de varios colores y materiales, están rayados, tienen arrugas, están sucios o están mal pulidos. Por eso, para poder dar más realismo a nuestro universo tridimensional tenemos que recurrir a lo que llamamos mapas, radiosidad, vóxeles y otros "bichos raros", pero eso es otra historia.

Notas sobre teoría del color

Si usted es como yo, que si no es con la computadora no dibuja una línea, al tratar de mezclar pinturas se va a ver en problemas. En primer lugar, en pintura (o para ser más técnicos, pigmentos) los primarios son cian, amarillo y magenta (CMY), y al mezclar los tres primarios no va a obtener blanco sino un tono gris. Mientras más puros sean los colores, será un gris más oscuro. (Debido a que nunca llega a negro, es necesario contar con este color como pigmento para poder tener toda la gama de colores.)

Mientras tanto, los pintores que manejan la computadora por primera vez tienen el problema inverso: al trabajar con luz, los primarios son rojo, verde y azul. Si aún está escéptico, tome una lupa y vea el monitor de la computadora o una pantalla de televisión; cada punto o píxel de pantalla está dividido en tres puntos de color. Nosotros pintamos con luz, ellos con pigmento. En un caso la luz se suma, y en el otro se resta.

¿Qué pasa en nuestro universo 3D simulado con los colores? Si iluminamos con luz roja un objeto cian, el objeto se ve negro, porque un objeto cian es el que absorbe el rojo. Por supuesto que en la naturaleza no existen objetos de colores puros, pero en nuestro universo sintético podemos tener objetos ideales y colores puros. Si la iluminación no le da los colores que usted desea, revise la teoría del color para ver qué está pasando y trate de evitar utilizar luces de colores primarios puros.

(Nota: En animación y gráficos modernos, los motores de render incluyen modelos de color más complejos como HSV, Lab y perfiles ICC para obtener resultados más precisos. Sin embargo, la explicación RGB/CMY sigue siendo una base esencial.)

Por supuesto que se ha tratado de simplificar el proceso, ¿por qué trabajar píxel por píxel?, si podemos proyectar cada plano a la pantalla bidimensional, de la misma manera que un arquitecto hace una perspectiva.

Los primeros programas de animación y generación de imagen utilizaban modelos de líneas, llamados "WireFrame", pero ver todas las líneas de un objeto era muy confuso por lo que se desarrollaron programas para remover las líneas escondidas. Posteriormente se pasó a modelos de superficies planas, sin embargo, estos programas hacían que los objetos se vieran facetados, así que para dar continuidad en las superficies y dar la ilusión de superficies curvas, se desarrollaron algoritmos de sombreado que interpolan las caras del modelo. Sin necesidad de tener que crear muchas facetas podemos tener superficies lisas y curvas.

Dos de los algoritmos más populares son los de Gouraud y Phong, pero no son los únicos. Así que cuando vemos una superficie curva generada en computadora, en realidad está formada por muchos polígonos planos, suavizados por un algoritmo.

El primer algoritmo es más sencillo y más rápido, pero presenta ciertos problemas en las superficies convexas. En cambio, el algoritmo Phong nos permite un manejo más elaborado de luces y texturas. Algunos programas como LightWave y Sculpt 3D, solo trabajan con Phong y otros programas como "3D Studio" permiten calcular algunos objetos con Phong y otros con Gouraud.

En resumen, los programas que trabajan con Ray Trace son más lentos, pero permiten manejos de sombras, transparencias y refracciones que no se pueden lograr usando exclusivamente los algoritmos Phong y Gouraud. Existen programas que utilizan mezclas de estas dos técnicas.

De dónde sale el color

Para entender qué pueden hacer por nosotros estos programas, regresemos a nuestra clase de física.

Empecemos por recordar que la luz blanca es una mezcla de todos los colores. Afortunadamente podemos simplificar un poco y hacer una convincente luz blanca, mezclando solo el rojo, el verde y el azul. Así que tomemos nuestro rayo de tres colores y, al dirigirlo a una superficie, parte de la luz es absorbida y cada color responde distinto en cada material, y esto nos da el fenómeno que llamamos color. Si el objeto solo absorbe el rojo, nosotros vemos la superficie como una mezcla de verde y azul, es decir ¡amarillo!
(Nota: en realidad, verde + azul da cian; el amarillo se forma con rojo + verde. Esta parte se conserva como fue escrita originalmente, pero puede inducir a error.)

¿No me cree? Cargue su programa de dibujo favorito, y en la opción de modificar paleta tome un blanco, quítele el componente rojo y ya verá. De nuevo tomemos el blanco y quitémosle el verde: lo que nos da cian. Finalmente, regresemos al blanco y quitémosle el azul para obtener el magenta. (¿Los reconoce? Estos son los tres colores primarios en pigmentos, mientras que rojo, verde y azul son los tres primarios en luz). Todos los objetos absorben parte de la luz que reciben; si la absorbieran toda, los veríamos como hoyos negros, pero ningún objeto es perfecto y siempre vemos algo. (Si se siente confundido, vea la nota sobre teoría del color.)

Metal, hule o vidrio

¿Qué pasa con el resto de la luz? Parte es reflejada. Si la superficie es perfectamente lisa, la luz simplemente rebota. Existe una ley física que nos dice que el ángulo de la luz incidente es igual al ángulo de la luz reflejada. Sin embargo, no existen superficies 100% lisas; todas tienen rugosidades a nivel microscópico, funcionando como millones de facetas. Cuando la luz incide sobre ellas, se dispersa, es decir, rebota en todas direcciones. En este caso, la intensidad de la luz reflejada es "proporcional al ángulo de incidencia".
(Nota: esta afirmación es una simplificación. La intensidad depende también del índice de refracción y del tipo de superficie.)

El primer caso corresponde a superficies como los espejos o el metal pulido. Las superficies pueden verse gracias a la luz que reflejan, pero si ponemos un objeto en un fondo negro y lo iluminamos, solo se refleja el punto de luz de nuestra lámpara. Si usted tiene LightWave, tome el objeto llamado ChromeTeapot y modifique la textura del objeto a 100% especular y 0% mate. (Si tiene Sculpt, fabrique una esfera blanca y dele textura de espejo.) Coloque una luz y calcule la imagen. Tendrá la imagen de algunos puntos de luz, y el resto del objeto será casi invisible. Ningún objeto es 100% reflejante: la plata tiene el récord, reflejando alrededor del 95% de la luz incidente.

El segundo tipo de efecto es lo que llamamos superficies mates. Ahora tome su "mouse pad" (¿no usa?, su ratón se lo agradecería mucho) y vea la superficie de esponja de abajo. Si usted la inclina con respecto a la fuente de luz que tenga, la intensidad de la superficie cambia en relación al ángulo de la luz, pero si usted se mueve (claro, sin hacerle sombra), la intensidad de la luz sobre el objeto no cambia. Volvamos a nuestra tetera (o nuestra esfera) y pongamos la superficie a café, 100% mate y 0% especular (o pida superficie mate). Al calcular la imagen se obtiene la apariencia de una tetera de barro. No hay brillos, pero podemos ver la tetera perfectamente.