• Nenhum resultado encontrado

3.2 Computação Gráfica

3.2.2 Limitações e Soluções

Recuando um pouco no tempo, grande parte dos monitores produzidos antes do novo milénio possuíam um número muito reduzido de pixéis. Essa baixa resolução de pixéis foi das primeiras limitações que os designers de videojogos tiveram de enfrentar. O criador do Super Mario, Shigeru Miyamoto diz que as famosas características desse icone dos videojogos foram-lhe impostas pelas limitações da altura. No documentário de videojogos Thumb Candy de 2000, Miyamoto descreve algumas dessas limitações: ―Mario wears a hat because I couldn’t do his hair move realistically; he’s got a moustache to hide his mouth, because I couldn’t draw the mouth properly.‖ (Lee, 2000)

Figura 3.33 À esquerda60 uma imagem de Space Invaders (Taito, 1978), à direita61 a versão do Super Mario usado no jogo Super Mario Bros (Nintendo, 1985)

Os criadores de jogos sempre tiveram que se adaptar às limitações da tecnologia. Hoje em dia facilmente se encontra um monitor com uma resolução superior a 1 milhão de pixéis, mas mesmo assim são necessários filtros especiais para suavizar o efeito de escada inerente a uma grelha quadriculada. Esse efeito de escada é chamado de aliasing e os filtros de anti- aliasing suavizam principalmente as linhas diagonais nas bordas dos objectos ao gerar um efeito gradiente de cor.

60 Imagem retirada de [2-09-2012]: http://www.youremgn.com/550/space-invaders-video-game-hitting-cinemas/ 61 Imagem retirada de [2-09-2012]: http://www.1up.com/boards/posts/list/53874.page

Figura 3.34 – Exemplos62 do efeito anti-aliasing em gráficos de computador.

Mesmo que o número de pixéis já não seja a limitação tão grande que era há alguns anos atrás, ainda existem outras limitações que obrigam os artistas de CGI a pensar em estratégias inovadoras para atingir o máximo de realismo. Possivelmente a maior limitação seja ainda o número de polígonos que um computador consegue processar a cada momento. Um jogo moderno a correr num computador ou consola actual consegue lidar com cerca de 300 milhões de polígonos por segundo. (Chubb, 2007)

À primeira vista pode parecer um número elevado, mas em apenas um segundo o computador tem de gerar pelo menos 30 imagens. Na realidade existe um grande número de jogadores que exigem não menos que 60 frames por segundo para garantirem uma experiência fluida. Fazendo as contas, o computador gera 5 milhões de polígonos por frame, só que nem toda a capacidade de processamento é focado na geração de polígonos, é igualmente necessário lidar com os mapas de texturas, o som e a inteligência artificial dos personagens. Mesmo com esses 5 milhões de polígonos é um desafio tentar simular a minúcia de detalhe que existe no mundo real. Basta observar o relevo existente nas rugas da pele humana para ver como rapidamente esgotamos o nosso orçamento de polígonos se tentarmos atingir esse nível de detalhe.

Contudo vemos frequentemente jogos modernos a atingirem níveis de realismo surpreendentes. Isto é possível devido a um uso eficiente dos recursos disponíveis em conjunto com uma série de técnicas. Imaginemos novamente um orçamento de 5 milhões de polígonos por frame. Esse não é o número total de triângulos que dispomos para distribuir pelo cenário e personagens. O número total pode exceder os 5 milhões, mas não do ponto de vista da câmara do jogador.

O programa base que corre o jogo (o motor de jogo) vai a cada momento tentar exibir apenas aqueles polígonos que se encontram no campo de visão do jogador. Se o jogador se encontrar numa sala sem janelas, não é necessário para o motor calcular todo o mundo que existe no exterior. Apenas quando o jogador sair pela porta é que esses elementos serão carregados. Isto significa que dentro da sala pode-se utilizar grande parte do orçamento para dar maior detalhe aos móveis, por exemplo. Uma vez no exterior seria de esperar que o orçamento fosse facilmente ultrapassado devido à quantidade de objectos e terreno que se pode enquadrar no campo de visão. Devido a uma técnica chamada de LOD (Level of Detail) apenas aqueles objectos mais próximos da câmara irão exibir a totalidade do seu detalhe. Objectos mais distantes possuem menos triângulos e o motor aumenta e diminui a qualidade do objecto consoante nos aproximamos ou afastamos deles.

Figura 3.35 – Exemplo63 de níveis de detalhe diferentes para o mesmo objecto.

