GLScene/pt

From Free Pascal wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Deutsch (de) English (en) français (fr) Bahasa Indonesia (id) 日本語 (ja) 한국어 (ko) português (pt) русский (ru) 中文(中国大陆)‎ (zh_CN)

Sobre

GLScene é uma biblioteca 3D baseada em OpenGL. Foi escrita inicialmente para Delphi, agora está rodando em C++ Builder, Kylix, Delphi e Lazarus.

Suas características principais são:

Descrição do Cenário (Scene)

  • Estrutura de objetos hierárquica, com tantos objetos quanto a memória permitir, facilmente expansível.
  • Interatividade com o gerenciamento da cena (vários peritos em Delphi).
  • Fácil de usar as funções de rotação e movimentação para cada objeto.
  • Objetos pré-definidos (todos os padrões do cubo para a chaleira, depois para sprite), facilmente expansível.
  • Objetos estruturados (cubo falso (dummy cube), objeto representante (proxy object)) para gerenciar objetos compostos.
  • Objetos processuais (altitude raio de visão (heightfield), sólidos de revolução, tubos (pipes), tesselators...).
  • Suporte completamente integrado a objetos 2D e 1D (suporte a sprites, linhas e spline).
  • Objetos HUD (sprites renderizados em coordenadas 2D)
  • Objetos Utilitários (Utility) (grades (grids), céu em formato de cúpula (skydome), setas (arrows)...).
  • Suporta classes para acessar o diretamente OpenGL
  • Objetos do tipo câmera e luz podem ser usados em qualquer lugar em uma hierarquia de objetos do cenário.
  • Objetos de comportamento podem ser anexados a objetos com o propósito de animação, facilmente expansível.
  • Efeitos especiais por objeto (aplicar a renderização antes/depois aos objetos e efeitos secundários ao cenário), facilmente expansível.
  • Suporte para sistemas de partículas, qualquer objeto ou objeto estruturado pode ser uma partícula.
  • Importação de arquivos do 3D Studio e coordenadas das texturas com cálculo automático e preciso dos vetores normais (usando os determinados grupos suavizadores do arquivo).
  • Outros formatos importados: OBJ/OBJF, SMD, MD2, STL, TIN, PLY.

Materiais

  • Fácil de usar, otimizado, materiais para objetos.
  • Biblioteca de material para compartilhar e re-utilização de materiais.
  • Suporte a ambientes, difusão, emissão, reflexo e brilho.
  • Suporte a modos combinatórios (transparência, aditivo...)
  • Autogeração de canal alfa.
  • Suporte a formato de textura OpenGL, incluindo formatos comprimidos (DXT, S3TC etc.)
  • Suporte a plug-in shaders genérico
  • Suporte a classes de alto-nível de shaders Cg.
  • Suporte a imagem polimorfica para texturização (permite muitos formatos como também texturas processuais), facilmente expansível.
  • Mais de 150 cores pré-definidas como clrCornflowerBlue ou clrCoolCopper (facilmente expansíveis) além de cores padrão e especificações diretas do padrão RGBA
  • Fácil de usar as propriedades de movimentação de textura e de escalabilidade, independentemente das coordenadas de textura.
  • Suportam classes de Bitmap de 32 bits

Renderização

  • Usa automaticamente o driver do hardware OpenGL se disponível.
  • Um bom funcionamento do modelo de câmera usando comprimento focal e a mira.
  • Múltiplas visões para uma ou mais cenas, fácil mudança de visão por seleção de câmera.
  • Suporte a névoa e a visão de profundidade.
  • Renderiza para um arquivo, para um bitmap ou para a impressora em qualquer resolução de cor e pixel.
  • Suporta a tela cheia com mudanças dinâmicas de resolução.
  • Reflexões e efeitos de espelho.
  • Fundição de sombras dinamicamente.
  • Suporte a sistema de alta-performance de partículas transparentes em cenários largos.
  • Seleção automática (por hierarquia ou por objeto) de frustrum.

Animação

  • Propagação de eventos de progressão de tempo.
  • Animação de esqueleto (múltiplos ossos (bones) por vértice).
  • Interpolação de quadro (frame) e mudança de alvos (morph targets).
  • Comportamentos facilmente expansíveis.
  • Física dinâmica: inércia, aceleração, umidade e força de aplicação.
  • Iluminação automática e em tempo real da cena.

Interface

  • Funções fácil-de-usar para determinar os objetos escolhidos.
  • Funções de ajuda para movimentação da câmera.
  • Funções de ajuda para a tradução do objeto escolhido.
  • Funções de ajuda para conversão entre telas e coordenadas globais, trajetória de raios (raycasting)

Som

  • Suporte embutido para fontes som 3D e para o ouvinte.
  • Atualização automática da posição, da velocidade e da orientação das fontes de som e do ouvinte.
  • Amostras de som da biblioteca do componente.
  • Gerenciadores de sons para WaveOut, BASS e FMOD.

