OpenSceneGraph/ChangeLog
2001-01-10 16:32:10 +00:00

1047 lines
55 KiB
Plaintext

OSG Change log
==============
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++.