Na maior parte dos casos isto não acontece automaticamente. Normalmente os artistas precisam de modelar 3 versões diferentes de cada objecto. (Ingrassia, 2009, p. 69) Esta continua a ser das formas mais eficazes de distribuir o orçamento de polígonos mas tem a desvantagem de por vezes se notar os objectos a fazerem a transição de um modelo para outro. Isso pode quebrar o sentido de imersão do jogador.

No entanto continua a não ser suficiente para tratar do tipo de detalhe que ocorre à escala do centímetro ou milímetro. Durante muito tempo essa tarefa coube somente à textura de cor (diffuse color map). A limitação deste processo é que se trata de uma imagem 2D, por isso todo o detalhe fica espalmado na superfície do objecto.

63 Imagem retirada de [02-09-2012]:

Isso é mais evidente se observarmos a textura de perto e de certos ângulos. Neste caso efeitos como brilho e sombra são pintados directamente na textura, significando que independentemente do movimento das luzes no cenário, as sombras de detalhe do objecto irão manter-se fixas. A esta técnica chama-se de texture baking e continua a ser usada extensivamente devido à sua versatilidade. Se um objecto ou cenário mantêm-se sempre sobre as mesmas condições de iluminação, faz sentido fazer bake das sombras na própria textura, pois calcular sombras dinamicamente é um processo custoso para o motor.

Figura 3.36 – Exemplo64 de sombras pré-calculadas no jogo Mirror’s Edge (Dice, 2008)

Na figura anterior temos o exemplo de um jogo que faz isso mesmo. As sombras neste caso são pré-calculadas. Isto significa que computadores poderosos calcularam durante várias horas a acção da luz sobre o cenário utilizando um tipo de iluminação chamado de GI (global illumination). A GI simula o efeito que a luz tem nos objectos à medida que ressalta de umas superfícies para as outras. Uma vez concluído o cálculo as sombras são gravadas num ficheiro de imagem e sobrepostas em cima dos objectos (Ingrassia, 2009, pp. 316-318).

Figura 3.37 – Efeito da Global Illumination65.

64 Imagem retirada de [02-09-2012]: http://forums.overclockers.co.uk/showthread.php?p=15463486 65 Imagem retirada de [02-09-2012]: http://www.slideshare.net/DICEStudio/henrikgdc09-compat

Pode-se ver na figura anterior, no exemplo do lado direito como a luz ressaltou da parede vermelha para a parede branca adjacente, ganhando um tom avermelhado. Com esta técnica podemos atingir resultados fotorrealistas mas não é possível mover ou alterar a posição das luzes. Alguns motores de jogos mais avançados já conseguem simular esse efeito dinamicamente. Em termos de computação gráfica quando algo é chamado de dinâmico significa que pode ser manipulado pelo utilizador em tempo real. A expressão tempo real é extremamente relevante neste contexto pois é a qualidade que permitem aos videojogos serem interactivos. É o oposto de pré-calculado. O cálculo acontece a cada momento, 30 ou 60 vezes por segundo. Na realidade, esta é a distinção principal que separa o cinema de animação dos videojogos. A qualidade de imagem do cinema é superior porque cada imagem pode levar dias a ser gerada por super computadores. Os videojogos não dispõem desse luxo e frequentemente necessitam de fazer sacrifícios de qualidade para manter o número de imagens por segundo estável.

Contudo, dentro de um videojogo, nem todos os processos ocorrem em tempo real. Como já foi visto, existem sistemas de iluminação não dinâmicos. O efeito resulta bem maioritariamente em superfícies baças, mas não é capaz de reproduzir convincentemente materiais brilhantes ou reflectores. Isto porque na realidade os brilhos e reflexos alteram-se conforme o ponto de vista. Se o ponto de vista se mover e os brilhos se mantiverem fixos, vai transparecer a ideia de estarem pintados na superfície e traem as propriedades do material.

Uma vez mais, existem formas de contornar esse problema. Da mesma forma que se aplica uma textura de cor difusa num modelo, é possível aplicar uma segunda textura noutra camada que irá apenas ter em conta informação relativa aos brilhos. Chama-se a essa textura de specular map. Trata-se de uma imagem a preto e branco onde os tons mais claros indicam locais de maior reflectividade e tons mais escuros indicam locais mais baços. Isto possibilita distribuir heterogeneamente os níveis de brilho ao longo de uma superfície (Ingrassia, 2009, p. 316). Um bom exemplo para demonstrar a utilidade de um specular map seria num modelo do planeta Terra. A textura principal, o diffuse color map contém os continentes e oceanos mas apenas os oceanos devem reflectir o brilho do sol. Para isso basta que o specular map seja totalmente branco na zona dos oceanos e preto nos continentes.

