OpenSceneGraph - OpenSceneGraph
![]() | |
| Versão estável | 3.6.5 / 31 de janeiro de 2020
|
|---|---|
| Repositório |
|
| Escrito em | C ++ |
| Sistema operacional | Plataforma cruzada |
| Modelo | Gráficos 3D |
| Licença | Licença Pública OpenSceneGraph ( baseada em LGPL ) |
| Local na rede Internet |
www www |
OpenSceneGraph é uma interface de programação de aplicativos gráficos 3D de código aberto (biblioteca ou estrutura), usada por desenvolvedores de aplicativos em campos como simulação visual , jogos de computador , realidade virtual , visualização científica e modelagem .
O kit de ferramentas é escrito em C ++ padrão usando OpenGL e é executado em uma variedade de sistemas operacionais, incluindo Microsoft Windows , macOS , Linux , IRIX , Solaris e FreeBSD . Desde a versão 3.0.0, OpenSceneGraph também suporta o desenvolvimento de aplicativos para plataformas móveis, nomeadamente iOS e Android .
Em 2021, o projeto está sendo sucedido pelo projeto VulkanSceneGraph, uma biblioteca baseada em Vulkan. OpenSceneGraph está em fase de manutenção desde 2019.
História
O projeto OpenSceneGraph foi iniciado por Don Burns em 1998. Robert Osfield juntou-se ao projeto em 1999, trabalhando na portabilidade de componentes acabados para o Microsoft Windows. O projeto tornou-se open source em setembro de 1999 e o site oficial do projeto foi criado. No final do ano, Osfield assumiu o projeto e começou a refatoração extensiva da base de código existente, colocando ênfase na modernização, adotando padrões C ++ modernos e padrões de design .
Em abril de 2001, levando em consideração a crescente comunidade de usuários e o interesse do público, Robert Osfield criou o OpenSceneGraph Professional Services, fornecendo suporte comercial, consultoria e serviços de treinamento. Isso marca a profissionalização total do projeto.
A primeira versão estável oficial do OpenSceneGraph foi a versão 1.0, lançada em 2005. Uma versão estendida 2.0 surgiu em 2007, adicionando suporte para sistemas multi-core e multi-gpu, vários NodeKits importantes e uso do sistema de compilação multiplataforma unificado CMake . Livros e manuais do usuário foram introduzidos.
O projeto tem crescido rapidamente e se tornado mais popular desde então. Existem mais de 530 contribuidores assinados com a versão estável atual e a lista de correio oficial contém milhares de nomes.
Em 2019, o projeto foi movido para uma fase de manutenção, o principal esforço de desenvolvimento sendo direcionado para seu projeto sucessor VulkanSceneGraph.
Recursos
Recursos na versão 1.0:
- Uma implementação de gráfico de cena rica em recursos e amplamente adotada
- Suporte para recursos de aumento de desempenho
- Ver tronco , feição pequena e seleção de oclusão
- Nível de detalhe
- Classificação de estado e atualização de estado lento
- Atalhos OpenGL e extensões mais recentes
- Multi-threading e otimização de banco de dados
- Suporte para OpenGL, de 1.1 a 2.0, incluindo as extensões mais recentes
- Suporte fortemente acoplado para OpenGL Shading Language, desenvolvido em conjunto com 3Dlabs
- Suporte para uma ampla gama de formatos de imagens 2D e banco de dados 3D, com carregadores disponíveis para formatos como OpenFlight , TerraPage , OBJ , 3DS , JPEG , PNG e GeoTIFF
- Efeitos de partícula
- Suporte para texto TrueType com suavização de borda
- Suporte perfeito para objetos framebuffer , pbuffers e efeitos de renderização para textura de buffer de quadro
- Suporte para paginação de banco de dados multi-threaded, que pode ser usado em conjunto com todos os bancos de dados 3D e carregadores de imagens
- Geração de banco de dados paginado de terreno geoespacial em grande escala
- Suporte de introspecção para bibliotecas centrais, permitindo que aplicativos externos consultem, obtenham, definam e operem em todas as classes no gráfico de cena, por meio de uma interface genérica
- Suporte multiencadeado e configurável para múltiplas máquinas CPU / GPU
Recursos na versão 2.8.3
- Suporte para Mac OS X 10.6 (Snow Leopard)
- Suporte para ImageIO no Mac OS X
- Exportação de formato de arquivo 3DS e conversão de arquivo
- Tecnologia Autodesk FBX integrada
- Suporte FFmpeg integrado para exibição de conteúdo de arquivo de vídeo em aplicativos 3D.
- Suporte ao formato de arquivo PLY
Recursos na versão 2.8.4:
- Suporte de construção VS2010
Recursos na versão 3.0.0:
- Suporte para OpenGL ES 1.1 e OpenGL ES 2.0
- Suporte para OpenGL 3.x e 4.x junto com extensões OpenGL associadas
- Suporte para Android em tablets e telefones
- Suporte para IOS em tablets e telefones (aplicativos de usuários finais já foram aceitos na App Store)
- Introdução do aplicativo Present3D para apresentações imersivas em 3D
- Novos serializadores extensíveis que fornecem novos formatos nativos de arquivo .osgb binário, .osgt ascii e .osgx xml
- Nova arquitetura de metadados serializável generalizada
- Nova biblioteca osgQt que facilita a integração do! OpenSceneGraph com Qt, incluindo navegação na web via QWebKit.
- Novo plugin FBX baseado no Audodesk FBX DSK que permite a leitura do formato .fbx de autoria 3D e intercâmbio
- Novo plugin directshow para lidar com filmes no Windows
- Novo plugin do pov para exportar uma cena para o formato POV-Ray, permitindo o uso do POV-Ray para traçar raios fotorrealistas
- Novo plugin ply para ler arquivos ply
- Plugin 3ds renovado para leitura e gravação de arquivos .3ds
- Plugin dxf reformulado para leitura e gravação de arquivos .dxf
- Suporte para Cocoa e construção de OSX de 64 bits
Histórico de lançamento de versão estável
| Versão | Data de lançamento |
|---|---|
| 3,0 | 5 de fevereiro de 2013 |
| 3,2 | 24 de julho de 2013 |
| 3,4 | 20 de julho de 2015 |
| 3.4.1 | 28 de agosto de 2017 |
| 3,6 | 7 de abril de 2018 |
| 3.6.1 | 28 de maio de 2018 |
| 3.6.2 | 29 de junho de 2018 |
| 3.6.3 | 14 de setembro de 2018 |
| 3.6.4 | 26 de julho de 2019 |
| 3.6.5 | 31 de janeiro de 2020 |
Arquitetura
A arquitetura da biblioteca pode ser separada em três subconjuntos principais - a biblioteca OpenSceneGraph principal, osgViewer e um conjunto de NodeKits.
Essencial
A base da biblioteca OpenSceneGraph pode ser dividida em quatro módulos principais.
osg
O núcleo do OpenSceneGraph fornece classes e métodos para construção e manipulação do gráfico de cena . Ele contém classes que representam vários tipos de nós , geometria de cena, abstração de estado OpenGL , transformações geométricas , bem como classes matemáticas para vetor 2D e 3D e operações de matriz . O gerenciamento avançado de memória também está incluído.
OpenThreads
O projeto OpenSceneGraph contém uma biblioteca de threading, OpenThreads , que é um modelo de thread de plataforma cruzada leve . O objetivo é fornecer uma interface de thread orientada a objetos (OO) mínima e completa para programadores C ++ . É vagamente modelado na API de thread Java e nos padrões POSIX Threads .
A arquitetura do OpenThreads é projetada em torno de modelos de thread "trocáveis" que são definidos em tempo de compilação em uma biblioteca de objetos compartilhados . É importante notar que, embora um projeto de padrão de fábrica pudesse ter sido usado para atingir o objetivo da interface genérica , seria necessário que o programador alocasse cada um dos 4 tipos fundamentais (Thread, Mutex, Barrier e Condition) no pilha . Devido ao custo associado à alocação de heap das implementações concretas subjacentes dessas construções em algumas plataformas, tal alocação foi considerada inaceitável no momento em que esta biblioteca foi originalmente escrita e, portanto, o padrão de fábrica não foi usado.
Em vez disso, uma técnica um tanto confusa - mas eficaz - foi escolhida para fornecer o ocultamento de dados / implementação necessário . Esta técnica usa ponteiros void privados para encapsular os dados privados do objeto. Os ponteiros vazios na verdade apontam para estruturas de dados concretas, mas fornecem uma interface uniforme para o dso.
O objetivo do design do OpenThreads é construir implementações otimizadas usando construções de multiprocessamento otimizadas para plataforma, como os métodos sproc usados em IRIX e threads do Windows.
osgUtil
osgUtil contém a funcionalidade de back-end de renderização e utilitários que cuidam da travessia do grafo de cena , otimização da renderização e transformação da cena em um fluxo de chamadas de API OpenGL . Ele também fornece meios de interação básica com a cena, como seleção de objetos.
osgDB
Esta biblioteca tem a tarefa de carregar arquivos de modelo 3D. Suporta muitos manipuladores de formatos de dados 2D / 3D . Mais de 50 formatos diferentes são suportados - os mais comuns são formatos de dados 3D, como COLLADA (.dae), LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX (.x) e muitos outros. OpenSceneGraph também fornece seu próprio formato ASCII .osg nativo . Existem exportadores para o formato .osg disponíveis para Blender , Maya e 3D Studio MAX.
Formatos de imagem suportados incluem .rgb, .gif , .jpg , .png , .tiff , .PIC, .bmp , .dds , .tga e QuickTime .
Este módulo também fornece abstração de dispositivo de E / S. Os outros plug-ins do carregador de formato de arquivo são registrados com osgDB.
osgGA
Esta é uma biblioteca de abstração de GUI necessária para diferentes plataformas.
osgViewer
A Biblioteca osgViewer fornece uma maneira rápida e fácil de visualizar a cena gráfica. É também uma abstração independente de plataforma para várias interfaces de sistema de janela .
osgProducer
O OSG também é fornecido com um osgProducer, que é apenas um visualizador independente de plataforma que suporta múltiplos contextos gráficos e multi-threading.
NodeKits
A distribuição do projeto também contém uma variedade dos chamados NodeKits . Estas são soluções de problemas comuns e freqüentemente usados componentes de aplicativos 3D e algoritmos gráficos mais avançados. Entre os mais significativos estão
- osgAnimation - Uso, animação e transformação de modelos esqueléticos.
- osgFX - Efeitos especiais e pós-processamento de imagens.
- osgManipulator - Manipulação interativa de cenas 3D.
- osgParticle - Uso avançado do sistema de partículas .
- osgQt - Integração com o kit de ferramentas Qt e incorporação de elementos QtGUI em aplicativos OSG.
- osgShadow - Framework para técnicas de renderização de sombra.
- osgTerrain - Renderização extensiva de terreno .
- osgText - Fontes suavizadas de qualidade, suporte a fontes TrueType e FreeType.
- osgVolume - Renderização de volume e manipulação de dados volumétricos.
- osgWidget - Criação simples de GUI .
Recepção e adoção
OpenSceneGraph não fornece nenhuma funcionalidade para lógica de "jogo" superior, é uma ferramenta apenas de renderização. Existem vários motores em grande escala para a criação de jogos de computador (ou os chamados serious games ) usando OSG como base de renderização gráfica, sendo o framework Delta3D o framework mais comum .
Há uma grande variedade de produtos de software desenvolvidos com base no OpenSceneGraph; entre outros, Virtual Terrain Project e ViewTec TerrainView . A lista de usuários OSG contém empresas como Boeing , NASA , FlightGear , Norcontrol e muitas outras.
No nível da comunidade de código aberto, vários projetos adotaram OSG como back-end de renderização:
- FlightGear (software de simulação de vôo)
- OpenMW (mecanismo de código aberto para Morrowind)
OpenSceneGraph recebeu uma implementação javascript / WebGL chamada OSG.JS que é usada por muitos visualizadores de cena 3D online, incluindo Sketchfab e Clara.io .
Um empacotamento de C ++ para javascript por meio do Emscripten OGStudio também está desenvolvido atualmente.
Entre outros produtos que utilizam OSG devem ser mencionados:
- Remo 3D OSG Scene Editor
- http://www.palomino3d.org/
Veja também
- OSG.JS
- OpenGL
- OGRO
- Delta3D
- Irrlicht Engine
- Crystal Space
- Biblioteca de visualização
- OpenSG
- ossimPlanet
- Grome
- Abra o Inventor
- Unity (motor de jogo)
Referências
links externos
-
www
.openscenegraph - site oficial do projeto.org - Binários AlphaPixel OSG - binários pré-compilados do Windows, Mac e Linux x86 e x64.
- SigmaOSG - Tutoriais OpenSceneGraph (contém todo o material OSGHelp anterior do site OSGHelp retirado)
- Scenegraphs e Openscenegraph para desenvolvimento de software 3D
- OpenSceneGraph - página da web de informações da biblioteca em www.OpenGL.org (uma das quatro bibliotecas promovidas)
