summaryrefslogtreecommitdiffhomepage
path: root/contrib/Opcode/ReadMe.txt
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/Opcode/ReadMe.txt')
-rw-r--r--contrib/Opcode/ReadMe.txt171
1 files changed, 171 insertions, 0 deletions
diff --git a/contrib/Opcode/ReadMe.txt b/contrib/Opcode/ReadMe.txt
new file mode 100644
index 0000000..ee16382
--- /dev/null
+++ b/contrib/Opcode/ReadMe.txt
@@ -0,0 +1,171 @@
+
+ OPCODE distribution 1.3 (june 2003)
+ -----------------------
+
+ New in Opcode 1.3:
+ - fixed the divide by 0 bug that was happening when all centers where located on a coordinate axis (thanks to Jorrit T)
+ - linearized "complete" vanilla AABB trees
+ - ANSI-compliant "for" loops (for the ones porting it to Linux...)
+ - callbacks & pointers moved to mesh interface
+ - support for triangle & vertex strides
+ - optimized the sphere-triangle overlap code a bit
+ - dynamic trees (refit)
+ - more builders
+ - ValidateSubdivision in builders
+ - LSS collider
+ - primitive-bv tests can now be skipped in most volume queries
+ - temporal coherence now also works for airborne objects
+ - temporal coherence completed for boxes / all contacts, LSS, etc
+ - ray-collider now uses a callback
+ - some common "usages" have been introduced (only picking for now)
+ - SPLIT_COMPLETE removed (now implicitely using mLimit = 1)
+ - hybrid collision models
+ - sweep-and-prune code added, moved from my old Z-Collide lib
+ - it now works with meshes made of only 1 triangle (except in mesh-mesh case!)
+
+ Disclaimer:
+
+ - I forced myself to actually *do* the release today no matter what. Else it would never have been done. That's
+ why the code may not be very polished. I also removed a *lot* of things (more usages, distance queries, etc...)
+ that weren't ready for prime-time (or that were linked to too many of my supporting libs)
+
+ - Some comments may also be obsolete here and there. The old User Manual for Opcode 1.2 may not fit version 1.3
+ either, since there's a new "mesh interface" to support strides, etc.
+
+ - Everything in the "Ice" directory has been hacked out of my engine and edited until everything compiled. Don't
+ expect anything out there to be cute or something. In particular, some CPP files are not even included when not
+ needed, so you can expect some linker errors if you try messing around with them...
+
+ Otherwise, it should be just like previous version, only better. In particular, hybrid models can be very
+ memory-friendly (sometimes using like 10 times less ram than the best trees from version 1.2). The possible
+ speed hit is often invisible (if it even exists), especially using temporal coherence in "all contacts" mode.
+ (Admittedly, this depends on your particular usage pattern / what you do on collided triangles).
+
+ The sweep-and-prune code is similar to the "vanilla" version found in V-Collide (but that one's better IMHO...)
+ The simple "radix" version is often just as good, see for yourself.
+
+ OPCODE distribution 1.2 (august 2002)
+ -----------------------
+
+ New in Opcode 1.2:
+ - new VolumeCollider base class
+ - simplified callback setup
+ - you can now use callbacks or pointers (setup at compile time)
+ - destination array not needed anymore in the RayCollider (faster in-out tests)
+ - renamed classes: AABBRayCollider => RayCollider, AABBSphereCollider => SphereCollider
+ - the sphere query now only returns a list of faces (extra info discarded). On the other hand it's a lot faster.
+ - OBB, AABB and planes queries. Original OBB and AABB queries contributed by Erwin de Vries.
+ - cosmetic changes in OPC_BoxBoxOverlap.h contributed by Gottfried Chen
+ - some inlining problems fixed
+ - faster ray-mesh tests using the separating axis theorem
+ - new split value in AABB tree construction (contributed by Igor Kravtchenko). Provides faster queries most of the time.
+ - improved temporal coherence for sphere & AABB queries (works in "All contacts" mode)
+
+ Notes:
+
+ - Everything in the "Ice code" directory (in VC++) is basically copy-pasted from my engine, with a lot
+ of code removed until there was no link error anymore. Don't expect those files to be cute or anything,
+ they've never been meant to be released and they're often updated/modified/messy.
+ - Some experimental features have been removed as well. Else I would never have released the 1.2...
+ - Not as polished/optimal as I would like it to be, but that's life. I promised myself to release it
+ before october 2002 (one YEAR later ?!).... That's the only reason why it's there.
+ - Some people reported ColDet was faster. Uh, come on. They were using Opcode in
+ "All contacts" mode whereas ColDet was doing "first contact"...
+
+ OPCODE distribution 1.1 (october 2001)
+ -----------------------
+
+ New in Opcode 1.1:
+ - stabbing queries
+ - sphere queries
+ - abtract base class for colliders
+ - settings validation methods
+ - compilation flags now grouped in OPC_Settings.h
+ - smaller files, new VC++ virtual dirs (cleaner)
+
+ Notes:
+
+ - "override(baseclass)" is a personal cosmetic thing. It's the same as "virtual", but provides more info.
+ - I code in 1600*1200, so some lines may look a bit long..
+ - This version is not as polished as the previous one due to lack of time. The stabbing & sphere queries
+ can still be optimized: for example by trying other atomic overlap tests. I'm using my first ray-AABB
+ code, but the newer one seems better. Tim Schröder's one is good as well. See: www.codercorner.com/RayAABB.cpp
+ - The trees can easily be compressed even more, I save this for later (lack of time, lack of time!)
+ - I removed various tests before releasing this one:
+ - a separation line, a.k.a. "front" in QuickCD, because gains were unclear
+ - distance queries in a PQP style, because it was way too slow
+ - support for deformable models, too slow as well
+ - You can easily use Opcode to do your player-vs-world collision detection, in a Nettle/Telemachos way.
+ If someone out there wants to donate some art / level for the cause, I'd be glad to release a demo. (current
+ demo uses copyrighted art I'm not allowed to spread)
+ - Sorry for the lack of real docs and/or solid examples. I just don't have enough time.
+
+ OPCODE distribution 1.0 (march 2001)
+ -----------------------
+
+ - First release
+
+ ===============================================================================
+
+ WHAT ?
+
+ OPCODE means OPtimized COllision DEtection.
+ So this is a collision detection package similar to RAPID. Here's a
+ quick list of features:
+
+ - C++ interface, developed for Windows systems using VC++ 6.0
+ - Works on arbitrary meshes (convex or non-convex), even polygon soups
+ - Current implementation uses AABB-trees
+ - Introduces Primitive-BV overlap tests during recursive collision queries (whereas
+ standard libraries only rely on Primitive-Primitive and BV-BV tests)
+ - Introduces no-leaf trees, i.e. collision trees whose leaf nodes have been removed
+ - Supports collision queries on quantized trees (decompressed on-the-fly)
+ - Supports "first contact" or "all contacts" modes (ā la RAPID)
+ - Uses temporal coherence for "first contact" mode (~10 to 20 times faster, useful
+ in rigid body simulation during bisection)
+ - Memory footprint is 7.2 times smaller than RAPID's one, which is ideal for console
+ games with limited ram (actually, if you use the unmodified RAPID code using double
+ precision, it's more like 13 times smaller...)
+ - And yet it often runs faster than RAPID (according to RDTSC, sometimes more than 5
+ times faster when objects are deeply overlapping)
+ - Performance is usually close to RAPID's one in close-proximity situations
+ - Stabbing, planes & volume queries (sphere, AABB, OBB, LSS)
+ - Sweep-and-prune
+ - Now works with deformable meshes
+ - Hybrid trees
+
+
+ What it can be used for:
+ - standard mesh-mesh collision detection (similar to RAPID, SOLID, QuickCD, PQP, ColDet...)
+ - N-body collisions (similar to V-Collide)
+ - camera-vs-world collisions (similar to Telemachos/Paul Nettle/Stan Melax articles)
+ - shadow feelers to speed up lightmap computations
+ - in-out tests to speed up voxelization processes
+ - picking
+ - rigid body simulation
+ - view frustum culling
+ - etc
+
+ WHY ?
+
+ - Because RAPID uses too many bytes.
+ - Because the idea was nice...
+
+ WHEN ?
+
+ It's been coded in march 2001 following a thread on the GD-Algorithms list.
+
+ GDAlgorithms-list mailing list
+ GDAlgorithms-list@lists.sourceforge.net
+ http://lists.sourceforge.net/lists/listinfo/gdalgorithms-list
+
+ WHO ?
+
+ Pierre Terdiman
+ June, 1, 2003
+
+ p.terdiman@wanadoo.fr
+ p.terdiman@codercorner.com
+
+ http://www.codercorner.com
+ http://www.codercorner.com/Opcode.htm