Commit Graph

761 Commits

Author SHA1 Message Date
Robert Osfield
f848c54ba3 Made the following name changes to Matrix and Quat to clean them up and make
the functionality clear given the name.  This will break user code unfortunately
so please be away of the following mapping.

  osg::Matrix::makeTrans(..)?\026 -> osg::Matrix::makeTranslate(..)
  osg::Matrix::makeRot(..)?\026   -> osg::Matrix::makeRotate(..)
  osg::Matrix::trans(..)?\026     -> osg::Matrix::translate(..)

  osg::Quat::makeRot(..)?\026     -> osg::Quat::makeRotate(..)

Also updated the rest of the OSG distribution to use the new names, and
have removed the old deprecated Matrix methods too.
2001-12-12 20:29:10 +00:00
Robert Osfield
79c1fb531d Fixed problems with osg::Matrix::makeRot(from,to) and osg::Quat::makeRot(from,to)
so that they both use the same implementation (the Quat code now) and the
code has been corrected to work from and to vectors which directly opposite
to one another.
2001-12-12 15:09:11 +00:00
Don BURNS
b9f1b7aa6f Fixed Matrix::rotate( Vec3 from, Vec3 to); was using to X from to derive
axis, which causes a left-handed rotation.  Fixed to from X to.
2001-12-11 17:00:29 +00:00
Robert Osfield
be2beec11d Added :Referenced() to the osg::Camera(..) copy constructor to prevent a warning
under Linux.
2001-12-11 11:21:30 +00:00
Don BURNS
eabb4d6918 *** empty log message *** 2001-12-09 03:46:50 +00:00
Robert Osfield
a23627467b Added support for automatic deletion of osg::GeoSet's attributes, via a
default AttributeDeleteFunctor which uses delete [].  Users can create
their own handlers for the attribute memory to override this default
behavior.

Fixed a typo in ReaderWriterOBJ.cpp.
2001-12-04 22:57:40 +00:00
Robert Osfield
c92b730817 Improved support for anaglyphic stereo.
Integrated texture CLAMP_TO_EDGE, submitted by Ulrich Hertlein.
2001-12-04 12:31:10 +00:00
Robert Osfield
34a4c18a26 Beginings of support for quad bufferd, red/green, and slit screen stereo. 2001-12-02 22:20:46 +00:00
Robert Osfield
30db615333 Fixed bug in osg::StateSet::merge(..) where the containers were being
iterated from begin() to begin() rather than begin() to end().
2001-11-30 20:53:50 +00:00
Don BURNS
4ef08067b7 Small fix for preprocessor _MP symbol clash with MFC. 2001-11-21 15:53:29 +00:00
Robert Osfield
969f757679 Added osg::Image::dirtyImage() and setModifiedTag() to allow external
updating of the image modified flag to be used in conjunction with
texture subloading.
2001-11-18 21:31:16 +00:00
Robert Osfield
a434abafd7 Fixes for IRIX build.
Updates to the osg::Transform, adding preMult and postMult methods and
deprecating the old preRotate,preTranslate,preScale.

Updated the rest of the OSG so that it nolonger uses the deprecated
osg::Transform nodes.

Renamed osgUtil::SceneView::setGlobalState() to
osgUtil::SceneView::setGlobalStateSet() so that the name reflects its
functionality better.  Updated osgGLUT::Viewer etc to cope with new
name change.
2001-11-14 14:09:07 +00:00
Robert Osfield
8f6b7d04a4 Added src/osg/NodeCallback.cpp. 2001-11-12 10:00:08 +00:00
Robert Osfield
5ceefdcc12 Fixed compilation error in src/osgDB/FileUtils.cpp.
Added support for nested NodeCallbacks, allowing them to be chained together
so that multiple operations can be applied.
2001-11-11 22:32:59 +00:00
Robert Osfield
7290f793f1 Added osgText::Paragraph which is a subclass from Geode which composes a
list of text drawables as a paragraph block, handles breaking of text into
individual lines automatically.

