OpenSceneGraph/NEWS.txt

665 lines
30 KiB
Plaintext

OSG News (most significant items from ChangeLog)
================================================
osgProducer library adds very tight integration with OpenProducer,
provide the OpenSceneGraph with a scalable, configurable and portable
framework for developing real-time and interactive graphics application.
The scalability afforded by OpenProducer allows applications to be
developed which seemlessly run on single pipe machines up to multi-pipe
machines such as Sgi Onyx IR system, and Sun Zulu systems, through
to running of clusters. The osgProducer/OpenProducer framework
automatically handles the multi-threading of cull-draw pairs and GUI
events.
All the example programs have been ported over from being based on
GLUT to using osgProducer. This allows all the examples to scale from
running on laptops up to multiple cpu and graphics pipe systems. The
configuration of threading and multiple camera views can all be done
via ASCII configuration files, no need to recompile.
Added Linux 64 bit support for IA64 (Intel Itanium) and x86-64 (AMD Opteron)
which augments the existing support for Solaris and IRIX 64 bit compilation.
64 bit supports allows the use of very large data set, and potential
peformance improvemnts.
Improvements to the makefile system, all makefiles are now named
GNUmakefile which ensures that they are only run by gmake. The new system
allow multiple build targets to be built from one source code install.
Completely new osgText implemention which is simpler to use, faster, and
thread safe. Support for high quality true type fonts has now been moved
to a freetype plugin which is dynamically loaded on demand, with the
core osgText library providing a default font when the plugin is
unavailable. Moving the freetype dependancy out of the osgText allows
the text library to be just dependant on OpenGL and Standard C++ like
the rest of the core libraries, virtual of this osgText now compiles
by default on platforms.
Improved thread safety when working multipipe systems.
New DDS plugin for loading compressed and non-compressed images.
New MD2 plugin which allows Quake animated characters to be loaded
into the OSG.
New osg::TextureRectangle texture class which encapsulates the
NV_texture_rectangle and EXT_texture_rectange extensions.
Added automatic subloading of textures when image data is updated.
Added the option of automatic unref'ing of texture image data once the data has
been download to OpenGL to active graphics contexts.
New osg::ArgumentParser and osg::ApplicationUsage classes for
convineiently and robustly parsing command line arguments and
report command line usage, environmental variables and
keyboard and mouse bindings used by applications. Running any
of the examples with -h or --help will report full details example
usage. Keyboard and Mouse bindings usage is now also available as
a HUD on all examples, simply press 'h' while the app is runing to
bring up help.
New database cache in the osgDB library.
Added support for early abort of rendering, useful for interactive
applications which occasional have rendering that takes that long
enough (i.e. several seconds) that end users may wish to abort
during the drawing.
Clean up of memory management in the OpenFlight loader.
Various API clean ups and bug fixes.
24th January 2003 - OpenSceneGraph-0.9.3.tar.gz
>>> adds support navigational light points, multi-threaded dynamic
>>> paging of Terrapage databases, ARB_vertex_program extension,
>>> DirectD .x model loader, and integration with OpenProducer for
>>> multi-threaded, multi-window/pipe rendering.
Added osgProducer library which integrates the OpenSceneGraph seemlessly
with OpenProducer to provide runtime configurable management of windows
and multipipe graphic systems. The osgproducer demo illustrate how
developers can write applications very simply that harness the power
of the OpenProducer and OpenSceneGraph in an extremely flexible way.
OpenProducer can be downloaded from:
http://www.andesengineering.com/BlueMarbleViewer/producer_install.html
Support added for dynamic paging of Terrage databases, the required
multi-threading is set up by defult. All the end user application need
to do is load the database and the paging then happens automatically -
without any need for intervention by the users application.
Addition of osgSim which is NodeKit designed for visual simulation
market, currently features high fidelity light points support. Light
point sectors, blink sequences and groups, and light point fading are
all supported.
From Brede Johansen, support added for the ARB VertexProgram extension
with osgvertexprogram demo showing reflection and refraction in action, and
osgpbuffer demo for Win32.
From Ulrich Hertlein, new DirectX .x model loader.
From Tree, Support for encoded text types in osgText.
New osgshadowtexture demo which illustrates how to create
dynamic shadow textures in your scene.
New osglogo demo - features anti-aliased TrueType text and animation.
The app phase of operations on the scene graph has been renamed
the update phase to make its function clearer. The main phases are now
named now does update, cull, draw. The AppVisitor, set/getAppCallback etc
have be renamed UpdateVisitor, set/getUpdateCallback etc.
Removed the osg/ManagerManger and associated #define osgNew's, this has
been done to simplify users code and to solve the lack of thread safety
that was causing problems with the MemoryManager.
Support added for reading and writing of callbacks in the .osg format.
Support added for reading and writing of osg::Shapes in the .osg format.
Support added for reading OpenFlight comment records into osg::Node description
fields.
Improvements to the GEO loaders.
Numerous bug fixes and API refinements.
13th November 2002 - OpenSceneGraph-0.9.2.tar.gz
>>> New AC3D and GEO loaders, new Shape primitives, improved OpenFlight support.
From Geoff Michel, AC3D .wc and Carbon Graphics GEO .geo loaders.
Support for multi-texturing added to OpenFlight loader.
LOD has been revamped to allow independent min and max ranges for
each LOD child, bringing it inline with the OpenFlight style LOD
representation.
Switch has been revamped to allow independent switching on or off of
each Switch child, bringing it inline with the OpenFlight style Switch
representation.
New osg::Shape geometry primitives added which allow the specification
of geometry in a form that can accelerate collision detection, and as
a way of specifying the geometry to tessellate. Shapes include
Sphere, Oriented Box, Cone, Cylinder, Grid, TriangleMesh, ConvexHull
and CompositeShape which allows the storage of a hierarchy of shapes.
Geometry has been extended to all per primitive bindings and
per primitive set bindings of attributes, and indexing of attributes
with the same or different index lists for each attribute list.
From Macro Jez, new cubemap helper classes.
Support added for handling different extensions on different graphics
contexts.
Draw and Sort callbacks added to osg::RenderStage.
Added PolygonStipple class.
Further refinement of class names and method calls:
Renamed classes :
Primitive -> PrimitiveSet
Renamed methods :
Geometry::addPrimitive(..) -> addPrimitiveSet(..)
Drawable::drawImmediateMode(..) -> drawImplementation(..) const
Drawable::DrawCallback::drawImmediateMode(..) -> drawImplementation(..) const
30th August 2002 - OpenSceneGraph-0.9.1.tar.gz
>>> Support added for 1D & 3D textures, texture env combiners, secondary color and fog coords, DOFTransform and Sequence nodes. Inventor/VRML and LWO2 loaders added and the a port HP-UX!
Despite only 6 weeks passing between 0.9.0 and this latest 0.9.1 release
there has been a number of significant new features, API clean ups and
bug fixes. Follows is a quick run through the key improvements.
Addition of osg::Texture1D, Texture2D & Texture3D classes, Texture2D replaces
the original osg::Texture, which has now become a pure virtual base class. All
Texture classes, including TextureCubeMap are derived from this base class..
New osgtexture1D and osgtexture3D demos demonstrate the new texture classes in
action.
The build system has been updated to support HP-UX. This adds one of the last
remaining mainstream platforms supported.
A new Inventor/VRML1.0 loader was added. The inventor format has been requested
on numerous occasions, so this is a welcome addition.
Support added to lwo plugin for loading the new lwo2 format.
osg::TexEnvCombine implemented texture_env_combine and texture_env_crossbar
and texture_env_dot3 extensions.
osg::TexEnv texture_env_add added.
A osg::Sequence node has finally been implemented. It is accompanied by a
demo, osgsequence.
osg::DOFTransformNode implemented.
Support for OpenFlight15.7 added, DOFTransforms and general enhancements and
bug fixes.
New PROTECTED mode for protecting local state mode and attributes from be
overridden from state above it in the scene graph.
Support for fog coord and secondary colors extensions added to osg::Geometry.
osg::Billboard has been improved to allow rotations around all axes, as well
as point rotations. Check osgbillboard for a new improved demo.
The osglight example has been improved by utilizing AnimationPath and
PositionAttitudeTransform to keep light sources in motion.
osg::AnimationPath improved, now allowing swing and looping behavior and
with two new app callbacks which can update PositionAttitudeTransform
and MatrixTransform respectively.
Support for writing osg::Image's to .rgb format added.
To keep the overall API clean, and the following items have been
renamed and deprecated parts of the API have been removed:
Renamed classes:
EarthSky -> ClearNode
Transparency -> BlendFunc
Texture -> Texture2D (old style subload parameters removed)
Method's changed
Matrix -> makeRotate(..) euler angles parameters generalized.
Quat -> makeRotate(..) euler angles parameters generalized.
BoundingBox -> isValid() renamed valid()
BoundingSphere -> isValid() renamed valid()
StateAttribute -> OVERRIDE_OFF & OVERRIDE_ON which were short hand
versions of OVERRIDE | OFF and OVERRIDE | ON
removed, as the meaning of the bitmask was
often confused by the short hand notation.
Transform -> setMatrix/getMatrix() etc methods removed,
Transform becoming the transform base class,
with MatrixTransform taking over all the original
functionality.
19th July 2002 - OpenSceneGraph-0.9.0.tar.gz
>>> OpenSceneGraph goes beta - Multitexturing, Occlusion Culling, Particles and much more added!
This release marks the beginning of the beta phase of the OpenSceneGraph
development, which means that all the major core features are now
in the scene graph, and 1.0 is not far away. Its performance, features
and portability already compares very favorably to other scene graphs,
both comerical and open source.
Multi-texturing support added to osg::StateSet, osg::Geometry, osg::State
and txp loader, so multi-texturing can now be done with very little coding
from the user - all you need to do is specify the texture unit to use
when setting texturing state and texture coordinates and the rest is
handled automatically by the scene graph!
The new osg::Geometry classes which supersedes the old Performer style
osg::GeoSet, support multi-texturing, and uses sharable osg::Arrays which
utilize std::vector<> for data storage and manipulation.
Shadow volume occlusion culling adding to the core OSG, developed as a
collobaration between Mike Connell and Robert Osfield. Our implementation
uses convex planer occluders, with support for holes to allow larger
and more effective occluders to be used. The approach is software
based so it 100% portable, and by culling during the cull traversal
both CPU and GPU loads are significantly reduced, making it an extremely
powerful feature for large scale urban and indoor visulisation.
osgParticle developed by Marco Jez adds support for a range of particle
effects such smoke, fires, engine plumes, fountains, fire works, and
is fully customizable to produce your own favorite effects. osgParticle
is a NodeKit (see below) which can be directly linked to in your
application to allow you to create particle effects by hand, or have
the library dynamically loaded in when you load a database which contains
particle effects.
osgGA (Gui Abstraction) library written by Neil Salter adds classes for
adapting different GUI toolkits to work with a standard set of manipulators for
modifying the scene, such as camera and state manipulators.
Support has been added to the plugin architecture to facilitate the
development of NodeKits - add on libraries which can used directly
in your code, or loaded indirectly when loading from file. The
later allows you to load a .osg file with text or particle effects
in them,the plugin architecture automatically loads the required
library which supports these features.
A range of new demos have been as code examples, and to demonstrate
the range of features that OpenSceneGraph delivers:
osgoccluder - demonstrates ocllusion culling, and has a mode
which allows the users to interactively create
their own convex planer occluders.
osghud - how to mix head up display with 3d views.
osgparticle - shows the new osgParticle node kit in action.
osgprerender - pre renders and scene then textures the result onto
an animated flag.
osgcallback - examples of the full range of callbacks that you
can use to add dynamic behaviors to your scene graph.
osglight - a simple example of how to set up spot and position
lights in the scene.
osgclip - illustrates how to add clip planes to you scene.
osggeometry - examples of the different ways to set up primitives
and vertex/color/normal and texture attributes in
the new osg::Geometry class.
osgmultitexture - a simple example which adds a spherical reflection
map to a whole scene using the second texture unit
if one exists.
osg::Drawable::PrimtiveFunctor has also been added to allow querrying
of primitive data with Drawables subclasses without requiring knowledge
of the types of Drawable subclasses that exists. This decoupling makes
it a very powerful and flexible utility.
26th April 2002 - OpenSceneGraph-0.8.45.tar.gz
>>> Support added for Solaris, texture cube mapping & muliple projections.
The OpenSceneGraph now has a new Makefile system which supports all Unix
compilation including the new addition to the family - Solaris!
OpenSceneGraph welcomes Solaris to the list of supported platforms. This
release puts all of the OpenSceneGraph functionality at the fingertips of
Sun Microsystem's customers and developers. Solaris users can now have
the benefit of a high performance scene graph for visual simulation,
virtual reality, scientific visualization, CAD, and architectural
walk-throughs. Many thanks to Sun for providing resources for the port.
Additional html documentation has been added to the distribution to
make it easier to get an understanding of scene graph technology and
the project itself and how to make use of it.
Support has also been added for OpenGL's texture cube mapping which
is ideal for accurate environmental reflections and much more.
The scene graph has been extended to allow multiple projection (via
the new osg::Projection node) and viewports within one scene graphs,
this makes it much easier to set up head up displays, and we have
an example to demonstrate how easy it is - osghud.
The osgUtil::CullVisitor and osgUtil::SceneView has been revamped
removing the dependency on osg::Camera, which is now simply an
option for SceneView rather than a requirement. This allows users
to set the camera entirely with the scene graph or create their own
camera classes and use them with SceneView. The existing osg::Camera
has also been simplified as support for setting projection and
modelview matrices have been moved out to the cull traversal.
Several sets of node callbacks have been added, including a Cull
NodeCallback on each Node, ComputeTransformCallback on Transform
Nodes, EvaluateLODCallback on LOD nodes, ComputeBillboardCallback
on Billboard nodes. These make it my easier to customize the
scene graphs behavior at runtime.
osg::Image::readPixels() and support for writing .bmp files has been
added which has made it easy to add screen capture the any OpenSceneGraph
application. This feature is demonstrated in the scene graph viewer
which comes with the distribution - just press 'O' to output a screenshot.
Finally, include/osg/MemoryManager has been added which overrides new
and delete for debug builds. The override new and delete track allocations
and deallocations, ensure they are matched, checked for memory under and
overruns, and outputs a memleaks.log file on the results of executing
your applications. This help track down a number of memory leaks and
unmatched new and deletes within the OpenSceneGraph and should make
it easier to do with users applications as well.
All in all, the OpenSceneGraph is now more portable, easier to
customize, cleaner and more robust. Beta release and 1.0 is now not
far away!
24th February 2002 - osg-0.8.44.tar.gz
>>> Support added for Mac OSX, Cygwin and MinGW, and new TerraPage loader.
The major item for this release is the completion of the Mac OSX port,
thanks to Phil Atkin and others for making this happen.
Also added to support for Cygwin and MinGW builds which gives Windows
users a free and robust alternative to the Visual C++, which we
have Norman Vine to thank.
Funtionality wise there has been a great deal of work behind the scenes
putting in place a flexible and extensible framework for handling
transform nodes, users can now extend the osg::Transform node through
subclassing or via callbacks. This work will underpin future work
on moving camera setup into the scene graph, and environmental effects
such as cloud layers, ground planes, stars and earth sky implementations
which are planned for the next release.
Callbacks and virtual methods have also been added to the osg::LOD &
osg::Billboard to allow users to customize their behavior. Draw
callbacks have also been added to allow customization of osg::Drawables
at runtime.
The Open Flight .flt loader has undergone a number of improvements
including support for instancing and billboards.
New TerraPage (.txp) loader and OpenDX writer (.dx) plugins have been added.
Support for the clone operation on osg::Object's has been expanded
to allow cloneType() - a simple clone an blank object of the same type,
and clone(CopyOp&) where CopyOp is a functor which allows users to
specify the deep copy vs shallow copying of object data.
2nd January 2002 - osg-0.8.43.tar.gz
>>> Support for TrueType text, Stereo out of the box, and much more.
Since the last release the OSG has moved to CVS based developments so
many users will have seen gradual increments in functionality and changes
to the API. Whereas a the leap from 0.8.42 to 0.8.43 is actually quite
significant is likely to require code changes as several significant parts
of the API have evolved to a more mature state.
The most significant new functionality is the addition of the osgText
library which provides support for true type font rendering, as textured,
polygonal, pixmap, bitmap and 3D fonts.
We now have new osg::Matrix implementation which cleans up its interface.
Also all angular parameters are now based on radians rather than degrees
as before (and as in Performer), this has been done to be more consistent
with the basic trignometric functions and standard maths conventions.
Scene graph optimization has been added which can boost performance
on some database by as much as an order of magnititude, this is
particularily noticable in .flt based databases. Display list performance
has also been boosted on NVidia based machines thanks to changing the
compilation and execution of display list into two seperate operations.
App callbacks are now supported on all Nodes, and there now a proper
app traversal which can be used to animate the scene.
Stereo support has been added into the osgUtil::SceneView which allows
quad buffered/anaglyphic stereo to enabled easily for almost all OSG
applications without code modifications - simple set environmental
variable or pass in appropriate arguments and your app will render in
stereo!
src/Demos/osgcluster has been added to demonstrate how easy it is
to set up a graphics cluster across a standard networked PC's.
There have been many minor code changes to fix bugs and address
performance bottlenecks or to improve extensibility was, representing
a significant step towards API maturity and a beta release which is
now not far away.
9th August 2001 - osg-0.8.42.tar.gz
>>> New osgWX library for integration of OSG with wxWindows apps.
This release sees a relatively minor number of enhancements over
0.8.41, the most significant being the new osgWX library and wxsgv
demo written by Ben Discoe.
Also from Brede Johansen in this release is the improvements in support for older
.flt (Open Flight) files such versions 12 & 13. Previously only version
15.6 files had been tested and developed to.
Last but by no means least, several bug fixes related to view frustum
culling have been made.
25th July 2001 - osg-0.8.41.tar.gz
>>> Support added for multi-pass and multi-stage rendering including Impostors.
The key feature developed is a highly flexible framework for multi-pass and
multi-stage rendering techniques. Unlike most scene graphs and games
engines the OSG has as dynamic framework which automatically configures
itself at runtime.
Building ontop of the new framework's multi-stage rendering capabilities,
support for Impostors (hirachical image caching) has been integrated into
the core scene graph library making extremely easy to take advantage of
this advanced rendering techinque - normally only seen in research papers.
Check out osgimpostor demo to see how easy it is to add osg::Impostor
nodes to your own models. Impostors are particularily effective are
reducing scene complexity whilest minimizing the visual impact, making it
ideal for scenes with large numbers of complex objects such as a city
scene, or a dense forest.
Taking advantage of the new framework's multi-pass rendering capabilities
is osgreflect demo which illustrates how to achieve planar relfections
using the stencil buffer and multi-pass rendering.
The cool thing about both the osgreflect and osgimpostor demos is that
there is no hardwiring to achieve the results, the scene graph stores
all the information neccessary to specify the number and type of rendering
passes, and the framework handles the rest behind the scenes. This also
makes it very easy to add these advanced rendering techinques to your
own applications as everything is cleanly encapsulated with
osgUtil::SceneView.
New loaders have been added to support .lwo (Light Wave), .obj
(Alias Wavefront) and .dw (Design Workshop) 3D file formats making it
even easier to compose your own worlds from models sourced from the
web or your own.
osg::Camera has been totally revamped and now supports asymetric
and othographics projections in addition to the symetrical perspective
projections.
And finally, support for texture subloading has been added to osg::Texture
and osg::Image. This allows textures to be updated dynamically, and
has already been used for mpeg video playback!
19th May 2001 - osg-0.8.40.tar.gz
>>> Project lead, Robert Osfield, makes full-time commitment to OSG.
This is the first full release since project lead, Robert Osfield, made
a move to pursue the OSG's development full-time. This commitment has
been made to bring the API rapidly towards maturity, and to provide
high quality support and consultancy services. Please contact
robert@openscenegraph.com if you have any queries.
This release marks a significant step forward in the maturity of the
API, with several major changes to the library in the areas of state
handling, database support, and portability.
To improve the extensibility of the OSG's handling of OpenGL state,
new classes have been introduced to replace the previous hardwired
state handling classes. The new classes also allow improved state
sorting and lazy state updating which boosts both cull traversal
and particularly draw traversal performance.
To improve the modularity, interopability and conceptual clarity the
support classes for database loading have been moved from the core
osg library into their own osgDB library. Support for the .osg
ASCII native database format and the .rgb reader has moved into its own
osgPlugins library to further the cleanliness of the core library.
Support has be added for multiple OpenGL context's and hence multi-pipe
systems such as sgi's Onyx2, allowing each context to have its own
display list and texture objects.
The culler and rendering support in osgUtil has also been improved, and
significantly speeded up for complex models.
Also just in, thanks to Randall Hopper for adding support for FreeBSD :-)
23rd March 2001 - osg-0.8.39.tar.gz
>>> Port of OSG to MacOS underway
The first steps towards support of MacOS have been taken by Bryan Woods,
adding Metrowerks project files and adding support for MacOS into the
core scene graph. Work still in progress so assistance welcome to
complete the task.
Other major developments have been the addition of two new base classes
osg::StateAttribute and osg::Drawable which are designed to allow greater
extensibility of OpenGL state management and primitives.
17th Feburary 2001 - osg-0.8.38.tar.gz
>>> New 3DS loader added
The OpenSceneGraph now supports the 3DS file format. This makes
available a huge range of potential models. Check out
http://www.3dcafe.com or http://www.3drocketfuel.com for some juice.
10th Feburary 2001 - osg_src-0.8-37.tar.gz
>>> Texture compression now supported
The OpenSceneGraph now provides support for ARB and S3TC texture
compression. This allows more textures to be loaded onto graphics
card memory, resulting in happier users and a better world in which
to live.
This release also sees the addition of a simple hang gliding flight sim
demo.
25th January 2001 - osg_src-0.8-35.tar.gz
>>> Anisotropic texturing now supported <i>and</i> loading of gzip compressed files
Anisotropic texturing provides for the next step in quality texturing
filtering above tri-linear and is especially effective when viewing
texture surfaces at shallow angles.
Also added in this release is on-the-fly support for loading gzipped
(.osgtgz, .tgz) and zipped (.zip) database files. This features allows
users to store whole databases (models and textures) in a single
tar ball and unpack them automatically on running the osg. This
is ideal for browsing the web.
22nd December 2000 - osg_src-0.8-33.tar.gz
>>> Support added for OpenGL vertex arrays, and several key image loaders.
Support for OpenGL vertex arrays has been added to improve performance,
particularly accelerating PC based graphics.
Also added is support gif, jpeg, pic, tga, tiff image formats via
dynamic plugins.
8th Decemeber 2000 - osg_src-0.8-32.tar.gz
>>> New high resolution, low latency timer class - osg::Timer.
Real-time graphics relies upon accurate timers for updating physics
simulations and managing constant framerates. The OSG now provides
osg::Timer which, when supported, takes advantage of hardware timers.
18th November 2000 - osg_src-0.8-29.tar.gz
>>> Support for detail drawing with osg::PolygonOffset.
Rendering of polygons which overlay underlying geometry, such
as white lines on a runway, can now be achieved utilizing the
new osg::PolygonOffset which encapsulates glPolygonOffset to
avoid z fighting which otherwise hampers such detailing.
10th November 2000 - osg_src-0.8-28.tar.gz
>>> New Open Flight .flt loader!
Thanks to Brede Johansen submission of .flt loader, the OSG can now
read Open Flight .flt databases.
3rd November 2000 - osg_src-0.8-26.tar.gz
>>> Driving and Flight modes have been added to viewers.
osgUtil::DriveManipulator and osgUtil::FlightManipulator have been
added to allow the scene graph viewer (sgv) and other viewers to
support a drive and flying modes. These modes can be accessed
in sgv by pressing '2' and '3' respectively ('1' returns to
trackball manipulator). Left mouse button accelerates forward,
middle stops motion and right deccelerates.