OpenSceneGraph - Le Bottin des Jeux Linux

OpenSceneGraph

Specifications

Title: OpenSceneGraph Type: Tool
Genre: Development Status:
Category: Development ➤ Engine ➤ 2D & 3D ➤ Misc. Commercial:
Tags: 3D rendering engine; Multi-platform Demo:
Released: Latest : 3.4.1-Rc1 / Dev : C18be2f Package Name: libopenscenegraph-dev
Date: 2017-08-09 Extern Repo:
License: LGPL v2.1 Repo: Debian
Perspective: Third & First person Package: ✓
Visual: 2D & 3D Binary: ✓
Pacing: Real Time Source: ✓
Played: Single & Multi PDA:
Quality (record): 5 stars Quality (game):
Contrib.: Goupil & Louis ID: 15264
Created: 2017-08-12 Updated: 2017-08-12

Summary

[fr]: Une boîte à outils graphique / un moteur 3D libre et multi-plateforme de haut niveau pour le développement d'applications graphiques telles que les simulateurs de vol, les jeux, la réalité virtuelle ou la visualisation scientifique. En fournissant une couche d'abstraction au dessus d'OpenGL, il libère le développeur de la mise en œuvre et de l'optimisation des appels graphiques de bas niveau, et fournit de nombreux utilitaires supplémentaires pour le développement rapide d'applications graphiques. [en]: A libre multi-platform high-level graphical toolkit / 3D engine for the development of graphic applications such as flight simulators, games, virtual reality or scientific visualization. By providing an abstraction layer above OpenGL, it frees the developer from the implementation and optimization of low-level graphics calls, and provides many additional utilities for the rapid development of graphics applications.

Videos

Quelques exemples / Some examples (Showcase) :

Links

Website & videos
[Homepage] [Dev site] [Features/About] [Screenshots] [Videos t ts gd id r lp d d d d d d d d d d g[fr] g[de] g[ru] g[pl] g[cz] g[sp] g[pt] g[it] g[tr] g] [WIKI] [FAQ] [RSS] [Changelog 1 2 3]

Commercial : (empty)

Resources
• (empty)
Technical informations
[Open Hub] [PCGamingWiki] [MobyGames]

Social
Devs (OpenSceneGraph Team [fr] [en]) : [Site 1 2] [twitter] [YouTube] [Interview 1 2]
Game : [Blog] [Forums] [twitter] [YouTube]

On other sites
[Wikipedia (OpenSceneGraph) [fr] [en] [de]]
[Wikipedia (Graphe de scène / Scene graph / Szenengraph) [fr] [en] [de]]
[Debian]

Reviews
[metacritic]

News / Source of this Entry (SotE) / News (SotN)

Description [fr]

Un moteur 3D pour le développement d'applications graphiques, dont les jeux, par l'OpenSceneGraph Team (initié par Don Burns & Robert Osfield).
En C ++.

OpenSceneGraph (OSG) est une boîte à outils graphique / un moteur 3D libre et multi-plateforme de haut niveau pour le développement d'applications graphiques telles que les simulateurs de vol, les jeux, la réalité virtuelle ou la visualisation scientifique. En fournissant une couche d'abstraction au dessus d'OpenGL, il libère le développeur de la mise en œuvre et de l'optimisation des appels graphiques de bas niveau, et fournit de nombreux utilitaires supplémentaires pour le développement rapide d'applications graphiques.

Utilisé par ces jeux / Used by these games : FlightGear, OpenMW,


L'OpenSceneGraph est une trousse d'outils graphiques 3D haute performance open source, utilisée par les développeurs d'applications dans des domaines tels que la simulation visuelle, les jeux, la réalité virtuelle, la visualisation scientifique et la modélisation. Écrit entièrement en C ++ standard et OpenGL, il fonctionne sur tous les systèmes d'exploitation Windows, OSX, GNU / Linux, IRIX, Solaris, HP-Ux, AIX et FreeBSD. L'OpenSceneGraph est maintenant bien établi en tant que technologie de graphe de scène leader dans le monde, largement utilisée dans les domaines vis-sim, espace, science, pétrole, jeux, et réalité virtuelle.


