Sombreado de Phong

El sombreado de Phong se refiere a una técnica de interpolación que permite obtener el sombreado (intensidad de color) de las superficies en gráficos 3D por computadora. En concreto, se calculan las normales a cada vértice, luego se interpolan en cada pixel de los polígonos rasterizados para finalmente calcular el color del pixel basándose en la normal interpolada y el método de iluminación. El sombreado de Phong también puede referirse a la combinación específica de interpolación de Phong y el modelo de reflexión de Phong.

Este método de sombreado presenta un costo computacional más elevado que el sombreado de Gouraud ya que se debe calcular la iluminación en cada pixel pero ofrece una mejor calidad con reflejos especulares más exactos. Además la interpolación de normales tiende a restablecer la curvatura de las superficies originales que se aproximaron con una malla poligonal.

Historia

editar

El sombreado de Phong y el modelo de reflexión de Phong fueron desarrollados por Bui Tuong Phong en la Universidad de Utah, quién en 1973 lo publicó en su tesis de doctorado.[1][2]​ Los métodos de Phong fueron consideradas radicales en el momento de su introducción, pero se han convertido en un método de sombreado de referencia para muchas aplicaciones de renderización. Los métodos de Phong se han popularizado debido generalmente al uso eficiente del tiempo de cálculo por pixel renderizado.

Interpolación de Phong

editar
 
Ejemplos de sombreados: a la izquierda sombreado plano a la derecha el sombreado de Phong

El sombreado de Phong mejora al sombreado de Gouraud y proporciona una mejor aproximación a la sombra de una superficie suave. La interpolación de Phong asume una variación suave del vector normal a la superficie. El método de interpolación Phong funciona mejor que el sombreado Gouraud cuando se aplica a un modelo de reflexión que tenga una pequeña cantidad de reflejo especular tal como el modelo de reflexión de Phong.

El problema más grave con el sombreado de Gouraud se produce cuando los reflejos especulares se encuentran en el centro de un polígono de gran tamaño. Dado que los reflejos especulares están ausentes en los vértices del polígono y el sombreado Gouraud interpola con base a los colores en los vértices, el reflejo especular se perderá en el interior del polígono. Este problema se resuelve con el sombreado de Phong.

A diferencia del sombreado de Gouraud, que interpola los colores en la superficie de los polígonos (con base a los colores de cada vértice), en el sombreado Phong el vector normal es el interpolado linealmente en la superficie del polígono (con base a las normales de cada vértice del polígono). La normal de la superficie se interpola y se normaliza en cada píxel y luego se utiliza en un modelo de reflexión, por ejemplo, el modelo de reflexión de Phong, para obtener el color final del pixel. El sombreado de Phong es por tanto más costoso computacionalmente que el sombreado Gouraud ya que el modelo de reflexión debe calcularse en cada píxel en lugar de en cada vértice.

En cuanto al hardware gráfico moderno, las variantes de este algoritmo se implementa utilizando sombreadores de píxeles o fragmentos.

En el software de modelado 3D generalmente se permite elegir el ángulo límite de suavizado, de tal manera que el sombreado Phong sólo afectará las caras que estén dentro del rango de ángulo límite, para mayor precisión se pueden usar la opción de "romper aristas" para seleccionar manualmente las aristas que no serán afectadas por el sombreado Phong.[3]

Referencias

editar
  1. B. T. Phong, Illumination for computer generated pictures, Communications of ACM 18 (1975), no. 6, 311–317.
  2. University of Utah School of Computing, http://www.cs.utah.edu/school/history/#phong-ref
  3. Quinto-Axis: Tutorial de sombreado Phong, http://quinto-axis.com/2011/11/05/tutorial-c4d-sombreado-phong-suavizado/ Archivado el 13 de diciembre de 2011 en Wayback Machine.