SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2....

48
POLIGONAL DISEÑO DE UN VISUALIZADOR TRIDIMENSIONAL 5º Curso. Facultad de Informática AUTOR: Juan Luis Aragón Alcaraz TUTOR: Isidro Verdú Conesa Diciembre de 1996 Universidad de Murcia SISTEMAS Y PROYECTOS INFORMÁTICOS

Transcript of SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2....

Page 1: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

POLIGONAL

DISEÑO DE UN

VISUALIZADOR

TRIDIMENSIONAL

5º Curso. Facultad de Informática

AUTOR: Juan Luis Aragón Alcaraz

TUTOR: Isidro Verdú Conesa

Diciembre de 1996

Universidad de Murcia

SISTEMAS Y PROYECTOSINFORMÁTICOS

Page 2: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Resumen 2

RESUMEN:

El objetivo de este proyecto es la construcción de un visualizador

poligonal tridimensional para la síntesis de imágenes realistas. El

visualizador incluye: almacenamiento de escenas poligonales de tamaño

ilimitado (según la capacidad del ordenador), modelos de iluminación

difuso, especular y el modelo de iluminación de Blinn, sombreado

alámbrico, constante, Gouraud y Phong, múltiples focos de luz, focos

puntuales y direccionales, generación de sombras, manipulación de

objetos transparentes, aplicación de texturas tridimensionales y texturas

por mapeado sobre un objeto formado por un número variable de

polígonos. Para permitir la reutilización de parte del software

construido, muchas de las funciones gráficas implementadas se han

agrupado en librerías, aportando un conjunto de instrucciones básicas

para la creación de otros visualizadores. Finalmente, se ha desarrollado

un sencillo interfaz gráfico para facilitar el trabajo con el visualizador.

Page 3: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Indice 3

INDICE.

1. ANÁLISIS DE OBJETIVOS Y METODOLOGÍA. .............................................. 5

2. INTRODUCCIÓN Y REFERENCIAS HISTÓRICAS. ........................................ 6

3. DESARROLLO..................................................................................................... 8

3.1 EL PROCESO DE VISUALIZACIÓN TRIDIMENSIONAL...................................8

3.1.1 TIPOS DE PROYECCIONES. ..............................................................................9

3.1.2 ESPECIFICACIÓN DE UNA VISTA 3D GENERAL ARBITRARIA. ................10

3.1.3 TRANSFORMACIÓN DE NORMALIZACIÓN..................................................12

3.2 MÉTODOS DE DETECCIÓN DE SUPERFICIES VISIBLES. .............................14

3.2.1 DETECCIÓN DE CARAS POSTERIORES. .......................................................14

3.2.2 MÉTODO DE BUFFER DE PROFUNDIDAD (BUFFER Z)...............................15

3.2.3 MÉTODO DE BUFFER A...................................................................................16

3.2.4 MÉTODO DE LÍNEA DE RASTREO.................................................................17

3.3 TÉCNICAS DE SOMBREADO E ILUMINACIÓN................................................18

3.3.1 FUENTES DE LUZ. ............................................................................................19

3.3.2 MODELOS DE ILUMINACIÓN.........................................................................213.3.2.1 MODELO DE ILUMINACIÓN AMBIENTAL.......................................................... 213.3.2.2 REFLEXIÓN DIFUSA. ........................................................................................... 213.3.2.3 REFLEXIÓN ESPECULAR. MODELO DE ILUMINACIÓN DE PHONG. .............. 223.3.2.4 MODELO DE ILUMINACIÓN DE BLINN.............................................................. 23

3.3.3 ATENUACIÓN DE LA INTENSIDAD DE UNA FUENTE DE LUZ. .................25

3.3.4 MÚLTIPLES FOCOS DE LUZ. ..........................................................................25

3.3.5 MODELOS DE SOMBREADO...........................................................................253.3.5.1 MODELO DE SOMBREADO CONSTANTE. .......................................................... 263.3.5.2 MODELO DE SOMBREADO DE GOURAUD........................................................ 263.3.5.3 MODELO DE SOMBREADO DE PHONG. ............................................................ 27

3.3.6 TRANSPARENCIAS. .........................................................................................27

3.3.7 SOMBRAS. .........................................................................................................29

3.3.8 TEXTURAS DE SUPERFICIE............................................................................293.3.8.1 TEXTURAS DE COLOR. ........................................................................................ 29

3.3.8.1.1 TEXTURAS DE COLOR 3D. ..........................................................................................303.3.8.1.2 TEXTURAS DE COLOR 2D. ..........................................................................................30

3.3.8.2 TEXTURAS DE PROTUBERANCIAS. .................................................................... 31

3.4 MODELOS DE COLOR...........................................................................................32

3.4.1 MODELO DE COLOR XYZ. ..............................................................................32

3.4.2 MODELO DE COLOR RGB. ..............................................................................33

4. DISEÑO.............................................................................................................. 34

4.1 ESTRUCTURA DE LA LIBRERÍA. MÓDULOS. ..................................................34

4.2 REPRESENTACIÓN INTERNA DE LOS OBJETOS............................................38

Page 4: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Indice 4

4.3 ESPECIFICACIÓN DE UN MATERIAL................................................................40

4.4 FORMATO DEL FICHERO DE ENTRADA..........................................................42

4.4.1 FICHERO DE ESCENA......................................................................................43

4.4.2 FICHERO DE MATERIALES.............................................................................44

4.5 TÉCNICAS DE OSCILACIÓN. ...............................................................................45

4.6 DISEÑO DEL ENTORNO GRÁFICO.....................................................................46

4.7 CONVERSOR DE FICHEROS DE 3D STUDIO.................................................46

5. CONCLUSIONES Y VÍAS FUTURAS............................................................... 47

6. BIBLIOGRAFÍA. ............................................................................................... 48

Page 5: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Análisis de Objetivos 5

1. ANÁLISIS DE OBJETIVOS Y METODOLOGÍA.

Los objetivos de este proyecto son los siguientes:

1. Diseño e implementación de una librería gráfica para la manipulación y visualizaciónrealista de escenas tridimensionales poligonales, diseñada bajo los principios deextensibilidad y reutilización.

2. Construcción de un visualizador para la síntesis de escenas poligonales realistas.

3. Construcción de un interfaz gráfico para facilitar el manejo del visualizador.

La metodología utilizada ha sido:

En el diseño de la librería se ha seguido una metodología de diseño ascendente obottom-up. Todos los módulos de la librería, así como el visualizador, han sido programados enlenguaje C estándar (el original presentado por Kernighan y Ritchie). Con ello se ha pretendidoque la librería sea portable. Por este motivo, se puede compilar bajo cualquier sistema operativoen el que se disponga de un compilador de C estándar. Así, se puede compilar tanto enordenadores PC bajo el sistema operativo MS-DOS o Linux, como en estaciones de trabajo Unix(esta es la opción recomendada). La librería ha sido compilada y ha sido probado su perfectofuncionamiento, con el compilador para MS-DOS de Borland, Turbo C++ 3.0, con elcompilador C de las estaciones de trabajo SparcStation de Sun MicroSystems que los alumnosdisponen en la sala de proyectos de la facultad, así como con el compilador C de Linux.

Por último, en la realización del entorno gráfico, se han utilizado las siguientes libreríasgráficas de propósito general:

1. Las librerías gráficas de Borland, más conocidas como BGI (Borland GraphicsInterface), para la versión bajo MS-DOS.

2. La librería gráfica de propósito general XView, de Sun MicroSystems, para laversión en estaciones de trabajo Unix.

Page 6: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Introducción 6

2. INTRODUCCIÓN Y REFERENCIAS HISTÓRICAS.

Cuando se modela y visualiza una vista tridimensional, se deben hacer muchas másconsideraciones que para el caso bidimensional, aparte de incluir sólo valores para la terceradimensión. Se pueden crear las fronteras de los objetos con varias combinaciones de superficiesplanas y en ocasiones también curvas. Además muchas transformaciones geométricas secomprenden mucho mejor en un espacio tridimensional que en uno de dos dimensiones. Pero lastransformaciones en tres dimensiones son más complicadas porque se tienen que seleccionarmuchos más parámetros para visualizar una escena en una pantalla, o cualquier otro dispositivo,en dos dimensiones. Por último también es necesario aplicar algoritmos de sombreado eiluminación si se quiere obtener una imagen más realista de la escena.

Para conseguir la visualización tridimensional de una escena que se modeló encoordenadas mundiales, primero se debe establecer una referencia de coordenadas para lacámara. Esta referencia de coordenadas, denominada especificación de una vista 3D, define laposición y orientación de un plano de proyección que es el que se va a utilizar a la hora devisulizar la escena. De esta manera se convierten las descripciones de los objetos tridimensionalesa las coordenadas de referencia de la cámara y se proyectan sobre el plano de visualizaciónseleccionado. Este proceso de conversión, en realidad, está formado por una serie de subprocesosencadenados, y que forman lo que se conoce como tubería de visualización de una escenatridimensional.

Tras esta proyección se pueden aplicar técnicas de sombreado e iluminación paraconseguir los deseados efectos de apariencia realista. En primer lugar se aplica un algoritmo dedetección de superficies visibles, que determina qué puntos de cada una de las superficies queintegran la escena, son visibles desde el punto de vista del observador, puesto que puede ocurrirque haya superficies que tapen a otras que queden más lejanas (siempre hablando en el sistema dereferencia del observador).

Una vez que se sabe con certeza qué puntos de la superficie son visibles, sólo quedaobtener el color con el que se percibe dicha superficie. Para conseguir una imagen realista hayque aplicar efectos de iluminación natural en las superficies visibles. Esto se consigue con el usode los modelos de iluminación y los modelos de sombreado. Un modelo de iluminación, tambiénllamado de alumbrado, se utiliza para calcular el color o intensidad de la luz que se percibe desdeun punto determinado de la superficie de un objeto. Un modelo de sombreado, emplea loscálculos de intensidad hallados por un modelo de iluminación para determinar la intensidad de laluz en los puntos proyectados para las diversas superficies en una escena. Destacar que, aparte delos modelos de iluminación básicos, se ha incluido un modelo de iluminación avanzado, quetrabaja con las propiedades físicas de los materiales, y que permite la generación realista demetales y dieléctricos.

A la hora de iluminar las superficies de una escena, son necesarios unos elementosimprescindibles, como son las fuentes de emisión de luz. Cuando se observa un objeto opaco noluminoso, en realidad lo que se percibe es la luz que se refleja en las superficies de dicho objeto.La luz reflejada total es la suma de las contribuciones de todas las fuentes de luz y otrassuperficies reflectantes en la escena. En este proyecto sólo se han tenido en cuenta las fuentes deemisión de luz y no las fuentes de reflexión de luz. Otro dato es, que se permite el manejo demúltiples fuentes de luz. Los tres tipos de fuentes de luz implementados son: luz ambiental, lucespuntuales y luces cónicas dirigidas,

En general, las superficies no tienen por qué ser opacas, sino que pueden sertransparentes o semitransparentes. Una superficie transparente produce tanto luz reflejada

Page 7: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Introducción 7

como luz transmitida. En este proyecto se ha seguido un planteamiento para modelar lastransparencias que ignora el fenómeno de la refracción. Aunque la transparencia sin refracción noes lo más realista, a menudo puede ser un efecto útil. Por ejemplo, puede proporcionar una visiónsin distorsión a través de una superficie.

Otro factor a tener en cuenta para conseguir escenas de apariencia realista, es lageneración de sombras. Cuando una superficie se interpone entre un foco de luz y otra superficie,sobre ésta última aparece lo que se conoce como una zona de sombra, causada porque los puntosde esa región no son iluminados por el foco. Los algoritmos de detección de superficies visiblesdeterminan qué superficies pueden ser vistas desde el punto de vista del observador; losalgoritmos de sombras determinan qué superficies pueden ser vistas desde el punto de vista de lasfuentes de luz. Por lo tanto ambos tipos de algoritmos son esencialmente los mismos. Lassuperficies que son vistas por la fuente de luz no están en sombra, mientras que aquellas que nolo son, sí están en sombra.

También se ha tratado uno de los efectos más realistas que se conocen, la aplicación detexturas de superficie. Las técnicas comentadas hasta ahora permiten visualizar superficiessuaves, pero la mayor parte de los objetos no tienen superficies suaves, relucientes y regulares; larealidad es irregular e imperfecta. Las texturas de superficie permiten añadir de forma sencilla,detalles que serían muy complejos de modelar a base de polígonos. En este proyecto se hanimplementado los siguientes tipos de texturas:

• Texturas de color, que producen variaciones en el color de la superficie. Se puededistinguir entre:

1. texturas de color 3D o texturas procedurales,

2. texturas de color 2D o de mapas de bits.

• Texturas de protuberancias, que producen variaciones en la aspereza o rugosidad dela superficie de un objeto.

Por último, sólo hacer un pequeño apunte acerca de las diferencias, entre la técnica devisualización utilizada en la creación de esta librería y la técnica de visualización conocida comotrazado de rayos o ray tracing. Ambas técnicas tienen sus seguidores y sus detractores. Enprimer lugar el trazado de rayos es un técnica muy elegante y efectiva para simular lo que ocurrerealmente con la luz dentro de una escena. De esta forma se pueden obtener sombras, simular elfenómeno de la refracción y crear reflexiones del entorno de forma muy precisa. El inconvenientees que el tiempo de proceso que requiere la generación de una imagen medianamente compleja,suele ser bastante alto y prohibitivo. Por el contrario, la técnica de visualización utilizada en estalibrería, obtiene unos resultados que no tienen nada que envidiar a una escena generada mediantetrazado de rayos, cuando dichas escenas no contienen objetos muy reflexivos, y en un tiempodrásticamente menor. De hecho la mayoría de los paquetes comerciales como es el caso de 3DStudio o Pixar’s PhotoRealistic RenderMan utilizan esta técnica por sus buenos resultados yrapidez (aunque, por supuesto, los buenos paquetes también permiten el uso de trazado de rayos).Como dato, una escena compleja (por ejemplo, unos 20.000 polígonos), que puede visualizarsemediante esta librería en un par de minutos, podría tardar varias horas utilizando la técnica detrazado de rayos.

Page 8: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 8

3. DESARROLLO.

3.1 EL PROCESO DE VISUALIZACIÓN TRIDIMENSIONAL.

Con el fin de obtener la visualización de una escena tridimensional, se ha de realizar unaserie de procesos, que se pueden observar, en orden, en el diagrama de la figura 1.