Changed the osg::Node::setUserData so that the data type has to be an
osg::Referenced, and removes the dependancy on osg::MemoryAdapter.  I have
done this since it simplifies the OSG side of the interface and makes it
less like that the user might abuse the memory managment of the data. It
does however mean that user data will have by subclassed from Referenced,
and therefor may require users to have their own adapter to do this.
However, this little nuasance is worth the extra cleaness and robustness
afforded by going the osg::Referenced route.
2001-11-09 15:06:01 +00:00
Robert Osfield
06abf2266b Updates to Makefiles to include osgText.
Also a couple of undefined methods in osgText::Text have been added.
2001-11-02 20:11:37 +00:00
Robert Osfield
4d4ff39ff9 Added a bool paramter to osg::StateSet::compare(const StateSet& rhs,bool compareAttributeContents=false) const;
to allow it to use different comparison schemes, now it can use checking for pointer equality (the default)
or attribute contexts.  This has been added to assist optimization of databases within the flt loader, but
also could be useful for other operations too.
2001-10-31 20:04:32 +00:00
Robert Osfield
8f4e62ced0 Further updates to the ReaderWriter support in osgDB, and a fix to a small warning
in Matrix.cpp.
2001-10-30 19:23:24 +00:00
Robert Osfield
25c8b05914 Integrated Geoff Michel's updates to Stats code, whilest move all text rendering
back in the viewer from the Statistics header.

Added a osg::State::captureCurrentState(StateSet&) method and a copy constructor
to osg::StateSet.
2001-10-22 22:02:47 +00:00
Robert Osfield
aac507e119 Moved all #include "osg/.." references to #include <osg/..> to aid port to
MacOS.
2001-10-21 21:27:40 +00:00
Robert Osfield
067619d1fb Removed Lighting.cpp from repository, it is nolonger used and was just hanging
around erroneously.
2001-10-19 15:53:59 +00:00
Robert Osfield
54d490e24b Added support for specifying whether view frustum and small feature culling
should be applied to a node or its child with the new osg::Node::setCullingActive()
flag.  A mechanism has been implemented so that if child has its culling disabled
then their parents, all the way up to the root are also have their culling
implicitly disabled.

The osg::CullVisitor has updated to take account of
both the explicit control via setCullingActive and the implicit culling
disabling through children being disabled.

This feature is useful for nodes which don't have a bounding volume to cull
against, earth sky implementations and light sources.

