Animações com deformações na CryEngine 3: Soft Bodies

As animações baseadas em física são de grande importânica para o ecossistema de softwares especializados em gerar animação, mas para o mercado de jogos e animações interativas eles representam um dos pilares fundamentais  da criação. Já imaginou expremientar um jogo moderno sem a aplicação de física como gravidade e colisões? As tecnologias das chamadas engines 3d que executam a parte gráfica da animação evoluiram bastante ao longo dos últimos anos, mas muito desse avanço acabou sendo direcionado para a parte de render, texturas e iluminação. É claro que tivemos avanços na parte de física e dinâmica, mas ainda existe muito espaço para avançar.

Essa semana foi publicado um vídeo com a demonstração da implementação da engine de física chamada Beam soft-body physics na poderosa CryEngine 3, e pelo nome você já pode imaginar que o vídeo trata de soft bodies . O que isso significa? A maioria das engines suporta o uso de rigid bodies de maneira razoavelmente satisfatória.

Então podemos detectar colisões e gerar movimento por meio de reações entre dois objetos diferentes. Mas, esses objetos dificilmente sofriam danos com base nesse tipo de im pacto. Com o uso dos soft bodies, poderemos configurar dentro desse tipo de simulação a deformação das superfícies! O vídeo abaixo mostra uma das situações em que o uso de soft bodies pode ajudar de maneira significativa a melhorar a experiência, jogos de carro!

No vídeo podemos perceber como o impacto dos carros em obstáculos acaba causando deformações progressivas no modelo 3d, deixando a experiência de dirigir o veículo e causar acidentes muito mais realista! Claro que esse tipo de recurso exige mais do hardware usado para executar a simulação, mas a maioria das placas de vídeo e processadores possuem os recursos necessários para criar esse tipo de efeito sem grandes problemas.

O segredo para esse tipo de efeito está no software, e nesse caso a união da CryEngine 3 com a Beam soft-body physics criada por Pierre-Michel Ricordel para um jogo chamado Rigs of Rods. Agora é só aguardar a disseminação desse tipo de engine, para que possamos encontrar soluções semelhantes em outras engines e jogos.

Parece que agora teremos que realmete dirigir com cuidado em jogos.

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.

Apresentação sobre o futuro da computação gráfica para jogos

Entre os diversos motivos e razões que levam a industria a trabalhar com ênfase no desenvolvimento de soluções cada vez mais poderosas para hardware em computação gráfica, é o mercado de jogos eletrônicos. Esse é um ambiente que já supera em cifras o mercado de cinema e publicitário de longe, e acelera a criação de sistemas e hardware baseado em centenas de núcleos de processamento como é o caso das GPUs modernas. Para quem é simplesmente usuário de computadores ou “Gamer”, basta conhecer as especificações de hardware dos jogos e aplicativos que você pretende executar, e comparar com as da sua placa de vídeo.

Mas, para os que pretendem estudar e desenvolver material para a área como é o caso dos acadêmicos e profissionais especializados, sempre é importante conhecer o funcionamento em detalhes dessas ferramentas e peças de hardware. Uma das fontes de informação para esse tipo de conteúdo são as apresentações que empresas de software ou hardware realizam ao longo do ano, e para a nossa alegria disponibilizam o material usado para consulta gratuita.

Esse foi o caso de uma apresentação da CryTek sobre o desenvolvimento da sua última Engine 3D chamada de CryEngine 2 e também do que podemos esperar para a CryEngine 3. A apresentação foi realizada na conferência de gráficos com alta performance de 2010. O material usado na apresentação pode ser copiado nesse endereço no formato PPT.

cryengine-3-slides-download.jpg

O material mostra o desenvolvimento da CryEngine nos últimos anos e lista alguns dados interessantes como a quantidade de pessoas envolvidas no projeto, e o tempo necessário para criar a última versão do software.

Do meio para o final da apresentação de slides é que encontramos o material que comenta os avanços e novidades previstas para a CryEngine 3. Entre esses avanços previstos para a CryEngine 3 temos o crescente suporte a cada vez mais GPUs e a renderização de jogos no lado do servidor. Isso seria fantástico, mas fica a dúvida: qual o poder de processamento de um servidor que fosse capaz de suportar as sofisticadas engines gráficas? Ainda mais com centenas de jogadores pendurados no mesmo servidor?

Fora isso, temos uma boa lista de técnicas e efeitos de renderização que vemos em softwares sofisticados, mas que não estavam presentes em engines gráficas para jogos.

Se você é acadêmico e pensa em realizar o seu trabalho de conclusão de curso na área de computação gráfica, esse material deve ajudar de maneira significativa na sua pesquisa. É interessante conferir as outras apresentações realizadas na High Performance Graphics 2010, que devo comentar ainda essa semana aqui no blog.

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.