Novas tecnologias para gráficos em jogos 3d

A área de desenvolvimento de jogos 3d é uma das que mais consome material oriundo de softwares como 3ds max, Maya e Blender. O mercado consumidor de jogos é inclusive muito maior que o de cinema, em que muitas pessoas acabam mirando como objetivo profissional, quando a área de criação para jogos oferece muito mais oportunidade. Já existe até um movimento sério de estúdios de cinema, que contratam profissionais de jogos para gerar storyboards interativos, usando recursos de iluminação avançado para planejar melhor filmes e economizar dinheiro.

No final de fevereiro e começo de março foi realizada a edição 2011 da GDC (Game Developers Conferece), em que são apresentadas novidades e tendências na parte de tecnologia voltada para jogos. O espaço é usado por empresas para mostrar softwares que poderemos usar para gerar jogos, sendo que um dos destaques foi a apresentação da CryEngine 3. Para quem não conhece a CryEngine é uma das mais avançadas engines para jogos em termos gráficos, permitindo usar efeitos óticos avançados de iluminação e interação de elementos com o cenário. A versão 3 da engine mostra vários elementos que até pouco tempo atrás seriam inimagináveis para jogos que usam aceleração de hardware.

O vídeo abaixo é uma demonstração do que a CryEngine 3 pode fazer:

A qualidade das animações e elementos mostrados no vídeo é de impressionar, principalmente devido ao fato que tudo é baseado em render em tempo real, sem o uso de keyframes para realizar os movimentos. Isso significa dizer que poderíamos interagir com todos os elementos existentes no cenário.

A qualidade não muda muito quando mudamos para outra engine muito usada em projetos que demandam de gráficos avançados, como é o caso da Unreal Engine 3, que também ganhou um vídeo de demonstração na GDC 2011.

A única limitação para esse tipo de tecnologia para projetos de jogos envolve os requisitos de hardware necessários, principalmente para conseguir reproduzir gráficos com esse nível de qualidade. É complicado encontrar pessoas dispostas a investir pesado em placas gráficas para reproduzir jogos nessa qualidade. Os preços cobrados por essas placas aqui são proibitivos, devido a soma da nossa carga tributária e o rótulo de produto de luxo que essas placas adquirem. Em outros países é muito mais barato adquirir placas com poder de processamento suficiente para gerar esse tipo de gráfico.

Mas, quando mudamos o foco para aplicações profissionais a coisa muda de figura, e o retorno financeiro que podemos ter com o investimento em hardware e software assim pode ajudar bastante um pequeno projeto.

Quatro horas de tutoriais em vídeo sobre modelagem para arquitetura no 3ds Max

Na modelagem de objetos e cenários com objetivo de representar edificações ou ambientes para arquitetura, a técnica escolhida para criar os objetos é determinante para potencializar e acelerar a conclusão do projeto. Entre as diversas técnicas existentes para a modelagem, a que mais me agrada é a chamada Edge Modeling que é uma derivação da subdivisão, em que apenas as arestas dos modelos 3d são manipuladas. Isso permite maior controle sobre os modelos como um todo e ajuda na criação de objetos com precisão. A melhor maneira de aprender esse tipo de técnica é com muita prática e quando for possível, observar outro artista criando modelos 3d com a mesma técnica para encontrar as melhores soluções para problemas comuns de modelagem.

Caso você queira aprender um pouco mais sobre esse processo de modelagem 3d e ao mesmo tempo trabalhar com criação de modelos para jogos, acabei de encontrar um excelente tutorial em vídeo com mais de quatro horas de duração. No material, o artista cria um modelo 3d para ser usado na engine CryEngine que é a mesma usada no famoso jogo Crysis. O modelo escolhido deve fazer parte do cenário do jogo, sendo um pequeno prédio que é ao mesmo tempo simples e apresenta boa quantidade de detalhes para qualquer artista interessado em praticar.

O modelo desenvolvido pode ser conferido na imagem abaixo:

tutorial-modelagem-arquitetura-3ds-max.jpg

Os vídeos estão hospedados no Vimeo e podem ser copiados de outras fontes em resoluções maiores. O material não apresenta áudio, o que facilita muito para as pessoas que não gostam da narração em inglês nos tutoriais. As instruções são passadas em pequenas mensagens de texto que aparecem em determinados momentos do vídeo. Os links para assistir ao tutorial são os seguintes:

Na descrição dos vídeos em cada página do Vimeo é possível encontrar outras opções para download.

O primeiro vídeo mostra a construção do modelo 3d como um todo, em que o artista posiciona uma imagem de referência e cria a base para toda a modelagem das paredes e aberturas do prédio. Na segunda parte o mesmo modelo já mais completo é trabalhado na parte de texturas, em que podemos acompanhar o processo de mapeamento UV no 3ds Max e ajuste das texturas no Photoshop. O último vídeo mostra a exportação do modelo 3d com poucos polígonos para a CryEngine e a visualização do projeto em tempo real.

Esse tutorial é excelente para artistas interessados tanto em maquetes eletrônicas ou modelagem para jogos, pois aborta ambos os assuntos de maneira simples e detalhada. Como a maioria das técnicas pode ser reproduzida em outros softwares, os artistas 3d podem aproveitar o conhecimento e aplicar em outras ferramentas 3d.