The default osg::Node::_cullingActive is true, i.e. culling is enabled by
default.
2001-10-19 12:56:37 +00:00
Robert Osfield
60d33f91f8 Reverted Bryan's changes to FrameStamp w.r.t std::tm structure which doesn't
compile under Win32 and IRIX.  Will need to find another solution.
2001-10-16 21:47:47 +00:00
Bryan THRALL
a203a1b127 *** empty log message *** 2001-10-16 20:56:46 +00:00
Robert Osfield
de924ca759 Fixes for compilation under IRIX, submitted by Randal Hopper, with mods
from Robert.
2001-10-15 15:50:55 +00:00
Robert Osfield
59077fed15 Added support for automatic creation of global StateAttributes to osg::State,
these global attributes are created by cloning any attributes which are
applied during rendering, the clone in a shallow copy, which will set up
default valus for that attribute.  This should prevent attribute bleed
from one stateset to the next when the global StateSet doesn't contain
an attribute used within the scene graph.
2001-10-15 14:07:54 +00:00
Robert Osfield
6bb865af25 Fixed a bug in Matrix::invert(..) which did not set full_realised=true,
so that one Matrices which had not previously be initialized we're
erronously initialized later in the code resetting it to identity.
2001-10-14 14:23:03 +00:00
Robert Osfield
39ea16aad7 Added osg::StateSet::merge(const StateSet& rhs) merges merges the modes and
attributes of rhs into 'this' stateset.
2001-10-14 09:58:49 +00:00
Don BURNS
c6f11afbf6 Quaternions were assigning inverted values during conversion to matricies.
This is probably due to an error on the gamasutra web page demonstrating this.
It caused left-handed rotations rather than right handed rotations.  Should be
fixed now.
2001-10-14 04:28:50 +00:00
Robert Osfield
1e4a0cadf5 Changed the naming and calling convention of the new Drawable::AttributeFunctor
and have updated GeoSet to use mutable values for the _numverts etc, allowing
osg::GeoSet::computeNumVerts() to be a const operation. osg::GeoSet::getNumVerts
is now a const once more, so avoiding compilation problems.  Also chaned the new
osgconv orientation code to use a Drawable::AttributeFunctor so it can work on
other Drawables other than just GeoSets.
2001-10-13 11:16:10 +00:00
Don BURNS
610358033f backed out right-handed coordinate transform for makeRot(vec3,vec3) in Quat.cpp 2001-10-13 08:34:02 +00:00
Don BURNS
49982ac835 Changed some routines to produce right-handed rotations. 2001-10-13 06:23:55 +00:00
Robert Osfield
58582998fa Added support for the new AttributeUpdateFunctors. 2001-10-12 20:06:35 +00:00
Don BURNS
cb17e99420 Added include/osg/Math to Makefile TARGET_INCLUDE_FILES and fixed references
to _mat in ConvertToPerformer.cpp
2001-10-12 17:45:15 +00:00
Robert Osfield
96085619ee Added support for DYNAMIC/STATIC osg::Transform types and added new osg::Drawable::getStats
and supportsAttributeUpdate(..) and applyAttributeUpdate(...) methods which will
be to enable hooks into Drawable subclasses.
2001-10-10 20:20:14 +00:00
Robert Osfield
3da57d6d22 Added a osg::DegreesToRadians() and osg::RadiansToDegrees() method to osg/Math,
updated the ReaderWriterBMP.cpp (mods sent in my Geoff Michel) and
moved the osgUtil::Statistics to osg::Statistics in preperation to adding it
to the the Drawable base class.
2001-10-06 20:29:42 +00:00
Robert Osfield
c16fe83d0a Fixed a bug in osg::Image::ensureDimensionsArePowerOfTwo() which only
scaled dimensions if *both* axis wern't a power of two, have fixed it
to rescale if either of the axis arn't a power to two.
2001-10-05 10:38:16 +00:00
Robert Osfield
d5bff10797 Changed the ordering of comparing modes and attributes in
osg::StateAttribute::compare() as part of an investigration into state sorting.
2001-10-04 14:39:24 +00:00
Robert Osfield
f0bb34c4fe Removed some notify which were only used for debugging of the camera class
and are now redudent.
2001-10-04 14:20:23 +00:00
Robert Osfield
2c6e85442b Integrated changes for MacOSX, submitted by Phil Atkin, with small mods by
Robert Osfield to maintain compatability under Linux.
2001-10-03 21:44:07 +00:00
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
Robert Osfield
430c8606e9 Added osg::EarthSky node to the core osg library, and added support for it into
osgUtil::SceneView, osg::CullVisitor, osgPlugin/osg and updated the hangglide
demo to use the new earth sky node.
2001-10-02 11:36:14 +00:00
Robert Osfield
fc1fa57275 Added support for osg::StateSet comparison operators and using this new feature
added support in osgUtil::OptimizeStateVisitor for removing duplicate
StateSet's from the scene graph, previously only duplicated StateAttributes
we're removed.
2001-10-01 23:02:14 +00:00
Robert Osfield
0d0b33f4b0 Integrated a bug fix to osg::TexMat from Geoff Michel which adds a
glMatrixMode( GL_MODELVIEW ); after the setting of the texture matrix.
Previously the texture matrix mode could run into normal model view
matrix operations which were assuming the defaul of GL_MODELVIEW.
2001-10-01 12:06:22 +00:00
Robert Osfield
777e4ab9f1 Added setAttributeAndModes(new Depth,StateAttribute::ON);
to the StateSet::setGlobalDefault() so that the correct default for the glDepthFunc etc are set up for scene graphs, and allows override of these value which risk of inheriting state on to the rest of the scene graph.

