Anda di halaman 1dari 74

Modelos de Iluminação

Métodos de surface-rendering

Beatriz Sousa Santos, J. Madeira 1


• As imagens realistas obtêm-se :

– usando projecções perspectivas da cena

– aplicando efeitos de iluminação naturais às superfícies visíveis

• Os efeitos de iluminação naturais obtém-se usando:

– um modelo de iluminação que permite calcular a cor a atribuir a


cada ponto das superfícies dos objectos da cena

– um método de surface-rendering que aplica o modelo de


iluminação para determinar a cor de todos os pixels

2
• O fotorealismo envolve:

- Representação precisa das propriedades das superfícies

- Boa descrição física da iluminação da cena

• O que implica conhecimentos de princípios de Física e Psicologia

• E pode significar modelação de:


– texturas das superfícies,
– transparência
– reflexões
– sombras
– etc.
3
• Os modelos de iluminação usados em Computação Gráfica

- são muitas vezes aproximações das leis físicas

- que descrevem a interacção superfície-luz

• Existem vários tipos de modelos de iluminação:

- modelos simples, baseados em cálculos fotométricos simples


(para reduzir a complexidade computacional)

- modelos mais sofisticados, baseados na propagação da energia radiante


(computacionalmente mais complexos)

4
Fontes de luz

• São objectos que radiam luz e contribuem para iluminar os objectos da cena

• Podem ser modeladas com uma grande variedade de características:

- Posição

- Cor da luz emitida

- Direcção de emissão

- Forma

5
Fontes de luz (simplificadas)

Fonte pontual isotrópica

Fonte de luz a uma distância infinita

Os raios de luz emitidos por uma


fonte situada muito longe são
praticamente paralelos

6
Fontes de luz mais sofisticadas

Foco de luz direccional


(definido por uma direcção e um ângulo)

7
Fontes de luz ainda mais sofisticadas

Fonte de luz não pontual e


próxima do objecto

8
Efeitos de iluminação das superfícies

• Um modelo de iluminação utiliza as propriedades ópticas atribuídas à superfície:

- coeficientes de reflexão para cada cor

- grau de transparência

- parâmetros de textura da superfície

• Quando a luz incide numa superfície opaca:

- parte da luz é absorvida

- parte é reflectida

9
10
• A quantidade de luz reflectida depende das características da superfície

- As superfícies brilhantes reflectem maior quantidade de luz

- As superfícies mate reflectem menor quantidade de luz

• As superfícies transparentes transmitem parte da luz

11
• As superfícies rugosas tendem a espalhar a luz reflectida em todas as
direcções

-reflexão difusa

E parecem igualmente brilhantes a partir de qualquer ângulo de visão

• As superfícies mais lisas reflectem mais luz em determinadas direcções

-reflexão especular (highlight)

E apresentam zonas mais brilhantes

12
• Outro factor a considerar num modelo de iluminação é a

- Iluminação ambiente

• Uma superfície que não é directamente


iluminada pode ser visível devido à luz
reflectida pelos outros objectos da cena

• A luz reflectida por uma superfície é


a soma das contribuições das fontes de
luz e da iluminação ambiente

13
Modelos de iluminação básicos

• Os modelos de iluminação sofisticados calculam com precisão os efeitos das


interacções entre a energia radiante e os materiais que compõe as superfícies

• Os modelos básicos usam aproximações para representar os processos físicos


que produzem os efeitos de iluminação apresentados

• O modelo empírico descrito a seguir produz resultados suficientemente bons


para a maioria das situações e inclui:

- iluminação ambiente

- reflexão difusa

- reflexão especular

14
Iluminação ambiente

• A iluminação ambiente é incluída sob a


forma de um valor constante para toda a
cena:
Ia
produzindo uma iluminação uniforme para
todos os objectos

• Neste caso as reflexões produzidas pelas


superfícies:

- são independentes da direcção de visão

- são independentes da orientação da


superfície

- dependem apenas das propriedades


ópticas da superfície
15
Reflexão difusa

• Considera-se que a luz incidente é espalhada com igual intensidade em todas


as direcções, independentemente da direcção de visão

• As superfícies com estas características chamam-se reflectores Lambertianos


ou reflectores difusos ideais

• Esta reflexão pode ser calculada pela Lei de Lambert:

Intensidade Energia radiante por un. de tempo


área projectada

cos ΦN
α = const.
dA cos ΦN

16
• A iluminação ambiente, isoladamente, produz resultados pouco
interessantes na representação de uma cena

