diff options
author | dan miller | 2007-10-19 05:15:33 +0000 |
---|---|---|
committer | dan miller | 2007-10-19 05:15:33 +0000 |
commit | 79eca25c945a535a7a0325999034bae17da92412 (patch) | |
tree | 40ff433d94859d629aac933d5ec73b382f62ba1a /libraries/ode-0.9/OPCODE/ReadMe.txt | |
parent | adding ode source to /libraries (diff) | |
download | opensim-SC-79eca25c945a535a7a0325999034bae17da92412.zip opensim-SC-79eca25c945a535a7a0325999034bae17da92412.tar.gz opensim-SC-79eca25c945a535a7a0325999034bae17da92412.tar.bz2 opensim-SC-79eca25c945a535a7a0325999034bae17da92412.tar.xz |
resubmitting ode
Diffstat (limited to 'libraries/ode-0.9/OPCODE/ReadMe.txt')
-rw-r--r-- | libraries/ode-0.9/OPCODE/ReadMe.txt | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/libraries/ode-0.9/OPCODE/ReadMe.txt b/libraries/ode-0.9/OPCODE/ReadMe.txt new file mode 100644 index 0000000..8a39eff --- /dev/null +++ b/libraries/ode-0.9/OPCODE/ReadMe.txt | |||
@@ -0,0 +1,171 @@ | |||
1 | |||
2 | OPCODE distribution 1.3 (june 2003) | ||
3 | ----------------------- | ||
4 | |||
5 | New in Opcode 1.3: | ||
6 | - fixed the divide by 0 bug that was happening when all centers where located on a coordinate axis (thanks to Jorrit T) | ||
7 | - linearized "complete" vanilla AABB trees | ||
8 | - ANSI-compliant "for" loops (for the ones porting it to Linux...) | ||
9 | - callbacks & pointers moved to mesh interface | ||
10 | - support for triangle & vertex strides | ||
11 | - optimized the sphere-triangle overlap code a bit | ||
12 | - dynamic trees (refit) | ||
13 | - more builders | ||
14 | - ValidateSubdivision in builders | ||
15 | - LSS collider | ||
16 | - primitive-bv tests can now be skipped in most volume queries | ||
17 | - temporal coherence now also works for airborne objects | ||
18 | - temporal coherence completed for boxes / all contacts, LSS, etc | ||
19 | - ray-collider now uses a callback | ||
20 | - some common "usages" have been introduced (only picking for now) | ||
21 | - SPLIT_COMPLETE removed (now implicitely using mLimit = 1) | ||
22 | - hybrid collision models | ||
23 | - sweep-and-prune code added, moved from my old Z-Collide lib | ||
24 | - it now works with meshes made of only 1 triangle (except in mesh-mesh case!) | ||
25 | |||
26 | Disclaimer: | ||
27 | |||
28 | - I forced myself to actually *do* the release today no matter what. Else it would never have been done. That's | ||
29 | why the code may not be very polished. I also removed a *lot* of things (more usages, distance queries, etc...) | ||
30 | that weren't ready for prime-time (or that were linked to too many of my supporting libs) | ||
31 | |||
32 | - Some comments may also be obsolete here and there. The old User Manual for Opcode 1.2 may not fit version 1.3 | ||
33 | either, since there's a new "mesh interface" to support strides, etc. | ||
34 | |||
35 | - Everything in the "Ice" directory has been hacked out of my engine and edited until everything compiled. Don't | ||
36 | expect anything out there to be cute or something. In particular, some CPP files are not even included when not | ||
37 | needed, so you can expect some linker errors if you try messing around with them... | ||
38 | |||
39 | Otherwise, it should be just like previous version, only better. In particular, hybrid models can be very | ||
40 | memory-friendly (sometimes using like 10 times less ram than the best trees from version 1.2). The possible | ||
41 | speed hit is often invisible (if it even exists), especially using temporal coherence in "all contacts" mode. | ||
42 | (Admittedly, this depends on your particular usage pattern / what you do on collided triangles). | ||
43 | |||
44 | The sweep-and-prune code is similar to the "vanilla" version found in V-Collide (but that one's better IMHO...) | ||
45 | The simple "radix" version is often just as good, see for yourself. | ||
46 | |||
47 | OPCODE distribution 1.2 (august 2002) | ||
48 | ----------------------- | ||
49 | |||
50 | New in Opcode 1.2: | ||
51 | - new VolumeCollider base class | ||
52 | - simplified callback setup | ||
53 | - you can now use callbacks or pointers (setup at compile time) | ||
54 | - destination array not needed anymore in the RayCollider (faster in-out tests) | ||
55 | - renamed classes: AABBRayCollider => RayCollider, AABBSphereCollider => SphereCollider | ||
56 | - the sphere query now only returns a list of faces (extra info discarded). On the other hand it's a lot faster. | ||
57 | - OBB, AABB and planes queries. Original OBB and AABB queries contributed by Erwin de Vries. | ||
58 | - cosmetic changes in OPC_BoxBoxOverlap.h contributed by Gottfried Chen | ||
59 | - some inlining problems fixed | ||
60 | - faster ray-mesh tests using the separating axis theorem | ||
61 | - new split value in AABB tree construction (contributed by Igor Kravtchenko). Provides faster queries most of the time. | ||
62 | - improved temporal coherence for sphere & AABB queries (works in "All contacts" mode) | ||
63 | |||
64 | Notes: | ||
65 | |||
66 | - Everything in the "Ice code" directory (in VC++) is basically copy-pasted from my engine, with a lot | ||
67 | of code removed until there was no link error anymore. Don't expect those files to be cute or anything, | ||
68 | they've never been meant to be released and they're often updated/modified/messy. | ||
69 | - Some experimental features have been removed as well. Else I would never have released the 1.2... | ||
70 | - Not as polished/optimal as I would like it to be, but that's life. I promised myself to release it | ||
71 | before october 2002 (one YEAR later ?!).... That's the only reason why it's there. | ||
72 | - Some people reported ColDet was faster. Uh, come on. They were using Opcode in | ||
73 | "All contacts" mode whereas ColDet was doing "first contact"... | ||
74 | |||
75 | OPCODE distribution 1.1 (october 2001) | ||
76 | ----------------------- | ||
77 | |||
78 | New in Opcode 1.1: | ||
79 | - stabbing queries | ||
80 | - sphere queries | ||
81 | - abtract base class for colliders | ||
82 | - settings validation methods | ||
83 | - compilation flags now grouped in OPC_Settings.h | ||
84 | - smaller files, new VC++ virtual dirs (cleaner) | ||
85 | |||
86 | Notes: | ||
87 | |||
88 | - "override(baseclass)" is a personal cosmetic thing. It's the same as "virtual", but provides more info. | ||
89 | - I code in 1600*1200, so some lines may look a bit long.. | ||
90 | - This version is not as polished as the previous one due to lack of time. The stabbing & sphere queries | ||
91 | can still be optimized: for example by trying other atomic overlap tests. I'm using my first ray-AABB | ||
92 | code, but the newer one seems better. Tim Schröder's one is good as well. See: www.codercorner.com/RayAABB.cpp | ||
93 | - The trees can easily be compressed even more, I save this for later (lack of time, lack of time!) | ||
94 | - I removed various tests before releasing this one: | ||
95 | - a separation line, a.k.a. "front" in QuickCD, because gains were unclear | ||
96 | - distance queries in a PQP style, because it was way too slow | ||
97 | - support for deformable models, too slow as well | ||
98 | - You can easily use Opcode to do your player-vs-world collision detection, in a Nettle/Telemachos way. | ||
99 | If someone out there wants to donate some art / level for the cause, I'd be glad to release a demo. (current | ||
100 | demo uses copyrighted art I'm not allowed to spread) | ||
101 | - Sorry for the lack of real docs and/or solid examples. I just don't have enough time. | ||
102 | |||
103 | OPCODE distribution 1.0 (march 2001) | ||
104 | ----------------------- | ||
105 | |||
106 | - First release | ||
107 | |||
108 | =============================================================================== | ||
109 | |||
110 | WHAT ? | ||
111 | |||
112 | OPCODE means OPtimized COllision DEtection. | ||
113 | So this is a collision detection package similar to RAPID. Here's a | ||
114 | quick list of features: | ||
115 | |||
116 | - C++ interface, developed for Windows systems using VC++ 6.0 | ||
117 | - Works on arbitrary meshes (convex or non-convex), even polygon soups | ||
118 | - Current implementation uses AABB-trees | ||
119 | - Introduces Primitive-BV overlap tests during recursive collision queries (whereas | ||
120 | standard libraries only rely on Primitive-Primitive and BV-BV tests) | ||
121 | - Introduces no-leaf trees, i.e. collision trees whose leaf nodes have been removed | ||
122 | - Supports collision queries on quantized trees (decompressed on-the-fly) | ||
123 | - Supports "first contact" or "all contacts" modes (ā la RAPID) | ||
124 | - Uses temporal coherence for "first contact" mode (~10 to 20 times faster, useful | ||
125 | in rigid body simulation during bisection) | ||
126 | - Memory footprint is 7.2 times smaller than RAPID's one, which is ideal for console | ||
127 | games with limited ram (actually, if you use the unmodified RAPID code using double | ||
128 | precision, it's more like 13 times smaller...) | ||
129 | - And yet it often runs faster than RAPID (according to RDTSC, sometimes more than 5 | ||
130 | times faster when objects are deeply overlapping) | ||
131 | - Performance is usually close to RAPID's one in close-proximity situations | ||
132 | - Stabbing, planes & volume queries (sphere, AABB, OBB, LSS) | ||
133 | - Sweep-and-prune | ||
134 | - Now works with deformable meshes | ||
135 | - Hybrid trees | ||
136 | |||
137 | |||
138 | What it can be used for: | ||
139 | - standard mesh-mesh collision detection (similar to RAPID, SOLID, QuickCD, PQP, ColDet...) | ||
140 | - N-body collisions (similar to V-Collide) | ||
141 | - camera-vs-world collisions (similar to Telemachos/Paul Nettle/Stan Melax articles) | ||
142 | - shadow feelers to speed up lightmap computations | ||
143 | - in-out tests to speed up voxelization processes | ||
144 | - picking | ||
145 | - rigid body simulation | ||
146 | - view frustum culling | ||
147 | - etc | ||
148 | |||
149 | WHY ? | ||
150 | |||
151 | - Because RAPID uses too many bytes. | ||
152 | - Because the idea was nice... | ||
153 | |||
154 | WHEN ? | ||
155 | |||
156 | It's been coded in march 2001 following a thread on the GD-Algorithms list. | ||
157 | |||
158 | GDAlgorithms-list mailing list | ||
159 | GDAlgorithms-list@lists.sourceforge.net | ||
160 | http://lists.sourceforge.net/lists/listinfo/gdalgorithms-list | ||
161 | |||
162 | WHO ? | ||
163 | |||
164 | Pierre Terdiman | ||
165 | June, 1, 2003 | ||
166 | |||
167 | p.terdiman@wanadoo.fr | ||
168 | p.terdiman@codercorner.com | ||
169 | |||
170 | http://www.codercorner.com | ||
171 | http://www.codercorner.com/Opcode.htm | ||