This has allowed the hangglide demo to be simplified since it now doesn't need to set the global Depth instance itself.
2001-09-29 18:34:26 +00:00
Robert Osfield
8e2f1bdb72 Modified the Matrix multiple method added by Don so it is safer and added comments explaining why it shouldn't be needed as other more efficient methods should be doing the work for us.
Also added Matrix::ensureRealized() to support the lazy initialization of Matrix, whilest keeping the implementation robust so that external calls to Matrix which get values do so on an initialized matrix.
2001-09-29 09:37:43 +00:00
Don BURNS
4c4d99f19a Cleaned up inst rules a bit... 2001-09-28 19:36:58 +00:00
Robert Osfield
12f77f141e *** empty log message *** 2001-09-28 16:56:19 +00:00
Robert Osfield
2a9848ea95 *** empty log message *** 2001-09-27 16:34:41 +00:00
Robert Osfield
ba47264c5e *** empty log message *** 2001-09-27 09:44:55 +00:00
Robert Osfield
9fd1706e3c *** empty log message *** 2001-09-25 17:56:56 +00:00
Don BURNS
7ae58df42a Synch with 20010921 2001-09-22 02:42:08 +00:00
Don BURNS
b5eb0a1137 Removed Makedepend files 2001-09-20 00:59:26 +00:00
Don BURNS
ac2bdbda30 1) new implementation of the osg::Matrix class. Note details below.
2) cleaned up osg::Timer, still in progress.  My intent has been to
     pave the way for support for other OS's.
  3) new osg::FrameStamp class which has a frame number, reference
     time for each frame to be app, culled and drawn.  The FrameStamp
     also can be passed to other machines (i.e. cluster) and the
     FrameStamp can be used with the slaves own app,cull and draw.
     I've also added the beginings of a calander time data to the
     FrameStamp to allow time or day and year to be used in setting
     up position of sun/moon etc. etc.
  4) The osg::State now has contains a pointer to the last applied
     osg::Camera and the current osg::FrameStamp, so that drawables
     can use both pieces of information for creating effects such
     CLOD, earth/sky etc.  The osg::NodeVisitor also now allows you
     to attach a FrameStamp to support syncronization of actions on
     the scene graph.
2001-09-19 23:52:12 +00:00
Don BURNS
81f553aaee o Updated Metrowerks files for MacOS. They aren't 100% there yet,
but getting there.

  o First cut of osgcluster demo.  Very simple beginings.  Alas
    I only one PC here so I can't test it in its current guise.

  o New support for NodeCallbacks, via AppCallback attached to
    osg::Node's, and a default osgUtil::AppVisitor which calls them on
    each frame.

  o Support for traversal masks in osg::NodeVisitor, osg::Node
    which allows nodes to be switched on or off via a bit mask.

  o Suppport for traversal number (frame number) and reference time
    into osg::NodeVisitor to handle syncronization of app and cull
    traversals.  This also assist clustering as traversal number
    master to slaves.
2001-09-19 23:41:39 +00:00
Don BURNS
77494207fb Removed files.... synching witn 0.8.42 2001-09-19 21:51:06 +00:00
Don BURNS
7e81f6cfa6 More clean up for synch with 0.8.42 2001-09-19 21:19:47 +00:00
Don BURNS
e8f256a59d Added a bunch of files synched with 0.8.42 2001-09-19 21:08:56 +00:00
Don BURNS
fed86f3f03 Removed Makedepend for osg repository. No Makedepends should be in the
repository
2001-01-12 17:34:58 +00:00
Don BURNS
7165d693d6 Fixed the findDSO error which excluded PATH on win32 and LD_LIBRARY_PATH in
UNIX.
2001-01-10 17:19:04 +00:00
Don BURNS
70208ebc06 Initial revision 2001-01-10 16:32:10 +00:00