Brevemente, estos procesos son:

• Transformación de Modelado: referida a las transformaciones 3D que se realizan alos objetos (traslaciones, rotaciones, escalados, …) en la fase de modelado. La salidade este proceso está dada en coordenadas mundiales.

• Transformación de Visualización: se refiere a la conversión de coordenadasmundiales, a coordenadas en el sistema de referencia de la vista 3D.

• Recorte Trivial de Objetos: eliminación de los objetos que están fuera del volumen devisualización dado por la especificación de la vista 3D.

• Eliminación de Caras Ocultas: eliminación de aquellos polígonos que no están decara al observador, y que por lo tanto no son vistos por él.

• Cálculo de Normales medias: cálculo de las normales en los vértices de los objetosque conforman la escena. Se realiza promediando las normales de los polígonos queparticipan en cada vértice del objeto.

• Transformación de Normalización: conversión de las coordenadas en el sistema dereferencia de la vista 3D, a un sistema normalizado. Este sistema tiene unascaracterísticas que facilita los cálculos posteriores.

• Transformación a Volumen Canónico-Paralelo: opcionalmente, se puede ademásconvertir un volumen normalizado a un volumen canónico-paralelo. El resultado deeste proceso es hacer independiente el tipo de proyección del proceso de visualización,y así poder trabajar de forma homogénea con proyecciones en perspectiva yproyecciones paralelas (ya sean ortográficas u oblicuas). Como consecuenciainmediata está la simplificación del algoritmo de recorte 3D.

• Recorte 3D: una especificación general arbitraria de una vista 3D determina unvolumen de visualización definido por seis planos. Con el recorte 3D se pretendeeliminar aquellos polígonos y partes de polígonos que se salen de dicho volumen y quepor lo tanto no son vistos por el observador. De esta forma se pueden acelerarprocesos posteriores, al eliminar partes de la escena cuyo procesamiento no esnecesario.

• Proyección Front: dado un volumen de visualización canónico-paralelo, paraproyectar la escena en el plano de proyección, tan sólo es necesario una proyecciónparalela ortográfica de tipo front o alzado.

• Transformación de Ajuste al Marco: una vez que los objetos se han proyectado,queda una última transformación para convertir las coordenadas de proyección encoordenadas del marco de visualización, entendiendo como tal a la ventana o zona dela pantalla en donde se va a visualizar la escena.

Page 9: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 9

• Técnicas de sombreado e iluminación: por último queda dar una apariencia realistaa la escena generada. Para ello se aplican los siguientes procesos, que seránexplicados detalladamente más adelante:

⇒ Aplicación del Modelo de Sombreado.⇒ Procesado de Sombras.⇒ Aplicación de Texturas.⇒ Aplicación del Modelo de Iluminación.⇒ Procesado de Transparencias.

Eliminación deCaras Ocultas

RecorteTrivial

Transformaciónde Visualización

Cálculo deNormales

Transformaciónde Modelado

Recorte3D

Trans. VolumenCanónico Paralelo

Transformac. deNormalización

ProyecciónFront

Procesado deSombras

Aplic. ModeloSombreado

Transformac. deAjuste al Marco

Aplicación deTexturas

Procesado deTrasparencias

Aplic. ModeloIluminación

Figura 1 - Tubería del proceso general de visualización poligonal.

3.1.1 TIPOS DE PROYECCIONES.

En general, se entiende por proyección a la transformación de puntos en un sistema dereferencia de dimensión n, a un sistema de dimensión n-1. Para la realización de este proyecto, lasproyecciones que se han considerado son las de un espacio en 3D a uno 2D. Más concretamente,las proyecciones que se manejan se conocen como proyecciones planares geométricas (puestoque la proyección se realiza sobre un plano, aunque podría ser sobre una superficie curva).

En general las proyecciones planares geométricas se pueden dividir en dos clases básicas:proyecciones paralelas y proyecciones en perspectiva. La diferencia entre ambas radica en larelación del centro de proyección con el plano de proyección. Así, si la distancia entre ambos esfinita se trata de una proyección en perspectiva, mientras que si la distancia es infinita se trata deuna proyección paralela. Por otro lado, en las proyecciones paralelas se distinguen dosimportantes grupos:

1. ortográficas (planta, alzado, perfil, isométricas, …), en donde la dirección deproyección es perpendicular al plano de proyección,

Page 10: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 10

2. oblicuas (caballera, cabinet, …), donde lo anterior no se cumple.

Cada tipo de proyección tiene sus ventajas e inconvenientes. Así las proyeccionesperspectivas son muy realistas debido al efecto conocido como escorzo de la perspectiva: eltamaño de un objeto varía de forma inversamente proporcional a la distancia de dicho objeto conel centro de proyección. Su inconveniente es que no son muy útiles para obtener el verdaderotamaño y forma de los objetos, además de que los ángulos y líneas paralelas en general no semantienen. Las proyecciones paralelas, en cambio, son menos realistas, pero con la ventaja deque son más útiles para el modelado, debido a que se puede apreciar mejor las medidas y tamañosde los objetos; además de que las líneas paralelas se mantienen paralelas. Se puede encontrar unadescripción más detallada acerca de los diferentes tipos de proyecciones el capítulo 6 del Foley[FOLE90]

En la figura 2 se puede ver una clasificación de las proyecciones planares geométricasmás comunes.

Cabinet Caballera

OblicuaOrtográfica

Paralela

Proyecc. PlanaresGeométricas

Perfil

Planta

Alzado

Trimétrica

Dimétrica

Axonométrica

Isométrica

3 puntos

1 punto

2 puntos

Perspectiva

Figura 2 - Clasificación de las Proyecciones Planares Geométricas más comunes.

3.1.2 ESPECIFICACIÓN DE UNA VISTA 3D GENERAL ARBITRARIA.

Como se comentó en la introducción, para conseguir la visualización tridimensional deuna escena modelada en coordenadas mundiales, lo primero que se debe hacer es establecer unareferencia de coordenadas para la cámara. Esta referencia de coordenadas, denominadaespecificación de una vista 3D, define la posición y orientación de un plano de proyección que esel que se va a utilizar a la hora de visualizar la escena.

Con el fin de poder manejar todos los tipos de proyección de forma homogénea, en esteproyecto se ha utilizado la especificación de Vista 3D arbitraria dada por Foley [FOLE90] yutilizada en el paquete de gráficos PHIGS. Consiste en dar un sistema de referencia llamadosistema de referencia de coordenadas de una vista 3D (VRC).

El plano de proyección está definido por un punto del plano llamado punto de referenciade la vista (VRP) y un vector normal al plano llamado normal al plano de vista (VPN). Una vezdefinido el plano de proyección, se necesita definir una ventana en dicho plano. El contenido de

Page 11: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 11

dicha ventana será lo que se visualice en el marco de la pantalla u otro dispositivo de salida, ytodo lo que quede fuera de esta ventana no será mostrado. Se puede observar que esta ventanajuega un papel muy importante en la definición del volumen de visualización. Para poder definiresta ventana, se necesitan dos ejes ortogonales en donde dar sus dimensiones. Estos dos ejes sonparte del sistema de coordenadas de referencia de una vista 3D (VRC). El origen del sistemaVRC es el punto VRP. Uno de los ejes del VRC está definido por el vector VPN y será llamadoel eje n. El segundo eje del VRC se obtiene a partir del vector de referencia vertical (VUP) y seráel eje v. El eje u se define de tal forma que u, v y n formen un sistema de coordenadas ortogonalde lado derecho, como se observa en la figura 3.

CW

n

vPlano de

Proyección

u

VRPVUP

Figura 3 - Sistema de referencia de Vista 3D (VRC).

Con el sistema VRC definido ya se pueden dar los valores en u y v mínimos y máximosde la ventana de visualización. El centro de la ventana (CW) no tiene por qué coincidir con elVRP como se aprecia en la figura.

El centro de proyección y la dirección de proyección (DOP) están definidos por el puntode referencia de proyección (PRP) más un indicador del tipo de proyección. Si el tipo deproyección es perspectiva, entonces el centro de proyección coincide con el PRP. Si el tipo deproyección es paralela, entonces DOP es el vector con origen en PRP y fin en CW. El PRP seespecifica en coordenadas del VRC y no en coordenadas mundiales. Esto tiene la ventaja de queel usuario puede mover la vista 3D, cambiando el VRP de posición, o rotarla, modificando VPNy VUP, sin tener que recalcular el PRP y por lo tanto, manteniendo la proyección deseada.

El volumen de visualización limita la porción del mundo que se está visualizando, y todolo quede fuera de él no será mostrado. En una proyección en perspectiva el volumen devisualización será la pirámide semi-infinita con cúspide en PRP, como se puede apreciar en lafigura 4.

CW

n

v

uPRP

VRP

Figura 4 - Volumen de visualización de una Proyección Perspectiva.

Page 12: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 12

En la figura 5 se muestra el caso de una proyección paralela: el volumen de visualizaciónserá un paralelepípedo infinito con lados paralelos a la dirección de proyección.

CW

n

DOP

PRP

VRP

Figura 5 - Volumen de visualización de una Proyección Paralela.

Por último, queda decir que a veces puede interesar tener un volumen de visualizaciónfinito. Para conseguirlo, lo que se puede hacer es definir dos planos de corte, uno trasero (B) yotro delantero (F) paralelos al plano de proyección. Su especificación se hace dando lasdistancias en el eje n del sistema se referencia VRC. El resultado será un tronco piramidal finito yun paralelepípedo finito, para las proyecciones perspectiva y paralela respectivamente.

Como ejemplo, se puede ver cómo quedaría la especificación de una proyección paralelaortográfica tipo front o alzado:

VRP: (0, 0, 0) en Sistema de Referencia del mundoVPN: (0, 0, 1) en S.R. del mundoVUP: (0, 1, 0) en S.R. del mundoPRP: (8, 8, 100) en S.R. VRCventana: (-1, 17, -1, 17) en S.R. VRCF: +1 en S.R. VRCB: -50 en S.R. VRCtipo proyección:paralela

3.1.3 TRANSFORMACIÓN DE NORMALIZACIÓN.

Una vez que se ha especificado una vista 3D, se deben transformar los objetostridimensionales de una escena, que están en coordenadas del mundo, al sistema de referencia dela vista 3D, para a continuación hacer el recorte 3D contra el volumen de visualización yposteriormente proyectar en el plano de visualización.

Para hacer el recorte 3D se podrían recortar cada una de las líneas contra el volumen devisualización, calculando sus intersecciones con cada uno de los seis planos de dicho volumen.Las líneas recortadas se podrían proyectar en el plano de visualización, calculando lasintersecciones de los proyectores con dicho plano (un proyector es una línea imaginaria que partedel centro de proyección, pasa por el punto a proyectar y corta al plano de proyección). Pero la

Page 13: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 13

gran cantidad de líneas y el gran número de operaciones que llevaría el cálculo de lasintersecciones hacen muy costosa utilizar esta técnica.

Hay un procedimiento mucho más eficiente, basado en la estrategia de divide y vencerás,que simplifica el problema en otros más pequeños y fáciles de solucionar. Hay ciertos volúmenesde visualización para los que es muy sencillo calcular las intersecciones, por ejemplo un volumencuyos planos sean paralelos a los planos coordenados. La estrategia consiste en convertir unvolumen de visualización en otro volumen normalizado o canónico, que tenga ciertascaracterísticas que simplifiquen los cálculos de manera considerable. En la figura 6 se pueden verlos volúmenes normalizados para las proyecciones paralela y perspectiva.

Se trata de encontrar las transformaciones de normalización Nper y Npar , que conviertenun volumen de visualización arbitrario en perspectiva y paralelo a un volumen normalizado,respectivamente. Estas transformaciones, así como cualquier otra que se pueda aplicar a un puntotridimensional, se realizan utilizando el cálculo matricial. En concreto se utilizan matrices de 4x4que transforman un punto 3D a sus coordenadas homogéneas. Una vez que la escena ha sidonormalizada se puede realizar de forma más sencilla el recorte 3D. Posteriormente, y utilizandode nuevo el cálculo matricial, se pueden proyectar los puntos 3D en el espacio 2D.

X o Y

-1-Z

1

-1

a) paralela

planotrasero

planotrasero

planodelantero

planodelantero

b) perspectiva

X o Y

-1-Z

1

-1

Figura 6 - Volúmenes normalizados para las proyecciones paralela y perspectiva.

Una alternativa todavía más genérica, la implementada en este trabajo, consiste entransformar el volumen de visualización normalizado para las proyecciones en perspectiva en elvolumen normalizado paralelo. Con esto se consiguen dos cosas:

1. Se puede utilizar un único algoritmo de recorte de líneas, sin tener que diferenciarentre proyecciones paralelas y perspectivas, puesto que al final, siempre se va atrabajar con una proyección paralela.

2. la proyección al plano 2D es una simple proyección de tipo front o alzado.

Por último, una vez que se tienen las coordenadas de proyección en el plano, se deberealizar la transformación al marco de visualización, esto es, calcular las coordenadas depantalla, trazador, impresora,…, donde se va a mostrar la escena y aplicar las técnicas desombreado e iluminación para obtener una imagen realista de las áreas visibles. Se puedeencontrar una descripción más detallada acerca de estas transformaciones de vistas 3D, en elcapítulo 6 del Foley [FOLE90].

Page 14: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 14

3.2 MÉTODOS DE DETECCIÓN DE SUPERFICIES VISIBLES.

Una consideración importante en la visualización de imágenes realistas es ladeterminación de las partes de una escena que son visibles desde una posición de vistadeterminada. Existen varios algoritmos a fin de identificar con eficiencia los objetos visibles.Algunos métodos requieren más memoria, otros implican más tiempo de procesamiento y sólo seaplican con clases especiales de objetos. Los métodos de detección de superficies visibles sepueden clasificar de forma general, dependiendo de si manejan definiciones de objetos de maneradirecta o trabajan con sus imágenes proyectadas. Estos dos planteamientos se denominanmétodos de espacio-objeto y métodos de espacio-imagen, respectivamente. Un método deespacio-objeto compara objetos y partes de objetos con cada uno de los mismos en la definiciónde la escena, a fin de determinar qué superficies, como un todo, se deben designar como visibles.Por el contrario, en un algoritmo de espacio-imagen, la visibilidad se decide punto por punto encada posición de píxel del plano de proyección. A pesar de las importantes diferencias entreambos planteamientos, los dos utilizan métodos de clasificación y coherencia para mejorar losresultados. Así por ejemplo, se puede utilizar la clasificación para ordenar los polígonos porprofundidad y procesar antes los que están más cercanos al observador. De esta forma seminimizan los cálculos inútiles que supondría, por ejemplo, calcular el color de un cierto píxel deun polígono, para más tarde procesar otro polígono que estaba por delante y que tapa el primerpíxel. Los métodos de coherencia se utilizan para aprovechar las regularidades de una escena. Sepuede esperar que en una línea de rastreo haya intervalos de color constante, o que, de una líneade rastreo a otra, la profundidad de un cierto polígono varíe poco.

