GLscene (other translation)/pt
Tudo o que você sempre quis saber para fazer seu jogo 3D no Delphi e não tinha a quem pedir ajuda.
Tão fácil quanto mudar de canal na televisão, rebobinar fita de vídeo ou retirar o cd do player: você aperta uns botõezinhos e crau... Seu jogo 3D já está quase pronto. Não acredita?
Faça o seguinte: clique aqui (http://www.tilt.net/e-book/glscene/demo.zip) , baixe o demo.zip, descompacte-o em um diretório qualquer e rode o arquivo Project1.exe. Brinque à vontade, voando pelo belo planeta gelado Bongo. As teclas W, A, S e D servem pra isso mesmo. Clique em qualquer lugar e ative o mouse como controle de direção da câmera (F1 e F2 chaveiam o modo wire frame).
Gostou não é mesmo? Bole um enredo e já tem quase um jogo pronto. Quer ver como fazer esse cenário do Delphi + GLScene? Olha só:
//carregar height map
bitmapHDS.Picture.LoadFromFile('terrain.bmp');
//carregar a textura do terreno terrain.material.Texture.image.LoadFromFile('snow.jpg'); terrain.material.Texture.Disabled:= false;
//adicionar estrelas skydome.Stars.AddRandomStars(4000, clWhite);
//e modificar opções skydome.ExtendedOptions:= [esoFadeStarsWithSun,
esoRotateOnTwelveHours];
Então? É ou não é simples? Tudo o que você precisa saber, para fazer um jogo 3D, usando o Delphi e a GLScene (uma das melhores e mais potentes engines 3D do momento) está aqui mesmo, em nosso e-Book GLScene passo-a-passo.
O que é CVS
Antes sequer de instalar a GLScene, a primeira tarefa para qualquer futuro desenvolvedor é ser capaz de obtê-la do CVS. CVS significa Concurrent Versions System, um sistema utilizado para desenvolvimento de software em grupos. Basicamente, o CVS é o repositório de todo o código da GLScene, sendo atualizado automaticamente sempre que alguma modificação é feita por algum desenvolvedor autorizado.
Embora o código obtido do CVS seja (em geral) considerado como "em desenvolvimento" (e não muito recomendado para publicação), o lançamento de versões estáveis é raro dentro da comunidade de desenvolvedores e qualquer bug encontrado é rapidamente corrigido e publicado no repositório. Além disso, esse sistema permite que uma aplicação utilize código modificado, e qualquer alteração no código principal da GLScene pode ser importado (no jargão do CVS, unido ou "merged") com o código modificado, facilitando o aproveitamento de correções e adição de funcionalidades.
Obter o código do CVS é um processo relativamente simples. Em primeiro lugar, é preciso instalar um cliente CVS. Existem diversos clientes Windows espalhados pela internet, porém o mais simples é o TortoiseCVS (http://www.tortoisecvs.org) que se integra diretamente ao Windows Explorer e facilita o processo de atualização do código.
Após instalado, as principais opções do Tortoise podem ser acessadas através de um clique no botão direito do mouse em cima de qualquer diretório. Em primeiro lugar deve ser selecionada a opção "Obter Módulo" (CVS CheckOut).
Nessa operação é preciso especificar o diretório do repositório CVS (CVSROOT, que deve ser ":pserver:anonymous@cvs.sourceforge.net:/cvsroot/glscene") e o módulo que se deseja retirar. O CVS Checkout realiza o download completo da versão mais atual do código do repositório e o traz para um subdiretório da pasta onde essa operação foi executada.
Para conhecer os módulos que a GLScene contém, pode-se visitar a interface web do CVS no endereço (http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/glscene/). Os principais módulos são:
Source (que contém o código fonte);
DelphiX (onde X é a versão, contém os pacotes para instalação em cada versão do Delphi);
Demos (o maior módulo, contém vários exemplos do uso de código da GLScene) e
AdvDemos (demos avançados, que mostram a integração de diversas características).
Para cada um desses módulos é preciso executar um checkout, especificando seu nome na área "Módulo" (tomando cuidado com letras maiúsculas e minúsculas, já que o CVS é case-sensitive) e o CVSROOT (mostrado acima).
De acordo com o tamanho do módulo, o download dos arquivos será mais ou menos rápido. Porém, a retirada completa é feita apenas uma vez, já que durante as atualizações obtém-se apenas as diferenças entre arquivos e não os arquivos completos.
Futuramente, quando necessário ou desejado, uma atualização do código pode ser feita simplesmente clicando-se com o botão direito do mouse no subdiretório que representa o módulo que se deseja atualizar (por exemplo, no subdiretório "Source") e escolhendo a opção "CVS Atualizar" (CVS Update). Arquivos que foram atualizados no repositório serão atualizados localmente, estando prontos para uso.
Um aspecto do serviços de CVS que deve ser levado em consideração é que quando uma alteração é feita ("commited") por um desenvolvedor autorizado, leva algumas horas para que ela esteja disponível para o público em geral. Portanto, sempre espere um dia ou dois para atualizar o código-fonte quando uma nova funcionalidade for anunciada. ` Para a maioria dos usuários, as operações de checkout e update (retirada e atualização) são as únicas utilizadas. As opções CVS Editar, CVS Gravar e CVS Adicionar Conteúdo só produzem resultados quando a pessoa realizando a gravação tem permissão para alterar o código fonte no repositório.
Qualquer pessoa pode se tornar um desenvolvedor autorizado a inserir mudanças no código da GLScene. Para isso, basta demonstrar sua capacidade criando novas funções e postando as modificações no newsgroup. As pessoas que contribuem frequentemente são chamadas para integrar o time de desenvolvedores oficiais.
Programando com CVS
O download do código à partir do CVS pode parecer como um passo supérfluo e sem propósito para a maioria das pessoas que desejam simplesmente usar o código obtido para pequenos projetos. No entanto, ele se torna uma ferramenta valiosa conforme a programação de uma aplicação progride.
Não é raro descobrir que uma funcionalidade específica ou a correção de um bug (que muitas vezes é significativa apenas para um desenvolvedor) requer a alteração do código fonte da GLScene. Isso gera uma cópia local do código que é diferente daquela presente no repositório. No entanto, novas funcionalidades são adicionadas com certa freqüência, o que provoca a necessidade de constantes atualizações no código local.
É nesse ponto que surge a real utilidade do CVS: o cliente CVS é capaz de detectar as mudanças entre os arquivos e aplicar as modificações de um (por exemplo, do repositório) em outro (a cópia local), fazendo com que os arquivos fiquem compatíveis.
Problemas surgem apenas se a mesma "área" for modificada nos dois locais. Caso isso aconteça, o cliente CVS pede uma intervenção do usuário para que ele decida quais modificações devem ser aplicadas (através de um programa como o WinMerge - http://winmerge.sourceforge.net).
Em resumo, trabalhar com um sistema de controle de versões pode ser complicado no início, porém as vantagens se tornam óbvias quando o projeto sendo desenvolvido requer mudanças no código fonte da biblioteca.
Instalação
Sempre que uma atualização a partir do CVS for feita, é recomendado que a GLScene seja desinstalada e instalada novamente. O processo de instalação é um dos pontos onde mais erros acontecem e deve ser executado com muita atenção.
Assumindo que a GLScene não esteja instalada (o processo de remoção é dado abaixo), abra o Delphi e feche o projeto ativo (menu File-> Close All). Em seguida, adicione os caminhos para os diretórios de código fonte da GLScene ao ambiente do Delphi (é preciso adicionar todos os subdiretórios do diretório "source" em Tools-> Environment Options-> Library-> Library Path).
Em seguida, abra o pacote da GLScene correspondente a versão do Delphi onde ela esteja sendo instalada (glscene5.dpk, glscene6.dpk, glscene7.dpk para as versões 5, 6 e 7 do Delphi, respectivamente). Clique em "Install". Os outros pacotes desse diretório devem ser instalados conforme a necessidade, já que representam conjuntos de componentes separados (alguns deles serão estudados em tutoriais futuros).
Pronto! Isso deve ser o suficiente para instalar os diversos componentes. Para testar se a instalação foi bem sucedida, basta rodar um dos demos (como o "bench\volcano").
O processo de desinstalação é mais simples. Novamente, feche todos os projetos (File-> Close All), abra a lista de pacotes registrados (menu Project-> Options-> Packages), encontre os pacotes da GLScene e clique em "Remove". Os componentes devem sumir da VCL.
Finalmente, abra o Windows Explorer e encontre o diretório onde o Delphi foi instalado. Dentro do subdiretório "Projects\bpl", remova todos os arquivos relacionados a glscene (glscene5.bpl, gls_ode5.bpl, etc). Lembre-se de que uma vez removido o pacote, os projetos que usam a GLScene não poderão ser compilados antes dela ser reinstalada.
Durante a compilação/instalação de um pacote, um erro do tipo "File Not Found: xxx.pas" normalmente indica um diretório faltando no Environment Path.
Demos GLScene
Uma das formas mais eficientes de se aprender o funcionamento de uma biblioteca é criar algo com ela. No entanto, para os iniciantes, a curva de aprendizagem pode ser íngreme. Para resolver esse problema, os desenvolvedores da GLScene fornecem uma grande quantidade de programas de demonstração, mostrando como as diversas características dessa biblioteca são acessadas.
Uma observação: como a OpenGL em geral utiliza muitos recursos de hardware, uma (boa) placa 3D é necessária para visualizar os demos de forma adequada. Dependendo da idade da placa, a performance pode ser ruim ou alguns demos podem simplesmente não rodar devido a falta de certos recursos mais modernos.
Uma placa do tipo GeForce MX é suficiente para a maioria das aplicações, embora algumas funções mais novas (como pixel shaders) estejam disponíveis apenas em placas a partir da série GeForce FX.
Se você ainda não instalou a GLScene mas quer dar uma olhadinha nos demos oficiais e verificar o potencial da engine, siga a lista abaixo que fizemos com os principais exemplos: clique aqui(http://www.tilt.net/e-book/glscene/GLSceneMedia.zip), baixe o pacote zip contendo os arquivos comuns de midia e descompacte-o. Serão criados algumas pastas e em especial uma chamada /demos. Clique no .exe do demo desejado e faça o download dele diretamente para essa pasta. Depois é só executá-lo para ver o efeito.
Actor.exe(http://www.tilt.net/e-book/glscene/actor.exe) Demonstra o uso de um ator (personagem);
ActorWtoCam.exe(http://www.tilt.net/e-book/glscene/actortwocam.exe) Demonstra o uso de câmera em primeira/terceira pessoa acompanhando um ator se movimentando pelo cenário;
Beer.exe(http://www.tilt.net/e-book/glscene/beer.exe) Uso de partículas e Sphere Mapping (mapeamento de ambiente para o efeito do vidro);
Boom.exe(http://www.tilt.net/e-book/glscene/boom.exe) Explosão do tipo fogos de artifício;
Candles.exe(http://www.tilt.net/e-book/glscene/candles.exe) Influência do vento no efeito que simula fogo;
Canvas.exe(http://www.tilt.net/e-book/glscene/canvas.exe) Comparação entre o operações do componente GLCanvas (canvas usando a GLScene) e a GDI padrão do Windows;
Clothify.exe(http://www.tilt.net/e-book/glscene/clothify.exe) Colisão de rag-doll ("boneco de pano") entre vários objetos;
Cutoutstar.exe(http://www.tilt.net/e-book/glscene/cutoutstar.exe) Teste de criação de objetos através de "extrusion";
Furball.exe(http://www.tilt.net/e-book/glscene/furball.exe) Uso de Verlet-Hair com a engine de física ODE para criar pêlos;
Hfpick.exe(http://www.tilt.net/e-book/glscene/hfpick.exe) Detecção de click em um heigh-map;
Mirror.exe(http://www.tilt.net/e-book/glscene/mirror.exe) Uso de um plano que simula um espelho;
Pong.exe(http://www.tilt.net/e-book/glscene/pong.exe) Um jogo de pong;
Shadowplane.exe(http://www.tilt.net/e-book/glscene/shadowplane.exe) Sombra de objetos em um plano;
Simple.exe(http://www.tilt.net/e-book/glscene/simple.exe) Uso da biblioteca física ODE com objetos padrões da GLScene;
Tobitmap.exe(http://www.tilt.net/e-book/glscene/tobitmap.exe) Renderização para um bitmap de tamanho variável;
Transparency.exe(http://www.tilt.net/e-book/glscene/transparency.exe) Teste de transparência de acordo com a ordem de renderização dos objetos;
Volcano.exe(http://www.tilt.net/e-book/glscene/volcano.exe) Benchmark e teste de partículas;
Waterplane.exe(http://www.tilt.net/e-book/glscene/waterplane.exe) Objeto que simula um plano de água (dá pra interagir com a água e formar ondas).
Pedindo ajuda
A comunidade da GLScene está baseada em torno dos newsgroups (grupos de discussão) que podem ser encontrados em:
news://forums.talkto.net/glscene.general news://forums.talkto.net/glscene.support
Para acessá-los, é necessário um cliente de news como o Outlook Express da Microsoft ou o Mozilla Thunderbird. Esse é o fórum oficial para dúvidas, sugestões ou comentários, embora a língua oficial seja o inglês.
Para os brasileiros, a lista de discussão da TILT é o local mais indicado. Para assinar a lista basta enviar um e-mail para:
tilt-subscribe@yahoogrupos.com.br
A participação na lista é gratuita.
Os assinantes do club TILT tem acesso ao atendimento vip, ou seja, podem encaminhar as suas dúvidas diretamente à nossa equipe, coordenada pelo Matheus, no seguinte e-mail: matheus@tilt.net ou clicar no link Tira Dúvida no final de cada página. Faremos todo o possível para esclarecer a questão, desde que referente ao assunto tratado no e-Book.
Referências
Esta seção contém uma série de links para os interessados em conhecer mais sobre a GLScene, programação 3D em geral e como ponto de partida para começar a criação de seu jogo.
http://caperaven.co.za Contém alguns tutoriais e mais programas de demonstração da GLScene.
http://www.sulaco.co.za Alguns artigos sobre programação 3D em Delphi.
http://www.delphi3d.net Também contém artigos sobre programação 3D em Delphi, com ênfase nas mais novas tecnologias lançadas (placa 3D de última geração obrigatória para rodar boa parte dos demos).
http://collective.valve-erc.com/index.php?doc=1047496381-02062100 Utilitários para trabalhar com arquivos SMD (usado em animações esqueletais).
http://www.opengl.org Site oficial da OpenGL
http://www.glscene.org Site oficial da GLScene
http://glscenehelp.sourceforge.net Wiki com informações sobre a GLScene.
http://www.six4one.com Página com resources (modelos, texturas, etc) que podem ser usados com a GLScene.
http://sourceforge.net/projects/glscene Sumário do projeto GLScene no site sourceforge.
http://www.3dcafe.com Modelos 3ds freeware.
http://www.planetquake.com/polycount Milhares de modelos MD2, MD3 e SMD para download.