May 12th, 2007

Hasta ahora la forma de dar color a las primitivas en OpenGL era mediante el llamado a glColor3f() con la que se puede lograr que cada vértice tenga un color y OpenGL se encarga de difuminar este a través de la primitiva que se esté construyendo.

Este tutorial muestra el uso de la iluminación “clásica” en OpenGL (fixed function pipeline) y de la asignación de materiales (color materials) a las superficies. Aún no se tocará el tema de texturas ni de per-pixel lighting que espero revisar en tutoriales posteriores. Como referente es buena idea revisar algún libro o artículo donde se trate la teoría del color, nada muy complicado, con el fin de entender como opera el modelo de color e iluminación en OpenGL y en general las técnicas de CG.

La iluminación en OpenGL está dada por dos componentes, la superficie del objeto, que es asignada a las primitivas y un conjunto de luces “globales” que interactúan con las superficies para dar el aspecto final a los objetos. Tanto en las luces como en la superficie es necesario especificar 3 parámetros: ambiental, difuso y brillo. En el caso de la luz, los parámetros se refieren a la emisión y en el caso de la superficie a la absorción.

COLOR

El color es parte de cada componente, tanto de luz como de superficie. Tanto en la realidad como en OpenGL las fuentes de luz pueden tener todas las componentes de colores (luz blanca), solo algunas (luz de colores) o ninguna, que no tiene ningún paralelo real. En el caso de OpenGL estas componentes son especificadas en la tripleta RGB de siempre.

Para el caso de la superficie se especifica el color que la superficie mostraría en presencia de una luz blanca, aunque en el caso de OpenGL el color de cada componente de superficies es multiplicado por el de la luz para obtener el color resultante.

En el caso de OpenGL el color es una propiedad que se especifica vértice por vértice mediante el llamado de glColor() , el color correspondiente a una textura o el producto de un procesado tipo pex-pixel sobre la superficie de un modelo. Este segmento de código, insertado en la función de render, por ejemplo:
Continuar Leyendo… »

May 7th, 2007

Madlix es otro intento de traer el 3d a la web (ya he perdido la cuenta de cuantos he visto). En este caso bajo la combinación java - OpenGL - Collada y con un estilo bastante parecido al de youtube, en el cual se puede subir contenido 3d para mostrárselo a todo el mundo y también se puede mostrar en blogs, foros y demás, insertando un pequeño applet “player” como el que se ve abajo, con un autobus.

Por ahora y como muchos otros servicios “raros” de la web 2.0 se encuentra en beta. Posee un visor standalone y un exporter para maya, que es aparentemente la única forma de subir contenido por el momento. Soporta archivos .dae (collada), .mlx (formato propio) y zip (?), aunque en realidad he estado haciendo algunos intentos que no han funcionado con el exporter de blender (collada 1.3 y 1.4 creo). El tiempo dirá si este servicio se hunde como muchos o triunfa como pocos, por ahora pueden visitar la página http://www.madlix.com/ y ver algo del contenido que ofrecen.