[ODE] opcode

Pierre Terdiman p.terdiman at wanadoo.fr
Mon Oct 7 19:22:01 2002


This is a multi-part message in MIME format.

------=_NextPart_000_03E9_01C26E6E.81B55DC0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Pierre,
I switched from coldet to opcode, and you were right, it is faster, =
specially, if I am colliding two complex objects.

Cool :)
Then it must depend on the app / scenario, since "pro" 's conclusion was =
different.

No real surprise : as often when it comes to optimizing, one has to test =
and see for himself...

Now I'd like to point something out : Opcode's goal was NOT to go faster =
than X or Y, the goal was to use less memory...

So beware : IIRC in ColDet 1.1 the node classes use virtual methods, =
which wastes a lot of ram to begin with.


Any news about "opcode - ode - triangle collider - mesh to mesh" stuff? =
Any plans? What are alternatives?=20
=20
I'd say it's not going to be implemented soon. Penetration depth between =
two arbitrary meshes is very hard to compute - especially if you want =
the result to run in realtime.

Alternatives :

- decompose the mesh in convex parts (SWIFT++)
- then compute penetration depth between convex polytopes (SOLID 3.0 or =
DEEP)

or

- use a composite object approximatively bounding each mesh
- then use standard primitive-primitive collision routines

Second version is easier, probably runs faster, and most games (if not =
all) do that.

BTW it has already been discussed - check the archives.

Pierre

------=_NextPart_000_03E9_01C26E6E.81B55DC0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.2614.3500" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><EM><FONT face=3DArial size=3D2>Pierre,</FONT></EM></DIV>
<DIV><EM><FONT face=3DArial size=3D2>I switched&nbsp;from coldet to =
opcode, and you=20
were right, it is faster, specially, if I am colliding two complex=20
objects.</FONT></EM></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Cool :)</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Then it must depend on the app / =
scenario, since=20
"pro" 's conclusion was different.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>No real surprise : as often when it =
comes to=20
optimizing, one has to test and see for himself...</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Now I'd like to point&nbsp;something =
out : Opcode's=20
goal was NOT to go faster than X or Y, the goal was to use less=20
memory...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>So beware : IIRC in ColDet 1.1 the node =
classes use=20
virtual methods, which wastes a lot of ram to begin with.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&nbsp;</DIV>
<DIV><EM><FONT face=3DArial size=3D2>Any news about "opcode - ode - =
triangle=20
collider - mesh to mesh" stuff? Any plans?&nbsp;What are alternatives?=20
</FONT></EM></DIV>
<DIV><FONT face=3DArial size=3D2></FONT><EM>&nbsp;</EM></DIV>
<DIV><FONT face=3DArial size=3D2>I'd say it's not going to be =
implemented soon.=20
Penetration depth between two arbitrary meshes is very hard to compute - =

especially if you want&nbsp;the result to run in realtime.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Alternatives :</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>- decompose the mesh in convex parts=20
(SWIFT++)</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>- then compute penetration depth =
between convex=20
polytopes (SOLID 3.0 or DEEP)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>or</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>- use a composite object =
approximatively bounding=20
each mesh</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>- then use standard primitive-primitive =
collision=20
routines</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Second version is easier, probably runs =
faster, and=20
most games (if not all) do that.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>BTW it has already been discussed - =
check the=20
archives.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Pierre</FONT></DIV></BODY></HTML>

------=_NextPart_000_03E9_01C26E6E.81B55DC0--