David digital, secuencia y superficie.

Cuando los hebreos llegaron a Canaán (o como se llamase ese “por ahí”) se establecieron sin una organización razonable. El pueblo le pidióa Samuel, su guía (juez, profeta…) que designe a un rey.Samuel los arengó con un discurso onda: ¿para qué quieren un rey? va a abusar de ustedes, a vivir de ustedes… perolos tipos insistieron;y ahí nomás ungió a Saúl (ungió = untó: le echó aceite en la cabeza). Por su parte, los muchachos que venían del mar, los filisteos, querían asentarse en las mismas tierras y se armó la trifulca;pero los tipos se pusieron de acuerdo en parar el derramamiento de sangre y resolver la disputa con una pelea entre los “campeones” de cada bando. Ahí viene la parte conocida: los filisteos mandaron a Goliat, una bestia enorme y los hebreos se cagaron en las patas;un pastorcito flacucho (que estaba ahí tipo aguatero) salió a enfrentarlo y lo bajó de un hondazo.

La honda era igualita a la de la foto, pero aquí se trata de un filisteo (filisteo: castellano→philistim: hebreo→palaestino: latín→palestino: castellano) tirándole piedras a algún hebreo que quiere asentarse en las mismas tierras. Cuando los conquistadores romanos se hartaron de las revoluciones judías (año 130, maso) los rajaron, rompieron el templo (sólo quedó el muro de los lamentos) y cambiaron el nombre de la provincia de Judea por SyriaPalaestina, es decir: Siria de los filisteos; sólo para cabrear a los judíos. Así llegamos, tres mil años después, a la misma guerra con la misma honda contra un adversario mucho más fuerte; sólo se invirtieron los roles.

Volviendo al tema: Saúl se llevó al heroico pastorcito a la corte para que le toque el arpa (y ninguna otra cosa; porque los hebreos querían distinguirse de los griegos pecadores que, entre otras cosas, corrían en bolas−gimnasia significa entrenar desnudo−y por eso llenaron la biblia con tanta moralina).

En otra batalla sangrienta murieron Saúl y suheredero. Entonces este muchacho músico (un Palito Ortega, digamos) fue ungido rey por el mismísimo Samuel y terminó haciendo lo que Samuel dijo que haría un rey, como ejemplo: mandó a un frente de batalla imposible al marido de la vecina que junaba bañándose; obviamente,se quedó con la mina y tuvieron un Salomoncito, entre otros críos.

La proeza militar de este pibe siempre fue usada como símbolo del débil venciendo al fuerte; la Iglesia y la política no lo ibana desaprovechar.Y así fue que un grupo de poderosos florentinos contratóa unjoven artista parahacer una escultura en su homenaje. AMichelangelo le salió de diez, un David virtual de mármol, mejor que el original, aunque desnudo terminó siendo más griego que hebreo. Lo representó con la honda al hombro y la piedra en la mano; pero, a contramano de la tradición, no puso la cabeza de Goliat a sus pies, lo representó dirigiéndose al combate.

Bueno, ahora la parte técnica:

Una pieza virtual en la computadora(no en el mármol) se define mediante una serie de números que representan cosas simples,y éstas, a su vez, conforman la pieza o modelo.Las cosas simples son triángulos y los números son coordenadas de los vértices y vectores perpendiculares, que permiten simular la iluminación. Con más númerosy operaciones se logra que la pieza se mueva y cambie la “textura” de la superficie. Con mayor esfuerzo y más técnicas se hacen cosas realmente menos serias.

Lo que vemos de las cosas es la superficie.Por más 3D que sean, son superficies (2D) y, encima, proyectadas planas en un display. En serio: ¡no vemos nunca volumen! Si cortamos una piedra, vemos una nueva superficie, nunca vemos 3D. Esa superficie, normalmente, se aproxima por medio de una malla de muchísimos triangulitos. Son muchos y chiquitos para representar mejor cada parte; total la que labura es la computadora.