Nova técnica para simular iluminação global na renderização em tempo real

Entre as diversas engines comerciais existentes no mercado para desenvolvedores de jogos, a que oferece as opções e visual mais realista é sem dúvida a CryEngine, usada no jogo Crysis. Essa engine consegue apresentar visuais que se assemelham em muito a renderizações usando iluminação global de ferramentas como o V-Ray e Mental Ray, sendo que o ambiente é um jogo com interação em tempo real. Para mostrar como essa engine está avançando para deixar esse tipo de aplicativo ainda mais realista, quando comparado com ferramentas de renderização tradicional, um artigo foi apresentado na Siggraph apresentando a técnica chamada de Light Propagation Volumes. Se você é estudante e se interessa pela parte teórica da computação gráfica, o material disponível para apresentar a técnica é um prato cheio!

Ao visitar o endereço indicado, será possível encontrar o artigo científico que explica em detalhes o funcionamento da técnica, a apresentação em formato PPT e vídeos com o uso dessa renderização em jogos.

artigo-computacao-grafica-3d-render-jogos.jpg

A técnica em si é bem engenhosa e se propõe a acelerar a primeira reflexão dos fótons, que acontece em renderizadores como o V-Ray, Mental Ray e outros. Essa reflexão geralmente é pré-computada e demanda muitos recursos do computador, o que torna inviável o seu uso em aplicativos como jogos. A técnica proposta pela Crytek e já implementada na CryEngine 3 resolve esse problema com o uso do Light Propagation Volumes. Se você acha que a técnica envolve apenas a iluminação difusa gerada pela primeira reflexão em superfícies irregulares, está enganado pois no mesmo artigo são apresentados alguns efeitos óticos possíveis de conseguir com a técnica, como reflexões borradas (Glossy reflections).

Os dois vídeos disponíveis para download são um pouco grandes em comparação com o tempo disponível de material em cada um deles, e mostra a aplicação de grandes quantidades fontes de luz em um ambiente e a demonstração da iluminação global no outro vídeo.

Mesmo que você não entenda o material apresentado na apresentação em PPT ou no artigo científico que está em inglês, e aborda muita matemática relacionada com a geração dessas imagens, ainda vale o download ao menos dos vídeos para que possamos ter uma idéia de como será num futuro breve, a renderização em tempo real na maioria dos softwares. Outro ponto interessante é que o artigo científico faz uma breve introdução teórica sobre a renderização em tempo real, que pode ser útil para quem está fazendo pesquisa na área.

Hoje a aplicação direta dessa tecnologia são os jogos, mas é provável que a mesma tecnologia seja usada para apresentar produtos e criar animações interativas também.

Renderizando para texturas no 3ds Max

Os avanços na representação e adição de efeitos usando técnicas bem próximas ao render em tempo real, usando o poder das GPUs mais atuais é inegável. Mas, assim como acontece com boa parte dos avanços tecnológicos, boa parte dos usuários de jogos e outros aplicativos 3d ainda não possuem em suas máquinas uma GeForce 9800 GTX. Por isso, mesmo com todo esse poder de processamento gráfico disponível, para elaborar cenários como os apresentados nesse concurso, produzido usando a CryEngine e que dá todo o realismo a jogos do tipo Crysis. Se você visitou o link indicado, não se espante, aquilo é um render em tempo real usando tecnologia para jogos 3D.

Existe um meio termo? Claro que sim! Uma boa prática no processo de desenvolvimento de cenários e outros elementos que devem ser usados para projetos de jogos, é renderizar informações importantes de iluminação diretamente nas texturas. O processo é conhecido como Baking e pode ser realizado em diversos softwares 3d. O tutorial abaixo, mostra como é possível usar o 3ds Max para modelar um cenário de jogo, com diversos elementos dispostos dentro de um ambiente fechado. O mesmo ambiente precisa ser exportado para edição no Gamestudio, e o artista explica todos os passos necessários para usar uma opção do 3ds Max chamada de Render to Texture.

Um ponto interessante do vídeo é que o renderizador usado para gerar as texturas e iluminação é o V-Ray, e não o scanline render padrão do 3ds Max. Para usar o V-Ray como renderizador, o autor recomenda que seja usada a câmera padrão do Max, para que não sejam geradas nenhum tipo de distorção na imagem.

Como funciona exatamente esse processo? No chamado Baking de texturas, o software vai projetar as luzes configuradas na cena e fazer com que os objetos 3d projetem sombra. Isso é gravado naquele momento em uma textura que já está aplicado ao modelo 3d, com as informações da sombra. Então teremos áreas do modelo 3d que ficam mais escuras e outras áreas mais claras. Assim que o processo termina, precisamos aplicar as novas texturas geradas pelo Render to texture nos objetos.

Depois de tudo feito, o autor exporta os modelos no formato FBX da Autodesk e importa o material no editor de modelor do Gamestudio e posteriormente no editor de cenários.

A vantagem desse tipo de ferramenta é que o aplicativo de renderização em tempo real, pode ser configurado para não calcular as sombras projetadas e recebidas por esses objetos. Assim, o desempenho do aplicativo 3d será muito melhor em computadores com poucos recursos de processamento na GPU.