Debian (traduction partielle du Bottin) :

Graphe de scène 3D

Une boîte à outils portative et graphique de haut niveau pour le développement d'applications graphiques de haute performance telles que les simulateurs de vol, les jeux, la réalité virtuelle ou la visualisation scientifique. En fournissant un framework orienté objet au dessus d'OpenGL, il libère le développeur de la mise en œuvre et de l'optimisation des appels graphiques de bas niveau, et fournit de nombreux utilitaires supplémentaires pour le développement rapide d'applications graphiques.


Wikipedia :

OpenSceneGraph est un moteur 3D open source employé essentiellement dans le développement d'outils de visualisation et de simulations graphiques. Son utilisation est libre, même au sein de programmes à vocation commerciale, à condition de respecter les termes de la licence LGPL.

Il est entièrement programmé en C++ et construit autour de OpenGL, ce qui lui permet de fonctionner sur une grande variété de systèmes tel que IRIX, Linux, FreeBSD, Mac OS X, Windows etc.

Historique

Le projet OpenSceneGraph fut initié en 1998 par Don Burns. Initialement développé sur son temps libre, il créa ensuite en 2001 sa propre société tout en continuant à participer au projet. Entre temps, Robert Osfield rejoignit l'équipe en 1999 puis le code source d'OpenSceneGraph fut rendu public sous les termes de la licence LGPL en septembre de la même année.

Utilisations

L'utilisation de OpenSceneGraph est assez répandue dans le domaine de la visualisation graphique, des simulations 3d et de la réalité virtuelle. Quelques jeux vidéo ont également été créés à l'aide de ce moteur 3d. En effet, bien que ce ne soit pas une cible privilégiée, OpenSceneGraph dispose de toutes les fonctionnalités nécessaires.

Fonctionnalités

• Programmé en C++ et Orienté objet
• Graphe de scène
• Multi-texturing
• Niveaux de détails
• Effets de particules
• Support des shaders
• Police de caractères TrueType
• Intégration possible dans d'autres bibliothèques

Description [en]

The OpenSceneGraph is an open source high performance 3D graphics toolkit, used by application developers in fields such as visual simulation, games, virtual reality, scientific visualization and modelling. Written entirely in Standard C++ and OpenGL it runs on all Windows platforms, OSX, GNU/Linux, IRIX, Solaris, HP-Ux, AIX and FreeBSD operating systems. The OpenSceneGraph is now well established as the world leading scene graph technology, used widely in the vis-sim, space, scientific, oil-gas, games and virtual reality industries.


Debian:

3D scene graph

A portable, high level graphics toolkit for the development of high performance graphics applications such as flight simulators, games, virtual reality or scientific visualization. Providing an object orientated framework on top of OpenGL, it frees the developer from implementing and optimizing low level graphics calls, and provide many additional utilities for rapid development of graphics applications.


Wikipedia:

OpenSceneGraph is an open source 3D graphics application programming interface, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling.

The toolkit is written in standard C++ using OpenGL, and runs on a variety of operating systems including Microsoft Windows, macOS, Linux, IRIX, Solaris and FreeBSD. Since version 3.0.0, OpenSceneGraph also supports application development for mobile platforms, namely iOS and Android.

History

The OpenSceneGraph project was initiated by Don Burns in 1998. Robert Osfield joined the project during 1999, working on porting finished components for Microsoft Windows. The project went open source in September 1999 and the official project website was created. Towards the end of the year Osfield took over the project and began extensive refactoring of the existing codebase, putting emphasis on modernisation, embracing modern C++ standards and design patterns.

In April 2001, taking into account growing community of users and interest of public, Robert Osfield created OpenSceneGraph Professional Services, providing commercial support, consulting and training services. This marks full professionalization of the project.

The first official stable version of OpenSceneGraph was version 1.0, released in 2005. An extended version 2.0 followed in 2007, adding support for multi-core and multi-gpu systems, several important NodeKits and usage of unified multiplatform build system CMake. Books and user handbooks were introduced.

The project has been quickly growing and becoming more popular ever since. There are more than 530 contributors signed under current stable version, and the official mailing list contains thousands of names.

Features

Features in version 1.0:

• A feature-rich and widely adopted scene graph implementation
• Support for performance increasing features
⚬ View frustum, small feature and occlusion culling
⚬ Level of detail
⚬ State sorting and lazy state updating
⚬ OpenGL fast paths and latest extensions
⚬ Multi-threading and database optimization
• Support for OpenGL, from 1.1 through 2.0 including the latest extensions
• Tightly coupled support for OpenGL Shading Language, developed in conjunction with 3Dlabs
• Support for a wide range of 2D image and 3D database formats, with loaders available for formats such as OpenFlight, TerraPage, OBJ, 3DS, JPEG, PNG and GeoTIFF
• Particle effects
• Support for anti-aliased TrueType text
• Seamless support for framebuffer objects, pbuffers and frame buffer render-to-texture effects
• Multi-threaded database paging support, which can be used in conjunction with all 3D database and image loaders
• Large scale, whole earth geospatial terrain paged database generation
• Introspection support for core libraries allowing external applications to query, get, set and operate on all classes in the scene graph, via a generic interface
• Multi-threaded and configurable support for multiple CPU/multiple GPU machines

Features in version 2.8.3

• Mac OS X 10.6 (Snow Leopard) support
• ImageIO support on Mac OS X
• 3DS file format export and file conversion
• Integrated Autodesk FBX technology
• Integrated FFmpeg support for displaying video file content in 3D applications.
• PLY file format support

Features in version 2.8.4:

• VS2010 build support

Features in version 3.0.0:

• OpenGL ES 1.1, and OpenGL ES 2.0 support
• OpenGL 3.x and 4.x support along with associated OpenGL extensions
• Support for Android on tablets and phones
• Support for IOS on tablets and phones (end users applications have already been accepted on the App Store)
• Introduction of Present3D application for immersive 3D presentations
• New extensible serializers that provide new .osgb binary, .osgt ascii and .osgx xml file native formats
• New generalized serializable metadata architecture
• New osgQt library that makes it straight forward to integrate !OpenSceneGraph with Qt, including web browsing via QWebKit.
• New FBX plugin based on the Audodesk FBX DSK that enables reading of the .fbx 3D authoring and interchange format
• New directshow plugin for handling movies under Windows
• New pov plugin for exporting a scene to POV-Ray format, enabling use of POV-Ray to do photo-realistic ray tracing
• New ply plugin for reading ply files
• Revamped 3ds plugin for reading and writing of .3ds files
• Revamped dxf plugin for reading and writing of .dxf files
• Support for Cocoa and 64bit OSX build

Stable Version Release History

(...)

Architecture

Library architecture can be separated into three main subsets — the core OpenSceneGraph library, osgViewer and a set of NodeKits.

Core

The base of OpenSceneGraph library can be further divided into four main modules.

osg

The core of OpenSceneGraph provides classes and methods for construction and manipulation of the scene graph. It contains classes representing various types of nodes, scene geometry, OpenGL state abstraction, geometric transformations, as well as mathematical classes for 2D and 3D vector and matrix operations. Advanced memory management is also included.

OpenThreads

The OpenSceneGraph project contains a threading library, OpenThreads, which is a lightweight multi-platform thread model. It is intended to provide a minimal and complete Object-Oriented (OO) thread interface for C++ programmers. It is loosely modeled on the Java thread API, and the POSIX Threads standards.

The architecture of OpenThreads is designed around "swappable" thread models which are defined at compile-time in a shared object library. It is of importance to note that while a factory pattern design could have been used to achieve the goal of generic interface, it would have required the programmer to allocate each of the 4 fundamental types (Thread, Mutex, Barrier, & Condition) on the heap. Due to the cost associated with heap allocation of the underlying concrete implementations of these constructs on some platforms, such allocation was deemed unacceptable at the time this library was originally written, and thus the factory pattern was not used.

Instead, a somewhat abstruse - but effective - technique was chosen to provide the necessary data/implementation hiding. This technique uses private void pointers to encapsulate object private data. The void pointers actually point at concrete data structures, but give a uniform interface to the dso.

The design goal of OpenThreads is to construct optimized implementations using platform optimized multi-processing constructs such as the sproc methods used on IRIX, and Windows threads.