A continuación se explican los cuatro métodos de detección de superficies visibles que sehan implementado. Para una información adicional consultar el capítulo 13 del Hearn[HEAR94].

3.2.1 DETECCIÓN DE CARAS POSTERIORES.

Este es un método rápido y sencillo de espacio-objeto para identificar las caras traserasde un poliedro. Todo polígono de un poliedro tiene dos caras, una interna (no visible) y otraexterna (visible). Un punto (x, y, z) está en el interior de la superficie de un polígono con losparámetros de plano A, B, C y D si:

Ax + By + Cz + D < 0

Se puede simplificar esta prueba si se considera el vector normal N para una superficiede polígono. En un sistema del lado derecho, como el que se ha utilizado en la realización de esteproyecto, para calcular dicho vector se ha de tomar la precaución de nombrar los vértices queconforman cada polígono en sentido anti-horario (visto desde fuera del objeto). De esta forma sise tiene un polígono de vértices V1, V2, V3, …, como el de la figura 7, su vector normal N seobtiene haciendo el producto vectorial:

N = V1V2 x V1 V3 , suponiendo que Vi Vj es un vector de origen en Vi y fin en Vj

Page 15: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 15

N

V4

V2

V3

V1

Figura 7 - Cálculo del vector normal, N, de un polígono.

Por otro lado se necesita el vector de visualización, V, y suponiendo que está apuntandoal observador o cámara, como se observa en la figura 8, entonces el polígono es una cara traserao posterior cuando ambos vectores formen un ángulo α mayor de 90º, o lo que es lo mismo, quecos α < 0. Utilizando el cálculo vectorial, y suponiendo que los vectores N y V son unitarios setiene:

V · N < 0

αα V

N

Figura 8 - Determinación de una cara posterior.

En general, se puede esperar que la eliminación de caras posteriores descarte procesosposteriores en alrededor de la mitad de las superficies de polígono de una escena. Una últimaconsideración de éste método es que a veces es necesario procesar todas las caras de un objeto,incluso las posteriores. Esto ocurre principalmente cuando se traten objetos que contienenpolígonos transparentes. Por este motivo, en la realización de este proyecto, la aplicación de estemétodo está controlado por un atributo que el usuario puede modificar a voluntad y que seencuentra en la especificación del material (ver apartado correspondiente más adelante) del queestá formado un determinado polígono de un objeto.

3.2.2 MÉTODO DE BUFFER DE PROFUNDIDAD (BUFFER Z).

Un planteamiento de espacio-imagen que se utiliza de forma común para detectarsuperficies visibles es el método de buffer de profundidad, desarrollado por Catmull[CATM74], que compara las profundidades de la superficie en cada posición de píxel del planode proyección. Este procedimiento se conoce también como método de buffer Z, ya que por logeneral, la profundidad del objeto se mide desde el plano de visión a lo largo del eje Z del sistemade referencia de la vista 3D (VRC).

En su forma más sencilla, este método procesa cada superficie de una escena porseparado, un punto a la vez, a lo largo de dicha superficie. Normalmente, este método se aplicaen escenas que sólo contienen superficies poligonales porque los valores de profundidad sepueden calcular con gran rapidez. No obstante, el método se puede aplicar a superficies noplanas. Cuando se convierten las descripciones de los objetos a coordenadas en el sistema de

Page 16: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 16

referencia de proyección (VRC), cada punto (x, y, z) en una superficie de polígono corresponde alpunto de proyección (x, y) en el plano de visión. Por tanto, para cada uno de los píxeles que seestán procesando se pueden comparar las profundidades del objeto al comparar los valores de z.

Se puede implementar este algoritmo utilizando coordenadas normalizadas, de maneraque los valores de z van desde 0, en el plano de recorte delantero, hasta el plano de recorte trasero(que según la especificación de vista 3D que se ha usado tiene un valor de -1). Para utilizar estemétodo se requieren dos áreas de almacenamiento. Una para almacenar los valores deprofundidad de cada píxel (x, y) conforme se procesan las superficies, y otra para ir almacenandola intensidad o color de cada uso de esos píxeles. Al principio, todas las posiciones en el buffer deprofundidad se establecen al valor mínimo y se inicializan las del buffer de intensidad con laintensidad del fondo. A continuación se procesa cada superficie de las tablas de polígonos, unalínea a la vez, y se calcula la profundidad z en esa posición de píxel (x, y). La profundidadcalculada se compara con la almacenada previamente en el buffer de profundidad en dichaposición. Si la nueva z resulta que está más cercana al observador que la almacenada, entonces sealmacena el nuevo valor, se aplica el modelo de iluminación a la superficie en esa posición, y sealmacena la intensidad hallada en el buffer de intensidad.

Se resumen los pasos del algoritmo de buffer de profundidad como sigue:

1. Se inicializan el buffer de profundidad y el buffer de intensidad demodo que para todas las posiciones de buffer (x, y),

profundidad(x, y) = -∞, intensidad(x, y) = Ifondo

2. Para cada posición (x, y) en cada superficie de polígono:

a) se calcula su profundidad z,

b) si z > profundidad(x, y), entonces se establece:

profundidad(x, y) = z, intensidad(x, y) = Isuperf(x, y)

Como punto final, comentar que para mejorar la eficiencia de este algoritmo se puedenutilizar métodos de clasificación y coherencia. En concreto, tal y como se ha implementado, eneste trabajo se realiza una ordenación de los objetos y dentro de cada objeto, se hace unaordenación de todos los polígonos que lo conforman, desde los más cercanos al observador a losmás lejanos. Esto se hace así para procesar primero los polígonos más cercanos y evitar cálculosinnecesarios al aplicar el modelo de iluminación a puntos que están ocultos. El resultado de estaordenación ha sido un incremento de la velocidad de la fase de visualización de hasta un 50%en algunas escenas complejas. Los métodos de coherencia que se han aplicado consisten en lainterpolación lineal de la z, a lo largo de una línea de rastreo, así como de las posiciones de píxelx e y, con el consiguiente incremento de velocidad.

3.2.3 MÉTODO DE BUFFER A.

Una extensión de la idea del método de buffer de profundidad es el método de buffer A,desarrollado por Carpenter [CARP84], que representa un buffer de acumulación promediado poráreas con capacidad de desenmascaramiento o antialiasing (técnica utilizada para suavizar el

Page 17: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 17

contorno escalonado en los bordes de los polígonos causado por las limitaciones físicas de losdispositivos de salida).

Una desventaja del método de buffer Z es que sólo almacena información acerca delpolígono más próximo al observador. En otras palabras, solo maneja superficies opacas y nopuede acumular valores de intensidad para más de una superficie, como es preciso si se quierenvisualizar superficies transparentes. El método de buffer A expande el buffer Z de modo que cadaposición del buffer puede hacer referencia a una lista de superficies asociadas. Por tanto, sepuede considerar más de un color o intensidad de superficie en cada posición de píxel y es posiblehacer un desenmascaramiento en las aristas del objeto (aunque ésta última opción no se haimplementado).

En general, cada posición del buffer A debe contener información acerca de:

• componentes de intensidad RGB,• porcentaje de transparencia,• profundidad,• porcentaje de cobertura de píxel,• identificador de superficie,• otros parámetros de la superficie (material, texturas, …).

Por lo demás, la implementación y utilización del buffer A es bastante similar a lacomentada anteriormente para el caso del buffer Z, con la principal diferencia a la hora deprocesar las transparencias. Más adelante se explicará cómo se realiza el proceso de tratamientode superficies transparentes.

3.2.4 MÉTODO DE LÍNEA DE RASTREO.

Los principales inconvenientes de los métodos de buffer Z y buffer A, vistosanteriormente, son la gran cantidad de memoria necesaria (sobre todo para el buffer A) si seutilizaran áreas de almacenamiento del tamaño total de la imagen a visualizar. Por ejemplo, paravisualizar un imagen con una resolución de 1024 por 1024 utilizando un método de buffer Z,serían necesarios cuatro megabytes sólo para el buffer de profundidad (suponiendo que se utilizael tipo de datos float de C, con un tamaño de 4 bytes). Y eso sin contar con el tamaño del bufferde intensidad, que podría alcanzar más de tres megabytes para una imagen en 16.8 millones decolores o color real.

Una manera de reducir los requerimientos de almacenamiento es procesar una sección dela escena a la vez, utilizando un buffer de profundidad más pequeño. Después de procesar cadasección de vista, se vuelve a emplear el buffer para la siguiente sección. Si esta estrategia se llevahasta sus últimas consecuencias, se puede reducir el buffer hasta el tamaño de una sola línea dela imagen. Siguiendo con el ejemplo anterior, bastaría ahora con 4 Kbytes para almacenar elbuffer de profundidad, y poco más de 3 Kbytes para el buffer de intensidad.

El método de línea de rastreo, se ha utilizado como una extensión tanto para el métodode buffer Z como para el método de buffer A. Básicamente, consiste en que en lugar de rellenarsólo una superficie, ahora se manejan múltiples superficies. Conforme se procesa cada línea derastreo, se analizan todas las superficies de polígono que intersectan dicha línea (los cálculos delas intersecciones se realizan usando interpolación lineal, debido a la coherencia de una línea derastreo a otra) para determinar cuáles son visibles. A lo largo de cada línea de rastreo, se realizan

Page 18: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 18

los cálculos de profundidad (de nuevo, utilizando interpolación para acelerar los cálculos) paracada superficie que se solapa a fin de determinar cuál está más cerca al plano de proyección. Unavez que se ha determinado la superficie visible, se calcula el valor de intensidad para esa posiciónsegún el modelo de iluminación deseado y se almacena en el buffer correspondiente. En la figura9 se puede observar un estado del método de línea de rastreo, para localizar las porciones visiblesde las superficies, a lo largo de la línea de rastreo.

Y

yk

puntos de intersección

línea de rastreo

X

Figura 9 - Método de línea de rastreo.

Para una información adicional y detallada acerca de este método, consultar el capítulo13 del Hearn [HEAR94] y el capítulo 15 del Foley [FOLE90].

3.3 TÉCNICAS DE SOMBREADO E ILUMINACIÓN.

Para obtener una visualización realista de una escena no basta sólo con generarproyecciones de perspectiva o de otro tipo, sino que además hay que aplicar efectos deiluminación natural en las superficies visibles. Un modelo de iluminación, también llamado dealumbrado, se utiliza para calcular el color o intensidad de la luz que se percibe desde un puntodeterminado en la superficie de un objeto. Un modelo de sombreado, emplea los cálculos deintensidad hallados por un modelo de iluminación para determinar la intensidad de la luz paratodas las posiciones de píxel que se proyectan para las diversas superficies de una escena. Sepuede efectuar la visualización realista de la escena al aplicar el modelo de iluminación en todoslos puntos visibles de las superficies, o mediante la interpolación de las intensidades a lo largo delas superficies, con base en un conjunto reducido de cálculos del modelo de iluminación.

A fin de evitar confusiones, se hará referencia al modelo para el cálculo de la intensidadde la luz en un solo punto de una superficie, como modelo de iluminación; y se empleará eltérmino modelo de sombreado para expresar un procedimiento que aplica un modelo deiluminación con el fin de obtener las intensidades de píxel para todas las posiciones proyectadasde la superficie en una escena. El fotorrealismo, que es uno de los principales objetivos de esteproyecto, implica dos elementos: representaciones gráficas de objetos exactas y buenasdescripciones físicas, tanto de los efectos de iluminación en una escena como de los materiales delos que está formada la superficie de un objeto. Los efectos de iluminación que se hanimplementado incluyen: múltiples focos de luz, transparencias, sombras y texturas desuperficie.

Page 19: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 19

Por norma general, los modelos de iluminación utilizados en infografía se derivan deforma aproximada, de las leyes físicas que describen cómo la luz se refleja en las superficies. Afin de reducir al mínimo los cálculos, la mayor parte de estos modelos son empíricos y se basanen cálculos fotométricos simplificados. A continuación se hará una breve descripción de loscuatro modelos de iluminación que se han implementado así como de los tres modelos desombreado que aplican alguno de los modelos de iluminación a fin de obtener una visualizaciónapropiada y realista de una escena.

3.3.1 FUENTES DE LUZ.

Cuando se observa un objeto opaco no luminoso, en realidad, lo que se percibe es la luzque se refleja en las superficies del objeto. La luz reflejada total es la suma de las contribucionesde todas las fuentes de luz y otras superficies reflectantes en la escena. A las fuentes de luz se lasconoce también como fuentes de emisión de luz, y a las superficies reflectantes como fuentes dereflexión de luz. En este proyecto, sólo se han tenido en cuenta las primeras, debidoprincipalmente a la técnica de visualización utilizada. El tener en cuenta superficies reflectanteses algo que se puede tratar de forma bastante más elegante y efectiva con algoritmos de trazadode rayos.

Cuando la luz incide en una superficie opaca, parte de ésta se refleja y parte se absorbe.La cantidad de luz incidente que una superficie refleja depende del tipo de material. Así, losmateriales brillantes reflejan más luz y las superficies opacas la absorben más. De modo similar,en el caso de una superficie transparente iluminada, parte de la luz incidente se reflejará y otraparte se transmitirá (fenómeno de refracción) a través del material.

En este proyecto se han incluido tres tipos distintos de fuentes de emisión de luz:

1. luz ambiental,2. fuentes de luz puntuales,3. fuentes de luz cónicas dirigidas.

El primer tipo, que se conoce como luz ambiente o luz de fondo, es una manera simplede modelar un nivel general de iluminación para una escena. La luz ambiente no presentacaracterísticas de espacio ni de dirección. Un ejemplo típico puede ser la luz solar. Laespecificación de la luz ambiental, única para cada escena, viene determinada por dos constantes:ka, y Ca, que son el factor de intensidad y color de la luz respectivamente.

