Você está na página 1de 251

Computao Grca

Engenharia Informtica ps-laboral


Pedro Mariano
Departamento de Informtica
Faculdade de Cincias
Universidade de Lisboa

Ano Lectivo 2012/2013

Introduo
1

Apresentao

Programa

Objectivos

Bibliograa

Avaliao

Exemplos
Arte Virtual
Visualizao de Dados
Entretenimento
Desenho Assistido por Computador
Realidade Aumentada

Apresentao
Corpo Docente
Pedro Mariano

Atendimento

2a -feira, sala 1.3.10, 18:00-19:00


Frum Dvidas no Mocho
Email plmariano@fc.ul.pt

Pr-requisitos
Algoritmos e Estruturas de Dados
Clculo

Programa
Tericas (verso preliminar)
Transformaes geomtricas em 2D
Transformao clipping window  viewport
Transformaes geomtricas em 3D
Recorte (clipping)
Projeces
Eliminao de invisveis
Modelos de Iluminao
Modelos de cor
Tpicos Avanados: texturas, nveis de detalhe, entre outros

Prticas
Resoluo de exerccios
Esclarecimento de dvidas do trabalho prtico
Biblioteca OpenGL

Objectivos
No m do semestre espera-se que os alunos adquiram as seguintes
competncias:
Capacidade de criar modelos a 3D
Capacidade de criar animaes
Capacidade de criar modelos foto realsticos
Capacidade de utilizar OpenGL

Bibliograa
Edward Angel.

Interactive Computer Graphics: A Top-down Approach Using


OpenGL.
Pearson Education, 2005.
James Foley, Andries van Dam, Steven Feiner, John Hughes, and
Richard Phillips.

Introduction to Computer Graphics.


Addison-Wesley, 1994.
Donald Hearn and M. Pauline Baker.

Computer graphics with OpenGL.


Pearson Education, third edition, 2002.
Richard S. Wright and Benjamin Lipchak.

OpenGL : superbible.
SAMS, third edition, 2005.

Avaliao
Duas componentes de avaliao, terico e terico-prtica, a
50% cada
Componente terico-prtica (nota mnima de 9):
prova escrita presencial
na poca de exame

Componente prtica (nota mnima de 9):


trabalho prtico com 3 momentos de avaliao
dois primeiros momentos so obrigatrios, peso 40% cada
terceiro momento opcional, peso 20%

Exemplos  Arte Virtual

http://www.virtualart.at/database/artists/works/artist/bec.html

Exemplos  Visualizao de Dados

Exemplos  Entretenimento  1

http://www.egosoft.com/games/x_rebirth

Exemplos  Entretenimento  2

http://eu.spore.com/insider/screenshots.cfm

Exemplos  Desenho Assistido por Computador

http://www.deskeng.com/articles/aabbjs.htm

Exemplos  Realidade Aumentada

http://www.bmw.com/com/en/owners/service
/augmented_reality_introduction_1.html
http://www.youtube.com/watch?v=ils-wQBtPyU&lr=1&user=johndeere

Transformaes Geomtricas 2D
7

Motivao
8 Revises Trigonometria
Ponto
Vector
9 Revises Matrizes
Denio
Operaes
10 Transformaes Geomtricas 2D
Translao

11

12
13
14
15

Escala
Rotao
Shear ou Cisalhamento
Coordenadas Homogneas
Representao das
Transformaes
Composio de Transformaes
Generalizao Transformaes
Ponto como Matriz Linha
Matriz Genrica

Motivao
Criao de uma cena a partir de vrios objectos
Cada objecto sabe desenhar-se
Cena descrita por um conjunto de tuplos (objecto, posio,
orientao)

Revises Trigonometria
h
b

sin =

cateto oposto
b
=
hipotenusa
h

cos =

cateto adjacente
a
=
hipotenusa
h

tan =

cateto oposto
b
=
cateto adjacente
a

Teorema de Pitgoras

h 2 = a2 + b 2

Revises Geometria  Ponto


Caracterizao de um ponto P
Coordenada cartesianas

Coordenadas polares

P(a,b)

P(h,)
h

Converso
Cartesiana para Polar
p
h = a2 + b 2

= arctan

b
a

Polar para Cartesiana

a = h cos
b = h sin

Revises Geometria  Vector


Vector caracterizado por
Direco
Sentido

dois percursos possveis


numa direco

Comprimento

Descrito por

Coordenadas cartesianas
(4, 5)
Coordenadas polares

Revises Matrizes  Denio


Tabela de elementos organizados em linhas e colunas
Matriz m n tem m linhas e n colunas
Matriz de ordem m n

a1,1 a1,2 a1,3 . . . a1,n


a2,1 a2,2 a2,3 . . . a2,n

A=
..
..
..
..
..
.
.
.
.
.
am,1 am,2 am,3 . . . am,n
Matrizes especiais
Matriz
quadrada


2 3
4 1

Matriz Identidade
de ordem n n

1 0 ... 0
0 1 . . . 0

In =
.. .. . . ..
. .
. .
0 0 ... 1

Matriz linha


2 3 1
Matriz coluna
 
2
4

Revises Matrizes  Operaes  1


Soma das matrizes A e B ambas de ordem m n
uma matriz C de ordem m n

ci ,j = ai ,j + bi ,j
a1,1 + b1,1 a1,2 + b1,2

..
..
C =A+B =

.
.
am,1 + bm,1 am,2 + bm,2
Produto da matriz A de ordem m n
pela matriz B de ordem n o
uma matriz C de ordem m o

ci ,j =

n
X
k =1

ai ,k bk ,j

. . . a1,n + b1,n

..
..

.
.
. . . am,n + bm,n

Revises Matrizes  Operaes  2


Transposta da matriz A de ordem m n
uma matriz C de ordem n m

cj ,i = ai ,j

a1,1 . . . am,1
a1,2 . . . am,2

C = AT =
..
..
..
.
.
a1,n . . . am,n

Propriedades
(A + B )T = AT + B T
(AB )T = B T AT

Revises Matrizes  Operaes  3


Matriz A quadrada de ordem m diz-se invertvel se existir uma
matriz B tal que

AB = Im
B = A1 representa a matriz inversa de A
Propriedades
Se A e B forem invertveis ento
(AB )1 = B 1 A1
Se A uma matriz ento

(AT )1 = (A1 )T

Revises Matrizes  Operaes 4


Determinante de uma matriz 3 3

a b c
M = d e f
g h i

Notao e valor determinante

|M | = aei + bfg + cdh ceg bdi afh


Regra de clculo

Transformaes Geomtricas 2D
Translao

Rotao

Escala

Shear ou Cisalhamento

Translao
Cada ponto da imagem somado um vector t = (tx , ty )
Dado o ponto P = (x , y )
coordenadas do ponto nal P 0 = (x 0 , y 0 )

x 0 = x + tx
y 0 = y + ty
Notao matricial

x
x
t
x + tx
P =P +T 0 =
+ x =
y
y
ty
y + ty
0

 0

 

 

Esta operao mantm


ngulos entre arestas
Paralelismos entre arestas
Comprimento das arestas

Translao de um polgono necessita da transformao dos


seus vrtices

Escala
Cada ponto da imagem esticado de um factor sx na
horizontal de um factor sy na vertical em relao origem
(0, 0)
Dado o ponto P = (x , y )
coordenadas do ponto nal P 0 = (x 0 , y 0 )

x 0 = sx x
y 0 = sy y
Notao matricial

x
s 0
P = SP 0 = x
y
0 sy
0

 0

Esta operao mantm


Paralelismos entre arestas

x
s x
= x
y
sy y

 

Esta operao no mantm


ngulos entre arestas
Comprimento das arestas

Escala de um polgono necessita da escala dos seus vrtices

Rotao
Cada ponto da imagem rodado de um ngulo em torno da
origem
Dado o ponto P = (x , y )
coordenadas do ponto nal P 0 = (x 0 , y 0 )

x 0 = x cos y sin
y 0 = x sin + y cos
Notao Matricial
 0 
  

cos sin x
x cos y sin
x
0
P = RP 0 =
=
y
sin cos
y
x sin + y cos
Esta operao mantm

ngulos entre arestas


Paralelismos entre arestas
Comprimento das arestas

Rotao de um polgono necessita da transformao dos seus


vrtices

Shear ou Cisalhamento
Pontos so deslocados ao longo de um dos eixos principais
Deslocamento maior quanto mais longe do eixo principal

Deslocamento ao longo do eixo x

x 0 = x + ay
y0 = y
Notao matricial

x
1 a
P = SHx P 0 =
y
0 1
0

 0

Esta operao mantm


Paralelismos entre arestas

x
x + ay
=
y
y

 

Esta operao no mantm


ngulos entre arestas
Comprimento das arestas

Shear de um polgono necessita do shear dos seus vrtices

Coordenadas Homogneas
Operaes
Translao P 0 = T + P
Escala P 0 = S P
Rotao P 0 = R P
Shear P 0 = SH P

Translao tratada de modo diferente da escala e rotao


No possvel combinar facilmente as 4 operaes

Coordenadas homogneas
Ponto P = (x , y ) representado pelo triplo (x , y , w )
Triplos Q1 = (x1 , y1 , w1 ) e Q2 = (x2 , y2 , w2 ) representam o
mesmo ponto se Q1 = aQ2
Para qualquer triplo Q = (x , y , w ) os nmeros x /w e y /w

representam as coordenadas cartesianas do ponto homogneo

Triplos Q = (x , y , 0) representam pontos no innito

Representao das Transformaes em Coordenadas


Homogneas  1
Translao T (tx , ty )
0

x
1 0 tx
x
x + tx
P 0 = TP y 0 = 0 1 ty y = y + ty
1

0 0

Escala S (sx , sy )

sx 0 0 x
sx x
x
P 0 = SP y 0 = 0 sy 0 y = sy y
0
1

Representao das Transformaes em Coordenadas


Homogneas  2
Rotao R ()

x
cos sin 0
x
0
0

sin cos 0
y
P = RP y
=
0

x cos y sin
= x sin + y cos
1

Shear horizontal SHx (a)


0

x
1 a 0
x
x + ay
P 0 = SHx P y 0 = 0 1 0 y = y
1
0 0 1
1
1

Composio de Transformaes  1
Gozam da propriedade comutativa
composio de 2 ou mais translaes
composio de 2 ou mais escalas
composio de 2 ou mais rotaes

No goza da propriedade comutativa


composio de escala com rotao
composio de translao com rotao
composio de translao com escala

Composio de Transformaes  2
Composio de translao com escala


1 0 tx
sx 0 0 x
T (tx , ty )S (sx , sy )P = 0 1 ty 0 sy 0 y
0 0 1
0 0 1
1

xsx + tx
= ysy + ty
1

sx 0 0 1 0 tx x
S (sx , sy )T (tx , ty )P = 0 sy 0 0 1 ty y
0 0 1
1
0 0 1

xsx + tx sx
xsx + tx
= ysy + ty sy 6= ysy + ty
1
1

Generalizao Transformaes
Escala S (sx , sy ) relativamente a um ponto genrico G (gx , gy )
Translao T1 (gx , gy )
Escala S (sx , sy )
Translao T2 (gx , gy )


1 0 gx
sx 0 0 1 0 gx x
P 0 = T2 ST1 P = 0 1 gy 0 sy 0 0 1 gy y
0 0 1
0 0 1
0 0
1
1


