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