Utilitários

  • Aperfeiçoamento de funções de geométricas e utilitários (vetor, quaternion e matriz...).
  • Suporte a funções e classes spline cúbica.
  • Engrenaram a manipulação e a otimização (stripification, vertex-cache awareness, etc.).
  • Componente para fazer o salvar-tela (screen-saver) totalmente configurável em alguns cliques.
  • Determinação precisa da velocidade do quadro (frame).
  • Cronômetro assíncrono (multi-threaded).
  • Suporte a joystick.
  • Acesso assíncrono ao teclado, suporte ao mapa de caracteres.

Bibliotecas de terceiros

  • Suporte para biblioteca de física de ODE.
  • Suporte para Delphi Web Script (DWS).
  • Suporte para Camadas Diretas de Mídia Simples (Simple Direct Media Layer - SDL).
  • Suporte ao conjunto de ferramentas da biblioteca CG NVidea shader.

Observações: O Delphi 5 tem suporte basicamente a BMP, WMF, EMF, ICO e JPG , você pode acrescentar suporte para GIF, TIF, TGA, PSD e muitos mais incluindo a biblioteca GraphicEx de Mike Lischke

Capturas de tela

Gl effect.jpg Gl cel.jpg Gl trinity.jpg
Gl ode.jpg

Autor

Autor: inicialmente por Mike Lischke
E há tempos sendo mantido por Eric Grange
Portal LCL: Christian Ulrich

Baixar

Ultima versão (v1.0.0.2)

Isto deveria ser quase idêntico ao repositório cvs original de hoje em termos de funcionalidade e de problemas-corrigidos, porém, ainda existem algumas partes faltando. Lá não haverá um "Lazarus-com-instalador-GLScene" com esta nova versão, a menos que outra pessoa o crie. --Crossbuilder 20:16, 18 Julho 2007 (CEST)

Desatualizado

Uma versão mais antiga(version 0.9.1.6) pode ser encontrada em Pagina de Arquivos Lazarus CCR junto com um instalador do lazarus com GLScene já na IDE Lazarus e nas demonstrações da GLScene. ATUALIZAÇÃO: Esta versão está bem desatualizada agora. Se possível, faça a verificação com o svn (veja abaixo).

SVN

você pode verificar a versão do código-fonte atual do
http://svn.freepascal.org/svn/fpcprojects/glscene/trunk/

O comando seria:

svn co http://svn.freepascal.org/svn/fpcprojects/glscene/trunk glscene

Isto baixará do repositório da pasta (principal) para o diretório "glscene" de onde você deu o comando.

No windows você pode usar os clientes como tortoise SVN e outros.

Relatório de Erros

Relatório de Erros/Exibir pedido Por favor selecione em Project "Packages" e em Category "glscene" para seus relatórios. Obrigado.

Registro das Mudanças

  • 18.07.2007 liberação da versão Instantênea 1.0.0.2
    • algumas coisas ajustadas , para se trabalhar com última versão svn do lazarus
    • adcionados objetos bitmaps ao SceneEditor (Editor de Cenário)
    • consertado outro AV dentro do SceneEditor
    • incorporado todos os remendos (patches) e erros consertados (bugfixes) do repositorio cvs do glscene original como texturas,dinâmicos..
  • 13.06.2007 liberação da versão Instantênea 1.0.0.1
    • incorporado todos os remendos (patches) e erros consertados (bugfixes) do repositorio cvs do glscene original
    • editor de cena aprimorado ( menos porradas, mas ainda precisa de algum amor)
      Sugestão: Salve seu projeto freqüentemente ;-)
    • seperada dependencia de material do mmsystem do suporte de som genérico, por exemplo, FMOD que está disponível em linux, também
    • muitos mais ..
  • 01.12.06 Adicionado suporte ao ODE, gtk2 e Cg shaders em Linux (ODE é limitada a liberação normal de versão, sem suporte a cones, cilindros e terrenos)
  • 10.08.05 Muitas mudanças para postar aqui veja o histórico cvs
  • 16.07.05 Porta GLScene 0.9.X
  • veja a Conta GLScene Sourceforge para o completo Registro das mudanças

Status: Beta

Instalação da versão 1.0.0.2

