4 the rules for this file:
5 * entries are sorted newest-first.
6 * summarize sets of changes - dont reproduce every CVS log comment here.
7 * don't ever delete anything.
8 * keep the format consistent (79 char width, M/D/Y date format).
10 ------------------------------------------------------------------------------
11 03/06/2016 Oleh Derevenko
12 * dWorldAttachQuickStepDynamicIterationStatisticsSink public function
13 was added to allow dynamic step count adjustment monitoring for
16 02/21/2019 Oleh Derevenko
17 * Dynamic step count adjustment was implemented for dWorldQuickStep
18 with dWorldSetQuickStepDynamicIterationParameters and
19 dWorldGetQuickStepDynamicIterationParameters new API functions
20 to control the feature.
21 The solver estimates per body resulting contact force maximal
22 absolute adjustment value and may exit after fewer iterations if
23 the adjustments get smaller than the given threshold, or iterate
24 longer if the adjustments are still significant after the default
25 iteration count is executed.
27 01/20/2019 Oleh Derevenko
28 * x86 targets have been changed to generate SSE2 code for calculations
29 by default with possibility to explicitly configure back for FPU.
31 11/12/2018 Oleh Derevenko
32 * The commentary from 11/05/2018 was wrong. The constraints were not
33 reset to their natural order and remained randomized.
34 The other thing that was missing was full contraint reorder without
35 separation into independent and dependent ones. The algorithm doesn't
36 converge without it well.
38 11/10/2018 Oleh Derevenko
39 * An incorrect optimization to Jacobian Copy building code from #1938
40 that resulted in corrupt data in multi-threaded execution mode was
43 11/05/2018 Oleh Derevenko
44 * An unintended change from commit #1898 has been reverted.
45 The QuickStep used to solve with randomized constraint order
46 each 8th iteration. The other iterations, the constraints
47 were reset to their natural order, as generated, with the dependent
48 constraints gathered in reverse order at end (the reverse order is
49 somehow important). With the commit #1898 the constraints were
50 randomly reordered each 8th iteration but then remained
51 in that randomized order and only were re-randomized on subsequent
54 10/09/2017 Markus Rickert
55 * CMake support for project file generation has been added.
57 06/14/2017 Oleh Derevenko
58 * dxHashSpace::collide() has been changed to fault host program
59 if scene gets too large and causes integer overflow.
61 06/06/2017 Oleh Derevenko
62 * Memory and pointer size integer type use has been changed so that
63 internal typedefs are used instead of "_t" suffixed types.
65 05/09/2017 Oleh Derevenko
66 * Introduction of cooperative algorithms API.
67 L*D*LT cooperative factorization and linear equation system
68 cooperative solving have been implemented.
69 * AtomicReadReorderBarrier, AtomicStore, AtomicStorePointer functions
70 have been added and some atomic function implementations have been
73 02/20/2017 Oleh Derevenko
74 * Project generation options have been changed to have built-in
75 multithreaded threading implementation enabled by default.
77 02/19/2017 Oleh Derevenko
78 * dWorldStep threaded implementation has been extended to the final
79 steps of constraint force applications and body position updates
80 after the LCP solving. Note that body callbacks (if set) may be
81 called from multiple threads if threaded execution is enabled.
82 * OU atomicord32 type has been fixed to be unsigned on all supported
85 01/09/2017 Oleh Derevenko
86 * dGeomTriMeshDataPreprocess2() public function has been added to
87 replace dGeomTriMeshDataPreprocess(). Face angles pre-computation
88 for triangle meshes has been implemented.
90 11/13/2016 Oleh Derevenko
91 * dGeomTriMeshDataGetBuff and dGeomTriMeshDataSetBuff have been marked
92 deprecated and their functionality implemented via
93 dGeomTriMeshDataGet and dGeomTriMeshDataSet. Extra function variant
94 dGeomTriMeshDataGet2() has been added to allow returning data size.
96 11/07/2016 Oleh Derevenko
97 * The implementation of OPCODE TriMesh data pre-processing
98 (dGeomTriMeshDataPreprocess()) has been optimized to only contain
99 a sort and a single pass over edges (used to be a sort and O(N^2)).
101 10/29/2016 Oleh Derevenko
102 * dGeomTriMeshDataPreprocess() public function has been changed to
103 return a boolean status (it can fail in low memory conditions).
105 07/10/2016 Oleh Derevenko
106 * The correct handling of dJOINT_REVERSE mode for AngularMotor Joint
107 implemented (issue #37).
109 06/29/2016 Oleh Derevenko
110 * A bug fixed with HashSpace calling big boxes collision twice
111 (both straight and reverse geometries order) since revision #1831.
113 06/03/2016 Oleh Derevenko
114 * dJointSetHinge2Axes public function has been added and
115 dJointSetHinge2Axis1/2 have been marked deprecated due to being
118 05/13/2016 Oleh Derevenko
119 * ICE Container class allocation strategy fixed to avoid reserving
120 excess memory with large collections.
122 05/10/2016 Oleh Derevenko
123 * dSafeNormalize3 and dSafeNormalize4 functions changed to leave the
124 parameter intact instead of replacing it with the X-axis unit in case
127 04/12/2016 Oleh Derevenko
128 * A function to create a self-threaded threading implementation object
129 has been moved back to public headers as there could be a use for it
130 while running several worlds in parallel threads.
132 01/09/2016 Oleh Derevenko
133 * Hinge2 joint corected to avoid faulting asserts when the axes get
134 temporarily invalid during assignments (suggested by David Mansolino)
136 01/03/2016 Oleh Derevenko
137 * An invalid memory access fixed in dxSAPSpace::BoxPruning() in case
138 if there were NaN values in AABBs to be sorted.
140 12/25/2015 Oleh Derevenko
141 * Unexpected joint mode assignment (instead of comparison) fixed within
142 an dUASSERT in dJointSetTransmissionAxis2() of transmission joint
144 11/28/2015 Oleh Derevenko
145 * Convex-Trimesh collider added (libccd+GIMPACT only)(by Piotr Piastucki)
146 * dCreateConvex() and dGeomSetConvex() public APIs changed to expect
147 their parameter arrays as const pointers
149 11/01/2015 Oleh Derevenko
150 * OPCODE mesh colliders' input coordinates have been offset to
151 mesh-relative frames to decrease potential computational errors
152 (suggested by luckytrashsc2@g***l.com)
154 08/05/2015 Oleh Derevenko
155 * Implemented change to return highest depth contacts subset for GIMPACT
156 in cases if contacts count exceeds requested maximum (as suggested in
157 the issue #36 by Piotr Piastucki)
159 11/17/2014 Daniel K. O.
160 * Added support for using libccd from the system (if found via
163 11/10/2014 Oleh Derevenko
164 * Floating point division by zero in capsule-ray collision routine
165 in case if the ray axis was parallel the cylinder and the ray started
166 from within it fixed (issue #26)
168 11/08/2014 Oleh Derevenko
169 * Threading support has been extended to complete implementation
172 10/29/2014 Daniel K. O.
173 * Added dJointSetDBallDistance
175 10/19/2014 Oleh Derevenko
176 * Built-in threading implementation compilation fixed for OSX
177 (clock_gettime() is missing from the system - reported by Bram)
179 08/10/2014 Oleh Derevenko
180 * Declarations of dWorld[Get/Set]AutoDisableLinearAverageThreshold and
181 dWorld[Get/Set]AutoDisableAngularAverageThreshold have been removed
182 from public headers (were orphaned since rev.1052)
184 07/16/2014 Oleh Derevenko
185 * Two fixes by Francesco Cat applied (fixes for mistakes made during
186 code style improvements in the past)
188 02/27/14 Daniel K. O.
189 * Added dODE_VERSION macro to public headers (issue #24).
191 02/11/14 Daniel K. O.
192 * Added dJointGetHinge2Angle2 (issue #12).
194 02/07/14 Daniel K. O.
195 * Added dWorldSetData/dWorldGetData (issue #21).
197 01/31/14 Daniel K. O.
198 * Applied patch #185: Stable, implicit gyroscopic forces.
200 01/27/14 Daniel K. O.
201 * Fixed cylinder AABB computation.
203 01/25/14 Daniel K. O.
204 * Removed ALLOCA calls from dHashSpace; it should not depend
205 on stack size limits anymore.
207 12/06/13 Daniel K. O.
208 * Applied patch #181: fix some bugs in AMotor joint.
209 * Applied patch #186: fix some bugs in PU joint.
210 * Applied patch #182: Transmission joint.
211 * Applied patch #184: implement rolling friction for contacts.
213 08/08/13 Oleh Derevenko
214 * Joint feedback forces application fixed in QuickStep implementation
215 (was broken since revision #1919 in old repository (#1927 in new one))
217 08/04/13 Oleh Derevenko
218 * Bugfix #89 by Luc applied (dJointAddSliderForce() adds a zero force
219 when the parent body is NULL)
221 05/18/13 Oleh Derevenko
222 * OU library has been included in ODE at revision #46 instead of
223 being used as an external link due to difficulties using external
224 references with new protocol used for storage at SF.
226 03/03/13 Oleh Derevenko
227 * Fixed issue with "findex==-1" constraints being intermixed with
228 "findex!=-1" ones during constraints random reordering in QuickStep.
230 02/03/13 Oleh Derevenko
231 * [u]int[8/16/32] renamed to contain "d" prefix so that global namespace
232 was not polluted with these names unconditionally.
233 If your project depended on these types other than just for passing
234 parameters to ODE calls, add similar typedefs for yourself in some
235 of your project's global headers.
237 01/02/13 Oleh Derevenko
238 * Applied patch #183 by Joseph Cooper (complementary matrix
241 12/28/12 Oleh Derevenko
242 * A bug with heightfield data assigned to a wrong field in
243 dGeomHeightfieldSetHeightfieldData fixed (bug report #88 by Luc).
245 12/18/12 Oleh Derevenko
246 * Fixed issue with some kinds of joints (Ball, DBall, DHinge, Fixed)
247 might overwrite world ERP value with their custom ERP during
248 getInfo2() call and that inappropriate value would then be passed
249 to subsequent joints in solver instead of world ERP.
251 12/01/12 Oleh Derevenko
252 * Fixed issues reported in patches #151 and #22 (collisions with
253 SAPSpace and QuadTreeSpace might not work because geometries list
254 was misused in them).
255 * Applied patch #160 "IsPointInPolygon in convex.cpp returns wrong
256 results" (by Janis Rucis)
258 11/25/12 Oleh Derevenko
259 * Configuration option --disable-threading-intf added
260 (--no-threading-intf for Windows/Premake). This allows disabling
261 threading interface support (external implementations may not be
262 assigned) but eliminates dependency on OU and use of atomics in
265 11/05/12 Oleh Derevenko
266 * Fixed zero comparisons in OPCODE to use relative error instead of
267 absolute epsilon value (found by Bill Sellers)
269 06/08/12 Daniel K. O.
270 * Removed the need for defining dSINGLE/dDOUBLE; this is stored now in
271 the generated ode/precision.h header.
272 * Some code cleanup to get rid of GCC warnings.
274 05/30/12 Daniel K. O.
275 * Made drawstuff draw shadows for lines.
276 * Fixed dhinge's last constraint to properly handle rotations.
278 05/03/12 Daniel K. O.
279 * Added two new joints: Double Ball and Double Hinge.
281 04/22/12 Daniel K. O.
282 * Fixed plane2d joint: uninitialized variables (reported by Dimitris
285 04/14/12 Oleh Derevenko
286 * Assertion checking macros moved into library private headers.
288 04/13/12 Daniel K. O.
289 * Applied patch from bug #3431829 - better handling of capsule-box with
291 * Fixed zero-mu issues: now either mu or mu2 can be set to zero.
293 03/17/12 Oleh Derevenko
294 * Threaded execution support interface added. Optional built-in threading
295 implementation added.
296 Internal threading implementation is excluded by default and to be used,
297 it must be enabled with configure/premake.
298 At present, if threading interface is assigned to a world, island
299 selection and stepping is performed in multiple threads (one thread per
302 03/12/12 Oleh Derevenko
303 * PURE_INLINE macro renamed to ODE_PURE_INLINE and definition of
304 dNextAfter()/dCopySign() corrected to avoid creating conflicts with
307 02/03/12 Oleh Derevenko
308 * Assertion checking macros moved from common.h to error.h
310 12/18/11 Oleh Derevenko
311 * dIVERIFY macro added (same as dIASSERT in debug mode but evaluates its
312 expression in release mode) to be used to assert variable value
313 which is not used further in text while avoiding compiler warning.
314 * dICHECK macro added (same as dIASSERT but evaluates its expression and
315 raises assertion fault regardless of compilation mode) to be used to
316 generate a fault in cases when error is very unlikely but must be
317 handled and handling is very troublesome (e.g. failure to lock a mutex
318 due to lack of resources).
320 12/07/11 Oleh Derevenko
321 * Partially fixed size_t to integer conversion warnings
322 * Fixed type signedness and added casts to size_t wherever necessary
325 11/04/11 Daniel K. O.
326 * Applied patch #3429454 - fix compilation on some platforms.
328 10/28/11 Daniel K. O.
329 * Fixed a box-capsule bug: more reasonable normal for deep penetrations
330 (contributed by Georg Martius.)
332 10/27/11 Daniel K. O.
333 * Disabled merging of contacts for trimesh-sphere by default.
334 * Added new demo: demo_tracks.
336 10/17/11 Daniel K. O.
337 * Added python bindings, contributed by Gideon Klompje.
338 * Updated some build scripts.
339 * Changed spheres distribution in demo_space_stress.
341 05/17/11 Oleh Derevenko
342 * A typo in step.cpp fixed (assignment operator in a conditional
343 instead of comparison) (reported by Bram Stolk)
345 01/29/11 Oleh Derevenko
346 * Heightfield zone boundaries calculation code fixed to also consider
347 whole next cell after the AABB if the AABB ends exactly at the cell
350 01/23/11 Daniel K. O.
351 * Applied patch from Daniel Fiser, add libccd collider for
354 01/20/11 Daniel K. O.
355 * Applied patch from Daniel Fiser, fix infinite loop in libccd caused
356 by numerical problems.
358 01/06/11 Daniel K. O.
359 * Applied patch from Daniel Fiser, efficient libccd tests when using
360 CONTACTS_UNIMPORTANT.
362 12/17/10 Daniel K. O.
363 * Applied patches from Daniel Fiser for new colliders based on libccd.
365 11/08/10 Daniel K. O.
366 * Applied patches from Daniel Fiser to incorporate libccd for
367 Cylinder-Cylinder collision tests.
369 08/21/10 Oleh Derevenko
370 * Fix applied to dxReallocateTemporayWorldProcessContext() to remove typo
371 which caused segmentation fault (by Kyle McKay).
372 dTestSolveLCP() fixed to avoid exceeding allocated memory pool
375 07/19/10 Oleh Derevenko
376 * Patch applied (#3030783) to fix drawstuff dimensions being ignored
377 in OSX GLUT port (by Danny Price).
380 * Applied patch #2991622: dGeomGetRelPointPos, dGeomGetPosRelPoint,
381 dGeomVectorToWorld, and dGeomVectorFromWorld.
383 07/16/10 Daniel K. O.
384 * Fixed bug #2937076: don't try to build demos if drawstuff is disabled.
386 05/02/10 Oleh Derevenko
387 * Missing extern "C" wrapper has been added to include/ode/export-dif.h
388 (reported by Danny Price). The change affects dWorldExportDIF() public
391 05/02/10 Oleh Derevenko
392 * Patch applied (#2995450) to generate up to four contacts for box-
393 plane collision test (by alexdu) and fix contact depths.
395 05/02/10 Oleh Derevenko
396 * dGeomLowLevelControl function added with ability to change/query OPCODE
397 trimesh-sphere contact merging behavior at runtime.
399 02/18/10 Daniel K. O.
400 * Fixed bug affecting disabled joints and dWorldStep.
402 01/16/10 Oleh Derevenko
403 * Patch applied (#2931174) to make demos work for recent MacOS.
404 * Patch applied (#2931177) to fix the demos' framerate on X11.
406 12/20/09 Oleh Derevenko
407 * QuadTreeSpace implementation corrected to avoid object-block relation
408 ambiguity due to numeric errors.
410 12/04/09 Oleh Derevenko
411 * odecpp classes changed to be inheritable and easily expandable
413 11/29/09 Oleh Derevenko
414 * Improvement for trimesh-plane collision (also used in trimesh-heightfield)
415 to exclude mesh vertices that have already generated contacts from further
416 examination and contact generation in other triangles (suggested by LR).
418 10/25/09 Oleh Derevenko
419 * Macros changed to static inline functions in odemath.h and related files.
420 Some code duplication has been eliminated across the files.
422 * Fixed handling of --disable-asserts and --enable-double-precision
423 (absence of --enable-double-precision) in configure script. The script
424 was not appending compiler defines correctly.
426 * dWorldStep implementation changed to remove allocation on stack.
427 dUSE_MALLOC_FOR_ALLOCA define has been removed as well as corresponding
428 configuration parameter. Also dMemoryFlag public variable has been removed.
429 (look for presence of ODE_EXT_malloc_not_alloca configuration string if
430 your application is dependent on that variable).
432 09/05/09 Oleh Derevenko
433 * dWorldStepFast1 API removed along with dWorld[Get/Set]AutoEnableDepthSF1
435 08/29/09 Oleh Derevenko
436 * Fixed uninitialized floating point array used in computations.
438 08/12/09 Oleh Derevenko
439 * A typo fixed in dGeomCopyOffsetRotation() (final_posr was used instead
440 of offset_posr). Reported by Tilmann.
442 08/11/09 Daniel K. O.
443 * Made sure neither dSINGLE or dDOUBLE is defined by default; the user
444 should always explicitly specify the precision.
446 06/27/09 Oleh Derevenko
447 * New functions have been added:
448 - dWorldUseSharedWorkingMemory
449 - dWorldCleanupWorkingMemory
450 - dWorldSetStepMemoryReservationPolicy
451 - dWorldSetStepMemoryManager
453 06/25/09 Remi Ricard (papaDoc)
454 * Add limit to the to the second axis of the universal joint
457 06/14/09 Oleh Derevenko
458 * dWorldQuickStep re-implemented to avoid memory allocation on stack.
459 Also several optimizations have been made to decrease memory
460 requirements and optimize algorithm implementation of dWorldQuickStep.
461 dWorldStep still remains with old memory allocation however new APIs
462 mentioned below are fully functional for it.
463 Both dWorldStep and dWorldQuickStep have been changed to return boolean
466 * dInitODE2() changed to automatically call
467 AllocateODEDataForThread(dAllocateFlagBasicData) after library
468 initialization as this is a required initialization minimum that
469 must always be performed anyway.
471 06/05/09 Daniel K. O.
472 * Removed aliasing issues from OPCODE/Ice, plus some other warnings.
473 Now it builds on gcc 4.3.2 with '-Wall -Werror -O3".
475 05/30/09 Oleh Derevenko
476 * A minor memory usage optimization for QuickStep.
478 05/24/09 Daniel K. O.
479 * Made the new trimesh collider the default.
480 * Added a "-texturepath" option to drawstuff.
482 05/18/09 Oleh Derevenko
483 * Heightfield rotation fixed to avoid NaNs while rotating infinite
486 05/03/09 Oleh Derevenko
487 * Incorrect parameter order fixed on contact merging in Sphere-Trimesh
488 collisions. The bug resulted in merged contact remaining with normal
489 of first contact found. Thanks to Dimitris Papavasiliou for reporting.
491 04/23/09 Daniel K. O.
492 * Fixed bug #2685170: use the C99 __func__ instead of __FUNCTION__ when
493 a C99 implementation is available.
495 04/07/09 Remi Ricard (papaDoc)
496 * Remove unused code in demo_joints.cpp, reported by Tilmann.
498 04/07/09 Remi Ricard (papaDoc)
499 * Fix bug in collision categories in demo_jointPU, reported by Tilmann
501 03/14/09 Oleh Derevenko
502 * A possibility to initialize/close ODE multiple times recursively has
504 Also, now a call to dSpaceSetManualCleanup() is required for each
505 space right after creation if ODE has been initialized in thread data
508 03/07/09 Oleh Derevenko
509 * Thread local data has been cleaned up from OPCODE and OdeTls as it is
510 not used (OPC_SweepAndPrune.* and OPC_BoxPruning.* have been removed
511 - rebuilding project files is necessary).
513 02/07/09 Daniel K. O.
514 * New house of cards demo, which stresses the friction handling stability.
516 01/29/09 Remi Ricard (papaDoc)
517 * Fix bug: Fix problem when attaching no body to a joint. Before calling
518 setRelativeValues a check is made for bodies.
521 01/28/09 Daniel K. O.
522 * Applied patch #2538046: Heightfield AABB bounds patch.
524 01/23/09 Remi Ricard (papaDoc)
525 * Add new function dJointSetUniversalAxis1Offset and dJointSetUniversalAxis2Offset
526 * Add unittest for those funcitons.
528 01/23/09 Remi Ricard (papaDoc)
529 * Fix problem with dJointGetUniversalAngle2 when the joint is attached to
530 only a body 2. The sign was inverted.
531 * Add unit test to verify for this problem
533 01/21/09 Remi Ricard (papaDoc)
534 * Fix bug reported by Tilman: dxJointPU::getInfo1 was setting twice the
535 limit of limot1 to zero and not limot2
537 01/17/09 Daniel K. O.
538 * Fixed a bug in dSpaceCollide2: if both geoms are not in spaces they would
539 not have valid AABBs.
541 12/20/08 Daniel K. O.
542 * New functions: dJointEnable, dJointDisable, dJointIsEnabled
545 12/19/08 Daniel K. O.
546 * Removed inline asm statements that break builds on 64-bit VC++.
548 12/09/08 Daniel K. O.
549 * Applied patch #2381592, which adds support for Kinematic Bodies.
551 12/06/08 Oleh Derevenko
553 * Applied a patch by Martijn Buijs to make GIMPACT trimesh-ray collisions to
554 be consistent with those in OPCODE.
555 * Swapped geometries returned in contacts for OPCODE Trimesh-Plane collisions
556 as they were returned in unnatural order being different from that in GIMPACT
557 * Applied a patch by Martijn Buijs to make side1, side2 fields of contact
558 structure be always initialized, either with -1 for non-trmesh geometries
559 or with triangle index for trimeshes. These fields were only assigned for
560 trimesh-trimesh collisions before.
561 * dGeomTriMeshSetTriMergeCallback/dGeomTriMeshGetTriMergeCallback API added
562 to set/get user defined callback procedure for trimeshes that would be
563 invoked when contacts are merged to let user code accumulate attributes of
564 original contact triangles and generate a fake index by which it would
565 later be able to determine those attributes. If the callback is not
566 assigned (the default) -1 is generated as triangle index for merged
567 contacts (there was an index of first of merged triangles before!!!).
568 The callback is currently used within OPCODE trimesh-sphere and OPCODE
569 new trimesh-trimesh collisions.
571 11/20/08 Remi Ricard (papaDoc)
572 * Fix problem with dJointGetPUPosition and
573 dJointGetPUPositionRate when the joint is attached to only
574 a body 2. The sign was inverted.
575 * Fix bug: When a pu joint had only one body attached to position 2,
576 dJointAttach(jId, 0, bId). The body was not push in the right direction to
577 move back between the limits.
578 * Add unit test to check the above problem
579 * Add the function void dJointSetPUAnchorOffset
580 * Make the function void dJointSetPUAnchorDelta deprecated
582 11/19/08 Remi Ricard (papaDoc)
583 * Fix bug: When a pr joint had only one body attached to position 2,
584 dJointAttach(jId, 0, bId). The body was not push in the right direction to
585 move back between the limits.
586 * Add unit test to check the above problem
588 11/19/08 Remi Ricard (papaDoc)
589 * Fix problem with dJointGetPRPosition and
590 dJointGetPRPositionRate when the joint is attached to only
591 a body 2. The sign was inverted.
592 * Add unit test to check the above problem
593 * Increase the tolerance to remove failure in unit test
594 * Remove compilation warning in unit test with the use of REAL()
596 11/18/08 Remi Ricard (papaDoc)
597 * Fix bug: When a piston joint had only one body attached to position 2,
598 dJointAttach(jId, 0, bId). The body was not push in the right direction to
599 move back between the limits.
600 * Add more functionality to demo_piston.cpp
601 * Run astyle on modified files.
603 11/18/08 Remi Ricard (papaDoc)
604 * Fix bug: When a slider joint had only one body attached to position 2,
605 dJointAttach(jId, 0, bId). The body was not push in the right direction to
606 move back between the limits.
608 10/29/08 Oleh Derevenko
610 * Premake scripts changed to only include chosen collision library
611 sources in project on Windows. --all-collis-libs premake option
612 added to allow inclusion of all collision library sources into the
615 10/15/08 Remi Ricard (papaDoc)
616 * Applying patch #2158425 64-bit GIMPACT provided by Mark
617 William. This patch enable GIMPACT to works on 64-bit machine.
619 10/15/08 Remi Ricard (papaDoc)
620 * Add function dJointGetPRAngle and dJointGetPRAngleRate
622 10/15/08 Remi Ricard (papaDoc)
623 * Enable the motor on the rotoide part of the PR joint
625 10/15/08 Remi Ricard (papaDoc)
626 * Add unit test to check if using directly a joint
627 or using after setting with default values is the same.
628 * Add function setRelativeValues called in dJointAttach for
631 10/10/08 Remi Ricard (papaDoc)
632 * Fix bug in dJointGetPUAxis2. The axis was not multiplied with the
633 the rotation matrix of the good body.
634 * Fix bug if there is only one body on the PU joint the axis returned
635 was not the right one.
636 * Add unit test to verify previous bug.
638 10/03/08 Rodrigo Hernandez (Kwizatz)
639 * Added Blender script to create ODE convex geoms under tools.
641 10/01/08 Rodrigo Hernandez (Kwizatz)
642 * Convex-Convex collision detection code is finally stable.
644 08/31/08 Daniel K. O.
645 * Applied patch 2080674: Improved dBodySetRotation; now exact rotation
646 matrices are preserved until the next simulation step.
648 08/07/08 Daniel K. O.
649 * Fixed strict aliasing issue that was breaking the new trimesh collider.
651 07/24/08 Daniel K. O.
652 * New functions: dBodyGetGyroscopicMode and dBodySetGyroscopicMode
655 07/15/08 Remi Ricard (papaDoc)
656 * Add a new define ODE_API_DEPRECATED to mark function as deprecated
659 07/14/08 Remi Ricard (papaDoc)
660 * Finish adding patch 1336066: Joint feedback in quickstep by jsinecky
661 * demo_boxstack.cpp can now print joint feedback
663 07/11/08 Daniel K. O.
664 * Bumped version for 0.10.1
665 * Added proper usage of libtool's version info.
667 07/10/08 Remi Ricard (papaDoc)
668 * Add new function dJointSetPistonAnchorOffset
669 * Add unittest for the piston joint
670 * Fix problem with dJointGetPistonPosition and
671 dJointGetPistonPositionRate when the joint is attached to only
672 a body 2. The sign was inverted.
674 07/09/08 Remi Ricard (papaDoc)
675 * Optimize function Multiply1_12q1 in quickstep
676 Patch proposed by Riemer v.d. Zee and modified by Patrick Baggett
678 07/08/08 Remi Ricard (papaDoc)
679 * Update the slider joint to have the same behavior as the other joint
680 when there is only a body2 attached to it.
681 * Update documentation for the slider joint.
682 * Remove warning by using REAL()
683 * Add new unittest for dJointGetSliderPositionRate
685 07/08/08 Remi Ricard (papaDoc)
686 * Update unittest for the slider.
687 * Rename the new function dJointSetHingeAxisDelta to
688 dJointSetHingeAxisOffset. This remove will remove confusion with
689 the old function dJointSetHingeAnchorDelta
690 * Update documentation for the Hinge unittest
691 * Remove warning by using REAL()
693 07/07/08 Daniel K. O.
694 * Max Correcting Vel doesn't affect bounciness, as before.
696 07/03/08 Remi Ricard (papaDoc)
697 * Add new function dJointSetHingeAxisDelta
698 * Add unittest for this new function
700 06/17/08 Remi Ricard (papaDoc)
702 * Move the computation of the Relative Rotation for the slider joint
704 * Add unittest for to check qrel
706 06/17/08 Remi Ricard (papaDoc)
708 * Remove unused variables.
709 * Remove a conversion warning between unsigned int and int
711 06/17/08 Remi Ricard (papaDoc)
713 * Move the function hingeComputeRelativeRotation as a member of
714 the hinge structure/class.
716 06/17/08 Remi Ricard (papaDoc)
718 * Move the computation of the Relative Rotation for the fixed joint
721 06/16/08 Remi Ricard (papaDoc)
723 * Add testunit for the dxJointFixed
725 06/04/08 Daniel K. O.
727 * Moved joints to ode/src/joints, converted them to true virtual
730 06/02/08 Daniel K. O.
732 * Added an Auto<T> template to step.cpp to handle memory deallocation.
734 05/09/08 Daniel K. O.
736 * Applied patch #1335202: Contact Joint Motion (with some corrections),
737 and added demo_motion.
739 05/01/08 Oleh Derevenko
741 * Memory leak in GIMPACT fixed (reported by Derek)
743 04/28/08 Oleh Derevenko
745 * Added possibility to collide a space of lower sublevel as a geometry
746 against another space of a higher level with dSpaceCollide2.
747 dSpaceSetSublevel/dSpaceGetSublevel are used for sublevel assignment/
750 04/27/08 Oleh Derevenko
752 * Fixed incorrect memory copying which could lead to memory corruption
753 in GIMPACT (luckily, in unused code)
754 * Fixed possible memory read beyond the end of allocated buffer along
755 with unnecessary extra memory copying in GIMPACT.
756 * Fixed buffer reserve being incorrectly reset to zero for bitsets
757 what resulted in unnecessary memory reallocations in GIMPACT.
758 * Implemented support for ability to run collision detection from
759 multiple threads for separate spaces.
761 04/14/08 Oleh Derevenko
763 * Fixed possible memory corruption in new trimesh-trimesh collider
764 in case if two degenerated triangles are checked against each other.
766 04/12/08 Oleh Derevenko
768 * Fixed sporadic assertion failure on vector normalization caused
769 by small triangles degenerating into segments during space
774 * Fix a bug in dJointXXXGetInfo. The value in limot.limit was not
775 always updated. (Ex: If hi and lo limit were changed).
779 * Added a new Joint: Prismatic Universal (patch #1828454).
783 * Fixed bug #1841309: collide2() method buggy.
787 * New function: dVector4Copy.
791 * Added stub calls for trimesh functions.
792 * Applied patch #1914232: dGetConfiguration.
793 * Applied patch #1655333: Optimize the function dNormalize3.
794 * New function: dSetColliderOverride.
795 * New function: dCheckConfiguration.
799 * Disabled building shared library by default with autotools.
803 * New function: dJointGetNumBodies (patch #1901550).
804 * New function: dSpaceGetClass (patch #1901637).
805 * Applied patch #1901649: Add missing function in the export
809 * Fixed drawstuff build issues on OSX.
811 01/12/08 Daniel K. O.
813 * Fixed a typedef bug in configure.in.
814 * Added dCylinder to the C++ wrappers.
815 * Applied patch 1851394: support for GIMPACT with double precision,
817 * Moved bunny geometry to bunny_geom.h.
819 12/11/07 Daniel K. O.
821 * Added damping and MaxAngularVel() functions.
822 * Const-correctness: added const qualifier to some dWorldGet and dBodyGet
824 * Updated the odecpp.h header.
826 12/07/07 Daniel K. O.
828 * Removed most of the compiler warnings from Drawstuff, ODE and
830 * Upgraded automake requirement to 1.10, and change some Makefile.am
834 * Modified autotools to use libtool for
835 library generation and administration
836 * Removed release and debug flags for configure.in
837 CPPFLAGS, CFLAGS, CXXFLAGS should be set by the
838 user to their liking, respecting autotools policies.
840 11/30/07 Daniel K. O.
841 * Applied patch 1813079 (moved callback)
842 * Replaced moveAndRotateBody by dxStepBody in stepfast.cpp
846 * Added 'Sweep and Prune' collision space.
847 * New Piston joint type with demo, by Remi Ricard
848 * Added build option to use 16-bit indices for OPCODE trimesh
852 * Integrated Christoph Beyer's average based sampling system for body
855 10/26/06 Francisco Leon
857 * Totally refactored trimesh collision system.
858 Using GIMPACT instead of OPCODE. Now works correctly, and faster.
859 Visit http://gimpact.sourceforge.net.
861 * Finally, test_moving_trimesh.exe works nicely.
863 * Fixed autodisable system. Now is possible to set bigger sleeping
864 threshold values and objects won't be sleeping on the air. They will
865 rest on the floor properly.
867 * dInitODE function added.
869 * Is Obligatory to call dInitODE() at the beginning for initialize ODE,
870 and calling dCloseODE() when the program ends.
874 * Fixed two bugs in cyl/plane collision test.
878 * New Rotoide - Prismatic joint type
879 * dJointGetUniversalAngles for efficient angle retrieval.
883 * Integrated plane2d joint type which constrains bodies to z == 0.
887 * Added heightfield primitive collision code. Simple test available in
888 ode/test/test_heightfield
892 * Added Convex primitive collision code,
893 currently only convex-sphere and convex-plane work
897 * Added program to test trimesh vs sphere: ode/test/test_basket
901 * Added new autogenerated Visual Studio projects, with Premake scripts
905 * Added plane/cyl intersection test
906 * Renamed CCylinder to Capsule
910 * Added support for geom offsets.
914 * Removed LIBTOOL from autotools since it was not really required.
915 * Added a target to build ODE as a shared library, this shared
916 library gets build alongside the static one, no flags required.
920 (Backported patches from STABLE branch, applied by Adam)
922 * dRandInt changed for a non-double all-int version.
923 * mics minor fixes and improvements.
927 * Fixed segmentation fault with OPCODE on 64 bits systems.
931 * Fixed timer.cpp compiler error on x86-64 using GCC.
935 * Added trimesh preprocessing to mark unneeded edges and verts. Also
936 added support for preprocessed info to the ccylinder-trimesh
941 * Important AMotors bugfix
945 * Assorted small bugfixes and tweaks for
946 trimesh_{box,ccylinder,trimesh} collisions
950 * added functions to joint.cpp to allow joint attachment to moving
953 * added malloc-based memory allocation in step.cpp & lcp.cpp (turned
954 on with a #define switch in common.h)
958 * added joint feedback to the QuickStep solver
962 * added warm starting to the QuickStep solver
966 * added the QuickStep solver
968 * added contact parameter functions.
972 * use dRandInt instead of rand() in stepfast.
976 * added auto-disable support from Aras Pranckevicius (with
977 modifications by russ). this useful feature can speed up
978 simulation significantly in some cases.
980 * various internal tidyups.
984 * changed the meaning of the 'index' argument to dJointGetBody():
985 it was the only remaining API function that does not respect
986 dJOINT_REVERSE (spotted by Matthew D. Hancher).
988 * updated the C++ headers: fixed two minor bugs and added
989 support for dQuadTreeSpace, dRay, and the dGeom::getSpace() method
990 (from Matthew D. Hancher).
994 * changed the way that the dInfinity constant is implemented: now it
995 is #defined to be one of: FLT_MAX, DBL_MAX, HUGE_VAL, HUGE_VALF, or
996 a large numeric constant. previously it was a variable that was
997 exported from the library. this simplifies the configuration and
998 build process quite a bit, especially in the case of DLLs.
1000 * removed the old, deprecated collision system (geom.cpp,space.cpp,
1001 geom.h,space.h,odecpp_old_collision.h). the ODE_OLD_COLLISION
1002 configuration setting no longer has any meaning.
1004 * removed support for dGeomGroups, which have been deprecated for
1005 a while and are equivalent to 'spaces' anyway.
1009 * bug fix in dMassSetCappedCylinder(), from Matthew D. Hancher.
1013 * added trimesh-CCylinder capability, from Vadim Macagon
1014 <vadim_mcagon@hotmail.com>.
1018 * yet another rewrite of triangle-box collision code, this
1019 time based on code donated by Croteam, ported by asko@jetti.org
1020 and tweaked by Erwin.
1024 * merged trimesh-trimesh collision code by
1025 Jeffrey Smith <jeffreys@Softimage.com>.
1027 * changed it to not break the trimesh interface, fix
1028 some GCC compilation problems, bring it up to date with
1029 ODE changes from 2003-11-15 -> 2004-04-04.
1031 * add ability to drop meshes on meshes in test_moving_trimesh,
1032 not as good as it could be but it's illustrative.
1036 * implement a bunch of ultra-simple TriMesh functions that were
1037 in the headers but not in the code -- patch by
1038 Vadim Macagon <vadim_mcagon@hotmail.com>
1040 * disable temporal coherence on trimeshes by default, since
1041 it has scaleability issues that don't make it a general clear win.
1045 * implement dxHashSpace::collide2(), not particularly efficiently.
1049 * applied several Trimesh fixes and improvements from
1050 Aras Pranckevicius <nearaz@interamotion.com>
1054 * apply Nguyen Binh's work for removing many dSetZero() calls
1055 and some other extraneous initializations.
1059 * added dJointAdd*Torque/Force().
1063 * added the StepFast code, by David Whittaker.
1067 * added dMassSet*Total().
1071 * added joint limits and motors to universal joints.
1073 * reversed the polarity of the dJOINT_REVERSE flag.
1077 * added the TriMesh geom class and the quad tree space to the ODE
1078 core. both of these were developed by Erwin de Vries. added OPCODE
1079 to the ODE distribution, this is required by TriMesh.
1083 * added dGeomSetQuaternion() and dGeomGetQuaternion()
1085 * added dJointGet*Anchor2()
1089 * added dGeomGetSpace().
1093 * added dMassSetCylinder().
1097 * added dAreConnectedExcluding().
1101 * added the ray geom class.
1103 * added the dGeomXXXPointDepth() functions.
1105 * added a collision test infrastructure, and some more tests.
1109 * added support for multiple box-box contacts.
1113 * added new collision system. select between the old/new system by
1114 setting the ODE_OLD_COLLISION variable in config/user-settings.
1118 * fixed two problems in the LCP code to improve the reliability of
1119 the dContactApprox1 contact mode.
1121 * added a FAQ question about rolling bodies getting stuck when they
1126 * added dClosestLineSegmentPoints().
1127 * implemented dCollideCB().
1131 * added dJointSetFeedback() and dJointGetFeedback().
1135 * added dGeomTransformSetInfo() and dGeomTransformGetInfo().
1139 * added dBodySetForce(), dBodySetTorque(), dWorldImpulseToForce(),
1140 dBodyGetPosRelPoint(), dBodyGetPosRelPoint(), dBodyVectorToWorld(),
1141 dBodyVectorFromWorld().
1143 * added dBodyGetPointVel() (thanks to Colin Reed).
1145 * added a new C++ interface (from Martin C. Martin, with modifications
1146 by russ). the old C++ interface is now in odecpp_old.h.
1150 * added an additional BSD-style licensing option for ODE.
1154 * added dCloseODE(), contributed by Nate Waddoups and David McClurg.
1158 * added dSpaceQuery(), contributed by Nate Waddoups.
1162 * added a section to the documentation for universal joints.
1163 this includes a picture of the joint.
1167 * added a universal joint class (generously contributed by
1168 Martin C. Martin). it doesn't (yet) have a motor or joint limits,
1169 but it does come with tests.
1173 * makefile changes to accomodate OSs with command line length
1174 limitations (thanks to Norman Lin).
1178 * added the dBodySetGravityMode() and dBodyGetGravityMode()
1179 functions, which change the dxBodyNoGravity body flag.
1181 * added support for building a DLL with MSVC - there is now a
1182 msvc-dll target. thanks to Norman Lin for doing this.
1186 * added the dParamCFM joint parameter.
1190 * reworked the build system to make it more cross-platform.
1191 there is now a single top-level makefile and a configurator.c
1192 program. see the INSTALL file for details.
1196 * the "angular motor" joint has been completed, and a new section
1197 has been added to the documentation.
1201 * added a new joint type: "angular motor". using this joint is a good
1202 way to get ball-joint motors and limits. this is work in progress -
1203 it has not been fully implemented or tested yet.
1207 * replaced the mmap()-based joint group stack (stack.cpp) with a
1208 malloc()-based arena stack (obstack.cpp). this will be more
1209 portable and should not impact performance.
1213 * changed the meaning of the 'flags' parameter to dCollide() and
1214 related functions: now the size of the contact buffer is kept in
1215 the lower 16 bits. this change will be backward compatible.
1217 * added dBodyGetFiniteRotationMode() and dBodyGetFiniteRotationAxis().
1219 * added dBodyAddForceAtRelPos() function.
1223 * added the ability to manually enable and disable bodies.
1224 see dBodyEnable(), dBodyDisable(), dBodyIsEnabled().
1226 * fixed a potential bug: when a world is destroyed that contains
1227 joints in joint groups, those joints are marked as "deactivated" in
1228 the joint group, so when the joint group is destroyed they can be
1231 * the test_boxstack demo has new options to enable and disable bodies.
1233 * new configuration parameter in config.h: dEFFICIENT_SIZE.
1237 * started the change log for ODE. changes older than today were added
1238 to this file by inspecting the CVS logs.
1242 * added REAL() constructions for floating point numbers, to prevent
1243 many warnings when compiling under VC++.
1247 * added geometry transform class, documented composite objects.
1249 * added collision rule: no contacts if both geoms on the same body.
1250 this is not the best rule, may have to remove this in the future.
1252 * new dMassAdd() function.
1254 * capped cylinder to capped cylinder collision function.
1258 * increase CFM in some demos to make them more robust.
1262 * added new accessor functions.
1266 * added the dJOINT_TWOBODIES flag to the joint, that says it can not
1267 be attached to just one body.
1271 * fixed a collision bug in dCollide() that was causing memory
1272 corruption when multiple contacts were being returned.
1276 * joints can now return m=0 to be "inactive". added a "null" joint
1281 * in the LCP solver, try to fail gracefully when s <= 0.
1283 * dAABBTestFn() API change.
1287 * fixed a contact swapping bug in dCollide().
1291 * added capped cylinder geometry object.
1295 * the test_buggy demo now uses geometry groups.
1297 * added a dAABBTestFn field in the geometry classes.
1301 * added geometry groups.
1305 * added finite rotation stuff.