Baixe o app para aproveitar ainda mais
Prévia do material em texto
03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluEx… 1/38 MATEMÁTICA E FÍSICA APLICADA A JOGOS UNIDADE 1 - GEOMETRIA E MECA� NICA 2D Isabel Cristina Siqueira da Silva 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluEx… 2/38 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluEx… 3/38 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 2D. Neste sentido, considerando jogo estilo space shooter 2D, como você imagina que o tiro é animado e como se detecta que este acertou o alvo? Quem tem ideia de como e por que conceitos de translação, rotação e escala são empregados em jogos digitais? Em jogos 2D de plataforma, como se calcula e se implementa um salto de um personagem? Como é implementada a colisão de um objeto com limites laterais, superior e inferior em um sistema de coordenadas cartesianas? Como coincidir a colisão com os limites citados anteriormente com as bordas da janela grá�ica? Esta unidade aborda conceitos que auxiliarão nas respostas a tais questões, envolvendo: visão geral sobre sistemas grá�icos interativos, modelagem geométrica de objetos 2D no sistema cartesiano, transformações geométricas de objetos 2D, focando, principalmente, em translação, escala e rotação, animação de objetos, explorando conceitos de aceleração e colisão, além de meios de realizar a interação grá�icas com tais objetos. Espera-se, assim, que esta unidade introduza os principais conceitos 2D envolvidos com a criação de jogos digitais empregando-se, para tanto, a biblioteca grá�ica OpenGL. 1.1 Geração de Imagens Gráficas Esta seção aborda conceitos introdutórios relacionados à geração de imagens grá�icas e sua aplicação em sistemas grá�icos interativos, abordando a sua evolução. VOCÊ SABIA? Sistemas grá�icos interativos (SGI) estão cada dia mais presentes na vida das pessoas, como na área de entretenimento (indústrias cinematográ�ica, televisiva e da área de jogos eletrônicos), simulação de atividades especı�́icas (Aeronáutica, Medicina, Arquitetura e Urbanismo, Design, Indústria, Meteorologia etc.) e/ou na área da Educação, auxiliando o desenvolvimento de ambientes virtuais de aprendizagem, jogos lúdicos, entre outras. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluEx… 4/38 Uma das principais ciências que permitem o desenvolvimento de sistemas grá�icos é a computação grá�ica, a qual tem por objetivo a produção de imagens grá�icas a partir de dados, sendo responsável pela visualização e pelo rendering de objetos bidimensionais (2D) e, principalmente, tridimensionais (3D) (GOMES, 2008). Para tanto, conceitos de geometria analı́tica e álgebra linear, relativos à modelagem geométrica de objetos no plano e no espaço, se fazem necessários (ver tabela a seguir). Técnicas de CG permitem a geração de imagens de modelos que, por sua vez, podem corresponder a uma representação computacional de um objeto real ou imaginário ou a um conjunto de dados descrevendo uma entidade ou fenômeno. 1.1.1 Pipeline de Visualização As etapas de geração de uma imagem por CG podem ser sintetizadas em um pipeline de visualização, seja no espaço 2D ou no espaço 3D. Como etapas deste pipeline, temos: modelagem geométrica, instanciamento, recorte, mapeamento e conversão vetorial-matricial (ver �igura a seguir). Tabela 1 - Objeto 3D versus objeto 2D. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluEx… 5/38 Este pipeline é seguido tanto para a visualização 2D como para a visualização 3D, com pequenas adequações a cada espaço de coordenadas. Figura 1 - Pipeline de visualização. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluEx… 6/38 CASO A seguir, apresentamos um breve histórico com os principais fatos que marcaram a evolução das técnicas de desenvolvimento de sistemas grá�icos. 1906 – Lee De Forest desenvolve a válvula (audion vacuum tube ampli�ier); 1926 – John Logie Baird apresenta o primeiro protótipo de televisão; 1930 – John Eckert (http://pt.wikipedia.org/wiki/John_Eckert) e John Mauchly (http://pt.wikipedia.org/wiki/John_Mauchly) criam o ENIAC (Electronic Numerical Integrator And Computer), o primeiro computador eletrônico. 1950 – o MIT (Massachusetts Institute of Technology) apresenta o primeiro computador grá�ico chamado Whirlwind, desenvolvido com �inalidades acadêmicas e militares para aplicações de aerodinâmica e simulação de voo; 1955 – Desenvolvimento do SAGE (Semi-Automatic Ground Environment), sistema de defesa antiaérea dos Estados Unidos, o qual teve como base o computador Whirlwind. 1962 – Ivan Sutherland, do MIT, apresenta o Sketchpad, primeiro editor grá�ico que servirá de base das interfaces grá�icas interativas. O Sketchpad é voltado para indústrias automobilıśticas e aeroespaciais. 1963 – Edward Zajac produz, nos Laboratórios Bell, o primeiro �ilme gerado por computador: “A two gyro gravity gradient altitude control system (http://www.um.pro.br/index.php?c=/computacao/historia-1960-1970)” (sistema de controle de gradientes de ângulos de giro); 1963 – Inspirada no Sketchpad, a GM desenvolve o DAC-1 (Design Augmented by Computer), precursor dos sistemas CAD (Computer Aided Design); 1966 – Ivan Sutherland, trabalhando para a Bell Helicopter Company, desenvolve o primeiro Head Mounted Display (HMD), um capacete que produzia um efeito estereoscópico através de duas imagens em monitores projetadas diretamente sobre os olhos e que, acoplado a uma câmera infravermelha, possibilitava a um piloto militar um pouso noturno em terreno desconhecido; 1967 - Rod Rougelet apresenta o primeiro simulador interativo de voo desenvolvido para a NASA; 1970 – a Xerox PARC (Palo Alto Research Center) inventa a interface grá�ica; 1972 – Alan Kay, trabalhando para a Xerox PARC, apresenta o protótipo de um computador pessoal (Alto computer) para o uso em ambiente de escritório; 1972 – Nolan Bushnell e Ted Dabney desenvolvem Pong, o primeiro videogame, e fundam a empresa Atari; 1973 – Ocorre a primeira conferência SIGGRAPH (International Conference on Computer Graphics and Interactive Techniques); 1979 – George Lucas funda a Lucasilm; 1980 – Disney usa CG em um �ilme pela primeira vez: TRON; 1980 – Dave Zeltzer (Fraunhofer Center for Research in Computer Graphics) desenvolve a animação SAS (Skeleton Animation System), que apresenta o movimento de um esqueleto articulado; http://pt.wikipedia.org/wiki/John_Eckert http://pt.wikipedia.org/wiki/John_Mauchly http://www.um.pro.br/index.php?c=/computacao/historia-1960-1970 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluEx… 7/38 O pipeline 3D é similar ao pipeline 2D, com a diferença de que devem ser de�inidos a câmera sintética (ou virtual) e o tipo de projeção utilizado para a geração da imagem (ver �igura a seguir). Ressaltamos também que os pontos dos objetos são expressos a partir de três coordenadas . 1983 – ILM (Industrial Light& Magic), uma das subdivisões da Lucas�ilm, utiliza CG no �ilme “Star Trek II - The Wrath of Khan”; 1984 – Lucas�ilm apresenta “As aventuras de André & Wally B. (http://www.um.pro.br/index.php?c=/computacao/historia-1980-1990)”, desenho animado de curta duração criado totalmente por computador exibido no Festival Internacional de Animação em Toronto; 1986 – "Luxo Jr." foi o primeiro curta animado por computador, da Pixar Animation Studios (http://pt.wikipedia.org/wiki/Pixar_Animation_Studios), a receber uma indicação ao Oscar de Melhor Curta Animado; 1987 – Criação do padrão VGA (Video Graphics Array) pela IBM; 1992 – Surge a biblioteca grá�ica de programação OpenGL (Open Graphics Library) proposta pela SGI (Silicon Graphics, Inc.); 1995 – A Pixar produz Toy Story, o primeiro �ilme longa metragem totalmente animado por computador; 1995 – A Sony lança o Playstation; 1996 – id Software lança o jogo Quake; 1998 – A Pixar ganha o Oscar de Melhor Curta De Animação com “Geri’s Game”. http://www.um.pro.br/index.php?c=/computacao/historia-1980-1990 http://pt.wikipedia.org/wiki/Pixar_Animation_Studios 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluEx… 8/38 Tanto o pipeline de visualização 2D quanto o pipeline de visualização 3D são implementados por sistemas grá�icos interativos, os quais são abordados na próxima subseção. 1.1.2 Sistemas Gráficos Interativos Um sistema grá�ico interativo (SGI) tradicional é responsável por percorrer a estrutura de dados que descreve um objeto e gerar a imagem deste utilizando funções da API (application programming interface) grá�ica. O processamento grá�ico é decomposto em diversas atividades representadas por etapas ou estágios funcionais. Cada uma destas etapas é implementada por um ou mais estágios correspondentes no hardware grá�ico. A aplicação, responsável pelo envio de comandos a serem executados pelos demais estágios do pipeline grá�ico, roda no processador central da estação de trabalho ou unidade central de processamento (CPU). Os demais estágios são implementados por uma unidade de processamento especializada, a unidade de processamento grá�ico (GPU). O subsistema de processamento grá�ico nos computadores pessoais modernos tem evoluı́do em velocidade mais acelerada do que a evolução das CPUs. O subsistema grá�ico é composto por uma placa de expansão (placa de vı́deo) que conecta com o sistema através de barramentos PCI, AGP ou PCI-Express. A GPU situa-se na placa de vı́deo e também é referenciada por VPU (Unidade de Processamento Visual). As imagens geradas pelo sistema grá�ico são armazenadas em espaços de memória denominado buffers. Figura 2 - Pipeline 3D. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluEx… 9/38 1.1.3 OpenGL OpenGL (Open Graphics Library) é uma API destinada às funções de saı́da (exibição) 2D e 3D que deve ser usada juntamente a alguma linguagem de programação (C, C++, Java, Objetc Pascal/Delphi, entre outras). OpenGL é formada por três outras bibliotecas, a saber: a GL (Graphics Library), responsável pelas primitivas geométricas e grá�icas e pelo controle de atributos; a GLU (Graphics Utility Library), que fornece funções para a criação de objetos mais complexos; e a GLUT (GL Utility Toolkit), responsável pelas funções para comunicação com sistema de janelas. A GL, a GLU e a GLUT são disponibilizadas para diferentes sistemas operacionais, em pacotes especı́�icos e podem ser obtidos através de vários sites devido à larga aplicação desta API. 1.2 Representação 2D 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, para tanto, devemos de�inir se a visualização do mesmo se dará no espaço bi (2D) ou 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) (ver �igura a seguir). Como vemos na �igura anterior, 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 2D pelos eixos e no espaço 3D pelos eixos . 1.2.1 Sistema de Coordenadas 2D No espaço 2D, o objeto é de�inido no plano do SRU (coordenadas ). Para tanto, informações sobre a topologia (de�inição de arestas e faces que ligam os vértices) e sobre a geometria (localização dos elementos topológicos no espaço) devem ser especi�icadas (ver �igura a seguir). Figura 3 - Sistemas de coordenadas cartesianas: (a) espaço 2D; (b) espaço 3D. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 10/38 Além do SRU, pode-se de�inir uma entidade em função do seu próprio sistema de referência – o sistema de referência do objeto (SRO). Além do SRU, pode-se de�inir uma entidade em função do seu próprio sistema de referência – o sistema de referência do objeto (SRO). Figura 4 - Sistema de referência do objeto. Fonte: Elaborado pelo autor, 2019. Figura 5 - Sistema de referência do objeto. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 11/38 OpenGL disponibiliza primitivas geométricas básicas, como pontos, retas, triângulos, quadrados e polı́gonos. Tais primitivas são agrupamentos de vértices e especi�icadas em função do seu tipo, do número de vértices e do tipo de dado. 1.2.2 tColisão O conceito de colisão 2D no espaço está relacionado a desenvolver um método de identi�icar se a posição de dois objetos no espaço 2D coincide, principalmente quando estes são animados por transformações geométricas. Desta forma, compara-se as coordenadas de cada vértice de um objeto com as coordenadas x e y de outro objeto, de modo a analisar suas posições no espaço 2D. VOCÊ QUER VER? O vıd́eo a seguir aborda a detecção de colisão entre objetos 2D usando a linguagem C++ com a biblioteca grá�ica Allegro, voltada ao desenvolvimento de jogos simples. Acesse: https://www.youtube.com/watch?v=prJXXSz-tkw (https://www.youtube.com/watch? v=prJXXSz-tkw) 1.3 Transformações Geométricas 2D Após a modelagem geométrica do objeto e da de�inição de seus atributos, este deve ser instanciado e, para tanto, transformações geométricas são aplicadas. São estas que permitem a animação de objetos a partir da de�inição de movimentos, giros, saltos etc. As transformações geométricas alteram os vértices dos objetos e mantém as arestas, ou seja, altera sua geometria mantendo a topologia. Das transformações existentes, três principais serão abordadas neste capı́tulo. Clique nos itens e veja quais são elas. Translação • https://www.youtube.com/watch?v=prJXXSz-tkw 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 12/38 Rotação Escala Para tanto, será realizada uma revisão de alguns conceitos de álgebra linear. 1.3.1 Translação A translação no espaço 2D permite a movimentação do objeto, no SRU, nos sentidos dos eixos cartesianos x e y. Para tanto, as coordenadas do objeto devem ser incrementadas(se a direção é positiva) ou decrementadas (se a direção é negativa) de acordo com fatores de translação para x e y. Para efetuar a translação de um vértice V para uma posição , devemos adicionar às suas coordenadas do mesmo o fator t de translação desejado (Equação 1). Equação 1 No exemplo da �igura a seguir, foi aplicada a translação aos vértices do objeto V1, V2 e V2 obtendo-se, assim, os novos vértices . • • Figura 6 - Exemplo de translação aplicada a um objeto no espaço 2D. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 13/38 Em um jogo digital, a movimentação de um objeto do cenário é realizada através da transformação geométrica de translação. No entanto, a maioria das game engines encapsula tais cálculos, que não são visı́veis para o usuário. 1.3.2 Escala Para aplicar a transformação de escala sobre as coordenadas x e y de um objeto, é preciso de�inir um fator de escala e que será multiplicado pelas mesmas (Equação 2). Equação 2 No exemplo da próxima �igura, podemos observar o resultado do fator de escala aplicado às coordenadas dos vértices V1, V2 e V3 resultando no novo objeto formado pelos vértices . A escala, quando aplicada a um objeto que não se encontra na origem do SRU, gera uma translação involuntária. Figura 7 - Exemplo de escala aplicada a um objeto no espaço 2D. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 14/38 Para que tal fato não ocorra, deve-se de�inir um ponto do objeto em torno do qual se deseja aplicar a escala e, então, calcular a translação necessária para levá-lo para a origem. Uma vez calculada tal translação, aplica-se a mesma às coordenadas dos vértices do objeto de modo a transladá-lo para a origem. Por exemplo, a �igura a seguir apresenta a escala sobre o objeto da �igura anterior (“Escala com translação involuntária”) tomando-se por base o ponto central do mesmo: P(1.5, 1.5). A translação necessária para levá- lo para a origem é de . Aplicando-se t aos vértices V1, V2, V3 e V4, obtém-se o objeto transladado para a origem, com seu vértice central coincidindo com esta. A seguir, aplica-se a escala sobre todos os vértices do objeto e translada-o novamente para a posição original com a translação . Figura 8 - Escala com translação involuntária. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 15/38 A seguir, veremos sobre rotação. 1.3.3 Rotação A rotação de um objeto no espaço 2D pode ser positiva (sentido anti-horário) ou negativa (sentido horário). Assim, para efetuar a rotação de um vértice para uma posição , deve-se de�inir o ângulo desejado, bem como o sinal deste, e aplicar as equações 3 e 4 sobre as coordenadas de . Equação 3 Equação 4 A �igura a seguir apresenta um exemplo de rotação, com º aplicado aos vértices V1, V2 e V3 do objeto triângulo. Figura 9 - Escala relativa a um ponto do objeto: (a), (b), (c) e (d) apresentam, respectivamente, as etapas de realização da escala. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 16/38 As Equações 2 e 3, apresentadas anteriormente, são de�inidas em função do seno e do cosseno do ângulo . A exemplo da operação de escala, quando se deseja aplicar a rotação sobre o objeto em relação a um determinado ponto P deste, deve-se calcular a translação necessária para levar tal ponto à origem do SRU. A seguir, aplica-se a rotação desejada e, então, translada-se o objeto novamente para sua posição original em relação ao ponto P. A �igura a seguir ilustra tal operação. Figura 10 - Exemplo de rotação aplicada a um objeto no espaço 2D. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 17/38 Em um jogo digital, a rotação de um objeto em torno do seu eixo ou do eixo de outro objeto do cenário é realizada através da transformação geométrica de rotação. No entanto, tal como ocorre com a translação e com a escala, a maioria das game engines encapsula tais cálculos, que não são visı́veis para o usuário. 1.3.4 Representação Matricial 2D Nos exemplos de translação, escala e rotação apresentados, notamos que tais operações devem ser aplicadas a cada vértice do objeto separadamente. Tais operações podem ser realizadas, também, através da manipulação de matrizes e, para tanto, os vértices do objeto devem ser agrupados em uma matriz bem como cada uma das transformações geométricas. A �im de exempli�icar a operação de translação por manipulação de matrizes, toma-se por base um objeto formado por três vértices V1, V2 e V3. O primeiro passo é expressar seus vértices em forma de matriz (matriz O) e o fator de translação como uma matriz linha (matriz T). A seguir, realiza-se a soma entre as matrizes, resultando na matriz como pode ser observado na Equação 5. Figura 11 - Rotação relativa a um ponto do objeto: (a), (b), (c) e (d) apresentam, respectivamente, as etapas de realização da rotação. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 18/38 O + =O’ Equação 5 Da mesma forma, a operação de escala também pode ser representada por uma matriz E, como pode ser observado na Equação 6 (exemplo para três vértices V1, V2 e V3 de um objeto). O =O’ Equação 6 A realização da operação de rotação através da manipulação de matrizes deve ser realizada tal como é apresentado na Equação 7. O =O’ Equação 7 Anteriormente, vimos que a escala e a rotação em torno de um ponto qualquer precisa utilizar operações de translação. Tal fato prejudica a e�iciência do processo de visualização no sistema grá�ico, uma vez que aumenta a complexidade da realização de transformações geométricas. A �im de atenuar tal processo, utiliza-se a multiplicação matricial, a qual permite a concatenação de mais de uma operação em uma única matriz. Para tanto, nota-se que as operações de escala e rotação já são realizadas através de multiplicação matricial; porém, a translação constitui-se de uma operação de soma, fato que não permite sua combinação com a escala e com a rotação. Pode-se, contudo, reformular a matriz de translação a �im de realizar tal operação através de multiplicação matricial. No entanto, esta reformulação necessita da utilização do conceito de coordenadas homogêneas, de modo a permitir a multiplicação das coordenadas dos vértices do objeto pela matriz de translação gerando, assim, a mesma transformação obtida através da soma apresentada na Equação 5. No espaço 2D, os vértices do objeto são expressos através de suas coordenadas x e y. O sistema de coordenadas homogêneas, por sua vez, utiliza três valores para representar um vértice: ou . A transformação do sistema homogêneo para o sistema cartesiano se dá através da relação expressa na Equação 8. Equação 8 Assim, a matriz responsável por realizar a translação através de multiplicação matricial pode ser observada na Equação 9. Equação 9 Porém, para que tal matriz possa ser aplicada ao objeto expresso em coordenadas homogêneas, é necessário aumentar a mesma apartir da inclusão de uma coluna à direita, transformando-a em matriz canônica. A Equação 10 apresenta um exemplo de aplicação desta matriz sobre um objeto formado pelos vértices V1, V2 e V3 expressos em coordenadas homogêneas. Equação 10 Devido ao aumento da matriz de translação, para que as matrizes de escala e de rotação possam ser concatenadas à mesma, é necessário aumentar estas também. Assim, as matrizes canônicas de escala e de rotação podem ser observadas, respectivamente, nas Equações 11 e 12. A partir das matrizes canônicas apresentadas, as operações de escala e rotação em torno de um ponto P qualquer a partir da concatenação destas com a matriz canônica de translação. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 19/38 Assim, a Equação 13 apresenta a matriz responsável por concatenar as transformações de translação do objeto para a origem , de escala E e de translação de volta para a posição original . • = Equação 13 A Equação 14 traz a concatenação das transformações de translação do objeto para a origem , de rotação R e de translação de volta para a posição original a �im de formar a matriz responsável pela rotação do objeto em torno de um determinado ponto. • = Equação 14 Em OpenGL, as transformações geométricas são realizadas através de multiplicação matricial. OpenGL empilha as chamadas das transformações geométricas e as chamadas de desenho na “ModelView”, de acordo com a ordem das chamadas dentro da rotina passada para a função “glutDisplayFunc” (nos exemplos, a rotina “DesenhaCena”). O quadro a seguir apresenta um exemplo de código para desenho de três quadrados. Em tal código, a exemplo dos demais códigos apresentados, a rotina “DesenhaCena” é a responsável pela de�inição da cena, a ser exibida na imagem �inal, e é nela que foram inseridas as chamadas das transformações geométricas. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 20/38 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 21/38 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 22/38 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 23/38 A �igura a seguir, por sua vez, traz a imagem gerada pelo código do quadro anterior. A ordem de chamada das funções dentro da “DesenhaCena” de�ine o modo como os objetos serão exibidos. No código do quadro anterior (“Código de um programa OpenGL para desenho de três quadrados utilizando transformações geométricas”), o quadrado 3 (verde) sofre todas as transformações chamadas antes de sua exibição: escala, rotação e duas translações. Já o objeto 2 (azul) sofre apenas uma translação (a de ) enquanto o objeto 1 (vermelho) não sofre transformações, uma vez que não há nenhuma chamada antes da sua função de desenho em meio ao código. Todas as chamadas de desenho e de transformações listadas no código anterior são empilhadas e, somente após do empilhamento de todas estas, a cena será gerada com a aplicação da matriz “ModelView”. A �igura a seguir apresenta a imagem resultante do código do quadro anterior (“Código de um programa OpenGL para desenho de três quadrados utilizando transformações geométricas”). Quadro 1 - Código de um programa OpenGL para desenho de três quadrados utilizando transformações geométricas. Fonte: Elaborado pelo autor, 2019. Figura 12 - Imagem gerada pelo código apresentado no Quadro 3. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 24/38 No entanto, podemos desejar isolar as transformações entre os objetos da cena, de modo que as transformações de uma não inter�iram no outro (como ocorre com o objeto 3 que, como o objeto 2, também sofre a translação de ). Para tanto, OpenGL possui duas funções especiais – a “glPushMatrix” e a “glPopMatrix” – encarregadas de empilhar e desempilhar transformações na matriz corrente (“ModelView”), respectivamente. Observe o código anterior alterado com a inclusão das funções “glPushMatrix” e “glPopMatrix” no quadro a seguir. Figura 13 - Ordem de desenho da cena referente ao código do Quadro 3. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 25/38 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 26/38 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 27/38 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 28/38 A seguir, a �igura apresenta a imagem gerada pelo código do quadro anterior. Após a aplicação de transformações geométricas sobre objetos de uma cena grá�ica, passa-se para a etapa de recorte, onde é de�inida que parte da cena será exibida na imagem. A próxima seção apresenta os aspectos da etapa de recorte. Quadro 2 - Código do quadro anterior com a inclusão das funções “glPushMatrix” e “glPopMatrix”. Fonte: Elaborado pelo autor, 2019. Figura 14 - Imagem gerada pelo código apresentado no quadro anterior. Fonte: Elaborado pelo autor, 2019. 1.4 Recorte 2D Após a realização da modelagem geométrica de um objeto e do instanciamento deste, é necessário de�inir a região da cena que será exibida na imagem �inal. Para tanto, conceitos de recorte 2D e de mapeamento de imagem, no SRU, para coordenadas de tela devem ser aplicados. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 29/38 Neste sentido, esta seção aborda relação “viewport x janela de exibição x tela do dispositivo grá�ico” e traz exemplos e conceitos implementados com a biblioteca grá�ica OpenGL. Já no espaço 3D, esses conceitos estão relacionados à de�inição de projeções e câmera. 1.4.1 Recorte 2D e Exibição da Imagem O processo de recorte 2D, ou clipping, visa a de�inir a área do SRU que será visı́vel na imagem �inal. Para tanto, é preciso de�inir uma janela de recorte tal como exempli�icado na �igura a seguir. VOCÊ QUER LER? A leitura dos capıt́ulos 1 e 2 (2.1 e 2.2) do livro “Introduction to Computer Graphics” (ECK, 2018) reforça a apresentação dos conteúdos apresentados nesta unidade. Acesse: http://math.hws.edu/eck/cs424/downloads/graphicsbook-linked.pdf (http://math.hws.edu/eck/cs424/downloads/graphicsbook-linked.pdf ). http://math.hws.edu/eck/cs424/downloads/graphicsbook-linked.pdf 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 30/38 Assim que a porção visı́vel do SRU é de�inida através do recorte, esta deve ser mapeada para a imagem e, para tanto, as dimensões da imagem devem ser especi�icadas cuidando a relação entre recorte eimagem. O recorte aplica procedimentos especı́�icos para o recorte de pontos, retas e ou polı́gonos (ver �igura a seguir). Figura 15 - Exemplo de recorte 2D. Fonte: Elaborado pelo autor, 2019. Figura 16 - Diferentes tipos de recorte 2D: (a) Pontos; (b) Retas; (c) Polı́gonos. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 31/38 Após a delimitação da região visı́vel do SRU pelo recorte, devemos realizar a conversão vetorial-matricial, em que são de�inidos quais pixels da imagem �inal devem ser “pintados”, de modo a exibir os objetos modelados. Algoritmos clássicos da Computação Grá�ica para recorte e conversão vetorial-matricial não serão descritos neste material, mas recomenda-se a sua leitura a �im da obtenção de informações sobre o processo. Ao exibir um objeto 2D em OpenGL, por default, é exibido por inteiro se os valores de suas coordenadas "x" e "y" não ultrapassarem 1 ou -1, considerando que a origem do SRU se encontra no centro da janela, do contrário, é realizado um recorte pelo sistema. No entanto, tais aspectos podem ser alterados através do uso da função "gluOrtho2D", que permite de�inir a área visı́vel do SRU na imagem �inal. O quadro a seguir traz um exemplo de código usando tais conceitos de recorte 2D enquanto a �igura a seguir (“Imagem gerada pelo código do quadro Código exempli�icando o uso da “gluOrtho2D") apresenta a imagem gerada por este código. Pode-se notar que a "gluOrtho2D" está recebendo como parâmetros valores entre -1 e 1, os quais não farão diferença à cena caso tal função seja retirada pois são os valores default de recorte do OpenGL. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 32/38 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 33/38 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 34/38 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 35/38 Quando são aplicadas transformações geométricas aos objetos da cena, deve-se chamar novamente as funções "glMatrixMode" e "glLoadIdentity", após a de�inição da função "gluOrtho2D”, passando "GL_MODELVIEW" como parâmetro para a primeira. Isso é necessário em função da necessidade de preparar o ambiente para a alteração das coordenadas dos vértices do objeto pelas transformações. Além do recorte realizado com a função "gluOrtho2D", outra função é oferecida pela OpenGL relacionada ao recorte – a “glViewport” (melhor detalhada na próxima seção). Viewport é o conceito para a região, dentro da janela de exibição, em que a imagem será visualizada (ver �igura a seguir). Como podemos observar, é possı́vel a exibição de mais de uma viewport em uma mesma janela de exibição. 1.4.2 Relação Viewport x Janela de Exibição x Tela do Dispositivo Gráfico Quadro 3 - Código exempli�icando o uso da “gluOrtho2D". Fonte: Elaborado pelo autor, 2019. Figura 17 - Janela de recorte, viewport e janela de exibição. Fonte: Elaborado pelo autor, 2019. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 36/38 Além dos sistemas de referência do universo (SRU) e do objeto (SRO), um terceiro sistema deve ser considerado na exibição de uma imagem – o sistema de referência da tela (SRT) do dispositivo grá�ico -, de�inido em termos de pixels e cuja origem está posicionada no canto superior esquerdo. Neste sentido, a janela de exibição OpenGL mede, por default, 300 x 300 pixels em relação ao SRT, sendo posicionada na origem do mesmo (ver �igura a seguir). VOCÊ O CONHECE? Nolan Bushnell e Ted Dabney fundaram a Atari no inıćio dos anos 70 e lançaram o jogo Pong, o qual rapidamente se tornou um sucesso, representando a primeira máquina de videogame arcade comercialmente bem-sucedida, a qual auxiliou no estabelecimento da indústria de videogames. 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 37/38 A de�inição da viewport, por sua vez, é realizada em relação às coordenadas da janela de exibição OpenGL (em pixels), que possui origem no canto inferior esquerdo. Se a viewport não for de�inida, seus valores coincidem com os valores da janela de exibição. Figura 18 - Relação Janela de Exibição OpenGL x Tela do Dispositivo Grá�ico. Fonte: Elaborado pelo autor, 2019. 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 2D. Nesta unidade, você teve a oportunidade de: trabalhar conceitos Sistemas Gráficos Interativos; trabalhar conceitos Modelagem geométrica 2D; trabalhar conceitos Transformações geométricas 3D; trabalhar conceitos Recorte. • • • • 03/04/2023, 21:04 Matemática e Física Aplicada a Jogos https://student.ulife.com.br/ContentPlayer/Index?lc=gTaMjssRS5yNljuISRh7RA%3d%3d&l=hiTFLRrvYPpmNqfh9fVFgw%3d%3d&cd=Iu%2fluE… 38/38 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. AZEVEDO, E. Computação Grá�ica. São Paulo: Campus, 2003. BOURG, D. M.; BYWALEC, B. Physics for Game Developers: Science, math, and code for realistic effects. Newton: O'Reilly Media, 2013. COHEN, M.; MANSSOUR, I. H. OpenGL: uma abordagem prática e objetiva. São Paulo: Novatec, 2006. ECK, D. J. Introduction to Computer Graphics. 1.2 ed. Geneva: Addison-Wesley Professional, 2018. FOLEY, J. et al. Computer Graphics – Principles and Practice. São Paulo: Addison-Wesley, 1990. GOMES, J. Fundamentos da Computação Grá�ica. Brası́lia: IMPA, 2008. HILL JR., F. S. Computer Graphics using OpenGL (http://www.prenhall.com/hill/). 2. ed. Nova Jersey: Prentice- Hall, 2001. OPENGL. The Industry's Foundation for High Performance Graphics. Disponı́vel em: www.opengl.org (http://www.blender.org). Acesso em: 26 set. 2019. SHREINER, D.; WOO, M.; NEIDER, J.; DAVIS, T. OpenGL Programming Guide. 4. ed. São Paulo: Addison- Wesley, 2004. SILVA, I. C. S. Aprendendo computação grá�ica com OpenGL e Blender. Porto Alegre: UniRitter, 2007. WATT, A. 3D Computer Graphics. 3. ed. São Paulo: Addison-Wesley, 2000. WIEDERMANN, J. Animation Now! Colonia: Taschen, 2004. http://www.prenhall.com/hill/ http://www.blender.org/
Compartilhar