Un apunte importante que hay que tener en cuenta, y la misma norma se utiliza en elresto de este documento, es que cuando se habla de un color o intensidad, como pueda ser Ca,éste en realidad puede representar tres cosas:

1. Un valor escalar, para representar sólo intensidades. Es así cuando se habla en modogenérico o se están visualizando imágenes en escalas de grises.

2. Un vector, normalmente tridimensional (aunque depende del modelo de colorutilizado), con las componentes del color en el modelo de color elegido. En concreto,en este proyecto se han implementado todas las funciones necesarias para el manejodel color en los modelos de color RGB y CIEXYZ, así como funciones detransformación de un modelo a otro (ver apartado: Modelos de color).

Page 20: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 20

3. Una curva espectral, conteniendo la cantidad de energía emitida por la luz para cadalongitud de onda (o la cantidad de energía reflejada, para cada longitud de onda, poruna superficie que es expuesta a una luz). Esto es necesario cuando se quiere trabajarcon materiales físicos reales, como puede ocurrir con los dieléctricos (cristal,diamante,…) y conductores (oro, cobre, cromo,…). En este proyecto se hanimplementado todas las funciones necesarias para el tratamiento de curvas espectralesy su conversión a uno de los dos modelos de color citados anteriormente. Esto permitetrabajar con las propiedades reales de ciertos materiales, como son los dieléctricos ylos conductores, y así poder utilizar modelos de iluminación más complejos paraobtener unos resultados más realistas (ver apartado: Modelo de Iluminación deBlinn).

El segundo tipo de fuente de emisión de luz, son las fuentes de luz puntuales. Los rayosque emiten estas fuentes siguen trayectorias que divergen en forma radial desde la posición de lafuente hasta el infinito. Este modelo de fuente de luz es una aproximación razonable para lasfuentes cuyas dimensiones son pequeñas en comparación con el tamaño de los objetos de laescena. La especificación de una luz puntual está formada por: una contante o multiplicador kl, elcolor de la luz Cl, y la posición del foco en el espacio.

Dentro del tercer tipo se encuentran las fuentes de luz cónicas dirigidas. Con ellas sepueden simular muy bien focos de luz con forma cónica y tienen la importante capacidad deproyectar sombras. Son una extensión de las fuentes de luz puntuales, con la diferencia de quelos rayos emitidos se encuentran limitados por un cono, determinado por un ángulo α, respecto ala dirección principal de la luz. La especificación de una luz cónica está formada por unacontante o multiplicador kl, el color de la luz Cl, la posición del foco en el espacio P, un vector dedirección L, y dos ángulos α y β. El primero de dichos ángulos, α, sirve de límite a los rayosemitidos, pues determina una región cónica fuera de la cual la intensidad de la luz tiene un valornulo. El segundo de los ángulos, β, sirve para especificar otra región cónica dentro de la anterior.Los rayos de luz que queden en el interior de este cono interno tienen la intensidad total de la luz,mientras que los rayos que queden entre los dos conos tienen una intensidad que varía desde laintensidad total (en la proximidad del cono interno), hasta una intensidad nula (en la proximidaddel cono externo). Con esto se consigue el efecto, muy realista, de una disminución progresiva dela intensidad de la luz. En la figura 10 se puede observar los elementos que forman parte de unaluz cónica:

ββ

αα

P

L

intensidad total

intensidad media

intensidad nula

Figura 10 - Especificación de una luz cónica.

Otro tipo de fuentes, bastante más complejas de modelar, son las fuentes de luzdistribuidas, con la diferencia de que la fuente de luz no es un punto sino una superficie. Debidoa la complejidad en la implementación de este tipo de fuentes no se han incluido en este proyecto.

Page 21: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 21

3.3.2 MODELOS DE ILUMINACIÓN.

3.3.2.1 MODELO DE ILUMINACIÓN AMBIENTAL.

Una superficie que no está expuesta de manera directa a una fuente de luz será visible,aún si los objetos circundantes están iluminados, se trata de un nivel general de brillantez paratoda la escena. Este modelo de iluminación sólo tiene en cuenta la luz ambiente o luz de fondo.Como se comenta en el apartado anterior, la luz ambiente no presenta características de espacioni de dirección. La cantidad de luz ambiente incidente en cada objeto es una constante para todaslas superficies y en todas las direcciones. El modelo se expresa con la siguiente ecuación:

Iamb = ka Ia

donde Ia es el producto de los dos parámetros de la luz ambiental antes explicados; ka es unaconstante de reflexión ambiental, dependiente del material asociado a la superficie a iluminar, yque por lo tanto, permite modificar la intensidad de luz ambiente para cada superficie.

3.3.2.2 REFLEXIÓN DIFUSA.

La reflexión de la luz ambiente es una aproximación de los efectos de iluminación difusageneral. Las reflexiones difusas son constantes en cada superficie de una escena e independientesde la dirección de vista. La cantidad fraccional de luz incidente que se refleja de manera difusa sepuede establecer para cada superficie con el parámetro kd, el coeficiente de reflexión difusa. Aeste parámetro se le asigna un valor constante de 0 a 1, de acuerdo con las propiedades dereflexión que se quiera dar a la superficie. Un valor próximo a 1 indicará una superficie muyreflectante, mientras que para simular una superficie que absorbe la mayor parte de la luzincidente, se establecerá un valor cercano a 0.

A pesar de que la dispersión de la luz es igual en todas las direcciones de vista, labrillantez de la superficie depende de la orientación de la superficie con respecto de la fuente deluz. Así una superficie cuya orientación es perpendicular a la dirección de la luz incidente tieneuna apariencia más brillante que si la superficie estuviera inclinada en un ángulo oblicuo. Seobserva que la reflexión difusa, depende del ángulo de incidencia α entre la dirección de la luzque llega y la normal de la superficie en el punto a iluminar; más concretamente es proporcional acos(α). Así si Il es la intensidad o color de una fuente de luz (concretamente será el producto delos parámetros de la luz kl Cl antes explicados), la ecuación de reflexión difusa se puede expresarcomo:

Idif = kd Il cos α

Si N es el vector normal unitario para una superficie, como se puede apreciar en la figura11, y L es el vector de dirección unitario para la fuente de luz, entonces cos α = N·L, y laecuación anterior se puede expresar como:

Idif = kd Il (N·L)

Page 22: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 22

N

P

αα L

Figura 11 - Reflexión difusa en un punto de una superficie.

Se pueden combinar estos cálculos de la reflexión difusa con los de la luz ambiental, a finde obtener una expresión para la reflexión difusa total:

Idif = ka Ia + kd Il (N·L)

3.3.2.3 REFLEXIÓN ESPECULAR. MODELO DE ILUMINACIÓN DEPHONG.

Cuando se observa una superficie brillante iluminada, como metal pulido, se puedeapreciar un punto de luz o una mancha brillante en algunas direcciones de vista. Este fenómenose conoce como reflexión especular. En la figura 12 se puede observar un esquema delfenómeno.

P

ββαα αα

RN

L

V

Figura 12 - Reflexión especular en un punto de una superficie.

En dicha figura se tiene una superficie y su vector normal unitario N en el punto ailuminar P; L es el vector unitario dirigido hacia la fuente de luz; R el vector unitario reflejado; Vel vector unitario que apunta al observador. El ángulo β es el ángulo formado por los vectores Vy R. Para un reflector ideal (un espejo perfecto) la luz incidente se refleja sólo en la dirección dereflexión especular R. En este caso solo se vería la luz reflejada cuando coincidiesen los vectoresV y R (β = 0). Los objetos que no son reflectores ideales presentan reflexiones en un rango finitoalrededor del vector R. Dicho rango será tanto más amplio cuanto menor sea la brillantez de lasuperficie. Un modelo empírico para calcular este rango de reflexión, desarrollado por Phong BuiTuong [BUIT75], y que recibe el nombre de modelo de reflexión especular de Phong, establecela intensidad de la reflexión especular proporcional a cosns β. Se pueden asignar valores para elángulo β en el rango de 0º a 90º de modo que cos β varía de 0 a 1. El valor que se asigna alparámetro o exponente de reflexión especular, ns, determina el tipo de superficie que se quierevisualizar. Así una superficie muy brillante se modela con un valor alto para ns, y los valores másbajos (hasta 1) se emplean para superficies más opacas. Para un reflector perfecto, ns es infinito;para una superficie rugosa se asignaría a ns un valor cercano a 1.

La ecuación de reflexión especular dada originalmente por Phong, se puede expresarcomo:

Iesp = ks Il cosns β

Page 23: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 23

donde ks es el coeficiente o factor de reflexión especular, tomando valores entre 0 y 1 paraindicar la cantidad de brillo que tiene una superficie; Il es la intensidad o color de la fuente de luz.Si de nuevo se hace uso del cálculo vectorial, y suponiendo que tanto R como V son vectoresunitarios, se tiene que cos β = R·V, y la ecuación anterior se puede expresar como:

Iesp = ks Il (R·V)ns

Se puede calcular el vector de reflexión R en términos de los vectores N y L mediante laexpresión:

R = (2N·L)N - L

Se pueden combinar estos cálculos de la reflexión especular con los cálculos de reflexióndifusa y ambiental para obtener una expresión final de modelo de iluminación de Phong:

I = Idif + Iesp = ka Ia + kd Il (N·L) + ks Il (R·V)ns

3.3.2.4 MODELO DE ILUMINACIÓN DE BLINN.

El modelo de iluminación original de Phong puede resultar un poco simple al considerarun coeficiente de reflexión especular, ks, constante para cada tipo de superficie. Esto puederesultar más o menos cierto para muchos tipos de materiales, pero si se quieren simular otros,como dieléctricos (cristal, cuarzo,…) y conductores (cobre, plata, níquel,…) de forma másrealista, habrá que utilizar modelos de iluminación más complejos basados en las propiedadesfísicas de dichos materiales.

La intensidad de la reflexión especular depende de las propiedades del material de lasuperficie, así como de otros factores, como la polarización y color de la luz incidente. Se puedemodelar de manera aproximada variaciones de intensidad especular al utilizar un coeficiente dereflexión especular, W(α), para cada superficie (donde α es el ángulo de incidencia de la luz).En la figura 13 se ilustra la variación general de W(α) en el rango de α = 0º a α = 90º paraalgunos materiales.

plata

oro

vidrio

90º α

W(α)

0

0.5

1

Figura 13 - Variación aproximada del coeficiente de reflexión especular

como una función del ángulo de incidencia para diferentes materiales.

Page 24: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 24

En general, W(α), tiende a aumentar conforme se incrementa el ángulo de incidencia.Para α = 90º, W(α) = 1, y se refleja toda la luz incidente. Como se aprecia en la figura, losmateriales transparentes como el cristal, sólo presentan reflexiones especulares perceptiblesconforme α se aproxima a 90º. A α = 0º, se refleja alrededor del 4 por ciento de la luz incidenteen la superficie de un cristal. Y la mayor parte del intervalo de α, la intensidad reflejada es menosdel 10 por ciento de la intensidad incidente. La variación de la intensidad especular con el ángulode incidencia se describe en la ley de reflexión de Fresnel.

Los físicos Torrance y Sparrow [TORR66], desarrollaron un modelo basado en laspropiedades termofísicas de una superficie reflectante. James Blinn [BLIN77] fue el primero queadaptó dicho modelo a la generación de imágenes por ordenador. El modelo de Torrance-Sparrowutiliza las curvas espectrales de la luz incidente y las curvas espectrales de los materiales encuestión. Una curva espectral no es ni más ni menos que una representación de la cantidad deenergía emitida por la luz para cada longitud de onda (o la cantidad de energía reflejada, paracada longitud de onda, por una superficie que es expuesta a una luz). Así, utilizando curvasespectrales, se puede conseguir una mejor aproximación de los materiales que se quieren simular.Hay que destacar que la utilización de curvas espectrales no sólo se utiliza en el modelo deiluminación de Blinn, sino que se puede utilizar, por generalización, en cualquiera de los modelosde iluminación descritos anteriormente. Por supuesto, la implementación de este proyecto ha sidolo más general posible, y por lo tanto se ha hecho de esta forma. Otro apunte acerca de laaplicación y uso de curvas espectrales, es que se puede especificar el rango de longitudes de ondaque se van a considerar. Al iniciar el módulo de colores que se ha implementado, el usuariopuede especificar dicho rango. Por defecto, las longitudes de onda van desde los 380 namómetrosa los 780 namómetros, que es el rango del espectro visible por el ojo humano. Pero usando otrosvalores se podrían generar escenas en el rango de los infrarrojos, los ultravioletas, o el rangoperceptible por el ojo de un gato, por ejemplo.

El modelo de iluminación de Blinn, además del término de reflexión de Fresnel, Fλλ,para dieléctricos y conductores comentado más arriba, incorpora un factor de atenuacióngeométrica, G. El modelo físico original de Torrance-Sparrow asume que las superficies estánformadas en realidad por una colección de caras planas microscópicas, cada una siendo unreflector perfecto. La geometría y distribución de estas microfacetas y la dirección de la luz,determinan la intensidad y dirección de la reflexión especular. El factor de atenuación geométricaque incorpora el modelo de iluminación de Blinn es el propuesto por Torrance-Sparrow yrepresenta los efectos de sombreado de cada una de las microfacetas en las demás. Para másinformación acerca del modelo de Blinn y el de Torrance-Sparrow, así cono de la ley de reflexiónde Fresnel y la utilización de curvas espectrales consultar el capítulo 16 del Foley [FOLE90] y ellibro de Roy Hall [HALL89].

Por último decir que además, Blinn utiliza el vector equidistante H, entre V y L, paracalcular el intervalo de reflexiones especulares. En general, el uso del vector H requiere menosoperaciones que el cálculo del vector de reflexión R, y los resultados son análogos. Así pues, sesustituye el producto escalar R·V del modelo de iluminación de Phong por el producto escalarN·H. Teniendo todo esto en cuenta el modelo de iluminación de Blinn se puede resumir mediantela siguiente expresión:

I = ka Ia + kd Il (N·L) + G Fλ ks Il (N·H)ns

Page 25: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 25

3.3.3 ATENUACIÓN DE LA INTENSIDAD DE UNA FUENTE DE LUZ.

