viernes, 27 de abril de 2012

UNIDAD 4




AGREGAR UN SOMBREADO A UN POLIGONO EN OPENGL

Es un método manejado por OpenGl que es de tal uso para rellenar de color los polígonos que se estén realizando en el ámbito de la graficacion.
Antes que nada se especifica haciendo uso de la función glShadeModel. Si el parámetro es GL_FLAT, ogl rellenará los polígonos con el color activo en el momento que se definió el último parámetro; si es GL_SMOOTH, ogl rellenará el polígono interpolando los colores activos en la definición de cada vértice.
 Este código es un ejemplo de GL_FLAT: 

glShadeModel(GL_FLAT);


glBegin(GL_TRIANGLES);  


      glColor3f(1.0f, 0.0f, 0.0f);  // activamos el color rojo


      glVertex3f(-1.0f, 0.0f, 0.0f);


      glColor3f(0.0f, 1.0f, 0.0f);  // activamos el color verde


      glVertex3f(1.0f, 0.0f, 0.0f);


      glColor3f(0.0f, 0.0f, 1.0f);  // activamos el color azul


      glVertex3f(0.0f, 1.0f, 0.0f);


glEnd();
  
Tecnicas de sombreado clasicas y avanzadas

Clásicas: Iluminación local.
Luces que no son extensas, como las reales, sino inextensas, puntuales. Y, por añadidura, se relacionan con los objetos como mónadas aisladas, sin tener en cuenta la interacción entre ellos. Esto explica lo artificioso de muchas de las técnicas que se describirán más adelante y que buscan compensar estas limitaciones.

Cálculos de iluminación por vértices
Para aplicar iluminaciona un objeto necesitamos asociar un vector normal a cada vertice del objeto.  Cuando tenemos la normal calculada tenemos que normalizarla, o sea, dividir ese vector por su propio modulo para que sea unitario, pero también podemos hacer que se encargue la OpengGl activando la normalización con el comando glEnable GL_NORMALIZE o desactivarla con glDisable GL_NORMALIZE.
El usar GL_NORMALIZE dependerá de nuestra aplicación ya que si forzamos a que sea OpenGl el que las utilice se ralentiza por que le estamos obligando a hacer mas cálculos de los que debe.
Para definir las normales en opengl utilizaremos la función glNormal3f(X,Y,Z) por ejemplo para definir una cara con 4 vértices la definiremos de la siguiente manera:
GlBegin GL_QUADS
glNormal3f nX,nY,nZ
glvertex3f x,y,z
glvertex3f x,y,z
glvertex3f x,y,z
glvertex3f x,y,z
glEnd

Renderizado en Tiempo real
La idea fundamental del procesado en tiempo real es que todos los objetos deben ser descompuestos en polígonos. Estos polígonos serán descompuestos a su vez en triángulos. Cada triángulo será proyectado sobre la ventana bidimensional y rellenado con los colores adecuados para reflejar los efectos de la iluminación, texturas, etc. Una vez se han generado los triángulos, en la pipeline existen dos partes claramente diferenciadas: una primera etapa operaciones realizadas sobre cada uno de los vértices, y después de que éstos se proyecten sobre la ventana, entonces comienza una segunda fase de cálculos realizados para cada pixel cubierto por triángulos.


Realistas: iluminación global
 Son aquellos en los que se considera que la intensidad de luz en un punto de la superficie de un objeto se debe a las fuentes luminosas y al resto de los elementos existentes en la escena.


Realistas: Iluminación global
Son sencillos y rápidos pero proporcionan imágenes muy simples, que no representan adecuadamente el modo en que la luz ilumina los objetos y los espacios. Esto no quiere decir que no sean útiles para un gran número de casos, y es muy importante calibrar adecuadamente que es lo que se necesita, pues puede muy bien ocurrir que un cálculo local proporcione imágenes relativamente esquemáticas pero más adecuadas para la representación de un proyecto.


Trazado de rayos
El trazado de rayos computa la interacción de la luz desde un punto de vista determinado y es particularmente adecuado para superficies reflectantes. Puede utilizarse como propiedad especifica de un determinado material. Se traza un rayo desde la posición del observador a través de cada uno de los píxeles del plano de proyección (una de las ventajas del raytracing es que los rayos que se procesan son sólo los rayos que parten del observador ),

Radiosidad
Está basado en principios generales que se pueden encontrar en un manual general sobre rendering. En el estadio inicial la escena consta de dos tipos de objetos: objetos que emiten luz y objetos que reciben luz. A partir de aquí, en una primera vuelta, se computa la luz que recibe cada objeto o, en una aproximación más exacta, cada parte de un objeto, según una subdivisión cuya densidad puede precisarse en sucesivas aproximaciones.


Cálculos de iluminación por pixel
La iluminación por píxel en tiempo real es una tecnología revolucionaria ofrecida como primicia por NVIDIA Shading Rasterizer. La iluminación dinámica a nivel de píxel libera a los desarrolladores de las restricciones de otros sistemas de iluminación y pone a su alcance toda una gama de sofisticados efectos. Antes de que el color final del píxel sea decidido, un cálculo de iluminación debe ser computado para sombrear a los píxeles basados en alguna luz que puede estar presente en la escena.

Alto Acabado
Sombreado Constante o plano. Un cálculo para todo el polígono. Obtenemos una intensidad  que aplicamos a un conjunto de puntos de un objeto (p.ej. todo un triángulo). Aceleramos el proceso de síntesis.  Correcto si se verifica: Fuente de luz en el infinito. Observador en el infinito. El polígono representa una superficie plana real del objeto que se modela y no es una aproximación de un objeto curvo.

 Sombreado Constante o Plano
 Obtenemos una intensidad que aplicamos a un conjunto de puntos de un objeto 
  *Aceleramos el proceso de síntesis
  *Correcto si se verifica.
  * Fuente de luz en el infinito
  *Observador en el infinito

Modelo de Reflexión Phong 
El modelo de reflexión de Phong es eficiente y suficientemente aproximado a la realidad física para producir buenas imágenes, bajo una variedad de condiciones de luz y propiedades de materiales. Apoya los tres tipos de interacciones material-luz: ambiente, difusa y especular. Si se tiene un conjunto de fuentes puntos, con componentes independientes para cada uno de los tres colores primarios para cada uno de los tres tipos de interacciones material-luz.

Ray Tracing 
En muchas formas, ray tracing es una extensión al enfoque de rendering con un modelo de iluminación local. Está basado en la observación previa que, de los rayos de luz saliendo de una fuente, los únicos que contribuyen a la imagen son aquellos que entran al lente de la cámara sintética y pasan por el centro de proyección.

Buffer Stencil. 
Stencill Buffer es una memoria intermedia que analiza y actualiza píxeles (con sus operaciones) junto con “depth buffer” o buffer de profundidad. Añade planos de bits adicionales para cada píxel además de los bits de color y profundidad. 

 Stencil buffer es similar al buffer de profundidad en que los dos son colección de planos de bit que no se pueden mostrar. Del mismo modo que el buffer de profundidad asocia a cada píxel de la ventana un valor de profundidad, el stencil buffer asocia su propio valor a cada píxel mostrado. Cuando el buffer de profundidad esta activado los valores de profundidad son usados para aceptar o rechazar fragmentos, del mismo modo los valores de Stencil buffer son usados para aceptar o rechazar fragmentos.

Buffer de Acumulacion
 Normalmente se usa un buffer de acumulación para unir las 2 imágenes 


Fuentes de Luz 
  La luz puede dejar una superficie mediante dos procesos fundamentales:
·                     Emisión propia 
·                     Reflexión 
 Normalmente se piensa en una fuente de luz como un objeto que emite luz solo mediante fuentes de energía internas, sin embargo, una fuente de luz, como un foco, puede reflejar alguna luz incidente a esta del ambiente. 

 Fuentes de Luz
La luz puede dejar una superficie mediante dos procesos fundamentales:
*  Emisión propia
* Reflexión

Luz Ambiente
La luz ambiente ilumina por igual todas las zonas en sombra para simular el efecto de interacción entre objetos que hace que las partes en sombra de los objetos queden parcialmente iluminadas.

Spotlights (direccionales) 
 Los spotlights se caracterizan por un rango delgado de ángulos por los cuales se emite luz. Se puede construir un spotlight sencillo de una fuente de punto limitando los ángulos de donde la luz de la fuente se puede ver. Se puede usar un cono cuyo ápice está en ps, apuntando en la dirección ls, y cuyo ancho está determinado


por el ángulo θ.
COMO SE AGREGAN LOS RELLENOS DE POLIGONOS EN OPENGL

Dentro del par glBegin, glEnd solo pueden ir instrucciones OpenGL para definir objetos tales como vértices, y colores (existen otras más complejas como normales y materiales) y no transformaciones ni cambios de estado (diferentes a los especificados), adicionalmente dentro del par pueden ir instrucciones de programación del lenguaje tales que ciclos, condicionales, llamados a funciones, etc.

GlBegin (GL_POLYGON)’;
glColor3f (1.0, 0.0, 0.0); // rojo
For (int i=0; i<10; i++){
glVertex3f (1.0/i, i*i, 0.0);
}
glColor3f (0.0, 1.0, 0.0); // verde
glVertex3f (1.0, 0.0, 0.0);
glColor3f (0.0, 0.0, 1.0); // azul
glVertex3f (1.0, 1.0, 0.0);
glEnd();

 La función glColor define el color de rellenado actual y lleva como parámetros los valores de las componentes RGB del color deseado y, opcionalmente, un cuarto parámetro con el valor alpha. Estos parámetros son flotantes y se mueven en el rango [0.0, 1.0].

glColor3 [f] [v]: para cambiar el color actual de dibujo, puede estar en bloque glBegin/glEnd



lunes, 16 de abril de 2012

TAREA CIRCULO Y ESFERA


ESFERA

Para una esfera como sabemos en coordenadas cartesianas se es requerido de un radio r el cual esta centrado en el origen de coordenadas de los puntos (x,y,z) los cuales deben de desarrollarse en las siguientes ecuaciones las cuales se encuentran escritas de esta  forma debido a que es para presentarla de manera paramétrica y hace uso de los angulos de latitud y longitud.


Elipsoide
tratandose de una superficie elipsoidal se puede describir como una ampliación de la superficie esférica, en la donde el radio en ires direcciones perpendiculares entre sí puede tener valores diferentes. La representación cartesiana de los puntos de la superficie de un elipsoide centrado en el origen es:
Una representación paramélrica de un elipsoide en función del ángulo de la latitud 0 y del ángulo de la longitud 0 que a continuacion se muestra es:

x = r eos 0 eos ft  -7i/2 <<p<7V/2

y = t\ eos 0 sin ft - k<6<k

Z = r. Sin 0

Un objeto con forma de donut(dona) se denomina toro. Muy a menudo se describe como la superficie generada al hacer girar un círculo o una elipse alrededor de un eje coplanario que es externo a la cónica.