Sistemas de...
Transcript of Sistemas de...
1
Alberto Raposo – PUC-Rio
INF 1366 – Computação Gráfica Interativa
Transformações
Alberto B. Raposo
http://www.tecgraf.puc-rio.br/~abraposo/INF1366
Alberto Raposo – PUC-Rio
Sistemas de Coordenadas
• Objetos em Computação Gráfica possuem descrições numéricas (modelos) que caracterizam suas formas e dimensões.
• Esses números se referem a um sistema de coordenadas, normalmente o sistema Cartesiano de coordenadas: x, y e z.
• Em alguns casos, precisamos de mais de um sistema de coordenadas:– Um sistema local para descrever partes individuais de uma
máquina, por exemplo, que pode ser montada especificando-se a relação de cada sistema local das várias peças.
John Dingliana, 2004
Alberto Raposo – PUC-Rio
Transformações• Em alguns casos, objetos exibem simetrias, de modo
que apenas parte deles precisa ser descrita, pois o resto pode ser construído por reflexão, rotação e/outranslação do pedaço original.
• Um projetista pode querer visualizar um objeto sob vários pontos de vista, rotacionando-o ou movendo uma câmera virtual.
• Em animação, um ou mais objetos podem precisar se mover em relação ao outro, de modo que seus sistemas de coordenadas locais devam ser transladados e rotacionados ao longo da animação.
John Dingliana, 2004
Alberto Raposo – PUC-Rio
etc...
Exemplo 1
• Partes do objeto definidas em sistemas de coordenadas locais:
• Objeto “montado” por meio de transformação das partes constituintes:
John Dingliana, 2004
2
Alberto Raposo – PUC-Rio
5 etapas de uma animação de um cubo girando
Exemplo 2
• A cada quadro da animação, o objeto é transformado (rotação, nesse caso).
• O objeto também poderia ser transformado pela mudança de tamanho (escalamento), sua forma (deformação), ou sua localização (translação).
• Outros efeitos de animação são obtidos sem alterar o objeto em si, mas a forma como ele é visualizado (transformação windowto viewport) a cada quadro (por exemplo, um zoom).
John Dingliana, 2004
Alberto Raposo – PUC-Rio
Transformações• Há 2 formas de se enxergar uma transformação
– Uma Transformação de Objeto altera as coordenadas de cada ponto de acordo com alguma regra, mantendo o sistema de coordenadas inalterado.
– Uma Transformação de Coordenadas produz um sistema de coordenadas diferente, e então representa todos os pontos originais nesse novo sistema.
• Cada maneira tem suas vantagem, e são intimamente relacionadas.
John Dingliana, 2004
Alberto Raposo – PUC-Rio
1,1
.4, 2
TRANSFORMAÇÃO DE OBJETO
(1,1)
(1,1)
TRANSFORMAÇÃO DE COORDENADAS
John Dingliana, 2004
Alberto Raposo – PUC-Rio
Classes de Transformações
• Euclidianas / Corpos Rígidos
• de Similaridade
• Lineares
• Afins
• Projetivas
3
Alberto Raposo – PUC-Rio
Transformações Euclidianas
• Preservam distâncias
• Preservam ângulos
Translação
Rotação
Corpos Rígidos / Euclidianas
Identidade
Identidade
Translação
Rotação
MIT EECS 6.837, Durand and Cutler Alberto Raposo – PUC-Rio
Transformações de Similaridade
• Preservam ângulos
TranslaçãoRotação
Euclidianas
Similaridades
EscalamentoIsotrópico
Identidade
MIT EECS 6.837, Durand and Cutler
EscalamentoIsotrópico
Alberto Raposo – PUC-Rio
Transformações Lineares
TranslaçãoRotação
EuclidianasLinear
Similaridades
EscalaentoIsotrópico
IdentidadeEscalamento
Shear
Reflexão
Escalamento Reflexão Shear
MIT EECS 6.837, Durand and Cutler
Alberto Raposo – PUC-Rio
Transformações Lineares
• L(p + q) = L(p) + L(q)
• L(ap) = a L(p)
MIT EECS 6.837, Durand and Cutler
4
Alberto Raposo – PUC-Rio
Transformações Afins
• Preservam linhasparalelas Afins
TranslaçãoRotação
EuclidianasLinear
Similaridades
EscalaentoIsotrópico
IdentidadeEscalamento
Shear
Reflexão
Alberto Raposo – PUC-Rio
TransformaçõesProjetivas
• preservam linhas Projetivas
Perspectiva
Afins
TranslaçãoRotação
EuclidianasLinear
Similaridades
EscalaentoIsotrópico
IdentidadeEscalamento
Shear
Reflexão
Alberto Raposo – PUC-Rio
Perpectiva
Perspectiva é um dos fatoresque dá “aparência 3D” às cenas
Alberto Raposo – PUC-Rio
Transformações 2D
EscalamentoRotação
Translação
EscalamentoTranslação
x
y
Coordenadas do mundo
Coordenadasde modelagem
D. Brogan, Univ. of Virginia
5
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadasde modelagem
Localizaçãoinicial em(0, 0) comeixos x e yalinhados
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadasde modelagem
Scale .3, .3Rotate -90
Translate 5, 3
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadasde modelagem
Scale .3, .3Rotate -90
Translate 5, 3
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D
x
y
Coordenadasde modelagem
Scale .3, .3Rotate -90
Translate 5, 3
D. Brogan, Univ. of Virginia
6
Alberto Raposo – PUC-Rio
VRML: Nó Transform
Alberto Raposo – PUC-Rio
Exemplo em VRML
The Annotated VRML Reference
Alberto Raposo – PUC-Rio
Exemplo em VRML
Alberto Raposo – PUC-Rio
X3D – Nó Transform
7
Alberto Raposo – PUC-Rio
Exemplo em X3D
Alberto Raposo – PUC-Rio
A ordem das transformações faz diferença!
Alberto Raposo – PUC-Rio
Escalamento• Escalar uma coordenada significa multiplicar cada
um de seus componentes por um valor escalar• Escalamento isotrópico significa que esse valor
escalar é o mesmo para todos os componentes
× 2
D. Brogan, Univ. of Virginia Alberto Raposo – PUC-Rio
• Escalamento não-isotrópico: valores escalaresdiferentes por componente:
• Como representar o escalamento na forma de matrizes?
Escalamento
X × 2,Y × 0.5
D. Brogan, Univ. of Virginia
8
Alberto Raposo – PUC-Rio
Escalamento
• Operação de escalamento:
• Na forma matricial:
=
by
ax
y
x
'
'
=
y
x
b
a
y
x
0
0
'
'
Matriz de escalamento
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Rotação 2D
cos ( ) cos cos sin sin θ φ θ φ θ φ+ = −( ) ( ) ( ) ( )
sin ( ) sin cos cos sin θ φ θ φ θ φ+ = +( ) ( ) ( ) ( )P
Q
R PX
PY
φ
θ
[1][2]
[3][4]
[1] )( )( )( )( φθφθ sinsincoscos RRxQ −=
Substituindo de [3] e [4]…
)( )( θθ sincos yPxPxQ −=
Similarmente, a partir de [2]…
)( )( θθ sincos xPyPyQ +=
)Rcos( Q X φθ +=
)Rsin( Q y φθ +=
)(cosR PX φ= )(sinR Py φ=
John Dingliana, 2004
Alberto Raposo – PUC-Rio
Rotação 2D
θ
(x, y)
(x’, y’)
x’ = x cos(θ) - y sin(θ)y’ = x sin(θ) + y cos(θ)
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Rotação 2D• Na forma matricial:
• Embora sin(θ) e cos(θ) sejam funções não-lineares de θ,– x’ é combinação linear de x e y
– y’ é combinação linear de x e y
( ) ( )
( ) ( )
−=
y
x
y
x
θθ
θθ
cossin
sincos
'
'
D. Brogan, Univ. of Virginia
9
Alberto Raposo – PUC-Rio
Translação 2D
+
+≡
+
=
y
x
y
x
ty
tx
t
t
yx
yx
''
y
xx
y
=
y
x
t
tt
M. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Transformações 2D Básicas
• Translação:– x’ = x + tx– y’ = y + ty
• Escalamento:– x’ = x * sx– y’ = y * sy
• Rotação:– x’ = x*cosΘ - y*sinΘ
– y’ = x*sinΘ + y*cosΘPodem ser combinadas
com álgebra simples
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D Básicas
• Translação:– x’ = x + tx– y’ = y + ty
• Escalamento:– x’ = x * sx– y’ = y * sy
• Rotação:– x’ = x*cosΘ - y*sinΘ
– y’ = x*sinΘ + y*cosΘ
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
• Translação:– x’ = x + tx– y’ = y + ty
• Escalamento:– x’ = x * sx– y’ = y * sy
• Rotação:– x’ = x*cosΘ - y*sinΘ
– y’ = x*sinΘ + y*cosΘ x’ = x*sxy’ = y*sy
(x,y)
(x’,y’)
Transformações 2D Básicas
D. Brogan, Univ. of Virginia
10
Alberto Raposo – PUC-Rio
x’ = (x*sx) *cosΘ - (y*sy) * sinΘ
y’ = (x*sx) * sinΘ + (y*sy) * cosΘ
(x’,y’)
• Translação:– x’ = x + tx– y’ = y + ty
• Escalamento:– x’ = x * sx– y’ = y * sy
• Rotação:– x’ = x*cosΘ - y*sinΘ
– y’ = x*sinΘ + y*cosΘ
D. Brogan, Univ. of Virginia
Transformações 2D Básicas
Alberto Raposo – PUC-Rio
• Translação:– x’ = x + tx– y’ = y + ty
• Escalamento:– x’ = x * sx– y’ = y * sy
• Rotação:– x’ = x*cosΘ - y*sinΘ
– y’ = x*sinΘ + y*cosΘ x’ = ((x*sx)*cosΘ - (y*sy)*sinΘ) + txy’ = ((x*sx)*sinΘ + (y*sy)*cosΘ) + ty
(x’,y’)
D. Brogan, Univ. of Virginia
Transformações 2D Básicas
Alberto Raposo – PUC-Rio
Representação Matricial
• Representar transformação 2D por umamatriz
• Multiplicar matriz por vetor-coluna⇔ aplicar transformação a um ponto
=
yx
dcba
yx''
dcba
dycxy
byaxx
+=
+=
'
'
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Representação Matricial
• Transformações são combinadas pormultiplicação de matrizes
=
yx
lk
ji
hg
fedcba
yx
''
Matrizes são uma forma conveniente e eficientede representar uma seqüência de transformações
D. Brogan, Univ. of Virginia
11
Alberto Raposo – PUC-Rio
Produto de Matrizes
∑=
=q
k
kjikij bac1
==
qmqq
m
m
nqnn
q
q
bbb
bbb
bbb
aaa
aaa
aaa
L
MOMM
L
L
L
MOMM
L
L
21
22221
11211
21
22221
11211
ABC
=
100
010
001
OM
L
Ineutro:M. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Matrizes 2x2
• Que transformações planares podem ser representadas com uma matriz 2x2?
Identidade 2D?
yyxx
==''
=
yx
yx
1001
''
Escalemento 2D em torno de (0,0)?
ysy
xsx
y
x
*'
*'
=
=
=
y
x
s
s
y
x
y
x
0
0
'
'
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Matrizes 2x2
• Que transformações planares podem ser representadas com uma matriz 2x2?
D. Brogan, Univ. of Virginia
Rotação 2D em torno de (0,0)?
yxyyxx
*cos*sin'*sin*cos'
Θ+Θ=Θ−Θ=
ΘΘ
Θ−Θ=
y
x
y
x
cossin
sincos
'
'
Alberto Raposo – PUC-Rio
Matrizes 2x2
• Que transformações planares podem ser representadas com uma matriz 2x2?
D. Brogan, Univ. of Virginia
Espelhamento 2D em torno de Y?
yyxx
=−=
''
−=
yx
yx
1001
''
Espelhamento 2D em torno de (0,0)?
yyxx
−=−=
''
−−
=
yx
yx
1001
''
12
Alberto Raposo – PUC-Rio
Matrizes 2x2
• Que transformações planares podem ser representadas com uma matriz 2x2?
D. Brogan, Univ. of Virginia
Translação 2D?
y
x
tyy
txx
+=
+=
'
'NÃO!
Alberto Raposo – PUC-Rio
Coordenadas Homogêneas
• Como representar uma translação como
matriz 3x3?
y
x
tyy
txx
+=
+=
'
'
Alberto Raposo – PUC-Rio
Coordenadas Homogêneas
•Coordenadas homogêneas
– representamcoordenadas em 2 dimensões com vetor 3
→
1
homogêneas coord.yx
yx
• Coordenadas Homogêneas parecem pouco
intuitivas, mas elas simplificam muito as
operações gráficasD. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Coordenadas Homogêneas
• Como representar uma translação como
matriz 3x3?
y
x
tyy
txx
+=
+=
'
'
Resp: Usando a terceira
coluna da matriz
=
1001001
y
x
t
t
Translação
D. Brogan, Univ. of Virginia
13
Alberto Raposo – PUC-Rio
Translação
•Exemplo
+
+
=
=
111001001
1''
y
x
y
x
ty
tx
yx
t
t
yx
tx = 2ty = 1
•Coordenadas Homogêneas
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Coordenadas Homogêneas
• Coloca uma 3a coordenada para cada ponto 3D– (x, y, w) representa um ponto em (x/w, y/w)
– (x, y, 0) representa um ponto no infinito
– (0, 0, 0) não é permitido
Sistema conveniente pararepresentar muitastransformações úteis emCG
1 2
1
2(2,1,1) or (4,2,2) or (6,3,3)
x
y
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 2D Básicas
• Representação em matrizes 3x3
ΘΘ
Θ−Θ
=
1100
0cossin
0sincos
1
'
'
y
x
y
x
=
1100
10
01
1
'
'
y
x
t
t
y
x
y
x
=
1100
01
01
1
'
'
y
x
sh
sh
y
x
y
x
Translação
RotaçãoCisalhamento (Shear)
=
1100
00
00
1
'
'
y
x
s
s
y
x
y
x
Escalamento
Alberto Raposo – PUC-Rio
Cisalhamento (Shear)
yxshy
yshxx
y
x
+=
+=
*'
*'
x
y
x
y
γ
=
+
=
11000100tan1
1
tan
1
''
yx
y
yxyx γγ
M. Gattass, PUC-Rio
14
Alberto Raposo – PUC-Rio
Concatenação de Transformações
x
y
x
y
x
y
x
y
x
y
x
yT1
R1
E
R2
T2
P’= T2 R2 E R1 T1 PP’= T2 R2 E R1 T1 PM. Gattass, PUC-Rio
Alberto Raposo – PUC-Rio
Composição de Matrizes
• Transformações podem ser combinadas pelamultiplicação de matrizes
ΘΘ
Θ−Θ
=
w
y
x
sy
sx
ty
tx
w
y
x
100
00
00
100
0cossin
0sincos
100
10
01
'
'
'
p’ = T(tx,ty) R(Θ) S(sx,sy) p
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Composição de Matrizes
• Atenção: ordem das transformações fazdiferença– Multiplicação de matrizes não é comutativa
p’ = T * R * S * p
“Global” “Local”
Alberto Raposo – PUC-Rio
Ordem das Transformações
x
y
=
y
xp
R x
y
=
2
22
y
xp
T
x
y
=
1
11
y
xp
R x
y
=
y
x1p
x
y
=
2
22
y
xp
T
(a)
(b)M. Gattass, PUC-Rio
15
Alberto Raposo – PUC-Rio
Ordem das Transformações
• Ex: rotacionar segmento em 45 graus emtorno da extremidade a
a a
Resultado esperado
D. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Ordem das Transformações
• Erro: aplicar a rotação de 45o, R(45), afeta as duasextremidades– Pode-se tentar fazer a rotação e depois retornar o ponto
a à sua posição original, mas quanto ele precisaria ser transladado?
Errado!R(45)
aa
CorretoT(-3) R(45) T(3)
a
D. Brogan, Univ. of Virginia
Como trazer o ponto a devolta à posição original??
?
Alberto Raposo – PUC-Rio
Ordem das Transformações
• Correto: isolar ponto a dos efeitosda rotação
1. Transladar a linha para colocar a na origem: T (-3)
2. Rotacionar linha em 45o: R(45)
3. Transladar a de volta: T(3)
a
a
a
a
D. Brogan, Univ. of VirginiaAlberto Raposo – PUC-Rio
Composição de Matrizes
=
−
−
1''
1
100010301
1000)45cos()45sin(0)45sin()45cos(
100010301
y
x
y
x
a
a
a
a
T(3) R(45) T(-3)
A multiplicação começa da última para a primeira transformação
16
Alberto Raposo – PUC-Rio
Composição de Matrizes
•Depois de ordenar as matrizes corretamente:– Multiplicá-las
– Guardar resultado em uma só matriz
– Usar essa matriz para realizar a transformação composta em cada um dos pontos que definem o objeto transformado (vértices, por exemplo)
� Todos os vértices podem ser transformadoscom uma simples multiplicação de vetor pormatriz.
Alberto Raposo – PUC-Rio
Exercício 2D
• Considere o triângulo com os seguintes vértices em coordenadashomogêneas– Rotacione o triângulo
de 90o (sentido anti-horário) em relação aoponto P = (6,5)
y
x
C
BA
P
Alberto Raposo – PUC-Rio
Etapas da Solução
1. Definir matriz para transladar o triângulo de modo que o centro de rotação se mova para a origem do sistema de coordenadas
2. Definir matriz para rotacionar o triângulo3. Definir matriz para transladar o triângulo
de volta4. Gerar matriz combinada da transformação5. Transformar os vértices do triângulo
Alberto Raposo – PUC-Rio
Etapas da Solução
1. Definir matriz para transladar o triângulo de modo que o centro de rotação se mova para a origem do sistema de coordenadas
– Centro de rotação: P = (6,5)
– Translação de -6 unidades em x e -5 unidades em y
17
Alberto Raposo – PUC-Rio
Etapas da Solução
2. Definir matriz para rotacionar o triângulo• O ângulo de rotação é medido no sentido anti-
horário: R(+90o)• cos(90o) = 0 e sin(90o) = 1
Alberto Raposo – PUC-Rio
Etapas da Solução
3. Definir matriz para transladar o triângulo de volta
• Translação de 6 unidades em x e 5 unidades em y
Alberto Raposo – PUC-Rio
Etapas da Solução
4. Gerar matriz combinada da transformação
=
Alberto Raposo – PUC-Rio
Etapas da Solução
5. Transformar os vértices do triângulo
y
x
C
BA
P
B’
= A’
C’
18
Alberto Raposo – PUC-Rio
Transformações em 3D
• Mesma idéia que em 2D:– Coordenadas homogêneas: (x,y,z,w)
– Matrizes de trasnformação 4x4
=
wz
yx
ponm
lkji
hgfedcba
wz
yx
''''
Alberto Raposo – PUC-Rio
Transformações 3D Básicas
=
wz
yx
wz
yx
1000010000100001
'''
=
w
z
y
x
t
t
t
w
z
y
x
z
y
x
1000
100
010
001
'
'
'
=
w
z
y
x
s
s
s
w
z
y
x
z
y
x
1000
000
000
000
'
'
'
IdentidadeEscalamento
TranslaçãoD. Brogan, Univ. of Virginia
Alberto Raposo – PUC-Rio
Transformações 3D Básicas
−
=
wz
yx
wz
yx
1000010000100001
'''
Espelhamento em torno doplano YZ
−
=
wz
yx
wz
yx
1000010000100001
'''
Espelhamento em torno doplano XZ
−=
wz
yx
wz
yx
1000010000100001
'''
Espelhamento em torno doplano XY
Alberto Raposo – PUC-Rio
Transformações 3D Básicas
ΘΘΘ−Θ
=
wz
yx
wz
yx
1000010000cossin00sincos
'''
Rotação em torno de Z:
ΘΘ−
ΘΘ
=
w
z
y
x
w
z
y
x
1000
0cos0sin
0010
0sin0cos
'
'
'
ΘΘΘ−Θ
=
wz
yx
wz
yx
10000cossin00sincos00001
'''
Rotação em torno de Y:
Rotação em torno de X:
19
Alberto Raposo – PUC-Rio
Rotações Reversas
• Como desfazer uma rotação R(θ)?– Aplicar o inverso da rotação: R(-θ)
•Construindo R(-θ) :– cos(-θ) = cos(θ)
– sin (-θ) = - sin (θ)
• Assim: R(-θ) = RT(θ)
ΘΘ
Θ−Θ
=
ΘΘ−
ΘΘ
10000cos0sin00100sin0cos
10000cos0sin00100sin0cos
T
Alberto Raposo – PUC-Rio
Exercício 3D
• Encontre as respectivas matrizes de transformação para os seguintes casos
a) Translação que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)
b) Escalamento que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)
c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)
• Qual o ângulo dessa rotação?
Alberto Raposo – PUC-Rio
Solução
a) Translação que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)
⇒
Matriz de translação ⇒
Alberto Raposo – PUC-Rio
Solução
b) Escalamento que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)
⇒
Matriz de escalamento ⇒
20
Alberto Raposo – PUC-Rio
Solução
c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)
⇒
Para rotação em torno de z:
(2) – (1): ⇒
Alberto Raposo – PUC-Rio
Solução
c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)
Matriz de rotação ⇒
Substituindo em (1) ou (2):
Alberto Raposo – PUC-Rio
Solução
c) Rotação em torno do eixo z que leva o ponto p1 = (a1, b1, c1) para o ponto p2 = (a2, b2, c2)
• Qual o ângulo dessa rotação?
⇒ ⇒
Alberto Raposo – PUC-Rio
Ângulos de Euler
Fundamentos da Comp. GráficaJonas Gomes, Luiz Velho
21
Alberto Raposo – PUC-Rio
Ângulos de Euler
−+
+−
−
1000
0
0
0
yxzxzyxzxzyx
yxzxzyxzxzyx
yzyzy
cccssscsscsc
csccssssccss
ssccc
θθθθxx
y
z
θθθθy
x
y
z
θθθθz
x
y
z
M. Gattass, PUC-Rio
Notação: cx = cos(θx); sx = sin(θx) e assim por diante
Alberto Raposo – PUC-Rio
o
x 90=θo
z 90−=θ
o
x 90=θ o
z 90−=θ
Alberto Raposo – PUC-Rio
Demo: Ângulos de Euler
http://prt.fernuni-hagen.de/lehre/KURSE/PRT001/course_main/node10.html
Alberto Raposo – PUC-Rio
Bibliografia Adicional
• Peter Shirley, Fundamentals of Computer Graphics, A K Peters, Ltd., Natick, MA, USA, 2002.
• Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., Phlips, L. R., Introduction to Computer Graphics, Addison-Wesley, 1995.
• Foley, J. D., Van Dam, A., Feiner, S. K., e Huhes, J. F., ComputerGraphics: Principles and Practices, (Systems Programming), 2nd edition in C, Addison-Wesley, 1995.
• Brutzman, D. e Daly, L., Extensible 3D Graphics for Web Authors, Morgan Kaufmann, 2007.
• The Annotated VRML 97 Reference: http://accad.osu.edu/~pgerstma/class/vnv/resources/info/AnnotatedVrmlRef/Book.html