Conforme la energía radiante de una fuente de luz viaja a través del espacio, su amplitudo intensidad de atenúa por el factor 1/d2, donde d es la distancia que la luz ha recorrido. Estosignifica que una superficie cercana a la fuente de luz recibe una intensidad de incidencia mayorque una superficie distante. Por lo tanto, para conseguir efectos de iluminación realista, unmodelo de iluminación debe considerar esta atenuación de la intensidad. De otro modo, si dossuperficies paralelas del mismo material y distantes una de la otra se superponen, no se podríadistinguir entre ambas, puesto que el modelo de iluminación las iluminaría por igual sin importarla distancia.

Pero utilizar el factor 1/d2, sin más, no es suficiente para conseguir efectos realistas,porque produce muchas variaciones de intensidad cuando d es bajo y muy poca variación cuandod es alto. La forma de compensar este problema es utilizar funciones lineales o cuadráticasinversas de d. En concreto, para la implementación de este proyecto se ha optado por utilizar lasiguiente función cuadrática inversa:

f da a d a d

( ) =+ +

1

0 1 22

Así, un usuario puede manejar a su gusto los coeficientes a0, a1 y a2 para obtener unavariedad de efectos de iluminación en una escena.

3.3.4 MÚLTIPLES FOCOS DE LUZ.

Al presentar los modelos de iluminación, sólo se ha tenido en cuenta una única fuente deluz. Pero dichos modelos se pueden generalizar para el uso de múltiples focos de luz dentro deuna escena. En este caso, la iluminación de un punto de una superficie vendrá determinada por lasuma de las contribuciones de las fuentes individuales. A modo de ejemplo, se puede a ver laecuación final del modelo de iluminación de Blinn para n focos de luz, e incluyendo el factor deatenuación de la intensidad. Esta expresión final es la que se ha utilizado en la implementación deeste modelo, y las análogas, para la implementación de los otros modelos de iluminación.

( ) ( )[ ]I I I N L F N H= + +=∑k f d k Gka a i lii

n

d i s i

ns( ) • •1

λ

3.3.5 MODELOS DE SOMBREADO.

Como el título de este proyecto indica, los objetos que se manejan son aproximacionespoligonales o poliédricas de lo que serían los verdaderos objetos que se quieren representar. Conel fin de conseguir una apariencia realista en dichos objetos, en los que muchas de sus superficiesson curvas, se utilizan los denominados modelos de sombreado. Un modelo de sombreado es unprocedimiento que aplica un modelo de iluminación cualquiera de los explicados anteriormente,con el fin de obtener las intensidades en cada uno de los puntos de las superficies proyectadas deuna escena. En este proyecto se han implementado los siguientes tres modelos de sombreado:

1. Modelo de sombreado Constante.

Page 26: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 26

2. Modelo de sombreado de Gouraud.3. Modelo de sombreado de Phong.

3.3.5.1 MODELO DE SOMBREADO CONSTANTE.

Es el más simple de los tres, puesto que se calcula una sola intensidad para cadapolígono. Todos los puntos de la superficie del polígono se muestran entonces con el mismo valorde intensidad. El sombreado constante puede ser útil para visualizar con gran rapidez laapariencia general de una superficie curva. El punto donde se aplica el modelo de iluminación esen el centro geométrico del polígono. En la figura 14 se puede observar una esfera utilizandoeste modelo de sombreado.

Figura 14 - Modelo de Sombreado Constante.

3.3.5.2 MODELO DE SOMBREADO DE GOURAUD.

Este modelo de sombreado, desarrollado por Gouraud [GOUR71], utiliza un esquema deinterpolación lineal de la intensidad o color a lo largo de una superficie. De esta forma, seconsigue una transición suave en las aristas de los polígonos, y por lo tanto se eliminan lasdiscontinuidades de la intensidad que se pueden apreciar en el sombreado constante. Losresultados son bastante más realistas y suficientes para muchas aplicaciones que requieren granvelocidad de procesado, como sería el caso de un motor 3D de visualización en tiempo real dealguno de los juegos de actualidad.

La idea consiste en aplicar el modelo de iluminación únicamente en los vértices delpolígono. Para conseguir la intensidad o color del resto de los puntos, y siguiendo los principiosde coherencia citados con anterioridad, se utiliza un método de interpolación lineal. No hay queolvidar que para aplicar el modelo de iluminación a los vértices es necesario el cálculo previo delas normales en dichos vértices. Una forma bastante razonable de calcularlas es promediar lasnormales de los polígonos que participan en cada uno de los citados vértices. En la figura 15 sepuede observar la esfera anterior utilizando este modelo de sombreado. Uno de los inconvenientesde los que adolece este modelo son las conocidas bandas de Mach.

Figura 15 - Modelo de Sombreado de Gouraud.

Page 27: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 27

3.3.5.3 MODELO DE SOMBREADO DE PHONG.

Pero el sombreado de Gouraud aunque muy rápido, casi tan rápido como el sombradoconstante, sigue teniendo bastantes deficiencias si se quieren conseguir resultados realistas.Phong Bui Tuong [BUIT75], desarrolló un nuevo modelo de sombreado conocido como modelode sombreado de Phong o sombreado de interpolación del vector normal. La idea, como en elcaso anterior, hace uso de la interpolación lineal, pero esta vez se interpolan las normales mediasde los vértices de cada polígono. Ahora el modelo de iluminación sí que se aplica en cada puntode la superficie, con el consiguiente costo de procesamiento. Pero a cambio, los resultados sonmucho más realistas: las bandas de Mach se reducen hasta el punto que resultan casiinapreciables y los objetos presentan los brillos especulares. Además, se obtienen otros beneficiosimportantes derivados del hecho de aplicar el modelo de iluminación en todos los puntos desuperficie, como son:

• proyección de sombras,• aplicación de texturas de superficie,• visualización de los conos de luz producidos por las luces dirigidas cónicas.

En la figura 16 se puede observar la esfera de ejemplo, utilizando este modelo desombreado.

Figura 16 - Modelo de Sombreado de Phong.

3.3.6 TRANSPARENCIAS.

En general, las superficies no tienen por qué ser opacas sino que pueden ser transparenteso semitransparentes. Una superficie transparente produce tanto luz reflejada como luztransmitida. Un planteamiento simple para modelar las transparencias, ignora el fenómeno de larefracción. En este proyecto se ha seguido este planteamiento, puesto que la incorporación derefracciones sólo es viable con técnicas de trazado de rayos. Aunque la transparencia sinrefracción no es muy realista, a menudo puede ser un efecto útil. Por ejemplo, puede proporcionaruna visión sin distorsión a través de una superficie.

En concreto, para la implementación de este proyecto, se ha utilizado la técnica conocidacomo transparencia interpolada. Considérese qué ocurre cuando un polígono transparente 1,está entre el observador y otro polígono opaco 2, tal y como se aprecia en la figura 17.

Page 28: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 28

línea de vista

1

Z

2

X

Figura 17 - Corte transversal de dos polígonos.

La transparencia interpolada determina la iluminación de un píxel en la intersección dedos proyecciones de polígonos, interpolando linealmente la iluminación individual hallada paracada uno de los polígonos, de la forma:

Iλ = (1- t1)Iλ1 + t1 Iλ2

donde el coeficiente de transmisión o coeficiente de transparencia t1, mide la transparencia delpolígono 1, y toma valores entre 0 y 1. Cuando t1 vale 0, el polígono es opaco y no transmite luz;cuando t1 vale 1, el polígono es totalmente transparente y no contribuye en nada a la intensidadIλ. Al valor (1- t1) se le conoce como opacidad del polígono.

Un polígono totalmente transparente procesado de esta manera no tendrá ningunareflexión especular. Para un efecto más realista, tal y como se ha implementado en este proyecto,lo que se hace es interpolar sólo las componentes ambiente y difusa del polígono 1 con laintensidad total del polígono 2, y al resultado sumarle la componente especular del polígono 1.

Otra aproximación realista que se ha implementado, y que se ha denominado caída de latransparencia, tiene en cuenta la atenuación creciente que ocurre cerca de los bordes de la siluetaen las superficies transparentes curvas, donde la luz pasa a través de más material. Esteplanteamiento fue propuesto originalmente por Kay y Greenberg [KAY79], y define el coeficientede transparencia t como una función no lineal de la componente z del vector normal a lasuperficie después de la transformación de normalización:

t = tmin + ( tmax - tmin )( 1 - ( 1 - zn )m)

donde tmax y tmin son los coeficientes de transparencia máximo y mínimo respectivamente delmaterial; zn es la componente z del vector normal a la superficie después de la transformación denormalización; y m es un exponente de delgadez del material (toma valores típicos de 2 ó 3). Unam mayor modela una superficie más delgada.

Para conseguir un procesado correcto de las transparencias, el buffer Z resultainapropiado. Con un buffer Z se podrían conseguir transparencias correctas si no hubiesesolapamiento de los polígonos transparentes y si se dejasen dichos polígonos para el final, unavez que el buffer Z de los polígonos opacos ha sido construido. El procesado correcto de lastransparencias se consigue con el método de detección de superficies visibles del buffer A,debido a que guarda información, no sólo de la superficie opaca más cercana al observador, sinode todas las superficies transparentes que estuviesen delante de la opaca, y ordenadas de atráshacia delante. Con toda esta información, el color resultante se obtiene procesando, para cadaposición del buffer A, los polígonos de atrás hacia delante y aplicando la expresión de la

Page 29: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 29

transparencia interpolada anterior. Para más información acerca de la implementación de lastransparencias consultar el capítulo 16 del Foley [FOLE90].

3.3.7 SOMBRAS.

Los algoritmos de detección de superficies visibles determinan qué superficies pueden servistas desde el punto de vista del observador; los algoritmos de sombras determinan quésuperficies pueden ser vistas desde el punto de vista de las fuentes de luz. Por lo tanto, ambostipos de algoritmos son esencialmente los mismos. Las superficies que son vistas por la fuente deluz no están en sombra, mientras que aquellas que no son visibles sí están en sombra.

El algoritmo de procesamiento de sombras que se ha utilizado en este proyecto fuepropuesto originalmente por Williams [WILL78], y consiste en el uso de múltiples buffers deprofundidad o buffers Z, uno para cada fuente de luz. La estrategia es la siguiente: inicialmentese construye un buffer Z completo para cada fuente de luz, a estos buffers se les denomina mapasde sombras. Posteriormente cuando se esté visualizando la imagen desde el punto de vista delobservador se debe hacer la siguiente consideración. Cuando un punto (x, y, z) de una superficiese determina como visible, sus coordenadas se transforman en coordenadas desde el punto devista de la fuente de luz (x’, y’, z’). Las coordenadas transformadas x’ e y’ se utilizan para sabera qué posición del buffer Z se debe acceder para obtener el valor allí almacenado zl, querepresenta el punto más cercado a la fuente de luz en esa posición (x’, y’). Si zl está más cercanoa la fuente de luz que z’, significa que hay algo que bloquea a la luz en esa posición y por lo tantoel punto original no recibe luz de esta fuente. Esto es, la fuente de luz que se está considerando nocontribuye en nada a la iluminación de dicho punto. El mismo test se debe realizar para cadafuente de luz capaz de arrojar sombras.

Por último, comentar que el único tipo de fuentes de luz, de las utilizadas en esteproyecto, capaces de arrojar sombras son las luces dirigidas cónicas. Esto es así por la propianaturaleza del algoritmo de sombras empleado, que requiere la construcción de un buffer Z paracada foco. Para ello, es necesario la creación de una vista 3D situada en el foco de luz, y acontinuación aplicar el algoritmo global de render. Esto significa que es necesario una direcciónde proyección. Las fuentes de luz puntuales carecen de esta propiedad, luego no pueden arrojarsombras; en cambio, las fuentes de luz dirigidas si tienen una dirección, que es la usada comodirección de proyección.

3.3.8 TEXTURAS DE SUPERFICIE.

Hasta ahora se ha hablado de técnicas para visualizar superficies suaves, pero la mayorparte de los objetos no tienen superficies suaves, relucientes y regulares. Una de las técnicas paraconseguir un mayor acercamiento a la irregular, sucia e imperfecta realidad, son las texturas desuperficie. Los resultados son simplemente asombrosos e impresionantes.

3.3.8.1 TEXTURAS DE COLOR.

El primer tipo de textura implementada en este proyecto son las conocidas texturas decolor. El efecto que se persigue son variaciones en el color de superficie de un objeto.

Page 30: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 30

Dependiendo del modo en que se obtengan estas variaciones de color, se puede diferenciar entredos tipos:

1. texturas de color 3D o procedurales,2. texturas de color 2D o de mapa de bits.

3.3.8.1.1 TEXTURAS DE COLOR 3D.

A las texturas de color 3D, también se les conoce como texturas procedurales, debido aque las variaciones de color son producidas por un método procedural o función de R3 → R. Sesupone que existe una textura en todo el espacio 3D. Cuando se asignan valores a través de unaregión del espacio tridimensional, las variaciones de color se denominan texturas sólidas. Laprincipal ventaja de este tipo de texturas es que no consumen prácticamente memoria (tan escasala mayoría de las veces). Por ejemplo, se pueden crear efectos de vetas de madera o mármol alutilizar funciones armónicas (curvas de senos) que se definen en un espacio tridimensional. Sepueden obtener las variaciones en la textura de la madera o el mármol al incorporar funciones deruido y turbulencia en las variaciones armónicas.

En este proyecto se han incorporado los siguientes tipos de texturas de color 3D,obtenidas de [BERM95]:

• textura de mármol, con cuatro variaciones distintas,• textura de madera, con tres variaciones distintas,• textura de ágata, con tres variaciones distintas,• textura de agujeros, con tres variaciones distintas: hoyos, jaguar y bultos,• textura de granito,• textura de arena,

lo que supone en total 15 efectos distintos.

3.3.8.1.2 TEXTURAS DE COLOR 2D.

Aunque las texturas de color 3D tienen la ventaja de que no consumen prácticamentememoria, el resultado no es todo lo realista que se podría esperar. Las texturas de color 2D, adiferencia de las anteriores, obtienen las variaciones del color de un mapa de bits o imagenpreviamente almacenada. Con esta técnica se puede envolver cualquier objeto tridimensional conuna imagen digitalizada o dibujo. Se pueden agregar detalles en las superficies como por ejemplouna etiqueta en una botella, las líneas de los carriles y señalizaciones en una carretera e inclusootras marcas, como manchas de aceite y resbalones de neumáticos. El límite está en laimaginación del usuario, y los resultados son realmente espectaculares.

