GLScene/pt

From Free Pascal 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
LCL Port: 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"
      • ATTENÇÃ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" (Version 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.
      • Note: glsceneode and glscenecgshader need their respective libs on the system during installation!
    • 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: Change "RegisterClasses([TGLSceneViewer, TGLFullScreenViewer]);" para "RegisterClasses([TGLFullScreenViewer]);"
  • Lista de pacotes:
    • glscenelazarus O pacote principal.
    • glscenecgshader Componentes Cg Shader
    • glsceneode Componentes ODE
    • glss_fmodlaz Component 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

Installation version 0.9.6.1

  • Create the directory lazarus\components\GLScene
  • On this directory, unzip the files from the zip file
  • Open lazarus
  • Open the package glscenelazarus.lpk with Component/Open package file (.lpk) from lazarus\components\glscene\Lazarus
  • (Click on Compile is only necessary, if you don't want to install the component into the IDE)
  • Click on Install
  • Repeat these steps (open .lpk, click install) for the other packages you want to use. Note: these additional packages need additional libs (fmod, ode, Cg).
    • glscenecgshader.lpk : Cg shaders (only with NVidia cards?)
    • glsceneode.lpk : support for ode lib
    • glsss_fmodlaz.lpk : support for fmod lib
    • gls_winonly.lpk : this can be installed on windows only. Contains screensaver stuff as well as support for BASS lib.

Hint: sometimes an Error "GLGraphics not found" occurs. Don't worry, just do Tools->Build Lazarus again and it should be ok.

A full install of Lazarus with GLScene already in the IDE is available as binary win32 release or http://www.skinhat.com/lazarus

Just a warning for (new) Linux users: GLScene in its current state is not working "out of the box" (lots of modifications/additions needed). UPDATE: this is not true anymore. glscene for lazarus is pretty up-to-date and most things work good right out of the box for windows as well as for linux.

As of latest trunk version (see svn above) the linux version is working well. Some demos (about 20%) are still broken but the majority of glscene is now working. We're also moving towards making it work in other Unix platforms like FreeBSD.

The missing/nonworking parts on non-windows are: glKeyboard (uses winapi, but is not required mostly), glSound(which uses mm, we need to use openal or somesuch)

A fully featured windows installer is planned.

Ajuda