I ambdiff = Kd Ia

Apenas iluminação ambiente

17
• Em geral, inclui-se pelo menos uma fonte de
luz (frequentemente no ponto de vista)

• Neste caso, a quantidade de luz incidente


depende da orientação da superfície em
relação à direcção da fonte luminosa

• Uma superfície que é perpendicular à direcção


da luz, é mais iluminada que uma superfície
com igual área mas oblíqua

• Este efeito pode ser observado variando a


orientação de uma folha de papel branco em
relação à direcção da luz

18
Área projectada
• Sendo θ o ângulo de incidência (entre a direcção
da luz e a normal à superfície)

• A quantidade de luz reflectida de modo difuso por


uma superfície, correspondente a uma fonte de luz Il,
é:

• Pode-se exprimir em função dos vectores unitários:

N  normal à superfície
L  direcção de uma fonte de luz

se

se

19
Reflexão difusa numa esfera iluminada por uma fonte pontual
branca com 0< Kd <1 e sem iluminação ambiente (Ka = 0)

Somando a iluminação ambiente com a reflexão difusa:

se

se

20
Iluminação
ambiente

21
Reflexão difusa
Reflexão especular e o modelo de Phong

• Os pontos brilhantes, reflexões especulares ou highlights, que se vêm nas


superfícies brilhantes resultam da reflexão quase total da luz em áreas
concentradas

• O ângulo de reflexão especular é igual ao


ângulo de incidência (em relação à normal)

• R é o vector unitário correspondente à direcção


da reflexão especular ideal

• V é o vector unitário na direcção do ponto de vista

• Um reflector ideal reflecte apenas na direcção da reflexão especular


(apenas se vê reflexão quando V e R coincidem Φ= 0)

22
• Objectos que não sejam reflectores ideais apresentam reflexões especulares
numa gama finita de direcções em torno do vector R

• As superfícies mais brilhantes têm uma gama


de direcções de reflexão mais estreita

• O modelo de reflexão especular de Phong


estabelece, empiricamente, que a intensidade
das reflexões especulares é proporcional ao

Em que W(θ) é o coeficiente de reflexão especular

23
Com reflexão difusa Com reflexão difusa e especular

24
Superfície menos brilhante

Superfície mais brilhante


25
Variação de W(θ) para diferentes materiais
como função do ângulo de incidência

26
• Pode-se calcular cos Φ a partir do produto escalar dos versores V·R

• Não existem reflexões especulares quando:

- A fonte de luz está atrás da superfície

- V e L “estão do mesmo lado” da normal N

• Assim, assumindo que o coeficiente de reflexão especular é constante para


cada material, podemos determinar a intensidade da reflexão especular num
ponto da superfície devida a uma fonte de luz:
cos Φ

ou

R do lado oposto a V Fonte de luz atrás da superfície


27
Reflexões especulares provocadas por uma única fonte luminosa,
para vários parâmetros especulares

28
Sem iluminação ambiente, uma fonte de luz move-se em torno da esfera
29
Reflexões difusas e especulares

• Quando existe uma única fonte de luz pontual, a combinação dos três
efeitos:
- iluminação ambiente
- reflexão difusa Múltiplas fontes de várias cores:

- reflexão especular

• Quando existem múltiplas fontes de luz:

Por vezes utiliza-se o halfway vector H (entre L e V) como


aproximação de R numa versão do modelo de Phong mais
simples de calcular para superfícies não planas (com N variável)

30
Considerações quanto à cor

• Quando se usa o modelo RGB, a intensidade é especificada no modelo de


iluminação como um vector com três elementos:

• O mesmo para os coeficientes:

• Por exemplo a componente azul das reflexões difusas será:

• É possível usar outros modelos de cor (por exemplo CMY)

31
• No modelo de Phong original Ks é constante
e independente da cor da superfície

• O que provoca reflexões com a cor da fonte e


dá um aspecto de plástico aos objectos

• Existem modelos de iluminação mais


sofisticados, que permitem obter imagens
mais realistas de outros tipos de materiais

Imagens obtidas com modelos


de iluminação mais sofisticados

32
Modelo de iluminação mais sofisticado

Cook and Torrence, 1982

33
OpenGL – Lighting

• É usado o modelo de iluminação de Phong

• As características das fontes de luz e as propriedades dos materiais


são expressas usando o modelo RGB ou RGBA

– Luz emitida ou reflectida

– Coeficientes de reflexão ambiente, difusa e especular

• Podem ser definidas várias fontes de luz, controladas de modo


independente.

• Se desejado, o programador pode desenvolver e usar um modelo


mais sofisticado !!

• Mas terá de efectuar todos os cálculos necessários !!


34
OpenGL – Lighting
• Passos fundamentais:

– Associar um “vector normal” a cada vértice, que determina a sua


orientação relativamente às fontes de luz.
• Como fazer ?
• Representação de poliedros vs. aproximação de superfícies curvas

– Criar, definir as suas propriedades e posicionar as fontes de luz

– Definir as propriedades dos materiais que constituem os vários


objectos da cena

– Estabelecer algumas propriedades do modelo de iluminação


• Distância ao observador
• Iluminação ambiente global
• …
35
OpenGL – Lighting Model
• Iluminação ambiente global

GLfloat lmodel_ambient[] = { 0.2, 0.2, 0.2, 1.0};


glLightModelfv( GL_LIGHT_MODEL_AMBIENT,
lmodel_ambient );

• Distância ao observador

glLightModeli( GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE );

glLightModeli( GL_LIGHT_MODEL_LOCAL_VIEWER,
GL_FALSE );

Default! Porquê?
• Activar / Desactivar

glEnable( GL_LIGHTING );
36
OpenGL – Light Sources

• Exemplo: fonte de luz pontual

GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };


GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };

glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);


glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);

glEnable( GL_LIGHT0 );
37
OpenGL – Light Sources
• Exemplo: “spotlight”

GLfloat spot_direction[] = { -1.0, -1.0, 0.0 };
glLightfv(GL_LIGHT1, GL_AMBIENT, light1_ambient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse);
glLightfv(GL_LIGHT1, GL_SPECULAR, light1_specular);
glLightfv(GL_LIGHT1, GL_POSITION, light1_position);

glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5);
glLightf(GL_LIGHT1, GL_LINEAR_ATTENUATION, 0.5);

glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 45.0);
glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION,
spot_direction);
glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 2.0);

glEnable( GL_LIGHT1 );

38
OpenGL – Material Properties
• Diferentes propriedades / coeficientes
GLfloat no_mat[] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat mat_ambient[] = { 0.7, 0.7, 0.7, 1.0 };
GLfloat mat_ambient_color[] = { 0.8, 0.8, 0.2, 1.0
};
GLfloat mat_diffuse[] = { 0.1, 0.5, 0.8, 1.0 };
GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };

GLfloat no_shininess[] = { 0.0 };


GLfloat low_shininess[] = { 5.0 };
GLfloat high_shininess[] = { 100.0 };

GLfloat mat_emission[] = {0.3, 0.2, 0.2, 0.0};

39
OpenGL – Material Properties

• Apenas reflexão difusa

glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat);

glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);

glMaterialfv(GL_FRONT, GL_SPECULAR, no_mat);


glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess);

glMaterialfv(GL_FRONT, GL_EMISSION, no_mat);

40
OpenGL – Material Properties

• Reflexão difusa e especular, com elevado coeficiente de


Phong

glMaterialfv(GL_FRONT, GL_AMBIENT, no_mat);

glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);

glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);


glMaterialfv(GL_FRONT, GL_SHININESS,
high_shininess);

glMaterialfv(GL_FRONT, GL_EMISSION, no_mat);


41
OpenGL – Material Properties

• Bules de diferentes
“materiais”:

– Esmeralda, jade, …

– Latão, bronze, …

– Plástico

– Borracha

[OpenGL – The Red Book]

42
Transparência

• Um objecto transparente deixa ver os


objectos que estão atrás

• Há também objectos translúcidos


que transmitem a luz mas difundem-na
em todas as direcções

• É possível modelar a transparência


com graus de realismo diferentes:

- sem refracção (mudança de


direcção dos raios luminosos)

- com refracção
Objecto
transparente

43
Direcção de
• Para se obter maior realismo é necessário Para a fonte de luz reflexão
considerar a refracção da luz

• A direcção da luz refractada é diferente da luz


incidente
Direcção
de refracção
• O ângulo de refracção varia com:

- os índices de refracção dos meios


ar
- o ângulo do raio incidente ar

vidro

• De acordo com a Lei de Snell:

O raio emergente é paralelo ao


raio incidente

44
Direcção de
Para a fonte de luz reflexão
• O índice de refracção varia com vários factores:

- λ da luz
- temperatura do material
- direcção (em materiais anisotrópicos)
-…
Direcção
de refracção

• Mas em geral pode-se usar um valor médio

• Índices de refracção para vários materiais:

vácuo / ar - 1.00
gelo - 1.31
água - 1.33
vidro vulgar - 1.52
quartzo - 1.54

45
• Pode-se calcular T (vector unitário na direcção
de refracção):

N – vector unitário normal à superfície

L – vector unitário na direcção da fonte luminosa

ar
• O efeito geral da passagem de luz através de uma ar
lâmina de vidro é um raio emergente paralelo ao vidro
incidente

O raio emergente é
paralelo ao raio incidente

46
• Na maioria das aplicações usam-se aproximações menos realistas e
mais rápidas
Objecto
no fundo

• Uma aproximação mais simples ignora as mudanças


de direcção dos raios transmitidos entre materiais

Objecto
• Esta aproximação: transparente

- é rápida Plano de projecção


- produz resultados aceitáveis

para superfícies poligonais transparentes de pequena espessura

47
Objecto no
• Pode-se combinar a luz transmitida através de fundo
uma superfície transparente com a luz reflectida
pela superfície:

Objecto
transparente
- coeficiente de transparência [0, 1]
1- totalmente transparente Plano de projecção

0- totalmente opaco

• Pode-se também definir o coeficiente


de opacidade:

transparência sem refracção

48
Sombras Direcção da luz
incidente

• Podem usar-se métodos de detecção


de visibilidade para detectar zonas que
não são iluminadas por fontes luminosas

• Pode-se determinar as faces


da cena que não são visíveis
de cada fonte luminosa

• Depois aplica-se o modelo de


iluminação usando apenas as
fontes que contribuem para a
iluminação de cada face

49
Exemplo: Sombras devidas

a uma fonte de luz a duas fontes de luz

50
Métodos de Rendering de Polígonos (Shading)

• Os cálculos da intensidade obtidos a partir de um modelo de iluminação


podem ser aplicados ao rendering de uma superfície de formas diferentes:

- Calcular a intensidade de todos os pixels correspondentes à superfície


projectada

- Calcular a intensidade de alguns pixels criteriosamente escolhidos e obter


um valor aproximado para os restantes

• As bibliotecas gráficas usam, em geral, algoritmos scan-line e calculam a


intensidade nos vértices dos polígonos, usando o modelo de iluminação

- Muitas interpolam as intensidades ao longo das scan-lines

- Outras usam métodos mais precisos

51
Métodos de Rendering de Polígonos (Shading)

- Os métodos mais comuns são:

Método de intensidade constante, uniforme ou flat-shading

Método de Gouraud

Método de Phong

52
Surface rendering de intensidade constante (Flat-Shading)

• Atribui a mesma cor a todos os pixels de cada polígono

• Usa o modelo de iluminação para calcular as componentes RGB de um


pixel correspondente a um dado ponto de cada polígono (vértice, centróide,
etc.)

• É simples e rápido !

• Adequado a alguns casos simples e útil para obter


a aparência geral dum objecto curvo

53
• Em geral, o flat-shading é adequado quando se verificam todas as
condições seguintes:

- O polígono é uma face de um poliedro e não uma secção de uma


superfície curva aproximada por uma malha poligonal

- Todas as fontes de luz estão muito afastadas: “fontes no infinito”


(N.L constante para todo polígono)

- O observador (“viewpoint”) está muito afastado


(V.R constante para todo o polígono)

• Caso contrário, a aproximação é razoável se o objecto for aproximado por


uma malha com polígonos muito pequenos

54
Método de Gouraud ou de interpolação de intensidades

• Calcula a intensidade nos vértices e interpola linearmente ao longo das faces


poligonais de um objecto

• Foi desenvolvido, por Henri Gouraud, para fazer o rendering de um objecto curvo
aproximado por uma malha poligonal

• Faz uma transição suave dos valores de intensidade entre polígonos adjacentes
estimando, para cada vértice, um vector normal “médio”

55
• Cada face poligonal de uma malha que aproxima uma superfície curva é
processada da seguinte forma:

1 - determinar o vector normal “médio” para cada vértice do polígono

2 - aplicar um modelo de iluminação em cada vértice para obter a


intensidade nessa posição

3 - interpolar linearmente as intensidades dos vértices ao longo da área


projectada do polígono

1 2 3 56
Transições mais suaves

Malha poligonal que Rendering com o Rendering com o


