GLScene/pt

From Lazarus wiki
Jump to navigationJump to search

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