Buscar

MATEMATICA E FISICA APLICADAS A JOGOS pdf un3

Prévia do material em texto

MATEMÁTICA	E	FÍSICA	APLICADA	A	JOGOS
UNIDADE 3 - GEOMETRIA E MECA� NICA 3D
Isabel Cristina Siqueira da Silva
Introdução
A presente unidade trata dos principais conceitos relacionados à base Matemática e Fı́sica dos conteúdos
grá�icos e interativos necessários à construção de jogos digitais no espaço 3D. Neste sentido: Você sabe como
representar um vértice no espaço 3D, onde, além dos eixos X e Y, passa-se a ter o eixo Z (profundidade)?
Considerando a rotação, especi�icamente, quando um objeto 3D está na origem, como ela se dá em torno de
cada um dos três eixos? Como você imagina que câmera e projeções são aplicadas para visualização de uma
cena 3D em um jogo digital ou aplicação grá�ica? Como conceitos de iluminação, materiais e sombreamento
aplicados a objetos 3D deixam a cena mais realı́stica em um jogo digital ou aplicação grá�ica?
Esta unidade aborda conceitos que auxiliarão nas respostas a tais questões, envolvendo: modelagem
geométrica de objetos 3D, de modo a entender a noção de representação espacial com o uso do eixo Z
juntamente com X e Y; transformações geométricas de objetos 3D, trabalhando translação, escala e rotação;
câmera e transformações projetivas, diferenciando as caracterı́sticas da projeção paralela ortográ�ica da
projeção perspectiva; interação grá�ica com objetos em um cenário 3D e criação de cenas realı́sticas com uso
de iluminação, sombreamento, materiais, gravidade e sistema de partı́culas.
3.1 Modelagem Geométrica de Objetos 3D
Para a representação computacional de um objeto devemos, inicialmente, de�inir a descrição geométrica
(forma e posição) e os seus atributos visuais (cor, transparência, material, etc.). A descrição geométrica será
realizada em relação à dimensionalidade do objeto e, nesta seção, serão abordados os aspectos da
representação tridimensional (3D).
Além disso, também é necessário de�inir em que sistema de coordenadas o objeto será descrito, de modo a
obter uma referência para a descrição geométrica do objeto dentro da área de trabalho. Tal sistema recebe a
denominação de sistema de referência do universo (SRU). As de�inições de objetos, no SRU, se dão em relação
ao sistema de coordenadas cartesianas (sistema cartesiano), o qual é formado, no espaço 3D, pelos eixos x, y
e z.
3.1.1 Incluindo a Terceira Dimensão
Um objeto 3D é de�inido em função de suas coordenadas x, y e z.
Para a localização de um ponto no espaço 3D, devemos localizá-lo, primeiramente, a partir de duas de suas
coordenadas no plano correspondente (xy, xz ou yz). A seguir, projeta-se a terceira coordenada no espaço
como exempli�icado na �igura a seguir (ANGEL, 2003; SILVA, 2007).
Figura 1 - Representação 3D de um objeto.
Fonte: Elaborado pelo autor, 2019.
O quadro a seguir apresenta um exemplo de código, em OpenGL, para o desenho de um tetraedro similar ao da
�igura anterior.
Figura 2 - Exemplo da localização de um ponto no espaço 3D: (a) a partir do plano xy; (b) a partir do plano
xz; (c) a partir do plano yz.
Fonte: Elaborado pelo autor, 2019.
Na �igura a seguir pode ser observada a imagem resultante do código do quadro anterior. Note, no entanto, que
foram utilizadas duas rotações, uma de -30º sobre o eixo x e outra de 45º sobre o eixo y. Tais rotações, no
espaço 3D, serão discutidas aqui.
Esta representação pode se dar através de diferentes formas, como: aramada (wireframe), facetada, por
enumeração da ocupação espacial, por decomposição do espaço em octrees ou quadtrees, por partição binária
do espaço, por representação implı́cita (WATT, 2000).
Figura 3 - Exemplo de código OpenGL para desenho de um tetraedro no espaço 3D.
Fonte: Elaborado pelo autor, 2019.
Figura 4 - Imagem gerada pelo código do quadro anterior.
Fonte: Elaborado pelo autor, 2019.
Na �igura a seguir são apresentados exemplos das representações aramadas realizadas através das
informações de vértices e arestas que formam o objeto; e facetadas a partir dos vértices e faces que compõem
o objeto.
A subseção a seguir introduz o uso de primitivas geométricas na biblioteca grá�ica OpenGL.
VAMOS PRATICAR?
1) Modele, no espaço 3D, um cubo centrado na origem de lado 1.
2) (OpenGL) A partir do cubo modelado no exercıćio 1, de�ina um cód
usando as funções da OpenGL para desenhar o mesmo face a face (
primitiva “GL_QUADS”).
Figura 5 - Representação 3D: (a) aramada; (b) facetada.
Fonte: Elaborado pelo autor, 2019.
3.1.2 Usando Primitivas 3D
Existem, também, diferentes técnicas de modelagem geométrica de objetos, tais como: instanciamento de
primitivas, combinação de objetos, geometria sólida construtiva, modelagem por varredura ou sweep
(rotacional ou extrusão) entre outros. Como este material possui caráter básico, recomendamos o
aprofundamento de tais assuntos através de livros clássicos da Computação Grá�ica.
Para o desenho de objetos 3D em OpenGL pode-se fazer uso das primitivas OpenGL de�inindo a terceira
coordenada z (ANGEL, 2003; COHEN & MANSSOUR, 2006). Além da possibilidade do uso das primitivas
geométricas básicas no espaço 3D, o OpenGL disponibiliza funções para a criação de objetos 3D em modo
aramado e sólido.
Os objetos 3D listados são gerados na origem do Sistema de Referência do Universo (SRU). Assim, deve-se
aplicar transformações geométricas sobre os mesmos a �im de posicioná-los, alterar seu tamanho ou
rotacioná-los. Tais transformações serão abordadas na próxima seção.
CASO
A OpenGL (Open Graphics Library), como seu nome introduz, é uma biblioteca grá�ica
(não uma game engine!). Ela foi apresentada pela empresa Silicon Graphics Inc. (SGI),
em 1992, e usada em áreas que exigiam visualização complexa de imagens 2D e 3D,
como CAD, realidade virtual, simuladores de voo, visualização cientı�́ica entre outras.
Além destas, a OpenGL também começou a ser empregada na renderização de
grá�icos em videogames. Em um esforço da SGI para obter mais fornecedores para
produzir software que seria executado em suas estações de trabalho, esta juntamente
com outras empresas (Digital	 Equipment	 Corporation, IBM, Intel e Microsoft)
formaram o OpenGL	 Architecture	 Review	 Board (ARB), lançando, em 1 de julho de
1992, a versão 1.0 da especi�icação OpenGL. Em 2006, a SGI transferiu o controle
padrão OpenGL do ARB para um novo grupo de trabalho no The	Khronos	Group. A
OpenGL é gratuita e independente de plataforma, sendo a API de grá�icos 2D e 3D
mais amplamente utilizada, suportada e melhor documentada.
O quadro a seguir traz um exemplo de código para desenho de objetos 3D em OpenGL.
Tabela 1 - Objetos 3D em OpenGL.
Fonte: Elaborado pelo autor, 2019.
Para que objetos 3D �iquem mais realı́sticos, é necessário que alguns atributos sejam de�inidos de modo a
fornecer maior realismo à cena: iluminação, sombreamento, propriedade dos materiais, textura, de�inições de
câmera sintética e projeções entre outros.
Figura 6 - Exemplo de código para desenho de objetos 3D em OpenGL.
Fonte: Elaborado pelo autor, 2019.
3.2 Transformações Geométricas 3D
Assim como no espaço 2D, as operações de translação, escala e rotação podem ser realizadas no espaço 3D a
partir da de�inição da coordenada z. Em jogos digitais elas são a forma pela qual se implementa o movimento
dos objetos, sua ampliação, redução, espelhamento além de rotação. Para tanto, tem-se que aplicar as
respectivas equações para o cálculo das transformações geométricas.
Em ferramentas 3D de modelagem e game	engines, estes cálculos costumam estar “escondidos” do usuário,
que os invoca a partir de comandos simples. Porém, estas apresentam limitações e, por vezes, se faz
necessário que o programador de jogos entenda as transformações geométricas a ponto de ser capaz de
estendê-las a �im de contornar tais limitações.
3.2.1 Translação, Rotação e Escala
Para efetuar a translação de um vértice para uma posição no espaço 3D, devemos adicionar às suas
coordenadaso fator de translação desejado (ver Equação 1) (ANTON, 2000).
 Equação 1
