Procedural
www.procedural.com.br

Apresenta:

Radiosidade e Passeio Virtual com o Blender (Game Engine)
Por Cí­cero Moraes (cogitas3d-bl, cogitas3d)

Site: http://cogitas3d.site.vu
Email: cogitas3d@msn.com


Olá pessoal!

A alguns dias vi-me obrigado e motivado a criar um ambiente para passeio virtual a um cliente meu. Só que eu nunca havia me satisfeito com os que criei até então. Por quê? Bem, por conta da iluminação. Não conseguia nunca fazer algo convincente, e apesar de ter estudado muito sobre Vrml utilizar bibliotecas que oferecem radiosidade aliada a leveza como o Maverik não me foi possí­vel, por que esta trata-se de um componente que somente experts em programação são capazes de implantar.

Bati bastante a cabeça, até voltar os meus olhos ao bom e novo Blender. Claro! Ele é um programa poderoso, serve para modelar, texturizar, renderizar, animar, é um editor de ví­deo e... tem um game engine próprio!

Certo, entrei no site www.blender3d.org e baixei umas demos, achei fantástico aquele passeio que tem uma escada e etc.

Montei a cena, ativei a solução de radiosidade e lá estava ela prontinha, só que faltava uma coisa: - Como inserir um observador?

Tentei de muitas formas, entrei em vários fóruns, e o pessoal dizia para eu ler um tutorial que encontrava-se na revista Procedural #1. Baixei-a e lá  estava­ o bendito que ele não era o que eu queria. Então decidi recorer (como 90% das vezes) a documentação em inglês do Blender. Voltei ao site blender3d.org e lá achei justamente o que eu estava procurando.

O que tenho a dizer quanto ao tuto que verás , é que ele foi feito sem a pretenção de oferecer ao leitor um conhecimento profundo sobre radiosidade e o engine, mesmo por que o observador, já vem configurado de outro arquivo. Somente algumas pequenas alterações podem vir a calhar, mas se você desenvolver uma cena na escala elas dificilmente serão necessárias.

Este tutorial é próprio para desenvolvimento de passeios virtuais para arquitetura, indústria moveleira etc. Quem quer desenvolver um jogo em primeira pessoa, por exemplo, deve ler o tutorial da Revista Procedural # 1, excelente para tal.

::Iniciando::

::Radiosidade::

A primeira coisa que devemos fazer é criarmos um desenho na escala e em um formato de arquivo suportado pelo Blender. Eu utilizo o Qcad para desenhar, mas a versão 1.5, por que o meu Blender não aceita os arquivos criados nas versões 2.xx. O formato é DXF.


O desenho pronto


Importando


Desenho já implantado


Por que fiz esta caixa aberta? Para que os raios de luz tenham para onde sair e não fiquem sendo calculados por muito tempo.


É bom complementar a cena com alguns objetos


Crie um plane e loque-o no lugar da lâmpada.






Fiques atento com o normal do objeto, que geralmente reflete para cima. Deves invertê-lo, a direção do normal é a direção da luz.


Crie um material branco, vá no campo Emit e coloque o valor 0.12.


Depois de criar o material que será a luz, seleciones todos os objetos da cena com AKEY


Cliques no botão "Collect Meshes".


Agora é só clicares no botão GO. Se algo der errado, simplesmente, pressiones ESC e a solução será interceptada.


E falando em erro, temos um aqui! A parede a  direita está completamente preta. Parece que a luz não atingiu-a. Por que isso aconteceu? Simples. O normal está apontando para o lado errado, além de enviar energia, ele também recebe. Da mesma forma que antes, temos de invertê-lo.


Para voltares ao modo de edição deves clicar em "Free Radio data".




Ótimo, agora o normal está do lado certo. Vamos repetir o processo de solução de radiosidade como descrito anteriormente.


Agora sim! A parede recebeu devidamente a luz. Mas, vejas que a cena está ligeiramente serrilhada.


Para torná-la mais atraente cliques em "Gour"


Melhorou, não?

O que tu vês na viewport não está de fato atrelado a cena. Explico. Se depois de calculada a radiosidade tu salvares o arquivo e sair, quando abrires ele novamente os dados já se terão perdido. Para "fixar" a radiosidade no objeto farás o seguinte:


Cliques em "Replace Meshes", assim criarás um mesh com os dados dos Vertex Colors que nada mais é do que as sombras e graduações de luz etc. na malha.


Depois em "Free Radio Data", para limpar o buffer da solução de radiosidade.


Se a imagem que aparecer no viewport for tipo wire, acalma-te, tu não perdeste os dados da radiosidade. Vás ao tipo de visualização e seleciones "shaded".
Feito a solução de radiosidade, vamos agora a segunda fase, que é a de implantação do observador móvel da cena.

::Implantação do Personagem::

Nós não iremos criar nenhum esquema pelo Engine para usá-lo como personagem, vamos sim pegar um exemplo já pronto o qual podes baixar em:

http://www.blender3d.org/_media/education/tutorials/walkthrough/walkthrough_template.blend

Teremos de importar a cena, e fazer um link da nossa cena atual para ela, e depois deletá-la para livrar espaço do arquivo, senão ele ficará muito pesado.
Por que fazer isso? Por que não criar um link da cena que tem a câmera para a da sala? Eu tentei fazer isso, mas deu errado. Se puxar a câmera para a sala e deletar a cena dela, a câmera perde a configuração. Tu podes fazer o seguinte. Baixar o arquivo da câmera e modelar apartir dele. Eu só estou explicando desta forma por que pensei que muitas pessoas podem ter a cena já pronta, isso será de grande valia para eles, não precisarão criar tudo de novo.


Para importar vás em "File --> Append"


Procures o arquivo onde baixaste-o, depois cliques sobre ele.


Seleciones "Scene"


Cliques em "action" (que é a cena em questão)
Depois em "Load Library"
Pronto, acena foi importada.




Pressiones BKEY e seleciones toda a cena, com a janela de seleção.


Pressiones TAB--> Object --> Make Links...


Depois escolhas a opção "To Scene"


Seleciones "action"


Vás na parte supeior da janela e faças o que aparece na figura. Seleciones a cena "action"


viste! A sala está na outra cena.
Agora podemos apagar a cena original da sala para tornar o arquivo e a visualização mais leves.


Voltes a cena "Scene"


Cliques no botãozinho "x" para apagar.


Em seguida em "Delete Current Scene"


Vejas que a cena atual é "action" e que a sala está nela.





Movas a câmera e posicione-a no melhor ângulo possí­vel. Evite rotacioná-la, Tu farás isso depois, quanto fores fazer teu caminho interativo.
Se desejares mudar de câmera. basta selecionares a câmera pressionares CTRL e depois 0 (ZERO).

::Salvando o Runtime::

Está tudo prontinho e devidamente posicionado. Agora temos somente que salvar o Runtime, para termos o nosso passeio interativo. Sigas os passos:


Vás em "File --> Save Runtime"


Escolhas um lugar para salvar. Escolhas o nome do arquivo e por fim cliques em "Save Runtime" Pronto!!! O arquivo executável está salvo.



Para executá-lo:

No Linux:
Abras um console, entres na pasta onde salvaste o arquivo e:
--------------------------
$ ./nome-do-arquivo
--------------------------
No nosso exemplo ficou:
$ ./passeio

No Windows:

Atenção!!!: Para que o executável rode no Windows, é necessário que copies os arquivos python23.dll e sdl.dll para dentro da pasta onde salvaste o passeio. As dlls podem ser encontradas em:
C:\Arquivos de Programas\Blender Fundation\Blender
Depois de feito isso, basta clicares duas vezes sobre o arquivo que ele será executado.


Notas importantes:

Como podem ter visto, eu utilizei o Linux para confeccionar este tutorial, porém, este sistema operacional padece de um mal. Ele não oferece um bom suporte para placas de ví­deo que não sejam nVidia. não que o sistema seja ruim, o problema é que o driver parte dos fabricantes do hardware. No caso das placas de ví­deo, não adianta nada elas serem de ponta se não tiverem um software eficiente que gerencie sua comunicação com o sistema operacional. A nVidia e a Ati parece que são as únicas que arregaçaram as mangas para tal. Dizem que o suporte da nVidia é bem superior a última, não posso dizer nada ainda, por que a minha Gforce queimou antes de eu instalar o Linux no computador que tinha-a. A minha placa atual é uma Sis genérica de 8Mb.
Por conta deste trabalho, tive de reinstalar o Windows no meu computador para rodar o Runtime. O Windows oferece um suporte muito bom a placas de ví­deo, tanto que rodei nele um ambiente virtual relativamente pesado, e tudo funcionou muito bem; mérito também do Engine do Blender, é claro.

Nota: Depois de um tempo que escrevi este tutorial, adquiri uma nVidia GeForce 5200 de 128 mb, e percebi que os gráficos em OpenGL funcionaram com uma superioridade notória no Linux.

Abaixo estão as imagens do trabalho que desenvolvi, deram-me um dia de trabalho para modelar, calcular e etc:










Se gostaste de estudar este tutorial, aproveites e leias a documentação do Blender sobre Radiosity. Entres também em www.blender3d.org, vás na sesssão "Tutorials" que encontrarás alguns sobre Game Engine, foi de lá que tirei o template do observador.

Se algo não der certo, tenhas calma, e leias novamente o tutorial. Não precisas já de cara seguí­-lo. Leias e deixes o teu cérebro acostumar-se com a idéia, depois efetive-a.

Se tiveres alguma dúvida, sugestão ou crí­tica, escrevas para:
cogitas3d@msn.com
Se desejares ver alguns de meus trabalhos entres em:
http://cogitas3d.site.vu

Um grande abraço e bom estudo!

Cí­cero Moraes