Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 History  





2 Features  





3 Stable version release history  





4 Architecture  



4.1  Core  



4.1.1  osg  





4.1.2  OpenThreads  





4.1.3  osgUtil  





4.1.4  osgDB  





4.1.5  osgGA  







4.2  osgViewer  



4.2.1  osgProducer  







4.3  NodeKits  







5 Reception and adoption  





6 See also  





7 References  





8 External links  














OpenSceneGraph






Deutsch
Español
Français
Italiano

Português
Русский
Slovenčina
Svenska
Türkçe
Українська
 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 




In other projects  



Wikimedia Commons
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


OpenSceneGraph
Stable release

3.6.5 / January 31, 2020; 4 years ago (2020-01-31)[1]

Repository
Written inC++
Operating systemCross-platform
Type3D graphics
LicenseOpenSceneGraph Public License (LGPL based)
Websitewww.openscenegraph.org
www.openscenegraph.com

OpenSceneGraph is an open-source 3D graphics application programming interface (library or framework),[2] 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,[2] 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.

As of 2021, the project is being succeeded by VulkanSceneGraph project, a Vulkan-based library.[3] OpenSceneGraph is in maintenance phase since 2019.

History[edit]

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.[4]

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.[5][needs update]

In 2019, the project was moved to a maintenance phase, the main development effort being routed to its successor project VulkanSceneGraph.[6]

Features[edit]

Overview of the openscenegraph architecture.

Features in version 1.0:[7]

Features in version 2.8.3[8]

Features in version 2.8.4:[9]

Features in version 3.0.0:[10]

Stable version release history[edit]

Version Release Date
3.0 5 February 2013[11]
3.2 24 July 2013[12]
3.4 20 July 2015[13]
3.4.1 28 August 2017[14]
3.6 7 April 2018[15]
3.6.1 28 May 2018
3.6.2 29 June 2018
3.6.3 14 September 2018
3.6.4 26 July 2019
3.6.5 31 January 2020

Architecture[edit]

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

Core[edit]

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

osg[edit]

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[edit]

The OpenSceneGraph project contains a threading library, OpenThreads, which is a lightweight cross-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[edit]

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

osgDB[edit]

This library is tasked with loading 3D model files. It supports many 2D/3D data formats manipulators. More than 50 different formats are supported - most common are 3D data formats, such as COLLADA (.dae), 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. The other file-format loader plugins are registered with osgDB.

osgGA[edit]

This is a GUI abstraction library required for different platforms.

osgViewer[edit]

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.

osgProducer[edit]

The OSG is also shipped with a osgProducer which is just a platform-independent viewer supporting multiple graphic contexts and multi-threading.[16][17]

NodeKits[edit]

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

Reception and adoption[edit]

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.[18][19][20][21][22]

At the opensource community level, several projects have adopted OSG as a rendering backend:

OpenSceneGraph has received a javascript/WebGL implementation called OSG.JS that is used by many online 3D scene viewers including Sketchfab and Clara.io.

A wrapping from C++ to javascript through Emscripten OGStudio is also currently developed.

Among other products that use OSG must be mentioned:

See also[edit]

References[edit]

  1. ^ "Stable releases". www.openscenegraph.com.
  • ^ a b Anne Ruas; Christopher Gold (2008). Headway in Spatial Data Handling:13th International Symposium on Spatial Data Handling. Springer. p. 370. ISBN 978-3-540-68566-1.
  • ^ "VulkanSceneGraph Project". openscenegraph.github.io. Retrieved 2021-07-05.
  • ^ Martz, P.: OpenSceneGraph Quick Start Guide. Louisville, USA, 2007.
  • ^ "Support/History - osg". openscenegraph.org. Archived from the original on 26 May 2015.
  • ^ "VulkanSceneGraph Project". www.openscenegraph.com.
  • ^ "OSG News". openscenegraph.org. Archived from the original on 2011-06-09. Retrieved 2010-02-20.
  • ^ "OpenSceneGraph Adds New Features to 3D Graphics Applications". April 5, 2010. Archived from the original on April 15, 2010.
  • ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.8.4/NEWS.txt [permanent dead link]
  • ^ http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-3.0.0/NEWS.txt [permanent dead link]
  • ^ Torres, Jordi. "OpenSceneGraph 3.0 release". www.openscenegraph.org. Retrieved 2017-09-23.
  • ^ "OpenSceneGraph 3.2 release". openscenegraph.github.io. Retrieved 2017-09-23.
  • ^ "OpenSceneGraph-3.4 release". openscenegraph.org. Retrieved 2017-09-23.
  • ^ "OpenSceneGraph-3.4.1 release". openscenegraph.org. Retrieved 2017-09-23.
  • ^ "OpenSceneGraph-3.6 release". openscenegraph.org. 7 April 2018. Retrieved 2018-08-14.
  • ^ Aylett, Ruth. "Introduction to Open Scene Graph" (PDF). Heriot Watt University.
  • ^ "Introduction to the OpenSceneGraph". openscenegraph.sourceforge.net. Retrieved 2021-07-05.
  • ^ "Use cases". www.openscenegraph.com.
  • ^ "OpenSceneGraph". openscenegraph.github.io. Retrieved 13 March 2024.
  • ^ "Virtual Terrain Project". vterrain.org.
  • ^ "ViewTec Inc. - Products". www.viewtec.net. Archived from the original on 2009-02-28.
  • ^ "Delta3dengine 2023". easd-design.com. Retrieved 13 March 2024.
  • External links[edit]


    Retrieved from "https://en.wikipedia.org/w/index.php?title=OpenSceneGraph&oldid=1216354867"

    Category: 
    3D scenegraph APIs
    Hidden categories: 
    All articles with dead external links
    Articles with dead external links from February 2022
    Articles with permanently dead external links
    Articles lacking reliable references from March 2024
    All articles lacking reliable references
    Wikipedia articles in need of updating from March 2024
    All Wikipedia articles in need of updating
     



    This page was last edited on 30 March 2024, at 14:15 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki