jueves, 17 de noviembre de 2011

Definiciones 18 de noviembre

Clásicas: Iluminación local
  •                  Cálculos de iluminación por vértices
      Cada punto (x,y,z) en la superficie puede emitir luz que se caracteriza por su dirección de emisión (q,f) y la
intensidad de energía emitida en cada frecuencia l. Por lo tanto, una fuente de luz general se puede caracterizar por
la función de iluminación I(x, y, z, q, f, l) de seis variables. Nótese que se requiere dos ángulos para especificar
una dirección, y que se asume que cada frecuencia puede considerarse de manera independiente. Desde la
perspectiva de una superficie iluminada por esta fuente, se puede obtener la contribución total de la fuente al integrar
sobre la superficie de la fuente, un proceso que considera los ángulos de emisión que llegan a la superficie bajo
consideración y que debe considerar también la distancia entre la fuente y la superficie.
Para una fuente de luz distribuida, como un foco de luz, la evaluación de este integral es difícil, usando métodos
analíticos I numéricos. A menudo, es mas fácil modelar la fuente distribuida con polígonos, cada una de las cuales
es una fuente simple, o aproximando a un conjunto de fuentes de punto.


L     Los cálculos de iluminación en el tradicional proceso de rasterización no tienen en cuenta la obstrucción de objetos.
  1. Puntos en juego:
    1. P=(x,y,z) : punto de una cara (p.ej., P1P2P3) del objeto, en el cual se pretende calcular la iluminación
    2. S= (Sx, Sy, Sz) : posición de una fuente de luz (puede haber varias)
    3. E=(Ex, Ey, Ez) : posición del ojo o punto de vista (centro de proyección)
  2. Cálculo de las direcciones necesarias (vectores unitarios):

    1. (P1P2P3, vértices de la cara en sentido antihorario, vista la cara desde fuera del objeto)
  3. Iluminación en P de acuerdo a nuestro modelo:
  4. Observaciones (¡OJO!):
    1. (y por tanto ) son distintos para cada fuente de luz
    2. El cálculo se hace en mundo real, ANTES de hacer PREWARPING (el prewarping deforma los ángulos).
      Se ha de obtener (o estimar) el punto P correspondiente al píxel de pantalla al que queremos dar color
    3. Los vectores han de ser UNITARIOS
  •    Posterior relleno de triángulos (rastering).