aproxima o objecto flat-shading método de Gouraud

57
Método de Phong ou de interpolação de normais

• É mais sofisticado que o anterior, foi desenvolvido, por Phong Bui Tuong
(1975)

• Interpola linearmente os vectores normais (em vez de os valores de


intensidade) e aplica repetidamente o modelo de iluminação

• Resulta em imagens mais realistas com:

– Melhores reflexões especulares

– Bandas de Mach menos acentuadas

– Mas é mais pesado computacionalmente

58
• Cada secção poligonal de uma malha que aproxima uma superfície curva é
processada da seguinte forma:

1 - determinar o vector normal “médio” para cada vértice do polígono

2 - interpolar linearmente as normais aos vértices ao longo da área


projectada do polígono

3 - aplicar um modelo de iluminação ao longo das scan lines


para calcular a intensidade luminosa usando as normais interpoladas
Gouraud

Phong

59
Flat Gouraud

Phong

Highlights melhorados

Bandas de Mach menos acentuadas

60
OpenGL - Shading

• Cor atribuída às primitivas (segmentos de recta e


polígonos)

– Constante (Flat-Shading), usando a cor atribuída a um dos


vértices (qual?) da primitiva

glShadeModel( GL_FLAT );

– Determinada por interpolação (Gouraud Shading) – Default !

glShadeModel( GL_SMOOTH );

• Consultar “OpenGL – The Red Book” !!


61
Métodos de iluminação global:
Exemplos de imagens produzidas com ray-tracing

62
Métodos de iluminação global

• Se se considerar a linha de vista a partir


de um pixel no plano de visualização até
à cena, é possível determinar que
objectos são intersectados

• Este método chama-se ray casting

• Baseia-se nos métodos de óptica geométrica que determinam os percursos


dos raios de luz

• Quando se usa projecção perspectiva, os raios divergem do centro de


projecção, passam pelo centro de um pixel e continuam através da cena

63
• Adicionalmente, podem lançar-se raios secundários reflectidos ou transmitidos

• No caso de haver raios secundários


chama-se ray-tracing

Raios secundários

Pixel no plano de
visualização

Centro de projecção

64
Pixels com intensidade não atribuída (a cinzento)

2 3

Ray tracing com profundidade


variável: 2, 3 e 4 raios secundários

4 65
Maior transparência

50% 100%
transparente transparente

100% 100%
opaca reflectora

66
Maior reflexão
Representação de imagens com baixa resolução tonal

2 níveis

Notem-se os falsos
contornos nas imagens
de baixa resolução
4 níveis

67
8 níveis
Halftoning

• É possível criar aparentemente um maior


nº de níveis de intensidade em sistemas
com um nº reduzido de níveis
(ex: impressora laser)

• Nos jornais e revistas usa-se halftoning


para representar imagens com muitos
níveis

• Diferentes intensidades são representadas


por círculos de tamanho diferente
Secção aumentada de uma fotografia
reproduzida usando haltoning

68
• Em Computação Gráfica usam-se padrões de pixels:

halftone approximation patterns

• Com n x n pixels podem representar-se

n2+1 - valores de intensidade

Exemplo: conjunto de padrões de 2x2 que permite representar 5 níveis de intensidade

69
Máscara geradora do padrão de 3x3 – um nível k obtém-se
Iluminando os pixels correspondentes aos nºs ≤ k

Exemplo: conjunto de padrões de 3x3 que permite representar 10 níveis de intensidade

70
• Devem evitar-se padrões simétricos

exemplo para o nível 3:

a evitar melhor

• Devem evitar-se padrões com pixels isolados que não podem ser reproduzidos
por certos dispositivos

• Os padrões devem ser escolhidos por forma a minimizar falsos contornos


(evoluindo a partir uns dos outros)

71
• Pode usar-se halftoning para aumentar a resolução de:

- dispositivos com mais do que dois níveis de intensidade

- dispositivos a cores

72
halftoning em imagens a cores

73
Principal bibliografia

• Hearn, D., P. Baker, Computer Graphics with OpenGL, Addison Wesley,


2004
• Hearn, D., P. Baker, Computer Graphics, 2nd. Ed., Prentice Hall, 1994
• Foley, J., S. Van Dam, S. Feiner, J. Hughes, Computer Graphics, Principles
and Applications, 2nd. Ed., Addison Wesley, 1991
• Watt, A., F. Policarpo, The Computer Image, Addison Wesley, 1998

74

Anda mungkin juga menyukai