A �igura a seguir traz um exemplo de aplicação da translação sobre os vértices de um cubo.
Já a transformação de escala sobre as coordenadas x, y e z de um objeto é aplicada segundo a Equação 2.
 Equação 2
A �igura a seguir traz um exemplo de aplicação da escala sobre os vértices de um cubo.
Figura 7 - Exemplo de translação 3D.
Fonte: Elaborado pelo autor, 2019.
A transformação de rotação de um vértice V para uma posição V’ deve ser realizada em relação a um dos três
eixos: x, y ou z. As Equações 3, 4 e 5 correspondem, respectivamente, às rotações sobre os eixos z, x e y.
 Equação 3
 Equação 4
 Equação 5
A �igura a seguir apresenta exemplos da aplicação de uma rotação de 45º sobre um cubo em relação aos três
eixos x, y e z. No entanto, cabe ressaltar que a rotação pode ser realizada, ao mesmo tempo, em mais de um
eixo.
Figura 8 - Exemplo de escala 3D.
Fonte: Elaborado pelo autor, 2019.
Para sabermos o sentido positivo de rotação sobre um determinado eixo, utilizamos a regra da mão direita
como nos exemplos da �igura a seguir (ANTON, 2000; SILVA, 2007).
Figura 9 - Exemplo de rotação em torno dos eixos x, y e z.
Fonte: Elaborado pelo autor, 2019.
Figura 10 - Exemplo da aplicação da regra da mão direita.
Fonte: Elaborado pelo autor, 2019.
Esta regra prega que é preciso coincidir o polegar da mão direita com a direção do eixo tal como nos exemplos
da �igura anterior.
3.2.2 Representação Matricial 3D
A exemplo do espaço 2D, transformações geométricas no espaço 3D também podem ser representadas através
multiplicação matricial.
De modo a exempli�icar tal conceito, as Equações 6 e 7 apresentam, respectivamente, as matrizes canônicas
de translação e escala no espaço 3D. Na matriz de translação, representam os fatores de
translação, enquanto representam os fatores de escala na matriz correspondente (ANTON,
2000).
 Equação 6
 Equação 7
