OpenSceneGraph
Encyclopedia
OpenSceneGraph is an open source
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...

 3D graphics application programming interface
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...

, used by application developers in fields such as visual simulation, computer games, virtual reality
Virtual reality
Virtual reality , also known as virtuality, is a term that applies to computer-simulated environments that can simulate physical presence in places in the real world, as well as in imaginary worlds...

, scientific visualization
Scientific visualization
Scientific visualization is an interdisciplinary branch of science according to Friendly "primarily concerned with the visualization of three-dimensional phenomena , where the emphasis is on realistic renderings of volumes, surfaces, illumination sources, and so forth, perhaps...

 and modeling.

The toolkit is written in standard C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 using OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

, and runs on a variety of operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

s including Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...

, Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...

, Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

, IRIX
IRIX
IRIX is a computer operating system developed by Silicon Graphics, Inc. to run natively on their 32- and 64-bit MIPS architecture workstations and servers. It was based on UNIX System V with BSD extensions. IRIX was the first operating system to include the XFS file system.The last major version...

, Solaris and FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...

.

Development began on OpenScenegraph in 1998 by Don Burns with Robert Osfield coming aboard in 1999. The project doesn't track downloads and has no way to measure the number of active users. However, as of 2006, the osg-users mailing list exceeded 1,500 subscribers.

Features

Features in version 1.0:
  • A feature-rich and widely adopted scene graph
    Scene graph
    A scene graph is a general data structure commonly used by vector-based graphics editing applications and modern computer games. Examples of such programs include Acrobat 3D, Adobe Illustrator, AutoCAD, CorelDRAW, OpenSceneGraph, OpenSG, VRML97, and X3D....

     implementation
  • Support for performance increasing features
    1. View frustum, small feature and occlusion culling
    2. Level of detail
      Level of detail
      In computer graphics, accounting for level of detail involves decreasing the complexity of a 3D object representation as it moves away from the viewer or according other metrics such as object importance, eye-space speed or position....

    3. State sorting and lazy state updating
    4. OpenGL fast paths and latest extensions
    5. 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
    .3ds
    3DS is one of the file formats used by the Autodesk 3ds Max 3D modeling, animation and rendering software.It was the native file format of the old Autodesk 3D Studio DOS , which was popular until its successor replaced it in April 1996...

    , JPEG
    JPEG
    In computing, JPEG . The degree of compression can be adjusted, allowing a selectable tradeoff between storage size and image quality. JPEG typically achieves 10:1 compression with little perceptible loss in image quality....

    , PNG and GeoTIFF
    GeoTIFF
    GeoTIFF is a public domain metadata standard which allows georeferencing information to be embedded within a TIFF file. The potential additional information includes map projection, coordinate systems, ellipsoids, datums, and everything else necessary to establish the exact spatial reference for...

  • Particle effects
    Particle system
    The term particle system refers to a computer graphics technique to simulate certain fuzzy phenomena, which are otherwise very hard to reproduce with conventional rendering techniques...

  • Support for anti-aliased TrueType
    TrueType
    TrueType is an outline font standard originally developed by Apple Computer in the late 1980s as a competitor to Adobe's Type 1 fonts used in PostScript...

     text
  • Seamless support for framebuffer
    Framebuffer
    A framebuffer is a video output device that drives a video display from a memory buffer containing a complete frame of data.The information in the memory buffer typically consists of color values for every pixel on the screen...

     objects, pbuffers
    Pixel buffer
    Pixel buffer or pBuffer is an extension to OpenGL which allows to do off-screen rendering. It expands upon Vertex Buffer Objects in order to store not only vertex data but also pixel data into the buffer objects....

     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

Stable Version Release History

Version Release Date
2.0.0
2.2.0
2.4.0
2.6.0
2.6.1
2.8.0
2.8.1
2.8.2
2.8.3
2.8.4
3.0.0
3.0.1

OpenThreads

The OpenSceneGraph project contains a threading library, OpenThreads, which is a lightweight cross-platform thread
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...

 model. It is intended to provide a minimal and complete Object-Oriented (OO) thread interface for C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 programmers. It is loosely modeled on the Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 thread API, and the POSIX Threads standards.

The architecture
Architecture
Architecture is both the process and product of planning, designing and construction. Architectural works, in the material form of buildings, are often perceived as cultural and political symbols and as works of art...

 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
Factory method pattern
The factory method pattern is an object-oriented design pattern to implement the concept of factories. Like other creational patterns, it deals with the problem of creating objects without specifying the exact class of object that will be created.The creation of an object often requires complex...

 could have been used to achieve the goal of generic interface
Interface (computer science)
In the field of computer science, an interface is a tool and concept that refers to a point of interaction between components, and is applicable at the level of both hardware and software...

, 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.

Example usages

These software products use OpenSceneGraph:
  • FlightGear
    FlightGear
    FlightGear Flight Simulator is a free, open-source multi-platform flight simulator developed by the FlightGear project since 1997....

     (since version 1.9.0)

See also

  • OpenGL
    OpenGL
    OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

  • OGRE
    OGRE
    OGRE is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics...

  • Delta3D
    Delta3d
    Delta3D is an Open Source Software gaming/simulation engine API. Primarily managed and supported by the Modeling, Virtual Environments, and Simulation Institute at the Naval Postgraduate School in Monterey, California. Alion Science has also been a major contributor to enhancements and...

  • Irrlicht Engine
    Irrlicht Engine
    Irrlicht is an open source 3D engine written in C++. It is cross-platform, officially running on Windows, Mac OS X, Linux and Windows CE and due to its open nature ports to other systems are available, including Xbox, PlayStation Portable, SymbianOS and iPhone.Irrlicht is known for its small size...

  • CrystalSpace
  • Visualization Library
    Visualization Library
    Visualization Library is an open source C++ middleware for 2D/3D graphics applications based on OpenGL 4, designed to develop portable applications for the Microsoft Windows, GNU/Linux/X11 and Mac OS X operating systems.-Design goals:...

  • OpenSG
    OpenSG
    OpenSG is a scene graph system to create real-time graphics programs, e.g. for virtual reality applications. It is developed following Open Source principles, LGPL licensed, and can be used freely...

  • ossimPlanet
    OssimPlanet
    ossimPlanet is an accurate 3D global geo-spatial viewer that is built on top of the OSSIM, OpenSceneGraph, and Qt open source software libraries. It provides native geo-spatial access to a wide range of commercial and government data formats with high performance visualization and collaboration...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK