1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
======================================
OPCODE (OPtimized COllision DEtection)
======================================
Demo version 1.3b
This demo compares RAPID 2.01 vs OPCODE 1.0.
Information about RAPID can be found there:
http://www.cs.unc.edu/~geom/OBB/OBBT.html
Information about OPCODE can be found there:
http://www.codercorner.com/Opcode.htm
-----
I tried to be as fair as possible, and selected several scenes
where both RAPID and OPCODE show their forces. RAPID is usually
faster in close-proximity scenarii, especially when one object
is totally surrounded by another. OPCODE is usually faster when
objects deeply overlap. On my machine (Celeron 500Mhz), I have
found OPCODE to be faster overall. See for yourself.
By the way, don't forget OPCODE's primary goal was *memory*, not
speed. Considering this, I'm quite pleased with the results!
-----
Scenes have been exported with Flexporter:
http://www.codercorner.com/Flexporter.htm
If you don't like them, you can export your own test scenes from
MAX - just ensure there are only 2 meshes in them.
-----
How to proceed:
1) Run Opcode.exe
2) Drag&drop a ZCB file on the window
Messages such as "Chunk MOVE not found" are normal.
3) Play!
-----
OPCODE-related keys:
1 Toggle contact mode
- All contacts: report all colliding triangles
- First contact: report first contact only (a simple yes/no
answer to the overlap question)
2 Toggle BV-BV tests
- full tests: standard SAT (15 separating axes)
- no class III: SAT-lite (6 separating axes)
3 Toggle Prim-BV tests
- full tests: standard SAT (15 separating axes)
- no class III: SAT-lite (6 separating axes)
4 Toggle leaf nodes
- discarded: use N-1 nodes only for a complete tree
- kept: standard complete tree with 2*N-1 nodes
5 Toggle compression
- enabled: use quantized trees
- disabled: use normal trees
6 Toggle temporal coherence (only for first contact mode)
- enabled: test the previous pair of colliding triangles
before everything else.
- disabled: well, do not....
-----
NB: in order to switch from one feature to another quickly, I create
4 trees for each mesh: normal, no-leaf, quantized, quantized no-leaf.
i.e. 4 OPCODE models + 1 RAPID model / mesh, which explains why the
building phase is not very fast... Especially in the last scene, it
takes a while - please wait!
-----
Generic keys to play with:
F1 Texture control
F2 Camera control
F3 Mesh control
F4 Material control
F5 Scene control
F6 Light control
F7 Helper control
To move the camera or a mesh, use the mouse. Should be intuitive.
In camera mode, press +/- to jump from one camera to another.
Actually +/- jump to "next current" or "previous current", where
"current" is a mesh, camera, texture, etc - depends on selected
control mode.
To test collision detection, useful keys are:
- S to spin a model automatically (on/off)
- P to pause any animation
- O (in pause mode) to play one frame only
Other keys shouldn't be useful there but anyway:
- F displays the framerate on/off (BTW, I do 2 collision queries/frame
and displays a lot of slow text, so don't pay too much attention to
the overall framerate)
- T toggles texturing
- G toggles gouraud
- W toggles wireframe
- R toggles the profiling
- I toggles general information
- B toggles bounding boxes
Special keys
- Y should subdivide a mesh with the Butterfly algorithm. Since it
implies rebuilding all collision trees, it may be quite slow.
- L should smooth a mesh (same remark)
- M should make a mesh manifold, in case ICE complains....
- U should unfold a mesh, so beware.
Otherwise, play with the menu *at your own risk*.
-----
In situations where RAPID is really faster (for example when a mesh
is surrounded by another one) try re-enabling leaf nodes....
-----
Pierre Terdiman
May 03, 2001
p.terdiman@wanadoo.fr
p.terdiman@codercorner.com
www.codercorner.com
|