osgUtil

osgUtil contains rendering backend functionality and utilities taking care of scene graph traversal, rendering optimisation and transforming the scene into a stream of OpenGL calls. It also provides means of basic interaction with scene, such as object picking.

osgDB

OpenSceneGraph also comes with a large collection of database loaders and many 2D/3D data formats manipulators. More than 50 different formats are supported - most common 3D data formats, such as COLLADA, LightWave (.lwo), Wavefront (.obj), OpenFlight (.flt), 3D Studio Max (.3ds), DirectX (.x) and many others. OpenSceneGraph also provides its own native ASCII .osg format. There are exporters into .osg format available for Blender, Maya and 3D Studio MAX.

Supported picture formats include .rgb, .gif, .jpg, .png, .tiff, .pic, .bmp, .dds, .tga and quicktime.

This module also provides I/O device abstraction.

osgViewer

osgViewer Library provides a quick and easy way of visualizing the graphics scene. It is also a platform-independent abstraction for various window system interfaces.

NodeKits

Project distribution also contains a variety of so-called NodeKits. These are solutions of common problems and frequently used more advanced 3D application components and graphics algorithms. Among the most significant are

• osgAnimation — Skeletal models usage, animating and morphing.
• osgFX — Special effects and image postprocessing.
• osgManipulator — Interactive 3D scene manipulation.
• osgParticle — Advanced particle system usage.
• osgQt — Integration with Qt toolkit and incorporation of QtGUI elements into OSG applications.
• osgShadow — Framework for shadow rendering techniques.
• osgTerrain — Extensive terrain rendering.
• osgText — Quality antialiased fonts, TrueType and FreeType font support.
• osgVolume — Volume rendering and volumetric data manipulation.
• osgWidget — Simple GUI creation.

Reception and adoption

OpenSceneGraph doesn't provide any functionality for higher "gaming" logic, it is a rendering-only tool. There are several full-scale engines for computer games (or so-called serious games) creation using OSG as a base of graphics rendering, the most common framework being Delta3D.

There is a great variety of software products built on top of OpenSceneGraph; among others, Virtual Terrain Project and ViewTec TerrainView. List of OSG users contains companies as Boeing, NASA, FlightGear, Norcontrol and many others.

OpenSceneGraph is used by many online 3D scene viewers including Sketchfab and Clara.io.

• FlightGear
• OpenMW
• Remo 3D
• http://www.palomino3d.org/

Features

☑ Usage and Markets

The OpenSceneGraph is open source, real-time graphics middle-ware used by application developers in fields that range from visual simulation (flight, marine, vehicle, space simulator) to virtual and augmented reality, to medical and scientific visualisation, to education and games.

☑ Cross Platform

The OpenSceneGraph is cross platform running on small devices such as embedded graphics platforms to phones, tablets that use OpenGL ES, to laptops and desktops using OpenGL all the way up to dedicated image generator clusters used in full scale simulators and immersive 3D displays.

☑ Licensing

The OpenSceneGraph is published under the OpenSceneGraph Public License, which is a relaxation of the Less GNU Public License (LGPL) that permits usage in commercial application that require static linking or embed systems.

☑ Technology

The OpenSceneGraph is written in Standard C++, taking advantage of the standard template library (STL) for containers. The software uses the scene graph approach to representing 3D worlds as a graph of node that logical and spatially group subgraphs for behaviour and high performance.

OpenGL 1.0 through to OpenGL 4.2, and OpenGL ES 1.1 and 2.0 are supported making it possible to support both old hardware and operating systems through to the latest mobile devices and all the features of cutting edge desktop graphics systems thanks to the software run time extension checking.

Design Patterns are used throughout the software making it easier to maintain and understand how our software works as well as providing a good example of usage. The software is kept modular and extensible enabling end users to only utilize the components they need and to allow customisation when required.

The key strengths of OpenSceneGraph are its performance, scalability, portability and the productivity gains associated with using a fully featured scene graph, in more detail:

• Performance
Supports view-frustum culling, occlusion culling, small feature culling, Level Of Detail (LOD) nodes, OpenGL state sorting, vertex arrays, vertex buffer objects, OpenGL Shader Language and display lists as part of the core scene graph. These together make the OpenSceneGraph one of the highest performance graphics toolkit available. The OpenSceneGraph also supports easy customization of the drawing process, such as implementation of Continuous Level of Detail (CLOD) meshes on top of the scene graph (see Virtual Terrain Project and Delta3D).

• Productivity
The core scene graph encapsulates the majority of OpenGL functionality including the latest extensions, provides rendering optimizations such as culling and sorting, and a whole set of add-on libraries which make it possible to develop high-performance graphics applications very rapidly. The application developer is freed to concentrate on content and how that content is controlled rather than low level coding.

Combining lessons learned from established scene graphs like Performer and Open Inventor, with modern software engineering methods like Design Patterns, along with a great deal of feedback early on in the development cycle, it has been possible to design a library that is clean and extensible. This has made it easy for users to adopt to the OpenSceneGraph and to integrate it with their own applications.

• Database loaders
For reading and writing databases the database library (osgDB) adds support for a wide variety of database formats via an extensible dynamic plugin mechanism - the distribution now includes 55 separate plugins for loading various 3D database and image formats.

3D database loaders include COLLADA, LightWave (.lwo), Alias Wavefront (.obj), OpenFlight (.flt), TerraPage (.txp) including multi-threaded paging support, Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Peformer (.pfb), AutoCAd? (.dxf), Quake Character Models (.md2). Direct X (.x), and Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl), Designer Workshop (.dw) and AC3D (.ac) and the native .osg ASCII format.

Image loaders include .rgb, .gif, .jpg, .png, .tiff, .pic, .bmp, .dds (include compressed mip mapped imagery), .tga and quicktime (under OSX).

A full range of high quality, anti-aliased fonts can also be loaded via the freetype plugin, and image based fonts can be loaded via the .txf plugin.

Users can also generate large scale geospatial (multi GB) terrain databases via the companion project (VirtualPlanetBuilder), and use the OpenSceneGraph's native database paging support to view these database.

• Node Kits
The scene graph also has a set of Node Kits which are separate libraries that can be compiled in with your applications or loaded in at runtime. NodeKits available with OpenSceneGraph distribution are:
⚬ osgParticle - for particle systems
⚬ osgText - for high quality anti-aliased text
⚬ osgFX - special effects framework
⚬ osgShadow - shadow framework
⚬ osgManipulator - 3d interactive controls
⚬ osgSim - visual simulation centric effects
⚬ osgTerrain - terrain rendering
⚬ osgAnimation - character and rigid body animation
⚬ osgVolume - high quality volume rendering (with Dicom plugin for support of medical datasets)

• Portability
The core scene graph has been designed to have minimal dependency on any specific platform, requiring little more than Standard C++ and OpenGL. This has allowed the scene graph to be rapidly ported to a wide range of platforms - originally developed on IRIX, then ported to Linux, then to Windows, then FreeBSD, Mac OSX, Solaris, HP-UX, AIX, PlayStation2 and even iOS and Android!

The core scene graph library is completely windowing system independent, which makes it easy for users to add their own window-specific libraries and applications on top. In the OpenSceneGraph distribution the osgViewer library provides native windowing support under Windows (Win32), Unices (X11) and OSX (Carbon). The osgViewer library can also be easily integrated with other windowing toolkits, such as Qt, GLUT, FLTK, SDL, WxWidget, Cocoa and MFC. Examples of integration with these toolkits are included in the OpenSceneGraph distribution.

• Scalability
The scene graph will not only run on portables all the way up to high end multi-core, multi-gpu systems and cluster. This is possible because the core scene graph supports multiple graphics contexts for both OpenGL display lists and texture objects, and the cull and draw traversals have been designed to cache rendering data locally and use the scene graph almost entirely as a read-only operation. This allows multiple cull-draw pairs to run on multiple CPU's which are bound to multiple graphics subsystems. Support for multiple graphic context and multi-threading is all available out-of-the-box via osgViewer - all the examples in the distribution can run multi-threaded and multi-gpu.

• Multi-language support
Java, Lua and Python bindings for the OpenSceneGraph are available as Community projects.