sx 0 gx (1 sx ) x
= 0 sy gy (1 sy ) y
0 0
1
1
Rotao R () relativamente a um ponto genrico G (gx , gy )
Translao T (gx , gy )
Rotao R ()
Translao T (gx , gy )

Ponto como Matriz Linha


Ponto representado por uma matriz linha
Aplicando a operao transposta

r11 r12 tx x
x
r11 r12 tx
r21 r22 ty y = y r21 r22 ty

= x


0
0
T

 r11 r12 tx
1 r21 r22 ty
0
0 1

Sequncia de transformaes

(R T S P )T = P T S T T T R T

Matriz Genrica  1
Composio

1
0
0

de Translao com Rotao e Escala

0 tx
cos sin 0
sx 0 0
1 ty sin cos 0 0 sy 0
0 1
0
0
1
0 0 1

sx cos sy sin tx
= sx sin sy cos ty
0
0
1

Outras composies resultam matriz diferente

Matriz Genrica  2
Forma da matriz de transformao genrica

m11 m12 m13


M = m21 m22 m23
0

Transformao Am
Preserva paralelismo das linhas

Transformao do ponto P (x , y ) resulta

x 0 = xm11 + ym12 + m13


y 0 = xm21 + ym22 + m23

Referncias
Captulo 5 de James Foley, Andries van Dam, Steven Feiner,
John Hughes, and Richard Phillips. Introduction to Computer
Graphics. Addison-Wesley, 1994.
Acetatos de Computao Grca de Ana Paula Cludio,
Beatriz Carmo
Programa Java Composition of Primitive Transformations

http://www.wolframalpha.com
introduzir
{{{cos(a),-sin(a),0},{sin(a),cos(a),0},{0,0,1}}
* {{1,0,t_x},{0,1,t_y},{0,0,1}}
* {{s_x,0,0},{0,s_y,0},{0,0,1}}}

Transformao Clipping Window-Viewport


16

Motivao

17

Transformao clipping window  viewport

18

Passos da Transformao

19

Matrizes dos Passos da Transformao

20

Matriz Final

21

Razo de Aspecto

Motivao
Primitivas de desenho podem ser relativas a um sistema de
coordenadas
Mapear a janela sobre o mundo, window, janela de recorte
sobre a janela do utilizador, viewport

viewport rea no dispositivo de sada

Transformao clipping window  viewport

v
viewport 2
window

x
coordenadas do mundo

limite coordenadas
do dispositivo

viewport 1

u
coordenadas do dispositivo

Mesma janela do utilizador poder ter diferentes


enquadramentos
window janela utilizador
viewport enquadramento

Passos da Transformao

(xmax,ymax)

(xmin,ymin)
x

janela utilizador coordenadas do


mundo

translao origem janela utilizador

(umax,vmax)

(umin,vmin)
u

escala da janela utilizador tamanho do


enquadramento

translao do enquadramento posio


nal

Matrizes dos Passos da Transformao


Translao para origem da janela do

1
T (xmin , ymin ) = 0
0

utilizador

0 xmin
1 ymin
0
1

Escala da janela do utilizador para o tamanho do


enquadramento

umax umin

 x
u umin vmax vmin
max xmin vmax
S max
,
=
0
xmax xmin ymax ymin

ymax
0
Translao do enquadramento para a posio nal

1 0 umin
T (umin , vmin ) = 0 1 vmin
0 0
1

0
vmin
ymin
0

Matriz Final
u umin vmax vmin
T (umin , vmin )S max
,
T (xmin , ymin ) =
xmax xmin ymax ymin

umax umin
umax umin
0
xmin
+ umin
xmax xmin

xmax xmin

vmax vmin
vmax vmin

y
+
v
min
min

ymax ymin
ymax ymin


xmax xmin largura da janela sobre o mundo (window)


ymax ymin altura da janela sobre o mundo
umax umin largura da janela do utilizador (viewport)
vmax vmin altura da janela do utilizador

Razo de Aspecto
xmax xmin largura da janela sobre o mundo (window)
ymax ymin altura da janela sobre o mundo
umax umin largura da janela do utilizador (viewport)
vmax vmin altura da janela do utilizador
Denio razo de aspecto
Razo de aspecto =

largura
altura

Imagem sem deformao se razes de aspecto da janela do


utilizador e o enquadramento forem iguais

xmax xmin umax umin


=
ymax ymin vmax vmin

Referncias
Captulo 5 de James Foley, Andries van Dam, Steven Feiner,
John Hughes, and Richard Phillips. Introduction to Computer
Graphics. Addison-Wesley, 1994.

Transformaes Geomtricas 3D
22

Representao Coordenadas 3D

23

Sistema de Eixos

24

Translao

25

Escala

26

Rotao
Rotao Eixo zz
Rotao Eixos xx e yy

27

Shear ou Cisalhamento

28

Composio de Transformaes

29

Generalizao da Escala

30

Generalizao da Rotao

Representao Coordenadas 3D
Representao em coordenadas homogneas do ponto
P (x , y , z )

P=
z
1
extenso da representao em 2D

Dado o ponto P 0 (x , y , z , W )
Homogeneizao P (x /W , y /W , z /W , 1)
(x /W , y /W , z /W ) coordenadas cartesianas do ponto P 0

Sistema de Eixos
Utilizamos sistema de eixos directo ou mo direita
Eixo dos xx alinhado com o polegar
Eixo dos yy alinhado com o indicador
Eixo dos zz alinhado com o dedo mdio

Translao
Extenso da operao em 2D
Cada ponto da imagem somado um vector t = (tx , ty , tz )
Dado o ponto P = (x , y , z )
coordenadas do ponto nal P 0 = (x 0 , y 0 , z 0 )

x 0 = x + tx
y 0 = y + ty
z 0 = z + tz
Notao matricial

P = TP


x
1 0 0 tx
x
y 0 0 1 0 ty y

z 0 = 0 0 1 tz z
1
0 0 0 1
1
0

Escala
Cada ponto da imagem esticado em relao origem
(0, 0, 0) de
um factor sx na horizontal
um factor sy na vertical
um factor sz no eixo dos zz
Dado o ponto P = (x , y , z )
coordenadas do ponto nal P 0 = (x 0 , y 0 , z 0 )

x 0 = sx x
y 0 = sy y
z 0 = sz z
Notao matricial

P = SP
x
sx 0 0
y 0 0 sy 0

z 0 = 0 0 sz
1
0 0 0
0


x
0
y
0

0 z
1
1

Rotao
Rotao denida em torno de um eixo
Num sistema de mo direita

Rotao positiva de 90o em torno do eixo dos zz


transforma o semi-eixo positivo dos xx
no semi-eixo positivo dos yy

Rotao Eixo zz
Rotao em 2D rotao em torno do eixo dos zz
Coordenadas do ponto P aps rotao de

x 0 = x cos y sin
y 0 = x sin + y cos
z0 = z
Notao matricial
cos sin 0 0
x
x
0

y sin cos 0 0 y

P 0 = Rz ()P
z 0 = 0
0
1 0 z

0 1

Rotao Eixos xx e yy
Rotao em torno do eixo dos xx

1
0
0
0 cos sin
Rx () =
0 sin cos
0
0
0

0
0

0
1

Rotao em torno do eixo dos yy

cos
0
Ry () =
sin
0

0
0

0
1

0 sin
1
0
0 cos
0
0

Shear ou Cisalhamento
Pontos so deslocados ao longo de um dos eixos principais
Deslocamento maior quanto mais longe do eixo principal

Deslocamento ao longo do eixo zz

x 0 = x + dx z
y 0 = y + dy z
z0 = z
Notao matricial

P 0 = SHz P


x
x
1 0 dx 0
y 0 0 1 dy 0 y

z 0 = 0 0 1 0 z
0

0 0

Composio de Transformaes
Composio de rotaes seguidas de escalas e nalmente
rotaes resulta

r11 r12 r13 tx


r21 r22 r23 ty

r31 r32 r33 tz


0
0
0 1
Submatriz rij contm o agregado de rotaes e escalas
Submatriz ti contm o agregado de translaes

Generalizao da Escala
Escala S (sx , sy , sz ) relativamente a um ponto genrico
G (gx , gy , gz )
Translao T1 (gx , gy , gz )
Escala S (sx , sy , sz )
Translao T2 (gx , gy , gz )

P 0 = T2 ST1 P

1
0
=
0
0

0
1
0
0

sx
0 gx

0 gy 0
1 gz 0
0 1
0

sx 0
0 sy
=
0 0
0 0

0
sy
0
0
0
0
sz
0

0
0
sz
0

0
1

0 0
0 0
1
0

0
1
0
0


x
0 gx

0 gy y

1 gz z
0
1
1

gx (1 sx ) x

gy (1 sy )
y

gz (1 sz ) z
1

Generalizao da Rotao  1
Rotao em torno de um eixo genrico
Eixo de rotao caracterizado por
Vector dene o sentido V (vx , vy , vd )
Ponto E (ex , ey , ez )
Rodar o ponto P
Sei rodar em torno dos eixos

E V
y

y
x

Generalizao da Rotao  2
Translao T (ex , ey , ez )
z

E V

para

vx

Eixo de rotao passa pela origem

vy

Generalizao da Rotao  3
Rz (1 )  Rotao em torno do eixo zz
1 = arctan(

vx
)
vy

z
vz
V

vx

V
vypara
y

Eixo de rotao est no plano YZ

vy
x

Generalizao da Rotao  4
Rx (2 )  Rotao em torno do eixo xx
vy0
2 = arctan
vz


vz

V
V

para
vy
y

Eixo de rotao est no eixo zz

y
x

Generalizao da Rotao  5
Rz ()  Rotao em torno do eixo zz
z
V

y
x

Desfazer as rotaes e a translao

Generalizao da Rotao  6
Rotao em torno de um eixo genrico
Eixo de rotao caracterizado por
Vector dene o sentido V (vx , vy , vd )
Ponto E (ex , ey , ez )
Matriz rotao genrica

T (ex , ey , ez )Rz (1 )Rx (2 ) Rz () Rx (2 )Rz (1 )T (ex , ey , ez )


|

