An Introduction to Scene Graph Technology
Written by Chris Insinger, Product Manager
Illustrated by Dany Galgani
Fahrenheit is the code name for the
partnership between SGI and
Microsoft to design and implement new 3D
graphics APIs for the Windows®, IRIX®, and
HP-UX platforms.
The Fahrenheit APIs will enable a new class of graphics-rich
applications with higher performance and graphics quality than ever
before. Fahrenheit-based applications will enjoy the benefits of
performance, standardization and portability, and will make optimal
use of available hardware resources.
The Fahrenheit initiative defines three new APIs that can be thought of as
three "layers" of APIs. They are:
- Fahrenheit Low Level API
- Fahrenheit Scene Graph API
- Fahrenheit Large Model API
The functionality of each of these APIs can be described as follows:
Fahrenheit Low Level -- This is a rendering API, similar to OpenGL® and Direct3D
Immediate Mode. Its function is to abstract the underlying hardware and to
provide programmers with a way to render a simple set of graphics primitives
such as points, lines, and polygons.
Fahrenheit Scene Graph -- This is a Scene Graph API, which provides programmers
with a higher level of abstraction than that offered by a low-level API. The
Scene Graph defines a data structure that holds all graphics information
relevant to an entire scene, allowing programmers to manage all scene-related
data in a consistent fashion. Because the Fahrenheit Scene Graph API works at
the scene level it can perform aggressive optimizations that cannot be achieved
at a lower level.
Fahrenheit Large Model -- This API is an extension to the Fahrenheit Scene Graph
API. It extends the base scene graph with features and capabilities that are
especially useful to those applications dealing with very large models,
typically found in the CAD environment. Fahrenheit Large Model adds
functionality to simplify large models, convert mathematical descriptions of
curves and surfaces to polygonal primitives, and enables interactive
manipulation of large models.
The Fahrenheit Partners
In designing and implementing these new APIs, the Fahrenheit collaboration
draws on the strengths of its partners. The Fahrenheit Scene Graph will be
strongly influenced by SGI's experience in implementing several
scene graph toolkits, including IRIS PerformerTM, which is extensively used
in high-performance, real-time visual simulation applications, as well as the
broadcast industry and in high-end entertainment applications. The Fahrenheit
Scene Graph will additionally benefit from SGI's experience with
its other scene graph toolkits, including Open InventorTM and Cosmo 3DTM
The work that SGI has done on OpenGL++ also plays an important
role in the creation of the Fahrenheit Scene Graph.
The Fahrenheit Large Model API will be strongly based on the SGI
OpenGL OptimizerTM product and on technology from Microsoft® and
Hewlett-Packard's DirectModel product.
All Fahrenheit development benefits from the acknowledged graphics expertise
of the Microsoft DirectX development team and the Microsoft Research group.
In the development of the Fahrenheit Low Level API there will be a
collaborative effort with Intel to ensure that the combination of the
Fahrenheit Low Level API and the Intel® microprocessors results in the best
possible platform for future graphics applications.
Supported Platforms
Fahrenheit Scene Graph currently supports the following platforms:
- Windows NT® and Windows 98
- IRIX
- HP-UX
The initial languages for which bindings will be supplied are C++, C, Visual Basic, and
JavaTM.
Timeline
Fahrenheit Scene Graph will be released in the second half of 1999.
The Windows, IRIX, and HP-UX releases are expected to occur simultaneously.
Information in This White Paper
The remainder of this white paper will describe scene graphs in general, the
benefits of the Fahrenheit Scene Graph, and an overview of its components.
Information of a more technical nature as well as information on the other
Fahrenheit APIs (Fahrenheit Low Level API and Fahrenheit Large Model API) will
be made available in other documents.