Figura 3.38 – Specular Map e Diffuse Map (à esquerda66) e resultado no modelo 3D do planeta Terra (à direita67).

Um uso bastante comum para o specular map é o de definir as zonas mais oleosas da pele humana, particularmente do rosto. Também ajuda a definir a ideia de rugas na textura da pele, mas para que estas possuam um efeito de relevo vai ser necessário utilizar um terceiro tipo de mapa de imagem, um bump map. Esta foi a técnica que verdadeiramente possibilitou trazer níveis de detalhe minuciosos aos modelos sem necessidade de aumentar o número de polígonos.

Figura 3.39 – Demonstração68 da técnica de bump mapping utilizada no jogo Halo 2 (Bungie, 2004). O bump map também tem por base uma imagem a preto e branco. Neste caso a variação de cor irá definir o efeito de elevação ou depressão na superfície dos modelos. Assim é possível que as texturas ganhem um efeito de profundidade em tempo real.

66 Imagens legendadas pelo autor e retiradas de [9-02-2012]: http://planetpixelemporium.com/earth.html 67 Imagem retirada de [9-02-2012]: http://rainybrain.org/?p=131

É possível simular riscos e arranhões, superfícies irregulares, padrões complexos, orgânicos ou mecânicos (Ahearn, 2006, p. 67). O efeito é tão convincente que, quando começou a tornar-se popular alguns estúdios aproveitaram para reduzir o número de polígonos dos seus jogos.

Figura 3.40 – Comparação entre carro sem bump map (à esquerda69) do jogo Halo (Bungie, 2001) e do mesmo carro com bump map (à direita70) do jogo Halo 2 (Bungie, 2004)

Esta técnica é particularmente evidente em movimento pois a sua característica principal é ser capaz de se adaptar às condições de iluminação de forma dinâmica. É importante mencionar que hoje em dia esta tecnologia é mais conhecida por outro nome. Devido a alguns melhoramentos foi criada uma variante do bump map que utiliza todo o espectro de cor e não apenas tons de cinza. Chama-se normal map e produz resultados mais precisos que o bump map (Ahearn, 2006, p. 67).

Figura 3.41- Exemplo71 de um normal map.

69 Imagem retirada de [02-09-2012]: http://www.hollywood-diecast.com/warthog_large.jpg 70 Imagem retirada de [02-09-2012]: http://www.thegamingonline.com/Xbox/Screenshots/halo2.htm 71 Imagem criada pelo autor

A razão pela qual os bump maps e os normal maps são tão valiosos é porque reduzem consideravelmente a necessidade do uso de polígonos. Contudo esta técnica não passa de um truque convincente. De facto não existe profundidade real na textura, trata-se de uma combinação de algoritmos complexos que distorcem o modo como a luz incide sobre a superfície do polígono, tal como a técnica do gouraud shading mencionada no ponto 3.2.1 deste capítulo. A melhor forma de perceber que os normal maps de facto não estão a gerar profundidade real é observando a silhueta do objecto.

Figura 3.42 – Comparação72 entre o uso de bump map e de geometria real.

Podemos ver na imagem anterior como um bump map é capaz de simular a irregularidade da textura que lhe foi aplicada, mas deixa o formato esférico do modelo original intacto.

Existe ainda outra limitação inerente a todos os tipos de mapas de imagem que foram mencionados. Tanto o bump map como o specular map e o diffuse color map são ficheiros de imagem, e consequentemente a qualidade vai depender do tamanho destas. A resolução das imagens é medida pela sua largura em pixéis vezes a sua altura em pixéis. Geralmente esses números são múltiplos de dois. Alguns exemplos de resoluções comuns são 512x512, 1024x1024 e 2048x2048. Raramente se ultrapassam esses tamanhos por questões de memória e performance. Tal como para os polígonos, o orçamento de memória reservado para texturas é limitado e deve ser distribuído eficazmente. A melhor forma de poupar recursos é reutilizar as mesmas texturas tanto quanto possível. Para áreas extensas como terrenos existe uma técnica que permite utilizar uma grelha repetitiva da mesma textura para cobrir toda a extensão. Para que o efeito resulte essa textura precisa de se repetir de forma a que os seus pontos de contacto não sejam visíveis.