{z

desfazer rotaes e translao

{z

colocar eixo rotao na origem

ngulos rotaes

 
1 = arctan vvyx
 0
v
2 = arctan vyz

Referncias
Captulo 5 de James Foley, Andries van Dam, Steven Feiner,
John Hughes, and Richard Phillips. Introduction to Computer
Graphics. Addison-Wesley, 1994.

Projeces
Motivao
Exemplos de Projeces
Denio de Projeco
Projeces Planares
Classes de Projeces Planares
Geomtricas
36 Projeco Paralela Ortogrca
Projeco Paralela Geral /
Oblqua
31
32
33
34
35

37 Projeco Perspectiva

Variante 1
Variante 2
38 Projeco Geral
Parmetros
Clculo Centro de Projeco
Clculo Projeco do Ponto
Matriz de Projeco
Parmetros da Matriz

Motivao
Visualizao de objectos tridimensionais num dispositivo
Terminal
Impressora

Visualizao de dados n-dimensionais


Representao de cenrios
Esquemas de mquinas
Plantas de casas

Exemplos de Projeces  1

Exemplos de Projeces  2

Exemplos de Projeces  3

Exemplos de Projeces  4

Exemplos de Projeces  5

Exemplos de Projeces  6

Denio de Projeco
Superfcie de Projeco
Projectores
Atravessam pontos do objecto e intersectam objecto

Centro de Projeco

Projeces Planares
Planta
Alado
Frontal

Ortogrfica

Alado
Lateral
Isomtrica
Outra
Gabinete

Projeces
Planares
Geomtricas

Paralela

Oblqua
Cavaleira
Um
Ponto

Perspectiva
Dois
Pontos
Trs
Pontos

Outra

Classes de Projeces Planares Geomtricas


Perspectiva

Paralela
plano projeco
projector
A
B

A
B

plano projeco
projector
A
A
B
B

COP

Plano de projeco
Centro de projeco

Plano de projeco
Vector de projeco

Projeco Paralela Ortogrca


Plano de projeco o
plano XY
Projector perpendicular
plano de projeco
A

Projeco do ponto
P (x , y , z )

x = x
y0 = y

0
z =0

eixo x ou y

ax

Matriz de projeco

x0
1
y 0 0
=
z 0 0
W
0

az
eixo z

0
1
0
0

0
0
0
0


0
x
y
0

0 z
1
1

Projeco Paralela Geral / Oblqua


Plano de projeco o
plano XY
Projector oblquo ao plano
de projeco
Vector direo do
projector (dx , dy , dz )
A

Projeco do ponto
P (x , y , z )

x 0 = x z dx

dz
dy
0
y
=y z

dz

z 0 = 0

ax
eixo x ou y

A
ax

Matriz de projeco

dx
1 0

dz
y0
d

= 0 1 y
z0
dz
0 0
0
W
0 0
0

dx
dz

az
eixo z

x0

0 x


y
0

z
0 1
1

Projeco Perspectiva  Variante 1

Matriz de projeco
0
x
pz 0 0
y 0 0 pz 0
=
z 0 0 0 pz
W
0 0 1

A
ax
eixo x ou y

Plano de Projeco paralelo


plano XY z = pz
Centro de projeco situado
na origem
Projeco ponto P (x , y , z )

x0 = x z

z
0 = y pz
y

0
z = pz

A
ax
COP

0
x
pz x

0
y = pz y
0 z pz z
0
1
z

pz
eixo z

az

Projeco Perspectiva  Variante 2

Matriz de projeco
0
x
cz
0
y 0 0 cz
=
z0 0
0
W
0
0

A
ax
eixo x ou y

Plano de Projeco o
plano XY
Centro de projeco situado
no ponto (0, 0, cz )
Projeco ponto P (x , y , z )

cz

x0 = x

z cz
cz
0
y =y

z cz

0
z =0

A
ax
COP
cz

az
eixo z

0
0
x
cz x

0
0
y = cz y

0
0
z
0
1 cz
1
z cz

Projeco Geral  Parmetros


Plano de projeco igual ao
plano XY
Vector direco de um
projector d = (dx , dy , dz )
Distncia ao centro de
projeco Q
Como calcular
coordenadas do centro
de projeco?
coordenadas da
projeco do ponto A?

x
A
ax
A
ax

COP

cx
Q
z
cz

pz

az

Projeco Geral  Clculo Centro de Projeco  1


Clculo das coordenadas do
centro de projeco
C = (cx , cy , cz )
Vector direco um versor

x
A
ax
A
ax

COP

cx

|d| = 1
Centro de projeco

cx = Qdx
cy = Qdy

cz = Qdz

Q
z
cz

pz

az

Projeco Geral  Clculo Centro de Projeco  2


Vector direco um vector
no normalizado
Centro de projeco

cx = Q x

|d|

d
cy = Q y

|d|

cz = Q dz
|d|

x
A
ax
A
ax

COP

cx
Q
z
cz

pz

az

Projeco Geral  Clculo Projeco do Ponto  1


Clculo das coordenadas da
projeco do ponto
A = (x , y , z )
Por equivalncia de
tringulos
z cz pz cz
=
x cx x 0 cx
resulta
d
x z x
dz
x0 =
z

+1
Qdz

x
A
ax
A
ax

COP

cx
Q
z
cz

pz

az

Projeco Geral  Clculo Projeco do Ponto  2


Se o centro de projeco
estiver no innito, Q = ,
simplica para

x
A
ax
A

d
x0 = x z x
dz
Se o plano de projeco
no for o plano XY
dx
H um termo pz
dz

ax

COP

cx
Q
z
cz

pz

az

Projeco Geral  Clculo Projeco do Ponto  3


De modo semelhante se
obtm coordenada y

x
A
ax

d
ay z y
dz
y0 =
z

+1
Qdz
Coordenada z do ponto de
projeco pz

A
ax

COP

cx
Q
z
cz

pz

az

Projeco Geral  Matriz de Projeco

0 1
x

y0
0
=
z0

0
W

0
1
0

dx

dz
dy

dz

0
1

Qdz
d
x z x
dz
dy

y z
dz

0
z

+1
Qdz

0
x

y
0

z
0
1
1

Projeco Geral  Parmetros da Matriz


Parmetros

Q Distncia ao centro de projeco


pz Posio do plano de projeco
(dx , dy , dz ) Vector direco de um projector

Casos particulares de projeces


alado
cavaleira
gabinete
perspectiva (1)
perspectiva (2)

pz
pz

pz
0
0
0
pz
0

dx

0
2 /2
2 /4
0
0

dy

0
2 /2
2 /4
0
0

dz
1
1
1
1
1

Referncias
Captulo 6 de James Foley, Andries van Dam, Steven Feiner,
John Hughes, and Richard Phillips. Introduction to Computer
Graphics. Addison-Wesley, 1994.

Recorte
39 Motivao
40 Recorte a Duas Dimenses 

Linha

41 Algoritmo Cohen-Sutherland

Recorte de Linhas
Clculo do Cdigo
Diviso da Linha
Exemplo 1
Exemplo 2
Extenso a 3D Algoritmo
Cohen-Sutherland
42 Algoritmo Cyrus-Beck Recorte
de Linhas em Polgonos
Classicao Interseces

43

44

45
46

Aplicao a Recorte em
Polgonos
Recorte de Polgonos
Algoritmo Sutherland-Hodgman
Recorte Polgonos
Recorte de uma Linha
Exemplo
Recorte a 3D Genrico
Exemplo Recorte Volume
Cannico
Generalizao do Plano de
Projeco
Converso Projeco Geral no
Volume Cannico

Motivao
O que acontece se
o centro de projeco est no meio do objecto?
o centro de projeco e o plano de projeco esto no meio do
objecto?

necessrio eliminar partes do objecto a projectar


vulgar apresentar partes do mundo
H objectos que so recortados

Recorte a Duas Dimenses  Linha


Pretende-se recortar um
segmento de recta
Janela sobre o mundo
(window) rectangular
necessrio determinar a
interseco do segmento
recta com as quatro rectas
que representam a janela
Um ponto P = (x , y )
visvel se

xmin x xmax
ymin y ymax

ymax
B

ymin

E
xmin

xmax

Algoritmo Cohen-Sutherland Recorte de Linhas


Plano dividido em 9 regies
Cada regio tem um cdigo de 4 bits
Primeiro bit 1 se x < xmin
Segundo bit 1 se x > xmax
Terceiro bit 1 se y < ymin
Quarto bit 1 se y > ymax
Calcular o cdigo dos extremos da linha
Se ambos os cdigos so 0 a linha visvel
Se o AND-lgico dos cdigos diferente de 0 a linha no
visvel
Se o AND-lgico dos cdigos 0 necessrio dividir a linha

Clculo do Cdigo
D
0001

1001

0101

ymax

ymax

B
1000

0000

0100
ymin

ymin
0010

1010
xmin

0110
xmax

Primeiro bit 1 se x < xmin


Segundo bit 1 se
x > xmax
Terceiro bit 1 se y < ymin
Quarto bit 1 se y > ymax

E
xmin

xmax

Cdigos da linha AB
Cdigos da linha CD
Cdigos da linha EF
Cdigos da linha GH
Cdigos da linha IJ

Algoritmo Cohen-Sutherland  Diviso da Linha


Escolher um ponto que est
fora da regio
Cdigo diferente de 0

Escolhe uma aresta para


determinar o ponto de
interseco

As arestas so escolhidas
sempre pela mesma
ordem
esquerda, direita, baixo,
cima

No clculo do ponto de
interseco podemos usar
equao paramtrica
(
x = xa + t (xb xa )
y = ya + t (yb ya )

F2

ymax
B

A1

ymin

A
E1

E3

E
xmin

xmax

Algoritmo Cohen-Sutherland  Exemplo 1


Aplicao linha AB
Interseco linha AB com
aresta esquerda

x xa

t1 = min
xb xa
x xa

y1 = ya + min
(y ya )
xb xa b
Cdigos da linha AA1 ?
Cdigos da linha A1 B ?

Linha A1 B trivialmente
aceite

F2

ymax
B

A1

ymin

A
E1

E3

E
xmin

xmax

Algoritmo Cohen-Sutherland  Exemplo 2


Aplicao linha EF
Interseco linha EF com
aresta esquerda

x xe

t1 = min
xf xe
y ye

y1 = ye + (xmin xe ) f
xf xe
Cdigos da linha EE1 ?
Cdigos da linha E1 F ?

Repetir o processo com a


linha E1 F

F2

ymax
B

A1

ymin

A
E1

E3

E
xmin

xmax

Algoritmo Cohen-Sutherland  Exemplo 2


Aplicao linha EF
Interseco linha E1 F com
aresta direita

x xe

t2 = max
xf xe
y ye

y2 = ye + (xmax xe ) f
xf xe
Cdigos da linha E1 F1 ?
Cdigos da linha F1 F ?

Repetir o processo com a


linha E1 F1

F2

ymax
B

A1

ymin

A
E1

E3

E
xmin

xmax

Algoritmo Cohen-Sutherland  Exemplo 2


Aplicao linha Linha EF
Interseco linha E1 F1 com
aresta de baixo

ymax ye

t3 =
yf ye
x xe

x3 = xe + (ymax ye ) f
yf ya
Cdigos da linha E1 E3 ?
Cdigos da linha E3 F1 ?

Linha E3 F1 trivialmente
aceite

F2

ymax
B

A1

ymin

A
E1

E3

E
xmin

xmax

Extenso a 3D Algoritmo Cohen-Sutherland


A extenso possvel se
consideramos um cubo
Espao dividido em 27
regies
Cada regio tem um cdigo
de 6 bits
Primeiro bit 1 se
x < xmin
Segundo bit 1 se
x > xmax
Terceiro bit 1 se
y < ymin
Quarto bit 1 se
y > ymax
Quinto bit 1 se
z < zmin
Sexto bit 1 se z > zmax

plano traseiro
plano projeco
plano frente

zmin
zmax

Algoritmo Cyrus-Beck Recorte de Linhas em Polgonos  1


No clculo da interseco da linha P0 P1 com a aresta Ai
Produto interno do vector Ni com o vector Pe P0 positivo
Produto interno do vector Ni com o vector Pe P1 negativo
Produto interno do vector Ni com o vector Pe X zero
Equao paramtrica da linha

P (t ) = P0 + t (P1 P0 )
fora regio dentro regio
aresta Ai
Pe
P0
P(t)

Ni

X
P1

Algoritmo Cyrus-Beck Recorte de Linhas em Polgonos  2


Clculo do valor de t

Ni (P (t ) Pe ) = 0
Ni (P0 Pe ) + tNi (P1 P0 ) = 0
N (P0 Pe )
t= i
Ni (P1 P0 )
Se t
/ [0, 1] a linha no intersecta a aresta Ai
fora regio dentro regio
aresta Ai
Pe
P0
P(t)

Ni

X
P1

Algoritmo Cyrus-Beck
Classicao Interseces

Podemos classicar o ponto


de interseco
potencialmente entrar na
regio de recorte
potencialmente sair da
regio de recorte

Produto interno de Ni com

P0 P1

Sinal do denominador de
N (P0 P2 )
t= i
Ni (P1 P0 )
Deslocando de P0 para P1
usamos o segmento PE PS

PE

ymax

PS

PS
B
PE

ymin

A
PE

PE

E
xmin

xmax

F
PS

Aplicao a Recorte em Polgonos


Regio de recorte um
polgono
Inicializar te 0 e ts 1
Para cada aresta Ai calcular
ti
Classicar a interseco
Se potencialmente entrar
te max(te , ti )
Se potencialmente sair
ts min(ts , ti )

No nal se te > ts a linha


no visvel

Recorte de Polgonos
O recorte de um polgono
pode produzir

Um ou mais polgonos
Nenhum polgono
Prpria regio de recorte
polgonos convexos

polgono convexo

Algoritmo Sutherland-Hodgman Recorte Polgonos


Algoritmo geral recorte de um polgono cncavo ou convexo
numa rea poligonal convexa

Algoritmo Sutherland-Hodgman Recorte de uma Linha


O algoritmo analisa linha P0 P1
Produz 0, 1 ou 2 vrtices conforme a linha intersecta uma
aresta
fora regio

dentro regio

fora regio

dentro regio
P1

P0

P0

P1
fora regio

dentro regio

fora regio
P1

P0

P1

dentro regio
P0

Algoritmo Sutherland-Hodgman Exemplo  1


A primeira iterao do
algoritmo recebe a lista de
vrtices

P0 P1 P2 P3 P4 P5

Recorte com a aresta direita


produz a lista de vrtices
PD P2 P3 P4 P5 PC
Recorte com aresta topo
produz a lista de vrtices
PB P3 P4 P5 PC PA
Arestas seguintes no
alteram a lista de vrtices

2
B
4

3
C

Algoritmo Sutherland-Hodgman Exemplo  2


A primeira iterao do algoritmo recebe a lista de vrtices do
polgono P0 P1 P2 P3 P4
Recorte com a aresta diagonal produz que lista de vrtices?
1
A

B
3

C
2

E
4

Recorte a 3D Genrico
Recorte num volume genrico
Para efectuar o recorte de uma linha necessrio calcular a
interseco da linha com cada plano do volume
O clculo mais fcil para alguns volumes
Volume de recorte de uma
projeco paralela

x = 1, x = 1
y = 1, y = 1
z = 0, z = 1

Volume de recorte de uma


projeco perspectiva

x = z , x = z
y = z , y = z
z = zmin , z = 1

x ou y

x ou y

plano traseiro

plano frontal

plano traseiro

plano frontal

z
1

z
1

Exemplo Recorte Volume Cannico  1


Equao paramtrica da linha AB

x = xa + t (xb xa )
y = ya + t (yb ya )

z = za + t (zb za )

t [0, 1]

Interseco com o plano z = 1

1 za
zb za
x xa
x = xa + (1 za ) b
zb za
yb ya
y = ya + (1 za )
zb za

t=

Exemplo Recorte Volume Cannico  2


Equao paramtrica da linha AB

x = xa + t (xb xa )
y = ya + t (yb ya )

z = za + t (zb za )

t [0, 1]

Interseco com o plano x = z

xa + t (xb xa ) = za t (zb za )
za xa
t=
zb xa + zb za
(zb za )(za xa )
y = ya +
zb xa + zb za

Generalizao do Plano de Projeco


Plano de projeco caracterizado por
PRP ponto de referncia do plano de projeco
VNP vector normal plano de projeco
VSA vector sentido ascendente
Projeco de VSA no plano de projeco dene o eixo v
Vector VNP dene o eixo n
Eixo u tal que u , v e n formam um sistema de mo direita

Como efectuar uma projeco no plano?


Translao T (px , py , pz )

Duas rotaes para alinhar vector normal com eixo dos Z


Rotao para alinha vector VSA com o plano ZY
Aplicar a projeco
Utilizar coordenadas X e Y dos pontos projectados

No entanto, projeco combinada com recorte necessita de


mais projeces

Converso Projeco Geral no Volume Cannico


Denio Volume Geral
Plano Frontal = plano
de projeco
Plano Traseiro
Distncia ao plano
frontal

Dimenses da janela
Eixos

Transformaes
Translao T (PRP )

Rotao de modo a que


VNP que coincidente
com eixo zz
Escala de modo a que
volume coincida com
paraleleppedo cannico

Denio de uma projeco


genrica
PRP ponto de referncia
do plano de projeco
VNP vector normal
plano de projeco
VSA vector sentido
ascendente
Projeco de VSA no
plano de projeco
dene o eixo v
Vector VNP dene o
eixo n
Eixo u tal que u , v
e n formam um
sistema de mo
direita

OpenGL
47

48
49

Esqueleto Programa OpenGL


Inicializao e Criao da
Janela
Gesto de Eventos
Criao de Objectos
Passos Transformao dos
Vrtices
Coordenadas Objectos
Matriz Visualizao e
Modelao
Matriz Projeco

50
51
52
53
54
55
56

Diviso Perspectiva
Transformao
Window-Viewport
Pipeline Operaes
Display List
Operaes em Pixeis
Leitura e Escrita
Evaluators
Texture Assembly
Primitive Assembly
Rasterization

Esqueleto Programa OpenGL


int main ( int c , char * a [])
{
glutInit (& c , a );
glutInitWindowSize (600 , 600);
glutInitDisplayMode ( GLUT_DOUBLE | GLUT_RGB );
glutCreateWindow ( " Hello World " );
setup ();
glutDisplayFunc ( displayCallBack );
glutReshapeFunc ( reshapeCallBack );
glutKeyboardFunc ( keyboardCallBack );
glutSpecialFunc ( specialCallBack );
glutTimerFunc ( simulationSpeed , timerCallBack , 0);
glutMainLoop ();
}

Inicializao e Criao da Janela


void glutInit(int,char**)

primeira funo que deve ser chamada


inicializa a biblioteca GLUT
void glutInitWindowSize(int width,int height)
void glutInitWindowPosition(int x,int y)

dene as caractersticas iniciais da janela


void glutInitDisplayMode(unsigned int)

dene as caractersticas de visualizao


parmetro uma mscara composta
GLUT_RGBA ou GLUT_INDEX especicao das cores
GLUT_SINGLE ou GLUT_DOUBLE um ou um duplo buer
int glutCreateWindow(char*name)

cria uma janela com as caractersticas especicadas


anteriormente
devolve identicador de janela
possvel ter vrias janelas
argumento o ttulo da janela

Gesto de Eventos  1
void glutDisplayFunc(void(*func)(void))

especica a funo a ser invocada quando a janela precisa de


ser desenhada
void glutReshapeFunc(void(*func)(int width,int height))

especica a funo a ser invocada quando a janela


redimensionada ou movida
parmetros representam nova dimenso da janela
void glutKeyboardFunc(void(*func)(unsigned char key,
int x,int y))

especica a funo a ser invocada quando o utilizador carrega


numa tecla
parmetro key contm o caracter correspondente tecla
parmetros x e y contm as coordenadas do rato
no sistema de eixos da janela

Gesto de Eventos  2
void glutMouseFunc(void(*func)(int button,int state,
int x,int y))

especica a funo a ser invocada quando um boto do rato


carregado ou libertado
parmetro button contm valor GLUT_LEFT_BUTTON ou
GLUT_RIGHT_BUTTON
parmetro state contm valor GLUT_UP ou GLUT_DOWN

void glutSpecialFunc(void(*func)(int key,int x,int y))

especica a funo a ser invocada quando o utilizador carrega


numa tecla que no corresponde a um caracter ASCII
parmetro key contm o cdigo correspondente tecla
GLUT_KEY_LEFT GLUT_KEY_RIGHT GLUT_KEY_UP
GLUT_KEY_DOWN
parmetros x e y contm as coordenadas do rato
no sistema de eixos da janela

Criao de Objectos
glBegin ( GL_POLYGON ); {
glVertex2f ( -0.5 , 0.5);
glVertex2f ( 0.5 , 0.5);
glVertex2f ( 0.5 , -0.5);
glVertex2f ( -0.5 , -0.5);
}
glEnd ();
glBegin (GLenum mode)

marca o incio de um conjunto de vrtices


parmetro mode permite especicar o tipo de objecto
GL_POINTS
GL_LINES pares de vrtices representam linhas
GL_LINE_STRIP linha poligonal
GL_LINE_LOOP linha poligonal fechada
GL_TRIANGLES triplos de vrtices representam tringulos
GL_QUADS conjuntos de 4 vrtices representam polgonos de 4
faces
GL_POLYGON polgono convexo

Passos Transformao dos Vrtices

Coordenadas
dos objectos
Matriz viso
e modelao
Matriz projeco
coordenadas recortadas
Diviso perspectiva
Matriz transformao
window-viewport
coordenadas viewport

Coordenadas Objectos  1

Coordenadas
dos objectos
Matriz viso
e modelao
Matriz projeco
coordenadas recortadas
Diviso perspectiva
Matriz transformao
window-viewport
coordenadas viewport

glutWireCube (1.0);
glBegin ( GL_LINE_STRIP ); {
glVertex3f (0.5 , 0.5 , 0.5);
glVertex3f (0.5 , 0.5 , 1);
glVertex3f (0.5 , 1.0 , 1);
glVertex3f (1.0 , 1.0 , 1);
glVertex3f (1.0 , 1.0 , 2);
glVertex3f (1.1 , 1.0 , 2);
glVertex3f (1.1 , 1.1 , 2);
glVertex3f (1.0 , 1.1 , 2);
glVertex3f (1.0 , 1.0 , 2);
} glEnd ();

Coordenadas Objectos  2

Coordenadas
dos objectos
Matriz viso
e modelao
Matriz projeco
coordenadas recortadas
Diviso perspectiva
Matriz transformao
window-viewport
coordenadas viewport

glBegin ( GL_POLYGON ); {
glVertex2f ( -0.5 , 0.5);
glVertex2f ( 0.5 , 0.5);
glVertex2f ( 0.5 , -0.5);
glVertex2f ( -0.5 , -0.5);
}
glEnd ();
glTranslatef (3 , 10 , 0);
glBegin ( GL_LINE_LOOP ); {
glVertex2f ( -0.5 , 0.5);
glVertex2f ( 0.5 , 0.5);
glVertex2f ( 0.5 , -0.5);
glVertex2f ( -0.5 , -0.5);
}
glEnd ();

Matriz Visualizao e Modelao

Coordenadas
dos objectos
Matriz viso
e modelao
Matriz projeco
coordenadas recortadas
Diviso perspectiva
Matriz transformao
window-viewport
coordenadas viewport

Matriz visualizao
Onde ca a cmara

glMatrixMode ( GL_MODELVIEW );
glLoadIdentity ();
gluLookAt (
eye [0] , eye [1] , eye [2] ,
center [0] , center [1] , center [2] ,
up [0] , up [1] , up [2]
);

Matriz modelao
Reposicionamento global
do modelo
glScalef (20.0 , 20.0 , 20.0);

Matriz Projeco
Coordenadas
dos objectos
Matriz viso
e modelao
Matriz projeco
coordenadas recortadas
Diviso perspectiva
Matriz transformao
window-viewport
coordenadas viewport

Projeco geomtrica
perspectiva
glMatrixMode ( GL_PROJECTION );
glLoadIdentity ();
glFrustum (
left ,
right ,
bottom , top ,
near ,
far );

Projeco geomtrica
paralela
glMatrixMode ( GL_PROJECTION );
glLoadIdentity ();
glOrtho (
left ,
right ,
bottom , top ,
near ,
far );

Per-Vertex Operations  Operaes nos Vrtices


Coordenadas
dos objectos
Matriz viso
e modelao
Matriz projeco
coordenadas recortadas
Diviso perspectiva
Matriz transformao
window-viewport
coordenadas viewport

Diviso de perspectiva
consiste em transformar
(x , y , z , W ) em
(x /W , y /W , z /W )

Transformao Window-Viewport
Coordenadas
dos objectos
Matriz viso
e modelao
Matriz projeco
coordenadas
recortadas
Diviso perspectiva
Matriz transformao
window-viewport
coordenadas
viewport

Como mapear os pontos de uma janela de


utilizador num enquadramento
window janela utilizador
viewport enquadramento
glViewport (
x, y,
width , height );

Deve ser especicado quando a janela


muda de tamanho
Funo glutReshape

possvel especicar mltiplos


enquadramentos

Pipeline Operaes

Pixel data

Vertex data

Diplay list
Pixel
operations
Texture
assembly

Evaluators
Per-vertex operations
and primitive assembly

Rasterization
Per-fragment
operations
Framebuffer

Dados pixel
Pixeis
Imagens
Mapas de bit

Dados geomtricos
Vrtices
Linhas
Polgonos

Display List
Dados (pixeis, e vrtices) podem ser guardados numa display

list

Os dados numa display list podem ser reutilizados


No obrigatrio guardar os dados numa display list
Modo de processamento imediato

API OpenGL
GLuint glGenLists (GLsizei range)
void glNewList (GLuint list, GLenum mode)
Modos possveis: GL_COMPILE e GL_COMPILE_AND_EXECUTE
void glEndList (void)
void glCallList (GLuint list) executa os comandos da lista
void glDeleteLists (GLuint list, GLsizei range)

A lista pode conter os comandos


void glPushMatrix(), void glPopMatrix(),
void glPushAttrib(GLbitfield mask), e void glPopAttrib()

Permite que a lista no altere o estado

Operaes em Pixeis

Processor memory
Per-vertex operations
and primitive assembly
Rasterization
(fog, texture)
Per-fragment
operations
Framebuffer

Representao dos pixeis


formato da cor, tons
cinzento, . . .
nmero de bits

Formato da imagem:
necessrio converter para o

framebuer

possvel ler e escrever


na imagem que est no
framebuer

Transformao da imagem
efeito de nevoeiro
recorte de uma poro

Operaes em Pixels  Leitura e Escrita


void glReadPixels (GLint x, GLint y, GLsizei width,
GLsize height, GLenum format, GLenum type, GLvoid *pixels)
void glRasterPos3i (GLint x, GLint y, GLint z)
void glDrawPixels (GLsizei width, GLsizei height,
GLenum format, GLenum type, GLvoid *pixels)

Formato indica a representao da cor dos pixeis


O tipo depende da representao dos pixels
nmero de bits

Evaluators
Superfcies e curvas especicadas por pontos de controle
Gerao dos restantes pontos atravs de uma funo

Texture Assembly
Polgonos podem ser preenchidos com texturas
Textura pode ser combinada com a cor do polgono
Alinhamento da mesma textura em dois ou mais polgonos
Textura pode ser transformada
Escala, rotao, translao, cisalhamento (shear) e
transformao

Texturas normalmente so imagens a duas dimenses


Mas podem ser a uma dimenso: preencher uma linha
Ou a trs dimenses

Primitive Assembly
Recorte de pontos, linhas e polgonos
Polgonos podem ser eliminados por estarem obscurecidos por
outros
void glCullFace (GLenum mode)
Modos possveis GL_FRONT, GL_BACK e GL_FRONT_AND_BACK

Algumas arestas de polgonos no precisam de ser desenhadas


Polgono cncavo formado por dois ou mais polgonos convexos
Arestas comuns no so desenhadas
void glEdgeFlag (GLboolean flag)

Rasterization
Dados vrtices e dados pixeis so convertidos em fragmentos
Um fragmento corresponde a um pixel no framebuer
Propriedades das linhas e dos pontos

Antialiasing Suavizao de linhas diagonais ou curvas

Referncias
http://www.opengl.org/sdk/docs/man4/ OpenGL 4
Reference Pages
http://www.opengl.org/
resources/libraries/glut/spec3/spec3.html GLUT API
Version 3
Dave Shreiner, Mason Woo, Jackie Neider and Tom Davis.

OpenGL Programming Guide: the ocial guide to learning


OpenGL, version 2. Addison Wesley. 2006

Luz Acromtica e Cromtica


57
58
59
60
61
62
63
64
65

Denio de Luz
Espectro Electromagntico
Sistema de Viso do Ser
Humano
Introduo Luz Acromtica
Nveis de Intensidade
Aproximao da Intensidade
Padro Dither
Matriz de Dither
Outras Resolues
Dispositivo e Imagem
Introduo Luz Cromtica

66
67
68
69
70
71
72

Cor na Pintura
Cor na Fsica
Distribuio Espectral de
Energia
Percepo de Luz Cromtica
Diferentes Nveis de
Intensidade
Diagrama Cromaticidade CIE
Modelos de Cor para
Computao Grca
Modelo RGB
Modelo CMY
Modelo HSV

Denio de Luz
Luz radiao electromagntica

Composta por fotes caracterizados por


posio
direco
frequncia

Frequncia comprimento de onda energia

Humanos percepcionam radiao com comprimento de onda


no intervalo [400; 700]nm
1 nanmetro igual a 109 metros

Espectro Electromagntico

http://upload.wikimedia.org/
wikipedia/commons/thumb/f/f1/EM_spectrum.svg/1000px-EM_spectrum.svg.png

Sistema de Viso do Ser Humano  1


Dois tipos de clulas sensveis luz
Bastonetes
Sensveis intensidade da luz
Mais sensveis que os cones
responde a um nico foto
100 vezes mais sensvel que um cone

Cones
Sensveis a uma dada frequncia
Permite distino de cores
Tempo de resposta rpido

Intensidade da resposta no varia linearmente com a


intensidade da luz
Mais sensveis a pequenas variaes de pequenas intensidades

Sistema de Viso do Ser Humano  2

Reposta dos diferentes tipos de clulas frequncia da luz


L resposta dos cones s frequncias altas
M resposta dos cones s frequncias mdias
S resposta dos cones s frequncias baixas
R resposta dos bastonetes

Sistema de Viso do Ser Humano  3


1

resposta olho

0.8

0.6

0.4

0.2

0
0

0.2

0.4
0.6
intensidade luz

0.8

Resposta do olho uma potncia da entrada

R = I

Introduo Luz Acromtica


Luz associada a dispositivos preto-branco ou duas cores
Pessoa que no percepciona cores
nico atributo luz acromtica: quantidade de luz
Termos na Fsica
Intensidade
Luminosidade

Termos na Psicologia
Brilho

Nveis de Intensidade  1
Como escolher os nveis de intensidade?
Intensidade valor do intervalo [0, 1]

Vamos escolher n 10 nveis


Caso 1
0
0, 92

0, 02
0, 94

0, 04
0, 96

0, 06
0, 98

0, 08
1

Descontinuidade grande entre 0, 08 e 0, 92

Caso 2
0

0, 1

0, 2

0, 3

0, 4

0, 5

0, 6

0, 7

0, 8

Resposta s intensidades 0, 8 e 0, 9 semelhante


Valores devem estar espaados logaritmicamente

0, 9

Nveis de Intensidade  2
Variao de luz de lmpadas 50, 100 e 150 watts
Percepo da variao de 50 para 100 maior que percepo
variao de 100 para 150

Nveis de intensidade devem variar geometricamente


intensidade j
Ij = r j I0
I0 menor intensidade de luz gerada pelo dispositivo

Rcio deve ser igual ou menor a 1, 01 para o olho humano no


distinguir diferenas
Nmero de nveis de intensidade

n = log1.01 (1/I0 )
1
I0 gama dinmica do dispositivo

Nveis de Intensidade  3
Quantos nveis de intensidade so necessrios?
De modo a que o olho humano no note diferenas

Depende do dispositivo
2 nveis

retirado de http://www.jiscdigitalmedia.ac.uk

16 nveis

Nveis de Intensidade  4
256 nveis

retirado de http://www.jiscdigitalmedia.ac.uk

Nveis de Intensidade  5
dispositivo
CRT
Fotograa impressa
Acetato fotograa
Papel couch preto/branco
Papel couch cor
Papel jornal preto/branco

gama dinmica
50-200
100
1000
100
50
10

Nveis calculados a partir da gama dinmica


Na prtica so necessrios menos nveis
Borro de tinta
Rudo na reproduo

nveis n
400-530
465
700
465
400
234

Aproximao da Intensidade
Como simular vrios nveis de intensidade quando o dispositivo
s tem dois nveis?
bilevel device
Tcnica halftoning ou clustered-dot ordered dither
integrao espacial  observarmos uma rea pequena de muito
longe s vemos a intensidade mdia
Cada ponto representado por um crculo de raio proporcional
intensidade

Utiliza-se padres de dither (pontilhamento)

Padro Dither
Padro de dither representado formado por rea n n pixeis
rea de n n fornece n2 + 1 nveis de intensidade
Caractersticas
Padro deve formar sequncia de crescimento
Pixel activado no nvel

deve estar activado no nvel j > i

No deve introduzir efeitos indesejados


Padro formado com linha horizontal

Padro deve crescer a partir do centro


Pixeis activados devem estar contguos
versus dispersed-dot
Depende do dispositivo (impressora versus cran)
clustered-dot

Resoluo espacial versus resoluo intensidade

Matriz de Dither  1
Matriz de dither codica padres

6 8
1 0
5 2

4
3
7

Para apresentar intensidade I activa-se os pixeis cujo valor


menor que I
Qual a matriz que codica?

Matriz de Dither  2
Matriz de dither pode ser construda por uma relao de
recorrncia
Se o dispositivo tiver mais de que um nvel de intensidade, m,
podemos representar n n m + 1 intensidades

 
 
 
 

0 0
1 0
1 0
1 0
1 1
0 0
0 0
0 1
1 1
1 1

 
 
 

2 1
2 1
2 1
2 2
1 1
1 2
2 2
2 2
Assume-se que o dispositivo tem pixeis sucientes para
mostrar a imagem com a matriz de dither

Outras Resolues Dispositivo e Imagem


Se o dispositivo tem a mesma resoluo que a imagem
Intensidade de um ponto (x , y ) depende do resto da diviso
por n
Difundir o erro (diferena entre o pixel da imagem e o
apresentado) pelos pixeis adjacentes

Introduo Luz Cromtica


Termos para descrever a cor
Hue / Tom permite distinguir entre vrias cores: vermelho,
verde, azul e amarelo
Saturation / Saturao indica quo distante est do cinzento
Lightness / Intensidade corresponde noo de intensidade
da luz acromtica
capacidade de reectir luz branca

Brightness / Brilho percepo da luz emitida

Utilizado em vez do termo intensidade

Cor na Pintura  1
Um artista utiliza pigmentos brancos, pretos e de cores puras
Cor criada atravs de
Shade / Sombra juno de pigmentos pretos a pigmentos de
uma cor pura
Tint / Matiz juno de pigmentos brancos a pigmentos de
uma cor pura
Tone / Tom juno de pigmentos brancos e pretos com
pigmentos de uma cor pura
Caracterizao subjectiva da luz
Depende
Depende
Depende
Depende

do observador
do brilho e do tamanho do objecto visualizado
das cores de objectos prximos
da intensidade da luz ambiente

Cor na Pintura  2

Cor na Fsica  1
Colorimetria  rea da fsica dedicada ao estudo da luz
Caracterizao fsica da luz

Luz caracterizada por comprimento de onda


comprimento de onda dominante
excitation purity / Saturao da cor

relao entre a cor do comprimento de onda dominante e luz


branca para denir a cor
Cor pura 100% saturada e no contm luz branca
Luz branca e cinzentos so 0% saturados  no contm
nenhum comprimento de onda dominante

luminance / intensidade de luz

quantidade de luz emitida por um objecto

Comparao entre caracterizao subjectiva e colorimetria

subjectivo

Tom
Saturao
Intensidade
Brilho

colorimetria

Comprimento de Onda Dominante

Excitation Purity
Luminance
Luminance

densidade de energia

Cor na Fsica  Distribuio Espectral de Energia


e2

comprimento onda
dominante

e1

400
violeta

comprimento de onda

700
vermelho

Comprimento de onda corresponde ao pico no grco


Saturao depende da relao entre e1 e e2
Se e2 ento a saturao 100%
Brilho proporcional ao produto do grco com uma funo
de ecincia luminosa

Percepo de Luz Cromtica


Olho humano percepciona a
luz quando as clulas cones
so excitadas por fotes

Olho percepciona cores que


no so produzidas por um
prisma ou arco-ris

Trs tipos de cones

Cor pode ser gerada por


soma ponderada 3 cores
primrias

Comprimento de onda a
que corresponde excitao
mxima
440nm  cone azul
545nm  cone verde
580nm  cone vermelho
Reposta luz azul menor
do que luz verde ou
vermelha

Diferentes Nveis de Intensidade


4 cores

16 cores

http://www.jiscdigitalmedia.ac.uk

alguns milhes de cores

Diagrama Cromaticidade CIE  1


Substituem as cores azul, verde e vermelho
Curva de resposta de RGB assume que para gerar uma cor
pode ser necessrio subtrair uma cor primria

Uma cor uma soma das 3 componentes


Quantidade de cor primria r (), g (), b () necessria para

um observador estabelecer uma correspondncia com uma cor


de intensidade constante

Diagrama Cromaticidade CIE  2

X , Y e Z so cores primrias imaginrias do modelo CIE


Uma cor pode ser obtida por combinao linear de X , Y e Z
A combinao linear resulta numa distribuio espectral de
energia

Diagrama Cromaticidade CIE  3

Diagrama Cromaticidade CIE


1=X +Y +Z

Modelos de Cor para Computao Grca


Modelo de cor uma especicao num espao a 3 dimenses
Modelo de cor representa um subconjunto de todas as cores
possveis
Um modelo pode ser transformado noutra
convertendo para o padro universal CIE X, Y, Z
atravs de uma matriz
a
b

c1

m11 m12 m13 c1


m22 m23 c2b
c3b
31 m32 m33

c2a = m21
ca
m
3

Modelo RGB
Cores primrias
Vermelho
Verde
Azul

verde
C
A

As cores primrias so
aditivas
(0,1,0) verde

azul

M
vermelho

(1,1,0) amarelo

(0,1,1) cyan
(1,1,1) branco
(1,0,0) vermelho
(0,0,1) azul

(1,0,1) magenta

Modelo CMY
Cores primrias

Cyan ou cio ou
azul-ciano
Magenta
Amarelo

As cores primrias so
subtractivas

Dispositivos impressora
Superfcie coberta com
amarelo no emite luz
azul
(0,1,0) magenta

Superfcie coberta com


cio no emite luz
vermelha
amarelo
Vd
Vm
cyan

A
magenta

(1,1,0) azul

(0,1,1) vermelho
(1,1,1) preto
(1,0,0) cyan

Modelo HSV
Orientado ao utilizador
Baseado na noo de matiz, sombra e tom de um artista

Representado por pirmide hexagonal


Coordenadas
H hue ngulo volta do eixo vertical

pigmento escolhido pelo artista


S saturation distncia ao eixo vertical (limite superfcie do cone
determina o tom
adio de pigmento branco corresponde a diminuir S
S = 0 eixo vertical
S = 1 face polgono
V value altura
determina o tom

Modelo HSV
V
verde

amarelo
branco

cyan

azul

vermelho

magenta

H
preto

Referncias
Captulo 13 de James Foley, Andries van Dam, Steven Feiner,
John Hughes, and Richard Phillips. Introduction to Computer
Graphics. Addison-Wesley, 1994.
http://www.imaging.org
/resources/tutorials/printing.cfm
/ist/resources/tutorials/digital_image.cfm

http://www.jiscdigitalmedia.ac.uk
/stillimages/advice/the-digital-still-image

Imagens Realistas

73

Motivao

74

Algumas Diculdades

75

Algumas Tcnicas

Motivao
Simulao
simulador de voo, simulador de conduo
apresentao do ambiente e outros avies/veculos

Modelao e desenho assistido por computador


visualizao do produto nal
teste de diferentes texturas e padres

Entretenimento e publicidade
efeitos especiais em cinema
videojogos

Investigao e educao
modelao de molculas
misses espaciais

Controlo de mquinas
apresentao de informao sensorial

Algumas Diculdades
Dispositivos so 2D
Iluses pticas
Projeces minimizam iluses
Mltiplas projeces: frontal, lateral e planta
Projeco perspectiva: noo de profundidade

Recorte
Plano de recorte controlvel pelo utilizador

Algumas Tcnicas
Textura
Cor
Iluminao e shading

A cor de cada pixel de uma superfcie depende

posio
orientao
caractersticas pticas (cor, textura, reectividade)

Eliminao de linhas, ou polgonos escondidos / Determinao


face vsivel
Shading interpolado
til em polgonos que representam uma superfcie
Em alternativa, calcular todos os pontos da superfcie

Interaco de vrias fontes de luz com objectos


Sombras
Transparncia
Reectividade

Modelos de cmara alternativos


Objectos desfocados
Objectos em movimentos

Operaes sobre Vectores

76

Produto Interno

77

Propriedades do Produto Interno

78

Produto Externo

79

Propriedades do Produto Externo

80

Utilizao Produto Externo

Produto Interno
Dados dois vectores de
igual dimenso

a = (a1 , a2 , . . .)

b = (b1 , b2 , . . .)

Produto interno de
a por

b um escalar
representa-se por

a b

o seu valor dado por


n
X
a1 b1 +a2 b2 +. . . =
a i bi
i =1
ou

|
a || b | cos

Geometricamente a

projeco do vector
a na
recta com direco denida

dada pelo vector b


b
a

Propriedades do Produto Interno


Comutativo
Associativo

a b = b
a

a (b
c ) = (
a b)
c

Distributivo em relao soma de vectores

a (b +
c ) = (
a b ) + (
a
c)

Produto Externo  1
Dados dois vectores num espao a 3 dimenses

a = (a1 , a2 , a3 )

b = (b1 , b2 , b3 )

Produto externo de
a por b um vector
representa-se por

a b
perpendicular ao plano

formado por
a e b
comprimento dado por

|
a || b | sin

direco dada pela regra da


mo direita
b
a

a b

Produto Externo  2
Outra variante para calcular o produto externo




x y z
a1 a2 a3


b1 b2 b3
Determinante da matriz igual a

(a2 b3 a3 b2 , a3 b1 a1 b3 , a2 b3 a3 b2 )

Propriedades do Produto Externo


No comutativo

a b =b
a

No associativo

a (b
c ) 6= (
a b)
c

Utilizao Produto Externo


Determinar se um polgono 2D convexo ou no
Calcular o produto externo dos vectores que representam lados
sucessivos do polgono
Se a coordenada z dos produtos externos
for sempre 0 um polgono degenerado
for maior ou igual a 0 um polgono convexo
for menor ou igual a 0 um polgono convexo
caso contrrio um polgono cncavo

Eliminao Invisveis
81 Algoritmos Gerais

Espao Imagem
(Image-Precision)
Espao Objectos 
(Object-Precision)
82 Tcnicas Gerais
Coerncia
Transformao Perspectiva
Back-to-Face Culling
Volume Envolvente
83 Algoritmo Z-Buer

Descrio
Detalhes
84 Algoritmo Depth-Sort
Descrio Geral
Detalhes
85 Algoritmo Binary
Space-Partitioning Trees
Descrio Geral
Exemplo
86 Algoritmo Warnock
Descrio Geral
Exemplo

Algoritmos Gerais  Espao Imagem (Image-Precision)


Pseudo-cdigo

for para cada pixel na imagem


calcular o objecto mais prximo do utilizador
que atravessado pelo projector
que passa pelo pixel
desenhar o pixel na cor apropriada
Complexidade temporal O (np )
n nmero de objectos
p nmero de pixeis
Refazer os clculos quando

Mudana de escala
alterao da resoluo
Nova localizao da cmara

Algoritmos Gerais  Espao Objectos  (object-precision)


Pseudo-cdigo

for para cada objecto no mundo


calcular as partes do objecto
que no so obstrudas por partes
do prprio
ou de outros objectos
desenhar essas partes na cor apropriada
Complexidade temporal O (n2 )
n nmero de objectos
Clculos mantm-se quando
Mudana de escala
alterao da resoluo

Refazer os clculos quando


Nova localizao da cmara

Tcnicas Gerais
Objectivo
Eliminar nmero de polgonos a tratar pelo algoritmo de
clculo de invisveis
Menos dados de entrada mais rpido

Diminuir operaes de vericao de visibilidade


Operaes de grande custo

Exemplos de operaes
Determinar se um projector e um objecto intersectam
Determinar se dois objectos se intersectam
Determinar o resultado da interseco
Para cada interseco calcular as que esto mais prximas da
cmara

Tcnicas Gerais  Coerncia


Coerncia  Partes do mundo ou a sua projeco apresentam
semelhanas locais
Reaproveitamento de clculos
Objecto Dois objectos completamente afastados
No necessrio comparar componentes dos dois
objectos
Face Superfcies variam suavemente
Reaproveitar clculos de uma face para outra
rea Conjunto adjacente de pixeis pertence mesma face
Profundidade Pixeis adjacentes esto mesma profundidade

Tcnicas Gerais  Transformao Perspectiva


y

(1,1,0)
x

x
(a,a,a)

z
(1,1,1)

z
(1,1,1)

Numa projeco paralela para ver se um objecto oculta basta


comparar coordenada z
Numa projeco perspectiva so necessrias divises
Transformar o volume piramidal num paraleleppedo

Tcnicas Gerais  Back-to-Face Culling  1


Objecto representado por poliedro convexo
Faces do poliedro e seus vectores normais
Face virada para trs est oculta
Face virada para a frente deve ser desenhada
Produto interno entre vector normal da face e vector projector

Poliedros no convexos
Faces viradas para a frente podem estar parcialmente ou
totalmente ocultas

Considerar as faces viradas para a frente

Tcnicas Gerais  Back-to-Face Culling  2


tras

tras
B

E
F

frente

Considerar as faces viradas para a frente


Faces C , E , G e H passam fase seguinte

frente

Tcnicas Gerais  Volume Envolvente  1


Envolver cada objecto por um volume
Utilizar o volume no clculo de interseco
Volume depende do objecto
Envolver com paraleleppedo
Envolver com elipside
Orientao do objecto

Depende da projeco
Exemplo
A

Polgono B no intersecta nenhum outro


Teste entre A e C inconclusivo

Tcnicas Gerais  Volume Envolvente  2


Exemplo roda de bicicleta
y

x
x

Algoritmo Z-Buer  Descrio


Algoritmo espao imagem
Estruturas de Dados

Matriz representa a imagem


Contm a cor do pixel a apresentar
Inicializado cor do fundo

Matriz contm a coordenada z do pixel


Inicializado a

Pseudo-Cdigo

para cada face/polgono


para ponto projectado
calcular profundidade
se profundidade menor actual
actualizar matrizes

Algoritmo Z-Buer  Detalhes  1


Explora coerncia
profundidade
Pixeis de um polgono tm
profundidades semelhantes
Polgono descrito pela
equao

face exterior vsivel

P2 P1 P3 P1 = (A, B , C )
Coeciente D pode ser
obtido a partir de um
ponto do polgono

Ax + By + Cz + D = 0

P2
P3

Coecientes A, B e C
podem ser obtidos a
partir do produto externo
Considere 3 pontos do
polgono P1 , P2 e P3
orientados no sentido
directo

P1

P4

P5

Algoritmo Z-Buer  Detalhes  2


Profundidade de um ponto
(x1 , y1 ) da malha

z1 =

D Ax1 By1

Profundidade ponto
seguinte
(x2 , y2 ) = (x1 + 1, y1 )

z2 = z1

A
C

Profundidade ponto linha


de baixo
(x3 , y3 ) = (x1 , y1 + 1)

z3 = z1

B
C

Algoritmo Depth-Sort  Descrio Geral


Pertence classe de algoritmos que usam listas com prioridade
Prioridade a profundidade de um objecto
Ordenam os objectos pela sua profundidade

Combinam tcnicas de espao de imagem com espao de


objectos
Comparao de objectos e separao feita no espao de
objectos
Escrita de pixeis feita no espao de imagem

Pseudo-cdigo

ordenar polgonos do mais distante ao mais prximo


resolver ambiguidades
separando polgonos se necessrio
desenhar cada polgono
Assumindo que no h ambiguidades, algoritmo semelhante ao
trabalho de um pintor

Algoritmo Depth-Sort  Detalhes  1


Processo de resoluo de ambiguidades
Comparar polgono P no fundo com todos os outros Qi
1 Coordenadas x sobrepem-se?
2 Coordenadas y sobrepem-se?
3 P est totalmente do lado de trs de Qi ?
4 Qi est totalmente do lado frontal de P ?
5 As projeces de P e Qi sobrepem-se?
Testes 3 e 4 podem ser feitos recorrendo equao do plano

Ax + By + Cz + D = 0
Se for positivo o ponto est frente do polgono
x

Q
z

Q
z

Algoritmo Depth-Sort  Detalhes  2


Polgonos podem sobrepor-se
No possvel orden-los por profundidade
Separar o polgono usando o outro polgono como plano de
corte
y

y
P

P1

P2

Algoritmo Binary Space-Partitioning Trees


Descrio Geral  1

Fase inicial de pr-processamento


Assume-se que os objectos so estticos
Constri uma rvore binria
N representa um polgono
Um lho contm polgonos frente
Um lho contm polgonos atrs

Um polgono pode ser dividido em dois


A

B
C
D

Algoritmo Binary Space-Partitioning Trees


Descrio Geral  2

Algoritmo espao objecto


Pseudo-cdigo

desenha (rvore)
se utilizador est frente da raiz
desenha (filho atrs rvore)
desenhar raiz rvore
desenha (filho frente rvore)
seno
desenha (filho frente rvore)
desenhar raiz rvore
desenha (filho atrs rvore)

Algoritmo Binary Space-Partitioning Trees  Exemplo


Polgonos originais

rvore resultante

D
B
C

Partio

A1

A2

B
C
D

Outras parties so
possveis

Algoritmo Warnock  Descrio Geral  1


Algoritmo preciso de objecto
Dividem recursivamente o espao no plano de projeco
Polgonos so classicados conforme relao com a rea

envolve

intersecta

contido

disjunto

Aco a fazer em cada rea


1
2
3
4

Todos os polgonos so disjuntos  desenhar cor de fundo


Um nico polgono intersecta ou contido  desenhar cor de
fundo, desenhar polgono
Um nico polgono envolvente e nenhum intersecta ou est
contido  desenhar polgono
Um polgono envolvente oculta todos os outros  desenhar
polgono

Algoritmo Warnock  Descrio Geral  2


Diviso pra quando rea
No contm polgonos
S contm um polgono
Contm vrios polgonos mas um envolvente e oculta todos
os outros
Quando atingimos a resoluo do dispositivo

Quarto critrio de paragem transforma o algoritmo num que


opera no espao de imagem
Num dispositivo de 1024 1024 s so necessrias 10 divises
Podemos fazer mais divises
Cor do pixel a mdia das vrias divises

Algoritmo Warnock  Exemplo

Referncias
Captulo 15 de James Foley, Andries van Dam, Steven Feiner,
John Hughes, and Richard Phillips. Introduction to Computer
Graphics. Addison-Wesley, 1994.

Iluminao
87
88
89
90

91
92
93
94
95

Motivao
Luz Ambiente
Difuso ou Diuse Reection
Reexo ou Specular
Reection
Modelo de Iluminao de
Phong
Distncia Fonte de Luz
Efeito Atmosfera
Combinao Modelos
Shading  Introduo
Shading Constante

96
97
98

99

100

Interpolao Shading
Shading de Malha de
Polgonos
Gourad Shading
Descrio
Clculo Vector Normal
Preenchimento Polgono
Phong Shading
Descrio
Propriedades
Comentrios sobre Shading
Interpolado

Motivao
Tratar objectos
emitem luz
reectem/absorvem luz
transparentes

Representar elmente cor dos objectos


Depende
cor
posio
orientao
fontes de luz no mundo

Interaco dos raios de luz com os objectos

Modelo Simples  Luz Ambiente


Luz ambiente
Luz difusa
No direccional
Resultado de vrias reexes
Intensidade igual em qualquer superfcie e em qualquer
direco

Modelo luz ambiente

I = Ia ka

Ia intensidade da luz ambiente


ka coeciente de reexo de luz ambiente
propriedade do objecto
caracteriza superfcie do objecto
no tem representao fsica

Difuso ou Diuse Reection  1


Fonte de luz pontual

Emite luz em todas as direces

Cor do objecto depende

Distncia fonte de luz


Direco da superfcie relativamente fonte de luz

Difuso  Diuse Reection

Superfcie baa apresenta mesma intensidade quando vista de


qualquer ngulo
Exemplos: madeira, gesso

N
L

objecto

Vector N representa
direco da normal na
superfcie no ponto do
objecto
Vector L representa
direco do ponto do
objecto fonte de luz

Difuso ou Diuse Reection  2


Intensidade da luz que incide no objecto varia
proporcionalmente ao coseno do ngulo
Lei de Lambert  quantidade da luz vista independente da
posio do observador
Intensidade da luz observada proporcional a cos
N
N
dA

dA/
cos

Difuso ou Diuse Reection  3


I = Ip kd (N L)
Ip intensidade da fonte de luz pontual
kd coeciente de reexo de difuso  depende do material do

objecto
Vectores N e L normalizados
Vector N representa direco da normal na superfcie do ponto
do objecto
Vector L representa direco do ponto do objecto fonte de
luz

Reexo ou Specular Reection  1


Specular Reection ocorre em superfcies polidas
Luz reectida tem a cor da fonte de luz
No depende da cor do objecto

Luz reectida em quantidades diferentes


Num espelho luz s reectida na direco
Quando o ngulo zero

Reexo
mxima quando zero
decai rapidamente quando aumenta

N
L

objecto

R
V

Reexo ou Specular Reection  2

N
L

R
V

objecto

Vector N representa direco da normal na superfcie do ponto


do objecto
Vector L representa direco do ponto do objecto fonte de
luz
Vector R representa espelho de L relativamente a N
Vector V representa direco do ponto do objecto posio
do observador
o ngulo entre R e V

Reexo ou Specular Reection  3


Modelo

I = Ip ks cosn

Ip intensidade da fonte de luz pontual


ks coeciente de reexo especular  depende do material
ngulo entre a direco ao observador e o vector R
n expoente de specular-reection  depende do material

Vectores normalizados
cos = R V
cos2

cos
1

cos8

0
0o

90o

cos64
1

0
0o

90o

0
0o

90o

0o

90o

Modelo de Iluminao de Phong


Clculo do vector R
Espelhar vector L em relao a N
S = N cos L
R = 2S + L
S

N
R

L
N cos

Modelo de iluminao de Phong

I = Ip ks (R V)n

Distncia Fonte de Luz


Objectos a distncias diferentes produzem o mesmo brilho
Introduzir factor de atenuao fat
Energia (intensidade da luz) decresce com o quadro da
distncia
1
fat = 2
dL
dL distncia entre a fonte de luz e o objecto
Se a fonte est muito distante, o factor no varia muito
Se a fonte est muito prxima, o factor varia demasiado
Soluo alternativa
1
fat = min(
, 1)
c1 + c2 dL + c3 dL 2
c1 , c2 e c3 constantes associadas fonte de luz
Constante c1 evita que o denominador que pequeno quando a

fonte est prxima


min garante que o factor varia suavemente

Efeito Atmosfera
Quanto mais longe est o observador do objecto
mais atenuado aparece o objecto
Intensidade da luz tende para uma intensidade padro

I 0 = s0 I + (1 s0 )Ied
s0 factor de escala que depende da distncia do objecto ao
observador
Ied intensidade efeito distncia

Combinao Modelos
Intensidade da luz representada por (OeR , OeG , OeB )
Oe intensidade de emisso da luz de comprimento de onda
Modelo acromtico  intensidade representada por Oe
Oe propriedade do objecto
kd propriedade do objecto
ks propriedade do objecto
I = Ia ka Od + fat Ip (kd Od (N L) + ks Os (R V)n )

Mltiplas fontes de luz

I = Ia ka Od +

m
X
i =1

fat i Ipi (kd Od (N Li ) + ks Os (Ri V)n )

Shading  Introduo
Modelos anteriores requerem fora bruta
Para cada ponto de uma superfcie aplica-se o modelo de
iluminao
Calcular a normal em cada ponto
Calcular vector em direco fonte de luz
...

Exemplo de iluminao em Java


Shading de um polgono

Shading Constante
Shading de polgonos
Pr-condies
Fonte de luz no innito
N L constante ao longo do polgono
Observador no innito
N V constante ao longo do polgono
Polgono representa a superfcie a modelar
No aproxima superfcie curva

Determinar a parte visvel


Utilizar ponto qualquer para determinar L e V
No produz variaes de tonalidade

Interpolao Shading
Aplicao a um tringulo
Calcular a intensidade nos vrtices
Interpolar a intensidade nas arestas
Interpolar a intensidade no ponto pretendido

Pode ser generalizado a um polgono


Aplicvel se polgono no modelar superfcie curva
A
I1
B

I2
I3
C

Shading de Malha de Polgonos


Superfcie representada por vrios polgonos
Problema nas arestas

Efeito de Banda Mach

Receptores no olho humano inibem os vizinhos


Um receptor quanto mais estimulado mais inibe os vizinhos

Exemplo em Java
http://www.nbb.cornell.edu/neurobio/land/
OldStudentProjects/cs490-96to97/anson/
MachBandingApplet/

Gourad Shading  Descrio


Resolver o efeito de banda Mach
Interpola as intensidades
ao longo das arestas
ao longo da superfcie do polgono

Requer vector normal em todos os vrtices da malha poligonal


Dados

Intensidades I1 , I2 , I3
Interpola
I40 a partir de I1 e I2
I50 a partir de I1 e I3
I60 a partir de I40 e I50

I1
I4
I2

I5
I6
I3

Gourad Shading  Clculo Vector Normal


Vector normal nos vrtices pode ser calculado a partir
descrio analitica da superfcie

Malha poligonal s tem vector normal nos polgonos


Calcular vector no vrtice
Pn
i =1 Ni

N1

N2
Nv2

Nv1

N4

N5

N1

Gourad Shading  Preenchimento Polgono


Dados os vectores normais nos vrtices
Calcular intensidades nos vrtices
Interpolar intensidades nas arestas
Interpolar intensidade no ponto intermdio da linha varrimento
I v1
I1

I2
I3

I v2

I v3

I v4

Phong Shading  Descrio


Shading com interpolao do vector normal
Interpolao ocorre ao longo da linha varrimento
Estrutura de dados
Vector normal nos vrtices dos polgonos
Como no Gourad Shading

Vector normal N3 tem que ser normalizado


Aplicar o produto interno

Dados

Nv1

Normais Nv1 , Nv2 e Nv3

Interpola
N1 a partir de Nv1 e Nv2
N2 a partir de Nv1 e Nv3
N3 a partir de N1 e N2

N1

N2
N3

Nv2

Nv3

Phong Shading  Propriedades


Melhor que Gourad shading

Gourad shading

Intensidade no interior do polgono nunca maior que a


intensidade nos vrtices
O que acontece se o foco de luz incide no centro do polgono?

Phong shading

Computacionalmente mais intensivo


Para cada pixel da imagem necessrio calcular um vector
normal
Clculos incrementais

Comentrios sobre Shading Interpolado


Superfcie poligonal

Arestas e vrtices so visveis


Aumentar o nmero de polgonos aumenta tempo
processamento

Distoro provocada pela perspectiva

Interpolao feita sistema de coordenadas janela do utilizador


Perde-se noo da distncia
Dois vrtices podem estar a profundidades diferentes
(coordenada z)

Interpolao depende da orientao do polgono


Problemas em vrtices partilhados
Vectores normais nos vrtices no representativos da superfcie

Referncias
Captulo 16 de James Foley, Andries van Dam, Steven Feiner,
John Hughes, and Richard Phillips. Introduction to Computer
Graphics. Addison-Wesley, 1994.

Determinao Superfcies Visveis e Iluminao


101

102

103
104

105

Texturas
Exemplo Quadriltero
Mip Mapping
Bump Mapping
Exemplo Bump Mapping
Transparncia
Transparncia por Interpolao
Transparncia por Filtro
Implementao Mtodo No-Refractivo
Transparncia Refractiva
Aliasing e Antialiasing
Ray Casting
Introduo
Pseudo-Cdigo
Clculo Interseces
Comentrios
Ray Tracing

Texturas
Texturas podem ser objectos
1D  preencher linhas ou bandas
2D  preencher superfcies
3D  preencher volumes
Dados geolgicos: composio rochas
Medicina: tomograa axial computorizada

Textura 2D
Matriz de cores
Modelo de cor RGBA
Componente A alpha representa transparncia

Dados da textura afectam termos modelo de iluminao


kd coeciente difuso
ks coeciente reexo
Od intensidade de difuso componente modelo cor
Os intensidade de reexo componente modelo cor

Texturas  Exemplo Quadriltero

111
000
000
111
000
111
(0,0)
000 (1,0)
111
(0,1)

(1,1)

textura

poligono projectado

Mapear cada ponto da textura num ponto do quadriltero


Aplicao a polgonos gerais requer decomposio em
tringulos
Associar vrtice do polgono a um ponto na textura

Texturas  Mip Mapping


Problema
Aplicar textura em polgonos a distncias diferentes
Soluo
Guardar a textura em diferentes resolues
Mip  em latim Multum in parvo e signica muitas coisas em

pouco espao

Cada imagem um quarto da imagem anterior


Espao total necessrio 4/3 do original
1/4 + 1/16 + 1/64 + 1/256 + . . . = 1/3

R
B
B

G
R G
B

Texturas  Bump Mapping


Textura altera iluminao de um polgono
Mas o polgono mantm-se liso
Soluo
Perturbar vector normal associado ao pixel
Perturbao funo da intensidade do ponto na textura

http://viz.aset.psu.edu/gho/sem_notes/color_3d/html/surfaces.html

Texturas  Exemplo Bump Mapping

http://www.clubic.com/
actualite-487-moteur-et-editeur-3d-avec-environment-bump-mapping.html

Transparncia
Objectivo modelar objectos transparentes
Raios de luz podem ser desviados pelo objecto transparente
Objecto transparente pode difundir a luz

L
L

V
objecto 1

objecto 2

Transparncia por Interpolao


Mtodo no refractivo
Intensidade do ponto soma ponderada das intensidades

I = (1 k1 )I1 + k1 I2
k1 coeciente de transmisso do objecto

Mede a transparncia do objecto


Valor zero representa objecto opaco
Valor um representa objecto completamente transparente

I1 intensidade (difuso+reexo) calculada no objecto 1


I2 intensidade (difuso+reexo) calculada no objecto 2

L
L

V
objecto 1

objecto 2

Transparncia por Filtro


Mtodo no refractivo
Trato o objecto como um ltro
deixa passar algumas componentes da cor

I = I 1 + k1 O I2
k1 coeciente de transmisso do objecto
O cor de transparncia do componente

L
L

V
objecto 1

objecto 2

Implementao Mtodo No-Refractivo


Se existem vrios objecto na linha de viso
Processar os objectos de trs para a frente
No passo seguinte utilizar I calculado anteriormente como o
novo I2

Algoritmo z-buer pode ser adaptado para tratar objectos


transparentes
Se um objecto est mais frente
Utilizar uma das equaes na actualizao da cor do pixel

Outros algoritmos de eliminao de invisveis podem ser


adaptados

Transparncia Refractiva  1
Mais complexo de modelar
Linha de vista diferente da linha geomtrica
i
t

objecto 2

objecto 1

objecto 3

Pela linha de vista o objecto 2 visvel


Pela linha geomtrica o objecto 3 visvel

Transparncia Refractiva  2
V

N
i

T vector de refraco
i ngulo de incidncia
t ngulo de refraco

Relao entre ngulo de incidncia i e ngulo de refraco t


dado pela lei de Snell

t
sin i
=
sin t
i
t e i so os ndices de refraco do material
Cada componente da cor pode ter o seu ndice de refraco

Diferentes comprimentos de luz tm diferentes ndices de


refraco

Aliasing e Antialiasing
Como desenhar uma linha
diagonal de cor preta?
Que pixeis devem estar a
preto?
Aliasing Usar graus de
cinzento

Ray Casting  Introduo


Modelo realista de criao de imagens
Espao imagem

Ray Casting  Pseudo-Cdigo


seleccionar centro de projeco
seleccionar janela no plano projeco
para cada linha de varrimento na imagem
para cada pixel na linha de varrimento
calcular raio desde o centro de projeco
passando pelo pixel
para cada objecto no mundo
se objecto intersectado pelo raio
e objecto mais perto
guardar intensidade e objecto
desenhar pixel na intensidade guardada

Ray Casting  Clculo Interseces  1


Equao do raio

x = xC + t (xP xC )
y = yC + t (yP yC )

z = zC + t (zP zC )
(xC , yC , zC ) coordenadas centro de projeco
(xP , yP , zP ) coordenadas pixel

Mais fcil calcular interseco com esfera


Equao esfera centro (a, b , c )

(x a)2 + (y b )2 + (z c )2 = r 2
Fcil obter normal no ponto de interseco
Equao 2o grau em t

Ray Casting  Clculo Interseces  2


Computacionalmente mais pesado calcular interseco com
polgono
Equao plano est inserido polgono

Ax + By + Cz + D = 0
Projectar o polgono num dos planos principais
para determinar se a projeco da interseco est contida
y
P

x
P
z

Ray Casting  Comentrios


Computacionalmente pesado
Imagem com 1024 1024 pixeis e 100 objectos
75% tempo passado em clculos de interseces

Utilizar volumes envolventes


Esferas
Poliedros convexos
Organizados em hierarquias

Partio do espao

R
A
B

Ray Tracing
Iluminao Global Luz reectida indirectamente e transmitidas
pelas superfcies

Termo luz ambiente representa modelo iluminao global

Luz Ambiente no modelo de iluminao de Phong representa


iluminao global
Luz ambiente no existe na realidade

Ray Tracing estende o algoritmo de ray casting


Calcula a intensidade do ponto P1 em funo

da luz emitida pelo ponto P2


da luz que chega ao ponto P2 vindo de todos os pontos

Modelo recursivo: Rendering Equation

P3

Ray Tracing  Exemplo de Sombra


P1

observador

L1

P2
L2

fonte de luz

Pixel P1 iluminado com a fonte de luz


Pixel P2 iluminado s com luz ambiente
Est na sombra da fonte de luz

Ray Tracing  Exemplo de Reexo

Q1
observador

R1

P1
L1

L2

fonte de luz

Pixel P1 iluminado com luz reectida no ponto Q1

rvore de Raios  1
T2

T1

R3

R2

R1
L3
objecto 3

L2

objecto 1

L1

objecto 2

N vector normal no ponto da superfcie do objecto


L vector desde o ponto da superfcie do objecto at fonte de

luz
R vector que resulta da refraco do raio anterior na superfcie
do objecto
T vector que resultado da transparncia do objecto

rvore de Raios  2
T2

utilizador
T1

R3

R2

R1
L3
objecto 3

L2

objecto 1

L1

L1

objecto 2

T1

R1

L2
T2 R2

L3
R3

Tcnicas Avanadas de Modelao


Sistemas Lindenmayer
Gramtica
Smbolos representam aces pintura ou guardar posio pincel

http://en.wikipedia.org/wiki/File:Fractal_weeds.jpg

Planta Fractal
Produes

X F [[X ] + X ] + F [+FX ] X
F FF
Signicado smbolos
F desenhar uma linha na
direco actual

rodar -25o
+ rodar +25o
[ guardar posio actual
na pilha
] retirar posio no topo
da pilha

http://en.wikipedia.org/wiki/
File:Fractal-plant.svg

Você também pode gostar