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.

Quebrando modelos 3d no 3ds Max com Reactor e ProCutter

Os tutoriais e exercícios que envolvem a destruição ou explosão de objetos em 3d têm grande impacto nos animadores e artistas iniciantes, pois ao que parece esse tipo de interação com os objetos desperta muito interesse. Se você também gosta desse tipo de animação, deve saber que parte mais delicada na criação de qualquer tipo de animação que despedace objetos é a chamada fragmentação. Os objetos em 3d são construídos na maioria das vezes como um bloco único, ou vários blocos de tamanho médio. Para que uma animação simulando uma explosão possa ser realizada, o primeiro passo é trabalhar na fragmentação. No 3ds Max existe uma ferramenta especializada nesse tipo de tarefa que se chama ProCutter.

O uso do ProCutter e um sistema de interação baseado em física como o Reactor, pode gerar efeitos muito interessantes em animação, como a fragmentação de uma parede de tijolos que é atingida por algum tipo de projétil. O tutorial abaixo mostra exatamente os procedimentos para criar esse tipo de simulação em detalhes. Na verdade não é apenas um tutorial, mas quatro vídeos que são a seqüência de ações e passos necessários para modelar a parede, configurar a fragmentação e animar usando o Reactor.

Já no primeiro vídeo é possível entender a vantagem em usar o ProCutter, quando o artista cria um plano que serve como referência para a separação de um Box em dois objetos. O funcionamento e configuração do ProCutter é bem parecido com o Boolean. Para cortar um objeto é necessário apenas aplicar o ProCutter no modelo 3d e clicar no botão Pick Cutter Object, para escolher o objeto que deve cortar o modelo 3d.

Os dois primeiros vídeos abordam apenas o funcionamento do ProCutter e os procedimentos para segmentar o modelo 3d. Nos dois últimos vídeos é possível acompanhar a configuração de um Helper do Reactor chamado de Fracture, responsável pela animação dos segmentos do muro. Esse é um elemento do Reactor que ajuda a simular fragmentações em modelos 3d já divididos em pequenos pedaços. Os segmentos dos objetos se comportam de maneira idêntica a um Rigid Body, com detecção de colisões e reações a forças como a gravidade.

Esse é um excelente exemplo de animação interativa avançada no 3ds Max, pois usa diversos elementos e técnicas para simular movimentos de objetos que seriam difíceis de conseguir sem o uso do Reactor.

Análise do livro Blender Gamekit segunda edição

Depois de uma longa espera pela chegada da minha última compra na loja da fundação Blender, finalmente essa semana a minha cópia do Blender Gamekit segunda edição chegou. Só para que você tenha uma idéia, o pedido foi feito assim que o livro foi lançado, no final de dezembro. Ao que parece existe algum tipo de problema com encomendas enviadas para Recife, pois não é a primeira vez que esse tipo de coisa acontece. Conheço pessoas que moram em São Paulo e fizeram o pedido na mesma época e receberam o livro em até três semanas. Bem, mas o importante é que o pessoal da Fundação Blender prontamente detectou o problema e enviou outro livro. Apesar da demora, ainda continuo comprando material na loja deles, pois é uma das maneiras de financiar o Blender 3D.

Mas, como é o livro? Ainda não tive tempo de ler o material todo, mas posso dizer que é um excelente guia para quem já tem noções básicas de Blender e conhece um pouco de Python.

Blender Gamekit Segunda Edição

Digo isso pela maneira com que o material é organizado. O livro está organizado em três grandes blocos:

  1. Parte 1: Introdução ao desenvolvimento de jogos e o Blender 3D
  2. Parte 2: Tutoriais básicos, intermediários e avançados de criação de jogos no Blender
  3. Parte 3: Introdução e guia de referência sobre a Game Engine do Blender 3D

A parte que explica o funcionamento da Game Engine está no final do livro! Sim, antes mesmo de abordar o funcionamento da Game Engine e explicar o que são os blocos de lógica, o livro já parte direto para tutoriais e mistura conceitos básicos e avançados sobre criação de jogos.

Blender Gamekit Segunda Edição

Outro ponto que merece ser mencionado é o uso de scripts em Python ao longo do livro, pois em nenhum momento é feita introdução a programação. Por exemplo, para explicar alguns conceitos e funcionamento da Game Engine são dados exemplos de como é possível manipular propriedades com blocos de lógica e com Python. Se você nunca teve contato com linguagens de programação, talvez o material até seja um pouco desanimador.

De maneira geral o livro é muito bom, sendo bem explicativo na parte da Game Engine. Só o capítulo sobre as referências dos blocos de lógica já valem o preço dele. Mas, para pessoas sem experiência com o Blender e talvez Python, é bom ir com calma. Para comprar o livro é só visitar esse endereço no web site da Fundação Blender.