Já para aplicação da rotação, três matrizes devem ser de�inidas, cada qual responsável pela rotação em torno
de um dos eixos – x, y e z. As Equações 8, 9 e 10 trazem, respectivamente, estas matrizes canônicas de rotação
(ANTON, 2000).
VOCÊ SABIA?
Como na detecção de colisão 3D, os cálculos baseados em bounding	 boxes
constituem o algoritmo mais rápido para determinar se as duas entidades do jogo
estão sobrepostas ou não. Isso consiste em agrupar as entidades do jogo em uma
caixa não rotacionada (alinhada ao eixo) e veri�icar as posições dessas caixas no
espaço de coordenadas 3D para ver se elas estão sobrepostas.
 Equação 8
 Equação 9
 Equação 10
No espaço 3D, em OpenGL utiliza-se as mesmas funções “glTranslatef”, “glRotatef” e “glScalef”. Devemos, no
entanto, considerar o parâmetro correspondente ao eixo z de modo a trabalhar com as três dimensões, de
modo a permitir as operações ilustradas nas Figuras 7, 8 e 9.
3.3 Câmera e Transformações Projetivas
No espaço 3D, a geração de uma imagem simula o uso de uma câmera fotográ�ica, a chamada câmera sintética.
Para tanto, a de�inição de alguns aspectos é importante, tal como: o posicionamento da câmera, a orientação
da câmera, o tipo de projeção e a região do SRU a ser exibida. Quanto aos tipos de projeção, podemos trabalhar
com dois principais: projeção paralela ortográ�ica e projeção perspectiva.
Enquanto na projeção paralela ortográ�ica, as projetantes são paralelas e encontram-se apenas no in�inito, na
projeção perspectiva, elas convergem para um único ponto pelo menos. Por �im, além de de�inir projeções e
parâmetros de câmera, tem-se que de�inir os planos de corte, que delimitam a partir de onde a câmera
“enxerga” e até onde os elementos da cena são visı́veis, comumente referenciados por “near” e “far”.
3.3.1 Câmera
Para a geração da imagem, devemos de�inir uma câmera (observador) na cena, de modo a permitir a sua
visualização de diferentes posições de no espaço 3D (SILVA, 2007). Como a câmera “olha” para a cena, seu
sistema de referência de câmera (SRC) está orientado para a origem do SRU. Por default, a câmera está
posicionada na origem do SRU, orientada para o eixo do mesmo (ver �igura a seguir).
Costuma-se representar o SRU pela regra da "mão direita" enquanto o SRC pela regra da "mão esquerda"; ambos
seguem a seguinte convenção: polegar , indicador e dedo médio , com vemos na �igura a
seguir.
Figura 11 - Orientação do SRC.
Fonte: Elaborado pelo autor, 2019.
Ao de�inir uma câmera em uma cena 3D, três atributos principais devem ser especi�icados: sua posição, seu
alvo (ponto no SRU para o qual está voltada) e a vertical da câmera (eixo y do SRC). Estes atributos podem ser
observados na próxima �igura.
A vertical da câmera ( ) diz respeito a sua rotação em relação e ao alvo, no SRU, e determina o sentido do
plano XY de projeção do SRC onde a imagem é projetada (similar à obtenção de uma foto no �ilme fotográ�ico).
3.3.2 Projeções
Figura 12 - Regras da “mão esquerda” e da “mão direita”.
Fonte: Elaborado pelo autor, 2019.
Figura 13 - Atributos da câmera sintética.
Fonte: Elaborado pelo autor, 2019.
Para a visualização de um objeto, devemos projetar suas coordenadas sobre o plano de projeção onde será
gerada a imagem. Dentre os tipos de projeções existentes, destacam-se duas: projeção paralela ortográ�ica e
projeção perspectiva. A projeção paralela ortográ�ica (ou somente projeção ortográ�ica) caracteriza-se pelas
projetantes, responsáveis pela geração da imagem, serem paralelas entre si enquanto as projetantes da
projeção perspectiva convergem para o observador, como vemos na �igura a seguir (SILVA, 2007).
Na projeção ortográ�ica, os objetos são exibidos com dimensões tal como especi�icadas, sem distorções. Já os
objetos exibidos em projeção perspectiva parecem mais reais, pois objetos mais próximos do observador são
exibidos em tamanho maior enquanto os objetos mais afastados aparecem menores na cena.
Além da câmera e da projeção, a imagem �inal ainda depende da de�inição dos planos de recorte responsáveis
por delimitar a área visı́vel do universo que será mapeada para a imagem. Em OpenGL é possı́vel gerar a
imagem apenas com a de�inição das projeções, sem especi�icar explicitamente a câmera. Neste caso, assume-
se que ela está posicionada sobre o eixo z do SRU e orientada para a origem do mesmo. A biblioteca
disponibiliza funções para a projeção ortográ�ica e para a projeção perspectiva (ANGEL, 2003; HILL JR., 2001).
A de�inição da projeção ortográ�ica é realizada através da função “glOrtho”, a qual recebe os parâmetros xmin,
xmax, ymin, ymax, perto e longe relativos aos planos de recorte. A exemplo da função de recorte 2D, as
funções de projeção devem ser de�inidas após a chamada das funções “glMatrixMode(GL_PROJECTION)” e
“glLoadIdentity”.
Os parâmetros perto e longe correspondem à posição de planos em profundidade ao longo do eixo z do SRC;
são distâncias relativas à câmera em direção ao alvo. A projeção perspectiva, em OpenGL, pode ser de�inida de
duas formas diferentes através das funções “glFrustum” e “gluPerspective”. A especi�icação da função
"glFrustum" é similar à “glOrtho”, uma vez que utiliza os mesmos parâmetros.
Já a de�inição da projeção perspectiva através da função “gluPerspective” requer a de�inição de quatro
parâmetros apenas: ângulo, aspecto, perto e longe. O ângulo corresponde ao ângulo de abertura que dará os
limites em x e y para o recorte da região visı́vel da cena e o parâmetro aspecto faz relação ao aspecto de
abertura de tal ângulo (largura e altura da imagem em relação à ). Os parâmetros perto e longe têm a
mesma função que nas funções “glOrtho” e “glFrustum”.
Figura 14 - Geração da imagem por projeção paralela ortográ�ica e por projeção perspectiva.
Fonte: Elaborado pelo autor, 2019.
Por �im, para especi�icar uma câmera na cena, devemosutilizar a função “gluLookAt” com os parâmetros de
posição, alvo e vertical da câmera. No exemplo do quadro a seguir, posx, posy e posz representam as
coordenadas de posição; alvox, alvoy e alvoz representam as coordenadas do alvo; e vertx, verty e vertz
correspondem às coordenadas da vertical da câmera.
VOCÊ QUER LER?
“Physics for Game Developers: Science, math, and code for realistic effects” livro de
David M (https://www.amazon.com/David-M-
Bourg/e/B001H6WWWK/ref=dp_byline_cont_book_1).
(https://www.amazon.com/David-M-
Bourg/e/B001H6WWWK/ref=dp_byline_cont_book_1) Bourg
(https://www.amazon.com/David-M-
Bourg/e/B001H6WWWK/ref=dp_byline_cont_book_1) e Bryan Bywalec
(https://www.amazon.com/Bryan-
Bywalec/e/B00C557VJQ/ref=dp_byline_cont_book_2), da editora O'Reilly Media,
apresenta princıṕios de Fıśica aplicáveis ao desenvolvimento de jogos. Os autores
discutem problemas do mundo real, como o movimento de barcos, aviões, carros e
bolas esportivas (Bourg (https://www.amazon.com/David-M-
Bourg/e/B001H6WWWK/ref=dp_byline_cont_book_1) e Bywalec
(https://www.amazon.com/Bryan-
Bywalec/e/B00C557VJQ/ref=dp_byline_cont_book_2), 2013).
Figura 15 - De�inição da câmera através do uso da “gluLookAt".
Fonte: Elaborado pelo autor, 2019.
https://www.amazon.com/David-M-Bourg/e/B001H6WWWK/ref=dp_byline_cont_book_1
https://www.amazon.com/David-M-Bourg/e/B001H6WWWK/ref=dp_byline_cont_book_1
https://www.amazon.com/David-M-Bourg/e/B001H6WWWK/ref=dp_byline_cont_book_1
https://www.amazon.com/Bryan-Bywalec/e/B00C557VJQ/ref=dp_byline_cont_book_2
https://www.amazon.com/David-M-Bourg/e/B001H6WWWK/ref=dp_byline_cont_book_1
https://www.amazon.com/Bryan-Bywalec/e/B00C557VJQ/ref=dp_byline_cont_book_2
Note que a chamada da função “gluLookAt” deve ocorrer após as chamadas das funções
“glMatrixMode(GL_MODELVIEW)” e “glLoadIdentity”, tal como as funções relativas às transformações
geométricas e após a de�inição da projeção.
3.4 Cenas Realísticas
Imagens e animações geradas gra�icamente apresentam maior grau de realismo a partir da disponibilização de
funções ligadas a modelos de iluminação, de sombreamento, de propriedade dos materiais entre outros. As
imagens apresentadas na �igura a seguir procuram exempli�icar a importância de determinados aspectos de
modo a gerar imagens com maior realismo.
Neste tópico não serão apresentados os fundamentos teóricos que embasam o cálculo da iluminação, do
sombreamento e das propriedades de re�lexão dos materiais. Assim, recomendamos a leitura de livros
clássicos da área da Computação Grá�ica a �im de melhor embasamento em tais assuntos.
3.4.1 Iluminação
O conceito de iluminação (ou modelo de re�lexão) para a obtenção do realismo na imagem de uma cena
grá�ica é de extrema importância, uma vez que aumenta a percepção da tridimensionalidade dos objetos. O
mecanismo de re�lexão de luz de uma superfı́cie depende de vários fatores, como vemos a seguir. Clique nos
itens.
Adição e habilitação de fontes de luz na cena.
Figura 16 - Diferentes possibilidades de geração de uma mesma cena: (a) objetos 3D coloridos; (b) objetos
3D coloridos e com recurso de iluminação e sombreamento; (c) objetos 3D coloridos, com recurso de
iluminação e sombreamento e com as propriedades dos materiais de�inidas.
Fonte: Elaborado pelo autor, 2019.
•
•
Controle de componentes ambiente, difusa e
especular.
Posicionamento de fontes de luz.
Controle de atenuação de fontes de luz.
Cor das fontes de luz.
Especi�icação de vetores normais.
Re�lexão de luz entre os objetos.
Especi�icação de propriedades materiais dos
objetos (liso, rugoso, cor etc.).
A luz corresponde à porção visı́vel do espectro eletromagnético enquanto a cor é uma sensação provocada
pela presença de luz no ambiente (FOLEY, 1990). A percepção humana é responsável pela sensação através de
células especializadas da retina (cones e bastonetes). Enquanto os cones são responsáveis pela percepção da
cor, os bastonetes são responsáveis pela visão noturna (ARNHEIM, 2016; SILVA, 2007). 
Assim, fontes de luz cromáticas têm componentes R, G, B (sistema RGB red-green-blue ou vermelho-verde-
azul), variando entre , enquanto a luz branca (acromáticas) é representada pelas componentes 
.
Podemos considerar que a iluminação básica de uma cena se dá pela luz ambiente, que corresponde a um
valor constante adicional de intensidade de iluminação numa cena. A luz ambiente é caracterizada pela
iluminação constante em todos os pontos da cena e por atenuar as diferenças bruscas de iluminação de
regiões de acordo com o tipo fontes de luz (pontuais, spot, direcionais).
A imagem percebida é, então, formada pela emissão, pela re�lexão e pela transmissão de luz que parte de
alguma fonte luminosa, atinge a superfı́cie do objeto e atinge o olho do observador (câmera). Neste sentido,
devem ser considerados os modelos de re�lexão de luz dos objetos.
Os modelos de re�lexão descrevem como a luz é re�letida pela superfı́cie do objeto em termos de geometria e
intensidade (WATT, 2000). Na geometria, considera-se que a direção da re�lexão se relaciona com o ângulo de
incidência da luz na superfı́cie; já a intensidade considera que somente parte da energia incidente é re�letida,
conforme o tipo de material que forma o objeto e, nesse sentido, por exemplo, há dois tipos principais de
re�lexão de luz: difusa e especular.
•
•
•
•
•
•
Já a re�lexão especular concentra-se em uma direção e sua intensidade depende da orientação relativa entre luz
re�letida e ângulo de visão. Neste modelo de re�lexão, o ângulo de re�lexão da luz sobre um objeto é igual ao
ângulo de incidência. Neste sentido, a intensidade de luz re�letida depende do ângulo entre a direção de
observação e a direção de re�lexão especular (ARNHEIM, 2016). De um modo geral, a re�lexão especular
traduz-se numa região mais clara, com brilho. Já na re�lexão difusa, a rugosidade da superfı́cie diminui a
possibilidade de re�lexão da luz incidente numa direção de re�lexão “preferencial”. A luz difusa é uma luz
suave, sem a intensidade e sem o brilho da luz especular e re�lete em de todas as direções.
Em OpenGL, para obter objetos com tonalização dependendo da iluminação da cena, clique nos números e e
veja o que é necessário.
Para obter objetos “reativos” à iluminação, devemos fornecer vetores normais às superfı́cies e descrever
propriedades materiais dos objetos. Em OpenGL, pode-se habilitar ou desabilitar a iluminação a partir das
funções “glEnable(GL_LIGHTING)” e “glDisable(GL_LIGHTING)”. E� possı́vel, também, de�inir até oito fontes de
luz a partir da função “glLight(luz, tipo, valor)”, em que “luz” especi�ica uma fonte de luz (8 fontes no total) e
pode ser GL_LIGHT0, GL_LIGHT1 até GL_LIGHT7; “tipo” corresponde à propriedade do material (ver tabela a
seguir); e “valor” indica o valor da propriedade tipo (ou um vetor de valores).
O quadro a seguir exempli�ica um código que faz uso de tais funções.
1 Criar uma fonte de luz.
2 Habilitar a iluminação da cena.
3 Habilitar a fonte de luz e de�inir sua posição.
4 Fornecer informações a respeito dos objetos.
Figura 17 - Tipos de luz em OpenGL.
Fonte: Elaborado pelo autor, 2019.
Os parâmetros , utilizados juntamente com “glLight”, estão relacionados aos valores �loat de�inidos
através de um vetor.
3.4.2 Sombreamento
O sombreamento está relacionado às estratégias para preenchimento dos pixels no interior de um polı́gono, de
acordo com um modelo de iluminação. Em OpenGL, dois tipos de sombreamento são possı́veis: constante
(�lat) e Gouraud. O sombreamento constante é usado para exibir objetos facetados com maior velocidade,
porém não possui aparência suavizada tal como o Gouraud (FOLEY, 1990). Neste tipo de sombreamento, a cor
é calculada sobre um ponto da face a partir de seu vetor normal à superfı́cie e este cálculo é assumido para
todos os demais pontos da face. Tal processo é exibido na �igura aseguir.
Figura 18 - Exemplo de trecho de código para especi�icação de uma fonte de luz (GL_LIGHT0).
Fonte: Elaborado pelo autor, 2019.
O sombreamento Gouraud, por sua vez, busca obter suavidade na exibição de objetos com superfı́cies curvas.
Este é empregado para obter iluminação contı́nua nas superfı́cies dos triângulos ou quadrados que compõe a
malha de um objeto, calculando a iluminação nos cantos de cada triângulo/quadrado e interpolando,
linearmente, as cores resultantes de cada pixel coberto pelo triângulo (ver �igura a seguir).
Figura 19 - Esquema de cálculo do sombreamento constante (�lat).
Fonte: Elaborado pelo autor, 2019.
Em OpenGL, o sombreamento é de�inido através da função “glShadeModel” que recebe por parâmetro
“GL_FLAT”, para sombreamento constante, ou “GL_SMOOTH”, para o sombreamento Gouraud.
3.4.3 Propriedades dos Materiais
Além da iluminação e do sombreamento, as propriedades dos materiais dos objetos também podem ser
de�inidas em OpenGL. Quando as propriedades dos materiais são de�inidas, a cena apresenta maior realismo,
pois diferentes propriedades de re�lexão dos materiais são tratadas. Assim, ao invés de a�irmar que a esfera da
cena da �igura a seguir é vermelha, dizemos que ela é feita de material que re�lete a luz vermelha em maior
quantidade (WATT, 2000).
Figura 20 - Esquema de cálculo do sombreamento Gouraud.
Fonte: Elaborado pelo autor, 2019.
Para a de�inição das propriedades dos materiais que constituem os objetos de uma cena, utilizamos a função
“glMaterial(face, tipo, valor)”, em que o parâmetro face especi�ica em qual face do objeto as propriedades do
material serão especi�icadas - pode ser “GL_FRONT”, “GL_BACK” e “GL_FRONT_AND_BACK”. Os parâmetros
tipo e valor são os mesmos passados à função “glLight” (COHEN; MANSSOUR, 2006). O código responsável
pela geração da cena exibida na �igura anterior pode ser observado a seguir.
Figura 21 - Exemplo de cena com iluminação, sombreamento e propriedade dos materiais.
Fonte: Elaborado pelo autor, 2019.
Na especi�icação do material apresentada no código do quadro anterior, o parâmetro "GL_SHININESS"
especi�ica o aspecto da componente especular do objeto (brilho) e varia de 1 à 128. Quanto menor, maior a
área de re�lexão especular do objeto. Ao empregar propriedades de materiais em uma cena OpenGL, devemos
incluir a chamada da função “glEnable(GL_COLOR_MATERIAL)”, a qual permite a de�inição de cores para o
objeto (HILL JR., 2001).
Já as funções “glEnable(GL_DEPTH_TEST)”, “glEnable(GL_NORMALIZE)” e “lClear(GL_COLOR_BUFFER_BIT
|GL_DEPTH_BUFFER_BIT)” são responsáveis pelo teste usado para eliminar faces posteriores que não devem
ser visualizadas na imagem �inal.
3.4.4 Gravidade e Sistema de Partículas
Outros conceitos relacionados à geração de cenas realı́sticas se referem à força da gravidade e à simulação de
sistemas de partı́culas (BOURG; BYWALEC, 2013).
Figura 22 - Código com exemplo do uso de iluminação, sombreamento e materiais.
Fonte: Elaborado pelo autor, 2019.
VOCÊ QUER VER?
O vıd́eo indexado neste link apresenta um pouco da história da OpenGL e seu papel no
desenvolvimento da Computação Grá�ica e Jogos Digitais. Acesse:
https://www.youtube.com/watch?v=OExbjBKZtUA (https://www.youtube.com/watch?
v=OExbjBKZtUA).
https://www.youtube.com/watch?v=OExbjBKZtUA
A força da gravidade é calculada em relação à massa de um objeto. Assim, quanto maior o objeto, mais forte a
força. Portanto, se a força é escalada de acordo com a massa, a massa é cancelada quando a força é dividida
pela massa. Já um sistema de partı́culas é uma coleção de muitas partı́culas minúsculas que, juntas,
representam um objeto difuso.
VOCÊ O CONHECE?
O personagem Mario foi apresentado no jogo “Donkey Cong” como um “jumpman”
cuja missão era salvar sua namorada Pauline. Inicialmente, Mario tinha a pro�issão de
carpinteiro, porém, após o sucesso do Jogo Mario	Bros, no qual o personagem entrava
em canos, ele passou a ser considerado encanador. Dentre várias curiosidades sobre a
origem do personagem e desenvolvimento dos jogos nos quais atua, a site a seguir traz
uma série de apontamentos relevantes sobre a implementação da gravidade no jogo
do Super Mario Bros. Acesse:
https://hypertextbook.com/facts/2007/mariogravity.shtml
(https://hypertextbook.com/facts/2007/mariogravity.shtml).
VAMOS PRATICAR?
Desa�io 1: Crie um código que simule a gravidade sobre um cubo. Par
sempre que o usuário pressionar tecla para cima, o cubo deve dar um 
sentido de y positivo e retornar para sua posição original.
Desa�io 2: Simule uma chuva de esferas que tem inıćio sempre que o 
pressiona a tecla espaço.
https://hypertextbook.com/facts/2007/mariogravity.shtml
Assim, durante um perı́odo, as partı́culas são geradas em um sistema, movem-se e morrem. Exemplos de
sistemas de partı́culas em jogos digitais são cabelos, chuva, grama, fogo, neblina, entre outros.
Síntese
Nesta unidade, tivemos a oportunidade de estudar os principais conceitos de Matemática e Fı́sica
relacionados a jogos digitais no espaço 3D.
Nesta unidade, você teve a oportunidade de:
conhecer os conceitos de modelagem geométrica 3D;
entender os conceitos de transformações geométricas 3D;
compreender câmera e projeções;
entender sobre aspectos de cenas realísticas (materiais,
iluminação, sombreamento, gravidade e sistemas de partículas).
•
•
•
•
Bibliografia
ANGEL, E. Interactive	Computer	Graphics: A Top-Down Approach with OpenGL. 3. ed. São Paulo: Addison-
Wesley, 2003.
ANTON, H.; RORRES, C. Álgebra	Linear	com	Aplicações. 8. ed. São Paulo: Bookman, 2000. 
ARNHEIM, R. Arte e percepção visual: Uma psicologia da visão criadora (https://www.amazon.com.br/Arte-
percep%C3%A7%C3%A3o-visual-psicologia-criadora/dp/8522126003/ref=sr_1_1?
adgrpid=63531498407&hvadid=326936684879&hvdev=c&hvlocphy=1001686&hvnetw=g&hvpos=1t1&hvq
mt=e&hvrand=5287184770575393815&hvtargid=kwd-
333264134782&hydadcr=5654_10696957&keywords=arte+e+percep%C3%A7%C3%A3o+visual&qid=15692
58307&sr=8-1). São Paulo: Cengage Learning, 2016.
BOURG, D. M.; BYWALEC, B. Physics	 for	 Game	 Developers: Science, math, and code for realistic effects.
Newton: O'Reilly Media, 2013.
CANALTI. COMPUTAÇA� O GRA� FICA — Conceito, Biblioteca OpenGL e Aplicações. Youtube, 21 nov. 2017.
Disponı́vel em: https://www.youtube.com/watch?v=OExbjBKZtUA. Acesso em: 26 set. 2019.
COHEN, M.; MANSSOUR, I. H. OpenGL: uma abordagem prática e objetiva. São Paulo: Novatec, 2006. 
FOLEY, J. et	al. Computer	Graphics – Principles and Practice. São Paulo: Addison-Wesley, 1990. 
HILL JR., F. S. Computer Graphics using OpenGL (http://www.prenhall.com/hill/). 2. ed. Nova Jersey: Prentice-
Hall, 2001.
SILVA, I. C. S. Aprendendo	computação	grá�ica	com	OpenGL	e	Blender. Porto Alegre: UniRitter, 2007.
THE PHYSICS FACTBOOK. Acceleration	 Due	 To	 Gravity: Super Mario Brothers, [201-]. Disponı́vel em:
https://hypertextbook.com/facts/2007/mariogravity.shtml
(https://hypertextbook.com/facts/2007/mariogravity.shtml). Acesso em: 26 set. 2019.
WATT, A. 3D	Computer	Graphics. 3. ed. São Paulo: Addison-Wesley, 2000.
https://www.amazon.com.br/Arte-percep%C3%A7%C3%A3o-visual-psicologia-criadora/dp/8522126003/ref=sr_1_1?adgrpid=63531498407&hvadid=326936684879&hvdev=c&hvlocphy=1001686&hvnetw=g&hvpos=1t1&hvqmt=e&hvrand=5287184770575393815&hvtargid=kwd-333264134782&hydadcr=5654_10696957&keywords=arte+e+percep%C3%A7%C3%A3o+visual&qid=1569258307&sr=8-1
http://www.prenhall.com/hill/
https://hypertextbook.com/facts/2007/mariogravity.shtml