OpenSceneGraph/ChangeLog
Robert Osfield 7a7a26c2ea Added include/osg/EarthSky and src/osg/EarthSky to cvs.
Also move osg across to using radians for angular paramters by default.
By defining USE_DEGREES_INTERNALLY you can get the OSG to revert to
the old style degrees. This later feature is deprecated and only meant
for helping comptability in the interim.
2001-10-02 15:59:49 +00:00

2241 lines
120 KiB
Plaintext

OSG Change log
==============
o Moved the osg across to using radians for all angular paramters,
previously all angular paramters were degrees as per Performer.
If the osg is compiled with USE_DEGREES_INTERNALLY defined then
the osg will revert to using degrees for anglular paramters,
however, this is only a temporary measure to help users port.
The inline methods inDegrees(float), and inRadians(float) have
been added into osg/Types to make porting easier, these methods
covert the specified anglular quantity into the current internal
angular units.
o Added osg::EarthSky node to support users defined clearing of the
color and depth buffers.
o Added support for removal of duplicate StateSets using the
osgUtil::OptimizeStateVisitor, previously of removal of duplicate
StateAttributes was supported.
o Made spelling corrections in include/osgDB,osgUtil,osgGLUT,osgWX,
spelling mistakes picked up by a script written by Neil Salter.
o Made osg::Matrix::_mat private, and updated the rest of the osg
to use the Matrix::operate(row,col) method instead of _mat[row][col].
o Placed #ifdef USE_DEPRECATED_MATRIX_METHODS about pre/postScale,
pre/postTrans and pre/postRot methods since these are now
deprecated, there functionality replace by scale,trans,rotate
static methods which create matices to do pre and post multiplication
by. Converted the rest of the OSG to use thse new methods.
o Converted hangglide to use the sky and base as an earth/sky implementation
which replaces the standard glClear done in RenderStage, therefore
reducing the fill rate requirements for each frame, and increasing
performance. The technique uses multiple rendering bin to force
the drawing of the sky first, base second and then rest of the
scene graph afterwards. The first two bins draw use osg::Depth
state attribute to control glDepthFunc/Mask/Range so as to write
to the far plane.
o Fixed erroneous message in osgreflect.
21th September 2001 - osg-20010921.tar.gz
o Fixed compilation problem under Windows due to ctime being included
in the osg::Timer header file. The ctime refrence has been replaced
by time.h. Also fixed typo in osgGLUT/Viewer.cpp which was causing
compilation problems.
o Made the new osg::Matrix::translate/scale/rotate static method inline
to help improve peformance.
o Fixed bugs in osg::Matrix::preMult and postMult.
19th September 2001 - osg-20010919.tar.gz
o Cleaned up the implementation of the osg::Timer class so it is easy
to read and maintain, and have added support for gettimeofday under
unix OS's where no other realtime timer is available, if this isn't
available either than
o Added FrameStamp class which encapsulates the frame number,
reference time and the calander time that a frame in schedualed.
o Fixed a couple of bugs & integrated further fixes from Paul Fredrikson,
to the new Matrix implemention, double checked results against the old
matrix class and am now getting consistent results. For this dev
version onwards the new Matrix class simply replaces the old one. The
new Matrix class contains old style methods to keep things compiling,
however these are deprecated and will be removed, probably by the next
full release. Check the header file for deprecated methods. You can
also comment in the #define WARN_DEPRECATED at the top of Matrix.cpp
and this will produce console warnings.
o From Don Burns - fixes to src/osgPlugins/osg/GeoSet.cpp adding in
an iterator increment to the code for outputing interleaved arrays,
previously the code entered an .osg writing inifite loop for this
data type.
o Have added #ifndef WIN32 around the call to the new OptimizeStateVisitor
which was added to sgv to prevent its use automatically under Windows -
thus avoiding the windows crash due to the MSVC++ buggy SLL implementation.
14th September 2001 - osg-20010914.tar.gz
o Added osgUtil::StateOptimizeVisitor which traversing the scene
graph and builds up a map of all StateAttributes and StateSets
and then removes the duplicates. This promotes state sharing
throughout the scene graph which inturn can significantly improve
performance thanks to reduced state changing. Particularily
effective on datasets where a great deal of duplicated state exists.
Even on already optimized datasets such as Performer town up
o Added pure virtual compare(const osg::StateAttribute&)
method to osg::StateAttribute, and implemented it in all the
subclasses from StateAttribute. Added <,== & != operator
on StateAttribute and Matrix to support new StateOptimizeVisitor.
o Added META_Object, META_Node and META_StateAttribute macros to
Object, Node and StateAttribute respectively which define the
standard pure virtual methods such as clone, className
& isSameKindAs. Changed all the appropriate header files to
use these macro's rather define them in each header, these cleans
up the headers considerably.
o Corrected the implementation of osg::Light::getType so it correctly
uses a unique type for each of the OpenGL lights (GL_LIGHT0..
GL_LIGHT7 relates to osg::StateAttriburte::LIGHT_0..LIGHT_7.
o Changed the definition of osg::StateStateAttribute::Type to
is now a unsigned int rather than an enum, and have changed the
name of the previous Type enum list to be Types. This makes it
more consistent with the difination of values found in StateAttribute
and also easier to extend with having to cast to an enum.
o From Pail Fredrikson, updated Maitrx.new implemention which uses
the same matrix orientation as the original Matrix implemention.
11th September 2001 - osg-20010911.tar.gz
o From Paul Fredrikson - added new proposed Matrix implemention, its
been added in as Matrix.new and Matrix.cpp.new, the old Matrix
implemetion has been moved to Matrix.old and Matrix.cpp.old, and
new Matrix and Matrix.cpp directs compilation to Matrix.new if
USE_NEW_MATRIX is defined, otherwise defaults to Matrix.old. Once
a new implementation is settled and thoroughly tested then the
old one will be completely replaced by the new one.
o Added osg::NodeVisitor::s/getTraversalNumber(..) and s/getReferenceTime(..)
to better support syncronization of different traversals of the scene
graph and support osgcluster syncornization through the traversal number
and refernce time.
o Added osg::NodeVisitor::s/getTraversalMask(..), s/getNodeMaskOverride(..)
and validNodeMask(..) and modified all osg::Node's and its
subclass' ::accept(NodeVisitor) methods to check NodeVisitor::
validNodeMask(..) and only call the NodeVisitor::apply(..) if it
returns true. This extra functionality allows users to switch on/off
nodes and their subgraph using a Node::s/getNodeMask() and since
a bit mask is used this can be done selectively for different
traversals, by using diffent bits for a traversal type (i.e app/cull).
o Added reuse of AlphaFunc and TexEnv objects between ImpostorSprites
into osg::ImpostorSpriteManager.
o Added osgcluster demo (can be found in src/Demos/osgcluster/), this
demo demonstrates a simple implmentation of keeping camera in sync
between entirely seperate apps running on different machines, and
what you get is multi-channel graphics cluster! osgcluster uses
UDP packets to keep the camera position in sync between other
osgcluster viewers running on other machines in the local area
network.
o Changes to osg::Camera - added osg::Camera::setFOV(), osg::Camera::
s/getAdjustAspectRatioMode(), and osg::Camera::adjustAspectRatio(),
and renamed AdjustAxis enumerate AdjectAspectRatioMode.
o Updates to osg::NodeCallback and osgUtil::AppVisitor.
24th August 2001 - osg-20010824.tar.gz
o Changed the impostor viewport so it is centered in the middle of
main viewport instead of the bottom left hand corner. The later
was causing problems with the windowing decoration was obscuring
the backbuffer drawing and texture read.
o Changed the default resolution to 800x600 for osgGLUT::Viewer and
osg::Viewer so that the demos appear ok on very small screens such
as laptops.
o Three items added for support of app traversal callbacks.
- added osg::NodeCallback for use as an app callback on osg::Node's
which is called by an app visitor.
- added osg::Node::setAppCallback()/getAppCallback().
- added osgUtil::AppVisitor and made it default AppVisitor on SceneView.
note: new files are include/osg/NodeCallback,
include/osgUtil/AppVisitor and src/osgUtil/AppVisitor.cpp.
o Changed osgreflect and osgcube demos so they use an app callback,
instead of its own app visitor/glutTimerCallback repsectively.
o Changed the texture object type from osg::uint to GLunit in osg::Texture
to solved comptability problems under MacOS.
o Fixed spelling mistake of Minimum which occured several times
in include/osgUtil/VisualsRequirementsVisitor.
o Removed Lighting.cpp as it is nolonger used in any Makefiles,
and is only laying around due to not be removed earlier.
o From Bryan Woods - updated Metrowerks files for the MacOS port.
22nd August 2001 - osg-20010822.tar.gz
o Removed osg::StateSet::getAttributeVector() and getModeVector()
since they were simply hacks around MSVC++ bugs which are both
fixed by using STLport under windows, along with other bugs reported
under Windows. Its is now recommended that Windows users adopt
STLport instead of the MSVC++ one since the later is just plain flakey.
o From Ben Discoe - fixed typo of a bookmark in index.html
o Added osg::Viewport for encapsulating glViewport and for passing around
viewport object between various osg classes. Also helps avoid some
portability issues which have arisen over OpenGl types under MacOS.
o From Bryan Woods - updated Metrowerks files for the MacOS port.
9th August 2001 - osg-0.8.42.tar.gz
o Toned down the specular light values set by default in osgUtil::SceneView::
setDefaults from 0.8 to .1, this reduces the effect of scaling of
normals on lighting - which was causing a bad flikering affect on
models contains scaling. This points to a need to automatically
scale the normals, but more on this in a future release.
o Removed WXFLAGS from Make/makedefs.* since it is nolonger required.
o From Randall Hopper - fixed compliations problems under IRIX on flt plugin.
o Fixed bugs in osg::Camera::calc_fovx() and calc_fovy() which causing
them to return incorrect values.
o Added code to osgimpostor demo to insert an Impostor above models
which don't have an osg::Group at their root.
o Fixed bug in osgUtil::VisualsRequirementsVisitor so that by default the
alpha and stencil buffers are not required.
o Added reporting of visuals requested in osgGLUT::Viewer::open(), accessible
only as INFO, so doesn't get reported by default. To see the reporting
set the environmental variable OSGNOTIFYLEVEL INFO
8th August 2001 - osg-20010808.tar.gz
o Made the new flt loader the standard flt loader for the release,
deleted the old one.
o From Brede Johansen - fix to material sharing in new flt loader.
- new default values for the light source in
SceneView::setDefaults.
o From Randall Hopper - fixes to osgWX and wxsgv.
7th August 2001 - osg-20010807.tar.gz
o Updated version numbers to reflect the imminent 0.8.42 release.
o Fixes to osg::Camera::calc_fovx() and calc_fovy() which were incorrectly
takening into account zNear in calculation of field of view.
o From Randall Hopper - fixes to warnings under IRIX in the .dw plugin.
o From Randall Hopper/Robert Osfield - fixes for the unix Makefile and
source files in src/Demos/wxsgv demo.
o From Karsten Weiss - bug fixes to osg::Group::removeChild and replaceChild.
6th August 2001 - osg-20010806.tar.gz
o From Ben Discoe - integated osgWX library and Demos wxsgv viewer, which
demonstrates osg integration with wxWindows!!!
note, Unix Makefiles have not been tested yet, and the
the MS projects are not linked up by default.
o From Ben Discoe - fixed a misleading typo in src/osgUtil/Registry.cpp.
- added a guard into SceneView::draw() to prevent
a crash when no scene data is attached to the
scene view and the draw method is called.
o Fixed waning in osg::CullingVolume::operator = (..) related to a missing
return *this;
o Renamed osgUtil::BufferRequirementsVisitor to
osgUtil::VisualsRequirmentsVisitor to make it more in keeping with the
setting up of OpenGL 'visuals', and changed the apply(StateSet&)
method to applyStateSet(StateSet&) to prevent warnings under IRIX.
o Converted src/osgPlugin/newflt/Makefile from dos style text into unix
style text.
5th August 2001 - osg-20010805.tar.gz
o Fixed culling bug related to having osg::Transform within the
scene graph which scale dramatically - the bug was in osg::Plane
which didn't renormalize the plane equation after transformation.
Renormalization is required for the isCulled(BoundingSphere&,..)
method.
o From Geoff Michel - primitive and depth complextity statistics added
to osgUtil::RenderBin/RenderStage and osgGLUT::Viewer. New class
osgUtil::Statistics records no of primitive etc per frame.
o Fixed bug in osgUtil::CullVisitor::pushCullViewState(..) where
the up vector was being incorrectly transformed, resulting in
sporadic impostor orientations.
o From Randall Hooper - fixes to CullVisitor to solve inappropriate warnings
which occured when the near and far values were calculated with the
range numerically rounding errors. Also fix to osg::Matrix::transform3x3
which was implementated incorrectly.
o From Brede Johansen
- integrated update flt loader which will allow it
to handle old Open Flight file versions.
- also Integrated a small patch to osgPlugins/flt/flt2osg.cpp from
Judd Tracy w.r.t converting ConvertFromFLT::visitDOF(..) to use
osg::Transform instead or osg::Group. I have added a comment
to this method as it still isn't complete, and will need the
osg::Transform's matrix to be set up to refelct the DOFRecord.
- Testing with Berkleys dataset revealled that the new flt loader was
creating one triangle per geoset which causes a massive loss in performance,
I've look for an obvious cause for this, but don't understand the code
enough to track it down. I have reverted to the old flt (0.8.41) plugin
and moved the new flt plugin to src/osgPlugins/newflt. I will make it
the default once the problem has been fixed. RO.
o Added osg::Matrix::set(const float* ) implemention to src/osg/Matrix.cpp.
o Fixed typos of "spshere","albiet","overiden" & "completly" in include/osg.
25th July 2001 - osg-0.8.41
o Replaced osg::Camera::setModelTransform(..) with more flexible
osg::Camera::attachTransform(TransformMode,Matrix*) which allows
for setting of both a EYE_TO_MODEL or MODEL_TO_EYE transforms.
osg::Camera::getTransform(TransformMode) and dirtyTransform()
has also been added, the later to allow the Camera to know about
external modifications to attach transforms.
o Updated NEWS file.
o Removed second entry for png plugin from src/osgPlugins/Makefile.
24th July 2001 - osg-20010724.tar.gz
o Updated the INSTALL file to include mention of make install and
make help.
o Fixed two bugs in the osg::Impostor implementation, the first related
to the handling of empty impostors, the second was the handling of
impostors composed of depth sorted bins.
23rd July 2001 - osg-20010723.tar.gz
o Bumped version numbers up to 0.8.41 in preperation for the release.
o Fixed a bug in src/osgPlugin/pfb's conversion of Performer texture
filter modes into osg, the mag filter was being set with a invalid
enumerant. The bug resolved itself as OpenGL errors being reported
to the console on loading some .pfb files.
o Added osgUtil::RenderStageLighting to encapsulate the lighting
of the osgUtil::RenderStage, and to allow sharing of lighting
between RenderStages, such when using pre-rendering stages.
o Added osg::Drawable::s/getSupportDisplayList() which can be used
to prevent display lists from being used on specified drawables.
Typical use would be to protect dynamic drawables such as continous
level of details drawables from being encapsulated with a display
list. Attempts to turn on display lists on such a drawable will
now results in a warning, and will have no affect on the drawable.
o Added osgUtil::BufferRequirementsVisitor to traverse a scene graph
establishing the OpenGL buffers required to support rendering of
that scene graph. The results can then be used by applications to
set up there windows with the corret visuals. Modified osgGLUT::
Viewer::open() to use the new visitor and set up the buffers
accordingly. The calls to gluInitDisplayString in the demos are
now redundent and have been removed.
21th July 2001 - osg-20010721.tar.gz
o Added support for depth sorting of impostor sprites into
osgUtil::CullVisitor and added public methods to osg::CullVisitor
to allow the switching on or off or impostor depth sorting, and
the turning on or off of impostors.
o Added demo osgviews to demostrate multiple views of single scene,
not currently functional, will fix later.
o From Randall Hopper - support for multiple viewports in osgGLUT::Viewer.
o From Geoff Mitchel - new OpenGL based stats reporting added to
osgGLUT::Viewer. Similar in style to Performer's perfly stats.
o Fixed the osg::Camera::home() method so its sets to the OpenGL
defaults position of looking down the z axis, with the upvector
along the +ve y axis.
o Fixed a warning in osg::State.
18th July 2001 - osg-20010718.tar.gz
o Further improvements to the osg::Impostor implementation, various
bugs have been fixed and out of date ImpostorSprite's can now be
reused via an osg::ImpostorSpriteManager, which is stored in the
osgUtil::CullVisitor.
o Added an osgUtil::InsertImpostorsVisitor which traverses the
scene graph inserting osg::Impostor nodes above osg::Group's
(and its subclasses such osg::Transform) and converts osg::LOD
nodes into osg::Impostor nodes. The demo osgimpostor has been
modified to use the new InsertImpostorsVisitor.
13th July 2001 - osg-20010713.tar.gz
o Various improvements to the osg::Imposter implementation, now includes
pixel error calculation which will work for both perspective and
othographic projections. The Impostor doesn't currently support
texture reuse, but the much of the code to support is implemented,
yet have to tie up the loose ends for the next release now.
o Fixes to osg::Texture::copyTexSubImage2D to ensure that _mag_filter
was set to LINEAR, to ensure that mipmaps arn't used.
o Fixed Visual C++ workspace file for .dw plugin, to ensure under
debug build it correctly links to glu library.
12th July 2001 - osg-20010712.tar.gz
o Added src/Demo/osgimpostor to demonstrate how to use the new osg::Imppostor
node and to test the impostor implementation.
o Implemented first cut of osg::Impostor, ImpostorSprite,
and RenderToTextureStage. Implemention not complete, and bugs exists
which prevent the textured quad appearing with its texture?!
o Fixed osg::Camera::zNear()/zFar() methods which returning the wrong values.
o Updated AUTHORS file.
o From Geoff Mitchel, .dw (design workshop) loader plugin.
o Fixed coordinate transformation in osgPlugins/obj - Alias Wave OBJ loader.
o Fixed minor unsigned to signed comparision warning in osg::Texture.
1st July 2001 - osg-20010701.tar.gz
o Rewritten osg::Camera class to support Otho, Frustum and Perspective
projection modes. Significant API changes have been made, the new
Camera implementation is not backwards compatible.
o Added osg::ClippingVolume to represent a convex clipping volume.
o Added osg::Plane class to support view frustum clipping and other operations
requiring plane operations.
o Made corrections to osgtexture usage details.
o From Ulrich Hertlein - fixes to osg::Texture to prevent bind of textures
to NULL image data and added missing #include<osg/GeoSet> to
osgUtil::IntersectVistor.
o Removed the erroneous inline keyword from infront of
osg::StateSet::setRenderBinToInherit(..) which was causing compilation
errors under IRIX.
o Fixed file permission problems in include/osg/Object, and osgDB.
o Fixed a bug in osgGlut::Viewer where view frustum culling and small
feature culling could be toggled off,
o Fixed a bug in osg::Quat::makeRot(Vec3,Vec3) where the angle
calculated was incorrectly calculated. Also added a couple of
set methods and made the constructors inline.
o Added osg::Drawable::dirtyBound() which should be called when geometry
is updated. Note it does not dirty geodes above - this will have to be
done by caller.
June 26th osg-20010626.tar.gz
o Several changes related to making the NewCullVisitor now the
standard CullVisitor, since it now has greater functionalility,
performance and more robust than the previous incarnation of
CullVistor.
- Removed osgUtil::Renderer as this is now rendundent thanks to
the new RenderStage functionality.
- Replaced osgUtil::CullVisitor by osgUtil::NewCullVisitor and
removed NewCullVisitor references as these are nolnger needed.
- Moved osgUtil::CullViewState out of osgUtil::CullVisitor header
and into its only file header and source files.
- Updated osgUtil::SceneView to only refer to new standard CullVisitor.
- Updated Unix and VisualStudio files accordingly.
o Fixed problem related to calculation of the near far planes when
a non-uniform transformation exists in the scene graph.
o Fixed problem related to view fustum culling when a non-uniform
transformation exists in the scene graph. Solution was to use
the transpose of the inverse transformation matrix to transform
plane normals rather than the transformation matrix as used for
points.
o Fixed two bugs in osg::notify(), pinpointed by Randall Hooper.
The first was in osg::initNotifyLevel() - the check for DEBUG was
hidding the settings for DEBUG_FP and DEBUG_INFO since it was first
of these in the if/else code and all contain the word DEBUG. The
solution was to move DEBUG check to the last entry.
The second bug was related to osg::setNotifyLevel() - if this method
was called before the first call to osg::notify() then osg::notify
would automatically call initNotifyLevel and overwrite the
setNotifyLevel value. The fix was to make setNotifyLevel call
initNotifyLevel itself before setting the value, and add protection
into initNotifyLevel so that the internal code is never executed
more than once.
June 22nd - osg-20010622.tar.gz
o Added osgUtil::NewCullVisitor::createOrReuseMatrix() and
createOrReuseRenderLeaf() methods to allow reuse of what was temporary
memory from frame to frame. Combined with the new near and far
plane code, the cull traversal for models like Performer town is
now 40-60% faster, and on models with a large nuber of internal
transforms the figure can be 80+% faster :-)
o Changed the techinique for calculating the near and far planes inside
NewCullVsitor to be more efficient - now about up to and over 4 times
faster! Makes a particular difference on models with large numbers
of transform nodes.
o Changed osg::Draw::drawImmediateMode() so that it takes an osg::State
as a parameter.
o Changed the referencs to -glut in unix Makefiles so that is is specified
by a $(GLUTLIB) paramter, which is now set in the Make/makedefs.* files.
This allows the GLUTLIB to be changed to allow linking to static glut
libraries. It defaults still defaults to -glut as before, so no change
in standard behavior will be noticed.
o Added osgUtil::RenderToTextureStage in preperation for support for
Imposters.
o Added osg::Impostor, ImpostorSprite header and source files, these files
are simply shells for future integration work, and do not currently function
as Impostors. Modified osg::NodeVisitor and osg::CullVisitor so that
they now recognise the Impostor node.
June 18th - osg-20010618.tar.gz
o Reverted to the prev_ReaderWriterPNG.cpp since I was having problems
loading png files that used to work. This will break other png files
for which the new_ReaderWriterPNG.cpp was created to handle. Both
clearly arn't up to job and need a rewrite. Will do this later...
o Made osg::Camera::draw_PROJECTION() and osg::Camera::draw_MODELVIEW()
virtial functions to allow subclassing.
o Removed the references to opengl.lib and glu.lib from the lwo loaders
as they arn't required.
o Under Unix, changed the names of the jpeg and tiff plugins from libdb_jpg.so
and libdb_tif.so to libdb_jpeg.so and libdb_tiff.so respectively, and
used the new addFileExtensionAlias to alias the common file etension to
use these new names. This makes it consistent with the name of the
directories and source files in the distribution. Windows already used
this convention.
o Added osgDB::Registry::addFileExtensionAlias(,) to allow file extension
to be aliased to appropriate osgPlugins. Current default aliases are:
addFileExtensionAlias("rgba", "rgb");
addFileExtensionAlias("int", "rgb");
addFileExtensionAlias("inta", "rgb");
addFileExtensionAlias("bw", "rgb");
addFileExtensionAlias("jpg", "jpeg");
addFileExtensionAlias("jpe", "jpeg");
addFileExtensionAlias("tif", "tiff");
addFileExtensionAlias("geo", "lwo");
addFileExtensionAlias("lw", "lwo");
o Pulled libtiff, libpng and libjpg win32 image libraries from the
OpenIL image library distrbution and placed them into a zip archive
for win32 users to install, instead of having to trawl the internet
for them.
June 15th 2001 - osg-20010615.tar.gz
o Updated the TARGET_INCLUDE_FILES to reflect current set of include
files so that make install works properly once more.
o Fixed the src/osgUtil/Tesselate.cpp so that it detects the
defination of GLU_VERSION_1_2 and use modern glu tesselation
functions rather than the old style deprecated glu tess functions.
This fixed compilation problems under recent versions of Mesa.
o Fixed the texture coordinates of the top of the tank in the hangglide
demo - the center point texture coords were not being initiliaed
o Fixed a crash in osg::Texture::apply() which occurred when it was
called without a valid image being attached. The fix is simply
to add an _image.valid() check at the begining of the method.
o Changed src/Demos/sgv/Makefile so that it defaulted to *not* linking
with Performer - the previous dev release had this as default which
it shouldn't have.
June 13th 2001 - osg-20010613.tar.gz
o Added support osg::StateSet::RenderBinDetails into .osg
reader/writer plugin. This now allows multi-pass models to be saved
and loaded, such as osfreflect demo can now be reproduced in a .osg
file.
o Added support for osg::Stencil, osg::Depth, osg::ClipPlane and
osg::ColorMask classes to .osg reader/writer plugin.
o Added support osg::Drawable:UseDisplayList into .osg reader/writer plugin.
o Fixed the src/osgPlugins/pfb/ConvertFromPerformer.cpp so that is scales
the shininess value correctly when converting materials to osg.
o Added checks to osg::Material::set*(..) methods to use the new bounds
checking utilties to clamp values to valid ranges.
o Added include/osg/BoudingChecking header file with template definitions for
clamping paramters to specified ranges. template functions provided are:
clampGEQUAL(...), clampLEQUAL(..) amd clampBetweenRange().
11th June 2001 - osg-20010611.tar.gz
o Went through library source adding, where required to suppress spurious
warnings in during MSVC++ debug compilation, pragma warning ( disable 4786)
o Changed the mapping of coordinates in the .obj and .lwo loaders from
+x east, +y upwards, +z north (as specified in file specs) to the OSG's
+x east,+y north,+z updwards. The windings of triangles has also been
flipped to handle this change.
o Added a RegistryPtr class to handle the destruction of the the
registry, assinging NULL to the pointer once the registry is
deleted. Subsequent calls to the get() of RegistryPtr will
return NULL, which can be used for testing whether the registry
still exists or not. This means that Registry::instance() will
now return NULL if the registry has been automatically deleted.
The RegisterDotOsgWrapperProxy and RegistryReaderWriterProxy have
been modified to use this new property to prevent the registry
being called once it has been deleted. This has been done to
prevent out of order destruction causes seg faults on exit.
o Added Tesselator to src/osgUtil to be used in for breaking up
concave polygons into triangles - uses the glu tesselator.
o Reimplemeted src/osgPlugins/lwo to use new tesselator and allocate
seperate vertex lists for each material type.
o From Randall Hopper - Added missing int from static definition in
src/GLUT/Viewer.cpp.
o Removed use to OSGHOME from src/osgPlugins/lwo & obj Makefiles,
replacing with normal relative include paths for makedefs and rules.
o Removed unnecessary glib reference from src/osgPlugins/lwo/Makefile.
7th June 20001 - osg-200010607.tar.gz
o From Ulrich Hertlein - .obj and .lwo loaders. Various fixes and porting
to Windows done by Robert Osfield.
o Fixed bug in osgcube related to the color of the cube having an alpha
value of 0.0, which resulted in all OpenGL fragmennts failing the
AlphaFunc test which is now on by default. Changed the alpha to 1.0
for opaque.
o Implemented a multi-pass reflection demo in src/Demos/osgreflect which
uses the stencil buffer to tag mirror bits, and 5 render bins to order rendering
as Mark Kilgard's paper "Improving Shadow and Reflections via the
Stencil Buffer" which can be download at the NVidia website.
o Moved osg::Stencil, osg::Depth and osg::ColorMask from src/Demos/osgreflect
into the core osg library.
o Added osg::ClipPlane StateAttribute subclass to encapsulate OpenGL's
glClipPlane function.
31st May 2001 - osg-20010531.tar.gz
o Added osg::Stencil, osg::Depth and osg::ColorMask StateAttribute
subclasses to the osgreflect demo to enable multi-pass use of the
stencil buffer. osgreflect.cpp has yet to be modified to take
advatange of these new state class or multi-bin functionality,
this will be done for the next dev release. The Stencil, Depth
and ColorMask classes will be added into the core osg for the
next release.
o Added beginings of osgUtil::NewCullVisitor which will support the
new multi-pass/stage functionality, and replace osgUtil::CullVisitor
once the functionality is finalised. osgUtil::SceneView has been
modified to use either NewCullVisitor & RenderBin etc or the
previous CullVisitor/Renderer functionality. SceneView defaults
to the NewCullVisitor.
o Added beginings of osgUtil::RenderBin,osgUtil::DepthSortedBin and
osg::RenderStage to support multi-pass and multi-stage rendering.
o Fixed bug in osg::Matrix::mult(const Matrix& lhs,const Matrix& rhs)
which occured when either the lhs or rhs paramters were the same
matrix and 'this'. The osg::Matrix::invert(const Matrix& m) also
sufferd the potential problem. In both methods I've added checks
against the 'this' pointer to trap these cases and create a temporary
copy of 'this' before proceeding.
o From Ulrich Hertlein - support for texture subloading in osg::Texture.
25th May 20001 - osg-20010525.tar.gz
o Added new osgUtil::RenderLeaf class for storing drawable, matrix &
depth data and for rendering in conjunction with osgUtil::Renderer.
RenderLeaves are themselves stored inside the RenderGraph and
replace the previous pair<Drawable,Matrix> which did a similar job.
The new class allows extension, via subclassing, of the data stored
in a RenderLeaf, such as id's for picking, and also override of
the local rendering behavior via a its virtual render(..) method.
o Changed the printing of frame rate stats so that it prints out
appropriately every second rather than every frame, therefore
reducing the overhead of printing out to the terminal.
o Added prioritizeTextures() method to osgUtil::Renderer which parses
the draw bins and calculates the most appropriate texture priotization.
o Added getTextureObject(..) and getTextureObjectSize() to osg::Texture
to allow details of the texture object to be publicly accessed.
o Implemented view frustum culling that switches of redundent checks
against the side sides of the view frustum when traversing children.
19th May 2001 - osg-0.8.40 (minor updates made to release of 18th May)
o Small correction to NEWS file.
o Small updates to index.html.
o Removed '-ldl' from makedefs.irix.* as it is not required.
18th May 2001 - osg-0.8.40
o Updated Make/makedefs.* to better support FreeBSD compilation.
o Updated index.html and doc/Doxyfiles/* to include references to
the osgDB library and osgtexture demo program.
o Changed the default IRIX make to make.std, and make.nonstd to
make irix.old.
o Added src/Demos/osgtexture - a demo to demostrate the various texture
modes possible with osg::Texture.
o Fixed CullVisitor::setCullingActive(..) so that it now sets
the current CullViewState's modes as it should, previously only the
CullVisitor::pushMatrix() was setting these values.
o From Zang Zong Shan - bug fix to osg::Group::removeChild() to ensure that
the parent is removed from its child properly.
o From Karsten Wiess (with small mods for to avoid sqrt by Robert Osfield)
added osg::BoundingSphere::intersects( const BoundingSphere& bs )
o Add comments to methods include/osg/StateSet and StateAttribute.
o Added osg::Texture::readImageFromFramebuffer(...) from Karsten Weiss'
Imposter code. Note, name of method has been changed (from get..) and
State parameter added to allow the handling of multiple contexts.
o Changed the png plugin to use code from simage rather than previous
png code that the osg used, solving a crash reported on some png
files.
o Added temporary fixes into include/osg/StateSet, src/osg/StateSet.cpp
and src/osgPlugins/osg/StateSet.cpp to get round a crash under Windows
when saving a dot osg file. Actual problem has not been isolated,
so fix will be removed once real problem has been solved.
o From - added support for IMB_MIRROR_REPAT extension into
osg::Texture and .osg plugin.
o Added code to osgPlugins/osg/Texture.cpp to record the original
name of the image filename to be passed onto the image filename,
instead of the absolute path with name as recorded by the image
plugins themselves. This changes preserves the name from loaded
.osg through to any subsequent save .osg.
10th May 2001 - osg_20010510.tar.gz
o Bumped version numbers up to 0.8.40
o Added #include<osg/GeoSet> to osgUtil/SmoothingVisitor.
9th May 2001 - osg-20010509.tar.gz
o From Randall Hooper - modifications to osg::Timer, Makefile's and
the addition of Makefile/makedefs.freebsd Makefile/makerules.freebsd
to add support for the FreeBSD flavor of Unix!
o From Axel Volley - fixes to FieldReader and RenderGraph headers and
to Make/makedefs.irix.* to fix compilation problems which have
occurred under IRIX with the latest dev versions.
o Added the ability to clean and reuse the RenderGraph tree from
frame to frame, thus reducing the memory overhead of allocation
and deleting on each frame.
8th May 2001 - osg-20010508.tar.gz
o Added osg::StateAttribute::clone()=0 to the StateAttribute header file
to complete the overriding of osg::Object's virtual methods.
o Revised the StateAttribute/StateSet/State API a small amount to make
it more consistent.
o Fixed memory leak in new version of CullVisitor where more Matrices
were being allocated than required, and were left unreferenced.
o Fixed viewing bug in hangglide, introduced in osg-20010418.tar.gz
with the modifications to the osg::CameraManipulator base class.
o Added const and inline to methods in include/osg/* header files,
making it more explicit which methods are inline, and which paramters
and returns types are const. The later can help compilers produce
appropriate compiler errors when inappripriate things are done with
return types, which is good for compile error detection, and also
allows the compiler to more aggressive optimizer code.
o Fixed compilation error in osg::Output::open(,,,) under windows by
removing method. This is not a problem to end users since the
method was only added for absolute completness of overriding the
ofstream::open() method.
6th May 2001 - osg-20010506.tar.gz
o Added osg::State::apply(const osg::StateSet*) to apply a StateSet
without requiring a pushStateSet(),apply(),popStateSet() as required
in previous dev version. Combined with the two changes changes
below draw traversal times have been reduced significantly on
models with large number of state changes (such as billboarded trees
in Performer town.) Both Cull and Draw traversal times are now
faster than previous releases.
o Moved the support for tranform Matrices in the osgUtil::RenderGraph
into a Drawable/Matrix pair rather than one per RenderGraph element.
Modifed osgUtil::CullVisitor and osgUtil::Renderer to reflect this
change.
o Added 'inline' keyword to numerous methods in osg and osgUtil header
files to give a less subtle hints to compilers than a inline method
is indeed inline. VisualC++ particularily seems to need inline
to specified explicitly.
o Added osgDB::Output::s/getPathNameHint() and Output::setPathNameHint(..)
to to help future support for absolute filepaths, relative file paths
in the .osg outout. Currently only implements AS_IS and FILENAME_ONLY.
3rd May 2001 - osg-20010503.tar.gz
o Modified osgUtil::SceneView to reference the RenderGraph and Renderer's.
o Modified osgUtil::CullVisitor so it creates a RenderGraph instead on
the previous DrawBin.
o Added osg::StateSet::g/setRenderingHint(..) to allow hints to be passed
on to the Renderer to allow it place the drawables in the appropriate
rendering bin for rendering. This allows, for instance the rendering
transparent bin to be addressed independantly from the current GL_BLEND
mode. An int is used so more than just Opqaue or Transparent bins could
be referenced from within the scene graph (but these must be handled
by Renderer subclasses.)
o Replaced osgUtil::DrawBin by osg::Renderer which traverses a RenderGraph
to generate its own render bins, supports basic coursed grained state
sorting. Designed to subclassed to allow users to modify the rendering
behaviour.
o Implemented new osgUtil::RenderGraph class for storing state, matrix and
drawable data produced from a cull traversal (such as by CullVisitor.)
o Removed all osg::StateAttribute subclasses static void enable()/disable()
as these have been made redundent by the new osg::State/StateSet &
StateAttribute functionality.
o Removed osg::Lighting since it is now redundent thanks to new
functionality of osg::State/StateSet & StateAttribute functionality.
o Reworked the .osg, .pfb, .3ds and .flt loaders to use the new
osg::StateSet class.
o Reworked osgUtil, osgDB, osgGLUT, Demos/osgcube, osgreflect and hanglide
to use the new osg::StateSet class.
osg::StateSet class.
o Renamed osgUtil::GeoStateManipulator to osgUtil::StateSetManipulator
be consitent with GeoState's replacement.
o Replaced osg::GeoState with new more flexible osg::StateSet.
osg::GeoState nolonger exists so users will have to port to use the
new osg::StateSet. Functionality can easily be mapped across to the
StateSet so this should not be difficult task.
o Removed the deprecated RenderVisitor since it has now been replaced
by the more flexible and powerful CullVisitor/DrawBin pair (which
themselves may be replaced later by more flexible and powerful...:)
o Fixed osg:Geode::computeBound() method so that it handled empty geode's
correctly setting the Bounding Sphere to default initialized state to
represent and empty sphere. Previous (nan,nan,nan) was calculated for
the center of the bounding sphere for empty data.
o To fix a compliation collision when #define DEBUG is used and Notify is
included, have changed enum NotifySeverity { ... DEBUG=5, FP_DEBUG=6 }
to enum NotifySeverity { ... DEBUG_INFO=5, DEBUG_FP=6 }
18th April 2001 - osg-20010418.tar.gz
o From Neil Salter, additions to osgUtil of new
osgUtil::GUIEventHandler,
osgUtil::SceneViewManipulator and
osgUtil::GeoStateManipulator.
o Fixed date problems in distribution which occured in osg-20010416.tar.gz.
o Added make stats option to the root Makefile to allow the number of lines
of code in each component of the OSG to be logged.
16th April 2001 - osg-20010416.tar.gz
o Added Don Burns sgv key bindings documentaiton into doc/sgv.html
o Added s/getState() to osgUtil::DisplayListVisitor to provide state
for the compile display list method to use. Added new DisplayListMode
COMPILE_ON_DISPLAY_LISTS which is implemented so that if display
lists are already switched on in the traversed scene graph are
compiled.
o Added support for multiple OpenGL contexts (and hence multiple seperate
texture object and display lists) into osg::Texture::apply(State&) and
osg::Drawable::draw(State&). This allows the OSG to work in multipipe
systems.
o Added (State& state) parameter to both osg::StateAttribute::apply(State&)
and osg::Drawable::draw(State&) to allow the handling multiple OpenGL
context. All subclass' of StateAttribute and Drawable have been updated
to reflect this new paramter.
o Added s/getContextID() to osg::State to handle the specification of
a unique unsigned int to specifiy the current active OpenGL context.
This value is in turn used by osg::Texture and osg::Drawable to
manage multiple texture binds and display lists, one for each
OpenGL context, thus enabling multi-pipe support.
o Fixed the osgDB::Registry::writeObject() so that it supports the
writing of osg::Object UniqueID out to .osg.
7th April 2001 - osg-20010407.tar.gz
o Added numerous get and set methods to a large proportion of classes in
the core osg library. Made methods const correct where appropriate.
Also modifed several enum type names to be more consistent from class
to class.
o From Karsten Wiess - added osg::Matrix::makeRot(Vec3,Vec3).
o Added ostream << operator to osg::Matrix for debugging purposes.
o Changed osg::Object::isSameKindAs(Object*) to be const correct i.e
isSameKindAs(const Object*) const. All subclasses of osg::Object
have been updated to reflect this change.
o Changed the osg::Billboard::get* functions so that they return
values rather than requiring the paramter passesing. This has been
done to be more consistent with the rest of the osg, make it easier
to use and improve the potential for compiler optimization.
o Moved loadObject/Image/NodeFile from include/osg/Registry into
include/osgDB/ReadFile, and renamed them readObject/Image/NodeFile
to keep consistency with ReaderWriter & Registry.
o Moved saveObject/Image/NodeFile from include/osg/Registry into
include/osgDB/ReadFile, and renamed them writeObject/Image/NodeFile
to keep consistency with ReaderWriter & Registry.
o Moved database & dynamic plugin support out of core osg library into
seperate osgDB library which is now an optional layer above the core osg.
o Moved osg ascii support & ReaderWriter out of core osg library and into
a seperate osgPlugins osg plugin.
o Moved rgb image reader out of core osg library and into a seperate
osgPlugins osg plugin.
o Removed osg::Scene since it is now redundent thanks to the new ability
to attach osg::GeoState to all internal nodes within the scene graph.
o Removed osg::Sequence as it was nothing more than a shell implemention,
which could be inappropriately used. Will implement properly later.
29th March 2001 - osg-20010329.tar.gz
o renamed the following methods in osg::GeoSet for consistancy:
getNumIndices() -> getNumCoordIndices()
getCIndex() -> getCoordIndices()
getNumNIndices() -> getNumNormalIndices()
getNIndices() -> getNormalIndices()
getNumCIndices() -> getNumColorIndices()
getColIndex() -> getColorIndices()
getNumTIndices() -> getNumTextureIndices()
getTIndex() -> getTextureIndices()
o Itegrated changes from Bryan Woods for Mac port:
- include/osg/Timer - small macintosh #define comment out.
- src/osg/FileNameUtils.cpp - added using std::tolower,std::stlen
within #machintosh guards.
- src/osgGLUT/Viewier.cpp - #ifndef machintosh printing out
of library name and version in constructor.
- src/sgv.cpp & repsective files osgcube,osgreflect and hanglide have
moved the glutInit(,) call to the top of each main function.
- updated the Metroworks file
o Added a src/Demos/sgv/Makefile.performer and Makefile.standard to
all the direct linking to Performer hack to be easily applied to
sgv to get round the know problems with dynamically linking to
Peformer.
o Changed osgUtil::SceneViewer::draw() method so it would clear background
even if no model have been attached to the scene view.
o Changed include/osg/Notify to use #ifdef __GNUC__ instead of __linux
as guard for dummy code required to prevent a gcc warning.
25th March 2001 - osg-0.8.39.tar.gz
o Added option for uint indices in osg::GeoSet to allow very large models
to be represented.
o Moved the distribution version numbering from previous osg-0.8-39.tar.gz
style to more standard osg-0.8.39.tar.gz The distribution directory also
now reflects the new version numbering, so rather than the
OpenSceneGraph-0.8 the directory will be osg-0.8.39. These two changes
bring the OSG into line with established conventions in the open source
world.
o From Karsten Wiess - added small piece of dummy code into
include/osg/Notify to prevent inappropriate gcc warnings.
o From Neil Salter
- updated the doc/Doxyfiles directory to handle the
proposed version number i.e. osg-0.8.39 for next version.
- updated NEWS file to be compatibile with new automated scripts for
generating Doxygen documentation for distribution.
- updated osg banner in html pages to indicate documentation is
from the distribution.
o Fixed typo in src/osgPlugins/lib3ds/track.cpp which caused the lib3ds
to fail to build.
21st March 2001 - osg_src-20010321.tar.gz
o Added osg::StateAttribute base class, changed all state attribute
classes so that they now inherit from osg::StateAttribute and
changed osg::GeoSet to work with osg::StateAttribute. All
StateAttrbute subclasses (Texture/TexGen...) all now register
with the osg::Registry, and all .osg file reading uses these
prototype as per image,node, and drawable prototypes. Although
osg::GeoState is still hardwired to certain state attributes
as before much of the infrastructure around it has be upgraded
to pave the way for a more flexible osg::GeoState.
o Removed _drawBin->reset() from CullVisitor::reset() since it
should be reset extrenal to the CullVisitor.
o Added osgUtil::SceneView::s/getDrawBin() methods.
o Changed the lib3ds includes to be local header paths and
changed lib3ds/float.h to lib3ds/lib3ds_float.h to avoid
collisions with the system float.h. Note, the changes to
path required changes to both the source, Unix Makefile and
VisualStudio lib3ds.dsp files.
o Changed the usage text to reflect the name of osgreflect.
o Removed app and cull traversal calls from osgGLUT::Viewer::draw(),
since there are now handled by their own app() and cull() methods.
18th March 2001 - osg_src-20010318.tar.gz
o Implemented base class osg::Drawable from which osg::GeoSet is now
derived. osg::Geode now contains a list of osg::Drawables, and
osg::Registry and osg::Input have been extended to handle dynamic
exensions of osg::Drawable in file IO. Numerous files have been
modified to support the new structure, it is also likely to break
user code, look at the code with the plugins and demos to see how
adapt code to the new style. The changes are likely to be minimal -
for instance geode->addGeoSet(geoset) would change to
geode->addDrawable(geoset). Some .osg files no longer load due to
a bug introduced with the above changes - still investigating it,
likely to be just a typo somewhere...
o Renamed DCS -> Transform.
o Renamed Seg -> LineSegment.
15th March 2001 - osg_src-20010315.tar.gz
o Added osgUtil::SceneView::setAppVisitor(), getAppVisitor() and
app() to support user defined app traversal.
o Added support for the new SceneView::app() traversal into osgGLUT/Viewer
and cleaned up the app(),cull() and draw() methods.
o Added an AppVisitor to the Demos/osgreflect which rotates the loaded
model about its center point.
o Added a osg::NodeVisitor::reset() to be called prior to each traversal
to allow subclasses to flush internal set for each traversal.
14th March 2001 - osg_src-20010314.tar.gz
o Added reflection demo, which can be found in Demos/osgreflect.
o Made osg::Reference::_refCount mutable and the ref() & unref() const
methods, to faciliate the referencing of const objects.
o Added support for attaching osg::GeoState to internal nodes in the
scene graph. This enables subgraph's state to be overridden, which
enables several multipass techniques, such as planar reflections.
o Added src/osg/State.cpp to help manage pushing and popping of current
state. include/osg/State previously existed but was just a shell,
and has now been updated to provide funcitonal interface!
o Fixed a typo in VisualStudio/Demos/osgcube/osgcube.dsp which caused debug
build link time errors - a space was missing between two library names.
o Added osg::FrontFace state attribute class for managing the OpenGL
glFrontFace(,) on a per osg::GeoState basis.
Added files include/osg/FrontFace and src/osg/FrontFace.cpp and
modified include/osg/GeoState, src/osg/GeoState.cpp.
o Added osg::GeoState::merge(osg::GeoState* lhs,osg::GeoState* rhs)
method to osg::GeoState, for use in the new osgUtil::DrawBin.
o Updated comments in include/osgUtil/SmoothingVisitor, TriStripVisitor
and include/osg/Scene.
o Corrected header guards in DisplayListVisitor to be consistent with rest
of library, and updated comments.
o Update NEWS with small revisions.
o Fixed crash in NvTriStrip due to TriStripVisitor calculating the
number of vertices one to small, which resulted in memory errors.
6th March 2001 - osg_src-20010306.tar.gz
o Added new class osgUtil::CullVisitor and osgUtil::DrawBin which are
steps towards spliting up the osgUtil::RenderVisitor into its component
parts.
o Updated NvTriStripObject.cpp with patch from NVidia.
o Updated the NEWS information to allow automatic parsing of the file
for NEWS and headlines on the osg website implmented by Neil Salter.
o From Karsten Weiss - added comments and correct typo's in
include/osg/Scene and include/osg/Group
o Added osg::PolygonMode state attribute class for managing the OpenGL
glPolygonMode(,) on a per osg::GeoState basis.
Added files include/osg/PolygonMode and src/osg/PolygonMode.cpp and
modified include/osg/GeoState, src/osg/GeoState.cpp and
src/osgGLUT/Viewer.cpp to utilize the new class.
4th March 2001 - osg_src-20010304.tar.gz
o Changed osg::Scene and osg::DCS to use osg::ref_ptr<> instead of
directly managing dynamically memory.
o Fixed crash due memory errors in osgUtil::IntersectVistor.
o Updated NEWS with main items for ChangeLog dating back to the first
days of the ChangeLog.
o Changed the file extension checking methods in ReaderWriterOSG,
ReaderWriterRGB, ReaderWriterOSGTGZ, ReaderWriterTGZ, ReaderWriterZIP
to use use new function osg::equalCaseInsensitive(lhs,rhs).
o General purge of warnings in libs and plugins.
o From Neil Salter
- spelling corrections to include/osgGLUT/Viewer.
- updates to doc/Doxyfiles/*.
o Added extensions guard to src/Demos/hangglide/ReaderWriterFLY.cpp
which fixes the bug where the hangglide demo does can only read
.osg or .fly input files.
o Updated the index.html and doc/index.html with the OSG banner and
new text and various clean ups. Added doc/OpenSceneGraphBanner.jpg
o Fixes to get dev version below compiling under IRIX std and non std
compile options - FileNameUtils.cpp, Seg.cpp, NvTriStrip.cpp and
lib3ds/quat.cpp.
1st March 2001 - osg_src-20010301.tar.gz
o Macintosh port of osg from Bryan with mods for integration by Robert.
- Added Metrowerks make files.
- Added strdup defintion into src/osg/FileUtils.cpp to ensure compatiblity
under mac.
- Added #defined(macintosh) into include/osg/Types to define M_PI etc.
- Integrated changes to src/osg/DynamicLibrary.cpp for macintosh port.
- Integrated changes to src/osg/FileNameUtils.cpp for macintosh port.
- Integrated changes to src/osg/FileUtils.cpp for macintosh port.
- Integrated changes to src/osg/Registry.cpp for macintosh port.
- Integrated changes to src/osg/Texture.cpp for macintosh port.
- Integrated changes to src/osg/Timer.cpp for macintosh port.
- Integrated changes to src/osg/GLExtensions.cpp for macintosh port.
- Integrated changes to src/osgUtil/RenderVisitor.cpp for macintosh port.
- Integrated changes to src/osgUtil/IntersectVisitor.cpp for macintosh port.
- Integrated changes to include/osgGLUT/Viewer for macintosh port.
- Integrated changes to src/osgGLUT/Viewer.cpp for macintosh port.
- Integrated macintosh timmer support into include/osg/Timer
- Modified src/osg/Texture.cpp to take account of the new file
name type in osg::Image.
- Converted osg::Image::_fileName from char* to std::string to
avoid issues with portability due to strdup not being availble
on mac.
28th Faburary 2001 - osg_src-20010228.tar.gz
o Updated the osgUtil::TriStripVisitor to create seperate tri strips,
which fixes crashes which occured under Windows. Significant
speed up is can be achieved for many datasets by applying the
tri stripper. However, right now it can flip triangle orientation
which if back face culling is on may cause a model to apparantly
disapper... Turn off back face culling to see all surfaces. This
'feature' will be fixed to maintain surface orientation before and
after tri stripping.
24th Feburary 2001 - osg_src-20010224.tar.gz
o Modified osg::GeoSet to support sharing of the coord, normal, texture and
colour index list in both the .osg IO and the handling fast paths for
rendering.
o Added support for smoothing groups to 3ds plugin.
o Added support for beautify to unix makefiles and ran it on .cpp files.
o Added osgUtil::TriStripVisitor which use NvTriStrip to create
optimized triangular strips. Modified osgGLUT::Viewer to tri
strip when 'R' is pressed (for tRi strip). *Note* this is work in
progress and its is known to crash in certain circumstances.
o From Karsten Weiss - added comments to osg::Switch.
o Removed redundent src/Demos/hangglide/Trees.cpp.
o Added < operator to osg::Vec2,3 & 4.
o Changed the implementation of osgUtil::SmoothingVisitor to fix a bug
and to increase algorithm speed - now O(nlogn) rather than O(n^2).
17th Feburary 2001 - osg_src-0.8-38.tar.gz
o Added REPLACE to osg::TexEnv which supports the equivilant GL_REPLACE
texture environment mode.
o Fixed osg::GeoSet rendering bug which occurs when an coord index
list is mixed with normals (or colors) which are attached to the
geoset on a per vertex basis.
o Made appropriate osgUtil::RenderVisitor get methods const.
o Changed osg::Geode::getNumGeosets() to osg::Geode::getNumGeoSets() for
consistentcy and made it and several other osg::Geode methods const.
15th Feburary 2001 - osg_src-20010215.tar.gz
o Added beginings of a 3ds loader, based on lib3ds, can now load meshes
and textures.
o Added file search function osg::findFileInDirectory(..) which has
the option of doing case insensitve comparisons of names. Useful for
handling dos mixed case filenames under unix. 3ds files are particularily
prone to incorret case between filename in .3ds file and file on disk,
this method allows these problem filename to be handled gracefully
under unix. Also add osg::equalCaseInsensitive() which takes two
strings and compares them for equality ignoring case to support the
above osg::findFileInDirectory(..)
o Added new demo app - osgconv which takes loads specified files, and then
writes out the resultant model to a specified file.
o Updated version number in doc/Doxyfiles/Doxyfile_all, src/osg/Version.cpp
src/osgUtil/Version.cpp and src/osgGLUT/Version.cpp.
o Added include/osgGLUT into the TARGET_DIRS list in Make/makedefs.linux
and Make/makedefs.irix.nonstd & makedefs.irix.std
10th Feburary 2001 - osg_src-0.8-37.tar.gz
o Moved camera manipulator registration from osgGLUT::Viewer::constructor,
and setting of home in osgGLUT::Viewer::init() to happen in
osgGLUT::Viewer::run() and only when not other initialized. This allows
programs with use the the osgGLUT::Viewer class can set up there own
camera manipulators as in src/Demos/hangglide.
o Moved src/osgPlugins/fly to src/Demos/hangglide and created a simply
hang glider flight simulator.
o Added support for ARB and S3TC texture compression into osg::Texture and
methods to control the way that the internalFormat is used for OpenGL
textures.
o Updated version numbers in src/osg/Version.cpp, osgUtil/Version.cpp,
osgGLUT/Version.cpp and doc/Doxyfile.
o Removed src/osgPlugins/matrix.h&.cpp,vector.h&.cpp,oldtrees.cpp.
o From Karsten Wies - fix to src/osg/Switch.cpp to solve IO bug,
corrections to comments in include/osg/Registry.
o From Neil Salter - changes to support both doc++ and doxygen documention.
29th January 2001 - osg_src-20010129.tar.gz
o Moved src/Demos/cube to src/Demos/osgcube to remove install conflicts
under RH7, changed cube.cpp to osgcube.cpp, changed src/Demos/osgcube/Makefile
changed VisualStudio/VisualStudio.dsw and VisualStudio/Demos/cube etc..
o Removed two obsolete object files in src/osg/{ExtensionSupported.o,OSG.o}
o Removed vi swp file OpenSceneGraph-0.8/dist/.osg.spec.swp
o Fixed file permission of in doc/MindMap and doc/UML.
o Removed comma's at end of enumerator list in include/osg/GeoState
and src/osgPlugins/FaceRecord.h
28th January 2001 - osg_src-0.8-36.tar.gz
o Rewrote the implementation of osg::notify() once again to solve
a crash under Windows when an int is passed to the absorb stream.
Have moved the ofstream to a local static definition in osg::notify()
rather than a global in Notify.cpp. Note, the absorb stream is
now always set to "nul" or "/dev/null" under Windows and Unix
respectively, and can no longer be set to a user file.
o Did spell check on include/osg/Notify, Notify.cpp, FAQ.
o Added a couple of comments to src/osg/Billboard.cpp to explain
current incomplete implementation.
o Fixed minor warning in include/osg/mem_ptr.
o Updated src/osg/Version.cpp, src/osgUtil/Version.cpp & src/osgGLUT/Version.cpp
to version 0.8.36.
25th January 2001 - osg_src-0.8-35.tar.gz
o Added basic comments to osgUtil::GUIActionAdapter explain a little of
how it might be used in.
o Added reading from .osg files of the "Axis x y z" for osg::Billboard,
previously osg::Billboard::readLocalData ignored the Axis paramter
even though it was saved.
o From Karsten Weiss :
- Spelling corrections to comments in include/osg/Object & Node.
- Extra comments to include/osg/Matrix.
o Fixed bug in osg::Image::ensureDimensionsArePowerOfTwo() where
message was being written out without guarding against the
image name being NULL.
o Fixed the osg::notify() messaging function under Windows, with
same functionality that has exisited under unix - allowing users
to absorb messages, send them to cerr, cout or to a nominated file,
controlled via environmental variables, or set functions with the
application.
o Went through all include/osg header files removing redundent
includes to minimize compile time. Removed include's
of glu.h and glx.h in the include/osg/GL header file as these
are only required in specific cases.
o Removed UnrefOp functor from inclide/osg/Referenced and changed
all dependent files to use osg::ref_ptr<> instead for handling memory.
o From Don Burns :
-code for smoothing normals on osg::GeoSet's, integrated code
into osgUtil::SmoothingVisitor (RO)
-Bug fix for for_each_triangle() to ensure that
orientation of triangles is correct.
o Added new osg::mem_ptr template class (include/osg/mem_ptr) for
refence counting with data which does not internally support
ref/unref themselves (as required my ref_ptr and supplied normally
by deriving form osg::Referenced) instead delagating the
responisbility of reference counting and deleting unreferenced
memory to an associated osg::MemoryAdapter.
o Moved osg::ref_ptr from include/osg/Referenced into its own
header file include/osg/ref_ptr. Cleaned up numerous files
to include the new header file.
o Moved osg::MemoryAdapter from osg::Node into its own file,
include/osg/MemoryAdapter, and moved osg::ReaderWriter from
osg::Registry into its own file include/osg/ReaderWriter.
o Clean up most warnings associated with the new -W -Wall pedantic
warnings option.
o Rename include/osg/OSG to FileUtils to reflect its now less central
role in the OSG scene graph, renamed osg::FindFile osg::findFile,
osg::SetFilePath to osg::setFilePath, added osg::getFilePath() and
add osg::getDirectoryContents. Removed most references to the
old include/osg/OSG as they wern't required! Renamed the references
which were required.
o Renamed osgUtil::GUIActionAdapter::needRedraw() to requestRedraw(),
needContinuousUpdate() to requestContinuousUpdate() and
needWarpPointer to requestWarpPointer. Removed the redundent bool
paramter from requestRedraw. Updated Trackball, Drive and Flight
manipulators and osgGLUT to reflect new names.
Changed the default drive mode so it uses left and right mouse
buttons for speed control instead of using the mouse y position.
Both are still availble via original 'A' and 'Q' keybindings.
o Moved contents of README to INSTALL, and made README a bare bones
readme. Updated index.html to link to both.
o Moved include/osg/ExtensionSupported to include/osg/GLExtensions.
Renamed osg::ExtensionSupported to osg::isGLExtensionSupported,
reimplemented osg::isGLExtensionSupported to use std::set's for
increased speed. Added osg::getGLExtensionFuncPtr() as a cross
platform way to get OpenGL extension functions. Updated Point.cpp
and Texture.cpp to use the new methods and clean up the support
for OpenGL extensions. Cleaned up include/OSG/GL.
o From Axel Volley:
Added support for OBJECT_LINEAR and EYE_LINEAR TexGen modes,
Added support for the Anistropic texture filter extension to
Texture.cpp.
o Moved the information about plugin dependancies from README to index.html
and made the links to the appropriate web sites. Added links for data
sources.
o Updated the FAQ in to reflect progress to beta and new documetation details.
o Moved the createNodeFromImage functionality from the image readers
into osg::Registry::readNode(), removing readers readNode() functions.
Added osg::Registry::setCreateNodeFromImage(bool flag) and equivilant
get function to support the switching on and off of this functionality.
This is then is by the new archieve functionality.
o Added src/osgPlugins/tgz for general tarball models.
o Added src/osgPlugins/zip for general zipped models.
o From Don, src/osgPlugins/osgtgz for a osg tarball models.
dist/Irix for creating IRIX binary distributions.
o Removed redundent NSPlugin and src/Viewer directorties.
o Fixed compilation error in src/osgPlugin/flt under IRIX
related to flt::Record::Record(const Record&):Referenced() {}.
6th December 2000 - osg_src-0.8-34.tar.gz
o To bring the main branch inline with the autoconf branch, and inline
with standard open source conventions, have made the following changes.
- Copied and doc/index.html to index.html and modified to ref. README
file and new relative paths of the documention.
- Added AUTHORS file.
- Rename and moved doc/CHANGES.txt to ChangeLog,
doc/TODO.txt to TODO,
doc/FAQ.txt to FAQ,
LICENSE to COPYING.
README.txt to README.
Note, removing the .txt from files means that Windows won't be able to
pick up on the file type automatically. However, they didn't have the
Win32 style end of line conventions so they still wern't much use. By
adding the index.html to the root directory this now allows Win32 users
to browse the relevant files via Netscape or IE which can handle the
unix style text files. I felt this was the best compromise.
o Added notify messages to osg::Registry::read/writeOject/Node/Image()
for when a plugin for a file extensions hasn't been found and for
when a file hasn't been successfully read.
o Added Axel Volley's UML diagrams to doc/UML.
o Added mind maps on DesignPatterns and MissionState to doc/MindMaps.
o Added new library command line options (see below) into src/Demos/sgv.
o Integrated Graeme Harkness's reworking of src/Viewer into src/osgGLUT
and Demos/sgv. Added Graeme's new Demos/cube which provides a simple
demonstration of animation.
o Added ReaderWriterPFB::readImage() to enable the loading of .pfu images
into the osg, even if .pfb arn't used. Note, you'll need to run the
viewer something like 'sgv -e pfb datfile.osg.
o Added pfMultiprocess(0) to ReaderWriterPFB.cpp.
o Added -W predatic warning option to compilation under Linux, and cleaned
up the headers and source in response.
o Added osg::Image::ensureDimensionsArePowerOfTwo() and a call
to it from osg::Texture::apply() when mip mapped textures are required.
Added packing aligment value to osg::Image, defaulting to 4 if the
image width is a factor of 4, otherwise defaulting to 1.
osg::Texture::apply() now used this osg::Image::_packing value to set
glPixelStorei();
o Added sgv usage help to Viewer.cpp. Running 'sgv' will now report
the command line options for sgv. Outputs the following :
usage:
sgv [options] infile1 [infile2 ...]
options:
-l libraryName - load plugin of name libraryName
i.e. -l osgdb_pfb
Useful for loading reader/writers which can load
other file formats in addition to its extension.
-e extensionName - load reader/wrter plugin for file extension
i.e. -e pfb
Useful short hand for specifying full library name as
done with -l above, as it automatically expands to the
full library name appropriate for each platform.
o Added command line options -l and -e to Viewer.cpp to assist usage
of plugins which can load more than indicated by their standard
file extension type. See above for details. For instance pfb plugin
can load *many* file formats.
Try 'sgv -e pfb /usr/share/Performer/data/teapot.dxf'.
o From Ben Discoe, added osg::Matrix::setTrans() and getTrans().
o Moved src/pfPlugin to src/osgPlugins/pfb and added code to enable
the plugin to work with the osg as a plugin in addition to it
previous functionality as a Performer plugin. Creating a link
from lib/osgPlugins/osgdb_pfb.so to lib/libpfosg.so
should be sufficient from Performer to pick up on the library.
Added support for copying image data across from pfTexture to
osg::Image texture and handling of pfMaterial::getColorMode().
Added to src/osgPlugins/pfbREADEME.txt to documentation some
of the features and issues of the Performer plugin.
o Fixed bug in osg::GeoState related to loading and saving of the
new alpha_test paramter, which wasn't initialised in the osg::GeoState
constructor.
22nd December 2000 - osg_src-0.8-33.tar.gz
o Integated Brede Johansen's update to flt loader.
o Added function osg::getLowerCaseFileExtension() to osg/FileNameUtils,
modifed osg::Registry::createLibraryNameForFile() and
osg::ReaderWriterRGB::readImage() to use this function for correctly
recognising upper case extensions as equivilant to their lower case
counterpart, i.e. .RGB should be interepreted as .rgb.
o Fixed intersection bug which occured of osg:GeoSet's containing
osg::GeoSet::TRIANGLES primitive bug. Bug was due to compilers
incorrectly optimizing a templated function & functor, fixed
by small reordering of the code, works perflectly now?!
o Updated the README.txt with info on the dependancies of the new plugins.
o Created VisualC++ project files for gif,jpeg,tga,tiff image loaders.
o Commented out disabling of depth testing for transparent bin as it
was causing visual artifacts on several models.
21st Decemeber 2000 - osg_src-20001221.tar.gz
o Added an osg::createGeodeForImage(Image* image) method in osg/Image
to create a geometry node around a image so that it can visualised
within the scene without having to create all the required Geode,
GeoSet, GeoState and Texture classes. Added a call to above from
each of the image loaders so that images themselves can be loaded
into sgv... Thereby making sgv an 3D image viewer!
o From Don, added facility in osg::Texture so that if
_min_filter == LINEAR || _min_filter == NEAREST then
create a glTexImate2D, otherwise create a gluBuild2DMipmaps texture.
o From Don, added code to display able depth testing of the transparent
bin in the osgUtil::RenderVisitor:render() method.
20th Decemeber 2000 - osg_src-20001220.tar.gz
o Incorportated the following image loaders from the simage library.
src/osgPlugins/gif
/jpeg
/pic
/tga
/tiff
Note, have only written unix makefile's so far, VisualStudio files need
to be written before the next release.
o Changed osgGetVersion() and osgUtilGetVersion() so that they
return const char* instead of the original float.
o added osg::GeoSet::s/getUseDisplayList(),dirtyDisplayList() and
virtual method drawImmediateMode() which draws primitive without
ever calling or creating a display list. The draw() has been
changed to handle the new _useDisplayList flag so that it
automatically creates a display list if the flag is true and
uses the display list on further calls to draw(). draw() is nolonger
a virtual method and therfore should *not* be overriden,
drawImmediateMode() is now the method to override. This allows
subclasses of osg::GeoSet to automatically take advantage of display
lists.
o From Brede, added option to osgUtil::SceneView to enable the automatic
calculate of near and far planes on each frame to be switched on/off.
o From Kartsen, spelling fixes to comments in Switch and GeoSet.
18th December 2000 - osg_src_20001218.tar.gz
o Changed the directory structure in preperation for autoconf
integration.
o Converted pf2osg and osg2pf into a libpfosg.so plugin for Performer,
instead of stand alone conversion programs, new pffb plugin can be
found in src/pfPlugin.
o Changed the osg::Material default _colorMode to OFF, and
the global material _colorMode default to AMBIENT_AND_DIFFUSE.
o Added read/write support for interleaved arrays into osg::GeoSet.
16th December 2000 - osg_src_20001216.tar.gz
o Added osg::AlphaFunc state object.
o Added support for osg::AlphaFunc into osg::GeoState.
o Added support for osg::AlphaFunc into flight_park.fly.
o Changed osg::Material::apply() so only required glMaterial's are
called.
o Integrated Don's work on adding glVertexArrays etc to osg::GeoSet.
12th December 2000 - osg_src-20001212.tar.gz
o Integrated Karsten's standardisation of the library header guards.
o Added osg::LightSource node.
o Added get methods to osg::Light.
o Modified osgUtil::RenderVisitor is track osg::LightSource nodes.
o Modified osgUtil::SceneView so that it can handle headlight,
sky light, and no scene view lights for the extra lights it
adds to the scene for viewing. In the later mode only osg::LightSource's
will light the scene.
o Modified Viewer.cpp so that it toggles between the above scene view
lighting modes above using the 'L' key.
o Changed osg::Geode and osg::Group to rely upon ref_ptr<> for memory
management rather the previous mode which required explicit ref and
and unref statements.
o Made osg::GeoSet::draw() and osg::GeoSet::getBound() virtual functions
to allow user-drawn objects. A short term fix only.
8th December 2000 - osg_src-0.8-32.tar.gz
o Added osg::Node::s/getNodeMask() as a fore runner to full implementation
of TraversalMasks.
o Added osg::loadNodeFile(),osg::loadImageFile() and osg::loadObjectFile()
to osg/Registry header, as convienince functions for loading data.
o Added osg::Camera::s/getFieldOfView() methods and split up the
draw method into draw_PROJECTION() and draw_MODELVIEW() methods.
Converted osg::SceneView is use these methods instead own gl calls.
o Added osg::Timer class for high resolution, low overhead time stamping,
converted sgv to use it. Timer class based on Don's real time frame
scheduling library.
o Added extension guards to .rgb reader/writer to prevent it from trying
to load non rgb models. Accepted extensions are rgb,rgba,int,inta & bw.
o Added osg::Node::setUserData(void*,MemoryAdapter*), osg::Node::getUserData()
and osg::Node::getMemoryAdapter() and osg::MemoryAdapter to support user data.
o Added png image file format loader.
o From Ben Discoe:
- updated LOD to use distance squared for evaluating child usage to
remove need to computing sqrt.
- png to osg::Image conversion code.
o From Kartsen Weiss, fixes and improvents to sgv help message.
o From Brede Johansen:
- added osg::Node::setName( const char* name )to get round a crash
under Windows, caused by a VisualC++ bug, which occurs under to
multiple assignment of C style string to C++ strings.
- bug fix for .rgb plug-in to solve problems with some textures
with alpha values. The water tower, fences and fences now render
properly in Performer Town!
o Added osgUtil::SceneView::set/getBackgroundColor() for setting the
background colour used by glClearColor().
o Added osgUtil::SceneView::projectWindowIntoObject(),
projectWindowXYIntoObject() and projectObjectIntoWindow() to
assist converting to and from window coordinates and object
coordinates.
o Added osg::Image* osg::Texture::getImage() to osg::Texure and
converted it to use ref_ptr<Image> for handling the image memory.
Added osg::Texture::getFilter() && getWrap() and seperated out
enum TextureMode into enum WrapParameter & WrapMode, and
FilterParameter & FilterMode.
o Converted osg::GeoSet to use ref_ptr<GeoState> for handling the
geostate memory.
2nd December 2000 - osg_src-0.8-31.tar.gz
o Added osgUtil::SceneView to encapsulate the details required to
render a view of a scene - the scene data, light, global geostate,
camera and rendervisitor.
o Cleaned up Viewer/Viewer.h & .cpp to use the new osgUtil::SceneView.
o Integated Brede Johansen's update to flt loader.
o Added .txt extension to README,CHANGES,TODO and FAQ to aid reading
of files under Windows.
o Added osg/Version and osgUtil/Version which provide
external C functions for getting library name and version.
Also can be used by autoconf to check for existance of the
osg and osgUtil libraries.
o Implemented missing osg::Camera::home();
o Fixed bug in osg::Material::apply() where no texture would
be appear on surfaces on the first frame. glBindTexture was not
being called with the correct parameter on creation of the OpenGL
texture.
o Removed redundent glEnable(GL_LIGHTING) from Viewer.cpp.
o Changed the osg::Light::setDirection(Vec4&) to setDirection(Vec3&).
o From Karsten Weiss :
Comments added to osg::Light and osg::RenderVisitor.
Fixes to make install parts of osg/src/Makefile.
28th November 2000 - osg_src-0.8-30.tar.gz
o Added osg::Object::isSameKindAs(Object* obj) to aid object type
comparions. This allowed osg::Object::readClone(Input& fr) to
be extended to automatically detect 'Use ObjectID' syntax in .osg files,
which fixes errors in reading .osg files saved from some data models
created correctly by the flt loader.
o Integated Brede Johansen's update to flt to handle transparency.
o Commented out the flt::Registry::instance()->removedPrototype() call from RegisterRecordProxy()
flt::RegisterRecordProxy destructor, which was causing a segmentation
fault on exit under Linux due to destruction ordering - gnu c++ doesn't
seem to honour construction/destruction order?! Prior to this 'fix',
did the following changes to clean up memory allocation &
deallocation as an attempt to fix the segmentation fault on exit!
Changed the memory allocation of RegisterRecordProxy children to use
osg::ref_ptr<> for automatic deallocation. Removed the flt::Record::_init(),
_copy() and _free() moving the functionality into the constructor and
destructor to simplify. flt::Record copy operator and copy constructor
made private to prevent misuse.
o Rewrote osg::Material so that it handles both FRONT and BACK
face materials within one class, with support for FRONT_AND_BACK.
o Added two sided lighting toggle to Viewer and NSPlugin.
o Changed the LODBias in Viewer and NSPlugin to 1.0 (previously 2.0).
o Added '#define GL_GLEXT_LEGACY 1' to osg/GL to fix compilation problems
which occur on some implementation of OpenGL under Linux.
18th Novemeber 2000 - osg_src-0.8-29.tar.gz
o Integrated Don Burns' Linux Netscape plug-in.
o Added osg::PolygonOffset state attribute.
o Added support for osg::Point and osg::PolygonOffset into osg::GeoState.
o Extended osg::CullFace to encompass which face to cull, i.e
FRONT,BACK or FRONT_AND_BACK, and added IO support.
o Added read/write ascii to osg::Point and osg::PolygonOffset
o From Don, moved light source from above model, to behind eye point
for sgv and the Netscape plug-in.
o Fixed material inheritance bug, by modifing osg::GeoState so that
it now inherits attributes from the global state if they are not
set locally.
o From Brede Johansen, bug fixes in flt loader, setting of externals
and redudent 'dummy' groups in LOD's.
o Changed the default compilation of loaders so that pf2osg and osg2pf
are not compiled by default under Linux or IRIX, ideally the presence
of Performer should be detected automatically and compilation set
accordingly, however this may have to wait for autoconf work.
o Fixed warnings generated by gcc-2.96 in flt,fly,pf2osg and Viewer.
o Changed 'const int' and 'const bool' returns type in Loaders/flt to
'int' and 'bool' respectively. This fixed silly warnings under IRIX.
o In Loaders/flt changed all cout, cerr and printf's to osg::notify().
o From Karsten Weiss :
- Updated OSG_ROOT/README to account for sh shells & added contact details.
- Changed variable 'or' to 'ori' in Loaders/fly/base.cpp to enable compilator
under later versions of gnu c++.
- Comments added to BoundingBox, Lighting, CullFace and Quat.
- BoundingBox::contains() bug fixed.
- Changes to remove warnings generated in Loader/flt with gcc-2.96.
o Updated FAQ.
o Updated OSG_ROOT/README with contact details.
o Changed osg::Registry and flt::Registry to use ref_ptr<> to automatically
handle attached prototypes memory usage.
o Removed flt/Referenced.h and replaced flt::Referenced with osg::Referenced.
o Removed vnf loader is it was only a to help import a single file from
an now out of date format, its existance was clogging up the distribution.
10th November 2000 - osg_src-0.8-28.tar.gz
o Added Brede Johansen .flt loader.
o Integrated Neil Salter's new implementation of osg::notify() which
uses a NotifyInit class with a 'nifty' counter to ensure construction.
o Changed osg::TexEnv,TexMat,Fog,Point,Transparency & Material so that
they area all derived from osg::Object. All state components are
now derived from osg::Object.
o Changed osg::GeoState::setAttribute(..) and getAttribute() methods
so that they deal with osg::Object's rather than void*.
o Changed osg::GeoState so that it uses ref_ptr<> to automatically
manage attribute memory whilst supporting attribute sharing.
o Added to osg::ref_ptr<> extra operators =,==,!= & a valid() method.
o Added osg::Point which enables control of OpenGL point size.
o Added osg::ExtensionSupported which allows the querring of
support for OpenGL extensions.
o Changed the default global lighting mode to ON in sgv.
o Changed the toggling bahviour in sgv between lighting and texture
ON and OFF, new behaviour should be more consistent.
6th November 2000 - osg_src-0.8-27.tar.gz
o Added option in osgUtil::FlightManipulator for automatically yawing
the camera into the bank, and made it the default operation.
o Changed the implementation of osg::notify() to default to simply
cout for all platforms, rather than just Windows. This is a
temporary measure to fix the crashes under IRIX and Linux.
Work is underway to provide a robust implementation of osg::notify().
o Added Neil Salter's Doxyfile makefile to docs/ for generating Doxygen
documetation.
o Changed the #define's in include/osg/Transparency to enumerated
types and removed the SGTRANSPARENCY_ prefix as its now within
the scope of the Transparency class itself.
o Changed the #define's in include/osg/TexEnv to enumerated
types and removed the SGTEXENV_MODE_ prefix as its now within
the scope of the TexEnv class itself.
o Changed the #define's in include/osg/TexGen to enumerated
types and removed the SGTEXGEN_ prefix as its now within
the scope of the TexGen class itself.
o Changed the #define's in include/osg/Material to enumerated
types and removed the SGMAT_ prefix as its now within
the scope of the Material class itself.
o Changed the #define's in include/osg/Fog to enumerated
types and removed the FOG_ prefix as its now within
the scope of the Fog class itself.
o Changed the #define MIN_CACHE_SIZE in include/osg/Field to enumerated
type, therefore keeping it within the Field's scope.
o Changed the #define MINIMUM_FIELD_READER_QUEUE_SIZE in include/osg/
FieldReaderIteraor to enumerated type, therefore keeping it within
the FieldReaderIterator's scope.
3rd November 2000 - osg_src-0.8-26.tar.gz
o Removed the GSET_ prefix from the osg::GeoSet enumerated types as
its no longer required, since the enumerated types are within the
osg::GeoSet's scope.
o Added osg::notify() function for redirecting messages either to
stdout or stderr (cout or cerr) or /usr/tmp/osg.info, depending upon
the severity level set. The environmental variable OSGNOTIFYLEVEL can
be set to overide the default level which is osg::NOTICE.
See include/osg/Notify for more details of the levels available.
Current implementation only works under Linux and IRIX, under Windows
the output is simply directed to cout.
o In osgUtil::DriveManipulator added the option to use the mouse y poistion
to govern the speed in addition to the previous left button to speed up,
right button to slow down/reverse. The two modes can be toggled by pressing
'q' and 'a' respectively. Default is using the mouse y position for speed.
o Changed osgUtil::TrackballManipulator so that it supports proper
trackball style manipulation.
o Added a zoom limit to the osgUtil::TrackballManipulator to prevent
the user from zooming into a point. Under this limit the zoom
operation nolonger zooms in but pushes the eye and look points
forward down the look vector, keeping the distance constant.
o Added osg::Camera::getLookVector() and osg::Camera::getFocalDistance()
methods.
o Added osgUtil::DriveManipulator.
o Renamed osgUtil::GUIUpdateState to osgUtill::GUIActionAdapter
and moved it to its own file.
o Fixed bug in osgUtil::IntersectVisitor related to reference counting
and NULL object.
o Added osgUtil::FlightManipulator.
o Modified sgv to enable support for multiple camera manipulators.
o Added resize event and window min and max to osgUtil::GUIEventAdapter.
o Added resize event and window min and max to GLUTEventAdapter.
27th October 2000 - osg_src-0.8-25.tar.gz
o Added support for string descriptions to be added to osg::Node's,
which can be saved and loaded via .osg data file.
o Fixed bugs in osg::FieldReaderIterator & osg::GeoSet related to the
osg::FieldReaderIterator::matchSequence() method, detected when
implementing string descripters IO.
o Modified osg::Light so its derives from osg::Object.
o Added osg::Matrix::preScale(),postScale() methods.
o Added methods to osgUtil::CameraManipulator.
o Added osgUtil::GUIEventAdapter::time() to log the time of an event.
o Rewrote osgUtil::GUIUpdateState so it now based on virtual functions.
o Implementated trackball functionality in osgUtil::TrackballManipulator.
o Ported sgv over to use new osgUtil::CameraManipulator rather than
old trackball functionality, removed original trackball code.
o Changed the frame delay in sgv to default to off, pressing '-'
turns the frame delay on, then successively slow sgv down, pressing
'+' reduces the frame delay again until it turns off as before.
o Added matrix multiplication methods into osg::Camera, and added
method for calculating the side vector of the camera.
o Added methods to osgUtil::CameraManipulator to extend the
functionality which can be exposed to users of a generic camera
maniupluator.
o Added osgUtil::RenderVisitor::setLookAt(const Camera&) method
to make it convinient to use camera's with the render visitor.
o From Don, added Unix Makefile support for make install, instlinks,
home and automatic detection of OS type. Changed target lib directory
for loader plug-in to lib/OSGLoaders.
o Added /usr/lib{32}/OSGLoaders DSO search path for and to prepend
file name with "OSGLoaders/" if the standard search fails.
o Renamed osgUtil::GUIEventAdaptor to osgUtil::GUIEventAdapter.
o Renamed osg::RP<> to osg::ref_ptr<> to make it clearer its
usage and to be more consistent with STL's auto_ptr<>.
o Added osgUtil::CompileGeoSetsVisitor, original existed in sgv.
o Changed the osg::GeoSet::compile() method so that it calls
the GeoSet's GeoState apply method before creating the
OpenGL Display List. Note, the state is still NOT compiled
into the Display List. This improves performance significantly
when running the program remotely.
o Cleaned up the methods in osgUtil::CameraManipulator.
o Added support for returning intersection normals from
osgUtil::IntersectVisitor.
20th October 2000 - osg_src-0.8-24.tar.gz
o With assistance for Simon Cooke and Brede Johansen added support
for relative include, lib and bin paths into the VisualStudio
workspace files.
o Changed the link to glut from glut.lib to glut32.lib in VisualStudio
workspace files.
o Updated the root READE to reflect the simplified Windows compilation.
o Added support for osg::GeoState into osg::Scene.
o Added osg::Quat::get(Matrix&) & osg::Quat::set(Matrix&) into osg::Quat,
submission from Brede Johansen, orginal source from gamasutra.com.
o Fixed crash in osgUtil::RenderVisitor::reset(), caused by an
unguarded ptr->unref().
o Added -Wall to Linux makedefs, and fixed resultant warnings.
o Added preliminary interfaces to osgUtil::GUIEventAdaptor,
osgUtil::GUIUpdateState and base class osgUtil::CameraManipulator.
14th October 2000 - osg_src-0.8-23.tar.gz
o Updated the root README file to mention the Data download,
the dependancies (i.e GLUT) and slightly clearer Win32
instructions.
o Added == operator into osg::Vec2, osg::Vec3 and osg::Vec4.
o Removed float* and const float* conversion operators from
osg::Vec2, osg::Vec3 and osg::Vec4.
o Added Neil Salter's osgUtil work on camera manipulators into
the osg distribution under include/osgUtil and src/osgUtil and
moved the original src directory to src/osg. Modified Linux
and IRIX makefile to account for new library and structure.
o Moved osgUtil::Camera into osg::Camera.
o Moved osg::RenderVisitor and osg::IntersectVisitor into
osgUtil:: RenderVisitor and osgUtil::IntersectVisitor.
o Added osgUtil/Export into osgUtil to handle DLL's under Windows.
o Modified Viewer.cpp to take account of the new osgUtil
library and placement of RenderVisitor and IntersectVisitor.
7th October 2000 - osg_src-0.8-22.tar.gz
o Fixed crash under Windows when activating the osg::IntersectVisitor
in the scene graph viewer sgv. Bug appears to be an MS Visual C++
bug when using a std::multiset iterator and combining std::map and
std::multiset. Replacing the later by a std::vector has curred the
problem, but also required an explicit sort on the vector in
osg::IteratorVisitor::intersect() to achieve the desired functionality.
o Fixed the use of gluUnproject() in Viewer.cpp so that it properly
resolved the difference in window coordinates between GLUT mouse
position which origin is top left, and OpenGL which is bottom left.
This fixed picking problems apparent under previous release.
o Cleaned up the intersection messages and added timing code to report
the length of time required for the osg::IntersectVisitor to traverse
the scene.
o Added '-OPT:Olimit=0' compile flag to IRIX makedefs to allow large
methods, such as the osg::for_each_triangle() template function,
to be optimised.
o Streamlined the intersect code a little, improving performance by
around 20% over previous release.
5th October 2000 - osg_src-0.8-21.tar.gz
o Added support for shooting a ray through the scene in Viewer.cpp,
by pressing 'i' a ray is shot from the mouse position projected onto
the near and far plane into the scene reporting back the hit objects,
uses the new osg::IntersectVisitor. Note, results are not 100%
reliable yet, to be worked on.
o Completed first iteration of osg::IntersectVisitor.
Visitor allows the intersection of specified segment with the scene,
reporting back node path to intersected geoset's and intersection
point and object to world transformation.
o Added templated function osg::for_each_triangle() to include/osg/GeoSet
which allows a functor to iterated through all triangles within a
osg::GeoSet. The function decomposses quads and polygons into triangles.
o Added osg::Node::getParent(), getParents() and getNumParents() to
osg::Node to allow public access to parent list.
o Added more doc++ comments to osg::Node & osg::Object.
21st September 2000 - osg_src-0.8-20.tar.gz
o Added new osg::Seg class for representing a single line segment,
providing methods for intersecting with BoundingSpheres, BoundingBoxes
and triangles(not implemented yet), and for transforming the segment.
Typical use is for ray based intersections of the scene.
o Added the beginnings of a new osg::IntersectVisitor for traversing
a scene to find the intersection of attached osg::Seg's with osg::GeoSet's.
osg::Seg and osg::IntersectVisitor should be completed for the next release.
o Added !operator to osg::RP<> and made osg::RP<>::get() const.
o Moved osg::BoundingBox from osg/Types to its own osg/BoundingBox
and added default constructor which initializes it to an invalid
bounding box (by setting xMax<xMin etc), added isValid() method
which returns true if xMin>xMax and other useful methods for
accessing and updating the bounding box. Changed the internal
representation from eight floats to two osg::Vec3 one each for
min and max values.
o Moved osg::BoundingSphere from osg/Types to its own osg/BoundingSphere
and added default constructor which initializes it to an invalid
bounding sphere (by setting radius<0), added isValid() method which
returns true if radius is zero or positive and other useful methods
for accessing and updating the bounding sphere.
o Modified osg::Node so that getBound() return a reference to the
internal node's BoundingSphere (which could be invalid), rather
than the previous version which required the passing of BoundingSphere
which was written to if there was a valid bounding box. This
new implementation is more efficient (less copying of data) and more
convenient to work with.
o Added culling active flags into osg::RenderVisitor and Viewer.cpp,
to allow view frustum and small feature culling to be switched on
and off at run-time, using 'C' and 'c' to toggle each culling technique
repsectively.
15th September 2000 - osg_src-0.8-19.tar.gz
o Added osg::RenderVisitor::setTransparencySortMode() to allow two
modes of depth sorting the transparency bin - the original
implementation is set with LOOK_VECTOR_DISTANCE and new
implementation OBJECT_EYE_POINT_DISTANCE. The osg::RenderVisitor::apply
methods have been modified to support both modes. The later produces
better results when rendering billboards such a trees.
o Added osg::RenderVisitor::calcNearFar(double& near,double& far), to
be called after the cull traversal, which goes through the resultant
opaque and transparent binds for their depth range. Returns false
if the bins are empty and near and far planes cannot be set, true on
success. The near and far plane can then be used when setting OpenGL's
near and far planes. The near plane is return as is and may be zero or
negative and therefore will need to be clamped by the calling function
if the using gluPerpsective() when setting up the OpenGL projection
matrix. This clamping will not be required when use gluOrtho().
o Viewing.cpp has been modified to support the new calcNearFar method,
and does the required clamping to capture invalid values. This has
solved problems with Z fighting which existed before on models such
as Tux_rocket.osg.
o Added project file VisualStudio/libFly/libFly.dsp to support the .fly
loader plug-in. Modified several of the .cpp & .h files in
Loaders/fly to enable compilation under Win32 and to remove the
resulting 'double to float conversion' warnings under Win32.
o Improved support for plug-ins under Win32 by adding the environmental
variable PATH to the search path used for located the required .dll.
o Modified osg::Registry::createLibraryNameForExt so that under Win32
the when linking to the debug build of the osg library (osgd.dll)
the debug build of the plug-in is also sought (for instance osg_flyd.dll).
When using the release build of the osg library (osg.dll) it will
default to using the release build of the plug-in (i.e. osg_fly.dll).
Mixing debug and release builds under Win32 causes problems with
the osg::Registry - producing two or more versions of the singleton!
This is a appears to be MS linker bug as its does not resolve the symbols
correctly between debug and release builds **!!
o To README added example autoexect.bat extract for a helping Windows
users getting up and running.
7th September 2000 - osg_src-0.8-18.tar.gz
o Implemented a parent list for osg::Node to allow nodes to keep
track of their parents. The links to their parents are automatically
managed osg::Group::addChild() and removeChild() and destructor.
o Added osg::Node::ascend(NodeVisitor&) which traverses the nodes
parent list applying the node visitor to each node in turn. This
is equivalent to osg::Node::traverse(NodeVisitor&), but typically
won't need to be overridden like traverse() is.
o Added support for parent traversal into osg::NodeVisitor so that
scenes can be traversed upwards as well as the traditional top
down traversal. This is useful for propagating changes of leaf
and internal nodes upto their parents which enclose them.
o Added osg::Node::dirtyBound() method which set the _bound_computed
flag to zero so that the next osg::getBound() is forced to recompute
the bounding sphere.
o Added support into osg::DCS for calling dirtyBound() recursively
up the nodes parent paths. This fixes the report view frustum
culling bug when viewing Torus.osg.
o Changed the #define is osg::Texture to enum TextureMode.
o Removed the SGTEX_ prefix from osg::Texture::TextureMode's.
o Removed the SGSTATE_ prefix from osg::GeoState::AttributeType
and osg::GeoState::AttributeType.
4th September 2000 - osg_src-0.8-17.tar.gz
o Changed osg::Sequence so it derives from osg::Group rather than
osg::Switch.
o Improved the support for pfSwith in the Performer converter pf2osg.
o Changed osg::Node so that the node name _name is now a std::string
rather than a C style char* string. This clears up a problem with
osg:::Node::setName which was erronously handling the freeing of mememory.
o Changed Loader/osg2pf.cpp and Viewier/Viewer.cpp inlight of the
change to std::string name in osg::Node.
o Fixed (again?!) compilation problem on Irix (missing osg:: in
Loaders/osg2pf.)
o Fixed a bug in Viewer.cpp related to loading multiple files, which
resulted in sgv viewing an empty model.
3rd September 2000 - osg_src-0.8-16.tar.gz
o Fixed compilation problem on Irix (missing osg:: in Loaders/osg2pf.)
o Basic Implemention of small feature culling in osg::RenderVisitor, based
on culling objects with small screen size projected into the
viewport.
o Added support for Don Burns real-time frame schedualer into sgv.
To compile the viewer with Don's library RTfs use the
Viewer/Makefile.rtfs which links with the appropriate libraries
and define's SGV_USE_RTFS which is now used in Viewer.cpp to
utilise the frame rate schedualing.
o Changed osg::Light::init() so that it set the internal variables
to predefined constants rather than capturing the values from
the current OpenGL state as done previously. The previous versions
of osg::Light needed to be constructed in a valid current context.
The capturing of the current OpenGL light state can now done with
a new method osg::Light::captureLightState().
o Added osg::Image::scaleImage(int s,int t,int r) which uses
gluScaleImage to scale up/down the image. Useful for scaling down
images for graphics cards which can not handle large images, such
as the Voodoo1,2 & 3.
27th August 2000 - osg_src-0.8-15.tar.gz
o Implemented osg::Switch node with similar functionality to performer,
allowing all, none or a single child to be selected.
o From Graeme, ostream << operator's added to osg::Vec2/3/4 and osg::Quat.
o From Graeme, Added osg::Qauat::makeRot which creates a rotation Quat
which will rotate vec1 to vec2.
o Fixed some of the /// comments on osg::Quat so that doc++ handles it
better as it doesn't seem to like multi-line usage of ///.
o Fixed compilation problem on Windows with GeoSet.cpp - required
the inclusion of <float.h> to handle the use of FLT_MAX.
25th August 2000 - osg_src-0.8-14.tar.gz
o Implemented basic view frustum in the render visitor.
Performance is now pretty close to Performer on Performer
town on the Onyx2.
o Modified the iostream includes so that the .h versions
can be included by defining OSG_USE_IO_DOT_H, or by default
includes the standard C++ version without the .h.
21st August 2000 - osg_src-0.8-13.tar.gz
o Removed old converter code in OSG.cpp as its is now enterirly replaced
by functionality in osg::Registry and osg::DynamicLibrary.
o Added support for '/' and '*' keys into sgv for altering the LOD bias.
o Added support for '?' key into sgv for printing out help.
o Added support for 'o' key into sgv for output scene to "saved_model.osg".
o Small improvements to osg2pf, now can handle normals.
o Added osg::GeoState::getMode and osg::GeoState::getAttribute() methods.
o Fixed compilation problem under Irix in sgv.cpp.
o Fixed compilation problems under Windows.
o Added new models Data/esprit.osg and Data/paraglider.osg.
o Re-exported Cow.osg, Tux.osg and Tux_rocket.osg from Performer,
correcting artifacts relating to state inheritance in the previous
.osg models.
o Removed Loaders/osg as it was only there to illustrate how to write and
reader/writer library (as loading functionalilty is is already built
into libosg.so.) Loaders/fly and Loaders/vnf both serve the purpose
of illustrating read/writer functionality, making Loaders/osg redundent.
17th August 2000 - osg_src-0.8-12.tar.gz
o Fixed a bug with the CompileGeoSets visitor in Viewer.cpp where
the visitor was not using the new traversal conventions. The
bug ment that 0.8-11 would have only compiled OpenGL display list
for the first child of an LOD, Switch and Sequence and leave the
rest to be rendered without display lists. This fix now allows
all osg::GeoSet to be visited and display lists compiled - which
should improve performance on systems where display list are
important.
o Implemented a *very* basic view frustum culling to get a handle
on the potential performance improvements. I've added the ability
cull objects wholely behind the eye point. This is clearly much
less powerful at culling than proper view frustum culling but is
much quicker to implement. Performance improvement is _non_existant_
through to *AMAZING*. On lowly PI233 & TNT Linux box I'm now
getting 5 frames a sec when viewering the whole model, through
to 6-8 frames a sec looking close up to the town to 40-50 frames
when looking at the out-lying farms and mountains. Full view
frustum culling promises even better results!
16th August 2000 - osg_src_0.8-11.tar.gz
o Completed basic LOD functionality in osg:LOD and osg::RenderVisitor.
o Modified Performer to OSG converter to handle LOD's.
o Added a templated function write out arrays of data to osg::Output,
while enable multiple values to written out on each line, defaulting
to 10 values per line.
o Modified osg::GeoSet to use enabling duplicated code to be removed
and the .osg file format to be more compact virtual of the multiple
values values per line.
o Added the ablity to chain osg::NodeVisitor's together to enable
user defined traversers to be used in preferences to the standard
osg::Node::traverse().
o Added a traversal mode to osg::NodeVisitor to enable osg::Node::traverse()
to distingush whether to traverse all children or only those which are
active such as when traversing a switch or sequence.
10th August 2000 - osg_src_0.8-10.tar.gz
o Further work of the OSG to Performer converter osg2pf. Can now
convert basic geometry.
o Fixed the osg::Billboard::computeBound() so it accounts for the
billboard positions correctly.
o Fixed a memory deallocation problem in RenderVisitor which caused
a serious memory leak which would eventually grind the system to
a halt on big models.
o Added support for a global osg::GeoState into Viewer.cpp and
osg::GeoState, also add the ability to overide local state modes
with the global state, or inherit the local state from the
global state. This enables the sgv keys 't' and 'l' to work
as would as one would expect.
o Created a new method osg::GeoState::apply(GeoState* global,GeoState* prev)
which takes the previously applied GeoState and then only applies the
differences. This is crude step to mimic the pushState and popState in
Performer's pfState class - but does achieve the lazy state updating. This
just a short term step, but does give some healthy performance improvements
- the old way produced a draw time of ~42ms on Performer town, with
the new lazy updating of state the draw time is ~25ms (on a Onyx2 IR.)
This is the about same draw time as Perfly when culling is
switched off. Enabling culling in Perfly more than halves the
draw time.
o Modified osg::Billboard::calcTransform() & calcRotation() to do the
hand coded maths calculations rather than using generic osg::Matrix
operations to do it. This has cut the cull traversal down for 16ms to
12ms. Combined with the new lazy state updating frame rates on
Performer town now hits 24 frames a second.
o Added data access methods to osg::GeoSet and osg::Referenced.
7th August 2000 - osg_src-0.8-09.tar.gz
o Added some temporary timing code to Viewer to reveal rendering
bottle necks.
o Modified osg::RenderVisitor so it handles osg::Billboards more
efficiently by storing the inverse matrix stack in sync with the
current matrix stack.
o Changed Make/makedefs.linux and Make/makedefs.irix to use -O2
instead of the previous -g setting. This speeds up the cull
traversal by 2-3 times.
5th August 2000 - osg_src-0.8-08.tar.gz
o Fixed build problems under Windows.
o Added basic support for pfLOD,pfSwitch and pfSequence into pf2osg.
o Implemented osg::Switch and osg::LOD to just traverse their first
child rather than all their children as osg::Group does. This is
a temporary measure to get round the lack of full implementations
of osg::Switch and osg::LOD.
o Added osg::Sequence basic interface, core functionality remains
to be implemented.
3rd August 2000 - osg_src-0.8-07.tar.gz
o Added osg/FileNameUtils which is a collection of useful functions
for parsing filenames.
o Further work on the Performer converter pf2osg, now can load
most models from the Performer distribution, including Performer
town. Performance with sgv compares well with perfly on most
models but Performer town is significantly slower than with
perfly (5fps vs 50fps on a Onyx2 IR). It looks like the OSG
current simplicistic state management needs a revamp to get
performance up where it belongs... This is will be done in
the near future.
o Added support for flat shaded primtives into osg::GeoSet as per
pfGeoSet, this was required to bring across several key peformer
models such as Performer town.
o Added bare bones of an OSG to Performer conversion program,
osg2pf under Loaders/osg2pf.
o Modified osg::Node so that it saves and loads its name if it has
one.
28th July 2000 - osg-0.8-06.tar.gz
o Futher work on Performer converter pf2osg.
o Bug fixes to osg::GeoSet revealled by the Performer work.
26th July 2000 - osg-0.8-05.tar.gz
o Added support for osg::Object sharing in the reading and writing of
the .osg format. This enables a MASSIVE speed up on models which
can share GeoState's. Expect order of magnitude of speed up on
models such as /usr/share/Performer/data/iris.flt (from the Performer
distribution and converted using the new pf2osg converter.
o Added support of pfObject sharing in the Performer converter, taking
advantage on the above.
o Bug fixes to the writing of osg::GeoSet's to .osg files.
19th July 2000 - osg-0.8-04.tar.gz
o Due to problems with integrating Performer as plug-in on Linux,
have converted it to work as a conversion program - now called
pf2osg and can be found in Loaders/pfb.
5th July 2000 - osg-0.8-03.tar.gz
o Bugs fixes to support in osg::GeoSet for normal, colour
and texture coordinate binding, and modified the .osg
ascii format to reflect this.
o Added glMaterialColor() to Viewer/Viewer.cpp to enable
colors to be activated on osg::GeoSet's. Without it
untextured models would turn only be coloured by
current glMaterial rather than the current glColor.
o Moved the compilation of the display lists from the init
stage into the draw function, as the requests to glGenLists
was failing within the Viewing::init's glContext. glDisplay
lists are now created correctly with a nice improvement in
speed :-)
4th July 2000 - osg-0.8-02.tar.gz
o new version numbering scheme to be consistent with the
RedHat scheme - ie. ProjectName-Version-Release. The
current alpah release has been assigned as version 0.8,
and the release number 02 reflecting this is the second
release under the new scheme (alot can happen in day:-)
o Support for RedHat RPM distributions has been added, and
can be found in OpenSceneGraph-0.8/dist/RedHatRPM.
o Further work on the Peformer loader, which can now read
in pfGroup,pfDCS,pfGeode, pfGeoSet and small bit of
pfGeoState/pfMaterial.
o Improved the support in osg::GeoSet for normal, colour
and texture coordinate binding, and modified the .osg
ascii format to reflect this.
o All .osg ascii files in Data were updated to reflect
the new binding information.
3rd July 2000 - osg_src_20000703.tar.gz
o Changed the return types for several of the operators in osg::Vec2/3/4.
o Further work on osg::Billboard.
o Further work on Loader/pfb.
27th June 2000 - osg_src_20000627.tar.gz
o Added make snapsrc and make snapdata to the root Makefile to
allow smaller source only and data only distributions.
o Completed Billboard::Mode::AXIAL_ROT functionalilty which fits
the case of billboarded trees, POINT_ROT_EYE and POINT_ROT_WORLD
left to complete.
o Removed the reference to Image library in pfb Makefile which caused
the build of the Performer loader to break under linux.
26th June 2000 - osg_20000626.tar.gz
o Added the Don Burns' hang gliding flight simulator database
loader example into distribtion under Loader/fly. The data
file used to select which components of the database to load
has been added as Data/flight_park.fly. The scene can be
loaded in the standard way i.e. "sgv flight_park.fly"
o Created the beginings of a Performer .pfb loader. The work is
ongoing, the first signs of life can be found in Loaders/pfb.
o Continued work on osg::Registry related to dynamic loading
of Reader/Writer plug-ins, its now works as intended!
o Continued work on the new osg::Billboard class, completing the
class interface and saving and loading functions. Calculation
of the rotation matrix used to orientate the billboard towards
the eye point is final element left to implement - coming soon!
o Added support for osg::Billboard into osg::RenderVisitor.
o Fixed a bug in osg::RenderVisitor::pushMatrix() relating to
pre/post multiplication of matrices.
o Changed the * operator in osg::Matrix to return a osg::Matrix
rather than a osg::Matrix*.
20th June 2000 - osg_20000620.tar.gz
o Fixed Irix compile problems related to missging std:: from use of
std library strings in Loaders/Osg/osg.cpp on Irix.
o Fixed crash in sgv due to Loaders/Osg/osg.cpp using the same static
variable name as src/ReaderWriterOSG.cpp.
o Removed temporary code (from osg_20000619) in Viewer.cpp which was
used for testing loading and closing at runtime of dynamic libraries
(plug-ins).
19th June 2000 - osg_20000619.tar.gz
o New osg::Vec2, Vec3 and Vec4 have been written and placed in individual
header files, replacing original typdef float[] versions in osg/Types.
The new Vec classes now add a range maths operations with them such
as multiplication, dot and cross product.
o New osg::DynamicLibrary class has been written to encapsulate the loading
and closing of dynamic libraries across different platforms with one
consistent interface.
o osg::DynamicLibrary support has been added to osg::Registry,
not fully implemented yet, but will soon replace the old style dso
support seen in osg/OSG.cpp.
o osg::Registry, osg::RegisterReaderWriterProxy,
osg::RegisterObjectProxy, have all been modified to support the
removal of automatically deleted Prototypes and ReaderWriters from
the Registry. Automatic deletion occurs when a dynamic library is
closed - the proxies now deregister themselves when this happens
ensuring that these deleted objects are never referenced.
This facility enables reader/writer plug-ins to be loaded when
needed then closed to free up the space again, all at run-time.
o Renamed include/osg/ReferencedPointer to include/osg/Referenced to
reflect the main class it defines.
6th June 20000 - osg_20000606.tar.gz
o Modified the root Makefile so that it can target linux or irix
compilation directly by copying the appropriate makerules/makedefs.
README now reflects the simplified make.
o Changed the names of Make/makedefs.sgi and Make/makedefs.sgi
to Make/makedefs.irix and Make/makedefs.irix to make it more
consistent and allow for sgi's new Linux boxes:-)
29th May 20000 - osg_20000529.tar.gz
o Added clean up of 'so_locations' & 'ii_files' into sgi build rules.
o Fixed compilation problems due to shortcomming of MicroSoft C++ 6.0
when handling static const's declared within the scope of class.
Have changed to #define, less C++ but works...
28th May 20000 - osg_20000528.tar.gz
o Moved the doc directory to docs to be consistent with other Open Source
software projects.
o Created osg::Billboard class, currently only 1/3rd complete.
o Implemented the .osg ASCCII file read and write methods for osg::DCS.
o Moved defines & enums which were in the osg global namespace into the
classes they are associated (this has now broken the Win32 -
currently investigating.)
o Removed the virtual int osg::Node::classType() function as its
function is better served by RTTI such as dynamic_cast<>.
o Added automatic register proxy to osg::Scene so it properly
registers itself with osg::Registry.
o Added shell of the osg::LOD and osg::Switch classes which will
be implemented fully at a later date.
o Changed a cout to printf in src/Registry.cpp to fix a dumb
crash under Win32 - MicroSoft still can't write decent compilers...
o Modified several library class so that they use the convention of
_variableName for class member variables, these classes were
developed before the the above convention was adopted as standard.
o Fixed bug in Geoset_osg.cpp related to GL Display Lists.
o Merged file_p.cpp into file.cpp files and removed file_p.cpp
exept for GeoSet_p.cpp which was kepth seperate due to its size.
GeoSet_p.cpp has been renamed GeoSet_ogl.cpp to reflect its primary
function.
25th May 2000 - osg_20000525.tar.gz
o Changed library header files in include/osg/ from C style .h
to the new Standard C++ style without suffix. For instance
include/osg/Node.h has become include/osg/Node.
o Moved all osg::Branch functionality to osg::Group, and removed
osg::Branch.
o Changes to src/*.cpp, Viewer/* and Loaders/Osg/* to account for
the above header and osg::Group changs.
o Fixed some inappropriate permission in the data directory.
22nd May 2000 - osg_20000522.tar.gz
o Added to the FAQ.
o Added more functionality to the osg::Matrix.
o Incorportated makedefs.sgi fix to handle .cpp extensions.
16th May 2000 - osg_20000516.tar.gz
o Added more doc++ comments to headers file.
14th May 2000 - osg_20000514.tar.gz
o moved .cxx extensions to .cpp.
o removed sg prefix from all library files and class as they were
redudent virtue of the new osg namespace.
o changed the include/OSG to include/osg to keep it consistent with
library and namespace capitilization.
o added osg namespace it the remaining classes which were missed the
first time round!
o add first iteration of the FAQ.
o fixed the permission of files - many incorrectly had executable
permissions.
9th May 2000 - osg_20000509.tar.gz
o reduced the STL platform specific #ifdef's.
o remove using namespace from all header files, so not to pollute user space.
8th May 2000 - osg_20000508.tar.gz
o osg namespace implemented.
6th May 2000 - osg_20000506.tar.gz
o Added CHANGES list for logging changes from version to version.
o Added TODO list for list desired functionality and development activity.
o Beautified the code using bcpp.
2nd May 2000 - osg_20000502.tar.gz
Release first alpha version, compiles under Windows95, Linux and Irix,
distribtion includes :
o unix makefiles for Linux, Irix and Win32 via MS VC++6.0 workspace files.
o basic GLUT based scene graph viewer - sgv.
o basic Scene Graph nodes, such as sgBranch, sgGeode.
o basic Drawing primitive and state containers GeoSet and GeoState.
o basic Maths/Geometry classes such as sgMatrix, sgVec2/3/4.
o refence counting and smart pointers via sgReferenced and sgRP<> classes.
o support for automatic object registration with sgRegistry.
o support for automatic reader writer plug-ins with sgReaderWriter/sgRegistry.
o input parsing classes sgField,sgFieldReader.
o .osg ascii file reader/writer.
o .rgb/.rgba (sgi format) images reader.
o automatically generated documention from header files using doc++.