Blender Game Engine: Projeto Ruínas

Um artista brasileiro publicou recentemente nos fóruns da comunidade Blenderartists.org, uma série de trabalhos realizados com a Game Engine do Blender 3D, que estão chamando a atenção de vários usuários e artistas 3d. Esse artista é o Vitor Balbio que pelo visto está se especializando no uso do Blender 3d, para criar ambiente e simulações usando render em tempo real. O projeto título desse artigo, que inclusive apareceu na BlenderNation essa semana, se chama Ruínas. Como o próprio nome mesmo diz, o aplicativo representa um ambiente que simula as ruínas de um templo ou fonte.

Além do excelente trabalho de modelagem e configuração da Game Engine, o Vitor ainda conseguiu aplicar alguns recursos em desenvolvimento para o Blender 3D, como o build que apresenta o VideoTexture.

Essa é uma imagem do aplicativo:

blender3d-game-engine-ruinas

Para conferir a mensagem que o Vitor publicou nos fóruns do Blenderartists.org, visite esse link. Lá é possível visualizar outros trabalhos dele usando a Game Engine do Blender 3D, assim como é possível encontrar o link para fazer o download do aplicativo Ruínas (apenas Windows).

Como forma de divulgar o excelente trabalho que o Vitor realizou no aplicativo, fiz uma pequena entrevista com ele sobre o seu trabalho com o Blender 3D e os desafios do projeto. A entrevista é ilustrada com algumas imagens enviadas pelo autor, com screenshots do projeto no Blender 3D. As imagens estão pequenas, basta clicar nelas para ampliar.

Conte-nos um pouco mais sobre a sua experiência com o Blender 3D, como ele influencia seu trabalho? Há quanto tempo você usa o Blender?

Bom, eu uso o Blender há 4 anos, eu era um garoto na época, tinha somente 14 anos, mas eu já modelava desde os 12. O meu inicio com o Blender foi meio conturbado como deve ser o de todo mundo, ainda mais naquela época em que o programa era tão instável que nós tinhamos que salvar o nosso trabalho a cada 10mim com medo dele fechar sozinho e agente perder tudo rsrsrs. Mas hoje ele é um programa extremamente estável e confiável.

O Blender hoje em dia é a base ferramental do meu trabalho, eu estou atualmente desenvolvendo um curso de desenvolvimento de jogos 3D com o Blender e estou montando uma produtora de Serious Game chamada “Starats Studio”, e o Blender é a ferramenta perfeita para esses 2 projetos.

ss1

Qual o seu objetivo com esse projeto? Foi uma experiência ou teve como objetivo testar as ferramentas do Blender?

Na verdade foi apenas um estudo descompromissado. Para a cena “Ruínas” eu estava testando algumas técnicas em um cenário complexo em diversas áreas como Bake de AO e sombra, uso extensivo de Normal Maps, aplicação de vegetação animada e decidi implementar também os recursos de reflexão disponíveis no SVN “VideoTexture”. Felizmente eu gostei muito do resultado final, apesar de alguns detalhes poderem ter tido um polimento melhor.

ss2

Qual foi o maior desafio para finalizar o projeto? Foram as texturas? Compor a vegetação?

Criar o Bake da iluminação. Sempre esse é o maior desafio e também o que mais gosto de fazer, infelizmente ( pelo menos comigo ) as coisas dificilmente saem perfeitas logo da primeira vez, abrir a malha com o lightmap e fazer o bake sem costuras aparente e com qualidade em uma cena complexa sem ter de criar texturas gigantes é sempre um desafio. Felizmente com o tempo agente vai pegando algumas manhas em relação a isso. Inicialmente essa cena seria apenas um estudo de iluminação, sem texturas, mas o resultado da iluminação me agradou tanto que seria um pecado não continuar. Fora a iluminação configurar a neblina para criar uma densidade atmosférica compatível na cena é sempre muito complicado, é um exercício de paciência em testar valores.

ss3

Como você organizou as texturas? Em uma das telas do projeto, podemos perceber que existem várias camadas em algumas texturas. Você poderia comentar a organização das mesmas?

Na maioria dos casos eu utilizo uma textura para cada “canal”: Diffuse, Normal, AO e Sombra projetada para cenários externos e Diffuse, Normal, Radiosity para cenários internos. Dificilmente eu uso mapa para especular, acho mais prático controlar pelo shader. Mas nessa cena em especial eu utilizei a técnica de “texture splatting” pra criar a terra e grama do chão e mais um mapa de detalhamento multiplicando em cada material pra criar os musgos e os detalhes esverdeados em praticamente todo o cenário.

ss4

Você usou os materiais/visualização do tipo GLSL?