Figura 3.43 – Exemplos73 de texturas diferentes repetidas em grelhas de 4 por 4

No topo da imagem anterior temos dois exemplos de texturas que não repetem correctamente. Os limites dessas imagens não foram tratados de modo a tornar contínuo o padrão de repetição e os pontos de contacto tornam-se evidentes. No caso das duas texturas abaixo o padrão é muito menos evidente e estas repetem mais harmoniosamente. (Ahearn, 2006, pp. 129-130) Esta técnica de repetição de texturas é extremamente versátil para poupar recursos mas a estética do jogo pode sofrer se for usado em demasia ou incorrectamente.

Figura 3.44 – Terreno74 com padrão de repetição visível.

73 Imagem retirada do livro ―3D Game Textures‖ (Ahearn, 2006, p. 130)

A imagem anterior exemplifica bem como o acto de repetir a mesma textura numa grelha pode dar origem a padrões não naturais. É importante evitar texturas que possuam detalhes que saltem à vista, pois esses detalhes ao serem repetidos vão dar origem a padrões visíveis. É possível diminuir, mas não remover completamente o efeito de repetição, por isso é importante saber disfarçar bem a textura com outros elementos para quebrar o padrão. Existem muitas formas de fazer isso; misturando texturas de outro tipo em camadas diferentes, colocando vegetação sobre o terreno ou usando texturas especiais chamadas de decals. As texturas decal são imagens com transparência nas bordas e são projectadas por cima de outras texturas. Estas podem ser projectadas sobre qualquer superfície e são frequentemente usadas para simular o efeito de marcas de explosões ou manchas de sangue (Tracy & Tracy, 2011, p. 67).

Figura 3.45 – Decal75 projectado no solo para adicionar variação ao terreno.

De uma forma geral, as principais técnicas de texturização foram abordadas. Os melhores resultados são sempre obtidos através de uma mistura apropriada das ferramentas que temos disponíveis. Alguns mapas de imagem como os normal maps são mais dispendiosos que outros por isso é essencial saber utilizá-los com moderação.

É importante não esquecer que a indústria dos videojogos é das que mais rapidamente evolui tecnologicamente. Graças ao rápido avanço dos computadores sabemos que a cada momento o tecto de limitações está a subir e é possível ir mais longe. Faz sentido terminar este ponto olhando para o futuro e vendo uma técnica que já começa a surgir nos computadores mais potentes do mercado.

Trata-se de tessellation. Esta técnica usa o mesmo tipo de imagens de escala cinza que os bump maps usam. Ao contrário dos bump maps que apenas simulam o efeito de relevo, a tessellation gera polígonos em tempo real para abranger todo o detalhe necessário. É semelhante ao sistema LOD (level of detail) mas neste caso não existe substituição de modelos. Os polígonos são gerados pelo motor de jogo através da subdivisão do modelo original. Esta subdivisão torna-se maior quanto mais próxima for a distância da câmara. (Nvidia, s.d.)

Figura 3.46 – Exemplo76 do poder da técnica de tessellation.

Finalmente os videojogos vão poder ultrapassar a estética angular que os tem assombrado durante todos estes anos.

No próximo capítulo, onde será analisada a produção do projecto ―Twin Paradox‖, iremos ver como as técnicas aqui discutidas contribuíram para o desenvolvimento das estruturas geológicas presentes no jogo (especificamente no capítulo 4.2). Não só das técnicas relativas à computação gráfica mas também da ciência relativa à geologia analisada nos primeiros pontos deste capítulo.

76 Imagem retirada de [02-09-2012]: http://www.pcgameshardware.com/aid,698077/Unigine-Heaven-with- DirectX-11-Tessellation-Graphics-card-benchmarks-Top-article-of-October-2009/Practice/

4 Criar o Mundo de Twin Paradox

Este novo capítulo é inteiramente dedicado ao desenvolvimento do projecto final ―Twin Paradox‖. No total o projecto abarcou um período de cerca de 9 meses, de Setembro de 2011 a Maio de 2012. Este capítulo encontra-se dividido em 3 pontos distintos. Numa primeira parte será feito um aprofundamento da fase de pré-produção do projecto onde serão discutidos elementos como o argumento e storyboard. O ponto seguinte será o de maior relevância para o tema desta dissertação, onde será detalhada a execução técnica da construção dos cenários do jogo. Por fim o tema final deste capítulo incide sobre a realização do vídeo promocional de ―Twin Paradox‖ que inclui a fase de captação de movimentos para as personagens e toda a pós-produção.

Documentos relacionados