Requer o fpc 2.1.4 ou superior e o lazarus 0.9.23 revisão 11348 ou superior !!

  • extraindo os códigos-fontes
    • ZIP:
      • na pasta "lazarus/components/" execute o "unzip glscene-1.0.0.2.zip"
        Isto criará a pasta lazarus/components/glscene/
    • SVN:
      • na pasta "lazarus/components/" execute o
        svn co http://svn.freepascal.org/svn/fpcprojects/glscene/trunk glscene
        Isto criará a pasta lazarus/componets/glscene/
      • Tortoise SVN: adicione a pasta "glscene" manualmente então você fica com lazarus/components/glscene. Então clique com o botão direito do mouse sobre a nova pasta e escolha "SVN Checkout...". No campo "URL of repository" adicione
        http://svn.freepascal.org/svn/fpcprojects/glscene/trunk
        Confirme em "OK".


  • Finalizando a instalação:
    • copie de "lazarus/components/glscene/globallinks/*.lpl" para "lazarus/packager/globallinks/"
    • inicie o lazarus
    • selecione "Configure installed packages ..." do menu "Components"
    • selecione "glscenelazarus" da lista "Available packages"
    • clique no botão "Install selection"
    • clique no botão "Save and rebuild IDE"
      • ATENÇÃO: Pode ocorrer um erro em que o pacote "jpegforlazarus" não seja encontrado. Nesse caso faça o seguinte:
      • Components --> Open loaded package...
      • Escolha "glscenelazarus" (Versão 1.0.0.3) e clique em "Open..."
      • Na lista seguinte abaixe até "Required Packages" e remova dependência de "jpegfromlazarus".
      • Procure a unit "jpeg" na pasta /lazarus/components/glscene/Source/base e substitua "LazJPEG" (dentro da cláusula uses) por "LazJPG" (do pacote ImagesForLazarus).
      • Salve e repita os últimos 4 passos denovo.
      • SUGESTÃO: Você deveria ter instalado o pacote "ImagesForLazarus" (o mesmo caminho descrito para o pacote "glscenelazarus").
    • repita os últimos 4 passos para os outros pacotes você queira usar.
      • Observação: o glsceneode e o glscenecgshader precisam de suas respectivas bibliotecas durante instalação no sistema!
    • Observação: você também pode tentar selecionar e instalar todos os pacotes em um 'Avançar'. Porém, eu prefiro fazer as coisas passo a passo, assim eu vejo onde falha, e se ele falha ;)
    • Instalação "glscenelazarus" - erros: (só precisou ao usar o glscene-1.0.0.2.zip, no svn já estão consertados)
      • Para corrigir a unit GLLCLViewer: procedure TGLSceneViewer.CreateParams(var Params: TCreateParams); - na procedure TGLSceneViewerLCL.CreateParams(var Params: TCreateParams);
      • Para corrigir a unit GLLCLViewer: procedure TGLSceneViewer.EraseBackground(DC: HDC); - na procedure TGLSceneViewerLCL.EraseBackground(DC: HDC);
      • Para corrigir a unit GLLCLFullscreenViewer: Mude "RegisterClasses([TGLSceneViewer, TGLFullScreenViewer]);" para "RegisterClasses([TGLFullScreenViewer]);"
  • Lista de pacotes:
    • glscenelazarus O pacote principal.
    • glscenecgshader Componentes Cg Shader
    • glsceneode Componentes ODE
    • glss_fmodlaz Componente FMOD
    • gls_winonly Apenas para Windows, contém suporte ao som do mmsystem, suporte ao BASS e ao componente GLScreenSaver
  • Сompilação "demo" - erros:
    • Se não encontrada a class - TGLSceneViewer: Para corrigir o uses (demo): GLLCLViewer - no GLViewer

Instalação da versão 0.9.6.1

  • Crie o diretório lazarus\components\GLScene
  • Neste diretório, extraia os arquivos do arquivo zip
  • Abra o lazarus
  • Abra o pacote glscenelazarus.lpk com o pacote de arquivo Component/Open (.lpk) do lazarus\components\glscene\Lazarus
  • (Só é necessário clicar em Compile, se você não quizer instalar o componente dentro da IDE)
  • Clique em Install
  • Repita estes passos (abra o .lpk, clique em install) para os outros pacotes você queira usar. Observação: estes pacotes adicionais precisam de bibliotecas adicionais (fmod, ode, Cg).
    • glscenecgshader.lpk : Cg shaders (apenas com placas NVidia?)
    • glsceneode.lpk : suporte para biblioteca ode
    • glsss_fmodlaz.lpk : suporte para biblioteca fmod
    • gls_winonly.lpk : isto só pode ser instalado no windows. Contém material screensaver como também suporte para biblioteca BASS.

Sugestão: às vezes um Error "GLGraphics not found" ocorre. Não preocupe, apenas faça Tools->Build Lazarus novamente e isso deve solucionar.

Uma instalação completa do Lazarus com GLScene já está disponível na IDE como binary win32 release ou http://www.skinhat.com/lazarus

Apenas uma advertência para (novos) usuários de Linux: A GLScene no seu estado atual não está funcionando o "fora da caixa" (muitas modificações/inclusões são necessárias). ATUALIZAÇÃO: isto não é mais válido. A glscene para lazarus está sempre atualizada e a maioria das coisas funcionam muito bem fora da caixa do windows como também para linux.

A partir da última versão da pasta (veja em svn acima) a versão para linux está funcionando bem. Algumas demonstrações (aproximadamente 20%) ainda estão quebradas mas a maioria da glscene está funcionando agora. Nós também estamos migrando para faze-lo funcionar em outras plataformas Unix como o FreeBSD.

As partes que estão faltando/não-funcionando em sistemas não-windows são: glKeyboard (use o winapi, mas não é requesito principalmente), glSound (que usa o mm, nós precisamos usar a openal ou algo do tipo)

Uma instalador para windows completamente transparente foi planejada.

Ajuda