La dificultad en la aplicación de este tipo de texturas radica en cómo mapear una imagenbidimensional sobre un objeto tridimensional de cualquier forma irregular. A este proceso se leconoce como mapeo de texturas y existen varias técnicas para llevarlo a cabo. La que se haimplementado en este proyecto se conoce como mapeo en dos fases. La idea consiste en mapear,en una primera fase, la textura bidimensional sobre un objeto tridimensional regular (esferas,cilindros,…) sobre el que sea sencillo trabajar. En la segunda fase, una vez que se ha hecho el

Page 31: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 31

cambio hacia la tercera dimensión, se proyecta la textura desde el objeto intermedio al objetofinal.

Concretamente en este proyecto se han implementado tres tipos diferentes de mapeo:

• Mapeo esférico: en la primera fase, se realiza un mapeo sobre una esfera imaginaria.La especificación de este tipo de mapeo incluye únicamente un vector de orientaciónpolar, para orientar la esfera en el espacio. En la segunda fase, la proyección de laimagen de la esfera sobre el objeto, se consigue trazando proyectores desde lasuperficie de la esfera hasta el centro geométrico del objeto, calculando los puntos deintersección.

• Mapeo cilíndrico: en la primera fase, se realiza un mapeo sobre un cilindroimaginario. La especificación de este tipo de mapeo incluye la longitud del cilindro yel vector del eje del cilindro para orientarlo en el espacio. En la segunda fase, laproyección de la imagen del cilindro sobre el objeto, se consigue trazando proyectoresque van desde la superficie del cilindro, atravesando el objeto, hasta el eje del cilindro,siendo además éstos proyectores perpendiculares a dicho eje.

• Mapeo plano: en la primera fase, se realiza un mapeo sobre un plano imaginario. Laespecificación de este tipo de mapeo incluye el vector normal del plano, un vector deorientación vertical, así como el ancho y alto de dicho plano. En la segunda fase, laproyección de la imagen del plano sobre el objeto, se consigue trazando proyectoresperpendiculares al plano, que van desde la superficie del plano hasta atravesar elobjeto.

Por último, comentar que en la implementación de este tipo de texturas 2D se han tenidoen cuenta detalles como que al rotar o mover un objeto, el mapeo de textura se mueve o rota conél. Esto es especialmente interesante si se pretende realizar una animación, puesto que lasposiciones relativas de las texturas sobre los objetos se mantienen siempre constantes. Otrosatributos utilizados en la especificación de una textura de color 2D son las veces que se repite laimagen tanto horizontalmente como verticalmente en la esfera, cilindro o plano, según el tipo demapeo elegido. Además se ofrece la posibilidad al usuario de especificar si quiere que se voltee laimagen una vez sí, otra vez no, mientras se va mapeando, para evitar las discontinuidades que sepueden producir si las imágenes que se están utilizando no se acoplan perfectamente como unmosaico al poner una a continuación de otra.

3.3.8.2 TEXTURAS DE PROTUBERANCIAS.

El segundo tipo de textura implementada en este proyecto son las conocidas texturas deprotuberancias. El efecto que se persigue son variaciones en la aspereza o rugosidad de lasuperficie de un objeto. La forma de conseguir esto es aplicando una función de perturbación dela normal en la superficie, para a continuación utilizar la normal perturbada en los cálculos delmodelo de iluminación. Las técnicas utilizadas para realizar esta perturbación son muy similaresa las utilizadas en las texturas de color procedurales.

En este proyecto se han incorporado los siguientes tipos de texturas de protuberancias,obtenidas de [BERM95]:

• textura de abollados,

Page 32: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 32

• textura de arrugas,• textura de olas,• textura de rizos.

3.4 MODELOS DE COLOR.

Por último, y no por ello menos importante, para concluir con esta sección sobre eldesarrollo del proyecto, se van a tratar brevemente los modelos de color. Un modelo de color esun método para explicar las propiedades o el comportamiento de un color en algún contextoparticular. Ningún modelo de color puede explicar todos los aspectos del color, de modo que losdiferentes modelos se complementan entre sí para describir las características del color que sepercibe.

Lo que se percibe como luz, o colores diferentes, es una banda estrecha en el espectroelectromagnético. Es la llamada banda visible, y cada valor de frecuencia se corresponde con uncolor distinto, que va desde el rojo al violeta. Debido a que la luz es una onda electromagnética sepueden describir los distintos colores en términos de la frecuencia f o de la longitud de onda λ(ambas son inversamente proporcionales). Una fuente de luz blanca emite todas las frecuenciasen el rango visible para producir luz blanca (por supuesto se pueden tener focos de luz decualquier color). Cuando la luz blanca llega a un objeto, éste refleja algunas frecuencias yabsorbe otras, dependiendo de las propiedades físicas del material del que esté compuesto. Lacombinación de frecuencias reflejadas son lo que se conoce como color del objeto. Si en la luzreflejada predominan las frecuencias bajas, se dirá que el objeto es rojo. En este caso, la luzpercibida tiene una frecuencia dominante (o longitud de onda dominante), también conocidacomo matiz, o simplemente color, de la luz. Otras propiedades de la luz son la brillantez,luminancia y saturación.

En este proyecto se han implementado todas las funciones necesarias para el manejo delcolor en los modelos de color RGB y CIEXYZ, así como las funciones de transformaciónnecesarias para convertir colores de un modelo a otro.

3.4.1 MODELO DE COLOR XYZ.

Debido a que ningún conjunto finito de fuentes de luz de color se puede combinar paratodos colores posibles, en 1931, la Comisión Internacional sobre Iluminación, más conocidacomo CIE, definió tres colores primarios estándar. Esto ofrece una definición internacionalestándar para todos los colores. Al conjunto de primarios de la CIE, se le conoce como modelode color XYZ, donde X, Y y Z representan vectores en un espacio tridimensional de coloraditivo. Cualquier color Cλ se expresa entonces como:

Cλ = XX + YY + ZZ

donde X, Y y Z designan las cantidades de colores primarios estándar que se requieren paraigualar Cλ.

Page 33: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Desarrollo 33

3.4.2 MODELO DE COLOR RGB.

El modelo de color RGB se basa en la Teoría de los tres estímulos de la visión.Nuestros ojos perciben los colores mediante el estímulo de tres pigmentos visuales en los conos dela retina. Estos pigmentos tienen una sensibilidad de pico en las longitudes de ondacorrespondientes a los colores rojo, verde y azul. Se puede representar este modelo con el cubounitario de ejes R, G y B, donde el origen representa el negro y el vértice (1,1,1) el blanco. Comoel modelo de color XYZ, el esquema de color RGB es un modelo aditivo, es decir se suman lasintensidades de los colores primarios para producir otros colores. Cualquier color Cλ se expresaentonces como:

Cλ = RR + GG + BB

donde R, G y B designan las cantidades de colores rojo, verde y azul que se han de combinar paraigualar Cλ.

Page 34: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 34

4. DISEÑO.

4.1 ESTRUCTURA DE LA LIBRERÍA. MÓDULOS.

Como ya se comentó en la introducción de este documento, uno de los principalesobjetivos del proyecto es el diseño y construcción de una librería de rutinas gráficastridimensionales. Esta librería ha sido diseñada bajo los principios de extensibilidad yreutilización, y por lo tanto, no es una librería cerrada, con lo que en futuros trabajos se podráampliar, incorporando nuevas técnicas que no han sido contempladas en el presente trabajo.

En total, la librería está formada por 268 funciones distribuidas en 13 módulos (sincontar la aplicación de usuario, como puede ser el entorno gráfico que se ha implementado), quese ocupan desde el manejo del cálculo vectorial, pasado por los modelos de color, manipulaciónde objetos tridimensionales, hasta el control de las ventanas (que contienen vistas 3D) para unaposterior visualización en algún dispositivo de salida como una pantalla o impresora.

El diseño de esta librería ha seguido un diseño ascendente o bottom-up, y se puededistinguir una jerarquía de 10 niveles, como se aprecia en la figura 18.

Nivel 4

Nivel 3

Nivel 2

Nivel 1

Nivel 0Primitivasgráficas

Formatosgráficos

Texturas

Manipulación y modeladode objetos tridimensionales

Modelos deIluminación

Fuentesde Luz

Modelosde color

Listasdinámicas

Cálculovectorial ymatricial

Nivel 5Algoritmos deVisualización

Nivel 6Manejo

de Escenas

Nivel 7Entradade Datos

Nivel 8Gestión deVentanas

Nivel 9Aplicaciónde Usuario

Figura 18 - Jerarquía de los módulos de la Librería Gráfica 3D.

Page 35: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 35

Todos los módulos de la librería han sido programados en lenguaje C estándar (eloriginal presentado por Kernighan y Ritchie). Con ello se ha pretendido que la librería seaportable. Por este motivo, se puede compilar bajo cualquier sistema operativo en el que sedisponga de un compilador de C estándar. Así, se puede compilar tanto en ordenadores PC bajoel sistema operativo MS-DOS o Linux, como en estaciones de trabajo Unix (esta es la opciónrecomendada). La librería ha sido compilada y ha sido probado su perfecto funcionamiento, conel compilador para MS-DOS de Borland Turbo C++ 3.0, con el compilador C de las estacionesde trabajo SparcStation de Sun MicroSystems que los alumnos disponen en la sala de proyectosde la facultad, así como con el compilador C de Linux.

A continuación se describe esta jerarquía:

• Nivel 0: Este es el nivel más bajo de todos, y la base de toda la librería. En él seencuentran tres módulos, cada uno con funciones bastante distintas.

1. Listas dinámicas: en este módulo se ha hecho la implementación de un tipoabstracto de datos (TAD), de listas dinámicas genéricas. Se trata de listasdoblemente enlazadas, y sirven como contenedores de cualquier tipo de información(gracias al uso de los punteros). En muchas partes de la librería el uso de listasdinámicas se hace imprescindible si se quiere la máxima generalidad y un usoóptimo de la memoria (todo lo contrario que ocurre con el uso de estructuras fijascomo los arrays). Así por ejemplo se usan listas de objetos, listas de vistas 3D,listas de polígonos proyectados,… La construcción de este TAD ha sido, sin lugar adudas, el factor más importante de cara a la correcta implementación del resto delos módulos. Los beneficios conseguidos han sido: claridad, legibilidad y limpiezaen el código.

En el módulo se encuentran funciones para la creación y destrucción de listas,inserción y eliminación de nodos, consultas acerca de la longitud, si la lista es vacía,si se está en el primer o último nodo,…, y por supuesto para hacer todo tipo derecorridos de forma cómoda y sencilla.

Un último comentario acerca de este módulo es que también se hanimplementado funciones para la gestión dinámica de la memoria (malloc( ) de C)con control de errores.

2. Cálculo vectorial y matricial: en este módulo se han implementado todas lasfunciones necesarias para la creación y manipulación de puntos en el espaciotridimensional, vectores tridimensionales y matrices de tamaño 3x3 y 4x4. Aquí sepueden encontrar operaciones tan comunes como sumas, restas de puntos y vectores3D, productos vectoriales, productos escalares, productos matriciales,…; además deotras funciones como el cálculo de vectores reflejados y refractados.

3. Primitivas gráficas: en este módulo se han implementado las primitivas gráficasnecesarias para la visualización de una imagen generada en un dispositivo de salida,concretamente en una pantalla. En realidad, éste es un módulo para obtenertransparencia en el uso de las diferentes librerías gráficas de propósito general yaexistentes en el mercado. Por lo tanto serán necesarios tantos módulos comolibrerías gráficas distintas se vayan a utilizar.

En concreto, se han implementado dos módulos:

Page 36: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 36

a) Uno para el uso con las librerías gráficas de Borland (más conocidas comoBGI) para la compilación en el sistema operativo MS-DOS.

b) El otro ha sido para el uso de la librería XView 3.2 (o superior) de SunMicroSystems, dentro del entorno gráfico XWindow, para compilar enestaciones de trabajo Unix.

Un último comentario sobre estos módulos, es que ambos han sido desarrolladospara trabajar de forma transparente en cualquier resolución y con cualquiernúmero de colores. Así se puede trabajar con 256 colores, 65536 colores, y hasta16.8 millones de colores. Para ello, se ha declarado en su fichero cabecera,graficos.h, que sí es común sea cual sea la librería gráfica de propósito generalutilizada, el tipo de datos TTrueColor. Otro tipo de datos muy relacionado con estees TBufferRGB, que no es más que una colección de TTrueColor con el que seconsigue la tan deseada independencia del formato gráfico.

• Nivel 1: En este nivel existen dos módulos:

1. Modelos de Color: aquí se han implementado todas las funciones necesarias para elmanejo del color en los modelos de color RGB y CIEXYZ, así como las funcionesde transformación necesarias para convertir colores de un modelo a otro.

Además, aquí se pueden encontrar las funciones necesarias para la manipulaciónde curvas espectrales. También se han incluido funciones para el muestreo decurvas espectrales. El muestreo es una técnica utilizada para obtener unarepresentación simplificada de una curva espectral, porque trabajar una curvaespectral completa puede resultar muy lento. Se han implementado dos técnicas demuestreo:

a) El Método de muestreo de Meyer, que utiliza cuatro muestras en los puntosfijos de 456.4 nm., 490.9 nm., 557.7 nm. y 631.4 nm.

b) El Método de muestreo de Hall [HALL89], que utiliza un número demuestras variable en los límites de longitudes de onda especificados.

Una vez que las curvas espectrales se han muestreado, se utilizan estas muestrascon el modelo de iluminación. Posteriormente, las muestras resultantes de laaplicación del modelo de iluminación se tienen que transformar a color RGB para lavisualización en pantalla o grabarlas en un fichero. Hay dos maneras de hacer esto:

i) una forma directa, que transforma una muestra espectral al espacio RGB.

ii) reconstruyendo la curva espectral a partir de su muestra, para posteriormenteconvertirla a un color RGB.

2. Formatos gráficos: en este módulo se implementan las funciones necesarias para lamanipulación de diversos formatos gráficos. Los formatos gráficos se utilizan paraproducir un fichero gráfico de salida, o bien para leer mapas de texturas de color 2Dque también pueden estar en un formato gráfico arbitrario. En concreto, en el trabajoactual, sólo se han implementado funciones para la manipulación del formatográfico Targa Truecolor, más conocido como TGA.

Page 37: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 37

Un apunte importante a tener en cuenta, es que el resto de módulos de la librería3D creada son independientes del formato que se vaya a utilizar. Por este motivo,la futura incorporación nuevos formatos gráficos (JPG, GIF, BMP, PCX,…) sepuede realizar de forma sencilla, sin nada más que ampliar este módulo.

