1o-----------------------------------------------------------------------------o
2|                             C h a n g e L o g                               |
3o-----------------------------------------------------------------------------o
4
5o-----------------------------------------------------------------------------o
6| Version 0.12.0 ( ?? august 2006)
7o-----------------------------------------------------------------------------o
8
9  - MacOSX framework in macosx directory (courtesy Derek Arndt <deekpyro@charter.net>)
10  - Add missing docs/modeling directory
11  - Added const to method (courtesy  Stefan Huehner <stefan@huehner.org>)
12
13o-----------------------------------------------------------------------------o
14| Version 0.11.0 ( 29 june 2006)
15o-----------------------------------------------------------------------------o
16
17  - Make the list of the root bones a vector. So the root bones can be acceded
18    in C wrapper.
19  - Add some missing function to access to private variables.
20  - Add cal3d_converter to the default distribution with manual page and file format
21    description (tools subdirectory is therefore removed)
22  - The destructor of CalModel is now virtual.
23  - Made CalModel noncopyable to prevent shallow pointer copying bugs.
24  - Use a RefCounted base class and RefPtr smart pointers to hold RefCounted objects.
25  - Make CalModel destructor nonvirtual
26  - Improve bounding boxes calculation performance.
27  - Update the C wrapper.
28  - Add some function to rotate around axis during the loading.
29  - When a cycle animation is played, ensure that the last post equals the first pose.
30  - Extended callback mechanism to pass user data directly instead of making
31    the callback query for it.  This means the callback executable does not have
32    to link with cal3d.lib and makes many things simpler in CS context.
33    Also worked around a bug (feature?) in the mixer which thinks that
34    m_AnimDuration is always 0 for AnimActions.  Now the callback uses the
35    internal time counter of the animation, which is probably more consistent
36    anyway.
37  - VC6 and automake fixes. Removed old variables from src/cal3d/Makefile.am.
38  - 64bit compatibility fixes.
39  - Patch for reading correctly raw texture on a Big endian cpu (for Mac).
40  - Fixed bug in updating current anim time when time factor is set to negative.
41  - Correction in max exporters.
42  - Update the glew (The OpenGL Extension Wrangler Library).
43  - Made the refcounted classes derive from RefCounted, and manage
44    their lifetimes with RefPtr smart pointers.
45  - Put TinyXML into the cal3d namespace so it doesn't conflict with other
46    libraries linking with their own TinyXML.
47  - Fixed bug in updating current anim time when time factor is set to negative,
48    which resuilted in anim times like -32 instead of between 0 and 2 seconds,
49    for example.  This threw the bone extrapolations way off and made the model
50    look like garbage until the anim time got back in the right zone. (Keith Fulton)
51  - GNU/Linux compilation / packaging fixes (-DCAL_16BIT_INDICES is included if
52    relevant in the .pc)
53  - Upgraded the guide
54
55o-----------------------------------------------------------------------------o
56| Version 0.10.0 ( 12 january 2005)
57o-----------------------------------------------------------------------------o
58
59  - CalModel::setAbstractMixer and CalAbstractMixer to enable third
60    party mixers.
61  - Symbolic names for coreMaterial, coreMesh, coreAnimations loaded
62    by coremodel.{h,cpp}
63  - Add functions to control force of the spring system
64  - CalHardwareModel : a object to store and to compute information
65    needed to do hardware vertex skinning.
66  - Add a time factor to allow reverse time of sync animation.
67  - Most of the math functions are now inline.
68  - Add an option to stop a action animation at the end.
69  - Add functions to rescale a core model,
70    but this can be done only before creating the CalModel.
71  - Fix in the XML loader
72  - Add a function to compute the global bounding box of the model.
73  - Rename calculateBoundingBox to calculateBoundingBoxes.
74  - Add reference counting. Core* objects can be
75    now shared between several coremodel correctly.
76  - Modify the XML file format to be XML valid
77  - Added animation callbacks.
78  - Added Maya exporter.
79  - create/destroy functions removed.
80  - Add a "stride" argument to getVertices(), getNormals() ...
81
82o-----------------------------------------------------------------------------o
83| Version 0.9.1 ( 29. November 2003)
84o-----------------------------------------------------------------------------o
85  - Modifications to the loader to accomplish the
86    X axis (Y/Z) rotation from Keith Fulton <keith@paqrat.com>
87  - Implementation of UV coord inversion from Keith Fulton
88  - Implemented loading from generic "data sources", which will allow the
89    loading of Cal3d objects from istreams and memory buffers
90  - Implementation of mesh morph targets from old_belge
91  - Switched object constructors to use initializer lists for performance
92    optimization
93  - Implementation of Bounding Box calculations
94
95o-----------------------------------------------------------------------------o
96| Version 0.9 ( 6. August 2003)                                                 |
97o-----------------------------------------------------------------------------o
98
99  - Experimental tangent/texture space support (from the idea of 'Josh' code)
100  - XML text file format
101  - Tiny Xml is used for parsing XML file format
102  - Update of the C wrapper
103  - A tutorial and a FAQ
104  - A better build system:
105    Put all of libtool's m4 macros into Cal3D's acinclude.m4. This change
106    allows us to be compatible with both older (2.13) and newer (2.5+)
107    versions of autoconf.
108    Added the autogen.sh script
109  - Removed building of the "dummy app" because there is no need for it.
110  - Added --with-cxx and --with-cc flags to force the use of a particular
111    C/C++ compiler
112  - Added functions to aid in dynamic motion programming :
113    CalBone::setCoreState() sets a bone's translation and rotation to be the
114    default values specified by the core bone.
115    CalBone::setCoreStateRecursive() performs the same operation, but applies
116    the function recursively to all of a bone's descendents as well.
117  - Added setRotation and setTranslation functions to the bone to use for
118    manual overriding of bone transforms.
119  - Added animation helper functions to CalCoreModel class
120  - Added a function to create bone "helpers" analogous to the animation
121    helpers.
122  - patch from aegis:
123    Changes the coretrack's map containing keyframes to a vector. This
124    prevents a crashing problem in Windows.
125    Quaternion inversion also enhanced.
126  - Added an == operator for the CalVector class for equality checking.
127  - FIX : CalSubmesh::Destroy() don't free the objects if springs system
128  - Functions ::disableInternalData, to disable internal data, this is
129    used also disable springs systems
130  - Correct all the warning with VS.NET
131  - Add a trick to avoid the little pause that can happen at the end of an animation.
132    This can also be used to modified an animation that don't loop perfectly
133    you just need to add some time with setDuration function, this extra time
134    will be used to blend between the last frame and the first frame.
135  - Added option to NOT normalize the normal vectors when updating the
136    physique.
137  - Big/Little endian things
138  - Added invert() function to CalQuaternion class.
139  - Added copy constructor for the CalRenderer class.
140    We need this in order to perform multi-pipe parallel rendering of a model.
141  - Small optimizations
142
143
144o-----------------------------------------------------------------------------o
145| Version 0.8 (29. August 2002)                                               |
146o-----------------------------------------------------------------------------o
147
148  - Optional support for 16-bit indices (default 32-bit)
149  - Added functions, Cal3D is now "D3D friendly"
150  - Added support for file loading on big endian computers
151  - Optimized bone transformations with CalMatrix
152  - New CalMatrix class (Thanks to 'josh'!)
153  - Completely revamped the automake/autoconf setup.
154  - Moved the 'cal3d.doxygen' file into the 'docs' subdirectory where it
155    actually belongs.
156  - Added a pure C wrapper to Cal3D. This should allow non C++ applications to
157    link with it now. (Thanks to Tomek Grudzinski!)
158  - Changed the error codes in CalError and the type and state codes in
159    CalAnimation to an enum structure.
160  - Changed the interpolation calculations in CalCoretrack::getState() so that
161    the motion wraps are handled like in the 3d modellers.
162  - Tagged some forgotten friend functions of the CalVector and CalQuaternion
163    classes as exported.
164
165
166o-----------------------------------------------------------------------------o
167| Version 0.7 (5. January 2002)                                               |
168o-----------------------------------------------------------------------------o
169
170  - The header files of Cal3D are now installed to '/usr/local/include/cal3d'
171    when executing the 'make install' command. (Thanks to Brandon Ehle!)
172  - The skeleton pose is now set to the initial state when no active animation
173    exists. (Thanks to Brandon Ehle!)
174  - Enhanced the CalVector and CalQuaternion class with a great number of
175    operators. (Thanks to Wolfgang Scheicher!)
176  - CalVector is now used as type of the vertex position and normal data in
177    the CalCoreSubmesh and CalSubmesh class.
178  - Revamped the animation pipeline: Added a CalPhysique helper class and a
179    CalSpringSystem class.
180  - Experimental cloth animation system implemented in the CalSpringSystem
181    class. (Thanks to Wolfgang Scheicher!)
182  - Changed the whole bone influence system to a localized bone transformation
183    approach. This was needed for the planned cloth animation system and for a
184    better vertex shader support.
185  - Moved the 'weight' member variable and its accessor from the derived
186    classes to the CalAnimation class.
187  - Removed the unused 'duration' argument from the CalLoader::loadCoreTrack()
188    and CalSaver::saveCoreTrack() functions.
189  - Moved the setMaterialSet() function from the CalModel class to the
190    CalRenderer class.
191  - Relicensed the library under the LGPL (GNU Lesser General Public License).
192  - CalCoreSkeleton::addCoreBone() inserts root core bones automatically into
193    the root core bone list now. The function addRootCoreBoneId() was removed.
194
195
196o-----------------------------------------------------------------------------o
197| Version 0.6 (4. August 2001)                                                |
198o-----------------------------------------------------------------------------o
199
200  - Fixed the bone/vertex/normal transformation pipeline. There was a bug in
201    the library and another in the exporter. Together they worked pretty much
202    correct, but there were those weird normals in some of the models.
203  - Added a user-data member variable and accessors to the CalCoreBone,
204    CalCoreMaterial, CalCoreModel and CalModel classes.
205  - Finished the LOD handling in the CalRenderer, CalMesh and CalCoreMesh
206    classes.
207  - Implemented the whole material system with material-sets and -threads.
208  - I decided to implement a material class (CalCoreMaterial) and a new file
209    type for it (.crf). This should lead to a very flexible material handling.
210    (such as swapping materials on the fly on submeshes etc.).
211  - Texture coordinates are stored differently in the CalCoreSubmesh class to
212    optimize access from the CalRenderer interface.
213  - A new class CalRenderer was added that serves as a clean interface for
214    the external rendering loop.
215  - Fixed all *.cpp files to include config.h if HAVE_CONFIG_H is set.
216  - Converted CalModel::getMeshVertices() and CalModel::getMeshNormals() to
217    CalModel::getSubmeshVertices() and CalModel::getSubmeshNormals().
218  - Created a little model viewer named 'MiniViewer' that can be run from the
219    command-line.
220  - Complete redesign of the mesh handling. It is now much cleaner and ready
221    for LOD (level of detail).
222  - Changed the fileformats to include a version info field. Furthermore, the
223    magic file cookies were modified to reflect the incompatibility to the
224    old fileformat.
225  - Fixed a bug in the calculation of the blending factor between two
226    keyframes that caused a visible crack in the animation.
227  - Added a few accessor functions that are used by the exporter framework.
228  - Polished the error class and its error messages a bit.
229
230
231o-----------------------------------------------------------------------------o
232| Version 0.5 (5. May 2001)                                                   |
233o-----------------------------------------------------------------------------o
234
235  - Added the CalSaver class which can be used to save skeleton, animation
236    and mesh files. This is useful for writing export plugins and storing
237    generic created data for later use.
238  - Redesign of the core mesh class. It supports different materiels and
239    submeshes now. Unlimited (texture-)map channels are possible.
240  - 3d Studio Max exporter handles materials and maps.
241  - Implemented the second animation type (named 'action').
242  - Reorganized the project directory and the workspaces of kdevelop and msvc..
243  - Created a little demo (called 'The Cally Demo') based on cal3d and OpenGL.
244  - Optimized the keyframe lookup and other STL performance issues.
245  - Mesh handling implemented. Vertices and normals are influenced by one or
246    more weighted bone states.
247  - Switched to simple binary file-formats. This gives a shorter loading time
248    and cal3d does not depend on another library.
249  - A first 3d Studio Max exporter plugin is born. It can export biped
250    animations and colored/textured meshes. It is not very stable though =)
251  - Created a first version of an exporter-plugin for Milkshape 3D. This makes
252    it a lot easier to get animation files for testing =)
253  - Added linear blending between 2 keyframes, this gives smoother animations.
254  - Implemented the core animation-track-keyframe structure and extended the
255    XML loader to load it.
256  - Added the CalMixer class that handles all the animation blending
257  - The first type of animation (named 'cycles') is available.
258  - Extended the CalVector and CalQuaternion classes with blending functions.
259  - A quick-and-dirty test-frontend was added (based on SDL and OpenGL) to see
260    the animations on screen.
261  - Implemented the core model-skeleton-bone structure and a XML loader for
262    it (based on libxml2).
263  - The model-skeleton-bone structure that is cloned from the core versions
264    for every instance of a specific model was coded.
265  - An error handling mechanism is in place.
266  - A first port to Win32 was done. Several pieces of not-portable code was
267    fixed in the process.
268
269
270o-----------------------------------------------------------------------------o
271| Version 0.0 (17. February 2001)                                             |
272o-----------------------------------------------------------------------------o
273
274  - Project kick off.
275
276
277o-----------------------------------------------------------------------------o
278