Sim, acho que essa foi a maior evolução da Game Engine do Blender desde a versão 2.46, as possibilidades gráficas com ele são muito vastas agora. Espero somente poder ver mapas Parallax criados facilmente nos materiais do Blender em breve.

ss5

Esse foi o seu primeiro projeto com a Game Engine? Caso não tenha sido o primeiro, quais outros projetos você já desenvolveu?

Eu já criei alguns projetos com a BGE, recentemente a minha produtora desenvolveu um projeto chamado “Quilombo Virtual” para a ONG TRAMA aqui de São Gonçalo, RJ. O qual era uma apresentação interativa em um ambiente que recriava a vida nos quilombos. Foi um trabalho muitíssimo importante pro meu crescimento profissional e teve uma repercussão extremamente positiva.

Quais conselhos você daria para outros usuários do Blender, interessados em começar projetos envolvendo o uso da Game Engine?

Acreditar no próprio potencial e nunca desistir. Eu acredito muito no potencial de cada um. Eu já vi pessoas que aprenderam Blender em 2 meses outras que aprenderam em 1 ano. Mas todos têm capacidade de criar coisas incríveis se realmente quiserem. Estudem muito, lêem muitos tutoriais na internet, busquem fóruns, blogs, pergunte se não souber como fazer alguma coisa, a comunidade Blender é extremamente solidária com todos. Vejam o que os outros estão fazendo e tente fazer igual, ou melhor. Se você gosta de jogos e você deseja começar a criá-los você mesmo o Blender é a ferramenta certa, pois é Open Source e extremamente poderoso. Pode não ser muito “carismático” a primeira vista, mas ele é um programa excepcional e vai continuar a crescer cada vez mais. Espero que esse trabalho inspire outros jovens como eu (tenho apenas 18 anos ainda) a buscarem os seus sonhos. E eu espero daqui pra frente ver mais trabalhos sendo realizados aqui no Brasil com o Blender.

Tutorial de animação interativa com o 3ds Max e Papervision 3D

No final do último ano comentei aqui no Blog que havia aceitado um grande desafio para esse semestre, que era ministrar uma disciplina que envolvesse multimídia para web com a introdução de conteúdos em 3d. O meu plano é usar o Blender 3D junto com o Adobe Flash para criar animações em 3d interativas para a web, com intermédio de uma engine 3d de código aberto para o Flash chamada de Papervision 3d. O uso dessas ferramentas requer conhecimentos intermediários em todos os níveis do projeto, desde a modelagem 3d até a programação em ActionScript no Flash, usando os módulos e códigos próprios do Papervision 3D. Mas, o resultado para uma animação 3d integrada em web sites e simplesmente fantástico, o que faz valer o esforço empregado no projeto.

Como parte dos preparativos para ministrar da melhor maneira possível a disciplina, estou fazendo muitas pesquisas e anotações na documentação oficial do Papervision 3d e também nos tutoriais que encontro pela web. Um desses tutoriais pode ajudar a explicar melhor o processo de criação com essas ferramentas, ele mostra como é possível integrar o 3ds max com o Papervision 3d na animação de um avião em lowpoly.

Esse tutorial é composto por vários vídeos e apresenta um tempo considerável, portanto recomendo que você assista quando tiver um tempo razoável de sobra, algo em torno de uma hora e meia.

A primeira parte é totalmente dedicada a modelagem 3d por subdivisão no 3ds Max de um avisão simples, para que depois de terminado o processo o modelo seja exportado no formato COLLADA, para o Flash. No final do tutorial o autor mostra o processo de configuração de animação no Flash, com o uso de ActionScript.

Esse é apenas um dos vídeos do tutorial, para que você tenha uma idéia do produto final.

Mesmo que você não esteja interessado na parte de interação de objetos 3d com o Flash e Papervision 3D, recomendo que assista apenas a primeira parte, em que o autor dá ótimas dicas de modelagem por subdivisão, usando as ferramentas do 3ds Max.

No meu caso o tutorial será muito útil até como forma de exercício, mas claro que a parte de modelagem 3d será substituída pelo uso do Blender 3D. Depois que a disciplina estiver terminada, posso reunir material suficiente para ministrar essas disciplina com mais facilidade em outros semestres, pois a demanda por uso de 3d na web com o Flash deve crescer muito ainda, pois isso abre novas possibilidades de integração com as interfaces criadas para web sites.

Esse tema é um dos que está na minha lista de interesses, para um provável título de livro no futuro. Mas, o desafio será muito grande, pois o mesmo irá abordar três tecnologias diferentes em um único título. O desafio será fazer algo voltado para pessoas com conhecimentos básicos em cada uma das áreas, e conseguir ensinar tudo sem usar muitas páginas e imagens.

Se der certo, no final do ano aviso aqui no Blog!