• Nivel 2: En este nivel existen dos módulos:

1. Fuentes de Luz: en este módulo se encuentran las funciones necesarias para lamanipulación de fuentes de luz. Los tres tipos incluidos son:

a) Luz ambiental.

b) Luces puntuales.

c) Luces cónicas dirigidas.

Todos estos tipos de fuentes de luces fueron comentados en la sección de Fuentesde Luz anteriormente, con lo que no se entrará en más detalles.

2. Texturas: en éste módulo se han implementado todas las funciones necesarias parala aplicación de texturas. Recuérdese cuáles son los tipos de texturas tratadas:

a) Texturas de color, donde se distinguen:

i) texturas de color tridimensionales o procedurales,

ii) texturas de color bidimensionales o de mapas de bits.

b) Texturas de protuberancias.

Para más información consultar la sección de Texturas.

• Nivel 3: Este nivel está únicamente formado por el módulo Modelos de Iluminación.En él se encuentran implementados los cuatro modelos de iluminación detallados conanterioridad. Además en este módulo también se encuentran las funciones para laespecificación y manipulación de materiales, así como las funciones que calculan losfactores de reflectancia de Fresnel, y el factor de atenuación geométrica de Torrance-Sparrow. Hay que destacar que la librería ha sido desarrollada de forma que un futurose puedan incorporar nuevos modelos de iluminación más complejos y realistas, deforma sencilla, sin nada más que modificar este módulo y siempre que se sigan lasreglas en él especificadas.

• Nivel 4: Este nivel también está formado por un único módulo, el de Manipulación ymodelado de objetos tridimensionales. Aquí se encuentran todas las funcionesnecesarias para la especificación y creación de objetos tridimensionales, polígonos yvértices. También se encuentran todas las funciones de transformaciones geométricasque se pueden aplicar a un objeto como son: escalado, traslación, rotación encualquiera de los ejes coordenados,…

Por último, comentar que en este módulo es donde se han implementado lasfunciones de manipulación de Vistas Tridimensionales, así como las operacionesasociadas de normalización, recorte trivial de objetos, y proyección de polígonos.

Page 38: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 38

• Nivel 5: Este nivel también está formado por un único módulo, con los Algoritmos deVisualización. Aquí se encuentran las funciones encargadas de visualizar una escena,bien en alámbrico, bien aplicando los modelos de sombreado e iluminación a fin deobtener una imagen realista.

Es aquí donde se encuentra la implementación de los algoritmos de detección desuperficies visibles antes comentados: buffer Z, buffer A, así como los de procesadode transparencias y sombras.

• Nivel 6: Tanto este nivel como los siguientes los se pueden denominar de alto nivel.Esto es así porque las funciones que contienen son básicamente agrupaciones defunciones de los niveles inferiores, a fin de conseguir operaciones de alto nivel que alfinal resultan ser bastante comunes y útiles a la hora de crear una aplicación con estalibrería 3D, como el entorno gráfico que se ha desarrollado.

El módulo que se encuentra en este nivel es el de Manejo de Escenas, así comotodas las operaciones para creación y manipulación de escenas completas. Una escenaes una estructura de datos de orden superior consistente en:

a) una lista de objetos tridimensionales,

b) una lista de vistas 3D,

c) una lista de luces, y

d) una lista de materiales.

• Nivel 7: Este nivel también está formado por un único módulo, el de Entrada dedatos. Aquí se encuentran todas las funciones para la lectura de un fichero que esté enel formato de entrada que se ha diseñado, así como de la librería de materiales. Másadelante se comentará la especificación del fichero de entrada que se ha utilizado. Hayque aclarar que estas funciones han sido construidas con capacidad de detección deerrores.

• Nivel 8: Este nivel está formado por un módulo para la Gestión de Ventanas. En estesentido, se entiende por ventana una porción del dispositivo de salida, donde se va aproyectar una vista 3D. Se necesitan tantas ventanas como vistas 3D se quierandesplegar a la vez.

• Nivel 9: Este último nivel no forma parte de la librería, como tal. En realidad este esel nivel donde el usuario de la librería puede crear una aplicación cualquiera. A modode ejemplo se ha construido un sencillo entorno gráfico para estaciones de trabajoUnix. Con él se puede apreciar rápidamente toda la potencia de la librería defunciones gráficas tridimensionales y de visualización realista que se ha desarrollado.

4.2 REPRESENTACIÓN INTERNA DE LOS OBJETOS.

En esta librería gráfica 3D, los objetos están determinados por una colección depolígonos de superficie que encierran el interior del objeto. Otros sistemas pueden emplear

Page 39: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 39

superficies cuádricas, superficies de splines,…, con las que se consiguen representar con mayorrealismo superficies curvas.

Al esquema de representación que se ha utilizado se le conoce como representación defrontera o simplemente B-rep, por el hecho de que los objetos se describen por las superficiesque separan el entorno del interior del objeto. El hecho de utilizar polígonos como unaaproximación de los objetos que se quieren modelar facilita y acelera la representación desuperficie y el despliegue de los objetos, ya que todas las superficies se describen con ecuacioneslineales.

En concreto dentro de la especificación de un objeto se puede encontrar:

• un array de vértices, conteniendo las coordenadas tridimensionales, en coordenadasmundiales, de cada uno de los vértices que forman dicho objeto. Hay que recordar quecada vértice dentro de un objeto es único y no se repite.

• un array de polígonos, que entre otras cosas, debe tener información acerca de cuálesde los vértices del objeto, conforman dicho polígono. Dicha información no es másque otro array que contiene los índices de las posiciones de los vértices en el array devértices del objeto.

A modo de ejemplo se pueden ver las estructuras de datos usadas en la implementación.En primer lugar se muestra el tipo de dato TObjeto (su declaración se puede encontrar en elfichero cabecera del módulo de modelado tridimensional), con el que se especifica un objeto:

/* Definición del tipo de dato TObjeto */typedef struct { unsigned int numPoligonos, /* nº de polígonos del Objeto */ numVertices; /* nº de vértices del Objeto */ char *nombre; /* nombre del Objeto */ TPoligono *poligonos; /* ARRAY de polígonos del OBJETO */ TVertice *vertices; /* ARRAY de vértices del OBJETO */ TPunto3D *verticesNormalizados; /* ARRAY de vértices NORMALIZADOS del OBJETO */ TCubo3D limites, /* Límites del Objeto */ limNorm; /* Límites del Objeto NORMALIZADOS */ TPunto3D CG; /* CENTRO de GRAVEDAD del OBJETO */ TLista *listaMapeosTexturas; /* Lista de Mapeos de Textura */} TObjeto;

La mayoría de los campos de la estructura se explican por sí mismos. Sólo comentar queen verticesNormalizados se encuentran los vértices después de la transformación denormalización contra una vista 3D; y que en limites se tiene un cubo tridimensional que rodea elobjeto y que es necesario para hacer el recorte trivial de objetos.

Para acabar este apartado se muestra el tipo de dato TPoligono (declarado en el mismolugar que el anterior), que también puede resultar bastante ilustrativo:

/* Definición del tipo de dato TPoligono */typedef struct { unsigned int numVertices, /* nº de vértices del Polígono */ grupoSuavizado; /* grupo de suavizado del Polígono */ TPunto3D CG, /* CENTRO de GRAVEDAD del POLÍGONO */ CGn; /* CENTRO de GRAVEDAD NORMALIZADO */ TVector3D N; /* Normal del POLÍGONO */

Page 40: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 40

short visible; /* Al RENDERIZAR se guardará si este POL. está visible */ unsigned int *vertices; /* ARRAY de vértices del POLÍGONO */ TVector3D *normales; /* ARRAY de NORMALES MEDIAS del POLÍGONO */ TMaterial *material; /* material del POLÍGONO */ TObjeto *objeto; /* OBJETO al que pertenece el Pol. */ TMapeoTextura *mapeoTextura; /* el mapeo de textura asociado */} TPoligono;

Al igual que en el caso anterior, la mayoría de los campos de la estructura se explicanpor sí mismos. Sólo comentar dos campos:

• grupoSuavizado: cuando se utiliza el modelo de sombreado de Phong (recuérdese queinterpolaba las normales medias en los vértices) se debe tener un mecanismo quepermita decidir qué normales se van a interpolar y cuáles no. Esto es muy útil enobjetos que no son suaves en todos sus polígonos. Por poner un ejemplo sencillo,supóngase un cilindro: en las caras laterales sí se desea que haya interpolación de lasnormales para conseguir el efecto de suavizado; sin embargo, la tapa inferior ysuperior se quiere que sea plana. Los grupos de suavizado son un mecanismo simpley de mucha potencia con el que se pueden conseguir gran cantidad de efectos desuavizado, al controlar qué polígonos contribuyen a la normal media en un vértice ycuáles no. En la figura 19 se pueden apreciar dos donuts con un bocado cada uno. Eneste caso, se puede desear que tanto el bocado como el resto de la superficie del donutsean superficies suaves, pero con un grupo de suavizado diferente para cada una deellas. Así en a) el bocado tiene un grupo de suavizado distinto al del resto del donut yse puede apreciar claramente el borde del bocado; en b) el bocado y el donut tienen elmismo grupo de suavizado y se puede apreciar cómo hay una transición suave en lafrontera del bocado.

a) b)

Figura 19 - Dos donuts mordidos. Nótese la diferencia en la frontera del bocado.

• visible: en este campo se almacena si el polígono es una cara posterior. Estainformación es muy útil cuando se está tratando con materiales de dos lados. En esecaso, tanto la cara externa como la interna del polígono deben procesarse y seriluminadas por las fuentes de luz.. Para más información sobre cómo se realiza esteproceso ver el siguiente apartado.

4.3 ESPECIFICACIÓN DE UN MATERIAL.

En este proyecto se manejan unas especificaciones de materiales bastante completas. Eneste apartado se comenta brevemente la especificación de un material.

Page 41: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 41

En primer lugar, hay que recordar que un material, al igual que un mapeo de textura, esuna propiedad de cada polígono y no del objeto completo, como puede verse en los tipos de datospresentados en el apartado anterior. Esto permite que cada polígono de un objeto pueda ser de unmaterial distinto, y tener un mapeo de textura distinto (recuérdese que un mapeo de texturaespecifica la forma en que se aplica una textura sobre una superficie, para más detalles ver lasección: Texturas), con lo que se pueden conseguir efectos de lo más variado.

A continuación se muestra el tipo de dato TMaterial (su declaración se puede encontraren el fichero cabecera del módulo de modelos de iluminación), que también puede resultarbastante ilustrativo:

/* Definición del tipo de dato TMaterial */typedef struct { char *nombre; /* nombre del Material */ TTipoMaterial tipo; /* tipo del Material */ TModelosSombreado modeloSombreado; /* MODELO de SOMBREADO */ TModelosIluminacion modeloIluminacion; /* MODELO de ILUMINACION */ short dosLados, /* material de doble cara */ alambrico, /* Ver en ALAMBRICO */ verATraves; /* ver a través del ALAMBRICO */ TTipoAtenuacionGeomet atenuacionGeomet; /* tipo de Atenuac. Geomet. */ TEspectro Ca, /* Color Difuso */ Cd, /* Color Difuso */ Cs, /* Color Especular */ CdKd, /* ídem pero multiplicados por las cts */ CsKs, colorAmbiental; /* aqui cargamos la Ilum. Ambiente*/ double n, /* coef. expon. reflex. especular */ Ka, /* constante Ambiental */ Kd, /* constante Difusa */ Ks, /* constante Especular */ transparencia, /* coeficiente de TRANSPARENCIA */ caidaTransp, /* coef. atenuación de transparencia cuando un poligono esta muy inclinado respecto al observ. */ grosorAlambrico,/* grosor del ALAMBRICO */ Ro, /* Reflectancia Media */ ni, /* índice refracción incidente */ nt, /* índice refracción transmitido */ k; /* coeficiente de ABSORCION */ TTexturaColor *texturaColor; /* textura de color */ TTexturaProtuberancia *texturaProtuberancia; /* textura de protuber. */} TMaterial;

El significado de la mayoría de los campos queda suficientemente explicado por loscomentarios asociados. Pero aún así, se han de hacer algunas aclaraciones.

El campo tipo, indica un tipo de material de entre los tres siguientes:

1. conductores, cuya especificación queda determinada por su curva espectral. Hasta lafecha se han podido conseguir las curvas espectrales de los siguientes: oro, cobre,níquel y cromo. Todos ellos se encuentran en la librería de materiales estándar (versiguiente apartado).

2. dieléctricos, al igual que en el caso anterior, se necesitan sus curvas espectrales. Lasque se han podido conseguir y están disponibles en la librería de materiales estándarson: cristal, diamante y calcita.

Page 42: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 42

3. artísticos, con este nombre denomino a los materiales cuyo color se determina pormedio de sus componentes RGB, y que no necesitan ningún tipo de propiedad físicaadicional.

Los campos modeloSombreado y modeloIluminacion indican los modelos desombreado e iluminación a usar para las superficies compuestas de este material. Son los que secomentaron con anterioridad. Hay que decir que en una misma escena se pueden visualizarsuperficies con cualquier combinación de modelos de sombreado e iluminación.

El campo dosLados sirve para indicar que el material es de doble cara. Esto quiere decirque las superficies compuestas por un material de este tipo serán procesadas por ambas caras. Eluso de materiales de doble cara sólo tiene sentido cuando el material es transparente osemitransparente, ya que de esta forma se visualizan e iluminan tanto las superficies externascomo las internas del objeto. El resultado es un mayor realismo en el uso de transparencias. Laforma de llevar a cabo este proceso es la siguiente: cuando el modelo de iluminación se va aaplicar sobre una superficie de este tipo, tanto la cara externa como la interna del polígono, debenprocesarse y ser iluminadas por las fuentes de luz. Por lo tanto, si el polígono no está de cara a laluz, pero se sabe que es visible (ver apartado anterior) y está formado por un material de doblecara, se invierte la normal y se sigue adelante con el modelo de iluminación.

Otra forma de visualizar (renderizar) las superficies de un objeto, de la que no se hacomentado nada hasta ahora es una visualización en alámbrico (no confundir con larepresentación en alámbrico en la que se muestra una vista 3D previo al proceso de render). Estanueva forma de visualizar las superficies está controlada por el campo alambrico. Otros factoresque se pueden controlar son el grosor del alámbrico (en píxeles) y si se quiere ver a través de losalambres (de otro modo el interior de la superficie se quedaría con el color de fondo)

