Escolar Documentos
Profissional Documentos
Cultura Documentos
Conceitos Fundamentais
Revisão Textual:
Prof. Me. Luciano Vieira Francisco
Conceitos Fundamentais
• Introdução;
• Áreas da Computação Gráfica;
• Imagem Digital;
• Pixel;
• Espaços de Cores;
• Dimensões da Imagem Digital;
• Sistemas de Imagens Digitais;
• Pipeline de Renderização;
• Primitivas.
OBJETIVO DE APRENDIZADO
• Estabelecer os princípios de computação gráfica, definindo os principais conceitos de pro-
gramação gráfica, bem como os conceitos associados ao traçado de formas geométricas por
meio de operações gráficas.
UNIDADE Conceitos Fundamentais
Introdução
A expressão Computação Gráfica ou a sua abreviação CG tem se tornado cada vez
mais popular. Mas você sabe qual é o seu significado na computação? Temos visto a in-
dústria do entretenimento utilizar esta nomenclatura há alguns anos e ela tem se tornado
comum para a maioria das pessoas.
Neste caso, quando mencionamos CG nos referimos ao filme produzido por compu-
tação, seja ele completo ou apenas alguns efeitos especiais. É raro hoje em dia encon-
trarmos filmes que não façam uso da computação.
Mas aqui tratamos somente dos efeitos especiais como poderes de super-heróis ou a
criação de mundos fantasiosos? Não, a computação gráfica está relacionada até mesmo
com o ajuste de cor da imagem do filme, ou da remoção de ruídos que podem ser gera-
dos por recursos analógicos, como uma determinada câmera ou um conjunto específico
de iluminação.
Veja, na Figura 1, que estas áreas possuem regiões de técnicas e estudos comparti-
lhados. É comum que 2 ou mais áreas trabalhem os mesmos conceitos básicos e existe
uma porção comum entre elas – exatamente o que trataremos nesta oportunidade, os
fundamentos da CG.
8
Processamento de imagens
Imagem Digital
De acordo com Gonzales e Woods (2010), uma imagem pode ser definida como uma
função bidimensional f ( x, y ) , em que x e y são as coordenadas espaciais (plano), e a
amplitude de f em qualquer par de coordenadas ( x, y ) é chamada de intensidade ou
nível de cinza da imagem nesse ponto.
Veja que interessante: estamos criando um mapeamento de algo que podemos en-
xergar, dando a cada ponto deste mapa um conjunto de coordenadas ( x, y ) que se re-
lacionam a uma intensidade, nível de cinza, ou ainda e mais especificamente a uma cor.
Então, se temos um conjunto de dados de entrada ( x, y ) que gera uma saída especí-
fica f , contamos com uma relação matemática.
Note que assim é possível interpretar regiões da imagem para entender o que há
naquela área do plano cartesiano, ou mesmo transformar um conteúdo em outro, mani-
pulando a função que define a imagem.
9
9
UNIDADE Conceitos Fundamentais
Perceba que indiretamente já entramos em uma das grandes áreas da CG: a análise
de imagens. Assim, podemos dizer que trabalhamos com uma imagem digital, pois é
possível determinar o valor de um ponto por meio de números finitos.
Ainda na Figura 2, o valor exato do verde foi expresso em duas notações diferentes:
a primeira é a notação hexadecimal (#60873D) e a segunda indica o mesmo valor no
formato Red, Green, Blue (RGB) (96, 135, 61).
Bem, definiremos outros dois conceitos que fazem parte da representação digital de
uma imagem e são muito importantes para nós: pixel e modelos de cores.
Pixel
Como vimos, uma imagem é composta por um número finito de elementos que pos-
suem uma coordenada e um valor de intensidade, sendo chamados de elementos pictó-
ricos, elementos de imagem, pels ou o mais comum dos nomes: pixel (GONZALES;
WOODS, 2010).
Ou seja, é a menor unidade dentro de uma imagem. O termo pixel é utilizado mais
comumente para determinar esta unidade em uma imagem digital. Logo, toda imagem
digital pode ser definida, então, pelo conjunto de seus pixels.
Veja, na Figura 3, por exemplo, a representação de um personagem de um jogo sim-
ples, desenhado com poucos pixels – note que em (a) temos a imagem em seu tamanho
original e em (b) uma ampliação para que possam ser percebidos os valores de intensi-
dade de cada pixel:
10
Figura 3 – Pixel art: (a) tamanho original; (b) imagem ampliada
Fonte: Acervo do conteudista
Espaços de Cores
Os modelos de cores ou espaços de cores permitem a especificação de cores em um
formato padronizado para atender a diferentes dispositivos gráficos ou a aplicações que
requerem a manipulação de cores (PEDRINI; SCHWARTZ, 2008).
Hex: #18A5F4
RGB: 24, 165, 244
HSL: 202, 91, 53
HSB: 202, 90, 96
Figura 4 – Diferentes representações de uma cor
Veja que apesar de termos o mesmo valor de pixel, a forma como é representado
depende do padrão adotado. Existem alguns modelos de cores que são mais utilizados
em trabalhos de computação gráfica.
Modelo RGB
RGB é a sigla para Red, Green, Blue – ou vermelho, verde e azul. Estes três valores
são as cores primárias, de modo que a combinação delas reflete uma cor específica, tal
como mostra a Figura 5:
11
11
UNIDADE Conceitos Fundamentais
Veja que se trata de um modelo aditivo, ou seja, o somatório das cores primárias
produz a cor branca (localizada no centro da Figura 5).
Modelo CMY
De forma semelhante, o modelo CMY representa as cores primárias como sendo
ciano, magenta e amarelo – Cyan, Magenta, Yellow. Veja que as cores primárias deste
modelo são as secundárias do modelo RGB. Trata-se de um padrão subtrativo, ou seja,
o somatório das cores primárias forma o preto.
Este modelo normalmente é utilizado para materiais impressos, uma vez que é possí-
vel criar o pigmento preto com a soma dos outros primários.
Existem muitos outros modelos de cores que podem ser utilizados e você pode conhecer
mais. Leia a matéria “Gerenciamento de cores #4: O que são modelos e espaços de cores?”.
Disponível em: https://bit.ly/3tDQbd0
12
Representação Hexadecimal
Além dos modelos, podemos definir as representações destes valores. É comum encon-
trarmos uma representação de cor no formato hexadecimal. Trata-se de uma forma de
apresentar o modelo RGB, em que se utilizam 6 letras ou números para representar os
três canais principais.
A cor #ff0000 pode ser quebrada em quatro partes: o indicador da base (#) e 3 canais
de cores (de 2 a 2 algarismos); logo, temos: # ff 00 00
Veja, então, que é possível analisar um valor na notação hexadecimal e ter uma boa
noção da cor que ela se refere. No caso anterior, temos o valor máximo para vermelho
e o mínimo para os demais, o que nos mostra um vermelho puro.
Logo, se temos #ffffff, trata-se do valor máximo para os três canais. Como vimos, o
modelo RGB é aditivo, portanto, temos o branco. De forma análoga temos que #000000
equivale ao preto.
Ainda que não seja possível perceber a cor exata com variações mais complexas,
pode-se ter uma ideia do intervalo de cor que se refere como, por exemplo, o valor
apresentado na Figura 7:
Hex: #14FF00
RGB: 20, 255, 0
Pelos valores no canal vermelho temos 1416, que equivale a 2010. Considerando o
intervalo entre 0 e 255, 20 é pouco, não é mesmo? Então, temos pouco pigmento ver-
melho. De forma análoga, temos o valor máximo no verde (FF16 ou 25510) e o mínimo
no azul (0016 ou 010).
É de se esperar, então, que seja um tom de verde quase puro, com um leve toque de
vermelho – o que neste caso é quase imperceptível. Com o uso contínuo desta notação
você será capaz de identificar as cores com mais facilidade. É uma questão de treino.
13
13
UNIDADE Conceitos Fundamentais
A dimensão está relacionada aos planos cartesianos usados para localizar um valor
no espaço. Uma imagem unidimensional nada mais é do que um único eixo e contém
valores ordenadamente localizados, variando de acordo com a posição neste eixo – ima-
gine uma única fileira de pixels na tela.
Mas quando variamos estes elementos tanto na largura quanto na altura (eixos X e Y),
passamos a trabalhar com uma imagem bidimensional. Temos, então, uma fotografia,
por exemplo.
Processamento de Imagens
Este é o ramo da Computação Gráfica (CG) que trabalha com a manipulação da ima-
gem digital e é comumente conhecido como PDI, ou Processamento Digital de Imagens.
Trabalhos nesta área envolvem a transformação da imagem em algo novo por meio de
rotinas de código.
Veja que temos uma imagem base como entrada da nossa função e uma saída espe-
rada. Queremos, então, definir quais operações devem ser criadas para que o resultado
seja alcançado – a Figura 8 ilustra este processo de forma bem simples: dadas estas
plantas como imagem de entrada, quais operações devemos aplicar sobre cada pixel
para obter a seguinte imagem de saída?
14
Figura 8 – Processamento digital de imagens
Fonte: Acervo do conteudista
Este é um processo bem simples, por sinal. No modelo RGB, um tom de cinza existe
quando os valores dos três canais (R, G e B) são iguais. Assim, para converter uma
imagem em cinza, bastará alterarmos a intensidade de cada pixel para a média dos três
valores. A nossa função, então, seria algo do tipo:
PR + PG + PB
f ( x, y ) =
3
Em que:
• PR: componente vermelho do pixel no ponto P(x,y);
• PG: componente verde do pixel no ponto P(x,y);
• PB: componente azul do pixel no ponto P(x,y).
Se criarmos um loop que percorre todos os pixels da imagem, aplicando esta função
e colocando o novo valor na mesma coordenada de uma imagem de saída, teremos a
imagem final em escala de cinza.
A finalidade do PDI depende do seu contexto: podemos usar funções que melhoram
uma fotografia, tais como os filtros de uma rede social como o Instagram, por exemplo;
15
15
UNIDADE Conceitos Fundamentais
ou ainda podemos utilizar deste recurso para melhorar uma imagem de tomografia para
que seja mais bem interpretada.
As aplicações são inúmeras, sendo que a única condição é que trate uma imagem de
entrada gerando uma imagem de saída.
Análise de Imagens
Esta segunda área está ligada à interpretação da imagem. Trata-se da busca por in-
formações, por meio de algoritmos computacionais, de acordo com as características
da imagem.
Nesta área, a entrada do algoritmo é uma imagem, mas a saída é tida em outro
formato. No exemplo da nossa imagem base, um algoritmo de análise poderia retornar
um texto contendo como descrição da imagem: Três vasos brancos, em cima de uma
mesa de madeira, contendo plantas suculentas artificiais.
A visão computacional é responsável por capturar a imagem do mundo (no seu de-
terminado contexto), extrair informação e tomar alguma decisão sobre ela. Imagine um
robô que deve abrir uma porta sempre que uma pessoa se aproximar: uma câmera seria
como os seus olhos, capturando a imagem do mundo (ambiente ao redor da porta);
analisaria a imagem procurando por padrões que indiquem uma pessoa; caso encontre,
dispararia um comando para um sistema de hardware que abre a porta.
Veja como a Boston Dynamics tem revolucionado o mundo da robótica com visão computa-
cional. Disponível em: https://youtu.be/f6zuyK6fOsI
16
Síntese de Imagens
A síntese de imagens é o oposto da análise. Ela transforma dados em imagens, que
podem ser vetoriais ou matriciais, tais como as imagens médicas de ressonância magné-
tica, ultrassom e tomografias, por exemplo.
Imagine algumas planilhas no Office Excel com dados numéricos com as notas de
todos os alunos desta Disciplina a fim de se construir um gráfico mostrando o desem-
penho da turma. Pode-se elaborar um algoritmo que analise os dados, sintetizando-os
em forma de gráfico com eixos horizontal e vertical e pontos representando cada nota.
Outra aplicação seria usar técnicas de inteligência artificial que inserem objetos reais
e modelos de textura nas cenas e nos objetos tridimensionais gerados.
Pipeline de Renderização
Renderização é o processo de criar a imagem que deve ser apresentada ao usuário em
um dispositivo como um monitor, por exemplo. É composto de outros processos bem defi-
nidos que se relacionam a alguma das áreas da computação gráfica que aqui comentamos.
É importante notar que estamos trabalhando com processos via software que devem
ser convertidos em procedimentos de hardware, tal como o acender de um minúsculo
Light Emitting Diode (LED) em uma posição determinada de um monitor, por exemplo.
17
17
UNIDADE Conceitos Fundamentais
Veja que a aplicação apresenta a posição de cada vértice de uma figura geométrica,
como um triângulo, por exemplo. Entretanto, as coordenadas cartesianas destes vértices
precisam ser conectadas e, de alguma forma, indicar quais pixels devem ser preenchidos.
O vertex shader conectará estes vértices por meio da equação das retas entre cada
um deles. O programa geométrico fará as alterações necessárias para o contexto do
desenho – aqui, por exemplo, poderíamos espelhar o triângulo.
A rasterização e o recorte são responsáveis por sobrepor esta figura matemática so-
bre uma matriz de pixels e identificar quais fazem parte da imagem.
Primitivas
Primitivas são os elementos gráficos mais simples que podem ser utilizados para o
desenho em uma aplicação. São diretamente relacionadas a modelos matemáticos bási-
cos e com elas é possível criar qualquer outra forma de desenho.
Primitivas 2D
Dividiremos as primitivas com base na dimensão da imagem; de modo que começando
pelas imagens bidimensionais, temos as seguintes primitivas, mostradas na Figura 10:
• Ponto: é a primitiva mais básica e representa um espaço no plano cartesiano, com
coordenadas x e y e pode ter apenas um valor associado a ele, representando a
sua cor;
• Linha: é um segmento de reta, em termos matemáticos, e é formada por meio de
dois pontos. Pode ter alguns parâmetros alterados, como a espessura, cor, o estilo
e comprimento (a distância entre os pontos);
• Polilinha: é um elemento composto por vários segmentos de linhas abertas;
• Polígono: é um elemento fechado composto por linhas;
18
• Elipse: é um elemento circular composto de centro, raio menor e raio maior, po-
dendo ser configurado como um círculo perfeito (raios iguais) ou não;
• Arco: é um segmento de elipse aberta.
Primitivas 3D
As primitivas 3D são representadas em espaços com três eixos e representam os meno-
res elementos que podem ser criados. Vale ressaltar que todos os editores de modelos 3D tra-
balham com estas primitivas e acrescentam algumas outras, de acordo com o seu contexto:
• Cubo: é o elemento composto por 6 faces quadradas;
• Esfera: é o elemento com raios circulares repetidos em todos os ângulos a partir
do seu ponto central;
• Cilindro: é composto por uma série de círculos empilhados, ou um sólido de revo-
lução ou mesmo extrusão de um círculo em um eixo perpendicular;
• Cone: é semelhante ao cilindro, mas o raio de uma das extremidades é igual a zero,
formando uma ponta.
19
19
UNIDADE Conceitos Fundamentais
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Vídeos
Computação gráfica
https://youtu.be/-4_OU95nKuU
Leitura
Introdução ao OpenGL
https://bit.ly/2Q7yYe8
O que é CGI e computação gráfica
https://bit.ly/33wWDId
Introdução à computação gráfica
https://bit.ly/3tGfwTz
20
Referências
GONZALEZ, R. C.; WOODS, R. C. Processamento digital de imagens. São Paulo:
Pearson Prentice Hall, 2010.
VETTER, C. et al. Non-rigid multi-modal registration on the GPU. Proc Spie, 2007.
21
21
Computação Gráfica
Transformações Geométricas
Revisão Textual:
Prof.ª Dr.ª Selma Aparecida Cesarin
Transformações Geométricas
• Introdução;
• Transformações Geométricas;
• Coordenadas Homogêneas.
OBJETIVOS DE APRENDIZADO
• Apresentar o pipeline de renderização gráfica e seus principais componentes;
• Definir os conceitos relacionados a primitivas básicas bi e tridimensionais, bem como suas
transformações geométricas no plano e no espaço.
UNIDADE Transformações Geométricas
Introdução
Como sabemos, a Computação Gráfica é responsável pela interpretação, pelo trata-
mento e pela apresentação de imagens computacionais.
Nesta Unidade, vamos falar sobre as transformações básicas de uma imagem bidimen-
sional. Mais precisamente, trabalharemos com as primitivas básicas e os modelos mate-
máticos para transformar uma imagem inicial em outra.
Vale ressaltar aqui, que existem processos específicos para tratar uma imagem matri-
cial, isto é, analisando especificamente os valores dos pixels da imagem.
Uma segunda ressalva é que trabalharemos com primitivas em duas dimensões, mas,
para transformar primitivas em três dimensões, você pode seguir procedimentos análogos.
Transformações Geométricas
Pelo que falamos até agora, podemos sintetizar o conceito de transformada: alterar
um gráfico em outro aplicando regras bem definidas.
Vamos falar, então, sobre cada uma das transformações básicas e como elas podem
ser combinadas para um resultado mais preciso.
8
Translação
Podemos mover um ponto no plano XY por meio da adição de um determinado valor
à sua posição original. A esse “movimento” atribuímos o nome Translação.
P´ (5,4)
4
T = [3,2]
P (2,2)
2
X
2 5
Figura 1 – Translação: exemplo
Agora, veja que fizemos a translação do ponto P em três unidades no eixo X e duas
no eixo Y. Por isso, representamos a transformação por meio de uma matriz: T = [3,2].
A translação acontece somando os valores de cada eixo ao valor original do ponto.
Por isso, temos o ponto trasladado P’(5,4).
Vamos, então, formalizar esse conceito em regras matemáticas?
O que fizemos na Figura 1 pode ser generalizado na Figura 2.
9
9
UNIDADE Transformações Geométricas
P´
y1
Ty
P
y0
X
Tx
x0 x1
Figura 2 – Translação genérica
Veja que o Ponto P agora traz apenas a representação pelo seu identificador, mas po-
demos verificar que suas coordenadas são P(x0,y0). Da mesma forma, temos P’(x1,y1).
Quando observamos a diferença entre eles, temos os valores Tx e Ty, que compõem
a nossa transformada de translação.
1 x0 + Tx
x=
1 y 0 + Ty
y=
x1 x0 Tx
= +
y1 y 0 Ty
Com essa operação, podemos, então, representar uma translação genérica para ob-
ter a coordenada de um ponto trasladado.
Tx
T =
Ty
10
Escala
Vamos fazer uma análise análoga para a escala. Agora, teremos um fator que usare-
mos na transformação para X e Y, mas faremos uma multiplicação dos fatores.
P´(4,4)
4
2 P(2,2)
X
2 5
Figura 3 – Escala
Assim, o fator de escala seria 2, para todos os eixos. Mas podemos usar, ainda, um
fator de escala diferente para cada eixo.
Sx 0
[ x1 y1] = [ x0 y 0] *
0 Sy
11
11
UNIDADE Transformações Geométricas
Então, veja que estamos tentando representar as transformações por meio de matrizes.
Mais adiante, veremos como podemos criar uma forma homogênea para essa repre-
sentação. Portanto, a matriz de transformação de escala é igual a:
Sx 0
S=
0 Sy
Veja, ainda, que estamos analisando apenas um ponto da primitiva, como no caso do
quadrado em que verificamos o ponto superior direito, mas para termos a transformação
completa da primitiva, repetimos o processo para todos os seus pontos (o que vale para
todas as transformações).
Rotação
O processo de rotação envolve alguns passos a mais, mas pode ser facilmente inter-
pretado por meio da Geometria Analítica e da Trigonometria.
P´(x´,y´)
r
P(x,y)
r
X
Figura 4 – Rotação
Coordenadas Polares
Ao tratarmos dos ângulos e suas distâncias para a origem, estamos trabalhando com
um novo Sistema de Coordenadas: as Coordenadas polares.
12
Lembre-se de que esse Sistema não trabalha com pontos representados nos eixos X
e Y, mas os representa de acordo com o raio e o ângulo, como mostra a Figura 5.
P´(x´,y´)
r
r P(x,y)
X
Trabalhar com Coordenadas polares na rotação é um pouco mais simples, pois temos
domínio espacial maior dos ângulos a serem aplicados.
A Figura 6 mostra um caso genérico de um ponto no plano XY. Veja que podemos
perceber um triângulo retângulo, que é formado pelos catetos com os valores de X e Y,
e a hipotenusa com o valor de r (o raio, ou a distância do ponto à origem).
x
P(x,y)
r
y
13
13
UNIDADE Transformações Geométricas
Sendo assim:
y
sin (α ) =
r
x
cos (α ) =
r
y = r *sin (α )
x = r *cos (α )
Veja que temos, então, uma conversão simples entre os Sistemas de Coordenadas,
relacionando os valores de x e y aos valores de r e α.
É importante notar que estamos trabalhando em Sistemas que têm o mesmo ponto
como origem. Caso a nossa origem seja deslocada por algum motivo, precisamos acres-
centar os valores da nova origem aos valores de x e y calculados:
y c y + r *sin (α )
=
x= cx + r *cos (α )
em que cx e cy são os valores relativos ao centro da nova circunferência (ou a nova origem).
Aplicando a Rotação
Agora que sabemos como relacionar os Sistemas de Coordenadas, voltemos à Figura 4.
Vamos aplicar as relações trigonométricas ao ponto P’. Veja que, por se tratar de
uma rotação, mantemos o valor do raio r e variamos apenas o componente angular.
Sendo assim, precisamos determinar o valor do ângulo total entre o raio (ponto P’ à
origem) e o eixo x.
Observando a Figura, percebemos que o ângulo total para esse ponto é a soma dos
ângulos Φ (referente ao ponto original).
=y ' r *sin (φ + θ )
=x ' r *cos (φ + θ )
14
Aplicando as regras de trigonometria para seno e cosseno de uma soma de ângulos,
temos:
=y ' r *cos (φ ) sin (θ ) + r*sin (φ ) cos (θ )
Veja que estamos considerando as coordenadas do ponto P’, ou seja, x’ e y’. Mas
queremos uma relação com o ponto original P(x,y). Portanto, podemos usar a relação
de x e y com o ângulo Φ:
y = r *sin (φ )
x = r *cos (φ )
Isolando o cosseno e o seno nessas duas relações e substituindo nas anteriores, temos:
x y
y′ = r * *sin (θ ) + r* *cos (θ )
r r
x y
x′ = r * *cos (θ ) − r* *sin (θ )
r r
y′ = x *sin (θ ) + y*cos (θ )
x′ = x *cos (θ ) − y*sin (θ )
cos (θ ) sin (θ )
[x ' y '] = [ x y]
− sin (θ ) cos (θ )
cos (θ ) sin (θ )
R=
− sin (θ ) cos (θ )
Coordenadas Homogêneas
Temos as três transformações principais. Apesar de existirem outras transformações,
como reflexão ou inclinação, por exemplo, pode-se dizer que Translação, Escala e Ro-
tação são as principais.
15
15
UNIDADE Transformações Geométricas
Tx
• T =
Ty
Sx 0
• S=
0 Sy
cos (θ ) sin (θ )
• R=
− sin (θ ) cos (θ )
Veja que temos matrizes de tamanhos diferentes e mais: as operações entre elas são
diferentes.
Na translação, por exemplo, fazemos uma adição de matrizes para encontrar o pon-
to desejado, enquanto na escala e na rotação, temos uma multiplicação.
O ideal seria termos matrizes de tamanho semelhante e que pudéssemos aplicar a
mesma operação. Assim, poderíamos criar uma única matriz de transformação, como
resultante das operações anteriores.
Pensando nisso, a fim de garantir homogeneidade entre essas matrizes e operações,
foram determinadas as Coordenadas Homogêneas.
Para que possamos fazer uma multiplicação entre as matrizes (e não uma soma,
como na translação), precisamos padronizar o tamanho das matrizes e, para isso, acres-
centar uma dimensão a elas.
Assim, temos matrizes de tamanho 3x3 que podem ser multiplicadas pelas coorde-
nadas originais sem que haja perda ou acréscimo de informação.
Veja o caso da translação:
x ' 1 0 ∆ x x
y '
= 0 1 ∆ y
y
1 0 0 1 1
Vamos fazer a multiplicação das matrizes juntos para comprovar que o resultado será
o mesmo que foi apresentado anteriormente.
Lembre-se de que ∆ é uma letra grega associada a algum tipo de variação e por isso
a estamos usando aqui.
Multiplicamos a primeira linha da matriz de transformação pela coluna da matriz de
coordenadas para obter o primeiro valor da matriz de resultados.
Assim:
=x′ 1* x + 0* y + ∆ x *1
Portanto,
x′ = x + ∆ x
16
Se fizermos o mesmo para as demais linhas, teremos:
=y′ 0* x + 1* y + ∆ y *1
1 = 0* x + 0* y + 1*1
ou seja:
x′ = x + ∆ x
y′= y + ∆ y
1=1
Veja que podemos descartar a terceira igualdade, mas ela foi importante durante os
cálculos da translação.
O mesmo processo vale para as demais transformações. Dessa forma, temos as se-
guintes matrizes de transformação usando as coordenadas homogêneas:
Translação
x ' 1 0 ∆ x x
y '
= 0 1 ∆ y
y
1 0 0 1 1
Escala
x ' λx 0 0 x
y ' = 0 λy 0 y
1 0 0 1 1
Rotação
Você consegue provar que os resultados das operações com as matrizes de transformação
são os mesmos obtidos anteriormente neste material?
Faça como fizemos aqui com a translação.
17
17
UNIDADE Transformações Geométricas
P´(x´,y´)
P´(2,3)
30º
X
Figura 7 – Aplicação da matriz de rotação
3 1
2* − 3*
2 2
x '
y ' 2* 1 + 3* 3
=
2
2
1
1
x ' 0.23
y ' = 3.59
1 1
18
Composição de Transformações
Se uma transformação T1 é seguida por uma transformação T2, então, o próprio
resultado pode ser representado por uma única transformação T, que é a composição
de T1 e T2, tomada nessa ordem.
x ' 1 0 2 2
y ' = 0 1 1 3
1 0 0 1 1
x ' 4
y ' = 4
1 1
Portanto, após a translação, o ponto obtido é P’(4,4). Agora, apliquemos uma escala
de 2 unidades em cada eixo:
x ' 2 0 0 4
y ' = 0 2 0 4
1 0 0 1 1
x ' 2* 4 + 0* 4 + 0*1
y ' = 0* 4 + 2* 4 + 0*1
1 1
x ' 8
y ' = 8
1 1
19
19
UNIDADE Transformações Geométricas
Para comprovar que é possível gerar uma matriz de transformação única e geral combi-
nando as duas transformações, vamos calcular a matriz e depois aplicar ao ponto original.
λx 0 0 1 0 ∆ x
=T 0 λy 0 0 1 ∆ y
0 0 1 0 0 1
λx 0 λx *∆ x
=T 0 λy λ y *∆ y
0 0 1
Importante!
Perceba que a construção da matriz geral é uma multiplicação das matrizes em ordem
inversa da aplicação. Portanto, no caso mostrado, começamos com a matriz de escala e
multiplicamos pela de translação
Substituindo os valores:
2 0 2*2
T = 0 2 2*1
0 0 1
x ' 2 0 4 2
y ' = 0 2 2 3
1 0 0 1 1
x ' 8
y ' = 8
1 1
20
1 0 ∆ x λx 0 0
=T 0 1 ∆ y 0 λy 0
0 0 1 0 0 1
λx 0 ∆x
=T 0 λy ∆ y
0 0 1
λx 0 0 1 0 ∆ x
=T 0 λy 0 0 1 ∆ y
0 0 1 0 0 1
λx 0 λx *∆ x
=T 0 λy λ y *∆ y
0 0 1
Veja, então, que é possível comprovar que a ordem das operações gera, sim, resul-
tados diferentes.
Praticando
Vamos fazer um exercício juntos.
Na Figura 8(a), tem-se um retângulo formado pelos pontos ABCD. Deseja-se rotacio-
nar o retângulo em 45 graus, tendo o centro da rotação no ponto A.
Y Y
C
B
D C
D
A B A
X X
Figura 8 – Rotação com origem determinada (a) Estado inicial e (b) Estado final
Este exercício traz uma informação importante, que é o centro da rotação. Se apli-
carmos a rotação, simplesmente, rotacionaremos a Figura em torno da origem do plano.
21
21
UNIDADE Transformações Geométricas
Uma forma simples de realizar a rotação em torno de um eixo é realizar uma trans-
lação da Figura para que o ponto desejado (A) esteja localizado na origem do plano
(0,0). Em seguida, fazemos a rotação e trasladamos novamente o objeto com o mesmo
deslocamento inicial.
Para que o ponto A chegue à origem, precisamos movimentá-lo nos sentidos negati-
vos dos eixos X e Y, em uma unidade cada.
O que significa que teremos uma translação com os valores ∆ x =−1 e ∆ y =−1 .
1 0 0 1 0 0 1 0 0 1 1
Importante!
Observando a equação completa, fica mais fácil perceber o porquê de termos a ordem
inversa das matrizes de transformação, pois com a matriz com o ponto original está mais
à direita da equação.
1 0 −∆ x cos θ − sin θ 0 1 0 ∆ x
=T 0 1 −∆ y sin θ cos θ 0 0 1 ∆ y
0 0 1 0 0 1 0 0 1
cos θ − sin θ −∆ x 1 0 ∆ x
=T sin θ cos θ −∆ y 0 1 ∆ y
0 0 1 0 0 1
22
E, por fim, a multiplicação das matrizes restante:
Para o ponto A:
2 2 2 2
− − + + 1
2 2 2 2
x ' 1
= y ' 2 2
−
2
−
2
+ 1 1
2 2 2 2
1
1 0 0 1
2 2
− 1
2 2
x ' 1
= y ' 2 2
− 2 + 1 1
2 2
1 1
0 0 1
2 2
− +1
2 2
x '
y ' = 2 2
+ − 2 + 1
2 2
1
1
x ' 1
y ' = 1
1 1
23
23
UNIDADE Transformações Geométricas
2 2
− 1
2 2
x ' 3
= y ' 2 2
− 2 + 1 1
2 2
1 1
0 0 1
2 2
3 − +1
2 2
x '
y '= 3 2 + 2 − 2 + 1
2 2
1
1
x ' 2.41
y ' = 2.41
1 1
Para o ponto C:
2 2
− 1
2 2
x ' 3
= y ' 2 2
− 2 + 1 2
2 2
1 1
0 0 1
2 2
3 −2 +1
2 2
x '
y '=
3 2 2
+ 2 − 2 + 1
2 2
1
1
x ' 1.71
y ' = 3.12
1 1
24
Para o ponto D:
2 2
− 1
2 2
x ' 1
= y ' 2 2
− 2 + 1 2
2 2
1 1
0 0 1
2 2
−2 +1
2 2
x '
y ' = 2 2
+ 2 − 2 + 1
2 2
1
1
x ' 0.29
y ' = 1.71
1 1
Sendo assim, os pontos originais A(1,1), B(3,1), C(3,2) e D(1,2), após uma rotação de
45 graus em torno do ponto A, geram os seguintes pontos:
Vimos, ainda, que podemos combinar suas matrizes para criarmos transformações
mais complexas, como a rotação em torno de um ponto.
25
25
UNIDADE Transformações Geométricas
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Vídeos
2D Transformation
https://youtu.be/SLWCc-mcd-I
Transformation matrix for position vector | Matrices | Precalculus | Khan Academy
https://youtu.be/Kh8HKAxdEyw
Matrix Transformations and the Homogeneous Coordinate System
https://youtu.be/IiXB6tYtY4w
Transformações lineares e matrizes | A essência da Álgebra Linear, capítulo 3
https://youtu.be/kYB8IZa5AuE
26
Referências
2D Translation in Computer Graphics. Definition. Examples. Gatevidyalay. [S. l.]
2021. Disponível em: <https://www.gatevidyalay.com/2d-transformation-in-computer-
-graphics-translation-examples/>. Acesso em: 11/03/2021.
XAKTLY MATRICES that manipulate 2D vectors. [S. l.] 2021. Disponível em: <ht-
tps://xaktly.com/Matrix2Dtransformation.html/>. Acesso em: 11/03/2021.
27
27
Computação Gráfica
Modelagem 3D
Revisão Textual:
Prof.ª Dr.ª Selma Aparecida Cesarin
Modelagem 3D
• Introdução;
• Modelagem 3D;
• WebGL;
• Determinando a Geometria;
• Animação;
• Modelagem Procedimental;
• Extrusão e Revolução.
OBJETIVO DE APRENDIZADO
• Com base no pipeline de renderização, apresentar as Técnicas Básicas de Modelagem Tridi-
mensional Programática, realizando operações em Malhas Poligonais e Superfícies.
UNIDADE Modelagem 3D
Introdução
Agora que já conhecemos um pouco sobre as bases da Computação Gráfica e como in-
terpretamos as imagens digitalmente, podemos começar a criar elementos mais complexos.
É importante termos esse diagrama em mãos, pois trabalharemos com essas etapas
do processo de renderização. Manipularemos os shaders (vertex e fragment) para cons-
truirmos nossas próprias primitivas.
Conectando ainda com o que estudamos sobre Transformações Espaciais, podemos
perceber que, para transformar um objeto no espaço, temos de aplicar uma série de
operações matemáticas (representadas pelas Matrizes de Transformação) a cada um dos
pontos da forma geométrica.
Agora, observando novamente a Figura 1, podemos perceber que essas transforma-
ções podem acontecer entre o vertex shader e o Programa Genérico, pois ambos são
responsáveis pela determinação da posição de cada um dos pontos da forma geométrica.
Podemos, então, fazer uma conexão entre o que vimos até agora.
Vamos, então, começar a discutir como podemos aplicar esse conhecimento no Có-
digo, e extrapolar o que vimos sobre transformações no plano para o espaço.
Modelagem 3D
É bem provável que você já tenha experimentado algum software de Modelagem Tri-
dimensional, como Blender, Maya ou Cinema4D, por exemplo, ou, talvez, algum ainda
mais simples, como o SketchUp.
Esses sistemas foram criados para possibilitar a geração de imagens tridimensionais,
para simplificar o trabalho de construir um arquivo pensando na coordenada espacial de
cada um dos vértices do objeto.
Na prática, o que eles fazem é criar uma interação visual com o usuário, mas, por
trás, realizam todos os cálculos geométricos necessários.
8
O que vamos discutir nesta Unidade é a forma como esses cálculos são realizados.
Obviamente, não pretendemos construir aqui um Sistema Complexo, mas apresentar os
fundamentos de CG.
Assim como vimos com as formas bidimensionais, as figuras tridimensionais são re-
presentações dos pontos no espaço.
Existem várias formas de se representar um objeto, mas um dos formatos mais co-
nhecidos e utilizados hoje em dia (inclusive pelos softwares citados) é o OBJ.
Esse formato de arquivo representa cada ponto (vértice) e suas conexões, formando faces.
A Figura 2 apresenta um arquivo no formato OBJ, que representa um cubo simples
e, ao lado, sua representação gráfica.
9
9
UNIDADE Modelagem 3D
Agora que já temos todos os vértices, podemos começar a conectá-los. Isso é feito
com as linhas começando com a letra f. Ela indica cada um dos triângulos que compõem
uma face do objeto 3D.
Os números indicam os vértices criados anteriormente.
Veja, então, que é possível criar um objeto tridimensional em um Bloco de Notas
qualquer (salvando o arquivo com a extensão .obj).
Obviamente, esse é um trabalho enorme se a forma geométrica for mais complexa. E é aí
que nós, programadores, entramos com a construção de algoritmos que criam modelos 3D.
WebGL
Uma Biblioteca de Computação Gráfica bem simples e disponível em quase todos
os navegadores modernos é a WebGL, uma variação do OpenGL voltada para a web
(TUTORIALS POINT, 2021). Usaremos essa Biblioteca para nossos exemplos e prática
nesta Unidade.
Para isso, vamos criar um site simples. Veja o Código do nosso arquivo index.html:
Figura 3
Fonte: Reprodução
Esse é o Código da nossa página principal e há dois pontos a serem observados aqui:
• O corpo da página tem apenas uma tag canvas, com um id que usaremos no có-
digo em Javascript;
• Veja que há um arquivo Javascript adicionado logo no cabeçalho da página. Esse
é o arquivo que usaremos para programar o nosso espaço 3D e, construindo o
arquivo main.js, temos o seguinte ponto de partida:
Figura 4
Fonte: Reprodução
10
Veja bem o que estamos fazendo:
• Criamos uma função chamada main (linhas 1 a 15) e a atribuímos ao evento de
carregar da página (linha 17);
• Na função main, buscamos o elemento de Canvas do HTML e alteramos o seu
tamanho para preencher a página completa (linhas 2 a 4);
• Criamos uma variável gl, que receberá o contexto do Canvas. Nesse caso, um
contexto de WebGL;
• Verificamos se o navegador suporta WebGL, apresentamos uma mensagem, caso
contrário, e finalizamos o algoritmo;
• Caso seja possível, damos seguimento ao algoritmo, determinando qual a cor de
limpeza do Canvas (linha 12). Usamos 4 valores, um para cada componente do
Sistema RGB (vermelho, verde e azul) e um para a transparência (alpha). Todos
variando de 0 a 1;
• Disparamos o comando de limpar o buffer de cor.
Assim, temos de limpar a tela sempre, e depois reconstruir o que foi calculado. A cor
de limpeza é usada para isso, e nos traz um efeito de cor de fundo da tela.
Portanto, no nosso exemplo, o Canvas deve aparecer preto na tela. Nosso objetivo é
apresentar um cubo, como mostra a Figura 3:
Para esse exemplo, trabalharemos com cada um dos vértices do cubo, definindo sua
posição no espaço e sua cor.
Importante!
Todo o conteúdo desse exemplo se encontra no seu Ambiente Virtual de Aprendizagem.
11
11
UNIDADE Modelagem 3D
Determinando a Geometria
Ainda no nosso Código de exemplo, vamos inserir alguns trechos de Código entre o
teste do contexto do WebGL e a limpeza do Canvas.
Figura 6
Fonte: Reprodução
Ok!
Criamos um array para todos os pontos que compõem o cubo. Eles foram separados
por linhas que representam os 4 vértices de uma face (6 linhas: uma para cada face).
Veja que dei um espaço maior entre os valores, para indicar cada um dos vértices.
Temos, então, 72 valores nesse array, sendo 3 para cada vértice (x, y e z), 4 vértices por
face e 6 faces.
Em seguida, as cores são determinadas para cada um dos pontos criados anteriormente.
Veja que dividimos visualmente na mesma sequência, para ter uma compreensão
mais rápida. Veja os 3 primeiros valores, por exemplo (0, 0, 1), representam o azul, pois
têm o menor valor nos canais R e G e o maior no canal B.
Por fim, temos um array com os índices dos vértices que compõem cada face.
Nosso próximo passo é criar um buffer para cada uma das propriedades em que
estamos trabalhando (vértices, cores e faces):
12
Figura 7
Fonte: Reprodução
Figura 8
Fonte: Reprodução
Nesse caso, criamos duas variáveis que recebem strings com o que seria o conteúdo
dos arquivos separados do vertex shader e do fragmente shader.
Estamos usando uma linguagem específica de shaders aqui, mas, basicamente, para
o vértice, são criadas 3 matrizes (Pmatrix, Vmatrix e Mmatrix), que serão responsáveis
pela projeção, visualização (câmera) e movimentação (Transformadas Geométricas) de
cada um dos vértices.
Sua função main calcula a coordenada com base nas matrizes e define a cor do vértice.
Veja que o Fragmente Shader é mais simples, pois apenas verifica a cor dos vértices
para criar uma interpolação (o que gera um gradiente, caso dois vértices conectados
tenham cores diferentes).
Por fim, as linhas 72 a 83 criam os shaders, buscam sua fonte (as variáveis anteriores)
e compilam o seu Código.
13
13
UNIDADE Modelagem 3D
Figura 9
Fonte: Reprodução
Dessa forma, estamos conectando o que o shader interpreta sobre a posição e a cor
de cada vértice, com variáveis no Javascript que nos permitem manipular o objeto.
E é aí que podemos manipular o cubo criado para que esteja na posição que desejamos.
Veja no Código a seguir, em que criamos três variáveis temporárias no js para essa
manipulação.
Caso não mudemos algo, a identidade garante que será a configuração padrão.
Figura 10
Fonte: Reprodução
14
As linhas 122 até 128 configuram como queremos mostrar o objeto. Veja que fa-
zemos uma translação de –10 unidades no eixo Z, na linha 122, isto é, andamos com
a câmera no eixo Z negativo (saindo da tela do computador), por 10 unidades, o que
realiza um efeito de zoom out sobre o espaço.
Por fim, rotacionamos o cubo nos três eixos, com ângulos que nos permitem visua-
lizar ao menos 3 faces.
Por fim, vamos dizer ao WebGL que desenhe esses pontos na tela, ou seja, os últimos
passos da renderização, de acordo com a Figura 1:
Figura 11
Fonte: Reprodução
Veja que aqui estamos habilitando a profundidade de campo na cena e para que
tenhamos um campo de visão tridimensional, pintamos a tela (como tínhamos feito no
começo), e depois começamos a definir qual é a área de visão (viewport), aplicamos as
matrizes que calculamos, colocamos nos bufferes e, por fim, desenhamos os elementos.
Esse não foi um processo complexo (apesar de parecer). É um Código que pode ser
reaproveitado para desenhar outras figuras, variando os valores dos arrays iniciais.
Animação
Nessa mesma linha, podemos entender a animação como a sobreposição rápida
de imagens.
Lembre-se de que o WebGL já faz essa sobreposição por nós. Assim, precisamos
apenas começar a variar as transformações. Já temos as matrizes. Então, só precisamos
criar uma função que varia algum parâmetro de tempos em tempos.
15
15
UNIDADE Modelagem 3D
Veja:
Figura 12
Fonte: Reprodução
Veja, ainda, que zeramos a rotação nos outros eixos, deixando apenas uma variação
constante na rotação do eixo Y. Assim, temos um movimento uniformemente variável.
Modelagem Procedimental
O termo procedimental está associado à noção de criado por meio de um algoritmo.
Sendo assim, a modelagem procedimental nada mais é do que a geração de modelos
tridimensionais por meio de uma lógica estruturada.
16
Figura 13 – Geração procedimental de terrenos
Fonte: OLSEN, 2004
Para dar um dinamismo maior aos jogos, é comum que as fases tenham alguns ele-
mentos gerados por um algoritmo de Modelagem 3D.
Nesse caso, o nivelamento do terreno pode ser criado com base em um algoritmo de
ruído. O que significa que cada vértice dessa malha determina a altura do terreno e o
valor da translação em Y é determinado por esse algoritmo.
Olsen (2004) apresenta um Método interessante de criação de relevo com base em
ruídos simples combinados, como o Perlin Noise, por exemplo.
A Figura 5 mostra um dos resultados da sua proposta, combinando diferentes trans-
formações para obter um ruído característico de terreno.
Uma vez que essa imagem foi gerada, podemos tomar cada pixel e analisar o seu
valor, sendo que quanto mais escuro o seu valor, mais fundo será um vale no terreno e,
quanto mais claro, mais alto será um monte.
17
17
UNIDADE Modelagem 3D
Veja que, com essa lógica, teremos um terreno bem acidentado, com muitos vales e
picos, sendo que o que determina se um terreno vai ser mais ou menos acidentado é o
algoritmo de geração dessa imagem de ruído.
Por isso, existem tantos estudos nessa Área, quando associada aos jogos. É preciso
criar algoritmos que descrevam cada tipo de terreno que se deseja reproduzir.
Veja, também, que não só a altura do terreno pode ser estimada com essa função,
mas também as cores da textura que será aplicada a ele. Imagine que quanto mais fundo
for o mapa, mais abaixo do nível do mar o terreno estará.
Assim, podemos criar uma textura de água que respeite os pontos escuros da imagem.
De forma análoga, pintamos uma textura de neve para os pontos mais altos, por exemplo.
Extrusão e Revolução
Um método interessante de modelagem é a extrusão. Ela parte de uma forma bidi-
mensional e gera novos pontos ao percorrer um determinado caminho.
Pensando em um algoritmo para realizar a extrusão, veja que podemos tomar todos
os vértices originais e os duplicar, e realizar uma translação no eixo desejado (seja um
dos três cartesianos principais, ou um novo segmento de reta pré-determinado).
Em uma extrusão simples, podemos ter apenas um conjunto novo de vértices, mas se
o caminho for mais complexo, ou tiver mais segmentos (ou paradas durante a extrusão),
teremos mais conjuntos de vértices duplicados e trasladados.
18
O caminho pode ser ainda mais complexo, formando figuras curvas, por exemplo.
Para cada novo ponto dessa curva, temos um novo segmento da extrusão.
Temos uma extrusão por revolução. Imagine, por exemplo, um pino de boliche do
qual você retira uma fatia bem fina.
Para reproduzir o pino original, você pode rotacioná-lo em torno do próprio eixo,
como mostra a Figura 7:
19
19
UNIDADE Modelagem 3D
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Vídeos
Coding Adventure: Procedural Moons and Planets
https://youtu.be/lctXaT9pxA0
Layer-Based Procedural Generation for Infinite Worlds
https://youtu.be/GJWuVwZO98s
Leitura
3D Graphics: A WebGL Tutorial
https://bit.ly/35tGKD6
WEB GL Fundamentals
https://bit.ly/3xtc9Sq
20
Referências
OLSEN, J. Realtime Procedural Terrain Generation: Realtime Synthesis of Eroded
Fractal Terrain for Use in Computer Games. [s. l.]. Acesso em: 31/10/2004.
TUTORIALS POINT. WebGL Cube Rotation. [S. l.] 31 mar. 2021. Disponível em:
<https://webglfundamentals.org/webgl/lessons/webgl-3d-geometry-lathe.html>. Aces-
so em: 31/03/2021.
VETTER, C. et al. Non-rigid multi-modal registration on the GPU. Proc SPIE. 2007.
Disponível: <https://www.researchgate.net/publication/235696712_Non-rigid_multi-
-modal_registration_on_the_GPU. Acesso em: 15/06/2021.
WEBGL 3D Geometry – Lathe. [S. l.]. 31 mar. 2021. Disponível em: <https://webglfun-
damentals.org/webgl/lessons/webgl-3d-geometry-lathe.html>. Acesso em: 31/03/2021.
21
21
Computação Gráfica
Rendering e Iluminação
Revisão Textual:
Prof.ª Dr.ª Selma Aparecida Cesarin
Rendering e Iluminação
• Introdução;
• Percepção da Imagem;
• Modelos de Iluminação em CG;
• Reflexão;
• Sombreamento;
• Phong;
• Ray Tracing;
• Ray Casting;
• Radiosidade;
• Photon Mapping.
OBJETIVOS DE APRENDIZADO
• Finalizar os Conceitos Básicos de Computação Gráfica com Técnicas de Iluminação e Rendering,
apresentando as principais formas de Iluminação e Mapeamento de Elementos no Espaço 3D;
• Abordar as principais Técnicas de Animação Tridimensional.
UNIDADE Rendering e Iluminação
Introdução
Nesta Disciplina, temos trabalhado com os Princípios de Computação Gráfica.
Vimos desde os Conceitos Básicos que envolvem as diferentes Áreas de estudo, como
Processamento de Imagens e Visão Computacional, por exemplo, até a construção de
Modelos Tridimensionais na prática, utilizando WebGL.
É muito importante que conheçamos os fundamentos para podermos aplicar em di-
ferentes contextos, com diferentes ferramentas. Por isso, trabalhamos muito com a parte
matemática, que envolve muita Geometria e Álgebra Linear, para cálculos de transforma-
ções geométricas.
Agora que entendemos que os ambientes tridimensionais podem ser interpretados
como pontos conectados no espaço, podemos trabalhar as diferentes formas de ilumi-
nação e renderização desses objetos.
O que vimos até agora nos dá a base para construção das formas bi ou tridimensionais.
Agora, vamos trabalhar com a alteração da percepção desses cenários.
Você já deve ter percebido que a iluminação pode transformar o cenário à sua volta,
seja adicionando novas sombras, que fazem um objeto ter aparência maior ou menor,
seja alterando a própria percepção das suas cores.
Para entendermos como recriar esses cenários digitalmente, precisamos entender
primeiro como a imagem é percebida pelo ser humano.
Assim, podemos manipular essa percepção de acordo com a intenção desejada para
a cena.
Percepção da Imagem
Segundo Santos (2021), de forma simplificada, o olho humano pode ser considerado
um instrumento óptico. Isso porque ele apresenta uma lente biconvexa, que é o cristalino, e
no fundo do olho temos a retina, que é sensível à luz e serve de anteparo para as imagens,
como mostra a Figura 1.
O nervo óptico envia a informação das sensações luminosas captadas pelo cristalino
e projetadas sobre a retina. O cérebro é responsável, então, por interpretar essas sensa-
ções e decodificar a imagem percebida.
Íris
Retina
Córnea Nervo
Óptico
Cristalino
8
Então veja bem que a imagem é gerada por informações obtidas pela captação de luz.
Este é o principal ponto que temos que considerar para trabalharmos com a imagem e
seus efeitos.
Quando nos voltamos para os estudos de Ótica, na Física, percebemos que a luz é
formada por uma onda eletromagnética que transporta momento e energia para longe
de uma fonte (SILVA, 2021).
A forma mais simples das ondas eletromagnéticas é o espectro de luz visível, como
mostra a Figura 2.
A frequência dessa onda luminosa está relacionada diretamente à cor percebida, que
varia do vermelho ao violeta, no espectro visível ao olho humano.
As frequências abaixo do vermelho são chamadas de infravermelhas e as que estão
acima do violeta são conhecidas como ultravioleta.
102 104 106 108 1010 1012 1014 1016 1018 1020
9
9
UNIDADE Rendering e Iluminação
Isso se dá porque, em b), temos mais uma fonte de luz forte incidindo sobre ele, de
um outro ângulo.
Veja ainda que o ângulo de incidência da luz determina regiões com maior exposição,
e outras com menos, como, por exemplo, a luz que entra pela janela na Figura 3(a) gera
um brilho maior sobre a superfície da cabeça do patinho, deixando-a quase branca (pois
reflete muita luz, mas também gera sombras na parte de baixo da asa, fazendo com que
essa região seja mais escura (por absorver mais a luz, ou mesmo receber pouca luz).
Por mais que essas observações já nos pareçam óbvias, elas são muito importantes,
pois serão reproduzidas digitalmente, de alguma forma.
Modelos de Iluminação em CG
Um Modelo de Iluminação em CG define a natureza da luz emanada por uma fonte
e sua interação com todos os objetos em cena (CAVALCANTI, 2019).
A maioria dos pacotes gráficos (como o OpenGL, por exemplo) traz métodos sim-
plificados de cálculo de intensidade de luz e são obtidos empiricamente. Modelos mais
precisos calculam a propagação da energia radiante entre as superfícies e as fontes de
luz da cena (MONTENEGRO, 2021).
10
Para continuarmos falando sobre os Modelos de Iluminação, precisamos distinguir os
tipos diferentes de iluminação.
Ambiental
Esta fonte de luz ilumina igualmente todas as superfícies do ambiente. Ela gera ilumi-
nação constante para todos os pontos do objeto e depende da cor do objeto e da luz para
identificar a intensidade da luz em um determinado ponto de sua superfície.
A Figura 4 mostra um modelo de uma esfera azul, posicionada sobre um plano cinza
claro, no software de Modelagem Maya.
Nesse ambiente, foi colocada apenas uma fonte de luz. Perceba que todos os pontos
da esfera são iluminados de forma igual. Portanto, não são geradas sombras ou reflexos.
11
11
UNIDADE Rendering e Iluminação
Direcional
As fontes direcionais emitem raios paralelos e com a mesma intensidade, por todo o
ambiente. São utilizadas para simular, por exemplo, os raios solares.
Pontual
A fonte de luz pontual emite luz em todas as direções a partir de um ponto e atinge
os objetos com intensidade e direções diferentes dependendo da distância entre eles.
A Figura 6 apresenta duas renderizações do mesmo cenário, com uma luz pontual
branca, com distâncias diferentes.
Na primeira, a fonte de luz está bem próxima, enquanto na segunda, ela está muito
distante.
12
Figura 6 – Iluminação Pontual
Fonte: Reprodução
Spotlight
A fonte do tipo Spotlight é semelhante à Iluminação Pontual, mas os raios de luz são
emitidos na forma de um cone, apontado para uma direção específica. A intensidade da
luz diminui conforme o raio de luz se distancia da fonte (CAVALCANTI, 2021).
A Figura 7 mostra o mesmo cenário com uma fonte de luz do tipo Spotlight. Veja que ela
atua como um canhão de luz, desses que encontramos nos teatros, por exemplo. O cenário
não é completamente apresentado no render, pois não há luz fora do cone estabelecido.
A computação gráfica trabalha com a combinação dessas fontes de luz para gerar
ambientes cada vez mais realistas.
13
13
UNIDADE Rendering e Iluminação
Reflexão
Quanto à emissão de luz, os objetos podem ser classificados como fontes de luz,
como vimos anteriormente, e como refletores.
Os primeiros possuem fontes de luz própria, como lâmpadas, lanternas, etc. e são ca-
racterizados pela intensidade, pela frequência e pela direção, como vimos no item anterior.
Já os materiais refletores não têm fontes de luz própria, mas refletem a luz. São obje-
tos coloridos e a reflexão depende das propriedades da superfície do objeto.
Ambiente
A quantidade de luz refletida depende das propriedades das superfícies. Elas depen-
dem de uma fonte de luz para ser refletida e seguem as propriedades do tipo de luz
incidida. Por exemplo, uma luz direcional atinge a superfície e é refletida com um raio
de ângulo calculado de acordo com a incidência na superfície.
Essa reflexão pode iluminar outros objetos. É muito comum usarmos rebatedores de
luz, por exemplo, em Estúdios de Fotografia. Esses rebatedores aproveitam uma fonte
de luz para refleti-la em um ângulo diferente sobre o objeto em cena.
Refletor Difuso
A luz é refletida em diferentes direções, dependendo das saliências do objeto. A in-
tensidade é proporcional à orientação relativa entre a incidência de luz e a superfície do
objeto (CAVALCANTI, 2021).
Essa forma de reflexão gera um efeito de gradiente nos objetos, como nas figuras
anteriores. No Maya, foi usado um objeto com material do tipo Lambert, que é um
material difuso.
A quantidade de luz incidente pode ser estabelecida para cada superfície por meio de
um parâmetro K d , que é o coeficiente de reflexão difusa e é um valor in intervalo [0,1].
Esse coeficiente é uma função da cor da superfície (MONTENEGRO, 2021).
I ambdiff = K d I a
Especular
O ângulo de reflexão em um refletor especular é igual ao ângulo de incidência, o que
acontece em superfícies polidas, lustradas ou brilhantes. Ele gera brilho com a cor da
luz, não com a cor do objeto.
14
A Figura 8 apresenta uma comparação entre os tipos de iluminação:
Sombreamento
Também conhecidos como Tonalização, os Métodos de Sombreamento buscam si-
mular o efeito de diferentes intensidades de iluminação em um objeto.
Esses modelos utilizam tanto as características das fontes de luz quanto o material dos
objetos para calcular o tom exato de cor em cada ponto.
Sombreamento Constante
O cálculo é feito apenas uma vez por superfície, o que dá uma aparência mais blocada
ao render. Todos os pontos da mesma superfície terão o mesmo aspecto, independente
de variações de incidência de luz.
Sombreamento Gouraud
Nesse modelo, o cálculo de reflexão da luz é feito com base em cada vértice do mo-
delo tridimensional, o que apresenta suavidade na transição dos tons entre um ponto e
outro do modelo.
15
15
UNIDADE Rendering e Iluminação
Os pontos internos da face recebem um tom gerado pela interpolação dos valores
obtidos por cada vértice da face em questão. O nome do Método vem de seu criador,
Henri Gouraud.
A grande diferença dos demais Métodos é que a iluminação é calculada pelos vértices
das faces do objeto, e não pela normal da face, como mostra a Figura 10.
Phong
O Método de Phong é uma adaptação do Gouraud, e adiciona o cálculo dos vetores
especulares.
Ele produz efeitos mais realistas, mas é também um processo demorado e, por isso,
a renderização pode ser mais lenta.
16
Ray Tracing
A ideia da Técnica, criada por Turner Whitted, em 1979, é muito simples e segue
como uma das principais, desde sua criação (PINHO, 2021).
Imagine que seja possível emitir raios partindo do ponto de vista do observador da cena.
Perceba que, nesse Sistema simples, pode-se utilizar materiais com transparência, ou
mesmo reflexivos, para cálculo.
A Figura 12 mostra uma representação desse modelo. Vamos analisar os pontos pro-
jetados no anteparo virtual:
Objeto reflexivo
2
Objeto transparente
4
5
Veja que um raio pode ser emitido do ponto de vista do observador até o objeto 1 (azul).
Ao refletir e retornar ao ponto de observação, a cor azul pode ser calculada levando
em consideração a iluminação para definir sua tonalidade.
Já o objeto 4 tem natureza transparente e, portanto, deve apresentar a cor dos obje-
tos ao fundo, levando em consideração o seu material e a refração da luz no seu interior.
Por isso, a sua cor sofre uma leve alteração na projeção.
17
17
UNIDADE Rendering e Iluminação
Ray Casting
O Ray Casting é muito parecido com o processo inicial do Ray Tracing. Ele também
trabalha com a emissão de raios a partir do observador em busca de objetos em cena.
O Ray Tracing, como dito, é um processo recursivo, ou seja, novos raios saem dos
pontos de intersecção com os objetos, para tratar casos, como os objetos transparentes
ou os reflexivos, por exemplo.
E essa é a grande diferença para o Ray Casting. Esse é um processo não recursivo e,
portanto, não considera os pontos de reflexão e transparência. É ideal para jogos, por
exemplo, em que o processamento precisa ser muito mais rápido, pois é atualizado em
uma alta taxa de quadros por segundo.
Radiosidade
A Radiosidade surgiu em uma época em que a Computação Gráfica não tinha um
modelo que levasse em consideração as reflexões dos objetos (SILVA, 2008).
Esse modelo trata da quantidade de energia luminosa que sai de uma superfície,
sendo uma composição da energia que é refletida nessa superfície e a energia emitida
por ela mesma.
Assume-se que os objetos são refletores difusos ideais, já que a maior parte da ener-
gia percebida vem da reflexão difusa das superfícies. A Figura 13 mostra como a refle-
xão difusa é modelada. Especifica-se um ângulo de visão. Uma intensidade é definida e
a intensidade final percebida em todas as direções é constante em todo o hemisfério de
reflexão. Para saber a intensidade que deixa uma dada superfície é necessário apenas
multiplicar a intensidade em um dado ângulo por π (SILVA, 2008).
Normal
Visão
intensidade = i = k ф
0 k
kcosф
Figura 13 – Reflexão difusa ideal sobre uma superfície
Fonte: Adaptada de SILVA, 2008
18
Pode-se dizer, então, que:
Radiosidade
= Luzemitida + Luzrefletida
Existem outras equações que detalham essa relação, mas essa equação resume muito
bem o que o modelo se propõe a fazer.
Para a radiosidade, a iluminação não vem apenas das fontes de luz, mas de todas as
superfícies refletoras do ambiente que interagem entre si.
Perceba, ainda, que este modelo não depende do ponto de vista do usuário, o que inten-
sifica a quantidade de cálculos necessários para determinar a intensidade em cada ponto.
Esse é, então, um algoritmo mais custoso que o Ray Tracing ou o Ray Casting.
Photon Mapping
É um outro algoritmo de iluminação global que considera Modelos de Radiância para
obter maior realismo da simulação.
É um modelo considerado de duas passadas, no qual raios saem tanto das fontes de
luz quanto do observador (câmera), independentes, até que uma condição de parada
seja determinada.
Veja que esse é um processo ainda mais custoso e que precisa determinar muito bem
as condições de parada para evitar sobrecarga desnecessária dos processadores.
Técnicas de Animação 3D
Já trabalhamos um pouco com animação em WebGL, na Unidade anterior.
Quando estudamos mais a fundo a Animação Digital, percebemos que existem Téc-
nicas de Animação Tradicional que foram transportadas para a Animação Digital.
Você já deve ter feito isso alguma vez: desenhar nos cantinhos do seu caderno uma
cena quadro a quadro e depois passar as folhas rapidamente.
19
19
UNIDADE Rendering e Iluminação
O que fizemos em WebGL se aproxima muito dessa ideia, pois o Código ia calculando
os quadros intermediários da Animação em tempo real.
Na Cinemática Direta, partimos das posições das articulações para encontrar a posi-
ção e a orientação de um atuador.
20
Temos, ainda, algumas limitações determinadas, como a força máxima que pode ser
aplicada sobre um ponto, ou o ângulo limite de giro de cada articulação.
Com todas essas limitações, é possível criar regras matemáticas para estimar a posi-
ção dos atuadores.
A Cinemática inversa trabalha com o movimento dos atuadores para calcular as po-
sições das articulações. No nosso exemplo, movimentamos a mão do personagem e o
braço acompanharia o movimento, dobrando o cotovelo quando necessário.
A Cinemática inversa pode ser usada com muita frequência para a animação de
personagens, como no nosso exemplo, mas também em qualquer outra animação que
apresente elementos conectados, como um braço robótico e um trator, por exemplo, e
uma cauda articulada de um animal, entre outros.
Em Síntese
A Computação Gráfica tem muitas Áreas de Atuação, como vimos ao longo desse com-
ponente curricular.
Vimos que ela se estende desde o processamento de imagens até a visão computacional.
Um profissional dessa área pode trabalhar com diferentes projetos, mas todos eles se
relacionam à imagem e como ela é gerada ou interpretada.
Nestas aulas, trabalhamos com os principais conceitos relacionados à Disciplina.
Caso você queira se especializar nesta Área, busque aprender mais a fundo sobre os al-
goritmos citados e as Teorias por trás dele.
21
21
UNIDADE Rendering e Iluminação
Material Complementar
Indicações para saber mais sobre os assuntos abordados nesta Unidade:
Vídeos
Ray tracing: o que é e como funciona
https://youtu.be/k48rfJt55-k
Disney’s practical guide to path tracing
https://youtu.be/frLwRLS_ZR0
Leitura
Computação Gráfica
https://bit.ly/3gBk0HY
Computação Gráfica – Iluminação
https://bit.ly/3cNAKcH
22
Referências
CAVALCANTI, J. Computação Gráfica. 2019. Disponível em: <http://www.univasf.edu.
br/~jorge.cavalcanti/comput_graf13_Iluminacao.pdf>. Acesso em: 04/04/2021.
SILVA, D. C. M. da. Luz Visível. In: Mundo Educação. Disponível em: <https://mun-
doeducacao.uol.com.br/fisica/luz-visivel.htm>. Acesso em: 04/04/2021.
TORRES, J. J. Cycles toon shading tutorial: use Cycles and Blender compositor to
create comic style renders. 2013. Minima Expression. Disponível em: <http://www.
minimaexpresion.es/en/cycles-toon-shading-tutorial-use-cycles-and-blender-compositor-
-to-create-comic-style-renders/>. Acesso em: 04/04/2021.
23
23