• Nenhum resultado encontrado

Modelos de Iluminação Métodos de surface-rendering. Beatriz Sousa Santos, J. Madeira

N/A
N/A
Protected

Academic year: 2021

Share "Modelos de Iluminação Métodos de surface-rendering. Beatriz Sousa Santos, J. Madeira"

Copied!
99
0
0

Texto

(1)

Modelos de Iluminação

(2)

• 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

(3)

• 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.

(4)

• 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)

(5)

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

(6)

Fontes de luz (simplificadas)

Fonte de luz a uma distância infinita

Fonte pontual isotrópica

Os raios de luz emitidos por uma fonte situada muito longe são praticamente paralelos

(7)

Fontes de luz mais sofisticadas

Foco de luz direccional

(8)

Fontes de luz ainda mais sofisticadas

Fonte de luz não pontual e próxima do objecto

(9)

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

(10)
(11)

• 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

(12)

• 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 ponto de observação

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

-reflexão especular (highlight)

(13)

• 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

(14)

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

(15)

Phong reflection model – 1973

(16)

• A iluminação ambiente é incluída sob a forma de um valor constante para toda a cena:

I

a

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

(17)

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

I ambdiff = Kd Ia

(18)

• 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:

Energia radiante por un. de tempo área projectada Intensidade cos ΦN dA cos ΦN = const.

Reflexão difusa

α

(19)

• Em geral, inclui-se pelo menos uma fonte de luz (frequentemente no ponto de observação) • 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

(20)

• 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, é:

Área projectada

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

N  normal à superfície

L  direcção de uma fonte de luz

se se

(21)

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

(22)

Iluminação ambiente

(23)

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)

(24)

• 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

(25)
(26)

Superfície menos brilhante

(27)

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

(28)

• 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 Φ

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

e

(29)

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

(30)
(31)

• Quando existe uma única fonte de luz pontual, a combinação dos três efeitos:

- iluminação ambiente - reflexão difusa

- reflexão especular

Reflexões difusas e especulares

• Quando existem múltiplas fontes de luz:

Múltiplas fontes de várias cores:

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)

(32)

The Halfway Vector

• h is the unit vector “halfway” between l

and v

h = ( l + v ) / || l + v||

(33)

• Quando se usa o modelo RGB, a intensidade é especificada no modelo de iluminação como um vector com três elementos:

Considerações quanto à cor

• O mesmo para os coeficientes:

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

(34)

• 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

(35)

Modelo de iluminação mais sofisticado

(36)

OpenGL (Pré-3.1) – 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 !!

(37)

OpenGL (Pré-3.1) – 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 • …

(38)

OpenGL (Pré-3.1) – 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

(39)

OpenGL (Pré-3.1) – 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 );

(40)

OpenGL (Pré-3.1) – 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 );

(41)

OpenGL (Pré-3.1) – 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};

(42)

OpenGL (Pré-3.1) – 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);

(43)

OpenGL (Pré-3.1) – 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);

(44)

OpenGL (Pré-3.1) - 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 );

(45)

OpenGL – Material Properties

• Bules de diferentes

“materiais”:

– Esmeralda, jade, … – Latão, bronze, … – Plástico – Borracha

(46)

OpenGL / WebGL – Lighting

• E, hoje em dia, como fazer?

• Que cálculos são efectuados pela

aplicação?

• Que cálculos são efectuados pelos

shaders

?

(47)

OpenGL / WebGL – Lighting

• Calcular na aplicação e/ou enviar atributos

aos shaders

– Propriedades dos materiais

– Vectores normais

– Propriedades das fontes luz

• Usar vectores unitários

!!

– Cuidado com as transformações aplicadas !!

– GLSL

normalization

function

(48)

OpenGL / WebGL – Light Sources

• Exemplo: fonte de luz pontual

vec4 diffuse0 = vec4(1.0, 0.0, 0.0, 1.0);

vec4 ambient0 = vec4(1.0, 0.0, 0.0, 1.0);

vec4 specular0 = vec4(1.0, 0.0, 0.0, 1.0);

vec4 light0_pos = vec4(1.0, 2.0, 3.0,

0.0

);

(49)

OpenGL / WebGL – Material Properties

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

Phong

vec4 ambient = vec4(0.2, 0.2, 0.2,

1.0

);

vec4 diffuse = vec4(1.0, 0.8, 0.0,

1.0

);

vec4 specular = vec4(1.0, 1.0, 1.0,

1.0

);

GLfloat shine = 100.0

(50)

• Alternativas

– A

aplicação

determina a cor (

shade

) de cada

vértice da malha poligonal

– E envia-a ao

vertex shader

• OU

– A aplicação envia todos os parâmetros para o

vertex shader

– Este calcula a cor (

shade

) para cada vértice

OpenGL / WebGL – Per Vertex Shading

(51)

• Smooth Shading

→ Default

– Cor

interpolada

ao longo de cada primitiva

– Se passada ao

fragment shader

como

varying

• Flat Shading

– Cor

constante

ao longo de cada primitiva

– Se passada ao

fragment shader

como

uniform

(52)

OpenGL / WebGL – Per Vertex Shading

// vertex shader

attribute vec4 vPosition;

attribute vec3 vNormal;

varying

vec4 color; //vertex shade

// light and material properties

uniform vec4 AmbientProduct, DiffuseProduct, SpecularProduct;

uniform mat4 ModelView;

uniform mat4 Projection;

uniform vec4 LightPosition;

uniform float Shininess;

(53)

OpenGL / WebGL – Per Vertex Shading

void main()

{

// Transform vertex position into eye coordinates

vec3 pos = (ModelView * vPosition).xyz;

vec3 L = normalize( LightPosition.xyz - pos );

vec3 E = normalize( -pos );

vec3 H

= normalize( L + E );

// Transform vertex normal into eye coordinates

(54)

OpenGL / WebGL – Per Vertex Shading

// Compute terms in the illumination equation

vec4 ambient = AmbientProduct;

float Kd = max( dot(L, N), 0.0 );

vec4 diffuse = Kd*DiffuseProduct;

float Ks = pow( max( dot(N, H), 0.0), Shininess );

vec4 specular = Ks * SpecularProduct;

if( dot(L, N) < 0.0 ) specular = vec4(0.0, 0.0, 0.0, 1.0);

gl_Position = Projection * ModelView * vPosition;

color = ambient + diffuse + specular;

color.a = 1.0;

(55)

OpenGL / WebGL– Per Vertex Shading

// fragment shader

precision mediump float;

varying vec4 color;

void main()

{

gl_FragColor = color;

}

(56)

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

(57)

Direcção de refracção Para a fonte de luz

Direcção de reflexão

• Para se obter maior realismo é necessário considerar a refracção da luz

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

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

- os índices de refracção dos meios - o ângulo do raio incidente

• De acordo com a Lei de Snell:

O raio emergente é paralelo ao raio incidente

ar

ar

(58)

Direcção de refracção Para a fonte de luz

Direcção de reflexão

• O índice de refracção varia com vários factores: - l da luz

- temperatura do material

- direcção (em materiais anisotrópicos) - …

• 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

(59)

• 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

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

ar

ar

vidro

O raio emergente é paralelo ao raio incidente

(60)

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

• Uma aproximação mais simples ignora as mudanças de direcção dos raios transmitidos entre materiais

• Esta aproximação: - é rápida

- produz resultados aceitáveis

para superfícies poligonais transparentes de pequena espessura

Plano de projecção Objecto

transparente

Objecto no fundo

(61)

• Pode-se combinar a luz transmitida através de uma superfície transparente com a luz reflectida pela superfície: Plano de projecção Objecto transparente Objecto no fundo - coeficiente de transparência [0, 1] 1- totalmente transparente 0- totalmente opaco

• Pode-se também definir o coeficiente de opacidade:

(62)

Sombras

• 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

Direcção da luz incidente

(63)

Exemplo: Sombras devidas

(64)

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

(65)

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

(66)

• 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.)

Surface rendering de intensidade constante (Flat-Shading)

• É simples e rápido !

• Adequado a alguns casos simples e útil para obter a aparência geral dum objecto curvo

(67)

• 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 regiã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

(68)

Gouraud shading – 1971

(69)

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”

(70)

• 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

(71)

Malha poligonal que aproxima o objecto Rendering com o flat-shading Rendering com o método de Gouraud

(72)

Gouraud shading

(73)

• É 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

(74)

• 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

(75)

Phong shading – 1973

(76)

Highlights melhorados Flat

Phong

Gouraud

(77)

OpenGL / WebGL – Per Fragment Shading

// vertex shader

attribute vec4 vPosition;

attribute vec3 vNormal;

// output values that will be interpolated per-fragment

varying

vec3 fN;

varying

vec3 fE;

varyin

g vec3 fL;