Los materiales de tipo conductor o dieléctrico necesitan información sobre propiedadesfísicas adicionales como son: la reflectancia media, el índice de refracción incidente, el índicerefracción transmitido (sólo dieléctricos), y el coeficiente de absorción (sólo conductores) parapoder aplicar las leyes de reflexión de Fresnel. Para ello se dispone de los camposcorrespondientes en la estructura TMaterial.

Por último, y para utilizar con el modelo de iluminación de Blinn, cabe la posibilidad deespecificar el tipo de atenuación geométrica que se quiere aplicar. Actualmente las posibilidadesson: o no aplicar ninguna, o aplicar el factor de atenuación geométrica dado por Torrance-Sparrow; aunque otra posibilidad, no implementada, puede ser utilizar el factor de atenuacióngeométrica dado por Sancer.

4.4 FORMATO DEL FICHERO DE ENTRADA.

Inicialmente, en el mismo fichero de entrada se especificaban las vistas 3D, las luces, losobjetos y los materiales que componían una escena. Esto tiene el inconveniente de que en cadafichero de entrada se repetían los materiales utilizados. Una forma más flexible y que permite notener que estar “pegando” materiales de escena en escena consiste en colocarlos en un lugardiferente. De esta forma, ahora se puede distinguir entre dos tipos de ficheros de entrada:

1. Ficheros escénicos, que contienen la información de una escena tridimensional, estoes, los objetos, vistas 3D o cámaras y luces que la componen.

Page 43: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 43

2. Ficheros o librerías de materiales, que son colecciones de especificaciones demateriales. Esto permite, por ejemplo, tener una librería de materiales estándar que selee al principio, como ocurre en la aplicación de ejemplo que se ha construido (cosaque no impide añadir nuevos materiales procedentes de otros ficheros posteriormente).

A continuación se pueden ver las especificaciones de los formatos de entrada tanto de unfichero escénico como de un fichero de materiales. Las convenciones utilizadas en dichasespecificaciones son las siguientes:

x: es un nº real cualquiera.x, y, z: son nº reales; componentes de un punto 3D.i, j, k: son nº reales; componentes de un vector 3D.r, g, b: son nº reales en el rango [0, 100]; componentes de un color RGB.k: es un nº real en el rango [0, 1]m: es un nº real positivo mayor que 0α:: es un ángulo en grados de 0º a 90ºn: es un nº natural

4.4.1 FICHERO DE ESCENA.

Un fichero de escena o fichero escénico puede incluir tantas luces, vistas 3D, cámaras yobjetos como el usuario desee. Su formato es el siguiente:

Luz: "<nombre>"TipoLuz <ARTISTICA | REALISTA>FormaLuz <AMBIENTAL | PUNTUAL | CONICA>Kl <k>Encendida <SI | NO> → luces cónicas y puntualesAtenuacion <SI | NO> [ <k0> <k1> <k2> ] → luces cónicas y puntualesPosicion <x> <y> <z> → luces cónicas y puntualesObjetivo <x> <y> <z> → luces cónicasAlfa <α> → luces cónicasBeta <α> → luces cónicasDaSombra <SI | NO> → luces cónicasAnchoMapaSombra <n> → luces cónicasColor <r> <g> <b> → Si TipoLuz es ARTISTICAColor → Si TipoLuz es REALISTA<m> <k> → curva espectral · · · ·

Camara: "<nombre>"Observador <x> <y> <z>Objetivo <x> <y> <z>Balanceo <α>Ventana ancho: <m> alto: <m> profundo: <m>PoligonosTraseros <SI | NO>

Page 44: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 44

Vista3D: "<nombre>"Vrp <x> <y> <z>Vpn <i> <j> <k>Vup <i> <j> <k>Prp <x> <y> <z>Ventana Umin: <x> Umax: <x> Vmin: <x> Vmax: <x> F: <x> B: <x>Tipo <PERSPECTIVA | PARALELA>PoligonosTraseros <SI | NO>

Objeto: "<nombre>"Vertices: <n> Poligonos: <n> MapeosTexturas: <n>

Lista Vertices:V <n>: <x> <y> <z> [P: <n. poligonos> <a> <b> ... ] · · · ·

Lista MapeosTexturas:MT <n>: <TEXTURA3D escala: <m> |

ESFERICO Sp: <i> <j> <k> escalaU: <m> escalaV: <m> |PLANO N: <i> <j> <k> Vup: <i> <j> <k> ancho: <m>

alto: <m> escalaU: <m> escalaV: <m> |CILINDRICO Sp: <i> <j> <k> longitud: <m>

escalaU: <m> escalaV: <m> >

Lista Poligonos:P <n>: <n. vertices> <a> <b> <c>... M: "<material>" S: <n> MT: <n> · · · ·

4.4.2 FICHERO DE MATERIALES.

Un fichero de materiales o librería de materiales puede incluir tantos materiales como elusuario desee. Su formato es el siguiente:

Material: "<nombre>"TipoMaterial <ARTISTICO | DIELECTRICO | CONDUCTOR>ModeloSombreado <CONSTANTE | GOURAUD | PHONG>ModeloIluminacion <AMBIENTAL | GOURAUD | PHONG | BLINN>Alambrico <SI | NO> [grosor: <m>] [verATraves: <SI | NO>]DosLados <SI | NO>Ka <k>Kd <k>Ks <k>n <m>Transparencia <k>CaidaTransp <m>Ca <r> <g> <b> → Si TipoMaterial es ARTISTICOCd <r> <g> <b> → Si TipoMaterial es ARTISTICO

Page 45: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 45

Cs <r> <g> <b> → Si TipoMaterial es ARTISTICO

<<<Si TipoMaterial es DIELECTRICO o CONDUCTOR>>>AtenuacionGeometrica <NULA | TORRANCE>ni <k>nt <k>k <k>Ca<m> <k> → curva espectral · · · ·Cd<m> <k> → curva espectral · · · ·Cs<m> <k> → curva espectral · · · ·

TexturaColor <NINGUNA | 2D | 3D> peso: <k><<<Si TexturaColor es 2D >>>NombreFichero <nombreFichero> formato: <formatoFichero>Espejo <SI | NO><<<Si TexturaColor es 3D >>>Tipo <MARMOL <1 | 2 | 3 | 4> |

MADERA <1 | 2 | 3> |AGATA <1 | 2 | 3> |AGUJERO <HOLLOS | JAGUAR | BULTOS> |GRANITO |ARENA >

TexturaProtuberancia <NINGUNA |ABOLLADOS |ARRUGAS <escala> |OLAS <frecuencia> <fase> |RIZOS <frec> <fase> >

4.5 TÉCNICAS DE OSCILACIÓN.

Como ya se comentó al describir los módulos que integran esta librería gráfica 3D, a lahora de visualizar los resultados obtenidos en un dispositivo de salida, como una pantalla o unaimpresora, se pueden utilizar tantos colores como se quieran y estén disponibles, desde 256 hasta16.8 millones de colores. Internamente se trabaja en color real, y los resultados son más realistascuantos más colores se utilicen. El problema está en que no todos los sistemas de salida soncapaces de desplegar 16.8 millones de colores, con lo que se debe reducir el número de colores desalida. Si este número de colores de salida es de 32000 o 64000, no suele haber mayorcomplicación y se resuelve haciendo un simple, pero efectivo truncado de paleta. Aunque si unoes muy observador, en ciertas imágenes se pueden seguir apreciando transiciones de color algobruscas.

Page 46: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Diseño 46

Cuando sí hay problemas graves es cuando la salida se tiene que hacer en 256 colores.En este caso, el truncado de paleta, no produce unos resultados muy satisfactorios, y se deberecurrir a otras técnicas de reducción de paleta. Sin duda, los métodos más efectivos son los quetrabajan a posteriori, una vez que se tiene toda la imagen, y reducen la paleta de coloresaplicando técnicas estadísticas. En un futuro se puede incorporar uno de estos algoritmos.

Pero hay otra forma sencilla de reducir la paleta de colores, mediante técnicas deoscilación, más conocidas como dither. La idea consiste en tratar de engañar al ojo humano deforma que parezca que se representan más colores, haciendo un entramado, con los coloresrealmente disponibles. De entre las varias posibilidades, se ha implementado una técnica conocidacomo oscilación ordenada, que emplea matrices de error precalculadas, que sirven para creardiferentes patrones de intensidad. Más concretamente se ofrece la posibilidad al usuario deutilizar un dither de 2x2, uno de 4x4, o no utilizar dither.

4.6 DISEÑO DEL ENTORNO GRÁFICO.

Para facilitar el uso del visualizador gráfico, se ha desarrollado un entorno gráficoamigable para que se pueda comprobar de forma rápida y sencilla toda la potencia de la libreríagráfica 3D diseñada. Esta es sólo una aplicación de ejemplo, y no uno de los objetivos principalesdel proyecto.

En realidad, se han creado dos entornos gráficos. Una primera versión funciona bajo MS-DOS y utiliza las librerías gráficas de propósito general de Borland (BGI), aunque es bastanterudimentaria. La más interesante, es sin duda, la segunda versión y es a la que verdaderamente sele puede aplicar el calificativo de entorno gráfico amigable. Ha sido desarrollada para estacionesde trabajo Unix que funcionen bajo XWindow. Para la implementación se ha utilizado la libreríagráfica de propósito general XView, de Sun MicroSystems. El entorno gráfico en sí es bastantesencillo. Permite al usuario desplegar tantas vistas 3D como desee de una escena; se puede hacerzoom y mover cada cámara hacia arriba, abajo, izquierda y derecha; permite la selección demúltiples objetos, y las rotaciones de ellos en cualquiera de los ejes coordenados; permite cambiarde forma dinámica el material de cualquier objeto de la escena,… Por último, se pueden grabar enformato TGA los mapas de sombras utilizados, en una representación de escala de grisesindicadora de la profundidad.

4.7 CONVERSOR DE FICHEROS DE 3D STUDIO.

Para facilitar la importación de escenas desde programas modeladores, se ha desarrolladoun conversor de ficheros del formato ASCII de 3D Studio al formato del visualizador construido.De esta forma se han podido importar escenas complejas, ayudando a la depuración de errores ya comparar la calidad de las imágenes obtenidas.

Page 47: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Conclusiones 47

5. CONCLUSIONES Y VÍAS FUTURAS.

Se ha desarrollado un visualizador poligonal tridimensional completo, que ofrece unacalidad de las imágenes sintetizadas similar a la ofrecida por software comercial.

Para escenas con bajo nivel de reflexión, la calidad de las imágenes es similar a laofrecida por la técnica de trazado de rayos, con un tiempo de generación mucho menor.

Se ha diseñado e implementado una librería gráfica de visualización tridimensional,aportando un conjunto de instrucciones básicas para la creación de otros visualizadores.

Se ha podido comprobar, cómo la utilización de modelos de iluminación avanzados, quetrabajan con las propiedades físicas de los materiales, leyes de reflexión de Fresnel, factor deatenuación geométrica,…, como es el modelo de iluminación de Blinn, consiguen generar deforma muy realista ciertos materiales como los metales y dieléctricos.

También se ha podido comprobar cómo la utilización de texturas de superficie, tantotexturas de color como texturas de protuberancias, es uno de los avances más importantes a lahora de obtener resultados fotorrealistas.

En cuanto a las aplicaciones futuras, la librería gráfica diseñada tiene muchasposibilidades de ampliación. Futuras ampliaciones pueden incluir:

• nuevos modelos de iluminación más complejos y realistas,• reflexiones del entorno,• manejo de más formatos gráficos,• técnicas de antialiasing, para suavizar el contorno escalonado en los bordes de los

polígonos causado por las limitaciones físicas de los dispositivos de salida,• incorporación de técnicas de trazado de rayos para el algoritmo de visualización, o

únicamente para una generación de sombras más realista.

Page 48: SISTEMAS Y PROYECTOS INFORMÁTICOS - UM · 1. texturas de color 3D o texturas procedurales, 2. texturas de color 2D o de mapas de bits. • Texturas de protuberancias , que producen

Bibliografía 48

6. BIBLIOGRAFÍA.

A continuación se presenta la bibliografía que se cita en el documento.

[BERM95] Bermúdez Ruiz, J. A., “Técnicas de texturación tridimensional para trazado derayos”. Proyecto fin de carrera, Facultad de Informática, Universidad de Murcia,Diciembre 1995.

[BLINN77] Blinn, J.F. “Models of Light Reflection for Computer Synthesized Pictures”.SIGGRAPH 77, 192-198.

[BUIT75] Bui Tuong, Phong, “Illumination for Computer Generated Pictures”. CACM,18(6), Junio 1975, 311-317.

[CARP84] Carpenter, L., “The A-buffer, an Antialiased Hidden Surface Method”.SIGGRAPH 84, 103-108.

[CATM74] Catmull, E., “A Subdivision Algorithm for Computer Display of CurvedSurfaces”. Ph. D. Thesis, Computer Science Department, University of Utah,Diciembre 1974.

[FOLE90] Foley, J.; van Dam, A.; Feiner, S.; Hughes, J., “Computer Graphics, Principlesand Practice”. Ed. Addison-Wesley, The Systems Programming Series, 1990.

[GOUR71] Gouraud, H., “Continuous Shading of Curved Surfaces”. IEEE Trans. onComputers, C-20(6), Junio 1971, 623-629.

[HALL89] Hall, R., “Illumination and Color in Computer Generated Imagery”. Ed.Springer-Verlang, 1989.

[HEAR94] Hearn, D.; Baker M.P., “Gráficas por Computadora”. Ed. Prentice-Hall, 1994.

[KAY79] Kay, D.S.; Greenberg, D., “Transparency for Computer Synthesized Images”,SIGGRAPH 79, 158-164.

[TORR66] Torrance, K.; Sparrow, M., “Polarization, Directional Distribution, and Off-Specular Peak Phenomena in Light Reflected from Roughened Surfaces”. J. Opt.Soc. Am., 56(7), Julio 1966, 916-925.

[WILL78] Williams, L., “Casting Curved Shadows on Curves Surfaces”, SIGGRAPH 78,270-274.

Otra biliografía adicional ha sido:

• Kernighan, B., Ritchie, D., “El Lenguaje de Programación C”. Ed. Prentice-HallHispanoamericana, 1985.

• Heller, D., “XView Programming Manual: for XView version 3.2”. Volumen 7. Ed.O’Reilly & Associates, XWindow System Series.