El gobierno de Italia le dio permiso a la Universidad de Stanford para escanear el David, en el marco de un proyecto que se llamó “Digital Michelangelo Project”. Esos datos no son públicos (los tanos no te regalan su patrimonio así nomás) pero nos permitieron usarlos para esto, después de prometer que no los íbamos a usar para otros fines. De modo que los triángulos se los debemos a gente que los obtuvo con mucho equipamiento y muchísimo laburo posterior. El laburo posterior consistió en acomodar, en un mismo sistema de referencia, los trillones de puntos obtenidos y luego definir qué tres puntos formaban cada triángulo, finalmente descartar los que sobran (¿cuáles?). Ese laburo, obviamente, no es perfecto; no la embocás nunca para que todo coincida bien, sobre todo en las partes que no llegaste a escanear, como en los intrincados rulos, el interior de las orejas o cosas así. A los defectos muy visibles les hicimos cirugía cerebral, pero algunos quedaron y los podrías ver si mirás con mala onda.

En la primera parte de la presentación se recalca el material que conforma al David virtual:los triángulosy los pelitos perpendicularesen los vértices. Los vectores perpendiculares (normales, que le dicen) tienen color (R,G,B) de acuerdo a sus componentes (x,y,z); aquí se usaron para calcularla iluminación,paraquela superficie poliédrica de triangulitos se vea suave y, además, para mapear algunas aplicaciones de textura.El fuerte contraste de los horrendos azul y naranja permite ver inmediatamente los defectos; los colores fueron elegidos por y para eso.

El recorte inferior sin tapar (a propósito) y los cortes planos (clipping planes) que se hacen después, pretenden recalcan el carácter de “superficie” de la cosa 3D.

Lo que sigue son cambios de textura, tanto “pegada” como “reflejada”, y algún truco con el canal Alpha-un número que “viaja” con el color (R,G,B,“A”)eindica opacidad-para hacer invisibles algunas partes.

Como suele hacerse con las obras de arte:

El material utilizado para la obra consiste en electrones moviéndose dentro deuna computadora de 64 bits,con cámara. Los datos de la escultura fueron gentilmente cedidos por el Prof. Marc Levoy de Stanford y las imágenes de textura fueron tomadas sin permiso de la web. La técnica empleada es C++; utilizando meshsuite, OpenGL, OpenCV y Qt. Meshsuite es una bibliotecay un programa desarrollado en Santa Fe, primero en el CIMEC (CONICET) y luego en la FICH (UNL) y que sirve para generar, manipular y modificar mallas 2D (triángulos y otros polígonos) o 3D (tetraedros y otros poliedros). OpenGL se utilizó para el “renderizado”; es decir la visualización, iluminación y textura que se ejecuta en la “placa gráfica” o GPU de la computadora. OpenCV se usó para la decodificación de las imágenes (texturas) y el video. Finalmente, Qt es la GUI o interfaz gráfica con el usuario; que en este caso no se utiliza mucho, porque el programa labura solo, ejecutando un script permanente; pero es el que permite manejar los tiempos y abrir una ventana para OpenGL, disparando los dibujos con cada cambio.La cirugía cerebral previa se hizo,en general, con meshsuite; aunque algunos grupos muy retorcidos de triángulos debieron recortarse con AutoCAD para rellenar luego con meshsuite.

Las texturas de reflejo son todos mapeos esféricos automáticos: cada píxel de la imagen de textura (téxel) se obtiene primero de acuerdo a donde apunta la normal y después por interpolación bilineal (linear) de los téxeles de alrededor; eso lo hace OpenGL. Las texturas “pegadas” se hicieron con un mapeo cilíndrico programado; sin interpolación bilineal (nearest) cuando hay partes invisibles (la interpolación ahí jode) y con interpolación cuando no hay.El descarte de las partes invisibles lo hace OpenGL con un alpha-test.

La secuencia (loop) comienza cuando la cámara detecta un observador (o un gato que pasaba); eso se hizo con OpenCV, pero se programó simple, sin usar las complejas rutinas de detección que trae.

Prof. Nestor Calvo.

8 meses ago