-Comprobar si cada nuevo pixel es visible o no (comprobación de profundidad). 
-Interpolación lineal del color para el nuevo pixel (método de Gouraud). 
-Si existe una textura definida o transparencia, efectuar la modificación de color correspondiente. 
     Se trata de la última fase, en ocasiones la más costosa, del proceso, por lo que es la primera que se suele integrar en el hardware gráfico. En esta etapa se trata de asignar colores a los pixels correspondientes al interior de cada triángulo proyectado que cae dentro del área de visualización. Los colores asignados deben calcularse por el método de Gouraud, interpolando linealmente entre los colores de los tres vértices.

    •      Renderizado en tiempo real
            Renderizacion: dos trazadores de rayos rastrean de un rayo de luz en una dirección inversa  de la cámara, a través de un píxel en el plano de la imagen que más tarde se convertiría en la imagen renderizada. El rayo de luz viaja desde la cámara hasta que choca con un objeto. El color de los píxeles se determina por la forma en que el rayo interactúa con ese objeto, ya sea en la sombra, la reflexión o la refracción. La mayoría de los procesadores 3D funcionan de esta manera.

    Algunos procesadores en tiempo real tales como machstudio Pro utilizan una técnica conocida como rasterización. En el rasterisers nivel muy básico de trabajo mediante la adopción de un conjunto de vértices de la geometría 3D y luego dibujar triángulos rápidamente. A continuación, utiliza los valores en la esquina de cada triángulo para determinar el resultado. Rasterizadores no se puede calcular reflexiones o refracciones exacta pero puede hacer una aproximación. Es una técnica común en los juegos de video debido a su velocidad y también se utiliza para la mayoría de las ventanas gráficas en el software CAD 3D. Autodesk 3ds Max saca el máximo partido de esta con las nuevas herramientas integradas de nitrógeno de la vista.

    Definición de tiempo real

    El termino  tiempo real ha sido un tanto confuso cuando se trata renderes  en tiempo real. El ojo humano se conforma con ver alrededor de 30 cuadros por segundo que es el tipo de marco común para el vídeo. Aceptamos que el video corre bastante suave y no saltar de un fotograma a otro. No todos los procesadores en tiempo real pueden ejecutar sin problemas y este es puramente por el hecho de que hoy en día el hardware disponible, no es lo suficientemente rápido todavía.

    Rasterisers puede funcionar hasta a 60 fotogramas por segundo y es por ello que se ha convertido en el estándar para los juegos de video. Algunos espectadores ni siquiera lo consideran en tiempo real a menos que se ejecuta al menos a 60 cuadros por segundo.

    •     Realistas: iluminación global
    Al activar la iluminación global (IG) en alguna escena, el tiempo de render aumenta tanto como lo hace su calidad y realismo . Para solucionar esto, existen métodos de simulación de IG, que permiten lograr resultados bastante aceptables, en comparación a la reducción del tiempo de render.

    Este método permite trabajar sobre escenas estáticas o animaciones, siendo más eficiente en éstas últimas, pues su implementación requiere algo más de tiempo que configurar la IG en algún motor de render, por lo que algunas veces, simplemente, puede ser más eficiente esperar que el motor de render realice los cálculos necesarios.

    Su utilización se aplica tanto en escenas exteriores como en escenas interiores, sin embargo, se debe escoger el método adecuado para el tipo de escena: El método por “domo” o “sky dome”, es utilizado para simular IG en espacios exteriores. Este es el método más popular para simulación de IG, existiendo incluso plugins que automatizan el proceso. El método de “luces omnis”, por otro lado, se puede utilizar tanto para escenas exteriores como para interiores. A pesar de basarse en la misma teoría, es más adaptable a cualquier escenario que el método de domo.
    Proceso de implementación
    Domo: En líneas generales, se construye creando una luz spot o direccional, que emita sombras, y que apunte al objeto o grupo que se quiera iluminar. A partir de esta luz, se van creando instancias que apunten hacia el mismo target, con lo que se consigue que el objeto iluminado se encuentre dentro de un domo de luces


    Finalmente, se debe regular la intensidad y el color para cada una de las luces. Generalmente, la iluminación correcta se consigue configurando cada luz con una intensidad de 1/x, donde x corresponde a la cantidad de luces que hay en la escena. De esta manera se consigue una sumatoria total de 1.0 en la intensidad.
    La cantidad de luces que se utilicen, variará dependiendo de la calidad y el tiempo de render que se desee obtener, sin embargo se debe considerar el uso de instancias para evitar configurarlas una a una.
    Para lograr un efecto más realista, es posible crear un segundo domo que se ubique por debajo de los objetos iluminados, con una intensidad mucho menor, para simular rebotes de luz. Grupo de omnis: Al igual que la iluminación por domo, se debe crear instancias de una misma luz, pero en este caso, debe ser a partir de una luz omnidireccional. El objetivo de este método es crear un muro de luces, que sea proporcional al tamaño de la escena, el cual debe ser nuevamente instanciado, para terminar formando un cubo.
    •        Trazado de rayos
    El método de trazado de rayos (propuesto por Whitted como mejora del método de Ray Casting es una alternativa elegante y sencilla que permite calcular de una forma unificada la reflexión y la refracción de la luz, sombras, eliminación de superficies ocultas y otros efectos necesarios para conseguir escenas fotorrealistas. De este método surgieron aproximaciones más completas que resolvían de forma más exacta la ecuación de render, basándose en los mismos principios de trazado de los caminos que sigue la luz. Por esta razón, prestaremos especial atención a la descripción de este método.
    La idea básica del trazado de rayos es seguir el camino de la luz desde las fuentes emisoras de fotones hasta que llegan a la posición del observador. La simulación del camino natural de la luz presenta el principal inconveniente de que la mayoría de los rayos nunca llegan al observador (o plano de imagen), lo que resulta computacionalmente prohibitivo. Este es el esquema de trazado de rayos hacia delante (forward RayTracing).
    Para evitar trazar un número alto de rayos que no llegarán al plano imagen, y como solución sencilla a la discretización del espacio continuo en píxeles, se emplea el trazado de rayos hacia atrás (backward RayTracing), donde los rayos parten del plano imagen hasta alcanzar los objetos de la escena. La Figura 1 muestra un esquema general de los componentes básicos que forman un trazador de rayos hacia atrás.
    Figura 01. Esquema de funcionamiento del RayTracing.
    Una de las principales características del método de RayTracing es el cálculo recursivo de la contribución de la luz debido a la reflexión y refracción que se produce en ciertas superficies. Así, definimos cuatro tipos de rayos:
    • Rayos Primarios o Visuales (V): Son los rayos que parten de la cámara virtual, pasando por cada uno de los píxeles en el plano de imagen. Para cada elemento de la escena se comprueba si el rayo visual intersecta con alguno de ellos, quedándonos con el punto de intersección más cercano de toda la lista de objetos.
    • Rayos de Sombra (S): Parten del punto de intersección con el objeto y tienen dirección hacia las fuentes de luz. De nuevo se realiza una prueba de intersección del rayo con todos los objetos de la escena para ver si hay algún objeto que corte su trayectoria, en cuyo caso el punto de origen del rayo estaría en sombra.
    • Rayos Reflejados (R): Si el objeto donde intersectó el rayo tiene propiedades de reflexión de tipo espejo, se generará un nuevo rayo reflejado en ese punto. Este rayo se construirá típicamente en un procedimiento recursivo, pasando a comportarse como un rayo primario en la siguiente iteración del algoritmo.
    • Rayo Transmitidos (T): En el caso de objetos en mayor o menor grado transparentes, y de forma análoga al tratamiento para los rayos reflejados, se generará un rayo transmitido. De igual forma, este nuevo rayo se comportará como un rayo primario en la siguiente iteración del algoritmo.
    •    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. Cada una de estas partes, según su grado de reflexividad, su orientación y su distancia con respecto a las fuentes de luz original, se convertirá, en una segunda vuelta, en un nuevo emisor de energía lumínica, una fuente de luz secundaria que iluminará a su vez a los objetos que le rodean.

    Casi todos los modelos de iluminación necesitan conocer la normal de cada superficie para calcular su color. 

         El primero, llamado método de Gouraud, efectúa una interpolación a partir de los colores calculados por los vértices del polígono, en los que se conoce la normal. El segundo llamado método de Pong, interpola la normal en el punto en estudio a partir de las normales en los vértices, calculando a continuación el color con la ayuda de esta normal según el modelo de iluminación elegido 
    •     Cálculos de iluminación por pixel
    Iluminación por fragmento (por pixel) puede ser elaborada en hardware de gráficos moderno como un proceso de post-rasterización por medio de un programa de shader.
    Pixel Shader (PS) como un pequeño programa que procesa fragments (algo así como pixels con más datos) y que se ejecuta en la GPU. Al crear un PS, se crea una función de procesado de fragmentos que manipula datos de fragmentos.
    Frecuentemente necesitan datos del VS, llegando incluso a veces a ser “conducidos” por éste. Por ejemplo, para calcular una iluminación por pixel, el PS necesita la orientación del triángulo, la orientación del vector de luz y en algunos casos la orientación del vector de vista.

     Alto acabado
    •      Sombreado Constante o Plano
            Obtenemos una intensidad que aplicamos a un conjunto de puntos de un objeto (p.ej. todo un
    t        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

     Un cálculo para todo el polígono
    •      Interpolación de Intensidades (Gouraud)
             Se basa en la interpolación de intensidad o color

    ·         Considera que facetas planas vecinas proceden deaproximar una superficie curva (salvo que se  declare una arista real entre ambas)

    ·         Elimina en gran medida las discontinuidades de iluminación

    ·         Es sencilla, pero produce peores resultados en objetos con brillos especulares que el método de Phong

    ·         Implementado en OpenGL
    •      Interpolación de Normales (Phong).
    • Necesita la dirección de la normal en cada vértice (si se desconoce, se calcula a partir de las normales de las facetas que contienen el vértice)

    • Si dos facetas están separadas por una arista real, se utilizan dos normales diferentes para
    trabajar en cada faceta (se promedian las normales situadas sólo a un lado de la arista)

    • A partir de la normal en cada vértice, se evalúa la ecuación de iluminación (sólo para cada vértice) y se obtiene un valor de intensidad para cada uno de ellos

    • Se realiza una interpolación bilineal para obtener la intensidad en cada punto dentro de la
    faceta (de forma incremental)

    Produce mejores resultados, a un coste computacional mayor (hay que incrementar la dirección de la normal en tres direcciones, normalizarla y calcular la ecuación de sombreado en cada punto)

    • Si el coeficiente de reflexión especular es pequeño, los resultados no difieren tanto (se pueden combinar objetos sombreados por ambos métodos en una escena)


    •      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 el lente de la cámara sintética y pasan por el centro de proyección. 
    •      Recortado de caras traseras
     En una escena, los objetos se tapan a sí mismos y entre sí, quedando siempre partes ocultas al observador. Las partes ocultas deben ser eliminadas de posteriores operaciones: proceso de visibilidad.
    El proceso de visibilidad es complejo, por lo que existen numerosas soluciones.
     Técnicas implicadas:
    •      Cálculo de normales
    •       Ordenación
    •       Algoritmos de visibilidad
    •     Aceleración por coherencia
    Técnicas de aceleración
    •            Eliminación de caras traseras
    •            Coherencia
    •      Contenedores
    Algoritmo fundamental en el espacio de la imagen: trazado de visuales (ray casting)
    •     Buffer de Profundidad.
         El Z-Buffer se basa en que al generar la posición de un punto en la pantalla la computadora reserve una zona de memoria especial, llamada Z-Buffer, información relacionada con la profundidad del punto que ocupa en la escena representada. Cuando el ordenador representa un nuevo punto consulta el Z-Buffer del píxel que corresponde en pantalla. Si el valor que ya existe en el píxel es mayor que el que posee el nuevo punto, el sistema asume que este último es el visible y lo sustituye en la memoria del Z- Buffer.

    v  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. Este aspecto no será tomado en cuenta en los modelos más sencillos.
    •   Fuentes de Color 
         No solamente las fuentes de luz emiten diferentes cantidades de luz en diferentes frecuencias, pero también sus propiedades direccionales varían con la frecuencia. Por lo tanto, un modelos físicamente correcto puede ser muy complejo. Para la mayoría de las aplicaciones, se puede modelar fuentes de luz en base a tres componentes primarios, RGB, y puede usar cada uno de los tres colores fuentes para obtener el componente de color correspondiente que un observador humano vería.
    •       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. 

         En algunos cuartos, las luces se diseñan y ubican para proveer iluminación uniforme en el cuarto. Tal iluminación se logra mediante fuentes grandes con difusores cuyo propósito es esparcir la luz en todas las direcciones. Se puede crear una simulación precisa de tal iluminación, modelando todas las fuentes distribuidas, y luego integrando la iluminación de estas fuentes en cada punto de una superficie reflectora. Hacer tal modelo y generar la escena sería un tarea formidable para un sistema gráfico, especialmente si se desea ejecución en tiempo real. De manera alternativa, se puede ver el efecto deseado de las fuentes: lograr un nivel de luz uniforme en el cuarto. Esta iluminación uniforme se llama luz ambiente. Si se sigue este segundo enfoque, se puede postular una intensidad ambiente en cada punto del ambiente. Por lo tanto, iluminación ambiente se caracteriza por una intensidad Ia, que es idéntica en cada punto de la escena.
    •       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 θ.
    •   Fuentes de Luz Distantes 
         La mayoría de los cálculos de sombreado requieren la dirección de un punto sobre la superficie a la fuente de luz. Según se mueve a lo largo de la superficie, se debe recomputar este vector para calcular la intensidad en cada punto, una computación que es una parte significativa del cálculo del sombreado. Sin embargo, si la fuente de luz está lejos de la superficie, el vector no cambiará mucho según se mueve de un punto a otro, al igual que la luz del sol da en todos los objetos cercanos entre si con el mismo ángulo. 
    •   Intensidad completa
    La intensidad completa exclusivamente por efectos de iluminación es la siguiente:


    No hay comentarios:

    Publicar un comentario