uniform mat4 ModelView;

uniform vec4 LightPosition;

uniform mat4 Projection;

(78)

OpenGL / WebGL– Per Fragment Shading

void main()

{

fN = vNormal;

fE = vPosition.xyz;

fL = LightPosition.xyz;

if( LightPosition.w != 0.0 ) {

fL = LightPosition.xyz - vPosition.xyz;

}

gl_Position = Projection*ModelView*vPosition;

}

(79)

OpenGL / WebGL – Per Fragment Shading

// fragment shader

precision mediump float;

// per-fragment interpolated values from the vertex shader

varying

vec3 fN;

varying

vec3 fL;

varying

vec3 fE;

uniform vec4 AmbientProduct, DiffuseProduct, SpecularProduct;

uniform mat4 ModelView;

uniform vec4 LightPosition;

uniform float Shininess;

(80)

OpenGL – Per Fragment Shading

void main()

{

// Normalize the input lighting vectors

vec3 N = normalize(fN);

vec3 E = normalize(fE);

vec3 L = normalize(fL);

vec3 H = normalize( L + E );

vec4 ambient = AmbientProduct;

(81)

OpenGL – Per Fragment Shading

float Kd = max(dot(L, N), 0.0);

vec4 diffuse = Kd*DiffuseProduct;

float Ks = pow(max(dot(N, H), 0.0), Shininess);

vec4 specular = Ks*SpecularProduct;

// discard the specular highlight if the light's behind the vertex

if( dot(L, N) < 0.0 )

specular = vec4(0.0, 0.0, 0.0, 1.0);

gl_FragColor = ambient + diffuse + specular;

gl_FragColor.a = 1.0;

(82)

Teapot Examples

(83)

Iluminação global

(84)

Métodos de iluminação global:

(85)

Ray Casting

• 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

(86)

Ray Casting

(87)

• Adicionalmente, podem lançar-se raios secundários reflectidos ou transmitidos • No caso de haver raios secundários

chama-se ray-tracing

Centro de projecção

Pixel no plano de visualização

(88)

Ray Tracing: Shadow or feeler rays

(89)
(90)

Ray Tracing: Transmitting surfaces

(91)
(92)

Ray tracing com profundidade

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

2 3

(93)

100% opaca 50% transparente 100% reflectora 100% transparente M a ior tra n sp a rên cia

(94)

Ray-Tracing example

(95)

Another Ray-Tracing example

(96)

Real-time ray tracing

• It

was

impossible to do ray tracing in real-time !

• Still using

“rendering farms”

for non-real-time

(97)

Real-time ray tracing

• BUT,

GPUs

can be used to speed up ray tracing

• The architecture of

recent GPUs

is capable of

real-time

ray tracing !!

[van Dam]

Scene ray traced in real time using NVIDIA Kepler

(98)

POV-Ray

• Free advanced ray-tracer !!

povray.org

• See the hall-of-fame !!

(99)

Principal bibliografia

• D. Hearn and M. P. Baker, Computer Graphics with OpenGL, 3

rd

Ed., Addison-Wesley, 2004

• E. Angel and D. Shreiner, Introduction to Computer Graphics, 7

th

Ed., Pearson Education, 2012

• J. Foley et al., Introduction to Computer Graphics, Addison-Wesley,

1993

Referências

Documentos relacionados

Não se está perante a situação de uma única falta injustificada; só se pode falar em falta de assiduidade se houver alguma continuidade, o que não implica que tenham de ser faltas

– “Sistema computacional, situado num dado ambiente, que tem a percepção desse ambiente através de sensores e age de forma autónoma nesse ambiente através de actuadores de forma a

O padre veio para eles e abraçou-se também, subitamente perturbado por uma analogia, assim dissera o italiano, Deus ele próprio, Baltasar seu filho, Blimunda

Os elementos caracterizadores da obra são: a presença constante de componentes da tragédia clássica e o fatalismo, onde o destino acompanha todos os momentos das vidas das

Telmo reage com espanto/admiração e de seguida interroga o Romeiro sobre o porquê de Deus não o poder ouvir, visto que Telmo naquele momento temia pela vida de

[Informar a data, o nome e a assinatura do dirigente máximo que aprovou o documento Termo de Abertura do Projeto antes deste projeto ser solicitado ao Governador pelo

Gottardo e Cestari Junior (2008) efetuaram análise de viabilidade econômica na implantação de silo de armazenagem de grãos utilizando os seguintes modelos VPL,

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por