From ps_yumemi at yahoo.com Tue Oct 1 08:32:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Tue Oct 1 08:32:01 2002 Subject: [ODE] access violation Message-ID: <20021001153138.35239.qmail@web40509.mail.yahoo.com> if you get an acces violation when you go into the space collide function what does that mean? does that mean i have an invalid geom? thanks __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ivan.bolcina at volja.net Tue Oct 1 11:28:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 1 11:28:02 2002 Subject: [ODE] Usage of triangle collider Message-ID: <001301c26978$37c95a90$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0010_01C26988.FB0EE000 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Can anybody give me an example how to use triangle collider. Currently I am using built-in collider on boxes. bye, ivan ------=_NextPart_000_0010_01C26988.FB0EE000 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Can anybody give me an example how to = use triangle=20 collider.
Currently I am using built-in collider = on=20 boxes.
 
bye,
ivan
------=_NextPart_000_0010_01C26988.FB0EE000-- From ivan.bolcina at volja.net Tue Oct 1 11:45:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 1 11:45:02 2002 Subject: [ODE] old posts to this forum Message-ID: <004201c2697a$80065360$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_003F_01C2698B.43615CA0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi, I downloaded archive of old posts to this forum. How do I import it = into my email program(Outlook Express). If I cannot, where to can I = import it. bye and thanx,ivan ------=_NextPart_000_003F_01C2698B.43615CA0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi, I downloaded archive of old posts = to this=20 forum. How do I import it into my email program(Outlook Express). If I = cannot,=20 where to can I import it.
 
bye and = thanx,ivan
------=_NextPart_000_003F_01C2698B.43615CA0-- From anselm at hook.org Tue Oct 1 12:38:02 2002 From: anselm at hook.org (Anselm Hook) Date: Tue Oct 1 12:38:02 2002 Subject: [ODE] old posts to this forum In-Reply-To: <004201c2697a$80065360$0100a8c0@vectra> Message-ID: > q12 archives in mbox format - any way to get them in outlook format? The archives are in mbox format (see pipermail faq). Programs such as Netscape handle this format. Outlook express can import some formats as well. I suggest using Netscape to import the q12 archives, then exporting out to some standard that Outlook can read in. Looking on the net I don't see anybody doing *exactly* what you want but here are a couple of links: http://lists.suse.com/archive/suse-kde/2002-May/0270.html http://www.progsoc.uts.edu.au/lists/slug/2001/May/msg00118.html - a What I would do is run a On Tue, 1 Oct 2002, Ivan Bolcina wrote: > Hi, I downloaded archive of old posts to this forum. How do I import > it into my email program(Outlook Express). If I cannot, where to can I > import it. > > bye and thanx,ivan > From erwin at vo.com Tue Oct 1 13:19:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:01 2002 Subject: [ODE] Tri-collider page on wiki References: <20021001153259.GA13869@nlin.net> Message-ID: <007501c26987$bf0f2f20$73fefea9@athlon> Hi, After several weeks (months?) of crunch time i finally have time to continue my planned changes to the Tricollider. The CVS version is indeed very old, and has problems we all know about. The version i posted to this list fixes some problems, but has several bugs, which is why i'm glad it didnt make it into CVS. The sphere collision function isnt accurate enough for large triangles. I'm going to rewrite the triangle-sphere collision function to be more robust in these cases. The box collision function computes a wrong penetration depth (not deep enough) in some cases, which i found out after the release. I've planned to fix these issues somewhere next week, but dont bet your lives on it. :-) Since ODE now implements a ccylinder-box collision function i'm considering implementing the triangle-ccylinder function along with some other modifications. Erwin ----- Original Message ----- From: To: "Cyrus Preuss" Cc: Sent: Tuesday, October 01, 2002 17:32 Subject: Re: [ODE] Tri-collider page on wiki > Hi Cyrus, > > > ... I (Norman) have managed to patch Erwin's changes for spheres into the > > current CVS version of tri-collider. Contact me for details on an interim > > patched tri-collider if you need accurate sphere->triangle-edge collision > > now; hopefully a new release of tri-collider will resolve all of the > > edge-related problems. ... > > This was several months ago, and I believe the current CVS version of > tri-collider fixes these problems. > > Hm, I just browsed online CVS and it seems that the changes are not yet > in CVS, but I may be mistaken. I am forwarding the e-mail to Erwin as > well. Erwin, did the Opcode 1.2 changes, barycentric coords for sphere-tri > collision, ever make it into CVS? > > Cyrus, the problem was that the old sphere-trimesh collision used a bbox > for the sphere to do the collision for a first rough-estimate of the > collision points, then from this potentially colliding checked each point > to see if it was a real collision between the triangle and the sphere. > This second-pass was inaccurate on the edges. To avoid "bumping" behavior > when spheres rolled over "seams" between adjacent (and e.g. coplanar) > polygons, the inaccurate edge collision was completely eliminated, under > the assumption that when the ball rolls off of the plane of one triangle, > it will roll onto the plane of the next triangle. This works for "concave" > type meshes without upwardly-jutting creases (e.g. ball is rolling on > the inside of a bowl), but fails for "convex" type meshes with upwardly- > jutting creases (e.g. ball rolling upwards then downwards along and over > the sharp edge of a wedge - in this case, edge contact is essential to > account for the convexity of the geometry). This two-pass routine was > then replaced by a one-pass routine using new routines in Opcode 1.2 which > accurately calculated sphere-triangle collision, including edge cases > (apparently using a barycentric coordinate approach). > > After discussing this with Erwin via private e-mail, he was kind enough > to send me some patched files to fix that one case. However, at that time, > the internal structures of the tri-collider were being rewritten, so there > was quite a bit of tedious hacking I had to do to get Erwin's new changes > working with the old tri-collider (though it does work). > > Erwin is continuing to make new progress on the tri-collider, so it > is probably not recommended to use my solution unless you need a working > sphere-trimesh collision *now*, and are willing to modify your code later > when the new version of tri-collider comes out. If you need it now, I'll > zip up my entire modified ODE source directory and send it to you, but > it is probabaly wiser to see if Erwin has updated the official source > yet rather than fiddling with my branched changes. > > BTW in case you're not already doing so, it may be a good idea to wrap your > interface to ODE within an abstract class of your own design, and only to > call ODE indirectly through your own abstract class, which means that changes > like updating the tri-collider are localized, and your application code > ideally wouldn't need to be touched if ODE gets updated. > > Cheers, > -Norman > > From erwin at vo.com Tue Oct 1 13:19:42 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:42 2002 Subject: [ODE] hierarchial spaces References: Message-ID: <007601c26987$c026b9a0$73fefea9@athlon> Catching up. IIRC its even worse than a lot of AABB tests for a large group. Its calling a LOT of specialized collision functions for a large group. As i reported earlier, i've written a library which fixes these issues. Most code has been written. I'm using it for our own apps now, but i want to fix several issues before i publically release it. And i need to fix the tricollider issues first. Erwin ----- Original Message ----- From: "David McClurg" To: Sent: Friday, September 27, 2002 03:24 Subject: [ODE] hierarchial spaces > currently, spaces don't treat geom groups any differently from other geoms. this has the following dis-advantages... > > - in a hash space, the geoms in a group don't get the same treatment as the geoms in the space. that means many more AABB tests for a large group. > - when a geom group is processed by the space, the near callback must decide whether to collide with the entire group or not at all. > > i'm using a group for all my static tri-lists so they do not self-intersect. this is different from the application suggested by the user guide (eg, a collection of geometry objects that are located together in space) but i still think it's a good use of groups. here is my recommended solution... > > - implement hash space testing in groups. perhaps flag it on a per-group level. maybe a space is really just a group! > > - as you traverse the tree of groups and geoms in dSpaceCollide(), issue the near callback at each node. that gives the caller the ability to filter out which geoms are passed to dCollide(). > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From erwin at vo.com Tue Oct 1 13:19:57 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:57 2002 Subject: [ODE] Usage of triangle collider References: <001301c26978$37c95a90$0100a8c0@vectra> Message-ID: <007701c26987$c0db1580$73fefea9@athlon> You could try the test_trilist that goes with it? Or see the Wiki pages on info how to build the tricollider. Erwin ----- Original Message ----- From: "Ivan Bolcina" To: Sent: Tuesday, October 01, 2002 20:27 Subject: [ODE] Usage of triangle collider Can anybody give me an example how to use triangle collider. Currently I am using built-in collider on boxes. bye, ivan From dalwan01 at student.umu.se Wed Oct 2 04:28:02 2002 From: dalwan01 at student.umu.se (Daniel Wallin) Date: Wed Oct 2 04:28:02 2002 Subject: [ODE] Macros In-Reply-To: Message-ID: <5.1.0.14.0.20021002132136.02f8ae98@student.umu.se> At 15:54 2002-09-30 -0700, Marco Grubert wrote: >Well, if standard macros are evil then using macros to redefine keywords is >evil-squared. I was wondering why my code would break whenever I included >dxTrilist.h : > >// MSVC fixup. >#define for if (false); else for > >I assume that the author's intent is to limit the variable scope (MSVC is >not using the current C++ standard of restring for-variables to the scope of >the loop). Please, please don't do this. The portable way is to not declare >variables in the for header but before it. > >... That is very good use of macros.. The way MSVC6.0 handles variable scope's in for-loop's is a very frustrating bug, so if you absolutely have to use it, why not fix the problem with the macro? I can't see how this macro could cause your code to break, unless you are doing something like: for (int i = 0;;) { } int b = i; in which case the fault is all yours.. From sak at cd.chalmers.se Wed Oct 2 04:59:02 2002 From: sak at cd.chalmers.se (Sten Anders Karlsson) Date: Wed Oct 2 04:59:02 2002 Subject: [ODE] Confused on the results from dJointGetFeedback on a slider. Message-ID: Hello! I use a slider that has dParamVel = 0 and dParamFMax = to make the joint not moving. I now use the dJointGetFeedback to see what forces the slider applies to the joined bodies. The odd thing is that I get different results from the dJointGetFeedback depending what axis orientation I have on the slider. This would be OK if the slider allowed movement, but it does not move. I would instead expect that a non moving joint would affect the joined bodies with forces the same way as a fixed joint. Or, now as I write this I come think of a possibility, is it maybe so that a non moving slider still has a degree of freedom, like a hinge, the bodies can rotate around the slider axis? And just an other question - that unfortunately reveals my lacking geometry abilities - but wouldn't it be correct to use the x,y,z forces from the feedback struct and just multiply (dot product) the with the slider axis vector x,y,z to get the forces that acts in the sliders axis direction, asuming the slider axis is pointing in the direction from body1 to body2 (all torques are perpendicular to the slider)? Or, what I realy want to do is to construct a spring-damper and start of by finding out what the initial load is on the spring, before I allow anything to move around, so that I can preload the spring with a good starting value. Any feedback (pun intnd.) is appreciated. -- Anders From grubertm at hotmail.com Wed Oct 2 13:06:02 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Wed Oct 2 13:06:02 2002 Subject: [ODE] Macros References: <5.1.0.14.0.20021002132136.02f8ae98@student.umu.se> Message-ID: Hmm- I though this is self-evident. Maybe not, so here's a little philosophical rant - sorry to bother the community with that. > >// MSVC fixup. > >#define for if (false); else for > That is very good use of macros.. The way MSVC6.0 handles variable scope's in > for-loop's is a very frustrating bug, This used to be the standard behavior of MSVC and GCC prior to ISO standardization- Microsofts reason for not updating this to be more compliant of course is to avoid breaking all your old code. Now I have tons of legacy code which works perfectly fine - unless I include the mentioned header file. So the exact same code works in one module (not using ODE) and fails in the next because the header changes semantics. You _can_ change the meaning of a keyword- the question is _should_ you (even if it's morally okay, or it means you can stick a badge "ISO-compliant" on your shirt)? As long as you are coding on your own this is not an issue and you can redefine your C to look like Pascal - but when trying to do a cross-platform library it's best not to mess with the user's configuration. I have run into a couple of other quirks so now I am compiling tricollider as a static library again with its own setting instead of as part of my project- even though I still think that using a "common grounds" approach would be more suitable. Thanks, Marco Grubert From ps_yumemi at yahoo.com Wed Oct 2 19:06:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Wed Oct 2 19:06:02 2002 Subject: [ODE] access violation Message-ID: <20021003020525.81009.qmail@web40503.mail.yahoo.com> hello, This is about the access violation error i got when I passed by the dspacecollide function what should i do? I got a reply that said it might have been because I didn't build in debug mode but the problem is, I did compile it in debug mode coz i was debugging my program at that moment. i'm worried that it might be the fact that i used classes and all my geomIDs are part of those classes. When I press f10 or f11 while debugging, it gives me an error and it hasn't even reached my int dCollide function yet. I am completely at a loss and I need to finish this soon. pia __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ps_yumemi at yahoo.com Fri Oct 4 02:13:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Fri Oct 4 02:13:02 2002 Subject: [ODE] another access violation Message-ID: <20021004091241.98845.qmail@web40511.mail.yahoo.com> i have an additional question. i created a car with 4 wheels. they all go through the same functions and they all get geomIDs and BodyIDs but the last wheel has a problem with geom functions like dGetGeomPosition or dSetGeomPosition. The rest are fine. It works ok with dGetBodyPosition. why is that? what can I do? Is this a reason for my spacecollide function having an error? I already tried running a simulation without it and it worked. so the problem is centered there. what should I do now? please help. thanks pia __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ivan.bolcina at volja.net Fri Oct 4 08:36:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 4 08:36:02 2002 Subject: [ODE] coldet Message-ID: <001901c26bbb$9c7d7800$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0016_01C26BCC.5B6A9FD0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello. Has anybody used coldet with ode? How to do it?=20 bye,ivan ------=_NextPart_000_0016_01C26BCC.5B6A9FD0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello.
 
Has anybody used coldet with ode? How = to do it?=20
 
 
bye,ivan
------=_NextPart_000_0016_01C26BCC.5B6A9FD0-- From slipch Fri Oct 4 08:55:02 2002 From: slipch (slipch) Date: Fri Oct 4 08:55:02 2002 Subject: [ODE] coldet In-Reply-To: <001901c26bbb$9c7d7800$0100a8c0@vectra> References: <001901c26bbb$9c7d7800$0100a8c0@vectra> Message-ID: <7431855205.20021004185655@gsc-game.kiev.ua> Hello Ivan, Friday, October 4, 2002, 6:34:57 PM, you wrote: IB> Hello. IB> Has anybody used coldet with ode? How to do it? IB> bye,ivan I am sorry for my ignorance. What is it? -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From ivan.bolcina at volja.net Fri Oct 4 10:13:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 4 10:13:02 2002 Subject: [ODE] coldet and ode Message-ID: <001801c26bc9$18b2ba40$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0013_01C26BD9.A93281D0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi slipch, colder its collision detection library http://photoneffect.com/coldet/. = People say its very fast. I use it in my game "solar trader" at = http://users.volja.net/ibolcina/ , look under "solar trader" best regards to you too, ivan ------=_NextPart_000_0013_01C26BD9.A93281D0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi slipch,
colder its collision detection library = http://photoneffect.com/coldet/<= /A>.=20 People say its very fast. I use it in my game "solar trader" at = http://users.volja.net/ibolcina= / ,=20 look under "solar trader"
 
best regards to you too,
ivan
 
 
------=_NextPart_000_0013_01C26BD9.A93281D0-- From Arvid Norberg" Message-ID: <004b01c26bce$01af35d0$0300a8c0@hydri2000> ----- Original Message ----- From: "Marco Grubert" To: Sent: Tuesday, October 01, 2002 12:54 AM Subject: [ODE] Macros > [...] > The portable way is to not declare > variables in the for header but before it. > [...] If you would have written your code "the portable way" you wouldn't have this problem, right? My suggestion is that you fixes your code to support the standard. IMHO ODE should not be written poorly just to be backwards compatible with non-standard code. --- Arvid Norberg From p.terdiman at wanadoo.fr Fri Oct 4 12:08:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 12:08:02 2002 Subject: [ODE] coldet and ode References: <001801c26bc9$18b2ba40$0100a8c0@vectra> Message-ID: <026f01c26bd8$fb38b220$0e00000a@pierre> This is a multi-part message in MIME format. ------=_NextPart_000_026C_01C26BE9.BE85FFC0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Last time I looked at it, - ColDet only returned a single contact (i.e. it only provided RAPID's = "first contact" mode) - It was way slower than Opcode, and used a lot of ram. Of course I'm biased towards Opcode, and feel free to test and see for = yourself. But unless I missed something, current deal (ODE + Opcode) = looks better to me. Pierre ----- Original Message -----=20 From: Ivan Bolcina=20 To: ode@q12.org=20 Sent: Friday, October 04, 2002 7:10 PM Subject: [ODE] coldet and ode Hi slipch, colder its collision detection library = http://photoneffect.com/coldet/. People say its very fast. I use it in = my game "solar trader" at http://users.volja.net/ibolcina/ , look under = "solar trader" best regards to you too, ivan =20 =20 ------=_NextPart_000_026C_01C26BE9.BE85FFC0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Last time I looked at it,
- ColDet only returned a single contact = (i.e. it=20 only provided RAPID's "first contact" mode)
- It was way slower than Opcode, and = used a lot of=20 ram.
 
Of course I'm biased towards Opcode, = and feel free=20 to test and see for yourself. But unless I missed something, current = deal (ODE +=20 Opcode) looks better to me.
 
Pierre
----- Original Message -----
From:=20 Ivan=20 Bolcina
Sent: Friday, October 04, 2002 = 7:10=20 PM
Subject: [ODE] coldet and = ode

Hi slipch,
colder its collision detection = library http://photoneffect.com/coldet/<= /A>.=20 People say its very fast. I use it in my game "solar trader" at = http://users.volja.net/ibolcina= / ,=20 look under "solar trader"
 
best regards to you too,
ivan
 
 
------=_NextPart_000_026C_01C26BE9.BE85FFC0-- From orp at uni.de Fri Oct 4 13:42:01 2002 From: orp at uni.de (pro) Date: Fri Oct 4 13:42:01 2002 Subject: [ODE] coldet Message-ID: <000701c26be6$ba6d98b0$7334188d@brainpool> i use opcode or somtimes coldet for my car simulation (http://www.tu-ilmenau.de/~atzek/), and coldet (i've modified the source, now it gives all collisionpoints instead of only the first) and it is faster than opcode but my collisiondetection is only a ugly hack and doesen't work at all :( From pox at planetquake.com Fri Oct 4 13:47:03 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 13:47:03 2002 Subject: [ODE] coldet and ode In-Reply-To: <026f01c26bd8$fb38b220$0e00000a@pierre> Message-ID: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> This is slightly OT, but... I'd personally give Opcode a shot if it was more portable. (There doesn't seem to be an ANSI C/C++ target in the source). Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff in the mix) whereas ColDet compiles on just about anything, without modification. I've yet to try ColDet with ODE, but was planning on looking into the possibility in the future. A trimesh collider built into ODE itself would probably make a lot of people happy, but I'm not even sure if that's in Russ' long term plans for the library (it's obviously a hot topic on this list though). Frank. -- On Friday, October 4, 2002, at 03:05 PM, Pierre Terdiman wrote: > Last time I looked at it, > - ColDet only returned a single contact (i.e. it only provided RAPID's > "first contact" mode) > - It was way slower than Opcode, and used a lot of ram. >   > Of course I'm biased towards Opcode, and feel free to test and see for > yourself. But unless I missed something, current deal (ODE + Opcode) > looks better to me. >   > Pierre > > ----- Original Message ----- > From: Ivan Bolcina > To: ode@q12.org > Sent: Friday, October 04, 2002 7:10 PM > Subject: [ODE] coldet and ode > > Hi slipch, > colder its collision detection library > http://photoneffect.com/coldet/. People say its very fast. I use it in > my game "solar trader" at http://users.volja.net/ibolcina/ , look > under "solar trader" >   > best regards to you too, > ivan From coding at natew.com Fri Oct 4 13:56:01 2002 From: coding at natew.com (Nate W) Date: Fri Oct 4 13:56:01 2002 Subject: [ODE] coldet and ode In-Reply-To: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> Message-ID: On Fri, 4 Oct 2002, Frank C. wrote: > A trimesh collider built into ODE itself would probably make a lot of > people happy, but I'm not even sure if that's in Russ' long term plans > for the library (it's obviously a hot topic on this list though). See 1.6.3 of the user guide. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From p.terdiman at wanadoo.fr Fri Oct 4 14:03:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 14:03:02 2002 Subject: [ODE] coldet References: <000701c26be6$ba6d98b0$7334188d@brainpool> Message-ID: <032801c26be9$05c2ce00$0e00000a@pierre> > i use opcode or somtimes coldet for my car simulation > (http://www.tu-ilmenau.de/~atzek/), and coldet (i've modified the source, > now it gives all collisionpoints instead of only the first) and it is faster > than opcode I'd be interested in a demo showing that ColDet is faster. I can think of specific cases where it can happen since ColDet uses OBBs (IIRC), but otherwise that's a surprising statement. Anyone else ? Pierre From p.terdiman at wanadoo.fr Fri Oct 4 14:24:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 14:24:02 2002 Subject: [ODE] coldet and ode References: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> Message-ID: <034201c26beb$f2a54840$0e00000a@pierre> > I'd personally give Opcode a shot if it was more portable. (There > doesn't seem to be an ANSI C/C++ target in the source). Well, various people ported it to Linux and made it "more portable". On top of my head : in the F4 engine, in The Nebula Device, in Crystal Space, in ... ODE... Some more people sent me tar.gz files with makefiles and required changes to build Opcode "elsewhere". I don't know if they work well since I have a Windows box, period, but I can upload such an archive if ... Hell, let's just do it, wait 5 mn. ... Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm Words from the author : "This version is indeed different than those contained in F4 or ODE because it is only a direct linux port of version 1.2 of OPCODE, it contains nothing more, nothing less so a user does not have to deal with F4 or ODE. It is also accompanied with a so called configure script which automatically creates a makefile for the user's specific platform. It's just a question of running the configure script and automake and OPCODE is build for your platform (e.g. linux, solaris, irix etc). This is the correct way on unix flavoured oss to spread software." Questions about it ? Ask the author, please. (his mail is in the tar file) > Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff > in the mix) whereas ColDet compiles on just about anything, without > modification. Note that there's a #define to discard the ASM, and the only relevant VC++ stuff, as far as Opcode is concerned, is "__forceinline". Pierre From orp at uni.de Fri Oct 4 16:15:02 2002 From: orp at uni.de (pro) Date: Fri Oct 4 16:15:02 2002 Subject: [ODE] coldet Message-ID: <000c01c26bfc$21b42560$7334188d@brainpool> > I'd be interested in a demo showing that ColDet is faster. have a look at this http://www.tu-ilmenau.de/~atzek/kamikaze.zip there are two kamikazeversions: one for coldet and one for opcode. if you look at the colldet (collisiondetection) times in the right top corner of the screen you see, that coldet is always faster. btw: how can i reply to a thread of this mailinglist ? From pox at planetquake.com Fri Oct 4 17:05:02 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 17:05:02 2002 Subject: [ODE] coldet and ode In-Reply-To: Message-ID: I guess I'm sure now :) Frank. -- On Friday, October 4, 2002, at 09:03 AM, Nate W wrote: > On Fri, 4 Oct 2002, Frank C. wrote: > >> A trimesh collider built into ODE itself would probably make a lot of >> people happy, but I'm not even sure if that's in Russ' long term plans >> for the library (it's obviously a hot topic on this list though). > > See 1.6.3 of the user guide. :-) > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From pox at planetquake.com Fri Oct 4 17:18:01 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 17:18:01 2002 Subject: [ODE] coldet and ode In-Reply-To: <034201c26beb$f2a54840$0e00000a@pierre> Message-ID: Thanks pointing that out. Still a bit of work to get it going on my Mac, but I'm guessing a unix-style OSX build won't be much of a stretch (Classic/Carbon compatibility is another beast...) Frank. -- On Friday, October 4, 2002, at 05:21 PM, Pierre Terdiman wrote: >> I'd personally give Opcode a shot if it was more portable. (There >> doesn't seem to be an ANSI C/C++ target in the source). > > Well, various people ported it to Linux and made it "more portable". > On top > of my head : in the F4 engine, in The Nebula Device, in Crystal Space, > in > ... ODE... Some more people sent me tar.gz files with makefiles and > required > changes to build Opcode "elsewhere". > > I don't know if they work well since I have a Windows box, period, but > I can > upload such an archive if ... Hell, let's just do it, wait 5 mn. > > ... > > Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm > > Words from the author : > > "This version is indeed different than those contained in F4 or ODE > because it is only a direct linux port of version 1.2 of OPCODE, it > contains nothing more, nothing less so a user does not have to deal > with > F4 or ODE. It is also accompanied with a so called configure script > which automatically creates a makefile for the user's specific > platform. > It's just a question of running the configure script and automake and > OPCODE is build for your platform (e.g. linux, solaris, irix etc). This > is the correct way on unix flavoured oss to spread software." > > Questions about it ? Ask the author, please. (his mail is in the tar > file) > >> Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff >> in the mix) whereas ColDet compiles on just about anything, without >> modification. > > Note that there's a #define to discard the ASM, and the only relevant > VC++ > stuff, as far as Opcode is concerned, is "__forceinline". > > Pierre > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From bruce at cubik.org Fri Oct 4 17:35:02 2002 From: bruce at cubik.org (Bruce Mitchener) Date: Fri Oct 4 17:35:02 2002 Subject: [ODE] coldet and ode References: Message-ID: <3D9E34C9.60103@cubik.org> Frank, Frank C. wrote: > Thanks pointing that out. Still a bit of work to get it going on my Mac, > but I'm guessing a unix-style OSX build won't be much of a stretch > (Classic/Carbon compatibility is another beast...) With the Nebula Device, we're still back on Opcode 1.1, but should move to 1.2 soon (within a couple of months). The work to get Opcode 1.1 running on OS X once it was already running on Linux was pretty straight forward, largely a matter of handling some missing math functions. If you'd like to discuss that further, feel free to drop me an email off-list. Cheers, - Bruce From p.terdiman at wanadoo.fr Sat Oct 5 00:33:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Sat Oct 5 00:33:02 2002 Subject: [ODE] coldet References: <000c01c26bfc$21b42560$7334188d@brainpool> Message-ID: <005601c26c41$1a312e60$0e00000a@pierre> > have a look at this http://www.tu-ilmenau.de/~atzek/kamikaze.zip > there are two kamikazeversions: one for coldet and one for opcode. > if you look at the colldet (collisiondetection) times in the right top > corner of the screen you see, that coldet is always faster. Interesting. Difficult to tell if it's normal or not without more info (especially since you modified ColDet to report all contacts). Maybe the OBBs are just better in such cases. Could you mail me off-list a code snippet showing the way you're using Opcode ? Maybe there's something weird there. (I remember some people reporting the same conclusion : after a while I found they were building the Opcode trees each frame). BTW, are you using mesh-mesh CD or sphere-mesh ? If you're using mesh-mesh, did you try RAPID ? If ColDet runs faster thanks to OBBs, then RAPID might run even faster (IIRC it was faster than ColDet overall. But at this point I may want to test those libs again :) Pierre From ivan.bolcina at volja.net Sat Oct 5 02:33:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Sat Oct 5 02:33:02 2002 Subject: [ODE] coldet Message-ID: <003201c26c52$2b3b7470$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_002F_01C26C62.EE5C5AE0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi. I looks to me that opcode has more support and is used by more = programmers, and coldet is at halt. I guess I will switch to opcode. I = just wish ode would have it integerated in it, since i spent half of = last night building ode with it, and no sucess. There are also several = documents how to do it, which one is right?(Address please?) I also don't understand why there is no support for mesh-mesh collision = in ode port of opcode. Whats so problematic about depth penetration? = Can't be an aproximation be enought.Are there any plans to do it. I am sorry for all those questions, but I am still new to wonderful = world of ode and friends. bye,ivan ------=_NextPart_000_002F_01C26C62.EE5C5AE0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
 
I looks to me that opcode has more = support and is=20 used by more programmers, and coldet is at halt. I guess I will switch = to=20 opcode. I just wish ode would have it integerated in it, since i spent = half of=20 last night building ode with it, and no sucess. There are also several = documents=20 how to do it, which one is right?(Address please?)
 
 I also don't understand why there = is no=20 support for mesh-mesh collision in ode port of opcode. Whats so = problematic=20 about depth penetration? Can't be an aproximation be enought.Are there = any plans=20 to do it.
 
I am sorry for all those questions, = but  I am=20 still new to wonderful world of ode and friends.
 
bye,ivan
------=_NextPart_000_002F_01C26C62.EE5C5AE0-- From bongard at ifi.unizh.ch Sat Oct 5 06:24:01 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Sat Oct 5 06:24:01 2002 Subject: [ODE] Dynamically changing the rendering... Message-ID: Hi, Can someone tell me how I can dynamically suppress OpenGL rendering, for example by supplying "-null" at the command prompt? Thanks, Josh -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From benny at kramekweb.com Sat Oct 5 08:38:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Sat Oct 5 08:38:02 2002 Subject: [ODE] Dynamically changing the rendering... References: Message-ID: <3D9F0360.2060009@kramekweb.com> Joshua Bongard wrote: > Hi, > Can someone tell me how I can dynamically suppress OpenGL rendering, for > example by supplying "-null" at the command prompt? I don't understand the question. Are you talking about the drawstuff companion for ode? From Dominique at SavageSoftware.com.au Sat Oct 5 08:54:01 2002 From: Dominique at SavageSoftware.com.au (Dominique Louis) Date: Sat Oct 5 08:54:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... Message-ID: <3D9F0B29.10207@SavageSoftware.com.au> Hi All, Where would be a good place to start when investigating how to implement collision between a car and a skeletally animated model, probably in MilkShake 3D format. Thanks, Dominique. -- http://www.DelphiGamer.com := for all your Object Pascal game development needs; http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME := Home of JEDI-SDL; Cross-platform game development with Pascal, has never been easier. From bongard at ifi.unizh.ch Sat Oct 5 09:39:02 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Sat Oct 5 09:39:02 2002 Subject: [ODE] Dynamically changing the rendering... In-Reply-To: <3D9F0360.2060009@kramekweb.com> Message-ID: Yes; can I bracket the drawstuff in an if-else so that it doesn't always open an OpenGL window? On Sat, 5 Oct 2002, Benny Kramek wrote: > Joshua Bongard wrote: > > Hi, > > Can someone tell me how I can dynamically suppress OpenGL rendering, for > > example by supplying "-null" at the command prompt? > > I don't understand the question. Are you talking about the drawstuff > companion for ode? > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From erwin at vo.com Sat Oct 5 12:14:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Sat Oct 5 12:14:02 2002 Subject: [ODE] Macros References: Message-ID: <00dc01c26ca3$4f3026e0$73fefea9@athlon> Why are you including dxTriList.h in the first place?? The idea is that you include dTriList.h in your external code. Erwin ----- Original Message ----- From: "Marco Grubert" To: Sent: Tuesday, October 01, 2002 00:54 Subject: [ODE] Macros > Well, if standard macros are evil then using macros to redefine keywords is > evil-squared. I was wondering why my code would break whenever I included > dxTrilist.h : > > // MSVC fixup. > #define for if (false); else for > > I assume that the author's intent is to limit the variable scope (MSVC is > not using the current C++ standard of restring for-variables to the scope of > the loop). Please, please don't do this. The portable way is to not declare > variables in the for header but before it. > > BTW the CVS tri-collider revision is outdated (06/24/02) > > Thank you, > Marco Grubert <- exhausted after trying to get ODE with tricollider to > work again > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From anselm at hook.org Sat Oct 5 13:03:01 2002 From: anselm at hook.org (Anselm Hook) Date: Sat Oct 5 13:03:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... In-Reply-To: <3D9F0B29.10207@SavageSoftware.com.au> Message-ID: Hi Dominique, One way to add collision information to a character is to do it by hand; to write actual code that manufactures hulls, joints and bodies. The position of the body will drive the position of the bones in your character and that in turn will presumably drive the rendering of the skin. (Your challenge is mostly just describing a good data model. Once you have that ODE should easily be able to do the rest.) It can however be very time consuming and error prone to attempt to describe any system of even reasonable complexity using source code because the iteration time is so slow and there is no visual feedback to help correct errors in objects placement. Consider that you will have at least 13 joints and 13 bodies and 13 collision hulls - each of these objects has several parameters. These parameters all interact and the sum of the system can be extraordinarily complex. Finding islands of stability with all of these knobs and dials that you can turn at random can be pretty tiring... change any cosmological constant and your entire system explodes in an instant. Dynamics libraries are mostly unusable for scenes of any complexity without some kind of help here. A better way is to use a modelling package. If you have a complex geometry that you are editing in a modelling package - you may want to add specially tagged cylinders, boxes or spheres to your skeleton in that environment. At export time extract those details and pipe them to your collision handler. This is probably less code than the above and is better. Alternatively you could perhaps synthesize reasonable collision hulls from your skeletal data such as assuming a cylinder of certain radius given bone length - or by doing a coarse bounding check on each group of bone associated vertices and creating a collision hull dynamically. BTW You mean Milkshape 3d right? You'll need to specify bodies and joint constraints as well. If you were using a commercial physics library such as Havok then they have special extensions to 3DSMAX and other tools to allow you to visually specify all of these kinds of details. Unfortunately nothing like that exists yet in the public domain (although likely Blender will have such features soon). Right now you have to invent your own scheme or actually describe all of the joints, bodies and collision surfaces completely by hand - which can be extraordinarily tedious and error prone. Depending on your budget I'd recommend spending some time devising a data driven model that modellers could use to design not only the visual form but also the underlying function. You may even be able to use something like havok and 3dsmax to generate your data model but then actually drive the system with ODE. This would be an amusing hack since your runtime could remain open source. This guy did pretty good - probably doing it by hand - so for a single known quantity it may not be that bad: http://taat.fi/taat/porrasturvat/ - a On Sat, 5 Oct 2002, Dominique Louis wrote: > Hi All, > Where would be a good place to start when investigating how to > implement collision between a car and a skeletally animated model, > probably in MilkShake 3D format. > > Thanks, > > > Dominique. > -- > http://www.DelphiGamer.com := for all your Object Pascal game > development needs; > http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME := Home of JEDI-SDL; > Cross-platform game development with Pascal, has never been easier. > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From Nguyen Binh Sat Oct 5 20:26:03 2002 From: Nguyen Binh (Nguyen Binh) Date: Sat Oct 5 20:26:03 2002 Subject: Re[2]: [ODE] coldet In-Reply-To: <003201c26c52$2b3b7470$0100a8c0@vectra> References: <003201c26c52$2b3b7470$0100a8c0@vectra> Message-ID: <13557354421.20021006101234@glassegg.com> I had tried many collision detect package like RAPID, Coldet , Opcode (1.1). IMHO , Opcode is faster overall and it's well-designed . My only problem with Opcode is Pierre write code in 1600x1200 screen. :-) . -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From martin at metahuman.org Sun Oct 6 20:16:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Sun Oct 6 20:16:02 2002 Subject: [ODE] Dynamically changing the rendering... References: Message-ID: <3DA0FC35.A5943B60@metahuman.org> Hey Josh, Good to see you here, I just got back from IROS in Lausanne. The OpenGL library, "drawstuff," is separate from the physics library, "ode." When using drawstuff, you call dStepWorld() from your own function, called simLoop() in the tests. simLoop() is called automatically by drawstuff every frame. When you don't use drawstuff, you just call dStepWorld() yourself in a loop. It would be easy to put these into a single executable, although I use two different executables personally. Check out the source code to the examples for more details. - Martin Joshua Bongard wrote: > > Yes; can I bracket the drawstuff in an if-else so that it doesn't always > open an OpenGL window? > > On Sat, 5 Oct 2002, Benny Kramek wrote: > > > Joshua Bongard wrote: > > > Hi, > > > Can someone tell me how I can dynamically suppress OpenGL rendering, for > > > example by supplying "-null" at the command prompt? > > > > I don't understand the question. Are you talking about the drawstuff > > companion for ode? From slipch Mon Oct 7 01:47:02 2002 From: slipch (slipch) Date: Mon Oct 7 01:47:02 2002 Subject: [ODE] coldet and ode In-Reply-To: <001801c26bc9$18b2ba40$0100a8c0@vectra> References: <001801c26bc9$18b2ba40$0100a8c0@vectra> Message-ID: <485919321.20021007114859@gsc-game.kiev.ua> Hello Ivan, Friday, October 4, 2002, 8:10:11 PM, you wrote: IB> Hi slipch, IB> colder its collision detection library http://photoneffect.com/coldet/. People say its very fast. I use it in my game "solar trader" at http://users.volja.net/ibolcina/ , look under "solar trader" It is very interesting. I'll try to use it. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Mon Oct 7 02:00:02 2002 From: slipch (slipch) Date: Mon Oct 7 02:00:02 2002 Subject: [ODE] CCylinder orientation Message-ID: <256729045.20021007120229@gsc-game.kiev.ua> Hello ODE, How does CCylinder oriented? When I look at collision functions it seems cylinder axis is along axis Z. But when it created it is along OY. I fail to find where the orientation changed. I created cylinder class and with cylinder axis along OY. When I replace CCylinder with Cylinder in my model everything works right. May someone explain how can it happen? -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From thubba at gmx.net Mon Oct 7 03:04:02 2002 From: thubba at gmx.net (Michael Scharvogel) Date: Mon Oct 7 03:04:02 2002 Subject: [ODE] Hinge problem Message-ID: <009301c26de8$a5f2fac0$c36abb84@tig> hi folks... I build up a small test robot. As a matter of fact i am far from that and still trying to build the robot model. Like with an ant the legs shall be segmented. For a first try I have six legs but only two hinges per leg. The first part of each leg is connected to the body and its hinge can move between -45 and 45 degrees (yes I am using rad for the ode stuff :-) The next part of each leg can move up and down. The corresponding hinge is limited by 0 degree as low stop and 70 degree as high stop. I build the whole thing up at a hight of 2 and let it drop down on the floor. It's working just fine. But after lying on the floor for a short while, my bug seems to get bored and stands up... That would be just fine if only I had told it to do so... It seems to me, that the up / down hinge try to achiev their hi limit position... But why ???? Any comments on that ? cya&bfn, mike. From benny at kramekweb.com Mon Oct 7 07:44:01 2002 From: benny at kramekweb.com (Benny Kramek) Date: Mon Oct 7 07:44:01 2002 Subject: [ODE] Hinge problem References: <009301c26de8$a5f2fac0$c36abb84@tig> Message-ID: <3DA1A78C.10808@kramekweb.com> You probably know this already, but when you anchor the joint, then that relative orientation of the bodies is considered 0. Michael Scharvogel wrote: > hi folks... > > I build up a small test robot. As a matter of fact i am far from that and > still trying to build the robot model. Like with an ant the legs shall be > segmented. For a first try I have six legs but only two hinges per leg. > The first part of each leg is connected to the body and its hinge can move > between -45 and 45 degrees (yes I am using rad for the ode stuff :-) > > The next part of each leg can move up and down. The corresponding hinge is > limited by 0 degree as low stop and 70 degree as high stop. > I build the whole thing up at a hight of 2 and let it drop down on the > floor. > It's working just fine. But after lying on the floor for a short while, my > bug seems to get bored and stands up... > That would be just fine if only I had told it to do so... > It seems to me, that the up / down hinge try to achiev their hi limit > position... > But why ???? > > Any comments on that ? > > cya&bfn, mike. > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From ivan.bolcina at volja.net Mon Oct 7 14:36:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Mon Oct 7 14:36:02 2002 Subject: [ODE] opcode Message-ID: <002401c26e49$6ef9fc60$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0021_01C26E5A.2E2D7C00 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. Well, thanx for a nice = library. Any news about "opcode - ode - triangle collider - mesh to mesh" stuff? = Any plans? What are alternatives?=20 bye,ivan ------=_NextPart_000_0021_01C26E5A.2E2D7C00 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Pierre,
I switched from coldet to opcode, = and you were=20 right, it is faster, specially, if I am colliding two complex objects. = Well,=20 thanx for a nice library.
 
Any news about "opcode - ode - triangle = collider -=20 mesh to mesh" stuff? Any plans? What are alternatives? =
 
bye,ivan
------=_NextPart_000_0021_01C26E5A.2E2D7C00-- From p.terdiman at wanadoo.fr Mon Oct 7 19:22:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 7 19:22:01 2002 Subject: [ODE] opcode References: <002401c26e49$6ef9fc60$0100a8c0@vectra> Message-ID: <048501c26e71$305f31a0$0e00000a@pierre> 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
Pierre,
I switched from coldet to = opcode, and you=20 were right, it is faster, specially, if I am colliding two complex=20 objects.
 
Cool :)
Then it must depend on the app / = scenario, since=20 "pro" 's conclusion was different.
 
No real surprise : as often when it = comes to=20 optimizing, one has to test and see for himself...
 
Now I'd like to point something = out : Opcode's=20 goal was NOT to go faster than X or Y, the goal was to use less=20 memory...
 
So beware : IIRC in ColDet 1.1 the node = classes use=20 virtual methods, which wastes a lot of ram to begin with.
 
 
Any news about "opcode - ode - = triangle=20 collider - mesh to mesh" stuff? Any plans? What are alternatives?=20
 
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 the result to run in realtime.
 
Alternatives :
 
- decompose the mesh in convex parts=20 (SWIFT++)
- then compute penetration depth = between convex=20 polytopes (SOLID 3.0 or DEEP)
 
or
 
- use a composite object = approximatively bounding=20 each mesh
- then use standard primitive-primitive = collision=20 routines
 
Second version is easier, probably runs = faster, and=20 most games (if not all) do that.
 
BTW it has already been discussed - = check the=20 archives.
 
Pierre
------=_NextPart_000_03E9_01C26E6E.81B55DC0-- From p.terdiman at wanadoo.fr Mon Oct 7 19:23:43 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 7 19:23:43 2002 Subject: Re[2]: [ODE] coldet References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> Message-ID: <048901c26e71$31d81600$0e00000a@pierre> >My only problem with Opcode is Pierre write >code in 1600x1200 screen. :-) . I plead guilty. From grubertm at hotmail.com Mon Oct 7 20:22:01 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Mon Oct 7 20:22:01 2002 Subject: [ODE] Inertia & tumbling objects Message-ID: Hello, maybe someone can explain why the following thing happens: I create a body which is slightly rotated (1 degree around yaw/z axis) and set it's inertia tensor: dm.setBox( fMass/(x*y*z), x, y,z ); then apply a constant torque of 5000 units around the x-axis. after a few seconds of simulated time the box starts flipping around and a few more seconds later it comes to a complete stop. This happens when x,y,z are set to 40,20,10 (or similar). If I make the cube's edges equal, or set the initial orientation to 0 degrees the cube keeps on spinning indefinitely. So my questions are: why does the rotation suddenly stop? shouldn't this rotation lead to a rotation about a stable axis? Regards, Marco Grubert From slipch Tue Oct 8 00:45:02 2002 From: slipch (slipch) Date: Tue Oct 8 00:45:02 2002 Subject: Re[3]: [ODE] coldet In-Reply-To: <13557354421.20021006101234@glassegg.com> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> Message-ID: <1612357489.20021008104703@gsc-game.kiev.ua> Hello Nguyen, Sunday, October 6, 2002, 6:12:34 AM, you wrote: NB> I had tried many collision detect package like RAPID, Coldet , NB> Opcode (1.1). IMHO , Opcode is faster overall and it's NB> well-designed . My only problem with Opcode is Pierre write I just look through coldet site. Do I understand right - it can detect contact points (and may be contact normals)? If it can then it is not like Opcode. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From Nguyen Binh Tue Oct 8 05:05:03 2002 From: Nguyen Binh (Nguyen Binh) Date: Tue Oct 8 05:05:03 2002 Subject: Re[4]: [ODE] coldet In-Reply-To: <1612357489.20021008104703@gsc-game.kiev.ua> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> <1612357489.20021008104703@gsc-game.kiev.ua> Message-ID: <17328684015.20021008184833@glassegg.com> s> I just look through coldet site. s> Do I understand right - it can detect contact points (and may be s> contact normals)? s> If it can then it is not like Opcode. Yes, sure Coldet can detect contact points (contacts normal is another case, but I think you can have normals from points on mesh) Then how is Opcode and coldet different? Sorry , I can't catch you in this... -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From slipch Tue Oct 8 05:47:02 2002 From: slipch (slipch) Date: Tue Oct 8 05:47:02 2002 Subject: Re[5]: [ODE] coldet In-Reply-To: <10020202920.20021008154429@gsc-game.kiev.ua> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> <1612357489.20021008104703@gsc-game.kiev.ua> <17328684015.20021008184833@glassegg.com> <10020202920.20021008154429@gsc-game.kiev.ua> Message-ID: <11220506446.20021008154932@gsc-game.kiev.ua> Hello Nguyen, Tuesday, October 8, 2002, 2:48:33 PM, you wrote: NB> Yes, sure Coldet can detect contact points (contacts normal is NB> another case, but I think you can have normals from points on mesh) NB> Then how is Opcode and coldet different? Sorry , I can't catch you NB> in this... I am sorry. I rather new in it and do not know Opcode properly. I decided that it can only be used to find intersecting triangles not contact points. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Tue Oct 8 05:54:01 2002 From: slipch (slipch) Date: Tue Oct 8 05:54:01 2002 Subject: [ODE] CCylinder Message-ID: <4520922044.20021008155628@gsc-game.kiev.ua> Hello ODE, Can some one tell me along which axis CCylinder aligned when created axis-Z or axis-Y? -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From p.terdiman at wanadoo.fr Tue Oct 8 06:10:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Tue Oct 8 06:10:02 2002 Subject: Re[6]: [ODE] coldet References: <003201c26c52$2b3b7470$0100a8c0@vectra><13557354421.20021006101234@glassegg.com><1612357489.20021008104703@gsc-game.kiev.ua><17328684015.20021008184833@glassegg.com><10020202920.20021008154429@gsc-game.kiev.ua> <11220506446.20021008154932@gsc-game.kiev.ua> Message-ID: <015801c26ecb$a239ab20$0e00000a@pierre> > NB> Yes, sure Coldet can detect contact points (contacts normal is > NB> another case, but I think you can have normals from points on mesh) > > NB> Then how is Opcode and coldet different? Sorry , I can't catch you > NB> in this... > > I am sorry. I rather new in it and do not know Opcode properly. > I decided that it can only be used to find intersecting triangles > not contact points. And you would be right : I just report intersecting triangles indeed. But (I think) the point is, slapping a dedicated triangle-triangle routine on returned pairs is probably best done in the client code, since many apps will probably need different ways to drive their collision response. That's what ColDet does, using two different triangle-triangle overlap codes, depending on the situation. The fast one is the standard routine from Tomas Möller. That's also what I'm using. The slow one (that computes a collision point) is named "MyTriTri.c" in ColDet. It would be unfortunate to use it in the generic case since it's slower. But you can grab it and use it as well on Opcode's returned pairs, maybe (modulo license troubles). Anyway I'm not sure it's really that useful. Returning a single collision point is dubious, and that's not even the problem - the problem is the penetration depth, at least for ODE. [Now, right, 100% Baraff-like simulators don't need this.] Well, various libs, various strategies, see for your particular needs. Pierre From I.Munro at herts.ac.uk Tue Oct 8 06:31:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Tue Oct 8 06:31:02 2002 Subject: [ODE] CCylinder Message-ID: > Can some one tell me along which axis CCylinder aligned when > created axis-Z or axis-Y? z axis. From orp at uni.de Tue Oct 8 06:42:02 2002 From: orp at uni.de (pro) Date: Tue Oct 8 06:42:02 2002 Subject: [ODE] commercial SOLID3.0 will use ODE Message-ID: <000701c26ed0$d2dbac60$7334188d@brainpool> The upcoming version 4.0 will feature: a.. Coupling to ODE, a free open source physics engine ........ http://www.libsolid.com this could be interesting From bry03redskins at hotmail.com Tue Oct 8 07:52:01 2002 From: bry03redskins at hotmail.com (Bryan Hudock) Date: Tue Oct 8 07:52:01 2002 Subject: [ODE] display problem Message-ID: I have succesfully installed and used Open Dynamics Engine on a linux machine (Red Hat 7.0). However, once a program using the library is exited from, all further ODE programs fail to display. The simulation appears to still be functional, but the display is a black screen. The only way I currently have to solve the problem is to exit and rerun X-Windows each time I want to run a program. If you have any insight into this problem it would be greatly appreciated. Thank you for your time. _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From slipch Tue Oct 8 07:55:02 2002 From: slipch (slipch) Date: Tue Oct 8 07:55:02 2002 Subject: Re[2]: [ODE] CCylinder In-Reply-To: References: Message-ID: <4228173581.20021008175719@gsc-game.kiev.ua> Hello Ian, Tuesday, October 8, 2002, 4:26:14 PM, you wrote: >> Can some one tell me along which axis CCylinder aligned when >> created axis-Z or axis-Y? IM> z axis. It is what is written in documentation Then why when I create CCylinder it appears aligned along Y axis. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From rtonge90 at yahoo.co.uk Tue Oct 8 08:09:01 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Tue Oct 8 08:09:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... Message-ID: <20021008150831.4556.qmail@web14913.mail.yahoo.com> Hi Andy, Dominique >It can however be very time consuming and error prone >to attempt to describe any system of even reasonable >complexity using source code. Yes, setting up skeletons in source is hard. Using a physics authoring tool is much easier. >You may even be able to use something like havok and >3dsmax to generate your data model but then actually >drive the system with ODE. This would be an amusing >hack since your runtime could remain open source. Yes, using Havok authored data to drive the ODE runtime is an interesting idea, however I can see a few problems. 1 3DSmax and the Havok plugin (or the new combined product) are expensive if you dont already own them. 2 The Havok physics model is quite different from the ODE physics model, so any tuning parameters you set at authoring time wont necessarily have the same effect at run time. Some joints parameters in Havok might not have equivalents in ODE. 3 The Havok file format is binary, so you would have to reverse engineer it. Have any of you guys seen KAT, the physics authoring tool that comes free with Unreal Tournament 2003? It is a standalone tool, so you dont need max. It was specifically designed for authoring physics, so its interface is much simpler than max's. Its file format is an XML formatted text file, so you wouldnt need to reverse engineer it to use it with ODE. It comes with all the physics data used to make UT2003 in the XML format which you are free to edit. Also, it is based on MathEngine Karma, which has similar ancestry to ODE. This means that many tuning parameters behave in the same way. For example ERP and CFM in ODE are exactly the same as gamma and epsilon in Karma. This means that a skeleton tuned in KAT should behave similarly in ODE. Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From slipch Tue Oct 8 08:13:01 2002 From: slipch (slipch) Date: Tue Oct 8 08:13:01 2002 Subject: Re[3]: [ODE] CCylinder In-Reply-To: <4228173581.20021008175719@gsc-game.kiev.ua> References: <4228173581.20021008175719@gsc-game.kiev.ua> Message-ID: <10729212845.20021008181439@gsc-game.kiev.ua> Hello slipch, Tuesday, October 8, 2002, 5:57:19 PM, you wrote: IM>> z axis. s> It is what is written in documentation s> Then why when I create CCylinder it appears aligned along Y axis. I have to apologize. I am not right it is only drawn aligned along Y-axis. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From I.Munro at herts.ac.uk Tue Oct 8 08:27:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Tue Oct 8 08:27:02 2002 Subject: Re[2]: [ODE] CCylinder Message-ID: > > IM> z axis. > > It is what is written in documentation > Then why when I create CCylinder it appears aligned along Y axis. I don't know what it says in the documentation, but when compiled under vc7 all the CCyclinders I generate (and my app only uses CCylinders) are initially aligned on the z axis. Sorry, I haven't a clue why yours come out on the Y axis! Ian From coding at natew.com Tue Oct 8 11:19:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 8 11:19:01 2002 Subject: [ODE] CCylinder In-Reply-To: <4520922044.20021008155628@gsc-game.kiev.ua> Message-ID: On Tue, 8 Oct 2002, slipch wrote: > Can some one tell me along which axis CCylinder aligned when > created axis-Z or axis-Y? I don't know off the top of my head, but have a look at the test_buggy sample app. It creates capped cylinders for the wheel's collision hulls, it should be evident from the source code what axis they're on to begin with. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Tue Oct 8 11:31:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 8 11:31:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... In-Reply-To: <20021008150831.4556.qmail@web14913.mail.yahoo.com> Message-ID: On Tue, 8 Oct 2002, [iso-8859-1] Richard Tonge wrote: > Yes, setting up skeletons in source is hard. Using a > physics authoring tool is much easier. I happen to have written something like that using ODE: http://www.natew.com/juice/ The file format is a trivial dialect of XML, and I'll be happy to help if you have trouble making use of it. It runs under Windows, I hope that's not a problem. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Tue Oct 8 15:32:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Tue Oct 8 15:32:02 2002 Subject: [ODE] geom group patch Message-ID: now that i'm using geom groups more, i had to add a query function to see if a geom was in a group int dGeomGroupQuery (dxGeom *g, dxGeom *x) { dUASSERT (g && g->_class->num == dGeomGroupClass,"argument not a geomgroup"); dxGeomGroup *gr = (dxGeomGroup*) CLASSDATA(g); for (int i=0; i < gr->parts.size(); i++) { if (gr->parts[i] == x) { return 1; } } return 0; } From slipch Wed Oct 9 00:22:01 2002 From: slipch (slipch) Date: Wed Oct 9 00:22:01 2002 Subject: Re[2]: [ODE] CCylinder In-Reply-To: References: Message-ID: <1911113781.20021009102331@gsc-game.kiev.ua> Hello Nate, NW> I don't know off the top of my head, but have a look at the test_buggy NW> sample app. It creates capped cylinders for the wheel's collision hulls, NW> it should be evident from the source code what axis they're on to begin NW> with. In my version of test_buggy spheres used for wheels. Meshes created for cylinders in test_buggy with Open Engine are orthogonal to Ode cylinders so aligned along axis - Y. That what misled me. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Wed Oct 9 00:51:01 2002 From: slipch (slipch) Date: Wed Oct 9 00:51:01 2002 Subject: [ODE] always diabled body Message-ID: <192913489.20021009105330@gsc-game.kiev.ua> Hello ODE, Can I create a Body which do not ever be enabled, even when connected to an enabled body by a Joint. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From erwin at vo.com Wed Oct 9 01:14:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 01:14:01 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua> Message-ID: <001001c26f6b$d601ef30$8800a8c0@erwin> What is the purpose of that body then? Erwin ----- Original Message ----- From: "slipch" To: Sent: Wednesday, October 09, 2002 9:53 AM Subject: [ODE] always diabled body > Hello ODE, > > Can I create a Body which do not ever be enabled, even when > connected to an enabled body by a Joint. > > -- > Best regards, > slipch mailto:slipch@gsc-game.kiev.ua > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From slipch Wed Oct 9 02:22:02 2002 From: slipch (slipch) Date: Wed Oct 9 02:22:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <001001c26f6b$d601ef30$8800a8c0@erwin> References: <192913489.20021009105330@gsc-game.kiev.ua> <001001c26f6b$d601ef30$8800a8c0@erwin> Message-ID: <1428374912.20021009122432@gsc-game.kiev.ua> Hello Erwin, Wednesday, October 9, 2002, 11:14:05 AM, you wrote: >> Can I create a Body which do not ever be enabled, even when >> connected to an enabled body by a Joint. >> EdV> What is the purpose of that body then? EdV> Erwin I want to hook enabled body to some point and drag it during simulation simply setting the point position. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Wed Oct 9 04:32:02 2002 From: slipch (slipch) Date: Wed Oct 9 04:32:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <3DA417C9.3070109@kramekweb.com> References: <192913489.20021009105330@gsc-game.kiev.ua> <001001c26f6b$d601ef30$8800a8c0@erwin> <1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> Message-ID: <17816151855.20021009143409@gsc-game.kiev.ua> Hello Benny, Wednesday, October 9, 2002, 2:49:29 PM, you wrote: >> >>>> Can I create a Body which do not ever be enabled, even when >>>> connected to an enabled body by a Joint. >>>> >>> >> >> EdV> What is the purpose of that body then? >> >> EdV> Erwin >> >> I want to hook enabled body to some point and drag it during >> simulation simply setting the point position. >> BK> You can give your body a very large mass and disable gravity on it. Then BK> it will move very little on it's own, and you can move it around with BK> dBodySetPos() Works perfect. Thank you very much. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From p.terdiman at wanadoo.fr Wed Oct 9 06:09:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 06:09:02 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> Message-ID: <00b601c26f94$ac7e5a80$0e00000a@pierre> > BK> You can give your body a very large mass and disable gravity on it. Then > BK> it will move very little on it's own, and you can move it around with > BK> dBodySetPos() > > Works perfect. Thank you very much. Usually a null mass is used to mark fixed bodies. Does it work in ODE ? Pierre From erwin at vo.com Wed Oct 9 06:58:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 06:58:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> Message-ID: <005f01c26f9b$d761a570$8800a8c0@erwin> No. But i dont see the point in creating a fixed body anyway. Just DONT use a body if you dont want dynamics. Erwin ----- Original Message ----- From: "Pierre Terdiman" To: Sent: Wednesday, October 09, 2002 3:06 PM Subject: Re: Re[2]: [ODE] always diabled body > > BK> You can give your body a very large mass and disable gravity on it. > Then > > BK> it will move very little on it's own, and you can move it around with > > BK> dBodySetPos() > > > > Works perfect. Thank you very much. > > Usually a null mass is used to mark fixed bodies. Does it work in ODE ? > > Pierre > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From p.terdiman at wanadoo.fr Wed Oct 9 07:17:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 07:17:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <010401c26f9e$24e99940$0e00000a@pierre> > No. But i dont see the point in creating a fixed body anyway. Just DONT use > a body if you dont want dynamics. That's a common thing nonetheless, say for planes. A ground plane is fixed, yet you want your bodies to collide with it. Or for a flag, when the cloth patch is attached to a fixed base. (etc) Pierre From martin at metahuman.org Wed Oct 9 07:25:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Wed Oct 9 07:25:02 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <3DA43BF9.8D81E460@metahuman.org> Erwin de Vries wrote: > > No. But i dont see the point in creating a fixed body anyway. Just DONT use > a body if you dont want dynamics. What the poster is trying to do is to control a body by putting a joint on it, and moving the location of the half of the joint that's not on the body. They're doing this by creating a second body, attaching the joint to it, and moving it. IIRC, the ODE API seems to treat joints as having a single location, rather than two locations. Of course, most joints try to keep those two locations the same, but in practice they'll rarely have exactly the same location. Perhaps the API could be extended so you could set the location of each half of a joint independently? Or is there already a way to do this that I've missed? - Martin From slipch Wed Oct 9 07:34:02 2002 From: slipch (slipch) Date: Wed Oct 9 07:34:02 2002 Subject: Re[4]: [ODE] always diabled body In-Reply-To: <005f01c26f9b$d761a570$8800a8c0@erwin> References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <327081641.20021009173618@gsc-game.kiev.ua> Hello Erwin, Wednesday, October 9, 2002, 4:57:41 PM, you wrote: EdV> No. But i dont see the point in creating a fixed body anyway. Just DONT use EdV> a body if you dont want dynamics. EdV> Erwin I need body because I need to attach enabled body to something that I can move during simulation setting its position. EdV> ----- Original Message ----- EdV> From: "Pierre Terdiman" EdV> To: EdV> Sent: Wednesday, October 09, 2002 3:06 PM EdV> Subject: Re: Re[2]: [ODE] always diabled body >> > BK> You can give your body a very large mass and disable gravity on it. >> Then >> > BK> it will move very little on it's own, and you can move it around EdV> with >> > BK> dBodySetPos() >> > >> > Works perfect. Thank you very much. >> >> Usually a null mass is used to mark fixed bodies. Does it work in ODE ? >> >> Pierre >> >> _______________________________________________ >> ODE mailing list >> ODE@q12.org >> http://q12.org/mailman/listinfo/ode >> >> -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From erwin at vo.com Wed Oct 9 07:39:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 07:39:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> <010401c26f9e$24e99940$0e00000a@pierre> Message-ID: <006d01c26fa1$94866a50$8800a8c0@erwin> In those cases you only create a geometry. Without a body. Erwin ----- Original Message ----- From: "Pierre Terdiman" To: Sent: Wednesday, October 09, 2002 4:14 PM Subject: Re: Re[2]: [ODE] always diabled body > > No. But i dont see the point in creating a fixed body anyway. Just DONT > use > > a body if you dont want dynamics. > > That's a common thing nonetheless, say for planes. A ground plane is fixed, > yet you want your bodies to collide with it. > > Or for a flag, when the cloth patch is attached to a fixed base. > > (etc) > > Pierre > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From p.terdiman at wanadoo.fr Wed Oct 9 07:46:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 07:46:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> <010401c26f9e$24e99940$0e00000a@pierre> <006d01c26fa1$94866a50$8800a8c0@erwin> Message-ID: <016601c26fa2$3251c540$0e00000a@pierre> > In those cases you only create a geometry. Without a body. Ah, perhaps. Ok. Well, it only shows I'm not actually using ODE :) I think it works with null masses in Havok nonetheless. Pierre PS: let's welcome a new player after Mathengine, Havok, ODE, etc : www.novodex.com From slipch Wed Oct 9 09:22:01 2002 From: slipch (slipch) Date: Wed Oct 9 09:22:01 2002 Subject: [ODE] Cylinder colisions Message-ID: <17333538595.20021009192355@gsc-game.kiev.ua> ------------FF1101193C4A0652 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello ODE, Hear is cylinder class for ODE. Cylinder class includes collisions Cylinder - Box Cylinder-Cylinder Cylinder - Sphere and Cylinder-Plain I also included Cylinder - Tri-Mesh in my version of Triangle collider. I put some more information in readme.txt. -- Best regards, Konstantin Slipchenko mailto:slipch@gsc-game.kiev.ua ------------FF1101193C4A0652 Content-Type: application/x-zip-compressed; name="dCylinder.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dCylinder.zip" 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 ------------FF1101193C4A0652-- From coding at natew.com Wed Oct 9 11:36:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 11:36:02 2002 Subject: Re[2]: [ODE] CCylinder In-Reply-To: <1911113781.20021009102331@gsc-game.kiev.ua> Message-ID: On Wed, 9 Oct 2002, slipch wrote: > NW> I don't know off the top of my head, but have a look at the test_buggy > NW> sample app. It creates capped cylinders for the wheel's collision hulls, > NW> it should be evident from the source code what axis they're on to begin > NW> with. > > In my version of test_buggy spheres used for wheels. Oh look, mine too. Sorry about that. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 9 11:59:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 11:59:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <1428374912.20021009122432@gsc-game.kiev.ua> Message-ID: On Wed, 9 Oct 2002, slipch wrote: > I want to hook enabled body to some point and drag it during > simulation simply setting the point position. I am doing something like that in my application. I create a "fixed" joint, and use it to attach the body to "the static environment" (as Russ puts it in the documentation). // code m_TackJoint = dJointCreateFixed (m_pWorld->m_WorldID, 0); if (m_TackJoint) { dJointAttach (m_TackJoint, m_BodyID, null); dJointSetFixed (m_TackJoint); } As for moving things around, I'm not sure but I think you could try dBodySetPosition followed by another call to dJointSetFixed... moving things around in that way seems to me like it would destabilize the simulation, but it's worth a try. Or, don't create that "disabled" body at all... think about whatever other body it will be connected to, and connect THAT body with a fixed joint, and move that body around. That might be a little bit simpler. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 9 12:03:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 12:03:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <010401c26f9e$24e99940$0e00000a@pierre> Message-ID: On Wed, 9 Oct 2002, Pierre Terdiman wrote: > > No. But i dont see the point in creating a fixed body anyway. Just DONT > > use a body if you dont want dynamics. > > That's a common thing nonetheless, say for planes. A ground plane is fixed, > yet you want your bodies to collide with it. > > Or for a flag, when the cloth patch is attached to a fixed base. Even for both of those scenarios, you could get away without creating a rigid body. The ground plane in my application is a Geom object, not a body; if I wanted a flag, I'd render the pole, but I wouldn't make a body of it (unless I wanted the pole to sway....) instead, the edge of the cloth would just be "attached" to a set of fixed coordinates (as described in 11.1 of the FAQ). -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Wed Oct 9 17:29:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Wed Oct 9 17:29:02 2002 Subject: [ODE] welcome a new player Message-ID: Thanks for the link. It's nice to see the proliferation of rigid body simulators but I thought Si Brown's Freefall buggy demo using ODE was nicer than the NovodexTruckDemo. There seem to be some problems with the novodex wheels. When they hit the walls and objects they turn at a different angle than the inputs which makes it unresponsive very difficult to control. And the frame rate was pretty low (<30) for a small world on a GeForce3 1.6Ghz machine. Pierre Terdiman wrote: > PS: let's welcome a new player after Mathengine, Havok, ODE, etc : > www.novodex.com From p.terdiman at wanadoo.fr Wed Oct 9 18:13:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 18:13:02 2002 Subject: [ODE] welcome a new player References: Message-ID: <021b01c26ff9$e5d0c740$0e00000a@pierre> > Thanks for the link. It's nice to see the proliferation of rigid body simulators but I thought Si Brown's Freefall buggy demo using ODE was nicer than the NovodexTruckDemo. There seem to be some problems with the novodex wheels. When they hit the walls and objects they turn at a different angle than the inputs which makes it unresponsive very difficult to control. And the frame rate was pretty low (<30) for a small world on a GeForce3 1.6Ghz machine. Maybe you should report those problems to them, then ? After all, it's off-topic :) Now, the low framerate probably comes from something else : I don't have a 1.6 Ghz machine (*) and the framerate was always ~85 FPS (that is, the limit they fixed). Pierre (*) On the other hand I have a Quadro4 XGL 900, arh arh arh ! From dmcclurg at pandemicstudios.com.au Wed Oct 9 19:16:01 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Wed Oct 9 19:16:01 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: In my game, I'd like to simulate conveyor belts. Looking at the doc, a contact joint using dContactMotion1/2 seems to be the technqiue required. Does anyone have an example of that? I looked in ode/test but couldn't find anything. Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? Much thanks for any help with these questions From slipch Thu Oct 10 00:32:01 2002 From: slipch (slipch) Date: Thu Oct 10 00:32:01 2002 Subject: Re[4]: [ODE] always diabled body In-Reply-To: References: Message-ID: <1791950044.20021010103433@gsc-game.kiev.ua> Hello Nate, Wednesday, October 9, 2002, 2:06:58 PM, you wrote: NW> On Wed, 9 Oct 2002, slipch wrote: >> I want to hook enabled body to some point and drag it during >> simulation simply setting the point position. NW> I am doing something like that in my application. I create a NW> "fixed" joint, and use it to attach the body to "the static NW> environment" (as Russ puts it in the documentation). There was a good idea by Benny Kramek: " You can give your body a very large mass and disable gravity on it. Then it will move very little on it's own, and you can move it around with dBodySetPos() " Works fine. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From mattias at cambrianlabs.com Thu Oct 10 01:30:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 01:30:02 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <17333538595.20021009192355@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> Message-ID: > Hear is cylinder class for ODE. Hey! Nice job, I tried it out and it seems to work the way it should. I've seen cylinders explode out into space, but only rarely. If anyone wants a windows demo using the cylinder, check out http://www.cambrianlabs.com/DelphiODE.zip - the boxstack demo. cheers, mattias From mattias at cambrianlabs.com Thu Oct 10 01:33:11 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 01:33:11 2002 Subject: [ODE] Community page Message-ID: Hey! Russel, if you'd like, please add http://www.cambrianlabs.com/Mattias/DelphiODE/ to the community page? It's the homepage of the delphi import of ODE. If anyone wants to see some more evolved life, check out http://www.cambrianlabs.com/Mattias/Evolved/ , where I use Genetic Programming to evolve a hopper. Russel, if you want to, you could add that also. cheers, mattias From slipch Thu Oct 10 02:08:02 2002 From: slipch (slipch) Date: Thu Oct 10 02:08:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: References: <17333538595.20021009192355@gsc-game.kiev.ua> Message-ID: <757664571.20021010120947@gsc-game.kiev.ua> Hello Mattias, Thursday, October 10, 2002, 11:25:42 AM, you wrote: >> Hear is cylinder class for ODE. MF> Hey! Nice job, I tried it out and it seems to work the way it should. MF> I've seen cylinders explode out into space, but only rarely. They must not "explode out". One reason it may happen is well known problem with integration of fast rotating body. Cylinders (as well as Capped Cylinders) must show this problem more often than other bodies especially when radius/length ratio is small. It happen because rotating around an axis with small inertia partly counts as rotating around an axis with large inertia. But it is not a problem of colliders. To resolve it finite rotation axes may be used or simply do not set inertia tensor with strongly different inertia of its axes. It is also should depend on integration step. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From I.Munro at herts.ac.uk Thu Oct 10 02:32:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Thu Oct 10 02:32:02 2002 Subject: [ODE] Community page Message-ID: Mattias wrote: > If anyone wants to see some more evolved life, check out > http://www.cambrianlabs.com/Mattias/Evolved/ , where I use Genetic > Programming to evolve a hopper. Russel, if you want to, you could add > that also. Pretty interesting stuff. I'm doing similar things with a two legged runner and using Mathew Wall's GALIB. Sorry, I haven't got any details online at the moment, but have a look at http://www.bunnyburgers.com/tigger.jpg for a picture of the beast in action. I'd previously used the sort of control systems described by Railbert, but am now trying a sort of limit cycle based approach, where just once per a hop I measure the creatures attitude in space, apply (genetic algorithm generated) weights to all these values, sum them together and the use the resulting number to set the leg velocity for flight. For stance I use the same process but a different set of weights. My reasoning was that the railbert approach might be producing a control system that was fighting against the natural dynamics, whilst a non-prescriptive approach might work in harmony with the dynamics. The down-side is that the system is so non-prescriptive that a lot of time is wasted simulating completely unfeasible control weightings. The creature evolves to hops ok if I use both legs in sync, but I've only just started on the bipedal running strategies, so it's a bit hit and miss at the moment. Cheers Ian From mattias at cambrianlabs.com Thu Oct 10 02:50:01 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 02:50:01 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > Pretty interesting stuff. > I'm doing similar things with a two legged runner and using Mathew > Wall's GALIB. My current implementation evolve NNs unsing the NEAT method. Nothing online yet, though. My next goal is to evolve a snake like object (four bodies connected by three hinges) and then something two legged. I'm trying to use Juice to design the body - great tool Nate! > Sorry, I haven't got any details online at the moment, but have a look > at http://www.bunnyburgers.com/tigger.jpg for a picture of the beast > in action. That looks incredibly cool! I'd love to see him in action. Let us know when you have something to look at! > I'd previously used the sort of control systems described by Railbert, Railbert? Never heard of him, nor could I find any online papers - any links you could send? > My reasoning was that the railbert approach might be producing a > control > system that was fighting against the natural dynamics, whilst a > non-prescriptive approach might work in harmony with the dynamics. The > down-side is that the system is so non-prescriptive that a lot of time > is wasted simulating completely unfeasible control weightings. That's evolution for you. I try very hard to kill the bad systems off as fast as I can. > The creature evolves to hops ok if I use both legs in sync, but I've > only just started on the bipedal running strategies, so it's a bit > hit and miss at the moment. Well, if you want to toss ideas around, I'm game! cheers, m From I.Munro at herts.ac.uk Thu Oct 10 04:02:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Thu Oct 10 04:02:02 2002 Subject: [ODE] Community page Message-ID: Mattias Wrote: > > My current implementation evolve NNs unsing the NEAT method. Nothing > online yet, though. I've thought about NNs but i'm not really upto speed on them. I should really investigate the area more. > > That looks incredibly cool! I'd love to see him in action. > Let us know > when you have something to look at! Sure. Of course you can't see from a still frame the crash that followed 1 second later ;-) > > I'd previously used the sort of control systems described > by Railbert, > > Railbert? Never heard of him, nor could I find any online > papers - any > links you could send? Marc Raibert (sorry, mispelt his name) wrote a book called "legged robots that balance" and was responsible for the major work at the MIT leg lab. http://www.ai.mit.edu/projects/leglab/ (lots of interesting stuff at the site) His main contribution was demonstrating that dynamically unstable robots could be controlled with fairly simple control alogorithms rather than a complete mathematical analysis of the robots dynamics. Previous simulations I've done have been using working model 2d, inspired by the work of John Nagle http://www.animats.com/papers/leggedrun/leggedrun.html But working model 2d was incredibly slow to simulate and communicate with. ODE has been a real eye opener as to how fast simulations can run. It's made life a lot easier. My interests actually lie in making physical robots rather than simulations, but they're a great "what if?" tool. Cheers Ian From p.terdiman at wanadoo.fr Thu Oct 10 04:14:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 04:14:02 2002 Subject: [ODE] Community page References: Message-ID: <005f01c2704d$c6915080$0e00000a@pierre> > My next goal is to evolve a snake like object (four bodies connected by > three hinges) and then something two legged. I'm trying to use Juice to > design the body - great tool Nate! Note that NovodeX provides 2 exporters for MilkShape and MAX (others are planned) that you probably could use for ODE as well. For example, 4 bodies connected by 3 hinges are a piece of cake to build & export from MAX. [I can help here if needed, I wrote the exporter]. Note that this KAT tool I still have to play with looks fine as well. Pierre From mattias at cambrianlabs.com Thu Oct 10 04:30:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 04:30:02 2002 Subject: [ODE] Community page In-Reply-To: <005f01c2704d$c6915080$0e00000a@pierre> References: <005f01c2704d$c6915080$0e00000a@pierre> Message-ID: > > My next goal is to evolve a snake like object (four bodies connected > by > > three hinges) and then something two legged. I'm trying to use Juice > to > > design the body - great tool Nate! > > Note that NovodeX provides 2 exporters for MilkShape and MAX (others > are planned) that you probably could use for ODE as well. I couldn't find the exporters att novodex (is that novODEx?) ;) > For example, 4 bodies connected by 3 hinges are a piece of cake to > build & export from MAX. [I can help here if needed, I wrote > the exporter]. Well, MAX isn't exactly cheap, though milkshape is (and I actually have a license). Any pointers to the exporters? > Note that this KAT tool I still have to play with looks fine as well. I'd love to play with it also, but I'm guessing I'd have to buy the game to download it? cheers, mattias From p.terdiman at wanadoo.fr Thu Oct 10 04:40:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 04:40:02 2002 Subject: [ODE] Community page References: <005f01c2704d$c6915080$0e00000a@pierre> Message-ID: <00bb01c27051$7f8241a0$0e00000a@pierre> > Well, MAX isn't exactly cheap, though milkshape is (and I actually have a > license). Any pointers to the exporters? Download them freely here: http://www.novodex.com/sales.html > I'd love to play with it also, but I'm guessing I'd have to buy the game > to download it? No. http://www.swissquake.ch/chumbalum-soft/files/KAT_1_2_UT2003_Setup.exe Pierre From slipch Thu Oct 10 04:59:02 2002 From: slipch (slipch) Date: Thu Oct 10 04:59:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <757664571.20021010120947@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> Message-ID: <16117962618.20021010150125@gsc-game.kiev.ua> Hello Mattias, Thursday, October 10, 2002, 11:25:42 AM, you wrote: It seems my message has not get through. At least I do not see it back in my Inbox. I send it again. MF> Hey! Nice job, I tried it out and it seems to work the way it should. MF> I've seen cylinders explode out into space, but only rarely. They must not "explode out". One reason it may happen is well known problem with integration of fast rotating body. Cylinders (as well as Capped Cylinders) must show this problem more often than other bodies especially when radius/length ratio is small. It happen because rotating around an axis with small inertia partly counts as rotating around an axis with large inertia. But it is not a problem of colliders. To resolve it finite rotation axes may be used or simply do not set inertia tensor with strongly different inertia of its axes. It is also should depend on integration step. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From mattias at cambrianlabs.com Thu Oct 10 05:13:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 05:13:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <16117962618.20021010150125@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> Message-ID: > Hello Mattias, Hey slipch, it came through fine both times - I haven't replied yet, though. > They must not "explode out". One reason it may happen is well known > problem with integration of fast rotating body. Cylinders (as well as > Capped Cylinders) must show this problem more often than other bodies > especially when radius/length ratio is small. Well, dropping many cylinders in the boxstack demo, every once in a while one will explode. I'm not sure why, but you may be correct. cheers, m From p.terdiman at wanadoo.fr Thu Oct 10 05:19:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 05:19:02 2002 Subject: Re[2]: [ODE] Cylinder colisions References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> Message-ID: <00f801c27056$f27be760$0e00000a@pierre> Are your cylinders real cylinders or capsules ? I assume they're "real" cylinders since you make a difference between them and "capped cylinders". Then you might want to tell Eric Haines about it, for his intersection page. Actually providing a free ODE-independent set of cylinder overlap routines would be very very handy for a lot of people. > They must not "explode out". One reason it may happen is well known > problem with integration of fast rotating body. Cylinders (as well as > Capped Cylinders) must show this problem more often than other bodies > especially when radius/length ratio is small. It happen because > rotating around an axis with small inertia partly counts as rotating > around an axis with large inertia. But it is not a problem of > colliders. > To resolve it finite rotation axes may be used or simply > do not set inertia tensor with strongly different inertia of its axes. I think it can be solved by : - using a better integration scheme (RK4 at least) - clamping angular velocity to a max speed Unless I'm missing something.... I wouldn't tweak the inertia tensor, that's a delicate beast. Seems to work here: www.codercorner.com/Physics.zip (Press 6 to create some bars, then w to make them spin quickly. I can't make it explode here.)(and I hope we're talking about the same problem ;) Pierre From martin at metahuman.org Thu Oct 10 05:27:01 2002 From: martin at metahuman.org (Martin C. Martin) Date: Thu Oct 10 05:27:01 2002 Subject: [ODE] Community page References: Message-ID: <3DA571D5.329A60E7@metahuman.org> Ian Munro wrote: > > Mattias Wrote: > > Marc Raibert (sorry, mispelt his name) wrote a book called "legged robots > that balance" and was responsible for the major work at the MIT leg lab. > > http://www.ai.mit.edu/projects/leglab/ > (lots of interesting stuff at the site) You might also be interested in: http://www-2.cs.cmu.edu/~garthz/research/bowleg/bowleg.html And in particular, the paper "Control of a Bow Leg Hopping Robot." It works similarly to your description, calculating control parameters only once during flight. Stance, on the other hand, is completely passive. - Martin From mattias at cambrianlabs.com Thu Oct 10 06:04:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 06:04:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <00f801c27056$f27be760$0e00000a@pierre> References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> Message-ID: Since slipch himself hasn't answered (yet), I'll throw in an answer; > Are your cylinders real cylinders or capsules ? I assume they're "real" > cylinders since you make a difference between them and "capped > cylinders". slipch created real cylinders for ODE, I refer you to the archive; http://q12.org/pipermail/ode/2002-October/001936.html . If you want the download (it's in mime format in the pipemail archive), I'm sure he'll send it to you; slipch@gsc-game.kiev.ua cheers, mattias From Dominique at SavageSoftware.com.au Thu Oct 10 06:20:02 2002 From: Dominique at SavageSoftware.com.au (Dominique Louis) Date: Thu Oct 10 06:20:02 2002 Subject: [ODE] Silly Question... Message-ID: <3DA57EF7.1070807@SavageSoftware.com.au> Hi all, I have compiled configurator.c manually and would like to know what parameters it requires in order to create the config.h file. I have tried... configurator config\user-settings bcc32 tools\rm.exe on the command line, but it fails to delete the ctest.c file and does not seem to generate correct output. Am I missing something here? Thanks, Dominique. From benny at kramekweb.com Thu Oct 10 06:46:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Thu Oct 10 06:46:02 2002 Subject: [ODE] conveyor belts and moving platforms References: Message-ID: <3DA58E8C.10401@kramekweb.com> David McClurg wrote: > In my game, I'd like to simulate conveyor belts. Looking at the doc, a contact joint using dContactMotion1/2 seems to be the technqiue required. Does anyone have an example of that? I looked in ode/test but couldn't find anything. It's fairly simple. First make sure that you correctly set the fdir1 vector in the dContact structure. Then make sure that you use the dContactFDir1 and dContactMotion1 flags on the surface mode. Then set the correct value for motion1. > Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. > If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? One way is to put very large values in the inertia matrix. This will make the body difficult to rotate. Another, maybe better way, is give your body an inertia of a sphere, and to always have the geom oriented in a fixed orientation. From slipch Thu Oct 10 06:49:02 2002 From: slipch (slipch) Date: Thu Oct 10 06:49:02 2002 Subject: Re[4]: [ODE] Cylinder colisions In-Reply-To: <00f801c27056$f27be760$0e00000a@pierre> References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> Message-ID: <7724552614.20021010165115@gsc-game.kiev.ua> Hello Pierre, Thursday, October 10, 2002, 3:17:04 PM, you wrote: PT> Are your cylinders real cylinders or capsules ? I assume they're "real" PT> cylinders since you make a difference between them and "capped cylinders". PT> Then you might want to tell Eric Haines about it, for his intersection page. PT> Actually providing a free ODE-independent set of cylinder overlap routines PT> would be very very handy for a lot of people. Of course they are "real" cylinders. It is not need to create colliders for capsules because they already exist in ODE. Functions that implement collision for cylinders designed to set contact information to create ODE contact joints. I am not sure that they would be useful in another application. PT> Seems to work here: www.codercorner.com/Physics.zip PT> (Press 6 to create some bars, then w to make them spin quickly. I can't make PT> it explode here.)(and I hope we're talking about the same problem ;) I think yes we are talking about the same problem. Errors may appear anyway due to numeric errors independently of inertia tensor. But when inertia highly asymmetric they rather lead to noticeable result. If angular velocity is not limited it may lead to untwisting to infinite velocity. Unfortunately I can not get the example right now by technical reasons. I'll do it later and I belive I manage to make turning body to explode in any case setting proper parameters and very large velocity. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From benny at kramekweb.com Thu Oct 10 06:58:01 2002 From: benny at kramekweb.com (Benny Kramek) Date: Thu Oct 10 06:58:01 2002 Subject: [ODE] Cylinder colisions References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> Message-ID: <3DA59188.4080906@kramekweb.com> > Of course they are "real" cylinders. It is not need to create > colliders for capsules because they already exist in ODE. Functions that > implement collision for cylinders designed to set contact information > to create ODE contact joints. I am not sure that they would be useful in > another application. Why don't we add the "real" cylinder class directly into ode? From mattias at cambrianlabs.com Thu Oct 10 10:10:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 10:10:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > > My current implementation evolve NNs unsing the NEAT method. Nothing > > online yet, though. > > I've thought about NNs but i'm not really upto speed on them. I should > really investigate the area more. NNs are tricky, if you want to do any kind of "fancy" (backpropagation) learning. Evolving NNs is almost trivial. Picking the right network topology is the the tricky part. The method I use, NEAT, evolves topology AND network weights, that's harder to implement. Now, if you want to _understand_ NNs, that's another thing completely... cheers, m From Alan_Gordie at payformance.com Thu Oct 10 11:30:02 2002 From: Alan_Gordie at payformance.com (Alan Gordie) Date: Thu Oct 10 11:30:02 2002 Subject: [ODE] coldet and ode Message-ID: I'm still catching up on two weeks of past list messages, but that is awesome news! Thanks, Pierre! -----Original Message----- From: Pierre Terdiman [mailto:p.terdiman@wanadoo.fr] Sent: Friday, October 04, 2002 5:21 PM To: ode@q12.org Subject: Re: [ODE] coldet and ode > I'd personally give Opcode a shot if it was more portable. (There > doesn't seem to be an ANSI C/C++ target in the source). Well, various people ported it to Linux and made it "more portable". On top of my head : in the F4 engine, in The Nebula Device, in Crystal Space, in ... ODE... Some more people sent me tar.gz files with makefiles and required changes to build Opcode "elsewhere". I don't know if they work well since I have a Windows box, period, but I can upload such an archive if ... Hell, let's just do it, wait 5 mn. ... Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm Words from the author : "This version is indeed different than those contained in F4 or ODE because it is only a direct linux port of version 1.2 of OPCODE, it contains nothing more, nothing less so a user does not have to deal with F4 or ODE. It is also accompanied with a so called configure script which automatically creates a makefile for the user's specific platform. It's just a question of running the configure script and automake and OPCODE is build for your platform (e.g. linux, solaris, irix etc). This is the correct way on unix flavoured oss to spread software." Questions about it ? Ask the author, please. (his mail is in the tar file) > Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff > in the mix) whereas ColDet compiles on just about anything, without > modification. Note that there's a #define to discard the ASM, and the only relevant VC++ stuff, as far as Opcode is concerned, is "__forceinline". Pierre _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From kaffiene at xtra.co.nz Thu Oct 10 13:33:02 2002 From: kaffiene at xtra.co.nz (Peter) Date: Thu Oct 10 13:33:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005B9@ednex504.dsto.defence.gov.au> Message-ID: <007101c2709c$243494b0$5c02a8c0@peter> > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf Of McEvoy, > Nick > Sent: Friday, 13 September 2002 11:49 a.m. > To: 'ode@q12.org' > Subject: [ODE] RE: Wheel rotation problem > > Marco Grubert wrote: > >My observations is that mass of the connected objects has a huge impact > on > >stability. I started out with a 500kg chassis and 15kg wheels. Reducing > this > >to 1/10th of the original value significantly improved the top speed when > >wheel bending occurs. It appears as though the object mass would increase > >with higher speed, pushing the wheels into a /\ shape when driving > straight > >or a // shape when doing a left turn. > > // Chassis > CLength = 0.7f; > CWidth = 0.5f; > CHeight = 0.2f; > CMass = 1.0f; > > // Wheels > WRadius = 0.15f; > WMass = 0.2f; > > Gravity=-5.0f; // yes a strange value but who said my game is on earth :) > > I'll do some more parameter tweaking. :) > > > >I have not yet tried moving the hinge2 > >anchor points around- does that make any difference? > > No I have not tried that idea yet. > > > >I did not notice any difference when setting the finite rotation mode. > >However, the documentation suggests setting the axis every timestep > (which > >you don´t do in the sample code). > > I see that in the doco ... NOW ... missed it before ... so > dBodySetFiniteRotationAxis() should be call each step !? I'll try that > then. > > > >I don´t quite understand how this mode > >operates or why the axis has to be reset. Why should it change during > >iterations ? > > Yes good question (why call each time step) ... I don't understand it > either > ... I'm no physics guru. :-( > > > >How are you adjusting the axes´ angles? I had this problem when only > >querying one wheel, calculating the difference and then applying the same > >value to both joints. Calculating the rate of change independently for > each > >of the two front joints fixed that problem. > > Ahhh your right on this one I think ... I was calculating each wheel > (steering) independently. I'll fix it this weekend. > > // Motor > for (i = 0; i <= 1; i++) > { > dJointSetHinge2Param(mODEJoint[i], dParamVel2, -speed); > dJointSetHinge2Param(mODEJoint[i], dParamFMax2, 0.1); > } > > // Steering - woops this is wrong ... I'll fix it as per your suggestion > !!! > for (i = 0; i <= 1; i++) > { > dReal v = steer - dJointGetHinge2Angle1(mODEJoint[i]); > if (v > 0.1) v = 0.1; > if (v < -0.1) v = -0.1; > v *= 10.0; > dJointSetHinge2Param(mODEJoint[i], dParamVel, v); > dJointSetHinge2Param(mODEJoint[i], dParamFMax, 0.2); > dJointSetHinge2Param(mODEJoint[i], dParamLoStop, -0.75); > dJointSetHinge2Param(mODEJoint[i], dParamHiStop, 0.75); > dJointSetHinge2Param(mODEJoint[i], dParamFudgeFactor, 0.1); > } > Nick, did any of these experiments work? (i.e. get rid of the wheel-bending problem)? Cheers, Peter. From coding at natew.com Thu Oct 10 14:07:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 10 14:07:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: On Thu, 10 Oct 2002, Ian Munro wrote: > My interests actually lie in making physical robots rather than simulations, > but they're a great "what if?" tool. Be careful... That's exactly how I felt when I started planning the software that became Juice. Now I've lost all interest in making something I can touch. :-) I'm really enjoying the discussion of evolved behaviors. In Juice, a creature's movements are basically just sine waves of different phases and amplitudes applied to joints, and feedback loops from a body's orientation to one or more joints. I've been pondering a training feature to try using a GA to adjust the phases, amplitudes, and gains, but haven't actually implemented anything yet. I'm hoping it will smooth out gaits that have been designed by hand. I've come to the conclusion that this method of programming behavior creates creatures that tip over too easily though, so most of my time lately has gone into designing a new behavior programming language. -- Nate Waddoups Redmond WA USA http://www.natew.com From mattias at cambrianlabs.com Thu Oct 10 14:34:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 14:34:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > I'm really enjoying the discussion of evolved behaviors. In Juice, a > creature's movements are basically just sine waves of different phases > and > amplitudes applied to joints, and feedback loops from a body's > orientation > to one or more joints. Check out http://www.ventrella.com/GenePool/gene_pool.html, it's a 2d program that evolves both structure and behaviour - but the behaviour is basically offset, phase and amplitude. LimbAngle = offset + sin(Time + Phase) * Amplitude; Quite similar to what you're describing. Jeffrey's also written several interesting papers about evolving articulated agents. > I've been pondering a training feature to try > using a GA to adjust the phases, amplitudes, and gains, but haven't > actually implemented anything yet. I'm hoping it will smooth out gaits > that have been designed by hand. I'm guessing you could have a GA running in a matter of days. Contact me off the list if you're interested in some ideas on that ;) > I've come to the conclusion that this method of programming behavior > creates creatures that tip over too easily though, so most of my time > lately has gone into designing a new behavior programming language. Your creatures are very complex, GAs could probably do a good job there. cheers, m From anselm at hook.org Thu Oct 10 15:31:02 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 10 15:31:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: > > I've come to the conclusion that this method of programming behavior > > creates creatures that tip over too easily though, so most of my time > > lately has gone into designing a new behavior programming language. This sounds interesting - any links up yet? What kinds of features does your language make it easier to express? - a From dmcclurg at pandemicstudios.com.au Thu Oct 10 17:30:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 10 17:30:02 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: Benny Kramek wrote: >> If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? > One way is to put very large values in the inertia matrix. This will make the body difficult to rotate. you mean like a large mass? > Another, maybe better way, is give your body an inertia of a sphere, how is that done? > and to always have the geom oriented in a fixed orientation. by setting the rotation every frame in the app? or is there another way to constrain orientation? thanks for your help on conveyer/platform questions! From russ at q12.org Thu Oct 10 22:39:01 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 10 22:39:01 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <3DA59188.4080906@kramekweb.com> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> <3DA59188.4080906@kramekweb.com> Message-ID: <20021010224329.65a1dbdd.russ@q12.org> This is a multi-part message in MIME format. --Multipart_Thu__10_Oct_2002_22:43:29_-0400_0839c960 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit > Why don't we add the "real" cylinder class directly into ode? the non-capped cylinder code is a good chunk of work, but i think it's work-in-progress. there are a few current problems, especially with cylinder-cylinder contact. the attached image illustrates the problem - it is possible (in fact rather easy) to put two cylinders into a configuration where the contact point (the blue box) does not even intersect one of the cylinders. this is IMO a big error. having said that, this cylinder work is a great step in the right direction. even with the errors it can be useful for many people. i'll add it to the contrib directory for now. thanks konstantin! to explain why i think this error is a problem: the ODE scheme of contact points/normals/depths is of course just an approximate way of representing contact between two objects. to reduce the approximation error, all the current contact code tries to put the contacts somewhere inside the intersection volume, in positions that will (a) preserve non-penetration and (b) not generate unnecessary body motion (no extra energy allowed!). the cyl-cyl contacts often do not meet these conditions. if you integrate cylinders into the box stacking demo and stack them up you'll see that this error causes them to jitter and pop way more than even the stacked boxes (which themselves jitter because of another well understood reason). i spent a lot of time on the current primitive-primitive collision code to prevent exactly this sort of thing. in some cases, like the capped-cyl-to-box code, i had to go through quite a few different schemes before i got it (hopefully) right. russ. -- Russell Smith http://www.q12.org --Multipart_Thu__10_Oct_2002_22:43:29_-0400_0839c960 Content-Type: application/octet-stream; name="foo4.jpg" Content-Disposition: attachment; filename="foo4.jpg" Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gDtQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEwYSAgUmV2OiAx Mi8yOS85NApDUkVBVE9SOiBYViBWZXJzaW9uIDMuMTBhICBSZXY6IDEyLzI5Lzk0CkNSRUFUT1I6 IFhWIFZlcnNpb24gMy4xMGEgIFJldjogMTIvMjkvOTQKQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEw YSAgUmV2OiAxMi8yOS85NAoKQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEwYSAgUmV2OiAxMi8yOS85 NCAgUXVhbGl0eSA9IDc1LCBTbW9vdGhpbmcgPSAwCv/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsM GRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0N GDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/A ABEIAIEBNgMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAAC AQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZ GiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOU lZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAAB AncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Sl pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEA AhEDEQA/APZr+51GO8dbc4jGMcD0FV1vNUzh2ZffYpH8qNT1RrXUZY/4RjHPsKptrQYcrkezYr0I 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 --Multipart_Thu__10_Oct_2002_22:43:29_-0400_0839c960-- From russ at q12.org Thu Oct 10 23:08:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 10 23:08:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: <20021010231205.1f8bd682.russ@q12.org> > Russel, if you'd like, please add > http://www.cambrianlabs.com/Mattias/DelphiODE/ to the community page? done. russ. -- Russell Smith http://www.q12.org From dmcclurg at pandemicstudios.com.au Thu Oct 10 23:36:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 10 23:36:02 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: Benny Kramek wrote: >> Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? > Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. I created a box geom with a body and dropped a sphere geom with a body on it. There sphere comes to rest on the box while the box moves back and forth (on a sine wave with SetVel) underneath it. But the sphere doesn't move back and forth with the box!! Friction doesn't seem to give the sphere any motion. I tried infinite and 1.0 friction with the same results. contacts[i].surface.mode = dContactBounce; contacts[i].surface.mu = 1.f; //dInfinity; contacts[i].surface.mu2 = 0.f; contacts[i].surface.bounce = 0.5f; contacts[i].surface.bounce_vel = 0.01f; dJointID c = dJointCreateContact(world, contactGroup, &contacts[i]); dJointAttach(c, b1Contact, b2Contact); Any idea why this isn't working? From bongard at ifi.unizh.ch Fri Oct 11 01:18:02 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Fri Oct 11 01:18:02 2002 Subject: [ODE] Evolved behaviours In-Reply-To: Message-ID: As there seems to be quite a bit of discussion about NNs and evolved behaviours on the mailing list these days, I'd like to direct your attention to a physical simulation overlay I developed called MorphEngine (www.ifi.unizh.ch/ailab/people/bongard/MorphEngine/). For those of you in the know, and before you start throwing rotten fruit at me, this overlay uses MathEngine, not ODE, but I've almost finished porting it to ODE, and will post it up when I do. The program runs as an .exe standalone on Windows, but my documentation includes a brief introduction to NNs, GAs and evolved behaviours, and how they relate to the physical simulation of robots. Cheers, Josh On Thu, 10 Oct 2002, Nate W wrote: > On Thu, 10 Oct 2002, Ian Munro wrote: > > > My interests actually lie in making physical robots rather than simulations, > > but they're a great "what if?" tool. > > Be careful... That's exactly how I felt when I started planning the > software that became Juice. Now I've lost all interest in making > something I can touch. :-) > > I'm really enjoying the discussion of evolved behaviors. In Juice, a > creature's movements are basically just sine waves of different phases and > amplitudes applied to joints, and feedback loops from a body's orientation > to one or more joints. I've been pondering a training feature to try > using a GA to adjust the phases, amplitudes, and gains, but haven't > actually implemented anything yet. I'm hoping it will smooth out gaits > that have been designed by hand. > > I've come to the conclusion that this method of programming behavior > creates creatures that tip over too easily though, so most of my time > lately has gone into designing a new behavior programming language. > > -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From slipch Fri Oct 11 06:15:02 2002 From: slipch (slipch) Date: Fri Oct 11 06:15:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <20021010224329.65a1dbdd.russ@q12.org> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> <3DA59188.4080906@kramekweb.com> <20021010224329.65a1dbdd.russ@q12.org> Message-ID: <1279165509.20021011161705@gsc-game.kiev.ua> Hello Russ, Friday, October 11, 2002, 5:43:29 AM, you wrote: I know about this error. It happens when cylinders' edges touches. There is still a warranty that the contact point is near the place where it should be. It was not an error in my eyes I only wanted to reduce calculations. I'll think how to fix it. -- Best regards, Konstantin mailto:slipch@gsc-game.kiev.ua From benny at kramekweb.com Fri Oct 11 06:42:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Fri Oct 11 06:42:02 2002 Subject: [ODE] conveyor belts and moving platforms References: Message-ID: <3DA6DF4A.60903@kramekweb.com> > >>>Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? >>> > >>Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. >> > > I created a box geom with a body and dropped a sphere geom with a body on it. There sphere comes to rest on the box while the box moves back and forth (on a sine wave with SetVel) underneath it. But the sphere doesn't move back and forth with the box!! > > Friction doesn't seem to give the sphere any motion. I tried infinite and 1.0 friction with the same results. > This is a known thing with ode. A ball that is rolling on the ground will never slow down, even if there is friction. Try replacing the sphere with a box. Also, you shouldn't change the velocity of the platform with dBodySetVel(). This is not the correct way to do things. You should only apply forces. If you want to give a body a certain velocity you should use a motor. From p.terdiman at wanadoo.fr Fri Oct 11 06:49:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 11 06:49:02 2002 Subject: [ODE] Community page References: <005f01c2704d$c6915080$0e00000a@pierre> <00bb01c27051$7f8241a0$0e00000a@pierre> Message-ID: <007201c2712c$89469840$0e00000a@pierre> > > I'd love to play with it also, but I'm guessing I'd have to buy the game > > to download it? > > No. > http://www.swissquake.ch/chumbalum-soft/files/KAT_1_2_UT2003_Setup.exe Argh ! I was just told that KAT was *not* free. You were right, you actually have to buy the game indeed, to be able to use it. Sorry.... I thought it was a public link. Needless to say, the file has been removed. You're lucky anyway : UT2003 is a good game so there shouldn't be any reason not to buy it :) (Hey, I'm kidding) Pierre From max.lungarella at aist.go.jp Fri Oct 11 10:46:01 2002 From: max.lungarella at aist.go.jp (Max Lungarella) Date: Fri Oct 11 10:46:01 2002 Subject: [ODE] robotic simulation Message-ID: <3DA70D4E.725824C6@aist.go.jp> hi there, "dynamechs" is a dynamics engine, mainly intended for robotics simulation (http://dynamechs.sourceforge.net/). recently i've given it a try, and although i appreciate very much it's speed, i have the impression, that it's rather hard to construct complex structures - like robots. is there anything that would prevent the use of ODE for the same purpose? i.e., robotic simulation? is there anybody that has tried to do a quantitative comparison between different physics engines, in terms of accuracy, which is kind of important in this case? or does anybody have interesting pointers to relevant literature? thank you very much in advance!! cheers, max -- Max Lungarella Neuroscience Research Institute Tsukuba AIST Central 2 Umezono 1-1-1, Tsukuba 305-8568 Japan Tel +81-298-615369 Fax +81-298-615841 http://www.lungarella.com/max/ From wristy_j at yahoo.com Fri Oct 11 12:06:01 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Fri Oct 11 12:06:01 2002 Subject: [ODE] Old Cholesky factorization code Message-ID: <20021011190523.22176.qmail@web40810.mail.yahoo.com> Greetings, In the code where the Dantzig LCP solver takes over (after the A matrix and rhs vector have been determined), I noticed that there is a commented call to a Cholesky factorizor and solver. In block-matrix form (where each entry is a matrix of the form J*InvM*Jt), I realize that the A matrix is block-symmetric, BUT, I was wondering... Are the diagonal entries of the block A matrix themselves actually symmetric (J*InvM*Jt) even after the body has undergone rotations, making the inverse inertia tensor non-symmetric? If not, the Cholesky decomp wouldn't work, correct? In other words, did the Cholesky decomp ever work properly for A? Or was it just ditched to incorporate LCP constrains (contacts with friction)? Thanks! J __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From mfdubois at club-internet.fr Fri Oct 11 12:25:02 2002 From: mfdubois at club-internet.fr (Michel DUBOIS) Date: Fri Oct 11 12:25:02 2002 Subject: [ODE] Problem with AngularMortor and BallAndSocket Message-ID: <84CB8473VQPNRP42MH96PO43QOECWSI.3da7258c@MD_PC_02> Hello, I am a newbie in ODE and C++. First I developed a simulator in Java3d with threads and now I am porting it in ODE/Drawstuff to have physics. My project is to simulate a mobile robot named an atom who can be composed with identical robot to become a molecul. An atom is mainly a body (a square box) with 6 legs (left, right, top,bottom, front and rear).A leg can rotate with 2 axis. A leg can be attached with the leg of an other atom. A molecul is one atom or more than one atom. In ODE, an atom is a box with 6 legs. A leg is 2 boxes (or cylinders ..) with a slider. I think, a BallAndSocket joint with angular motor joint can attach the body with a leg. But I afraid, I don't understand the angular motor in user mode. First the stop limit seems not to be effective. And the axis seems to be relative to the gobal frame not to the body. When the body rotate, the legs seems to rotate with a strange maner. I think i have the same problem than Tim Schmidt in july. The rotations behave as if the axes are anchored to the global frame, whatever the orientation of the first body looks like. May be someone have a solution to my problems ? Michel DUBOIS From Sean at Blackscreen.org Fri Oct 11 12:31:02 2002 From: Sean at Blackscreen.org (Sean S Cullen) Date: Fri Oct 11 12:31:02 2002 Subject: [ODE] Box Box Algorithm Message-ID: <45177.24.91.219.122.1034364764.squirrel@mail.blackscreen.org> I thought I remembered someone implementing a version of dBoxBox that will compute more than a single collision point. Is there any chance of getting that put into CVS? From coding at natew.com Fri Oct 11 13:21:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 11 13:21:02 2002 Subject: [ODE] robotic simulation In-Reply-To: <3DA70D4E.725824C6@aist.go.jp> Message-ID: On Sat, 12 Oct 2002, Max Lungarella wrote: > "dynamechs" is a dynamics engine, mainly intended for robotics > simulation (http://dynamechs.sourceforge.net/). recently i've given it > a try, and although i appreciate very much it's speed, i have the > impression, that it's rather hard to construct complex structures - > like robots. When I set out to write a robot simulator (see http://www.natew.com/juice), I looked at both Dynamechs and ODE, and chose ODE for the reason you describe above. In retrospect, I think that Dynamechs would probably only be slightly more difficult to work with. Using ODE, you can created bodies and joints and connect them arbitrarily and everything just works. With Dynamechs, my understanding is that any closed loops need to be handled as special cases. In retrospect, I think that would probably be almost trivial to deal with. If you think of the structure as a graph, where bodies are nodes and joints are edges, you would just create the Dynamechs objects by traversing the graph, and when you find a cycle in the graph (easily detectable), you create one of Dynamechs' "secondary" joints. >From an application-development point of view, ODE allows you to create ODE's joints objects without worrying about closed loops; Dynamechs would require you to examine the topology of the structure you're creating before you create the joints objects. > is there anything that would prevent the use of ODE for the same > purpose? i.e., robotic simulation? How detailed do you want the simulation to be? I was looking for a high-level sort of simulation, treating motors and drivetrains as black boxes and just looking at the overall structure of the robot and its control system, and I'm very happy with ODE's performance in this case. -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Sat Oct 12 12:16:01 2002 From: russ at q12.org (Russ Smith) Date: Sat Oct 12 12:16:01 2002 Subject: [ODE] Old Cholesky factorization code In-Reply-To: <20021011190523.22176.qmail@web40810.mail.yahoo.com> References: <20021011190523.22176.qmail@web40810.mail.yahoo.com> Message-ID: <20021012121947.20fed8dc.russ@q12.org> > In block-matrix > form (where each entry is a matrix of the form > J*InvM*Jt), I realize that the A matrix is > block-symmetric, BUT, I was wondering... Are the > diagonal entries of the block A matrix themselves > actually symmetric yes: A = J*inv(M)*J' A' = (J*inv(M)*J')' = (J')' * inv(M)' * J' = J*inv(M)'*J' each 6x6 block of M contains a diagonal 3x3 matrix (the mass) and a 3x3 transformed inertia tensor I*. I* = R*I*R' I*' = R*I'*R' I (the inertia tensor) is symmetric, so I* is symmetric, so M is symmetric, so A is symmetric. > In other words, did the Cholesky decomp ever work > properly for A? Or was it just ditched to incorporate > LCP constrains (contacts with friction)? cholesky is not used, i use the L*D*L' factorization instead - but this also needs a symmetric matrix. the LDLT factorization is used on the sub-matrix of A that does not have LCP constraints, then LCP is used incrementally on the rest. russ. -- Russell Smith http://www.q12.org From nathan at whatever.net Sat Oct 12 19:10:02 2002 From: nathan at whatever.net (Nate Waddoups) Date: Sat Oct 12 19:10:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: On Thu, 10 Oct 2002, Anselm Hook wrote: > > > I've come to the conclusion that this method of programming behavior > > > creates creatures that tip over too easily though, so most of my time > > > lately has gone into designing a new behavior programming language. > > This sounds interesting - any links up yet? What kinds of features does > your language make it easier to express? No links yet, just some sketches on paper right now. The main problem with the current language is that it allows you to design one behavior, and it will behave according to that "script" no matter what. If the critter falls over, it thrashes about like a fallen wind-up toy (only worse because wind-up toys don't usually have attitude sensors that suffer from gimbal lock). I put script in quotes because the behavior is specified as a directed graph, but it gets compiled down to a script-like sequence of instructions. Anyhow, there's two main features I have in mind for the next version: The main thing is that each behavior will be paired with a "context" function, yielding a value from 0 to 1. The context for a walking behavior might be a relatively upright torso, the hips higher than the feet, and so on. The outputs of the script will be multiplied by the context value. Under the appropriate conditions, the behavior script runs as usual; if the critter is standing on its head, the "walk" script has no effect; if it's leaning heavily to one side, it will only try to take small steps forward (meanwhile, the context is right for a "stand up straight" behavior to take effect...). Second, I want to be able to coordinate a whole bunch of behaviors. This is the part I'm still thinking through. The "context idea addresses part of the problem, particularly at the scale of motor control. But big decisions like "walk, run or crawl?" or "chase or flee?" have me looking for ways to create a hierarchy of behaviors, or fuzzy cognitive maps, or a subsumption approach. I have a bunch of ideas here... part of the problem is I'm not sure which to try first and I'm trying to think of a grand scheme that uses all of them - and yet, is still easy to work with. Mostly I think I need to do more reading. Meanwhile I want to revise my document object model a bit so I can implement undo/redo more easily, and integrate Novodex physics and CD, and create a network interface to Juice so I can implement the new behavior (and editor) as a separate application... and, and, and. So many ideas, so little time. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From max.lungarella at aist.go.jp Sat Oct 12 21:03:01 2002 From: max.lungarella at aist.go.jp (Max Lungarella) Date: Sat Oct 12 21:03:01 2002 Subject: [ODE] robotic simulation References: Message-ID: <3DA8EF87.778199E3@aist.go.jp> hi there, thanks for replying. > When I set out to write a robot simulator (see > http://www.natew.com/juice), i tried "juice", it's pretty cool, and well designed. the only problem that i have with it, is that i cannot export the models i realize. in other words, it would be neat if i could construct something using juice, and be able to import this something in one of my own programs. do you have plans do add similar feature? > Using ODE, you can created bodies and joints and connect them arbitrarily > and everything just works. With Dynamechs, my understanding is that any > closed loops need to be handled as special cases. In retrospect, I think > that would probably be almost trivial to deal with. If you think of the > structure as a graph, where bodies are nodes and joints are edges, you > would just create the Dynamechs objects by traversing the graph, and when > you find a cycle in the graph (easily detectable), you create one of > Dynamechs' "secondary" joints. yep. the only problem, that i have with this approach, is that almost the whole body is some sort of special case - read "hack" - and therefore less intuitive to design. i tried to use dynamechs and i still don't grasp it completely. ode is so easy to use and also aesthetically more pleasant ;) > How detailed do you want the simulation to be? my plan is to simulate a humanoid robot with a reduced number of degrees of freedom, let's say 10. the simulation would have to be fairly accurate, since i'd like to develop the control architecture in software and use this very architecture for the control of a real robot in a second time step. the modeling of the motors does not worry me as much as the modeling of the ground reaction forces, since the feet of my biped robot are not hard, but kind of soft and deformable. cheers, max -- Max Lungarella Neuroscience Research Institute Tsukuba AIST Central 2 Umezono 1-1-1, Tsukuba 305-8568 Japan Tel +81-298-615369 Fax +81-298-615841 http://www.lungarella.com/max/ From johnb003 at hotmail.com Sun Oct 13 00:19:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 00:19:02 2002 Subject: [ODE] Slightly More Complex Car Shocks Simulation Message-ID: I am working on a racing game and to start with I made a hovercraft to avoid using joints and figuring out what works and what doesn't, but now I am working on my rc10 and I've got some problems. Here is the page for my game, I've got a picture of the vehicle on the 'home page': http://web.csuchico.edu/~jb393/urgent Ok so my problem is that I have a few more moving parts than the standard buggy problem. The top red axel thing I am treating as the same body as the carbody, the moving parts are, the wheel, the spring/shock, and the lower axel. So it's really just a puzzle of how to put it together. Let me ask this first, there will likely be a lot of torque and quick movements since the masses are so small, being an remote controlled car, so would it be better to use fewest joints (like one hinge2 joint) and set the other positions manually and rotations manually based on the position of the wheel and body, or maybe add extra joints to add support. For example, with a large mass ratio like that of my lower axel and the carbody, if I use a regular hinge with some axis and apply a force along the same axis but translated out to add leverage, would that hinge want to break. An analogy would be hanging on a cupboard cabinet with all of your weight. Instead of using a hinge then, you could construct a seemingly more stable structure by making a triangle with ball joints, like this where F is the force and y is the vertical axis: |O | \ | \ y O | / ^ | / |F |O | Something I didn't mention, since I was trying to keep things simple is that I made a scripting interface to the physics that corresponds to a 3ds file. This means any kind of hack like setting the position of the shock based on the wheel, I would like to avoid so the scripts can correspond to the existing physics. If it truly is the best solution, I could add my own special kind of joints, I suppose, and make them available for the scripts. The method of connecting the bodies I've been experimenting is as follows: wheel->hinge2joint->shock, shock->sliderjoint(vertical axis)->carbody just this has a lot of error; the shock->sliderjoint->carbody doesn't maintain it's orientation with the carbody (it falls off it's axis) then for the bottom axel I needed a joint that only restricts 2 positional degrees of freedom, it's a combo of a balljoint and a slider... looks like this X====|----O it's kind of a "look at" joint. I would just make fake bodies, and by that I just mean bodies that don't have any corresponding model to draw, or no physical matter but I was scared to use 0 for a mass so they just have very small masses. Ok this post is getting long, I'll leave it at that. _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From johnb003 at hotmail.com Sun Oct 13 07:53:01 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 07:53:01 2002 Subject: [ODE] Springs Message-ID: If I want a shock between two bodies, would it be more efficient to use calculate the simple spring physics and apply direct forces to the bodies, or create some kind of joint and use CFM and ERP to make it soft? Also can someone clarify for me a bit more about ERP and CFM. What values make them behave which way and what purpose do they serve for ode exactly? Thanks, John Butterfield _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From jeffreyweber at hotmail.com Sun Oct 13 12:45:02 2002 From: jeffreyweber at hotmail.com (Jeff Weber) Date: Sun Oct 13 12:45:02 2002 Subject: [ODE] Springs Message-ID: I believe all that info is in the ode document. somewhere it explains how to use cfm and erp to mimick spring. ----Original Messa ge Follows---- From: "John Butterfield" To: ode@q12.org Subject: [ODE] Springs Date: Sun, 13 Oct 2002 07:52:48 -0700 If I want a shock between two bodies, would it be more efficient to use calculate the simple spring physics and apply direct forces to the bodies, or create some kind of joint and use CFM and ERP to make it soft? Also can someone clarify for me a bit more about ERP and CFM. What values make them behave which way and what purpose do they serve for ode exactly? Thanks, John Butterfield _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/od _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From martin at metahuman.org Sun Oct 13 13:17:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Sun Oct 13 13:17:02 2002 Subject: [ODE] Springs References: Message-ID: <3DA9D499.726503D7@metahuman.org> Hey John, I think the best test is, will the spring force change significantly in one time step? If so, you'd probably be better off with a constraint (i.e. a joint). If not, applying a force/torque using simple spring physics is probably better. John Butterfield wrote: > > Also can someone clarify for me a bit more about ERP and CFM. What values > make them behave which way and what purpose do they serve for ode exactly? That's answered in the ODE docs. It even tells you how to convert ERP and CFM values to spring parameters and back. - Martin From johnb003 at hotmail.com Sun Oct 13 20:42:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 20:42:02 2002 Subject: [ODE] Hinge Forces Message-ID: I drew a picture to help illustrate my problem: http://web.csuchico.edu/~jb393/urgent/images/hingeforce.gif If I apply force F to body m2, and it has one hinge joint to m1, will there be a much larger error than if I make another joint like in the picture? Is it better to represent the dynamics as simple as I can, or with a more structurally sound design? _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From russ at q12.org Sun Oct 13 21:18:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 13 21:18:01 2002 Subject: [ODE] Hinge Forces In-Reply-To: References: Message-ID: <20021013212244.21c5a8f6.russ@q12.org> > If I apply force F to body m2, and it has one hinge joint to m1, will > there be a much larger error than if I make another joint like in the > picture? the answer is that the configuration on the left is the correct one. one hinge joint is all you need to resist *any* amount of force that tries to push the hinge out of alignment. ODE does not model the breakable hinges that you buy from the hardware store, it models ones that are infinitely strong. having said this, from time to time you may see joints come slightly out of alignment, but this error usually has nothing to do with the forces that are applied to them. reasons for error might be: * the rotation of the joined bodies per timestep is large. * CFM is too high (this will give you "spongy" joints). * there is numerical error caused by redundant constraints. the configuration on the right side of your picture falls into this last category - you have two joints trying to do the same job (i.e. trying to limit the same degree of freedom) so this can cause numerical error (especially if CFM is small) and totally ruin the simulation. > Is it better to represent the dynamics as simple as I can, or with... as in most things, keeping it simple is best. but, as in most things, figuring out what the simple solution is can by tricky. russ. -- Russell Smith http://www.q12.org From johnb003 at hotmail.com Mon Oct 14 00:17:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 00:17:02 2002 Subject: [ODE] timestep Message-ID: Is there any harm in using variable times for the worldstep? I'd like to make things based on time not framerate and if I must use a constant time interval it seems like I'd have to use mutliple threads which would then cause the need for symaphores and it gets ugly from there. If I do a loop each frame for the amount of time that has passed, then I have large errors since the time passed could be like 1.5 times the time step. I just thought of an idea of truncating and adding the remainder to the next frame. But then I can imagine it being jerky. The best solution I can think of would be if I could just use variable time steps. _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From Tomas.Sakalauskas at axel-group.com Mon Oct 14 02:50:02 2002 From: Tomas.Sakalauskas at axel-group.com (Tomas Sakalauskas) Date: Mon Oct 14 02:50:02 2002 Subject: [ODE] timestep Message-ID: Each frame I tried to make as much complete steps as possible and then in the end perfom step equal to remaining time. I got problems when very small time steps were remaining. Then I added the time to next frame and used fixed timesteps, but either precision was not good enough or I had to use small timesteps, but then it consumed too much CPU. Variable timesteps seem to be ok if the variation is relatively small (or actually if minimal timesteps do not get close to 0). For this I have two timesteps defined - normal and minimal. Each frame I try to make as much normal steps as possible, if remaining time is more than minimal, I perform timestep equal to remaining time, otherwise I add the remainder to next frame. This way I can control both CPU consumption and precision of simulation - time error gets no bigger than minimal step. Writing this message, came up with the following strategy: - let T be the time needed to simulate. - calculate how many full steps you can perform this frame - N, - perform N timesteps lasting T/N, if N=0 and T is too small, just add it to next frame. This way timestep varies a little (but gets no more than DESIRED_STEP*2), and you get small time error only in the case that framerate is faster than minimal timestep you allow. If you' make N+1 steps lasting T/(N+1) instead, you will get range (DESIRED_STEP/2, DESIRED_STEP]. Hope that helps, Tomas -----Original Message----- From: John Butterfield [mailto:johnb003@hotmail.com] Sent: Monday, October 14, 2002 9:17 AM To: ode@q12.org Subject: [ODE] timestep Is there any harm in using variable times for the worldstep? I'd like to make things based on time not framerate and if I must use a constant time interval it seems like I'd have to use mutliple threads which would then cause the need for symaphores and it gets ugly from there. If I do a loop each frame for the amount of time that has passed, then I have large errors since the time passed could be like 1.5 times the time step. I just thought of an idea of truncating and adding the remainder to the next frame. But then I can imagine it being jerky. The best solution I can think of would be if I could just use variable time steps. _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Mon Oct 14 09:54:01 2002 From: coding at natew.com (Nate W) Date: Mon Oct 14 09:54:01 2002 Subject: [ODE] timestep In-Reply-To: Message-ID: On Mon, 14 Oct 2002, John Butterfield wrote: > Is there any harm in using variable times for the worldstep? I use variable timesteps in Juice, and it works fine. The interval between calls to dWorldStep depends on the time it took to call dWorldStep and re-draw the scene. Simple scenes get fast frame rates, complex structures with lots of joints get lower frame rates, and really really complex situations get really low frame rates and they start to act funny. I'm not aware of a really graceful way to handle running out of CPU power though. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Mon Oct 14 10:54:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 14 10:54:02 2002 Subject: [ODE] timestep In-Reply-To: Message-ID: > Is there any harm in using variable times for the worldstep? in theory there shouldn't be, in practice there is one small problem. if you take a small step then follow it by a much larger step then then any error-correcting velocity that was applied to the bodies in the first step will be extrapolated into a much larger velocity in the second step, potentially causing bodies to 'pop' away from each other. this problem has been on my list of things to fix for a while - i have a fix that should work well but will take time to implement (the underlying cause of the problem is rather subtle). russ. -- Russ Smith http://www.q12.org/ From ps_yumemi at yahoo.com Mon Oct 14 11:21:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 14 11:21:02 2002 Subject: [ODE] networking Message-ID: <20021014182023.92351.qmail@web40508.mail.yahoo.com> hello, i have a problem networking my ode robot simulator program. the program shows robots from different computers but they do not collide with each other. instead they go through each other. i created both of them using the same functions but they don't seem see each other. what could be wrong with my program? is it nearcallback or some other function? thanks pia __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From coding at natew.com Mon Oct 14 15:47:02 2002 From: coding at natew.com (Nate W) Date: Mon Oct 14 15:47:02 2002 Subject: [ODE] networking In-Reply-To: <20021014182023.92351.qmail@web40508.mail.yahoo.com> Message-ID: On Mon, 14 Oct 2002, pia dalusong wrote: > i have a problem networking my ode robot simulator > program. the program shows robots from different > computers but they do not collide with each other. Are geom objects being created and sized and positioned correctly for all of the bodies? Are all of the geom objects in the same space? When I was having trouble with collisions, I found it helpful to dump the names of each object at the very start of my collision callback. If you're not using the user-data pointer, set it to a char pointer with the object's name. If you are using the user-data pointer to point to an object of a class that you've defined, add a 'name' member to that class. This makes all kinds of debugging easier, IME. Also, out of curiousity, how are you doing the networking? Does all of the simulation take place on a server, or do the clients do some of the simulation math? I've been pondering a networked application using ODE for a while and I'm looking for ideas. I also thought it might be cool to create a simple networking 'contrib' for ODE, since interactive networked simulations could be used to do all kinds of fun stuff. It's an interesting distributed-computing problem, though. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From johnb003 at hotmail.com Mon Oct 14 19:35:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 19:35:02 2002 Subject: [ODE] networking Message-ID: >Also, out of curiousity, how are you doing the networking? Does all of >the simulation take place on a server, or do the clients do some of the >simulation math? I've been pondering a networked application using ODE >for a while and I'm looking for ideas. I have not actually implemented my netcode but I thoroughly thought about it and decided on how I'm going to do it. There are several trades offs I could see from server-side to client-side and who tells who what collisions happen. Thought the implementation you use is dependent on what your program is modeling. I am doing a remote-controlled racing game, but not like revolt... if you're curious just check out my page: http://web.csuchico.edu/~jb393/urgent I started thinking about client-side physics, but being a racing game it could be really weird. Here is an example: Your actual position is about a car's distance behind the other player... Through lag though, the other player seems right next to you. If you were to ram that car, then tell the server hey I hit him, and then the sever relay that to the the other player and bounce him away from you, you'd think it was perfectly legitimate. Now from the prospective of the car in front of you. That player sees you even further back than you really are, (like 2 car distances) so then he sees you move to the side and out of no where he gets bumped off course... Ok so this method obviously has it's flaws for a racing game but for a first person shooter or something, it would be necessary so that you could shoot AT the player... not in front of them. The other main method is to do things server side, the question then becomes how much to do on the server and how much to do on the client-side. Lets say you did everything server-side... this would be the absolute most accurate if you told the server I am turning left and it turned you left and then sent back the positions of you and the other players but then you have lagged controls and no one likes that. If you only plan on playing this on a lan, maybe the lag is not an issue for you and this method is best. The method I plan on using for my racing game is a hybrid of the two. I will keep track of the vehicles on the server and do collision detection (I have more to say about this... possibly in my next post) there between the vehicles. I however do the controls for my vehicle on the client and send the server information about my position rotation etc... depending on how accurate you might just send the information about the vehicle or model whatever in whole and have the server guess what orientation the bodies have. For example the rotation of the wheels and the locations of the shocks and all that or just the vehicle altogether... Anyway with this method, one might have to predict a bit or aim in front of the other car slightly to make the collision on the server happen... I'll attempt to fix this by trying to show how the car might look after this much time and then use some kind of frame to frame dampening to move the car from where I projected it to be to where the next packet says it is. I hope this was thought provoking, -John Butterfield _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From jeffreyweber at hotmail.com Mon Oct 14 20:23:01 2002 From: jeffreyweber at hotmail.com (Jeff Weber) Date: Mon Oct 14 20:23:01 2002 Subject: [ODE] fastcar vs. ode Message-ID: I apologize if this has been asked previously, but I'm currently researching different physics engines for simulating vehicles. Does anyone have any experience with "fastcar" http://www.oxforddynamics.co.uk/ How does it compare to ode? _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From nick.mcevoy at dsto.defence.gov.au Mon Oct 14 21:17:02 2002 From: nick.mcevoy at dsto.defence.gov.au (McEvoy, Nick) Date: Mon Oct 14 21:17:02 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <108E7D907871D6118B5000306E0189F82005EA@ednex504.dsto.defence.gov.au> Peter wrote: >Nick, did any of these experiments work? (i.e. get rid of the >wheel-bending problem)? No I have not yet been able to rid myself of the wheel-bending problem as you turn corners at high speed (I noticed the buggy_demo has the same 'subtle feature'). I tried (each sim step)... - dBodySetFiniteRotationMode() - dBodySetFiniteRotationAxis() It reduced the problem but did not remove it completely. I tried different combinations of contact values ERP, CFM & slip, also gravity, I have not yet try different wheel/body mass & geoms. All my changes either increased or reduced bendy wheels but did not remove it. The problem is that bendy wheels make my 'car' impossible to control ... it looks like someone attached the wheels with a rubber band ... hilarious fun if thats the sort of game I was trying to write ! :) (russ/ode_users?) Why is it not possible to totally stop the hinge2 'axles' becoming 'bent' ? Nick From p.terdiman at wanadoo.fr Mon Oct 14 21:29:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 14 21:29:01 2002 Subject: [ODE] fastcar vs. ode References: Message-ID: <03cf01c27403$1f2d94c0$0e00000a@pierre> > I apologize if this has been asked previously, but I'm currently researching > different physics engines for simulating vehicles. Does anyone have any > experience with "fastcar" http://www.oxforddynamics.co.uk/ > > How does it compare to ode? FastCar uses penalty methods, so I'd say it's faster, but not as stable. (No, I've never used it.) Pierre From Nguyen Binh Mon Oct 14 22:05:01 2002 From: Nguyen Binh (Nguyen Binh) Date: Mon Oct 14 22:05:01 2002 Subject: [ODE] fastcar vs. ode In-Reply-To: References: Message-ID: <1102252288.20021015120049@glassegg.com> JW> I apologize if this has been asked previously, but I'm currently researching JW> different physics engines for simulating vehicles. Does anyone have any JW> experience with "fastcar" http://www.oxforddynamics.co.uk/ JW> How does it compare to ode? FastCar is specialized for vehicle. ODE is generic physics package. So say, for vehicle physics FastCar "maybe" better. But we shouldn't compare a 20.000 bulks package with a free open source one... And more, technically ,as far as I know , Fastcar use penalty method so it may be fast but not stable. -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From johnb003 at hotmail.com Mon Oct 14 22:35:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 22:35:02 2002 Subject: [ODE] Collision Detection - Quick Question About ODE Internals Message-ID: struct dContactGeom { dVector3 pos; // contact position dVector3 normal; // normal vector dReal depth; // penetration depth dGeomID g1,g2; // the colliding geoms }; Does ODE need the dGeomID's when doing the dynamics? For example, if I use alternate collision detection, do I have to use geoms? _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From ps_yumemi at yahoo.com Mon Oct 14 22:50:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 14 22:50:01 2002 Subject: [ODE] networking In-Reply-To: Message-ID: <20021015054936.58434.qmail@web40512.mail.yahoo.com> Someone pointed out to me that my question was a little vague so i'll try to make my program clearer. I have a robot simulator program that can connect to other simulations using directx8 directplay using a peer to peer connection. I connect through a LAN connection and I'm doing this so I can simulate two robots at the same time in the same environment even if the specs for the two robots are not in the same computer. It's my thesis project so I can graduate in college. I just send the speed and direction of the robot in my pc to the other computer and vice versa. i created both mobots so they all have corresponding dBodyIDs and dGeomIDs. I guess I'm just worried coz the only things i considered in the nearcallback function are the sensors. and yes we were planning to distribute this program as an open source program after i finish it. any comments or suggesions are welcome. thanks > __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From russ at q12.org Mon Oct 14 23:19:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 14 23:19:02 2002 Subject: [ODE] Collision Detection - Quick Question About ODE Internals In-Reply-To: References: Message-ID: <20021014232322.0ea0ba61.russ@q12.org> > Does ODE need the dGeomID's when doing the dynamics? For example, if I > use alternate collision detection, do I have to use geoms? the geom IDs (g1 and g2) are in the contact structure because you may pass groups to dCollide and then get returned a list of contacts between (potentially) many different bodies. in this case your code would have to examine each g1,g2 and e.g. figure out which body it's for, create the contact joint on that body, etc. if you're using another collision package that doesn't have this feature, you just set g1,g2 to 0 (or don't set them at all) and remember not to use them in your code. russ. -- Russell Smith http://www.q12.org From kaffiene at xtra.co.nz Tue Oct 15 14:33:02 2002 From: kaffiene at xtra.co.nz (Peter) Date: Tue Oct 15 14:33:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005EA@ednex504.dsto.defence.gov.au> Message-ID: <008601c27492$2ed71510$5c02a8c0@peter> > Peter wrote: > > >Nick, did any of these experiments work? (i.e. get rid of the > >wheel-bending problem)? > > No I have not yet been able to rid myself of the wheel-bending problem as > you turn corners at high speed (I noticed the buggy_demo has the same > 'subtle feature'). > > I tried (each sim step)... > - dBodySetFiniteRotationMode() > - dBodySetFiniteRotationAxis() > > It reduced the problem but did not remove it completely. > > I tried different combinations of contact values ERP, CFM & slip, also > gravity, I have not yet try different wheel/body mass & geoms. All my > changes either increased or reduced bendy wheels but did not remove it. > > The problem is that bendy wheels make my 'car' impossible to control ... > it looks like someone attached the wheels with a rubber band ... hilarious > fun if thats the sort of game I was trying to write ! :) That was pretty much exactly the results I got - this problem has completely killed my ODE project. > (russ/ode_users?) Why is it not possible to totally stop the hinge2 > 'axles' becoming 'bent' ? The question has been asked a lot of times, but it seems the only people who ever discuss it are people (like me) who want to use ODE, but don't know enough physics to fix it (sheesh! I find comprehending ODE hard enough for my little brain!) But it *would* be nice if Russ or someone else equally en-clued could chime in? Cheers, Peter. From Brad at fie.us Tue Oct 15 16:10:02 2002 From: Brad at fie.us (Brad Friedman) Date: Tue Oct 15 16:10:02 2002 Subject: [ODE] VStudioNet Message-ID: <3DACA09A.50505@fie.us> Hello. I just joined this list just now. So if this has already been gone over, please excuse my ignorance. I grabbed the release of ODE 0.3 and went about trying to get it to load in Visual Studio .net. I found the project files in the contrib directory of the web-based CVS useful. However, I did encounter a problem, and I did solve it. It might be worth updating the project files. When I changed the preprocessor directive from dDOUBLE to dSINGLE, it stopped compiling correctly. A little work brought me to a section of code regarding HUGE_VAL and HUGE_VALF. I then relized the project file did not have a "MSVC" preprocessor directive and therefore was trying to compile incorrectly. I realize the VS projects were in the contrib directory for a reason. However, its probably worth updating them to have the "MSVC" preprocessor directive by default. Thanks. -Brad Friedman From russ at q12.org Tue Oct 15 16:32:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 15 16:32:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <008601c27492$2ed71510$5c02a8c0@peter> Message-ID: > > (russ/ode_users?) Why is it not possible to totally stop the hinge2 > > 'axles' becoming 'bent' ? well, anything is possible :) the question is, why does it happen in the first place. here's the answer: ODE stores the position and orientation of each body independently. if there is any error in the integration step then it is possible for the bodies to be in positions/orientations where the joints do not line up properly (i call this 'joint error', it is the same thing as the wheels getting bent in hinge2). there are many sources of joint error, but the surest way to introduce error is to have two or more jointed bodies that are rotating very fast with respect to each other. this is because the physics model and the integrator use certain linear assumptions about the way that bodies will move during a time step - if the bodies are rotating so fast that the new configuration at the end of the step is completely different, then these linear assumptions are just plain wrong (and the bodies will not be moved to the correct places). this is a problem that afflicts all 'cartesian coordinate' or 'lagrange multiplier based' simulators. reduced coordinate simulators like dynamecth dont have this problem (for the bodies along the main tree), because the coordinate system they use simply doesn't allow for the possibility that the bodies will not be aligned correctly (the same problem will occurr when you close any loops however). ODE has a partial fix for this problem, which is the dBodySetFiniteRotationAxis() function and friends. but note that this is an exercise in error reduction, not error elimination - it will increase the speed at which a vechicle can be reliably made to move. for *very* fast moving vehicles where the wheels rotate a large proportion of one cycle per timestep, completely eliminating the error is going to require a lot of fiddling. another approach for simulating wheels is to 'fake them' or 'raycast them' - these approaches are effective for computer games, because the difference between 'perfect physics' and 'physics that is completely wrong' is not generally noticeable to the player (or even to an experienced physicist). the only caveat here is that with increasing physical realism comes the chance for better emergent (and/or synergistic) behavior coming out of the simulation. you have to be careful that you are not faking so much that your resulting behavior is little better than hard-coded animation. will ODE support these methods in the future? it's possible. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Tue Oct 15 19:18:02 2002 From: coding at natew.com (Nate W) Date: Tue Oct 15 19:18:02 2002 Subject: [ODE] VStudioNet In-Reply-To: <3DACA09A.50505@fie.us> Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --1363170581-1485151701-1034706356=:21665 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 15 Oct 2002, Brad Friedman wrote: > When I changed the preprocessor directive from dDOUBLE to dSINGLE, it > stopped compiling correctly. A little work brought me to a section of > code regarding HUGE_VAL and HUGE_VALF. I then relized the project file > did not have a "MSVC" preprocessor directive and therefore was trying to > compile incorrectly. That would be my mistake. I was using dDOUBLE until I started using the tri-collider extension, and after I found the MSVC problem with the TC project, I neglected to also fix it in the non-TC project file. I've attached a .vcproj file that takes care of this. Russ, could you add it to the CVS, under contrib/MSVC7/ode_default, replacing the existing file? Thanks, guys. -- Nate Waddoups Redmond WA USA http://www.natew.com --1363170581-1485151701-1034706356=:21665 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="default.vcproj" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="default.vcproj" PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZyA9ICJXaW5kb3dzLTEyNTIi Pz4NDQo8VmlzdWFsU3R1ZGlvUHJvamVjdA0NCglQcm9qZWN0VHlwZT0iVmlz dWFsIEMrKyINDQoJVmVyc2lvbj0iNy4wMCINDQoJTmFtZT0ib2RlX2RlZmF1 bHQiDQ0KCVByb2plY3RHVUlEPSJ7MUJGNzVGRUItODdERC00ODZDLTg4MEIt MjI3OTg3RDE5MUMyfSINDQoJS2V5d29yZD0iQXRsUHJvaiI+DQ0KCTxQbGF0 Zm9ybXM+DQ0KCQk8UGxhdGZvcm0NDQoJCQlOYW1lPSJXaW4zMiIvPg0NCgk8 L1BsYXRmb3Jtcz4NDQoJPENvbmZpZ3VyYXRpb25zPg0NCgkJPENvbmZpZ3Vy YXRpb24NDQoJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINDQoJCQlPdXRwdXREaXJl Y3Rvcnk9IkRlYnVnIg0NCgkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iRGVi dWciDQ0KCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQ0KCQkJVXNlT2ZBVEw9 IjEiDQ0KCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZB TFNFIg0NCgkJCUNoYXJhY3RlclNldD0iMiI+DQ0KCQkJPFRvb2wNDQoJCQkJ TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINDQoJCQkJT3B0aW1pemF0aW9uPSIw Ig0NCgkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8u Li9pbmNsdWRlIg0NCgkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lO MzI7X1dJTkRPV1M7X0RFQlVHO19VU1JETEw7ZERPVUJMRTtNU1ZDIg0NCgkJ CQlNaW5pbWFsUmVidWlsZD0iVFJVRSINDQoJCQkJQmFzaWNSdW50aW1lQ2hl Y2tzPSIzIg0NCgkJCQlSdW50aW1lTGlicmFyeT0iMyINDQoJCQkJVXNlUHJl Y29tcGlsZWRIZWFkZXI9IjAiDQ0KCQkJCVdhcm5pbmdMZXZlbD0iMyINDQoJ CQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSINDQoJ CQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPg0NCgkJCTxUb29sDQ0K CQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNMaW5rZXJUb29sIg0NCgkJCQlJZ25vcmVJbXBvcnRMaWJy YXJ5PSJUUlVFIg0NCgkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvb2RlLmRs bCINDQoJCQkJTGlua0luY3JlbWVudGFsPSIyIg0NCgkJCQlNb2R1bGVEZWZp bml0aW9uRmlsZT0iLi5cLi5cLi5cY29uZmlnXG1zdmNkZWZzLmRlZiINDQoJ CQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0NCgkJCQlTdWJT eXN0ZW09IjIiDQ0KCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS9vZGUu bGliIg0NCgkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNNSURMVG9vbCINDQoJCQkJUHJlcHJvY2Vzc29yRGVmaW5p dGlvbnM9Il9ERUJVRyINDQoJCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJGQUxT RSINDQoJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQ0KCQkJCUdlbmVyYXRl U3R1Ymxlc3NQcm94aWVzPSJUUlVFIg0NCgkJCQlUeXBlTGlicmFyeU5hbWU9 IiQoSW50RGlyKS9kZWZhdWx0LnRsYiINDQoJCQkJSGVhZGVyRmlsZU5hbWU9 ImRlZmF1bHQuaCINDQoJCQkJRExMRGF0YUZpbGVOYW1lPSIiDQ0KCQkJCUlu dGVyZmFjZUlkZW50aWZpZXJGaWxlTmFtZT0iZGVmYXVsdF9pLmMiDQ0KCQkJ CVByb3h5RmlsZU5hbWU9ImRlZmF1bHRfcC5jIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQ0KCQkJCURlc2NyaXB0 aW9uPSJQZXJmb3JtaW5nIHJlZ2lzdHJhdGlvbiINDQoJCQkJQ29tbWFuZExp bmU9InJlZ3N2cjMyIC9zIC9jICZxdW90OyQoVGFyZ2V0UGF0aCkmcXVvdDsi DQ0KCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJUUlVFIi8+DQ0KCQkJPFRvb2wN DQoJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0NCgkJCTxUb29s DQ0KCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0NCgkJCTxUb29s DQ0KCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQ0KCQkJCVBy ZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQ0KCQkJCUN1bHR1cmU9 IjEwMzMiDQ0KCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQo SW50RGlyKSIvPg0NCgkJCTxUb29sDQ0KCQkJCU5hbWU9IlZDV2ViU2Vydmlj ZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0NCgkJCTxUb29sDQ0KCQkJCU5hbWU9 IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NDQoJCTwvQ29uZmlndXJhdGlvbj4N DQoJCTxDb25maWd1cmF0aW9uDQ0KCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIN DQoJCQlPdXRwdXREaXJlY3Rvcnk9IlJlbGVhc2UiDQ0KCQkJSW50ZXJtZWRp YXRlRGlyZWN0b3J5PSJSZWxlYXNlIg0NCgkJCUNvbmZpZ3VyYXRpb25UeXBl PSIyIg0NCgkJCVVzZU9mQVRMPSIxIg0NCgkJCUFUTE1pbmltaXplc0NSdW5U aW1lTGlicmFyeVVzYWdlPSJGQUxTRSINDQoJCQlDaGFyYWN0ZXJTZXQ9IjIi Pg0NCgkJCTxUb29sDQ0KCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQ0K CQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0NCgkJCQlBZGRpdGlv bmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi9pbmNsdWRlIg0NCgkJ CQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X1dJTkRPV1M7TkRF QlVHO19VU1JETEw7ZFNJTkdMRTtNU1ZDIg0NCgkJCQlTdHJpbmdQb29saW5n PSJUUlVFIg0NCgkJCQlSdW50aW1lTGlicmFyeT0iMiINDQoJCQkJRW5hYmxl RnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQ0KCQkJCVVzZVByZWNvbXBp bGVkSGVhZGVyPSIwIg0NCgkJCQlXYXJuaW5nTGV2ZWw9IjMiDQ0KCQkJCURl dGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiDQ0KCQkJCURl YnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4NDQoJCQk8VG9vbA0NCgkJCQlO YW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0NCgkJCTxUb29sDQ0KCQkJCU5h bWU9IlZDTGlua2VyVG9vbCINDQoJCQkJSWdub3JlSW1wb3J0TGlicmFyeT0i VFJVRSINDQoJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL29kZS5kbGwiDQ0K CQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINDQoJCQkJTW9kdWxlRGVmaW5pdGlv bkZpbGU9Ii4uXC4uXC4uXGNvbmZpZ1xtc3ZjZGVmcy5kZWYiDQ0KCQkJCUdl bmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iRkFMU0UiDQ0KCQkJCVN1YlN5c3Rl bT0iMiINDQoJCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpL29kZS5saWIi DQ0KCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NDQoJCQk8VG9vbA0NCgkJCQlO YW1lPSJWQ01JRExUb29sIg0NCgkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9u cz0iTkRFQlVHIg0NCgkJCQlNa1R5cExpYkNvbXBhdGlibGU9IkZBTFNFIg0N CgkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINDQoJCQkJR2VuZXJhdGVTdHVi bGVzc1Byb3hpZXM9IlRSVUUiDQ0KCQkJCVR5cGVMaWJyYXJ5TmFtZT0iJChJ bnREaXIpL2RlZmF1bHQudGxiIg0NCgkJCQlIZWFkZXJGaWxlTmFtZT0iZGVm YXVsdC5oIg0NCgkJCQlETExEYXRhRmlsZU5hbWU9IiINDQoJCQkJSW50ZXJm YWNlSWRlbnRpZmllckZpbGVOYW1lPSJkZWZhdWx0X2kuYyINDQoJCQkJUHJv eHlGaWxlTmFtZT0iZGVmYXVsdF9wLmMiLz4NDQoJCQk8VG9vbA0NCgkJCQlO YW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINDQoJCQkJRGVzY3JpcHRpb249 IlBlcmZvcm1pbmcgcmVnaXN0cmF0aW9uIg0NCgkJCQlDb21tYW5kTGluZT0i cmVnc3ZyMzIgL3MgL2MgJnF1b3Q7JChUYXJnZXRQYXRoKSZxdW90OyINDQoJ CQkJRXhjbHVkZWRGcm9tQnVpbGQ9IlRSVUUiLz4NDQoJCQk8VG9vbA0NCgkJ CQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINDQoJCQkJUHJlcHJv Y2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINDQoJCQkJQ3VsdHVyZT0iMTAz MyINDQoJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChJbnRE aXIpIi8+DQ0KCQkJPFRvb2wNDQoJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJv eHlHZW5lcmF0b3JUb29sIi8+DQ0KCQkJPFRvb2wNDQoJCQkJTmFtZT0iVkNX ZWJEZXBsb3ltZW50VG9vbCIvPg0NCgkJPC9Db25maWd1cmF0aW9uPg0NCgk8 L0NvbmZpZ3VyYXRpb25zPg0NCgk8RmlsZXM+DQ0KCQk8RmlsdGVyDQ0KCQkJ TmFtZT0iU291cmNlIEZpbGVzIg0NCgkJCUZpbHRlcj0iY3BwO2M7Y3h4O2Rl ZjtvZGw7aWRsO2hwajtiYXQ7YXNtIj4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxh dGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcV2luMzIuY3BwIj4NDQoJCQk8 L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwu LlxvZGVcc3JjXGFycmF5LmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxl DQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xlcnJvci5j cHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBh dGg9Ii4uXC4uXC4uXG9kZVxzcmNcZmFzdGRvdC5jIj4NDQoJCQk8L0ZpbGU+ DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVc c3JjXGZhc3RsZGx0LmMiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcZmFzdGxzb2x2ZS5j Ij4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRo PSIuLlwuLlwuLlxvZGVcc3JjXGZhc3RsdHNvbHZlLmMiPg0NCgkJCTwvRmls ZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9k ZVxzcmNcZ2VvbS5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcam9pbnQuY3BwIj4N DQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIu LlwuLlwuLlxvZGVcc3JjXGxjcC5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8 RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcbWFz cy5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2 ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcbWF0LmNwcCI+DQ0KCQkJPC9GaWxl Pg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2Rl XHNyY1xtYXRyaXguY3BwIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJ CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXG1lbW9yeS5jcHAi Pg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9 Ii4uXC4uXC4uXG9kZVxzcmNcbWlzYy5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJ CQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGNvbmZpZ1xt c3ZjZGVmcy5kZWYiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlS ZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcb2JzdGFjay5jcHAiPg0N CgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4u XC4uXC4uXG9kZVxzcmNcb2RlLmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxG aWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xvZGVt YXRoLmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0 aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xyb3RhdGlvbi5jcHAiPg0NCgkJ CTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u XC4uXG9kZVxzcmNcc3BhY2UuY3BwIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZp bGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXHN0ZXAu Y3BwIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQ YXRoPSIuLlwuLlwuLlxvZGVcc3JjXHRlc3RpbmcuY3BwIj4NDQoJCQk8L0Zp bGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxv ZGVcc3JjXHRpbWVyLmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJPC9GaWx0ZXI+ DQ0KCQk8RmlsdGVyDQ0KCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0NCgkJCUZp bHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiPg0NCgkJCTxGaWxlDQ0KCQkJ CVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xhcnJheS5oIj4NDQoJ CQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwu LlwuLlxvZGVcc3JjXGdlb21faW50ZXJuYWwuaCI+DQ0KCQkJPC9GaWxlPg0N CgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNy Y1xqb2ludC5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVs YXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXGxjcC5oIj4NDQoJCQk8L0Zp bGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxv ZGVcc3JjXG1hdC5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJ UmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXG9iamVjdHMuaCI+DQ0K CQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5c Li5cLi5cb2RlXHNyY1xvYnN0YWNrLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8 RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcc3Rh Y2suaCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZl UGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xzdGVwLmgiPg0NCgkJCTwvRmlsZT4N DQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxz cmNcdGVzdGluZy5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQk8L0ZpbHRlcj4NDQoJ CTxGaWx0ZXINDQoJCQlOYW1lPSJTaGFyZWQgSGVhZGVyIEZpbGVzIg0NCgkJ CUZpbHRlcj0iIj4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4u XC4uXC4uXGluY2x1ZGVcb2RlXGNvbW1vbi5oIj4NDQoJCQk8L0ZpbGU+DQ0K CQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxpbmNsdWRl XG9kZVxjb25maWcuaCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJ CVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5caW5jbHVkZVxvZGVcY29udGFjdC5o Ij4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRo PSIuLlwuLlwuLlxpbmNsdWRlXG9kZVxlcnJvci5oIj4NDQoJCQk8L0ZpbGU+ DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxpbmNs dWRlXG9kZVxnZW9tLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXG1hc3MuaCI+ DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0i Li5cLi5cLi5caW5jbHVkZVxvZGVcbWF0cml4LmgiPg0NCgkJCTwvRmlsZT4N DQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1 ZGVcb2RlXG1lbW9yeS5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJ CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxpbmNsdWRlXG9kZVxtaXNjLmgi Pg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9 Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXG9iamVjdHMuaCI+DQ0KCQkJPC9GaWxl Pg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5caW5j bHVkZVxvZGVcb2RlLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXG9kZWNwcC5o Ij4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRo PSIuLlwuLlwuLlxpbmNsdWRlXG9kZVxvZGVtYXRoLmgiPg0NCgkJCTwvRmls ZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGlu Y2x1ZGVcb2RlXHJvdGF0aW9uLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8Rmls ZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXHNw YWNlLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2 ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXHRpbWVyLmgiPg0NCgkJCTwv RmlsZT4NDQoJCTwvRmlsdGVyPg0NCgkJPEZpbGUNDQoJCQlSZWxhdGl2ZVBh dGg9IlJlYWRNZS50eHQiPg0NCgkJPC9GaWxlPg0NCgk8L0ZpbGVzPg0NCgk8 R2xvYmFscz4NDQoJPC9HbG9iYWxzPg0NCjwvVmlzdWFsU3R1ZGlvUHJvamVj dD4NDQo= --1363170581-1485151701-1034706356=:21665-- From coding at natew.com Tue Oct 15 19:28:02 2002 From: coding at natew.com (Nate W) Date: Tue Oct 15 19:28:02 2002 Subject: [ODE] VStudioNet In-Reply-To: Message-ID: This thread has reminded me of something I've been meaning to ask... is anyone else out there using VS.net and ODE+tri-collider? In my case, the compiler warning messages often have the wrong line numbers, and debugging induces big headaches fast because the debugger usually goes to the wrong line in the source file. Is anyone else seeing this? -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Tue Oct 15 19:40:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 15 19:40:02 2002 Subject: [ODE] VStudioNet In-Reply-To: References: <3DACA09A.50505@fie.us> Message-ID: <20021015194355.1e9eeb85.russ@q12.org> > I've attached a .vcproj file that takes care of this. Russ, could you > add it to the CVS, under contrib/MSVC7/ode_default, replacing the existing > file? done. russ. -- Russell Smith http://www.q12.org From Tomas.Sakalauskas at axel-group.com Wed Oct 16 00:13:02 2002 From: Tomas.Sakalauskas at axel-group.com (Tomas Sakalauskas) Date: Wed Oct 16 00:13:02 2002 Subject: [ODE] VStudioNet Message-ID: Yes. You have to replace CRCRLF in files with CRLF, this confuses VS.NET. Tomas -----Original Message----- From: Nate W [mailto:coding@natew.com] Sent: Tuesday, October 15, 2002 8:36 PM To: ode@q12.org Subject: Re: [ODE] VStudioNet This thread has reminded me of something I've been meaning to ask... is anyone else out there using VS.net and ODE+tri-collider? In my case, the compiler warning messages often have the wrong line numbers, and debugging induces big headaches fast because the debugger usually goes to the wrong line in the source file. Is anyone else seeing this? -- Nate Waddoups Redmond WA USA http://www.natew.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From ps_yumemi at yahoo.com Wed Oct 16 00:44:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Wed Oct 16 00:44:02 2002 Subject: [ODE] networking Message-ID: <20021016074301.19079.qmail@web40514.mail.yahoo.com> hello first of all thanks for replying. I'm not using a client/server type of connection. I'm using a peer to peer connection. This means that I only have one program and though it may act as a server at times it doesn't. The movements of the a robot is calculated by the local computer and it just sends a message containing the speed and orientation of the mobot to the other computers. Any computer sends a message to all the other computers connected to the same simulation like a broadcast message. I use ODE for practically everything even the positioning. and yes, all the geoms and bodies are created properly. although yes I do have problems concerning the lag. and i'm still working on that. any suggestions are welcome. and all the robots exist in the same space and world. thanks pia __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From johnb003 at hotmail.com Wed Oct 16 01:10:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Wed Oct 16 01:10:02 2002 Subject: [ODE] IRC Community Message-ID: If anyone is interested, I started a channel on efnet for ode... as you might have guessed it's #ode. I encourage anyone to go there that is interested in ode, can contribute to the community, has questions, or just wants to say hi. I'll be hanging around there as Return0. Thanks -John Butterfield If people start to show up maybe russ can mention it on his page or something. _________________________________________________________________ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 From I.Munro at herts.ac.uk Wed Oct 16 01:38:13 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Wed Oct 16 01:38:13 2002 Subject: [ODE] VStudioNet Message-ID: Nate wrote: > This thread has reminded me of something I've been meaning to > ask... is > anyone else out there using VS.net and ODE+tri-collider? In > my case, the > compiler warning messages often have the wrong line numbers, > and debugging > induces big headaches fast because the debugger usually goes > to the wrong > line in the source file. Is anyone else seeing this? I'm using vs.net and ode (but not tri-collider). I've come across similar problems when debugging, but only when I've accidentally switched on compiler optimisation. And the lines I'm trying to debug have been optimised out of existence. Ian From Remko at act-3d.com Wed Oct 16 06:26:02 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Wed Oct 16 06:26:02 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <277399354.5556039.98@server> You can fix the viual appearance of the wheel easily though. Just use the position from ODE, get the wheel rotation angle and create your own rotation matrix from this angle and the matrix of the vehicle body. This will not improve the handling of the car but at least the image looks right :) Note: you need to calculate the pitch rotation of the wheel yourself because Ode can not provide this info (hint.. hint.. Russ :) ). -Remko From ericc at xenopi.com Wed Oct 16 10:02:02 2002 From: ericc at xenopi.com (Eric Cha) Date: Wed Oct 16 10:02:02 2002 Subject: [ODE] networking In-Reply-To: <20021016074301.19079.qmail@web40514.mail.yahoo.com> Message-ID: <000001c27536$37d05880$6401a8c0@donald> Pia, Your problem is a bit tricky to pin down, but here is my theory: Since you are controlling each robot separately (via different computers), any collisions detected by a given computer have to be transmitted (propagated) to the other computers. You didn't mention whether or not you are transmitting collision information in your program, but I am going to assume that you are.. So, assuming you are propagating collision info properly (although in a peer-to-peer topology this is going to be tricky..), the other problem may be (depending on how your network code functions) one of "lag induced information negation".. What I mean is, computer "A" determines a collision has occurred and transmits the info to computer "B". However, because of lag, computer "B" transmits a new position to "A" before receiving the collision info from "A". The new position info from "B" then OVERRIDES the collision that "A" detected, and forces "A" to put it's representation of "B" into the new spot. Computer "B" finally receives the collision info, but disregards it because it happened at a position which is not current.. This scenario assumes MANY things about your network code, so it is not a definite answer. A better way (for physics) to do things would be to designate one computer as "the physics simulator". Do the entire scene simulation on that computer, and then just transmit position/orientation/velocity updates to other computers. Of course, other computers would transmit user inputs (or even impulse/velocity/acceleration changes) to the simulator computer to control their respective robot. Don't know if that helped you or not, but that's my .02. =) Eric > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > Of pia dalusong > Sent: Wednesday, October 16, 2002 12:43 AM > To: ode@q12.org > Subject: [ODE] networking > > > hello > > first of all thanks for replying. > I'm not using a client/server type of connection. I'm > using a peer to peer connection. This means that I > only have one program and though it may act as a > server at times it doesn't. The movements of the a > robot is calculated by the local computer and it just > sends a message containing the speed and orientation > of the mobot to the other computers. Any computer > sends a message to all the other computers connected > to the same simulation like a broadcast message. > I use ODE for practically everything even the > positioning. and yes, all the geoms and bodies are > created properly. > > although yes I do have problems concerning the lag. > and i'm still working on that. any suggestions are > welcome. and all the robots exist in the same space > and world. > > thanks > > pia > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From anselm at hook.org Wed Oct 16 12:10:02 2002 From: anselm at hook.org (Anselm Hook) Date: Wed Oct 16 12:10:02 2002 Subject: [ODE] networking In-Reply-To: <000001c27536$37d05880$6401a8c0@donald> Message-ID: Hi, Eric probably has the best solution (do all the dynamics on one machine); networking physics is a bit of an oxymoron - you have high frequency events being propagated over a sluggish pipe. The naive scheme is to use a heartbeat to syncronize state between machines. Presumably if all machines are always in the same state then any new inputs delivered to all machines simultaneously will have the same effect. This would result in unacceptable delays however. If you are 70 ms from a server then your sim is at least 140ms delayed. Humans start to notice delay at around 20ms and ordinary inter-continental phone conversations become difficult with >70ms delays. Modems typically incur a 30ms delay and even tcp packet building and buffering can incur a 10ms delay... obviously you need a carefully chosen hack. If you look on the net there were once a number of companies that specialized in fast networking for games (I think most of them are bankrupt now). One scheme that I liked was a dual simulation scheme: There were two instances of the simulation running - one that was current and speculative (allowing gratifying instant feedback) and the other was an authoritative simulation that used an ordinary heartbeat but suffered from the full latency of the network. The current simulation was periodically (once every tenth of a second or so) re-computed forward from the correct but temporally old simulation. So most of the time things would work, but every so often the actors would pop around a bit. This is probably the best possible scheme one can hope to achieve although it does put a large load on the client machines. Also there is quite a bit of research at Darpa and in some of the game dev journals about various robust networking schemes. Another scheme (Russ once mentioned) is the idea of a networked constraint; that maintains the force interaction between objects over a network (hmm, sounds like quantum physics). He'd have to explain that. Here is a trivial scheme I've used for non-dynamics networking. Your mileage may vary - it is highly inaccurate - it simply creates a reasonably believable 'fiction' without forcing all machines to be syncronized or forcing the load to be computed on the server. But note that it is a hack. 1) First one designates one instance of an object as the "authoritative instance" and the other instances of that same object (as exist on each separate machine) as the "ghosts" or non-authoritative instances. 2) Requests to interact with any object (in state changing ways) have to be routed to the authoritative instance. The authoritative instance then echoes a second message indicating result states that all ghosts should seek to be in. (A vanilla client server network like say 'Quake' therefore is emulated by simply having all authoritative instances reside on the server rather than on the client leaf nodes of the network. A peer to peer network is designed by marking non-server objects as authoritative and forcing requests to be re-routed to that instance (often involving network traffic)). 3) It is ok for a ghost to locally speculate about what it should do when it receives an impact - but throw away that information when more authoritative feedback arrives. This often results in a ghost being translated part way into another object - this inter-penetration can however help the simulation as will be discussed below. So for example: Lets pretend you have p2p network of two machines and two robots. Each machine is going to have an instance of each robot. I like to draw out these instance graphs using a simple c like notation - in this case it might look like this: network { machine1 { robot1 { is_authoritative { yes } request_impact{} } robot2 { is_authoritative { no } where_is_authority { machine2:robot2 } request_impact{} } } machine2 { robot1 { is_authoritative { no } where_is_authority { machine1:robot1 } request_impact{} } robot2 { is_authoritative { yes } request_impact{} } } } Any requests to apply forces to an object get sent to the authority first and the authority echoes out a real force to apply. A ghost is treated like a statue; it simply doesn't move right away when you hit it. An elaboration of this would be to allow ghosts to be simulated normally but for the authority to transmit all authoritative state (position, current forces) to all ghosts after each new force. This would result in inter-penetration as ghosts were popped to new locations... but has worked ok for me in the past. I would even propagate extremely high level events such as "cross bridge" and allow each ghost to fulfill the event as it wished - creating often quite different but plausibly believable fictions. Anyway, as I said, your mileage may vary - it really depends on what you're trying to do. If you simply can't afford to compute the simulation twice, and if all you care about is some reasonably believable non-diverging physics then this might be acceptable - it is certainly good enough for most games. Today I'd probably use something more robust myself though. Hmmm, I wonder what a networked version of 'Juice' would be like. Robot wars anybody? :-). - a On Wed, 16 Oct 2002, Eric Cha wrote: > Pia, > > Your problem is a bit tricky to pin down, but here is my theory: > > Since you are controlling each robot separately (via different > computers), any collisions detected by a given computer have to be > transmitted (propagated) to the other computers. You didn't mention > whether or not you are transmitting collision information in your > program, but I am going to assume that you are.. > > So, assuming you are propagating collision info properly (although in a > peer-to-peer topology this is going to be tricky..), the other problem > may be (depending on how your network code functions) one of "lag > induced information negation".. What I mean is, computer "A" determines > a collision has occurred and transmits the info to computer "B". > However, because of lag, computer "B" transmits a new position to "A" > before receiving the collision info from "A". The new position info > from "B" then OVERRIDES the collision that "A" detected, and forces "A" > to put it's representation of "B" into the new spot. Computer "B" > finally receives the collision info, but disregards it because it > happened at a position which is not current.. > > This scenario assumes MANY things about your network code, so it is not > a definite answer. > > A better way (for physics) to do things would be to designate one > computer as "the physics simulator". Do the entire scene simulation on > that computer, and then just transmit position/orientation/velocity > updates to other computers. Of course, other computers would transmit > user inputs (or even impulse/velocity/acceleration changes) to the > simulator computer to control their respective robot. > > Don't know if that helped you or not, but that's my .02. =) > > Eric > > > -----Original Message----- > > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > > Of pia dalusong > > Sent: Wednesday, October 16, 2002 12:43 AM > > To: ode@q12.org > > Subject: [ODE] networking > > > > > > hello > > > > first of all thanks for replying. > > I'm not using a client/server type of connection. I'm > > using a peer to peer connection. This means that I > > only have one program and though it may act as a > > server at times it doesn't. The movements of the a > > robot is calculated by the local computer and it just > > sends a message containing the speed and orientation > > of the mobot to the other computers. Any computer > > sends a message to all the other computers connected > > to the same simulation like a broadcast message. > > I use ODE for practically everything even the > > positioning. and yes, all the geoms and bodies are > > created properly. > > > > although yes I do have problems concerning the lag. > > and i'm still working on that. any suggestions are > > welcome. and all the robots exist in the same space > > and world. > > > > thanks > > > > pia > > > > > > --- > Outgoing mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From Brad at fie.us Wed Oct 16 13:28:02 2002 From: Brad at fie.us (Brad Friedman) Date: Wed Oct 16 13:28:02 2002 Subject: [ODE] networking References: Message-ID: <3DADCC02.5050409@fie.us> I highly recommend hopping onto www.GameDev.net and looking up articles on dead reckoning. In particular, I recomend this one as a start: http://www.gamedev.net/reference/programming/features/targeting/ You can then dive down to other articles for actual code. You'll also want to think in terms of TCP, UDP and half TCP solutions in your networking. Half TCP solutions will likely want to guarontee order but not receipt of packts. Or alternatively, you could guarontee receipt but not order. Generally speaking, you need to design a simulation from the ground up to work with physics over the network. Its not something to add in later. And you need to get used to the idea that the client will always be in error. The server's representation will not be 100% accurate. It will likely be making spontaneous changes. The clients smooth out the changes at the user's end. If you're designing your program for a LAN with less than 10ms lag, thats a different story of course. But you do also need to factor in the processing time. Its not just netoworking lag. -Brad From nick.mcevoy at dsto.defence.gov.au Wed Oct 16 18:03:01 2002 From: nick.mcevoy at dsto.defence.gov.au (McEvoy, Nick) Date: Wed Oct 16 18:03:01 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <108E7D907871D6118B5000306E0189F82005F6@ednex504.dsto.defence.gov.au> > Peter wrote: >That was pretty much exactly the results I got - this problem has >completely killed my ODE project. That is the way I'm heading too !!! It's a damn shame cause ODE is great stuff generally ! But I'm not one to give up easily. > Russ wrote: >well, anything is possible :) the question is, why does it happen in the >first place. here's the answer: > Thanks Russ for the nice long answer (in physics terms) but no real (good) solution (in the short term at least). :( Any other hints on the best setup of chassis & wheel mass and dimensions (including contact params) to reduce the problem. eg. should I have heavy/light chassis, heavy/light wheels, large/small diam wheels ... I suppose it should be obvious if I think about it for a moment ... thats my problem sometimes I type (incl. my code) then think later. I'll also check my timestep size as well. > Remko wrote: >You can fix the viual appearance of the wheel easily though. Yes I suppose I could fix the visual appearance ... but I don't want to do too many fake-hacks (I've already got enough) ... I like something to look and feel realistic as possible. I'll follow what Russ said '[its an] exercise in error reduction, not error elimination' ... and keep fiddling and let you all know if I find the optimal values. Nick From coding at natew.com Wed Oct 16 19:40:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 19:40:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005F6@ednex504.dsto.defence.gov.au> Message-ID: On Thu, 17 Oct 2002, McEvoy, Nick wrote: > Thanks Russ for the nice long answer (in physics terms) but no real > (good) solution (in the short term at least). :( I must admit I have very little experience using ODE to simulate a car, but I thought he did offer a good solution... or at least he said something that sounded to me like the beginnings of a solution to the wheel problem: fake them. When ODE generates contacts for the wheel-ground intersection, treat it as a frictionless contact, so ODE just keeps things from interpenetrating (you'll also get sideways forces if you're on a slope, which is probably good). Then, use your own code to compute the forces that *should* be there. ODE's friction model is pretty simple (as it should be, IMO), so if you want a really good model of tire forces for your project, you'll end up calculating those forces outside of ODE anyhow. Maybe you could apply the forces directly to the wheel body - but don't use an axle joint, instead have the wheel attached in such a way that it moves for suspension and steering but not for rotation. You could then apply a force at the contact point (or at the center of the contact patch, if you wanna get sophisticated), and apply a torque where the axle would be. -- Nate Waddoups Redmond WA USA http://www.natew.com From tetron at interreality.org Wed Oct 16 20:05:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 16 20:05:02 2002 Subject: [ODE] exploding boxes Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This may be a known bug -- box stacking is extremely unstable. Specifically, I'm looking at the "phystut" program that comes with the Crystal Space 3D engine. It uses large, flat boxes for the walls of a room[1], and the user is able to drop boxes and spheres into the room and watch them bounce and roll around. There are several problems: [1] I expect the answer may be "don't do that" and while that would work for the outer surfaces of a convex hull, it's useless for building other things within a space. The first one is that despite the fact that both the walls and objects have a bounciness of zero (perfectly inelastic collisions) when an object is dropped it tends to bounce and roll around a LOT before coming to a stop... ... almost coming to a stop, that it. Once the object has almost settled down, often it will suddenly pop up with a lot of force. This is clearly an instability in the integrator, and makes it basically impossible to stack objects on one another, which should otherwise work fine. I'd like to see this fixed, and if no one is working on it I would be willing to give it a shot if someone will point me in the right direction of where to start in the code. [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9riifaeHUyhjCHfcRAlbVAKCxOv91JfnjQVdCbZ7agC/WU1UCqwCfcZ9Z 3+yvx1qbhQwLuaY05A6VqUc= =ThXO -----END PGP SIGNATURE----- From russ at q12.org Wed Oct 16 21:42:02 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 16 21:42:02 2002 Subject: [ODE] exploding boxes In-Reply-To: References: Message-ID: <20021016214610.27fc7f46.russ@q12.org> > The first one is that despite the fact that both the walls and objects > have a bounciness of zero (perfectly inelastic collisions) when an > object is dropped it tends to bounce and roll around a LOT before > coming to a stop... if you're talking about the box-stack demo, this bouncyness is intentional. if you want no bounce, set contact[i].surface.bounce=0 in the demo. > ... almost coming to a stop, that it. Once the object has almost > settled down, often it will suddenly pop up with a lot of force. are you using the latest CVS version? 0.03 is prone to popping. there will hopefully be a new 'official' ODE release sometime soonish. if you are experiencing popping with the CVS version, i would appreciate a test case that illustrates this. note that there is a box-stacking problem caused by insufficient contact points being generated, i am also hoping to fix this up soon. russ. -- Russell Smith http://www.q12.org From ericc at xenopi.com Wed Oct 16 22:48:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Wed Oct 16 22:48:01 2002 Subject: [ODE] networking In-Reply-To: <3DADCC02.5050409@fie.us> Message-ID: <000601c275a1$3aeed3f0$6401a8c0@donald> Umm, not bad advice, but the original poster did specify that he/she purposely chose peer-to-peer, so Client-Server paradigm might not be an option (for him)... > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > Of Brad Friedman > Sent: Wednesday, October 16, 2002 1:29 PM > To: ode@q12.org > Subject: Re: [ODE] networking > > > I highly recommend hopping onto www.GameDev.net and looking > up articles > on dead reckoning. > > In particular, I recomend this one as a start: > http://www.gamedev.net/reference/programming/features/targetin g/ You can then dive down to other articles for actual code. You'll also want to think in terms of TCP, UDP and half TCP solutions in your networking. Half TCP solutions will likely want to guarontee order but not receipt of packts. Or alternatively, you could guarontee receipt but not order. Generally speaking, you need to design a simulation from the ground up to work with physics over the network. Its not something to add in later. And you need to get used to the idea that the client will always be in error. The server's representation will not be 100% accurate. It will likely be making spontaneous changes. The clients smooth out the changes at the user's end. If you're designing your program for a LAN with less than 10ms lag, thats a different story of course. But you do also need to factor in the processing time. Its not just netoworking lag. -Brad _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoftick ). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From tetron at interreality.org Wed Oct 16 22:50:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 16 22:50:02 2002 Subject: [ODE] exploding boxes In-Reply-To: <20021016214610.27fc7f46.russ@q12.org> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Wed, 16 Oct 2002, Russ Smith wrote: > if you're talking about the box-stack demo, this bouncyness is > intentional. if you want no bounce, set contact[i].surface.bounce=0 > in the demo. No, this is in the "phystut" program in Crystal Space. As I said, this is a box landing on another box and not a box hitting a plane. > are you using the latest CVS version? 0.03 is prone to popping. there > will hopefully be a new 'official' ODE release sometime soonish. if you > are experiencing popping with the CVS version, i would appreciate a test > case that illustrates this. Yes, I'm using the CVS version. Providing a simple test case is rather complicated by the fact that it uses the Crystal Space infrastructure so perhaps you would be best off downloading Crystal Space... I suppose I could try to reproduce it in the box stacking test. > note that there is a box-stacking problem caused by insufficient contact > points being generated, i am also hoping to fix this up soon. Hmm, okay. [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9rk9TaeHUyhjCHfcRAg2wAJ43RxDQqhzIsEzWqjd2At2nwB04ZQCeMV+l Ft/PY6NEi9EqgpNwMHGpRg4= =ChTm -----END PGP SIGNATURE----- From coding at natew.com Wed Oct 16 23:16:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 23:16:02 2002 Subject: [ODE] robotic simulation In-Reply-To: <3DA8EF87.778199E3@aist.go.jp> Message-ID: On Sun, 13 Oct 2002, Max Lungarella wrote: > i tried "juice", it's pretty cool, and well designed. the only problem that i > have with it, is that i cannot export the models i realize. in other words, it > would be neat if i could construct something using juice, and be able to > import this something in one of my own programs. do you have plans do add > similar feature? I have no such plans, but I do plan to document the file format to help anyone interested in writing a translator or importer. I'm also looking at the Novodex file format as a possible replacement for the XML-based format that Juice uses now. > ode is so easy to use and also aesthetically more pleasant ;) I feel the same way! -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 16 23:20:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 23:20:02 2002 Subject: [ODE] networking In-Reply-To: <000001c27536$37d05880$6401a8c0@donald> Message-ID: On Wed, 16 Oct 2002, Eric Cha wrote: > A better way (for physics) to do things would be to designate one > computer as "the physics simulator". Do the entire scene simulation on > that computer, and then just transmit position/orientation/velocity > updates to other computers. Of course, other computers would transmit > user inputs (or even impulse/velocity/acceleration changes) to the > simulator computer to control their respective robot. I hope you all don't mind too much my attempt to hijack this thread and turn it into a discussion of networked physics in general. :-) Having a single computer be "the" simulator solves a lot of problems, and in many cases would be the best solution. A co-worker and I did a multi-user simulation this way a few years ago and it worked well. (We didn't have physics to worry about, but we did have related issues with maintaining coherent world states on all of the 'client' machines.) The thing that makes me want to avoid that model today is that physics takes a lot of CPU power. Every client brings a fast CPU to the party... if there's a way to make use of that power, many clients together could be able to do much more complex simulations than a single server (or rather, "more complex that the server *I* can afford"). Ideally, it gets a lot cheaper to scale the system to support more users, becase each user brings enough CPU power to do their share of the computation. Practically it will never be quite that scalable, but I still like the idea. If you can have each client simulate the parts of the player's body or vehicle, then broadcast the positions and orientations, the server's CPU requirements go down quite a bit. Note that I'm assuming a game sort of paradigm here, but other scenarios could use other methods of assigning objects to CPUs. I'd elaborate, but I see that Anselm has already described something like what I had in mind, only better. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From amoravanszky at dplanet.ch Thu Oct 17 02:14:02 2002 From: amoravanszky at dplanet.ch (amoravanszky@dplanet.ch) Date: Thu Oct 17 02:14:02 2002 Subject: [ODE] robotic simulation Message-ID: <200210170913.g9H9DQx22252@dubb05h07-0.dplanet.ch> Nate W wrote: > I have no such plans, but I do plan to document the file format to help > anyone interested in writing a translator or importer. I'm also looking > at the Novodex file format as a possible replacement for the XML-based > format that Juice uses now. Nate, just in case you are wondering, you are welcome to use our file format not only for NovodeX related functionality, but also as a generic physics scene description format also used in conjunction with ODE. We at NovodeX think the entire community, regardless of which physics SDK is used, would benefit from a file format that is an open standard. In particular we are open to file format extensions as required by Juice -- though of course we should debate them first. BTW: The file format description is available as part of the NovodeX Steel SDK download here: http://www.novodex.com/downloads/steel-personal.exe Note that you don't have to buy the SDK to be able to read the documentation or use the viewer/exporters. -- Adam Moravanszky /*================*\ |Chief Software Architect |NovodeX AG |physics middleware |www.novodex.com \*================*/ From Remko at act-3d.com Thu Oct 17 02:41:01 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Thu Oct 17 02:41:01 2002 Subject: [ODE] Another strange wheel rotation bug Message-ID: <277472262.78464215.98@server> I fixed the 'bending wheels' problem using the following methods. The problem still exists but at least you can reduce it to acceptable levels: - Decrease the step size (update of 200-300Hz) - Different CFM and ERP values - Different masses - Bigger wheels (The bigger the wheels, the slower they have to turn for the same speed) I'm experimenting with a driving simulation and the results are stunning! However, after some experimentation, the car started to bounce and the handling was completely gone. It turned out that the wheel is not rotating around it's axis but around a point slightly above that. Gravity was causing this offset. Gravity pulls the wheel down so the rotation axis of the hinge is too high. What really surprised me, is the solution I found: When I set the gravity to zero the problem does not occur (as expected). When I crank up the gravity while the simulation is running, the bug does not come back but the wheel rotates around the correct point. Does anyone has an explanation for this? Why the rotation screws up when I initialize with gravity? -Remko From johnb003 at hotmail.com Thu Oct 17 04:32:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Thu Oct 17 04:32:02 2002 Subject: [ODE] Wheel Rotation Problem Message-ID: Actually to be honest, I've been struggling with the wheel rotation problem the last few days as well. I did notice a much better behaving system with a smaller timestep as I tested out my buggy on a big open plane. Although to get my timestep small enough I had to call update world a bunch of times, more than I could feasibly when I have other factors in the game that slow it down, like terrain. I have not yet thought of a solution that would work in my case. _________________________________________________________________ Choose an Internet access plan right for you -- try MSN! http://resourcecenter.msn.com/access/plans/default.asp From ericc at xenopi.com Thu Oct 17 07:41:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Thu Oct 17 07:41:01 2002 Subject: [ODE] networking In-Reply-To: Message-ID: <000d01c275eb$9e070620$6401a8c0@donald> Anselm's solution is what I call the "classic" solution. It's "classic" in the sense that I know of several games which actually use that system (or something very similar). Just as a point of discussion, there are several other ways to approach the problem... For example, here is what we did with Dreadnoughts (a game which we were working on using Havok): Dreadnoughts had/has pretty extreme physics engine requirements. It's a first person shooter with HUGE vehicles (ever seen Stargate the movie? Think of the flying pyramids..) We had to simulate moving structures which were large enough so that entire Quake-style levels would fit INSIDE of them. The player could run around inside these ships and then go outside and run around a huge outdoor world. At the same time, the ships themselves were moving and could battle it out with each other and interact with full physics with the environment. All this had to take place seamlessly. If a player was inside the ship looking out, he/she could see the other players running/flying around the terrain and could interact with those players.. Anyway, we found that because of memory constraints, we could not do the "master heartbeat physics server" method (the levels were so large that we were paging them in and out of memory as you moved around..) Instead, we chopped the world up into regions (pretty easy as the world was already partitioned into regions for our paging system) and dynamically assigned client computers as the physics master simulators. It was/is very tricky to implement, and not without problems in implementation. However, the end result was full physics simulation of a HUGE environment with the load being (relatively) evenly distributed amongst participant's computers... Eric > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf Of Nate W > Sent: Wednesday, October 16, 2002 3:28 PM > To: ode@q12.org > Subject: RE: [ODE] networking > > > On Wed, 16 Oct 2002, Eric Cha wrote: > > > A better way (for physics) to do things would be to designate one > > computer as "the physics simulator". Do the entire scene > simulation > > on that computer, and then just transmit > position/orientation/velocity > > updates to other computers. Of course, other computers > would transmit > > user inputs (or even impulse/velocity/acceleration changes) to the > > simulator computer to control their respective robot. > > I hope you all don't mind too much my attempt to hijack this > thread and turn it into a discussion of networked physics in > general. :-) > > Having a single computer be "the" simulator solves a lot of > problems, and in many cases would be the best solution. A > co-worker and I did a multi-user simulation this way a few > years ago and it worked well. (We didn't have physics to > worry about, but we did have related issues with maintaining > coherent world states on all of the 'client' machines.) > > The thing that makes me want to avoid that model today is > that physics takes a lot of CPU power. Every client brings a > fast CPU to the party... if there's a way to make use of that > power, many clients together could be able to do much more > complex simulations than a single server (or rather, "more > complex that the server *I* can afford"). Ideally, it gets a > lot cheaper to scale the system to support more users, becase > each user brings enough CPU power to do their share of the > computation. Practically it will never be quite that > scalable, but I still like the idea. > > If you can have each client simulate the parts of the > player's body or vehicle, then broadcast the positions and > orientations, the server's CPU requirements go down quite a > bit. Note that I'm assuming a game sort of paradigm here, > but other scenarios could use other methods of assigning > objects to CPUs. > > I'd elaborate, but I see that Anselm has already described > something like what I had in mind, only better. :-) > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From shaul_kedem at yahoo.com Thu Oct 17 10:22:02 2002 From: shaul_kedem at yahoo.com (Shaul Kedem) Date: Thu Oct 17 10:22:02 2002 Subject: [ODE] High level graphics languages Message-ID: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Hi all, Recently there is a lot of talk about high level languages for graphical use. John Carmack, known for it's Doom and Quake engines, said on the last quakecon keynote speech that his next game will be written on a high level language, stating that he sees such languages as the future trend. Can anyone give me pointers / links / recommendations about such languages? The reason I am posting it here is that I want (obviously) to implement ODE in such a language. Thanks, Shaul. __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From ericc at xenopi.com Thu Oct 17 10:39:02 2002 From: ericc at xenopi.com (Eric Cha) Date: Thu Oct 17 10:39:02 2002 Subject: [ODE] High level graphics languages In-Reply-To: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Message-ID: <001c01c27604$856969a0$6401a8c0@donald> There are numerous HLSL's (High Level Shader Languages) out there. Probably the two that are garnering the most attention (right now) are OpenGL 2.0 and nVidia's Cg (which, if you believe nVidia, will be cross compatible with DX9 HLSL).. Eric > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > Of Shaul Kedem > Sent: Thursday, October 17, 2002 10:22 AM > To: ode@q12.org > Subject: [ODE] High level graphics languages > > > Hi all, > Recently there is a lot of talk about high level > languages for graphical use. > > John Carmack, known for it's Doom and Quake engines, > said on the last quakecon keynote speech that his next > game will be written on a high level language, stating > that he sees such languages as the future trend. > > Can anyone give me pointers / links / recommendations > about such languages? > > The reason I am posting it here is that I want > (obviously) to implement ODE in such a language. > > Thanks, > Shaul. > > __________________________________________________ > Do you Yahoo!? > Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From jason at 379.com Thu Oct 17 10:52:01 2002 From: jason at 379.com (J. Perkins) Date: Thu Oct 17 10:52:01 2002 Subject: [ODE] High level graphics languages In-Reply-To: <20021017172136.34012.qmail@web40020.mail.yahoo.com> References: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Message-ID: <1034876397.2181.28.camel@imperius.um.us.sbphrd.com> I think you misunderstood the interview. I believe he said that his next game would use a high level *shader* language. I would be very surprised indeed if iD were to release Quake4 in Python! ;) Jason 379 On Thu, 2002-10-17 at 13:21, Shaul Kedem wrote: > John Carmack, known for it's Doom and Quake engines, > said on the last quakecon keynote speech that his next > game will be written on a high level language, stating > that he sees such languages as the future trend. From ivan.bolcina at volja.net Thu Oct 17 12:40:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Thu Oct 17 12:40:02 2002 Subject: [ODE] 3d world an directx Message-ID: <013401c27614$d4c0bde0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0131_01C27625.97E1A450 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Problems. Is ode 3d world different from DirectXs? It seems to me that y and z = axes are swapt. bye,ivan ------=_NextPart_000_0131_01C27625.97E1A450 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
    = Problems.
 
Is ode 3d world different from = DirectXs? It seems=20 to me that y and z axes are swapt.
 
bye,ivan
------=_NextPart_000_0131_01C27625.97E1A450-- From russ at q12.org Thu Oct 17 15:23:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 17 15:23:02 2002 Subject: [ODE] i will speak at IndieGamesCon'02 Message-ID: FYI, i will be speaking about ODE at IndieGamesCon'02 (www.indiegamescon.com), on saturday november 2nd in eugene, oregon. i'll be talking about the following topics: * ODE's application to the game industry - particularly its relevance to the indie game developer. * the technology behind ODE. * how/where ODE has been used. * pros and cons of using ODE (and other dynamics toolkits) for various kinds of games and VR environments. i will talk about vehicles at length. * alternatives to ODE - free and commercial. * the future of dynamics/simulation. * challenges for the [indie] game industry. * other interesting topics that occur to me, or that are suggested. my presentation will be up on q12.org sometime before or after the conference. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Thu Oct 17 20:30:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 17 20:30:02 2002 Subject: [ODE] VStudioNet In-Reply-To: Message-ID: On Wed, 16 Oct 2002, Tomas Sakalauskas wrote: > > [...] debugging induces big headaches fast because the debugger > > usually goes to the wrong line in the source file. Is anyone else > > seeing this? > > Yes. You have to replace CRCRLF in files with CRLF, this confuses VS.NET. That fixes it. I thank you a thousand times. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From tetron at interreality.org Thu Oct 17 22:52:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Thu Oct 17 22:52:02 2002 Subject: [ODE] box stacking instability Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I've noticed that the "boxstack" test is unstable as well, although not to the degree that the test program I'm using does. If one box comes to rest on another, while it doesn't pop up (as in this other demo) it does appear to vibrate and will move about -- I presume this is due to impulses correcting for penetration of the top box into the lower box. I'm talked to a professor who knows something about dynamics systems, and his understanding is that the impulse-based method in inherently unstable in this configuration -- using this algorithm it is almost impossible for the system to come to equilibrium. This seems to be an enormous problem, and one which makes ODE rather useless for my purposes. It looks like I shall have to just use collision detection with some basic physics hacked on... I need for it to be possible for objects to be supported by others, such as platforms on which other objects rest. It seems that ODE handles the case of stability on a plane quite well, but that is rather limited use compared to the general case :-( On a side note, the same professor mentioned the Arachi dynamics engine (www.arachi.com). It's commercial and exceedingly expensive ($30,000) but he speaks very highly of it. It would be interesting to potentially adopt some of their techniques... [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9r6FUaeHUyhjCHfcRAkJvAJsHkWstAZ1s9//kp6XfUEizoDzidgCggLVp jxxJXvtNwBkgQGNxF+ESZwk= =B4Ld -----END PGP SIGNATURE----- From coding at natew.com Thu Oct 17 23:25:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 17 23:25:02 2002 Subject: [ODE] box stacking instability In-Reply-To: Message-ID: On Fri, 18 Oct 2002, Peter Amstutz wrote: > If one box comes to rest on another, while it doesn't pop up (as in > this other demo) it does appear to vibrate and will move about -- I > presume this is due to impulses correcting for penetration of the top > box into the lower box. > I'm talked to a professor who knows something about dynamics systems, and > his understanding is that the impulse-based method in inherently > unstable in this configuration [...] As Russ said, the real problem is that the box-box collision detection code is not yet finished. If you search the mailing list archives, you'll find that this is a known problem, it is a solvable problem, and it will be fixed. > It seems that ODE handles the case of stability on a plane quite well, > but that is rather limited use compared to the general case :-( Yes, boxes can rest on planes in a perfectly stable manner. When a box lies flat on a plane, the box-plane collision code generates three contact constraints, so the box is held in place. In my own application, I had the same problem with box-plane contact - not because of a problem with ODE, but because of a mistake on my part. My code was only keeping the first of up to three contact constraints that would be generated when a box contacted a plane. The result was identical to the behavior that you see now with box-box collision detection. When I fixed my code to use all three contacts, the 'boiling' effect went away completely. I have no doubt that boxes will rest on other boxes when the box-box collision code returns three contact constraints when boxes are touching in a face-to-face configuration. It works for boxes on planes now, it will work for boxes on boxes eventually. -- Nate Waddoups Redmond WA USA http://www.natew.com From p.terdiman at wanadoo.fr Thu Oct 17 23:36:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 17 23:36:02 2002 Subject: [ODE] box stacking instability References: Message-ID: <046e01c27670$422f3540$0e00000a@pierre> > I've noticed that the "boxstack" test is unstable as well, although not to > the degree that the test program I'm using does. If one box comes to rest > on another, while it doesn't pop up (as in this other demo) it does appear > to vibrate and will move about -- I presume this is due to impulses > correcting for penetration of the top box into the lower box. > > I'm talked to a professor who knows something about dynamics systems, and > his understanding is that the impulse-based method in inherently unstable > in this configuration -- using this algorithm it is almost impossible for > the system to come to equilibrium. This seems to be an enormous problem, > and one which makes ODE rather useless for my purposes. It looks like I > shall have to just use collision detection with some basic physics hacked > on... I need for it to be possible for objects to be supported by others, > such as platforms on which other objects rest. It seems that ODE handles > the case of stability on a plane quite well, but that is rather limited > use compared to the general case :-( The boxstack test is unstable because the collision detection routine reports a single contact point, period. Pierre From russ at q12.org Fri Oct 18 00:03:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 00:03:02 2002 Subject: [ODE] box stacking instability In-Reply-To: References: Message-ID: <20021018000754.21ea5baa.russ@q12.org> > I presume this is due to impulses > correcting for penetration of the top box into the lower box. actually, ODE does not use impulse based methods. > On a side note, the same professor mentioned the Arachi dynamics > engine(www.arachi.com). It's commercial and exceedingly expensive > ($30,000) but he speaks very highly of it. It would be interesting to > potentially adopt some of their techniques... hmmm ... the web site gives no clues about the techniques (or about anything, really). does anyone know what arachi is doing? russ. -- Russell Smith http://www.q12.org From mimodene at yahoo.com Fri Oct 18 01:14:01 2002 From: mimodene at yahoo.com (mica modenese) Date: Fri Oct 18 01:14:01 2002 Subject: [ODE] beginnersproblem with ode: stack overflow Message-ID: <20021018081342.89297.qmail@web10903.mail.yahoo.com> hi all. i am kind of new to this and so my question might be rather silly. I've been using ODE for 1 week for a biped robot simulation. now my biped consists of 52 bodies 27 hinge joints, 14 prismatic joints and 28 balljoints and 4 contactmodels. now it keeps crashing, telling something about stack overflow and increasing the stacksize (/F in VC++) doesn't seem to work, ODE is allready allocating maxsize for the stack ? before i fry my brain: am i asking to much ?? do i have to reduce bodies and joints ?? thx mike __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From coding at natew.com Fri Oct 18 02:13:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 02:13:02 2002 Subject: [ODE] beginnersproblem with ode: stack overflow In-Reply-To: <20021018081342.89297.qmail@web10903.mail.yahoo.com> Message-ID: With that many joints, you'll need LOTS of stack. Juice has about 8 megabytes of stack, and I suspect that the structure you're building would overflow Juice's stack. With VS.Net, the linker option I'm using is /STACK:8000000 but maybe it's /F with earlier versions? I dunno. Anyhow, try or 10 megs or so, then double it if your app still crashes with a stack overflow. Then double it again if need be, and so on until it stops crashing. Expect a rather slow frame rate, too... it's going to take a lot of number crunching to make all those joints work. If you can generate a picture of your biped, I hope you will share it. It sounds pretty interesting. :-) On Fri, 18 Oct 2002, mica modenese wrote: > i am kind of new to this and so my question might be > rather silly. I've been using ODE for 1 week for a > biped robot simulation. now my biped consists of 52 > bodies 27 hinge joints, 14 prismatic joints and 28 > balljoints and 4 contactmodels. now it keeps crashing, > telling something about stack overflow and increasing > the stacksize (/F in VC++) doesn't seem to work, ODE > is allready allocating maxsize for the stack ? before > i fry my brain: am i asking to much ?? do i have to > reduce bodies and joints ?? From thubba at gmx.net Fri Oct 18 02:52:02 2002 From: thubba at gmx.net (Michael Scharvogel) Date: Fri Oct 18 02:52:02 2002 Subject: [ODE] a newbies question on hinge and robot legs... Message-ID: <020c01c2768b$d87d7eb0$c36abb84@tig> This is a multi-part message in MIME format. ------=_NextPart_000_0209_01C2769C.9BB0DBB0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi folks... I started working with ODE some time ago. But I encounter some problems = on understanding the manual and all the "how to model my stuff witrh = ode" subject. Thus I will briefly describe my problem. Maybe someone can comment on = that: I want to model some kind of bug robot.For the start, it shall have the = follwoing structure: H : hinge T : Thorax (CCylinder) L : Leg (Box) L H L H TTT H L H L TTT TTT L H L H TTT H L H L TTT TTT L H L H TTT H L H L (One Body, six legs, each leg consisting of two parts and connected by = two hinges) In the final state I'd like to say something like: Hinge 1 bow 10 degrees. So do I have to attach Motors to the hinges to achiev this (I did not = quiet figure out how this could work) or do I have to use these = Transform geometries and rotate them (I I understood them right they can = be used to rotate for example a leg around one of its ends) Well, you see, I not quiet used to the subject. But maybe someone could = help me getting it :-) Perhaps someone has done something liek that, or someone could provide = me some example code... Thanx a lot,=20 mike. ------=_NextPart_000_0209_01C2769C.9BB0DBB0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi folks...

I started working = with ODE some=20 time ago. But I encounter some problems on understanding the manual and = all the=20 "how to model my stuff witrh ode" subject.
Thus I will briefly = describe my=20 problem. Maybe someone can comment on that:

I want to model some = kind of=20 bug robot.For the start, it shall have the follwoing structure:
H :=20 hinge
T : Thorax (CCylinder)
L : Leg (Box)

L H L H TTT H L H L
       =20 TTT
       =20 TTT
L H L H TTT H L H L
       =20 TTT
       =20 TTT
L H L H TTT H L H L
 
 
(One Body, six legs, each leg consisting of two = parts and=20 connected by two hinges)
 
In the final state I'd like to say something=20 like:
Hinge 1 bow 10 degrees.
 
So do I have to attach Motors to the hinges to = achiev this=20 (I did not quiet figure out how this could work) or do I have to use = these=20 Transform geometries and rotate them (I I understood them right they can = be used=20 to rotate for example a leg around one of its ends)
 
 
Well, you see, I not quiet used to the subject. = But maybe=20 someone could help me getting it :-)
Perhaps someone has done something liek that, or = someone=20 could provide me some example code...
 
Thanx a lot,
mike.
------=_NextPart_000_0209_01C2769C.9BB0DBB0-- From mal at candomultimedia.com Fri Oct 18 06:50:02 2002 From: mal at candomultimedia.com (Malachy Duffin) Date: Fri Oct 18 06:50:02 2002 Subject: [ODE] Introduction / Suggestions etc Message-ID: <001801c276ad$38345a10$d834fe3e@MalLaptop> Hello all, Mal here from canDo Multimedia, an Irish 3D interactive development company. We are using a lot of Shockwave 3D at the moment ( along with the online Havok engine ) for some web games, which you can see at... http://www.candomultimedia.com/games/demos.htm Firstly, I don't know if many of you on the list know, but ODE will soon be integrated as a physics option into the realtime 3D engine of the now open sourced version of Blender ( www.blender.org ). This is great for a number of reasons... - It will raise the awareness of open source game related projects like Blender and ODE. - More developers will be keen to work on these projects - Because Blender is cross platform, a lot of work will be carried out to ensure that ODE is deployed on platforms that it wasn't available on before - ODE developers will be able to show what the engine can do online ( Blender has a web plugin ) Blender has a fairly high learning curve, but is a great prototyping tool ( imagine designing a car, defining it's wheels / suspension / mass etc and clicking a button to immediately let you drive it around a 3D world for testing purposes / to let the artists play with parameters etc ). I am looking forward to seeing a lot more content created this way! It makes it more accessible for artists to know how to design content for physics based games ( using proxies, compound convex objects etc for optimisations ) One quick suggestion, from the http://q12.org/ode/ode.html website there doesn't seem to be any updates on news, or any easy way to see examples of content created with ODE. A quick revamp with a gallery of examples and links to downloadable demos would be great, as a lot more people should be checking it out over the coming months. Thanks for taking the time to read the post, and I look forward to reading future postings on this mailing list. Mal From martin at metahuman.org Fri Oct 18 07:26:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Fri Oct 18 07:26:02 2002 Subject: [ODE] a newbies question on hinge and robot legs... References: <020c01c2768b$d87d7eb0$c36abb84@tig> Message-ID: <3DB019E0.3970D42D@metahuman.org> > Michael Scharvogel wrote: > > (One Body, six legs, each leg consisting of two parts and connected by > two hinges) > > In the final state I'd like to say something like: > Hinge 1 bow 10 degrees. > > So do I have to attach Motors to the hinges to achiev this (I did not > quiet figure out how this could work) or do I have to use these > Transform geometries and rotate them (I I understood them right they can > be used to rotate for example a leg around one of its ends) You need a motor. Transform geometries are for fixed relationships. However, hinges come with a motor built in. The motor controls velocity, not position, so the easiest thing is probably to set the velocity proportional to how far off the position is. Once you've figured out your desired velocity, call: dJointSetHingeParam (joint, dParamVel, desired_velocity); - Martin From ivan.bolcina at volja.net Fri Oct 18 08:04:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 18 08:04:02 2002 Subject: [ODE] 3d world directx Message-ID: <004801c276b7$88d9c0e0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0045_01C276C8.4C3936F0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Yes, but every time i get/set position,direction from ode to directx = structs, and vice versa, I have to swap y and z. ------=_NextPart_000_0045_01C276C8.4C3936F0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Yes, but every time i get/set = position,direction=20 from ode to directx structs, and vice versa, I have to swap y and=20 z.
------=_NextPart_000_0045_01C276C8.4C3936F0-- From ericc at xenopi.com Fri Oct 18 09:46:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Fri Oct 18 09:46:01 2002 Subject: [ODE] box stacking instability In-Reply-To: <20021018000754.21ea5baa.russ@q12.org> Message-ID: <001c01c276c6$28703680$6401a8c0@donald> Funny that you mention Arachi. I know the founder (Kyong Sok Chang) - he's an old friend of mine from college. We went to Umich (go Blue!) together (and actually got the same degree in Aerospace Engineering) I haven't talked to K.C. in quite a while, but did run into him at the GDC 2 years back when he had just started Arachi. I believe K.C. did his graduate (PhD) work at Stanford on computer physics simulation, and I believe founded the company based on his research. I haven't read over his research, but you might want to do a search of academic papers using his name to see what you might come up with. I *would* drop K.C. a line, but as I said, I haven't talked to him in quite a while, and to be honest, I would feel quite awkward asking him about his technology when I have no interest in it whatsoever (because we have our own solution which is working at a satisfactory level). Eric > > On a side note, the same professor mentioned the Arachi dynamics > > engine(www.arachi.com). It's commercial and exceedingly expensive > > ($30,000) but he speaks very highly of it. It would be > interesting to > > potentially adopt some of their techniques... > > hmmm ... the web site gives no clues about the techniques (or > about anything, really). does anyone know what arachi is doing? > > russ. > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From russ at q12.org Fri Oct 18 10:06:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 10:06:01 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: <001801c276ad$38345a10$d834fe3e@MalLaptop> References: <001801c276ad$38345a10$d834fe3e@MalLaptop> Message-ID: <20021018100957.7ff31ceb.russ@q12.org> > One quick suggestion, from the http://q12.org/ode/ode.html website > there doesn't seem to be any updates on news, or any easy way to see > examples of content created with ODE. the 'community' section has links to some downloadable demos. as far as 'news' goes - various incremental improvements have been reported only on the mailing list in the past months, not on the web site. i'm gradually working towards a new release that will fix a number of long-outstanding issues and also finally integrate some of the 'contrib' code that has been contributed. russ. -- Russell Smith http://www.q12.org From ivan.bolcina at volja.net Fri Oct 18 10:19:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 18 10:19:02 2002 Subject: [ODE] 3d world directx -- slipch, please help Message-ID: <002301c276ca$52d446b0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0020_01C276DB.162787C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi,look at this code: //get orientation from ode and put it in my d3d Quatrernion const dReal *qx=3D dBodyGetQuaternion (PhyBody); D3DXQUATERNION qxx; qxx.x=3D(float)qx[0]; qxx.y=3D(float)qx[2]; qxx.z=3D(float)qx[1]; qxx.w=3D(float)qx[3]; setOrientation(qxx); //to directx //get positionfrom ode and put it in my D3DXVECTOR3 const dReal * p=3DdBodyGetPosition(PhyBody); //to directx m_Position.x=3D(float)p[0]; m_Position.y=3D(float)p[2]; m_Position.z=3D(float)p[1]; //same for velocity const dReal * p1=3DdBodyGetLinearVel(PhyBody);=20 move.x=3D(float)p1[0]; move.y=3D(float)p1[2]; move.z=3D(float)p1[1]; //end test //I dont understand ..... :-((( I wish to get angular rotation around = x,y,z //then I wish to find differece between wished angular rotation(from = joystick) and current angular rotation //then I wish to apply torque so they eventually mach. const dReal * rotx=3DdBodyGetAngularVel (PhyBody); dVector3 result; dBodyVectorFromWorld(PhyBody, rotx[0],rotx[1],rotx[2],result); rotate.x=3Dresult[0]; rotate.y=3Dresult[1]; rotate.z=3Dresult[2]; D3DXVECTOR3 = rotVec=3DMaxRotate*D3DXVECTOR3(controls.axis_lr*1.0f,-controls.axis_ro*1.= 0f,-controls.axis_ud*1.0f); rotVec-=3Drotate; if (rotVec.x>0) rotVec.x=3DRotMax; if (rotVec.x<0) rotVec.x=3D-RotMax; if (rotVec.y>0) rotVec.y=3DRotMax; if (rotVec.y<0) rotVec.y=3D-RotMax; if (rotVec.z>0) rotVec.z=3DRotMax; if (rotVec.z<0) rotVec.z=3D-RotMax; dBodyAddRelTorque(PhyBody,70000.0f*rotVec.x,70000.0f*rotVec.y,70000.0f*ro= tVec.z); //force which heads me forward, move is current movement, posp is wished = movement(from joystick) float facsped=3D1.0f; if (controls.burner) facsped=3D2.0f; D3DXVECTOR3 posp; //m_vz is vector forward if (controls.burner) posp=3Dm_vz*1.0f*SpeedMax*facsped; else posp=3Dm_vz*controls.axis_throttle*SpeedMax*facsped; //v razliko posp-=3Dmove; float len=3DD3DXVec3Length(&posp); if (len!=3D0.0f) { posp/=3Dlen; D3DXVECTOR3 ForceApplied=3Dposp*MaxEngine;=20 dBodyAddForce(PhyBody,ForceApplied.x,ForceApplied.z,ForceApplied.y); = //SEE HERE } ------=_NextPart_000_0020_01C276DB.162787C0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi,look at this code:

 

 

//get orientation from ode and put it in my d3d=20 Quatrernion

const = dReal *qx=3D=20 dBodyGetQuaternion (PhyBody);

D3DXQUATERNION qxx;

qxx.x=3D(float)qx[0];

qxx.y=3D(float)qx[2];

qxx.z=3D(float)qx[1];

qxx.w=3D(float)qx[3];

setOrientation(qxx);        &n= bsp;       =20 //to directx

 

//get positionfrom ode and put it in my=20 D3DXVECTOR3

const = dReal *=20 p=3DdBodyGetPosition(PhyBody);

//to directx

m_Position.x=3D(float)p[0];

m_Position.y=3D(float)p[2];

m_Position.z=3D(float)p[1];

 

//same for velocity

const = dReal *=20 p1=3DdBodyGetLinearVel(PhyBody);

move.x=3D(float)p1[0];

move.y=3D(float)p1[2];

move.z=3D(float)p1[1];

//end test

 

 

//I dont understand ..... = :-(((  I wish=20 to get angular rotation around x,y,z

//then I wish to find differece = between wished=20 angular rotation(from joystick) and current angular rotation

//then I wish to apply torque so = they=20 eventually mach.

const = dReal *=20 rotx=3DdBodyGetAngularVel (PhyBody);

dVector3 result;

dBodyVectorFromWorld(PhyBody, rotx[0],rotx[1],rotx[2],result);

rotate.x=3Dresult[0];

rotate.y=3Dresult[1];

rotate.z=3Dresult[2];

D3DXVECTOR3=20 rotVec=3DMaxRotate*D3DXVECTOR3(controls.axis_lr*1.0f,-controls.axis_ro*1.= 0f,-controls.axis_ud*1.0f);

rotVec-=3Drotate;

if = (rotVec.x>0)=20 rotVec.x=3DRotMax;

if = (rotVec.x<0)=20 rotVec.x=3D-RotMax;

if = (rotVec.y>0)=20 rotVec.y=3DRotMax;

if = (rotVec.y<0)=20 rotVec.y=3D-RotMax;

if = (rotVec.z>0)=20 rotVec.z=3DRotMax;

if = (rotVec.z<0)=20 rotVec.z=3D-RotMax;

dBodyAddRelTorque(PhyBody,70000.0f*rotVec.x,70000.0f*rotVec.y,70000.0f= *rotVec.z);

 

 

//force which heads me forward, move = is current=20 movement, posp is wished movement(from joystick)

float = facsped=3D1.0f;

if = (controls.burner)=20 facsped=3D2.0f;

D3DXVECTOR3 posp;

//m_vz is vector forward

if=20 (controls.burner)

    posp=3Dm_vz*1.0f*SpeedMax*facsped;

else

    = posp=3Dm_vz*controls.axis_throttle*SpeedMax*facsped;

//v razliko

posp-=3Dmove;

float=20 len=3DD3DXVec3Length(&posp);

if = (len!=3D0.0f)

{

    posp/=3Dlen;

    D3DXVECTOR3 ForceApplied=3Dposp*MaxEngine;

   =20 dBodyAddForce(PhyBody,ForceApplied.x,ForceApplied.z,ForceApplied.y); = ;      =20 //SEE HERE

}

 
------=_NextPart_000_0020_01C276DB.162787C0-- From coding at natew.com Fri Oct 18 10:39:01 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 10:39:01 2002 Subject: [ODE] a newbies question on hinge and robot legs... In-Reply-To: <020c01c2768b$d87d7eb0$c36abb84@tig> Message-ID: On Fri, 18 Oct 2002, Michael Scharvogel wrote: > In the final state I'd like to say something like: > Hinge 1 bow 10 degrees. > > So do I have to attach Motors to the hinges to achiev this (I did not > quiet figure out how this could work) or do I have to use these > Transform geometries and rotate them (I I understood them right they > can be used to rotate for example a leg around one of its ends) What you're talking about is a job for motors. You don't have to "attach" motors to joints though, in ODE joints have motorization built into them. The motor API does not allow command like "move 10 degrees" though. Instead, you ask it something like "Hinge 1 move at 5 degrees per second" until the hinge is at the angle you desire. This means checking the hinge angle every frame, comparing it to the desired hinge angle, and asking it to move at a speed proportional to the difference. If you search the mailing list archives you'll probably find some messagse from me on this subject. The most recent of those messages are the most correct - I was trying to do it the wrong way at first. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Fri Oct 18 10:51:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 10:51:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: <001801c276ad$38345a10$d834fe3e@MalLaptop> Message-ID: On Fri, 18 Oct 2002, Malachy Duffin wrote: > imagine designing a car, defining it's wheels / suspension / mass > etc and clicking a button to immediately let you drive it around a 3D > world for testing purposes "Imagine?" :-) http://www.natew.com/juice/frames.cgi/general/html.ScreenShots http://www.natew.com/juice/frames.cgi/general/html.Pix > One quick suggestion, from the http://q12.org/ode/ode.html website there > doesn't seem to be any updates on news, or any easy way to see examples > of content created with ODE. > > A quick revamp with a gallery of examples and links to downloadable > demos would be great, as a lot more people should be checking it out > over the coming months. Check the community page for examples of content. There are a few projects with screenshots and downloadable movies, not just mine. -- Nate Waddoups Redmond WA USA http://www.natew.com From Alan_Gordie at payformance.com Fri Oct 18 11:11:01 2002 From: Alan_Gordie at payformance.com (Alan Gordie) Date: Fri Oct 18 11:11:01 2002 Subject: [ODE] Introduction / Suggestions etc Message-ID: Hi Mal! Well, perhaps it's time for me to de-lurk... (due to the mention of ODE integration with Blender) My name is Alan Gordie and I've been steadily building a robust, spring-mass simulation engine (http://gordie.go.dyndns.org/) for simulating vehicles and structures for fun. Contemplating the GPL release of Blender, I'd been toying with the idea of grafting my sim code into/onto Blender, but that would be pointless if ODE were to be integrated with Blender. At any rate, I've been following ODE (and the mailing list) for awhile now and find myself continually more impressed with its' progress as time goes on. (Thanks to Russ and the rest of you!) It seems to me that ODE has reached 'escape velocity' in terms of project growth and community support. Don't get me wrong, I think there is huge potential, but it seems like it has enough momentum now to easily move to the next level. And the point is: Now, after the release of the Blender source, I've decided to contribute in any ways that I can in terms of adding my spring-mass modeling primitives to ODE, as well as offering development assistance for the "ODE Plugin" for Blender. As Mal mentioned, there are many compelling reasons to add support this effort, but there is one that stands out for me. It will ensure that there is a open-sourced, freely-available tool suite for rigid body simulation. So, who else is interested in devoting some time to the ODE/Blender effort? I've been hanging around in #ode on EFNET since it was announced a few days ago, but there hasn't been much activity. If there are enough interested parties, I'd like to propose that we hook up on irc to start drawing up a set of plans. Any takers? Alan alan_gordie@payformance.com alangordie@attbi.com -----Original Message----- From: Malachy Duffin [mailto:mal@candomultimedia.com] Sent: Friday, October 18, 2002 9:50 AM To: ode@q12.org Subject: [ODE] Introduction / Suggestions etc Hello all, Mal here from canDo Multimedia, an Irish 3D interactive development company. We are using a lot of Shockwave 3D at the moment ( along with the online Havok engine ) for some web games, which you can see at... http://www.candomultimedia.com/games/demos.htm Firstly, I don't know if many of you on the list know, but ODE will soon be integrated as a physics option into the realtime 3D engine of the now open sourced version of Blender ( www.blender.org ). This is great for a number of reasons... - It will raise the awareness of open source game related projects like Blender and ODE. - More developers will be keen to work on these projects - Because Blender is cross platform, a lot of work will be carried out to ensure that ODE is deployed on platforms that it wasn't available on before - ODE developers will be able to show what the engine can do online ( Blender has a web plugin ) Blender has a fairly high learning curve, but is a great prototyping tool ( imagine designing a car, defining it's wheels / suspension / mass etc and clicking a button to immediately let you drive it around a 3D world for testing purposes / to let the artists play with parameters etc ). I am looking forward to seeing a lot more content created this way! It makes it more accessible for artists to know how to design content for physics based games ( using proxies, compound convex objects etc for optimisations ) One quick suggestion, from the http://q12.org/ode/ode.html website there doesn't seem to be any updates on news, or any easy way to see examples of content created with ODE. A quick revamp with a gallery of examples and links to downloadable demos would be great, as a lot more people should be checking it out over the coming months. Thanks for taking the time to read the post, and I look forward to reading future postings on this mailing list. Mal _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From nlin at nlin.net Fri Oct 18 11:44:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Fri Oct 18 11:44:02 2002 Subject: [ODE] ODE and the Blender real-time 3d modeling/gaming environment Message-ID: <20021018202815.GA32125@nlin.net> Hello, I have checked in a version of Blender with preliminary support for ODE. Set your CVSROOT to :pserver:anonymous@217.77.141.135:/cvs01 and do a CVS co of module "blender" to obtain the source code. For those who don't know, Blender is a powerful 3D modeling package which just became free software under the GPL license. It has a built-in real-time 3D game engine whose physics are now being replaced with ODE. Blender is very interesting for the ODE community because it can be a very powerful tool for quickly creating real-time games; now, coupled with ODE, it can be used for quickly creating ODE simulations - similar to Nate W's "juice" application, but with the full power of a general- purpose 3D modeler and game engine. For instance, using Blender's game engine, you can have ODE-controlled dynamic objects interact with other game objects controlled via scripts or paths. This is preliminary work. There is still a lot left to do. I only tested it on Debian GNU/Linux. See the todo list in OdePhysicsController.cpp for an idea of what still needs to be done. Anyone interested in contributing please discuss via the mailing list or private e-mail. Thanks, -Norman From Brad at fie.us Fri Oct 18 12:31:01 2002 From: Brad at fie.us (Brad Friedman) Date: Fri Oct 18 12:31:01 2002 Subject: [ODE] ODE and the Blender real-time 3d modeling/gaming environment References: <20021018202815.GA32125@nlin.net> Message-ID: <3DB06199.4020407@fie.us> From tetron at interreality.org Fri Oct 18 13:22:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 18 13:22:02 2002 Subject: [ODE] networking In-Reply-To: Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I'll jump in here. I really want to use ODE for my distributed multiuser virtual reality system (http://interreality.org), hence the interest in stable box stacking -- a virtual world would naturally allow you to stack stuff on top of other stuff just like in the real world (and then knock it down :-) The system is peer-to-peer and designed such that each object in the system has an authoratative instance, and the world is described by hyperlinking objects together (which usually includes linking across hosts) (lots more information about how this all fits together on the web page). For dynamics simulation, I intend to have a policy that the authoratative instance is entirely responsible for the dynamic movement of its objects, and nonlocal objects are considered more or less static. So the dynamics simulation is more or less consistant from the perspective of each user (even if globally it's way off, as long as it looks okay) without violating trust bounderies between hosts by manipulating objects you don't control. The problem with distributed simulation in the game paradigm is, of course, users may cheat -- however the VR stuff I'm interested in is intended to be social and not competetive, so there isn't really the same notion of "cheating". On Wed, 16 Oct 2002, Nate W wrote: > The thing that makes me want to avoid that model today is that physics > takes a lot of CPU power. Every client brings a fast CPU to the party... > if there's a way to make use of that power, many clients together could be > able to do much more complex simulations than a single server (or rather, > "more complex that the server *I* can afford"). Ideally, it gets a lot > cheaper to scale the system to support more users, becase each user brings > enough CPU power to do their share of the computation. Practically it > will never be quite that scalable, but I still like the idea. > > If you can have each client simulate the parts of the player's body or > vehicle, then broadcast the positions and orientations, the server's CPU > requirements go down quite a bit. Note that I'm assuming a game sort of > paradigm here, but other scenarios could use other methods of assigning > objects to CPUs. > > I'd elaborate, but I see that Anselm has already described something like > what I had in mind, only better. :-) [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9sG0vaeHUyhjCHfcRAlWcAJ4sCItHR5nYGP8MpA77B4uWQyaiqQCgr55D /GkkJGsj8Vvj1hnVHp/YifA= =ertj -----END PGP SIGNATURE----- From tetron at interreality.org Fri Oct 18 13:27:01 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 18 13:27:01 2002 Subject: [ODE] box stacking instability In-Reply-To: Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thu, 17 Oct 2002, Nate W wrote: > I have no doubt that boxes will rest on other boxes when the box-box > collision code returns three contact constraints when boxes are touching > in a face-to-face configuration. It works for boxes on planes now, it > will work for boxes on boxes eventually. This is very encouraging -- I quite want to see this happen as it is a prerequisite for ODE being useful for me. If someone can give me some pointers on where to look and what needs to be done, I'll happily roll my sleves up and look into fixing this. Any suggestions? [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9sG5jaeHUyhjCHfcRAjNhAKCqgzG0epl2qZy59mhDb608prVZ5gCgj0ap H8wDr1BK9N3wjcXrqtSwtJA= =jfiA -----END PGP SIGNATURE----- From russ at q12.org Fri Oct 18 13:50:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 13:50:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: cool! i'm in full support of ODE/blender integration - i think this is quite an exciting prospect. in fact i took some very preliminary steps in this direction as soon as the blender sources were released - but as norman is far in advance of my own pitiful attempt i will abandon what i am doing and help out the existing effort. i have a question: the commercial dynamics providers (ME, havok etc) have their own plugins for 3DSMax, maya, and other expensive tools. i am wondering what functionality, if any, would be lost by an artist switching from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a blender dummy.) about the suggestion to use IRC - it would be perhaps more useful to discuss this on the mailing list - so that at least we have an archived, google-searchable record. this discussion ties in with the file format discussion. i am guessing that the initial blender integration will be to run ODE simulations within blender to produce animation data, and that the saved dynamics information will be tied in with blenders own file format(s). it would also be nice if it blender could export a file format describing just the dynamical attributes that have been given to the geometry objects, so that in my game/simulation/whatever i could load this data, construct the ODE objects, then attach the objects to my scene data. it's important to have a file format that can separates dynamics attributes from the geometry data. this is because, e.g., i might design my dynamical system in blender but then use some non-blender-created graphics in my application. we dont want to tie the data to the application after all. nate and others - is there any useful level of concensus on what the "one true file format" should be? (disclaimer: i've not looked at the juice file format or any others). if there is no convergence yet, i have a pile of my own ideas i would like to contribute here. russ. -- Russ Smith http://www.q12.org/ From russ at q12.org Fri Oct 18 14:00:03 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 14:00:03 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: > i have a question: the commercial dynamics providers (ME, havok etc) have > their own plugins for 3DSMax, maya, and other expensive tools. i am > wondering what functionality, if any, would be lost by an artist switching > from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a > blender dummy.) oh ... and i know that 3DSMax/Havok supports cloth and squishy bodies (ODE doesn't yet) ... my question is more to do with the capabilities of blender itself vs 3DS etc. russ. -- Russ Smith http://www.q12.org/ From nathan at whatever.net Fri Oct 18 14:45:02 2002 From: nathan at whatever.net (Nate Waddoups) Date: Fri Oct 18 14:45:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: On Fri, 18 Oct 2002, Russ Smith wrote: > nate and others - is there any useful level of concensus on what the "one > true file format" should be? (disclaimer: i've not looked at the juice > file format or any others). if there is no convergence yet, i have a pile > of my own ideas i would like to contribute here. I went with an XML sort of format merely for the sake of experience with SAX and putting XML on my resume. It was also nice to have a pre-existing parser and a standard parser API (MSXML and SAX). I pretty much made it up as a went along, so I'm not terribly attached to the format. Novodex uses a format that looks friendly to C/C++ people (using { and } and familiar indenting, for example), and if I understand correctly they would be happy to see it used as a common open standard. It's definitely worth a look. Speaking of which, I'm reminded of a message from Adam @ Novodex that I didn't get around to replying to the other day... Anyhow, once a good file format gets agreed upon, I think a second key ingredient to standardization would be to have some open and shared "deserialization" code available. The less work it takes for application developers to import such files, quicker they (we?) will support it. Serialization and deserialization are useful for sharing data over a network as well as persisting stuff to disk, so I kinda like the idea of designing the file format and accompanying code with that in mind as well. It could be possible to load objects (and even synchronize them) over a network using the same format and much of the same deserialization code. That aspect would be helped quite a bit if the application objects had a common API to use when moving data from disk (or from the network) and into the application. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Fri Oct 18 14:50:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 14:50:02 2002 Subject: [ODE] file formats In-Reply-To: <200210170913.g9H9DQx22252@dubb05h07-0.dplanet.ch> Message-ID: On Thu, 17 Oct 2002 amoravanszky@dplanet.ch wrote: > We at NovodeX think the entire community, regardless of which physics > SDK is used, would benefit from a file format that is an open > standard. In particular we are open to file format extensions as > required by Juice -- though of course we should debate them first. I haven't looked too deeply into the Novodex docs yet, but as far as I can tell, the only stuff the Juice files contain that doesn't fit right into the Novodex for format is stuff that pertains to motion control. I don't think that really should be part of a common file format, because (as far as I'm aware) control systems themselves are not yet standardized. I came up with a couple of them for Juice, but chances are no other application would support them or even want them. The main thing, I think, would be to have a syntax that allows for application-specific additions, and some sort of namespace control (even if it's just the honor system) so that each application can easily ignore any sections of the file that it doesn't support. -- Nate Waddoups Redmond WA USA http://www.natew.com From amoravanszky at dplanet.ch Fri Oct 18 15:49:01 2002 From: amoravanszky at dplanet.ch (Adam Moravanszky) Date: Fri Oct 18 15:49:01 2002 Subject: [ODE] Introduction / Suggestions etc References: Message-ID: <001c01c276f8$da7e1c20$c912da50@powerhouse> This is a multi-part message in MIME format. ------=_NextPart_000_0019_01C27709.9D4F8300 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit > worth a look. Speaking of which, I'm reminded of a message from Adam @ > Novodex that I didn't get around to replying to the other day... > > Anyhow, once a good file format gets agreed upon, I think a second key > ingredient to standardization would be to have some open and shared > "deserialization" code available. The less work it takes for application > developers to import such files, quicker they (we?) will support it. Hi Nate, I attached some simple parser code (only 7K, I guess that is OK). It can create the ODS data structure from a C++ stream, or write a structure to a stream. This stuff only works on the ODS syntax level, and is not physics specific. All the higher (physics) level serialization code is part of the free viewer code in the SDK download, but of course on that level things are less portable -- as you know for example our joint limits are specified quite differently than those in ODE, for example. Still, standardization even on this level would not hurt. -- Adam Moravanszky /*================*\ |Chief Software Architect |NovodeX AG |physics middleware |www.novodex.com \*================*/ ------=_NextPart_000_0019_01C27709.9D4F8300 Content-Type: application/x-zip-compressed; name="odblock.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="odblock.zip" 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 ------=_NextPart_000_0019_01C27709.9D4F8300-- From nlin at nlin.net Fri Oct 18 17:59:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Fri Oct 18 17:59:02 2002 Subject: [ODE] ODE/Blender Message-ID: <20021019024242.GA32509@nlin.net> Russ Smith wrote: > >i'm in full support of ODE/blender integration - i think this is quite >an exciting prospect. in fact i took some very preliminary steps in this >direction as soon as the blender sources were released - but as norman >is far in advance of my own pitiful attempt i will abandon what i am doing >and help out the existing effort. Not so fast - we may be doing different types of ODE/Blender integration so I wouldn't throw out your work just yet... >i have a question: the commercial dynamics providers (ME, havok etc) have >their own plugins for 3DSMax, maya, and other expensive tools. i am >wondering what functionality, if any, would be lost by an artist switching >from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a >blender dummy.) Something important to understand about Blender is that it has a built-in real-time interactive 3D game engine. This means you can model a 3D scene in Blender, press the "P" key, and Blender instantly (typically less than 1 second) starts the game engine, which then controls all objects on-screen. This is a reasonably complete (Turing-complete, anyway) game engine; you can animate objects along paths, read keyboard input, move the camera and players around, create/destroy objects, set variables, send messages between objects, run scripts, and have objects controlled by the physics subsystem. This physics subsystem in the real-time game engine is what I am working on, so that Blender real-time games can have dynamic objects controlled by ODE. (The previous Blender game physics were impulse-based.) >i am guessing >that the initial blender integration will be to run ODE simulations >within blender to produce animation data, and that the saved dynamics >information will be tied in with blenders own file format(s). This is not the ODE/Blender integration I am working on right now, but it is very important as well, so that artists creating non-interactive animations (more traditional animations and movies) can also use ODE to create realistic dynamic motions. As I am not an expert in creating these kinds of animations, I don't know how such tools typically work or how they could be integrated into the modeling/animation workflow of Blender (as opposed to the game engine integration, which appears to me to be of a different nature). The way it is now integrated, physical properties of objects are specified either in the Blender material for the object (button DYN in the MaterialButtons) and/or in the Blender Game Attributes for the object (in the GameButtons). These buttons allow the user to enter properties like mass, friction, bounding volume, etc. The Blender game engine reads these fields on game startup, then creates the ODE objects. A rendering/animation tool should probably use these same buttons to read out physically relevant information, but would start an ODE world and simulate one timestep forward for each frame of the animation rendered. >From what you write above it sounds like you are talking about the possibility of running the simulation just once then "baking in" the ODE-computed animation to save the animation data somewhere. This would also be possible. Again, I don't know how such tools usually work. >it would >also be nice if it blender could export a file format describing just the >dynamical attributes that have been given to the geometry objects, so >that in my game/simulation/whatever i could load this data, construct the >ODE objects, then attach the objects to my scene data. Blender has a python scripting interface, and many good python scripts have been written, especially for exporting/importing data. The python integration is kind of shaky right now, since the project just went GPL, but I expect it to stabilize. At that point, it should then be fairly easy to add python access to the new dynamical attributes (friction, restitution, bounding volumes, mass, etc) associated with each object. Then a python script could simply iterate over all objects in the scene, iterate over all attributes for each object, and write it out in any format desired. -Norman From russ at q12.org Fri Oct 18 20:36:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 20:36:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021019024242.GA32509@nlin.net> References: <20021019024242.GA32509@nlin.net> Message-ID: <20021018204011.2905d6de.russ@q12.org> > This physics subsystem in the real-time game engine is what I am > working on, so that Blender real-time games can have dynamic objects > controlled by ODE. (The previous Blender game physics were > impulse-based.) ah ... how are the dynamical properties of objects set in blender? i have in mind something where you select two objects, add a joint at a specific position, drag the low/high limits (some kind of draggable widgets that surround the joint), pop up a dialog box for the joint/body/surface properties, etc etc. of course i should just try out your work in blender - but i have found it (blender) even more difficult to use for the ininitiated than 3DSMax, which is saying something. russ. -- Russell Smith http://www.q12.org From coding at natew.com Fri Oct 18 21:12:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 21:12:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021018204011.2905d6de.russ@q12.org> Message-ID: On Fri, 18 Oct 2002, Russ Smith wrote: > of course i should just try out your work in blender - but i have found > it (blender) even more difficult to use for the ininitiated than 3DSMax, > which is saying something. That's good to hear, I was afraid it was just me. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From nlin at nlin.net Sat Oct 19 07:19:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Sat Oct 19 07:19:02 2002 Subject: [ODE] Re: ODE/Blender Message-ID: <20021019155757.GA4938@nlin.net> On Fri, Oct 18, 2002 at 08:40:11PM -0400, Russ Smith wrote: [reordering a bit...] > of course i should just try out your work in blender - but i have found > it (blender) even more difficult to use for the ininitiated than 3DSMax, > which is saying something. The Blender UI is about as intuitive as that of vi or emacs. Hard to learn, but very fast and powerful once you do know it. See http://www.cse.cuhk.edu.hk/~wmpang1/blender/blen_ui/blen_ui.html for a good introduction. It's somewhat old, but still relevant for the basics. > > This physics subsystem in the real-time game engine is what I am > > working on, so that Blender real-time games can have dynamic objects > > controlled by ODE. (The previous Blender game physics were > > impulse-based.) > > ah ... how are the dynamical properties of objects set in blender? i > have in mind something where you select two objects, add a joint at a > specific position, drag the low/high limits (some kind of draggable > widgets that surround the joint), pop up a dialog box for the > joint/body/surface properties, etc etc. After reading the above tutorial, add a mesh, add a new material to the mesh, and in the MaterialButtons look for a small button "DYN". This controls dynamic properties of the material connected with the mesh. E.g. friction, restitution, or some special Fh force on slopes (for the old physics, currently unused I think). Another place to enter material properties is by the GameButtons. Select a mesh, press F8 to go to the GameButtons, then click on the small "Actor" button, at which point some more buttons will appear, then click on "Dynamic" and "Rigid Body" (the old physics system had both "fake" dynamics and rigid-body dynamics, which is why you had to explicitly select "rigid body"; currently there is no longer any distinction between "Dynamic" and "Rigid Body" that I am aware of). At this point you can set the mass of the rigid body object, some damping properties, and some other properties which are probably outdated and were for the old physics system (like the "form factor"). To select the bounding volume for an object, select the object, go to the EditButtons (press F9), and at the left activate the button "Bounds" then select either "Box" or "Sphere". This controls whether the physics system will use a sphere or a box for the rigid body. "Polyheder" is also an option, which will eventually cause a tri-mesh to be generated using Erwin de Vries's triangle collider. There are currently some bugs with the bounding volume selection (see the ToDo list in OdePhysicsController.cpp) As for joints or constraints, Blender already has a constraints window designed for animation. You can constraint two objects to have the same location. By creating "empty" or "dummy" objects, and using these as parents of "real" objects, you can get point-to-point constraints in the modeler. The game engine could use this information for generating a ODE p2p constraint. There are some other simple constraints like "track to" or "copy orientation". The current constraint types are designed for animation/modeling help, but we could add new constraint types for physics, which would then be used in the game engine. Again see OdePhysicsController.cpp for notes on how this might work. Blender may be a bit confusing at first, but it a very powerful program and is worth learning. -Norman From nlin at nlin.net Sat Oct 19 07:21:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Sat Oct 19 07:21:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021018204011.2905d6de.russ@q12.org> References: <20021019024242.GA32509@nlin.net> <20021018204011.2905d6de.russ@q12.org> Message-ID: <20021019155926.GB4938@nlin.net> By the way, some sample files illustrating the current ODE/Blender integration are at http://www.xype.net/~nlin . These files will only work with the CVS version of blender at CVSROOT=:pserver:anonymous@217.77.141.135:/cvs01 . -Norman From Benny Sat Oct 19 08:32:02 2002 From: Benny (Benny) Date: Sat Oct 19 08:32:02 2002 Subject: [ODE] 3d world an directx Message-ID: <200210191531.g9JFV8u16679@hook.org> ------- Original Message -------- From: ivan.bolcina@volja.net To: "ode@q12.org" CC: Subject: [ODE] 3d world an directx Date: 17/10/02 07:10     Problems.   Is ode 3d world different from DirectXs? It seems to me that y and z axes are swapt.   bye,ivan From don_reid at attbi.com Sat Oct 19 09:04:02 2002 From: don_reid at attbi.com (don) Date: Sat Oct 19 09:04:02 2002 Subject: [ODE] Re: File formats In-Reply-To: <200210190101.g9J119u04892@hook.org> References: <200210190101.g9J119u04892@hook.org> Message-ID: <20021019160048.GA9649@reid.corvallis.or.us> An important thing to have in any file format, esp. a new one, is extensability. You want to be able to add new construts easily, and without changing old code. XML gives you this automatically. Of course the parser must then be written to skip over things it doesn't understand (with a warning if desired). Don Reid From ivan.bolcina at volja.net Sat Oct 19 13:17:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Sat Oct 19 13:17:01 2002 Subject: [ODE] 3d world on directx Message-ID: <007401c277ac$57b1de30$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0071_01C277BD.1A8E1A80 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi! I assure you that if I swap y and z axis, stuff works ok, otherwise = doesnt. Please look at my original code and see how are they swapt. I believe = that DirectX uses left-handed system. I pass only quaternions from ode to directx to determine current orientation. I have to swap axis in this case too. thanx, ivan ------=_NextPart_000_0071_01C277BD.1A8E1A80 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi!

I=20 assure you that if I swap y and z axis, stuff works ok, otherwise=20 doesnt.
Please look at my original code and see how are they swapt. I = believe=20 that
DirectX uses left-handed system.

I pass only quaternions = from ode=20 to directx to determine current
orientation. I have to swap axis in = this case=20 too.

thanx,
ivan

------=_NextPart_000_0071_01C277BD.1A8E1A80-- From airsona at bestweb.net Sat Oct 19 22:35:02 2002 From: airsona at bestweb.net (Sasha H) Date: Sat Oct 19 22:35:02 2002 Subject: [ODE] Flight Simulation Message-ID: <001601c27795$5a7a6b80$4001b3d8@airsona> This is a multi-part message in MIME format. ------=_NextPart_000_0013_01C27773.D27DCF40 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hey guys, I've few questions! Okey, I'm planning to use ODE to make my airplane fly... Would it be possible to simulate aerodynamics on each element of the = airplane (body, right wing, left wing, tail, etc...)? What is the best = approach, even if it's not "super realistic".=20 And also, if I have a mesh and a terrain, does ODE support such = collisions?=20 Cool......thanks! ------=_NextPart_000_0013_01C27773.D27DCF40 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hey guys, I've few = questions!
Okey, I'm planning to use ODE to make = my airplane fly...
Would it be possible to simulate = aerodynamics on=20 each element of the airplane (body, right wing, left wing, tail, = etc...)? What=20 is the best approach, even if it's not "super realistic".
And also, if I have a mesh and a = terrain, does ODE=20 support such collisions?
Cool......thanks!
 
 
------=_NextPart_000_0013_01C27773.D27DCF40-- From grubertm at hotmail.com Sat Oct 19 22:57:01 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Sat Oct 19 22:57:01 2002 Subject: [ODE] Flight Simulation References: <001601c27795$5a7a6b80$4001b3d8@airsona> Message-ID: >Okey, I'm planning to use ODE to make my airplane fly... >Would it be possible to simulate aerodynamics on each element of the airplane (body, right wing, left wing, >tail, etc...)? What is the best approach, even if it's not "super realistic". As I have never done a flightsim, I can only refer you to a book such as "Physics for Game Developers" which has a chapter on airplanes. >And also, if I have a mesh and a terrain, does ODE support such collisions? AFAIK no. Only one of the objects can be a mesh (trilist) the other one has to be a box or sphere (not sure about the current capped/cylinder status). I.e. you would use the bounding box of the fuselage & wings and a trilist for the terrain. - Marco Grubert From coding at natew.com Sat Oct 19 23:06:02 2002 From: coding at natew.com (Nate W) Date: Sat Oct 19 23:06:02 2002 Subject: [ODE] Flight Simulation In-Reply-To: Message-ID: On Sat, 19 Oct 2002, Marco Grubert wrote: > >And also, if I have a mesh and a terrain, does ODE support such collisions? > > AFAIK no. Only one of the objects can be a mesh (trilist) the other one has > to be a box or sphere (not sure about the current capped/cylinder status). > I.e. you would use the bounding box of the fuselage & wings and a trilist > for the terrain. That's a better answer than what I wrote just a minute ago. I think I misunderstood the question. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Sat Oct 19 23:09:02 2002 From: coding at natew.com (Nate W) Date: Sat Oct 19 23:09:02 2002 Subject: [ODE] Flight Simulation In-Reply-To: <001601c27795$5a7a6b80$4001b3d8@airsona> Message-ID: On Sat, 19 Oct 2002, Sasha H wrote: > Okey, I'm planning to use ODE to make my airplane fly... > > Would it be possible to simulate aerodynamics on each element of the > airplane (body, right wing, left wing, tail, etc...)? What is the best > approach, even if it's not "super realistic". $0.02 from a guy with a moderate understanding of aerodynamics and flying things: How about applying a force to each flying surface, in proportion to what the aerodynamic force on said surface should be? You could calculate the lift and drag for the wings, for example, and a force for the deflection of each control surface, etc. I bet you'd get fun, if not realistic, results. Make the force computations as accurate and sophisticated as your understanding of aerodynamics, learn all you can, and polish them up as you learn. > And also, if I have a mesh and a terrain, does ODE support such > collisions? If you mix in the "tri-collider" contribution, you can do collision detection between height-mapped terrain and boxes or spheres. A few of us have been doing this in our ODE projects for a while now. I'm using it with the Demeter terrain engine and I'm pretty happy with the results. -- Nate Waddoups Redmond WA USA http://www.natew.com From John Lagerquist Sun Oct 20 02:57:02 2002 From: John Lagerquist (John Lagerquist) Date: Sun Oct 20 02:57:02 2002 Subject: [ODE] Quaternion Integration Message-ID: <00a801c2781e$c6941260$6401a8c0@singularity> It appears that NASA has a quaternion integration method that does not require normalization between integration steps. Does anyone have any information on this technique? Their webpage (http://ettc.usc.edu/dryden/tos/closedform.html) states: "NASA's technology represents a substantial improvement over traditional methods of integrating 4-D kinematics equations. Those methods solve the quaternion kinematic equations in a way that does not automatically preserve the unit normalization of the quaternion. These methods are therefore inherently prone to error and difficult to correct. Such traditional methods are computation-intensive because of the substantial amount of error correction needed to compensate for analytical drift. NASA's integration method preserves the mathematics of the quaternion space that it creates and therefore introduces no error associated specifically with non-preservation of the quaternion norm. As a result, error correction associated with normalization is not needed in the NASA method" John From rtonge90 at yahoo.co.uk Sun Oct 20 04:14:01 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sun Oct 20 04:14:01 2002 Subject: [ODE] Quaternion Integration Message-ID: <20021020111339.28128.qmail@web14909.mail.yahoo.com> Hello >Does anyone have any information on this technique? Here is the full text of the patent: http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=/netahtml/search-bool.html&r=1&f=G&l=50&co1=AND&d=ft00&s1=6,061,611.WKU.&OS=PN/6,061,611&RS=PN/6,061,611 Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From Remko at act-3d.com Sun Oct 20 08:42:01 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Sun Oct 20 08:42:01 2002 Subject: [ODE] Another strange wheel rotation Message-ID: <277753125.359388433.98@server> Ok, it was a stupid mistake. The hinges where initialized AFTER the first simulation step. The wheels moved down because of the gravity and the rotation point was shifted. Changing the order fixed this. -Remko -----Original Message----- From: Remko Jacobs (act-3d.com) Sent: Thursday, October 17, 2002 11:40 AM To: ode@q12.org; Remko Jacobs (act-3d.com) Subject: [ODE] Another strange wheel rotation bug I fixed the 'bending wheels' problem using the following methods. The problem still exists but at least you can reduce it to acceptable levels: - Decrease the step size (update of 200-300Hz) - Different CFM and ERP values - Different masses - Bigger wheels (The bigger the wheels, the slower they have to turn for the same speed) I'm experimenting with a driving simulation and the results are stunning! However, after some experimentation, the car started to bounce and the handling was completely gone. It turned out that the wheel is not rotating around it's axis but around a point slightly above that. Gravity was causing this offset. Gravity pulls the wheel down so the rotation axis of the hinge is too high. What really surprised me, is the solution I found: When I set the gravity to zero the problem does not occur (as expected). When I crank up the gravity while the simulation is running, the bug does not come back but the wheel rotates around the correct point. Does anyone has an explanation for this? Why the rotation screws up when I initialize with gravity? -Remko _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From kjmac at freenet.co.uk Sun Oct 20 12:11:02 2002 From: kjmac at freenet.co.uk (Ken MacLeod) Date: Sun Oct 20 12:11:02 2002 Subject: [ODE] Compiling OPCODE 1.0 as a static lib for use with tri-collider Message-ID: <000301c2786c$4cf17990$0401a8c0@xperemental> (Apologies if this message is posted twice, I initially sent it using the incorrect email account) Hi, I’m developing a car simulation API for my MSc degree. I would like to be able to use ODE with the tri-collider contribution (ode/contrib) so that I can do sphere (wheel) triangle (terrain) collisions. Unfortunatly I have cannot for the life of me get opcode to compile as a static library. I printed off and followed the guide on the Wiki pages, but got only the following error output: --------------------Configuration: OPCODE 1_0 - Win32 Debug-------------------- Compiling... OPC_Container.cpp C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(41) : warning C4273: 'private: static unsigned int Opcode::Container::mNbContainers' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(41) : error C2491: 'Container::mNbContainers' : definition of dllimport static data member not allowed C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(42) : warning C4273: 'private: static unsigned int Opcode::Container::mUsedRam' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(42) : error C2491: 'Container::mUsedRam' : definition of dllimport static data member not allowed C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(50) : warning C4273: 'Container::Container' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(64) : warning C4273: 'Container::~Container' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(79) : warning C4273: 'Resize' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(121) : warning C4273: 'Contains' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(143) : warning C4273: 'Delete' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(166) : warning C4273: 'FindNext' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(186) : warning C4273: 'FindPrev' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(204) : warning C4273: 'GetUsedRam' : inconsistent dll linkage. dllexport assumed. OPC_Matrix4x4.cpp C:\MSc\opcode 1.0\opcode\OPC_Matrix4x4.cpp(65) : error C2491: 'InvertPRMatrix' : definition of dllimport function not allowed Error executing cl.exe. OPCODE 1_0.lib - 3 error(s), 10 warning(s) Looking through the archives for this mailing list someone named Norman had the same problem. He posted a message saying the he to could not compile opcode 1.0 as a static lib, unfortunately I could not see any reply to his request in the archives. Norman’s next post just thanked the author for helping him get it compiling! Here’s a snippit: ------------ Hi, Thanks to the author's help I was able to compile the tri-collider - I needed to modify opcode to compile it as a static library, then compile the files in the tri-collider directory as a static library, then link my test app against both libraries. … ---------- All help with this is greatly appreciated! Thanks, - Ken MacLeod --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 03/10/2002 From amoravanszky at dplanet.ch Sun Oct 20 13:12:01 2002 From: amoravanszky at dplanet.ch (Adam Moravanszky) Date: Sun Oct 20 13:12:01 2002 Subject: [ODE] Compiling OPCODE 1.0 as a static lib for use with tri-collider In-Reply-To: <000301c2786c$4cf17990$0401a8c0@xperemental> Message-ID: <5.1.0.14.0.20021020221049.009edb30@pop.dplanet.ch> Ken, You just have to get rid of the #defines that prefix all the functions / classes with __dllexport or __dllimport. It is not rocket science. --Adam At 08:10 PM 10/20/02 +0100, Ken MacLeod wrote: >(Apologies if this message is posted twice, I initially sent it using >the incorrect email account) > >Hi, >I'm developing a car simulation API for my MSc degree. I would like to >be able to use ODE with the tri-collider contribution (ode/contrib) so >that I can do sphere (wheel) triangle (terrain) collisions. Unfortunatly >I have cannot for the life of me get opcode to compile as a static >library. I printed off and followed the guide on the Wiki pages, but got >only the following error output: > >--------------------Configuration: OPCODE 1_0 - Win32 >Debug-------------------- >Compiling... >OPC_Container.cpp From Nguyen Binh Sun Oct 20 21:29:03 2002 From: Nguyen Binh (Nguyen Binh) Date: Sun Oct 20 21:29:03 2002 Subject: Re[2]: [ODE] Introduction / Suggestions etc In-Reply-To: <001c01c276f8$da7e1c20$c912da50@powerhouse> References: <001c01c276f8$da7e1c20$c912da50@powerhouse> Message-ID: <731305116.20021021111343@glassegg.com> As far as I know, Blender currently support Python. Then why do we need to re-implement a small descriptive language? Why we don't use the powerful Python? I didn't use Python but I use Lua (www.lua.org) and it does help alot.(I've heard that Python is much more powerful). >> worth a look. Speaking of which, I'm reminded of a message from Adam @ >> Novodex that I didn't get around to replying to the other day... >> >> Anyhow, once a good file format gets agreed upon, I think a second key >> ingredient to standardization would be to have some open and shared >> "deserialization" code available. The less work it takes for application >> developers to import such files, quicker they (we?) will support it. AM> Hi Nate, -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From ivan.bolcina at volja.net Mon Oct 21 12:15:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Mon Oct 21 12:15:02 2002 Subject: [ODE] ode to directx coordinates and orientation Message-ID: <000e01c27935$f510c620$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_000B_01C27946.B83F8F40 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi. Sorry cant speak Russian. I am from Slovenia, so we have slavic language = in common. I have this problem. Mapping 3-d coordinats from ode to directx. It is = not one to one. I have come to conclusion that positions, velocities are = mapped one to one, but orientation is like this function: //from ode to directx D3DXVECTOR3 convertVector(const dReal *in) { D3DXVECTOR3 out; out.x=3Din[0]; out.y=3Din[1]; out.z=3Din[2]; return out; } //from ode to directx D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=3D(float)in[0]; out.y=3D(float)in[1]; out.z=3D(float)in[2]; out.w=3D-(float)in[3]; return out; } So ODE is doing steps on objects and then I need to display it with = directx in corrent position and orientation. Position seem to be ok, but = orientation..... btw, I see you are professional game developer. How does it feel like? Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) ------=_NextPart_000_000B_01C27946.B83F8F40 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
Sorry cant speak Russian. I am from = Slovenia, so we=20 have slavic language in common.
I have this problem. Mapping 3-d = coordinats from=20 ode to directx. It is not one to one. I have come to conclusion that = positions,=20 velocities are mapped one to one, but orientation is like this=20 function:
 
//from ode to directx

D3DXVECTOR3 convertVector(const dReal *in)
{
D3DXVECTOR3=20 out;
out.x=3Din[0];
out.y=3Din[1];
out.z=3Din[2];
return = out;
}

//from ode to directx

D3DXQUATERNION convertQuaternion(const dReal *in)
{
D3DXQUATERNION=20 out;
out.x=3D(
float)in[0];
out.y=3D(
float)in[1];
out.z=3D(float)in[2];
out.w=3D-(float)in[3];
return=20 out;
}

 
So ODE is doing steps on objects and = then I need to=20 display it with directx in corrent position and orientation. Position = seem to be=20 ok, but orientation.....
 
btw, I see you are professional game = developer. How=20 does it feel like?
 
Lep pozdrav in dobro se imej tam v = mrzli=20 Rusiji. :-)
 
------=_NextPart_000_000B_01C27946.B83F8F40-- From ivan.bolcina at volja.net Tue Oct 22 02:03:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 02:03:01 2002 Subject: [ODE] Re: ode to directx coordinates and orientation References: <000e01c27935$f510c620$0100a8c0@vectra> <642235524.20021022104030@gsc-game.kiev.ua> Message-ID: <001101c279a9$8fddd8f0$0100a8c0@vectra> Hi,slipch. Thank you VERY much. It works great. So for anyone interested, here is transformation from ODE quaternion to DirectX's. D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=(float)in[1]; out.y=(float)in[2]; out.z=(float)in[3]; out.w=(float)in[0]; return out; } Ukraine is actually very near slovenia. Slovenia, Hungary, Ukraine. Najlepsa hvala se enkrat in uzivaj se naprej. Lep pozdrav,ivan. ----- Original Message ----- From: "slipch" To: "Ivan Bolcina" Sent: Tuesday, October 22, 2002 9:40 AM Subject: Re: ode to directx coordinates and orientation > Hello Ivan, > > Monday, October 21, 2002, 10:13:36 PM, you wrote: > > IB> //from ode to directx > IB> D3DXVECTOR3 convertVector(const dReal *in) > IB> { > IB> D3DXVECTOR3 out; > IB> out.x=in[0]; > IB> out.y=in[1]; > IB> out.z=in[2]; > IB> return out; > IB> } > > IB> //from ode to directx > > IB> D3DXQUATERNION convertQuaternion(const dReal *in) > IB> { > IB> D3DXQUATERNION out; > IB> out.x=(float)in[0]; > IB> out.y=(float)in[1]; > IB> out.z=(float)in[2]; > IB> out.w=-(float)in[3]; > IB> return out; > IB> } > > > IB> So ODE is doing steps on objects and then I need to display it with directx in corrent position and orientation. Position seem to be ok, but orientation..... > > IB> btw, I see you are professional game developer. How does it feel like? > I am doing my best to be it but I am only in the start :). > I translate DirectX transforms to ode and vise versa and > everything works right (As I already tell you it need to transpose DirectX matrix before > set it as ODE rotation matrix.). But I have never translate > Quaternion. > Following DirectX doc quaternion is > > q.x = sin(theta/2) * axis.x > q.y = sin(theta/2) * axis.y > q.z = sin(theta/2) * axis.z > q.w = cos(theta/2) > > From ODE doc: > > A quaternion is four numbers [cos(theta/2) sin(theta/2)*u] > where theta is a rotation angle and `u' is a unit length rotation axis. > > May be the problem in sequence cos(theta/2) - last in DIrectX and > first in ODE. Then > > D3DXQUATERNION convertQuaternion(const dReal *in) > { > D3DXQUATERNION out; > out.x=(float)in[1]; > out.y=(float)in[2]; > out.z=(float)in[3]; > out.w=(float)in[0]; > return out; > } > > IB> Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) > It is nearly understandable. > I am from Ukraine indeed. > > Nashi najkrashi pobazsannya! :) > > > -- > Best regards, > slipch mailto:slipch@gsc-game.kiev.ua > From ivan.bolcina at volja.net Tue Oct 22 02:06:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 02:06:01 2002 Subject: [ODE] Re: ode to directx coordinates and orientation References: <000e01c27935$f510c620$0100a8c0@vectra> <642235524.20021022104030@gsc-game.kiev.ua> Message-ID: <001a01c279a9$9e142730$0100a8c0@vectra> Hi,slipch. Thank you VERY much. It works great. So for anyone interested, here is transformation from ODE quaternion to DirectX's. D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=(float)in[1]; out.y=(float)in[2]; out.z=(float)in[3]; out.w=(float)in[0]; return out; } Ukraine is actually very near slovenia. Slovenia, Hungary, Ukraine. Najlepsa hvala se enkrat in uzivaj se naprej. Lep pozdrav,ivan. ----- Original Message ----- From: "slipch" To: "Ivan Bolcina" Sent: Tuesday, October 22, 2002 9:40 AM Subject: Re: ode to directx coordinates and orientation > Hello Ivan, > > Monday, October 21, 2002, 10:13:36 PM, you wrote: > > IB> //from ode to directx > IB> D3DXVECTOR3 convertVector(const dReal *in) > IB> { > IB> D3DXVECTOR3 out; > IB> out.x=in[0]; > IB> out.y=in[1]; > IB> out.z=in[2]; > IB> return out; > IB> } > > IB> //from ode to directx > > IB> D3DXQUATERNION convertQuaternion(const dReal *in) > IB> { > IB> D3DXQUATERNION out; > IB> out.x=(float)in[0]; > IB> out.y=(float)in[1]; > IB> out.z=(float)in[2]; > IB> out.w=-(float)in[3]; > IB> return out; > IB> } > > > IB> So ODE is doing steps on objects and then I need to display it with directx in corrent position and orientation. Position seem to be ok, but orientation..... > > IB> btw, I see you are professional game developer. How does it feel like? > I am doing my best to be it but I am only in the start :). > I translate DirectX transforms to ode and vise versa and > everything works right (As I already tell you it need to transpose DirectX matrix before > set it as ODE rotation matrix.). But I have never translate > Quaternion. > Following DirectX doc quaternion is > > q.x = sin(theta/2) * axis.x > q.y = sin(theta/2) * axis.y > q.z = sin(theta/2) * axis.z > q.w = cos(theta/2) > > From ODE doc: > > A quaternion is four numbers [cos(theta/2) sin(theta/2)*u] > where theta is a rotation angle and `u' is a unit length rotation axis. > > May be the problem in sequence cos(theta/2) - last in DIrectX and > first in ODE. Then > > D3DXQUATERNION convertQuaternion(const dReal *in) > { > D3DXQUATERNION out; > out.x=(float)in[1]; > out.y=(float)in[2]; > out.z=(float)in[3]; > out.w=(float)in[0]; > return out; > } > > IB> Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) > It is nearly understandable. > I am from Ukraine indeed. > > Nashi najkrashi pobazsannya! :) > > > -- > Best regards, > slipch mailto:slipch@gsc-game.kiev.ua > From facontidavide at hotmail.com Tue Oct 22 08:25:02 2002 From: facontidavide at hotmail.com (Edgard Oscuro) Date: Tue Oct 22 08:25:02 2002 Subject: [ODE] Get the motor torque Message-ID: Hi everyone. I am using ODE to simulate a humanoid robot (and it seems I am not the only one!). Usually we use the motors making them give a fixed velocity. I need to know the TORQUE genereted by the motor to have that velocity. Someone can suggest me how? I suppose I have to modify the code to create my how function, but where can I take this value? Thanks, Davide _________________________________________________________________ Chiacchiera con gli amici online, prova MSN Messenger! http://messenger.msn.it From ivan.bolcina at volja.net Tue Oct 22 11:50:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 11:50:02 2002 Subject: [ODE] This is corect, I hope? Message-ID: <001201c279fb$b4114ca0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_000F_01C27A0C.73C51FD0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi.=20 Is this function, which converts ODE vector to DirectX's, correct? It = appears so, exept for the mass to body assignment. bye,ivan D3DXVECTOR3 convertVector(const dReal *in) { D3DXVECTOR3 out; out.x=3Din[0]; out.y=3Din[1]; out.z=3Din[2]; return out; } ------=_NextPart_000_000F_01C27A0C.73C51FD0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
Is this function, which converts ODE = vector to=20 DirectX's, correct? It appears so, exept for the mass to body=20 assignment.
 
bye,ivan
 
 
D3DXVECTOR3 convertVector(const dReal *in)
{
D3DXVECTOR3=20 out;
out.x=3Din[0];
out.y=3Din[1];
out.z=3Din[2];
return=20 out;
}
------=_NextPart_000_000F_01C27A0C.73C51FD0-- From ahamilton_01 at hotmail.com Tue Oct 22 15:04:02 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Tue Oct 22 15:04:02 2002 Subject: [ODE] penalty method Message-ID: Every one say penalty method is bad, but has anybody actually tried it? I am talking about David Wu's gdc talk. Has any one actually implemented his method? Not trying to start a fight here, just going through all the alternatives... Al _________________________________________________________________ Broadband? Dial-up? Get reliable MSN Internet Access. http://resourcecenter.msn.com/access/plans/default.asp From g.r.vansickle at worldnet.att.net Tue Oct 22 18:44:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Tue Oct 22 18:44:02 2002 Subject: [ODE] penalty method In-Reply-To: Message-ID: > Every one say penalty method is bad, but has anybody actually tried it? I'd wager that pretty much *everybody* has actually tried it. It's bad. > I am > talking about David Wu's gdc talk. Has any one actually implemented his > method? Not trying to start a fight here, just going through all the > alternatives... I don't know what Mr. Wu had to say, but penalty methods have a built-in problem that is essentially intractable: they, by definition, lead to stiff systems of differential equations. Collisions and resting contact are either too squishy or your simulation blows up or both. I know for a fact that everybody who's ever considered the rigid-body simulation problem wish it weren't so, but it is. And to add insult to injury, the step from easily-understandable penalty methods to eye-glazingly complex more robust methods is a very long one. But luckily, Russ has a good start at putting this baby to bed once and for all for us ;-). -- Gary R. Van Sickle Brewer. Patriot. From nlin at nlin.net Tue Oct 22 19:36:01 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Tue Oct 22 19:36:01 2002 Subject: [ODE] penalty method Message-ID: <20021023040645.GE8364@nlin.net> Gary R. Van Sickle wrote: > > Every one say penalty method is bad, but has anybody actually tried it? > > I'd wager that pretty much *everybody* has actually tried it. It's bad. I believe by "it" the original poster was talking about David Wu's bag of tricks for penalty methods, not the penalty technique in general. > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say See http://www.pseudointeractive.com/games/penaltymethods.ppt Unfortunately, I was not able to attend this talk, so the slides are my only source of information on David Wu's techniques for penalty methods. He seems to swear by them. I, too, am interested in hearing from people who have tried David Wu's suggestions, since most penalty sims suffer from the well-known problems. -Norman From p.terdiman at wanadoo.fr Wed Oct 23 01:00:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 23 01:00:02 2002 Subject: [ODE] penalty method References: Message-ID: <007401c27a69$d2a0bf20$0e00000a@pierre> > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say, but penalty methods have a built-in problem > that is essentially intractable: they, by definition, lead to stiff systems of > differential equations. Collisions and resting contact are either too squishy > or your simulation blows up or both. Penalty methods have a bad reputation indeed. And for pretty good reasons. But this is not a black-or-white situation where one can simply discard them completely. Even if I'm alone on that one, I'll say they *are* a good alternative in particular cases, especially in games. Let me summarize what I think are the pros and cons. Cons: - unstable as soon as you connect bodies with springs - implementation of resting contacts borders on voodoo magic - stacked objects and all joints are pretty difficult to handle - you'll need a small timestep indeed Pros: - each iteration is extremely fast - you can solve each contact on-the-fly, which is great on consoles since it doesn't require any stack memory (see the recent post about the 10 Mb stack in VC++. No way you can do that on a console.) - handle 200~300 simultaneous contacts without any (speed) problem - you *will* need it anyway as a fallback when the LCP solver fails (that's what they do in Havok AFAIK) - they're good enough to handle common game situations, and that's the key point. Many great games with great physics have been using nothing more than penalty methods (especially japanese games - on top of my head the last good example was Wreckless on X-Box) They're "bad", but sometimes they're the right tool for the job IMHO. Some lame tests available here (I probably didn't upload the most convincing scenes anyway) : http://www.codercorner.com/Rigid.htm Pierre From svalverde at barcelona.ubisoft.es Wed Oct 23 01:03:02 2002 From: svalverde at barcelona.ubisoft.es (Sergio Valverde) Date: Wed Oct 23 01:03:02 2002 Subject: [ODE] penalty method Message-ID: <61504D875986D511928A00B0D0F36AF8D95F0C@SRVMAIL-ES> So long ago I tryed to implement a physic engine for my comercial game which is based on penalty methods for resting (or continous) contact. I remembered myself reading the Wu's presentation and trying to implement his ideas (...) In case of "sudden" and "hard" collisions, instantaneous impulses apply (like in the old and good Baraff papers). It was *VERY* difficult to tune the system for stability 1) This approach results in very tight coupling between the physics low-level simulation and more high level controls (for instance: the AI code which lays on top of the low sim layer) The system isn't very modular and was the 1st source of major headaches ... 2) -----Original Message----- From: nlin@nlin.net [mailto:nlin@nlin.net] Sent: miercoles, 23 de octubre de 2002 6:07 To: ode@q12.org Subject: Re: [ODE] penalty method Gary R. Van Sickle wrote: > > Every one say penalty method is bad, but has anybody actually tried it? > > I'd wager that pretty much *everybody* has actually tried it. It's bad. I believe by "it" the original poster was talking about David Wu's bag of tricks for penalty methods, not the penalty technique in general. > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say See http://www.pseudointeractive.com/games/penaltymethods.ppt Unfortunately, I was not able to attend this talk, so the slides are my only source of information on David Wu's techniques for penalty methods. He seems to swear by them. I, too, am interested in hearing from people who have tried David Wu's suggestions, since most penalty sims suffer from the well-known problems. -Norman _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From G.J.A.v.d.Bergen at cebra.tue.nl Wed Oct 23 02:33:02 2002 From: G.J.A.v.d.Bergen at cebra.tue.nl (Bergen, G.J.A. van den) Date: Wed Oct 23 02:33:02 2002 Subject: [ODE] penalty method Message-ID: <81E5F727841DD211A5FD0008C728DB7B06E94C4E@campusx1.tue.nl> The stiffness of the differential equations and the fact that the penalty forces rely solely on the position of the objects (not the velocities) demand that you use an integrator that does not amplify its own errors. Wu uses implicit Euler as integrator, which he claims keeps the system from exploding. Also, care should be taken not to add energy to the system by placing exerted springs on interpenetrating contacts, so either you have to determine the exact time of collision, or you'll have to allow that objects are interpenetrating to some extent. Inserting exerted springs to a contact (especially when using non-linear springs) causes your objects to go ballistic. Penalty methods are mostly useful for spongy objects (See Jeff Lander's GDM articles). John Nagle is using a (patented) penalty method for rigid bodies in Animats, but his approach is not really useful for interactive applications. Gino > -----Original Message----- > From: Pierre Terdiman [mailto:p.terdiman@wanadoo.fr] > Sent: Wednesday, October 23, 2002 9:57 AM > To: ode@q12.org > Subject: Re: [ODE] penalty method > > > > > I am > > > talking about David Wu's gdc talk. Has any one actually > implemented his > > > method? Not trying to start a fight here, just going > through all the > > > alternatives... > > > > I don't know what Mr. Wu had to say, but penalty methods > have a built-in > problem > > that is essentially intractable: they, by definition, lead to stiff > systems of > > differential equations. Collisions and resting contact are > either too > squishy > > or your simulation blows up or both. > > Penalty methods have a bad reputation indeed. And for pretty > good reasons. > But this is not a black-or-white situation where one can > simply discard them > completely. Even if I'm alone on that one, I'll say they *are* a good > alternative in particular cases, especially in games. Let me > summarize what > I think are the pros and cons. > > Cons: > - unstable as soon as you connect bodies with springs > - implementation of resting contacts borders on voodoo magic > - stacked objects and all joints are pretty difficult to handle > - you'll need a small timestep indeed > > Pros: > - each iteration is extremely fast > - you can solve each contact on-the-fly, which is great on > consoles since it > doesn't require any stack memory (see the recent post about > the 10 Mb stack > in VC++. No way you can do that on a console.) > - handle 200~300 simultaneous contacts without any (speed) problem > - you *will* need it anyway as a fallback when the LCP solver > fails (that's > what they do in Havok AFAIK) > - they're good enough to handle common game situations, and > that's the key > point. Many great games with great physics have been using > nothing more than > penalty methods (especially japanese games - on top of my > head the last good > example was Wreckless on X-Box) > > > They're "bad", but sometimes they're the right tool for the job IMHO. > > Some lame tests available here (I probably didn't upload the > most convincing > scenes anyway) : > http://www.codercorner.com/Rigid.htm > > Pierre > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From p.terdiman at wanadoo.fr Wed Oct 23 04:02:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 23 04:02:02 2002 Subject: [ODE] penalty method References: <81E5F727841DD211A5FD0008C728DB7B06E94C4E@campusx1.tue.nl> Message-ID: <013301c27a83$4a121a40$0e00000a@pierre> > The stiffness of the differential equations and the fact that the penalty > forces rely solely on the position of the objects (not the velocities) > demand that you use an integrator that does not amplify its own errors. Who said the penalty forces didn't depend on velocities ? Mine do. > Wu > uses implicit Euler as integrator, which he claims keeps the system from > exploding. Also, care should be taken not to add energy to the system by > placing exerted springs on interpenetrating contacts, so either you have to > determine the exact time of collision, or you'll have to allow that objects > are interpenetrating to some extent. Indeed, some interpenetration is allowed. That's good or bad, depending on the way you see it. On the bad side, well, it might be visually unpleasant if it's too obvious. On the good side, the system doesn't break or explode when it happens. And it does happen. Anyway I'm not sure the magic physics bullet has been found yet, each method has its share of painful problems.. Pierre From svalverde at barcelona.ubisoft.es Wed Oct 23 04:28:01 2002 From: svalverde at barcelona.ubisoft.es (Sergio Valverde) Date: Wed Oct 23 04:28:01 2002 Subject: [ODE] penalty method Message-ID: <61504D875986D511928A00B0D0F36AF8D95F47@SRVMAIL-ES> In fact, when you told us about penalty forces I was thinking in a spring-damping system. That is, we have a penalty which depends both on penetration distance and the relative velocity between the interpenetrating bodies. I think you can implement "simple" simulations of "passive" rigid bodies (like those piles of balls and boxes) with both methods in an acceptable amount of time. Maybe the penalty method allows faster and efficient simulations for these kind of systems than the LCP-based does. But when you need to implement complex mechanics and/or behaviour over your physic engine the choose is clear to me: LCP. The stability provided by this method is worth the associated computation costs. Penalty method is tricky and doesn't assure stability for certain simulation situations. Unfortunately, a game designer is allways able to find such problematic cases, breaking your trick code! :-( The topic is : What is the best way to implement the high-level, physically-based, behavior which is required by current and future games? Sergi -----Original Message----- From: Pierre Terdiman [mailto:p.terdiman@wanadoo.fr] Sent: miércoles, 23 de octubre de 2002 13:00 To: ode@q12.org Subject: Re: [ODE] penalty method > The stiffness of the differential equations and the fact that the penalty > forces rely solely on the position of the objects (not the velocities) > demand that you use an integrator that does not amplify its own errors. Who said the penalty forces didn't depend on velocities ? Mine do. > Wu > uses implicit Euler as integrator, which he claims keeps the system from > exploding. Also, care should be taken not to add energy to the system by > placing exerted springs on interpenetrating contacts, so either you have to > determine the exact time of collision, or you'll have to allow that objects > are interpenetrating to some extent. Indeed, some interpenetration is allowed. That's good or bad, depending on the way you see it. On the bad side, well, it might be visually unpleasant if it's too obvious. On the good side, the system doesn't break or explode when it happens. And it does happen. Anyway I'm not sure the magic physics bullet has been found yet, each method has its share of painful problems.. Pierre _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From russ at q12.org Wed Oct 23 21:48:02 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 23 21:48:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: <20021023215217.34a17eb4.russ@q12.org> hi all, erwin and others have been working hard developing extensions to ODEs collision functionality for the past little while, and i am finally getting around to integrating this work into ODE. as a first step, i am publishing my proposed extensions to ODE's native collision API. please read the updated collision section in: http://q12.org/ode/ode-new-collision.html the new features are: heirarchical spaces, ability to collide spaces with single geoms, ability to collide spaces together, geom groups are now spaces, geoms have 'category' and 'collide' bits for early culling, better definition of function behavior, other stuff i forgot. note that this is 99% backwards compatible with the existing API, except for two points noted below. erwin, this API is not exactly the same as your work, here's where it differs: * colliding a geom with a space (or a space with a space) is handled with dSpaceCollide2(), not dCollide() - this makes things simpler i think, and gives the user the same degree of control. * spaces do not need to be explicitly locked before use. rather, the spaces will maintain the locked state internally and trigger an error when there are any violations. the spaces will detect geoms that do not move and precompute e.g. bounding boxes and internal collision data structures * there is no geom disable/enable. you can delete and add a geom to a space to get the same effect. incompatabilities with the current API are: * the dXXXSpaceCreate() functions now take a space argument, which can just be set to 0 to get the existing behavior. * geometry groups have a slight behavior change if you want self intersection - see the doc. please provide feedback about this new API. erwin - any comments? does this API work for you? is there any missing functionality? david - i think you mentioned that geoms might want to be interted into multiple spaces. can you give me a use case for this? - in the current API each geom has just one parent. after getting this API implemented i will focus on integrating erwin's ray and trimesh work, then adding the cylinder class. there is also a new quadtree space that is further down the list. russ. -- Russell Smith http://www.q12.org From tetron at interreality.org Wed Oct 23 22:53:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 23 22:53:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <20021023215217.34a17eb4.russ@q12.org> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Cool! A physics engine is for naught if things collisions arn't detected correctly :-) Have box-box collisions (specifically the problem of not generating enough contact joints) been fixed yet? If not, please tell me which file the collision code is in and I'll see if I can fix it myself (and provide a patch of course). The ability for objects to rest upon each other stably is absolutely necessary and precludes using ODE in my application (and I really, really want to use ODE.) The cylinder class you refer to -- would this be a flat-ended cylinder, as opposed to the (slightly weird but I guess easier to program) hemisphere-ended cylinder that already exists? I'm interested in flat-ended cylinders that can stably stand up on end, which a round-ended cylinder of course cannot do. Have you considered using octtrees to optimize collision tests for complex scenes? (I'm just suggesting this off the top of my head, I'm not 100% sure how it would work...) On Wed, 23 Oct 2002, Russ Smith wrote: > hi all, > > erwin and others have been working hard developing extensions to ODEs > collision functionality for the past little while, and i am finally > getting around to integrating this work into ODE. [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9t4p7aeHUyhjCHfcRArs3AJwKBlWNnoCDJrZbnKWcN/Em1y4L9wCffkMj HRiJEoqUygM4DPJBJ1enu58= =bQ/J -----END PGP SIGNATURE----- From russ at q12.org Wed Oct 23 23:11:01 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 23 23:11:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: References: <20021023215217.34a17eb4.russ@q12.org> Message-ID: <20021023231536.7431c952.russ@q12.org> > Have box-box collisions (specifically the problem of not generating > enough contact joints) been fixed yet? not yet - it has been on my list for a while. look at dBoxBox() in geom.cpp. note that there are many ways to badly generate multiple contact points, and only a few good ways (but i don't want to discourage you! by all means fix this annoying problem...) > The cylinder class you refer to -- would this be a flat-ended > cylinder, as opposed to the (slightly weird but I guess easier to > program) hemisphere-ended cylinder that already exists? yes. this was contributed by Konstantin Slipchenko a short while ago. the capped cylinders are easier to code, it's true, but they're preferable to flat ended cylinders when you need some long thin object that doesn't need to stand on its own. this is because the contact points generated by capped cylinders are much more predictable than that for flat-end cylinders, and less sensitive to geom position changes. this makes for more stable dynamics. > Have you considered using octtrees to optimize collision tests for > complex scenes? i believe erwin is working on this. russ. -- Russell Smith http://www.q12.org From erwin at vo.com Thu Oct 24 05:24:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 05:24:01 2002 Subject: [ODE] enhanced ODE collision API References: <20021023215217.34a17eb4.russ@q12.org> Message-ID: <005f01c27b58$3056d250$73fefea9@athlon> Feedback: Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() or dGeomGetRotation() on a non-placeable geom? The way you handle colliding spaces is more clear to the user, and thus preferable. I assume dSpaceCollide2() will find the (best) space itself from the 2 geom arguments? The sample callback function in the docs also does pairwise checks on all subspaces, right? The enumeration function you use is better than mine. I suppose you buffer the last used index and last used geom? If you have added the 'prev' pointer in the spacedata of a geom, the user can also enumerate backwards. You default the Category and Collide bits to 1 so that users that dont care about it dont have to touch it. Wouldnt it be more logical to default to 0xffffffff then? This is how i interpret the new way it works now: RootSpace - SubSpace1 + GeomTransform1 o Sphere1 + ... - SubSpace2 + GeomTransform2 o Sphere2 + ... - ... Steps: * The user calls dSpaceCollide() on RootSpace. * This will call the usercallback for SubSpace1 and SubSpace2. * The usercallback will call dCollide2() on SubSpace1 and SubSpace2. * This will call the usercallback for SubSpace1, and GeomTransform2 (or the other way around). * The usercallback will call dCollide2 on SubSpace1, and GeomTransform2. * This will call the usercallback for GeomTransform1 and GeomTransform2. * The usercallback will call dCollide() for GeomTransform1 and GeomTransform2. * ... Is this correct? > * spaces do not need to be explicitly locked before use. rather, the > spaces will maintain the locked state internally and trigger an > error when there are any violations. the spaces will detect geoms > that do not move and precompute e.g. bounding boxes and internal > collision data structures So outside of the 'lock' the user is still able to use the bounding boxes computed while colliding? Excellent. How do you determine if a geom has (not) moved? Is it possible to manually lock and unlock the spaces? > * there is no geom disable/enable. you can delete and add a geom to a > space to get the same effect. Not entirely, but i was thinking of removing this flag as well, because it can be faked by setting the Category and Collide bits to 0. > please provide feedback about this new API. erwin - any comments? does > this API work for you? is there any missing functionality? There is no missing functionality as far as i can tell. Its a pity the geom constructor with a body as argument is not added (It saves a malloc and a free), but this is not that important to me. I think it is good enough to keep me from continuing my own dc library. > david - i think you mentioned that geoms might want to be interted into > multiple spaces. can you give me a use case for this? - in the current > API each geom has just one parent. I also considered adding this, but i found it too problematic. > after getting this API implemented i will focus on integrating erwin's > ray and trimesh work, then adding the cylinder class. there is also a > new quadtree space that is further down the list. Have you added the 'prev' pointer in the spacedata of a geom? Without it you cant store the node a geom is in. And it is also faster for the simple and hash spaces. :-) On a related note. Would it be possible to pass 0 in the body constructor for the world it is in, and manually add and remove it? This would be far more appropriate for my apps. Providing the same enumeration functions as in a space would also be appreciated. Cheers, Erwin From russ at q12.org Thu Oct 24 11:13:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 11:13:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <005f01c27b58$3056d250$73fefea9@athlon> Message-ID: > Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() > or dGeomGetRotation() on a non-placeable geom? hmmm ... non-placeable geoms may not have any relevant pos or R data at all. even if something is returned, e.g. zeros, i think the user should be notified that it's not good for anything. or perhaps the user should be told to check for a 0 return code? perhaps this is a way to detect non-placeable geoms? but in that case a dGeomIsPlaceable() function would be cleaner. > The way you handle colliding spaces is more clear to the user, and thus > preferable. I assume dSpaceCollide2() will find the (best) space itself from > the 2 geom arguments? The sample callback function in the docs also does > pairwise checks on all subspaces, right? yes. > The enumeration function you use is better than mine. I suppose you buffer > the last used index and last used geom? yes, that's exactly what i had in mind. > If you have added the 'prev' pointer > in the spacedata of a geom, the user can also enumerate backwards. yes - i'll use a doubly circularly linked list. > You default the Category and Collide bits to 1 so that users that dont care > about it dont have to touch it. Wouldnt it be more logical to default to > 0xffffffff then? i thought about this and could not decide the right answer. how about category=1 and collide=(~0)? > This is how i interpret the new way it works now: > Is this correct? yes. > So outside of the 'lock' the user is still able to use the bounding boxes > computed while colliding? correct. your AABB caching code is preserved. > Excellent. How do you determine if a geom has (not) moved? a space will have a list of clean and dirty geoms. the clean geoms have precomputed AABBs (and perhaps precomputed other things). a geom gets transferred to the dirty list when: * dGeomSetSomething() is called. * it's attached to a non-disabled body. a space can only be in a clean list if it has no dirty items itself - so operations on clean geoms can propagate dirty-ness up to the root space. > Is it possible to manually lock and unlock the spaces? no ... can you give me a use case for when this is required? > Not entirely, but i was thinking of removing this flag as well, because it > can be faked by setting the Category and Collide bits to 0. why 'not entirely?'. > I think it is good enough to keep me from continuing my own dc library. i am largely cutting and pasting from your dc library into ODE - changing the way some things work - but the new collision system is largely the result of your effort. > I also considered adding this, but i found it too problematic. as did i - * memory management: when a space is deleted, which geoms are deleted? should we use ref counting or garbage collection. either way introduces other problems. * a geom has to notify multiple parents when certain things happen, e.g. when it moves. annoying for the clean-data-structure point of view. > Have you added the 'prev' pointer in the spacedata of a geom? Without it you > cant store the node a geom is in. And it is also faster for the simple and > hash spaces. :-) yes. > On a related note. Would it be possible to pass 0 in the body constructor > for the world it is in, and manually add and remove it? This would be far > more appropriate for my apps. Providing the same enumeration functions as in > a space would also be appreciated. yes - i'll add this to the to-do list? :) russ. -- Russ Smith http://www.q12.org/ From dmcclurg at pandemicstudios.com.au Thu Oct 24 15:08:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 24 15:08:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: > geom groups are now spaces does that mean a geom cannot be placed into two different groups? not a big deal, but i'm curious. > david - i think you mentioned that geoms might want to be interted into multiple spaces. can you give me a use case for this? - in the current API each geom has just one parent. i just needed a way to implement collision filtering and the category and collide bitfields do this very elegantly! thanks one other common concept in collision detection is a ghost or phantom geom used as a sensor. you don't bounce off it -- you just detect a penetration. ie: what you want is just detection of the collision and not the contact information. it would be nice if there was a built-in type called 'sensor' or something that didn't do the extra work of computing the contact point/normal. that's it! thanks to erwin for his contribs and i'm really excited about these developments. From dmcclurg at pandemicstudios.com.au Thu Oct 24 15:25:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 24 15:25:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: struct dContactGeom { dVector3 pos; // contact position dVector3 normal; // normal vector dReal depth; // penetration depth dGeomID g1,g2; // the colliding geoms }; A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). int dCombineContacts(int n, dContactGeom* Contacts, int Stride); // Attempts to merge all contacts into a single contact // returns 1 if successful and 'n' otherwise Ta From erwin at vo.com Thu Oct 24 16:02:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:02:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <004201c27bb1$4833fe30$73fefea9@athlon> > > Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() > > or dGeomGetRotation() on a non-placeable geom? > > hmmm ... non-placeable geoms may not have any relevant pos or R data at > all. even if something is returned, e.g. zeros, i think the user > should be notified that it's not good for anything. or perhaps the user > should be told to check for a 0 return code? perhaps this is a way to > detect non-placeable geoms? but in that case a dGeomIsPlaceable() > function would be cleaner. Agreed. But i dont think i saw it in the docs. ;-) > > You default the Category and Collide bits to 1 so that users that dont care > > about it dont have to touch it. Wouldnt it be more logical to default to > > 0xffffffff then? > > i thought about this and could not decide the right answer. how about > category=1 and collide=(~0)? There is no correct solution.to this. People should just use it! So either 1 or ~0 for the category bits will do. I vote for ~0. > > Excellent. How do you determine if a geom has (not) moved? > > a space will have a list of clean and dirty geoms. the clean geoms have > precomputed AABBs (and perhaps precomputed other things). a geom gets > transferred to the dirty list when: > * dGeomSetSomething() is called. > * it's attached to a non-disabled body. > a space can only be in a clean list if it has no dirty items itself - so > operations on clean geoms can propagate dirty-ness up to the root space. How do you handle the case where a user creates a geom, attaches a body, disables it, and then calls dBodySetPosition() on it each step? I actually do this (the object gets enabled when it is touched), and it took me hours to find why the hell my object wasnt collision-detected (and thus enabled). Needless to say i was extremely unsatisfied when i found the bug. > > Is it possible to manually lock and unlock the spaces? > > no ... can you give me a use case for when this is required? > > > Not entirely, but i was thinking of removing this flag as well, because it > > can be faked by setting the Category and Collide bits to 0. > > why 'not entirely?'. Because the geom's aabb would be computed while it is inside the space, and in the quadtree space it would be inside a node. Thus, enabling is faster than adding. The main reason i added this is to give the user the ability collide a geom with a space on-demand, without performance loss. Imagine fireing a bullet with instant impact (ray). All the objects the bullet could possibly hit are in a seperate space. I would call dSpaceLock() on the root space, which locks all subspaces as well. (I suppose internally this already happens?) I would then call dSpaceCollide() on my root space. Then i call dSpaceCollide2() with my bullet and the seperate space. The bullet now has the same advantages as all other objects had while in dSpaceCollide(). > > I think it is good enough to keep me from continuing my own dc library. > > i am largely cutting and pasting from your dc library into ODE - changing > the way some things work - but the new collision system is largely > the result of your effort. > > > I also considered adding this, but i found it too problematic. > > as did i - > * memory management: when a space is deleted, which geoms are deleted? > should we use ref counting or garbage collection. either way > introduces other problems. > * a geom has to notify multiple parents when certain things happen, > e.g. when it moves. annoying for the clean-data-structure point of > view. Not to mention the prev and next pointer you have to keep for each space the geom is in, or the ability to create infinite loops by adding a space in another space which contains the first space itself. Have fun debugging that. :-) Erwin From coding at natew.com Thu Oct 24 16:03:01 2002 From: coding at natew.com (Nate W) Date: Thu Oct 24 16:03:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: On Fri, 25 Oct 2002, David McClurg wrote: > one other common concept in collision detection is a ghost or phantom > geom used as a sensor. you don't bounce off it -- you just detect a > penetration. ie: what you want is just detection of the collision and > not the contact information. it would be nice if there was a built-in > type called 'sensor' or something that didn't do the extra work of > computing the contact point/normal. Could you do that by filtering out collisions involving the 'sensor' geoms in the collision callback? Like: int count = dCollide (o1, o2, contacts, &contact[0].geom ... MyClass *p1 = dGeomGetData (o1); MyClass *p2 = dGeomGetData (o2); if (p1->isSensor) p1->CollisionDetected (count, contact) if (p2->isSensor) p2->CollisionDetected (count, contact) if (!p1->isSensor && !p2->isSensor) { // create contact joints } -- Nate Waddoups Redmond WA USA http://www.natew.com From erwin at vo.com Thu Oct 24 16:09:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:09:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <005201c27bb2$4fbc97b0$73fefea9@athlon> > one other common concept in collision detection is a ghost or phantom geom used as a sensor. you don't bounce off it -- you just detect a penetration. ie: what you want is just detection of the collision and not the contact information. it would be nice if there was a built-in type called 'sensor' or something that didn't do the extra work of computing the contact point/normal. I proposed this once. Calling dCollide() with 0 as flags, and simply have it return 0 or 1. It would be entirely possible, but it could break old code. But i doubt anyone does it this way. Erwin From erwin at vo.com Thu Oct 24 16:20:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:20:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <008401c27bb3$c83da200$73fefea9@athlon> > struct dContactGeom { > dVector3 pos; // contact position > dVector3 normal; // normal vector > dReal depth; // penetration depth > dGeomID g1,g2; // the colliding geoms > }; > > A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? > Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). You're actually using the mesh-plane intersection?? Daring. My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. > int dCombineContacts(int n, dContactGeom* Contacts, int Stride); > // Attempts to merge all contacts into a single contact > // returns 1 if successful and 'n' otherwise This would be very nice. But you should probably add a dReal MaxError as parameter, because without it it would be very hard. Erwin From erwin at vo.com Thu Oct 24 16:22:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:22:01 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <008801c27bb4$1955fa70$73fefea9@athlon> Thats not what he ment. I also typed a similar message, and then realized i didnt get the point. :-) The point David is making is that his dectection geoms dont need contacts. Just a true/false to determine if they hit. Erwin ----- Original Message ----- From: "Nate W" To: Sent: Thursday, October 24, 2002 17:11 Subject: RE: [ODE] enhanced ODE collision API > On Fri, 25 Oct 2002, David McClurg wrote: > > > one other common concept in collision detection is a ghost or phantom > > geom used as a sensor. you don't bounce off it -- you just detect a > > penetration. ie: what you want is just detection of the collision and > > not the contact information. it would be nice if there was a built-in > > type called 'sensor' or something that didn't do the extra work of > > computing the contact point/normal. > > Could you do that by filtering out collisions involving the 'sensor' geoms > in the collision callback? Like: > > int count = dCollide (o1, o2, contacts, &contact[0].geom ... > > MyClass *p1 = dGeomGetData (o1); > MyClass *p2 = dGeomGetData (o2); > > if (p1->isSensor) > p1->CollisionDetected (count, contact) > if (p2->isSensor) > p2->CollisionDetected (count, contact) > > if (!p1->isSensor && !p2->isSensor) > { > // create contact joints > } > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From russ at q12.org Thu Oct 24 17:05:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 17:05:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: > does that mean a geom cannot be placed into two different groups? not > a big deal, but i'm curious. they can't, yes. any reason you would want to? > one other common concept in collision detection is a ghost or phantom > geom used as a sensor. you don't bounce off it -- you just detect a > penetration. ie: what you want is just detection of the collision and > not the contact information. it would be nice if there was a built-in > type called 'sensor' or something that didn't do the extra work of > computing the contact point/normal. hmmmm ... perhaps a flag defined for dCollide() that instructs it to just return 1 or 0 depending on if there is intersection or not. at last a use for the flags parameter! this would mean touching ALL the pairwise collision functions - this is lower down the TODO list for now because you can just use dCollide() as-is, although it might be slower than you like. russ. -- Russ Smith http://www.q12.org/ From russ at q12.org Thu Oct 24 17:12:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 17:12:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <004201c27bb1$4833fe30$73fefea9@athlon> Message-ID: > How do you handle the case where a user creates a geom, attaches a body, > disables it, and then calls dBodySetPosition() on it each step? I actually > do this (the object gets enabled when it is touched), and it took me hours > to find why the hell my object wasnt collision-detected (and thus enabled). > Needless to say i was extremely unsatisfied when i found the bug. tricky! the body will have to know what geom it is attached to and call dGeomThisGuyMoved() when dBodySetPosition() etc called on it - which will make sure the geom is in the dirty list. > Because the geom's aabb would be computed while it is inside the space, and > in the quadtree space it would be inside a node. Thus, enabling is faster > than adding. ok, good reason. i'll add dGeomEnable/Disable/IsEnabled. russ. -- Russ Smith http://www.q12.org/ From dmcclurg at pandemicstudios.com.au Fri Oct 25 01:19:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Fri Oct 25 01:19:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: >> A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. > You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? if there is a callback for each contact generated, the callback could query the index. otherwise, you could put it into the dContactGeom struct, but since they could both be a mesh, you would need two-- i1,i2. maybe this is a good time to bring up the idea of a generalized event handler instead of callbacks. you get an event when the contact is generated instead of passing an array. you store it off then and query the index if needed. >> Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). > You're actually using the mesh-plane intersection?? Daring. no, i'm sorry. i meant my player collides with many static meshes and planes in the world. i combine the contacts between the player sphere and all the triangle & plane contacts to get smooth physics. > My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. that's what i've noticed. why doesn't ODE like close contacts? hmmm. got to investigate that soon. From tetron at interreality.org Fri Oct 25 01:34:09 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 01:34:09 2002 Subject: [ODE] box-box collisions Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Okay, so I've spent a little time looking at the box-box collision code. Detecting face-face contacts seems fairly easy; we just need to compare the normal vector between the boxes centers in the collision with the normal vector of the normal vectors of the sides of the penatrating box. In other words, determine if they share a coplanar face. Then we need to generate contact points (I haven't quite figured this part out yet). I have a few questions. The first is that in doing this comparison, there is enough error floating around that it is very unlikely that the normals of box faces that should be treated as coplanar will be *exactly* the same. In general, what is the policy in ODE for handling these sorts of slightly inexact comparisons? The second question is face-edge collisions. What's a good way of determining if a line (the edge) lies in the plane of the face? Again, this has to be a slightly inexact comparison rather than an exact calculation because of error. I've determined that face-edge collisions are absolutely crucial for good box stacking, since otherwise it becomes almost impossible for one box to come to rest upon another if the first one hits the supporting box at an angle. Face-edge contacts need two contact joints, otherwise boxes will just tumble uncontrolably. I'm going to take a look at the box-plane collision code tomorrow, since it must already handle these issues correctly, perhaps differently (having an object that is infinite and static does make certain calculations easier!) [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uQHBaeHUyhjCHfcRArq1AKCwBhNnJJ31E9GYdocpzCJgp3vkOQCfRmlS MLWLUFenllq0HRzWXDWrbjs= =l4iZ -----END PGP SIGNATURE----- From dale_thomas at hotmail.com Fri Oct 25 01:49:02 2002 From: dale_thomas at hotmail.com (Dale Thomas) Date: Fri Oct 25 01:49:02 2002 Subject: [ODE] Tetrahedron class Message-ID: Hi there I am looking for a tetrahedron primitive class. Does anyone have such a class or can give me advice on creating one Thanks _________________________________________________________________ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 From f99jooh at dd.chalmers.se Fri Oct 25 01:56:02 2002 From: f99jooh at dd.chalmers.se (Johannes =?iso-8859-1?q?=D6hlin?=) Date: Fri Oct 25 01:56:02 2002 Subject: [ODE] Invisible spheres Message-ID: <200210250855.KAA12394@eru.dd.chalmers.se> Hi I've been using ODE with drawstuff for a couple of weeks now and I'm experiencing a problem I can't solve. In my program I run several simulations with drawstuff (dsSimulationLoop), in each simulation I use a more or less random collection of boxes and spheres and joints. Here's the problem: Spheres are only visible in the first simulation. After that first run only boxes and shadows are visible. Does anybody have any idea what could be wrong? /Johannes -- Johannes ÖHlin Undergraduate student Engineering Physics Chalmers University of Technology From Marta.Pla at uv.es Fri Oct 25 02:02:01 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Fri Oct 25 02:02:01 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <1035536660.27694.8.camel@welfa> --=-sbJWy6VppIJdrQ4ob90f Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable El vie, 25-10-2002 a las 10:33, Peter Amstutz escribi=F3: First of all, hello to everyone, this is my first message to the list > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 >=20 > Okay, so I've spent a little time looking at the box-box collision code. > Detecting face-face contacts seems fairly easy; we just need to compare > the normal vector between the boxes centers in the collision with the > normal vector of the normal vectors of the sides of the penatrating box. > In other words, determine if they share a coplanar face. Then we need to > generate contact points (I haven't quite figured this part out yet). >=20 > I have a few questions. The first is that in doing this comparison, ther= e > is enough error floating around that it is very unlikely that the normals > of box faces that should be treated as coplanar will be *exactly* the > same. In general, what is the policy in ODE for handling these sorts of > slightly inexact comparisons? >=20 The fact is that I don't know really how it does, but I have the same problem in my application. I resolve the face-face collision by examining the relative rotation matrix between the two boxes. If the angles of this matrix are "little" enough I consider the boxes are parallel and solve the problem adding two more contact points in the colliding face with the same problem. > The second question is face-edge collisions. What's a good way of > determining if a line (the edge) lies in the plane of the face? Again, > this has to be a slightly inexact comparison rather than an exact > calculation because of error. I've determined that face-edge collisions > are absolutely crucial for good box stacking, since otherwise it becomes > almost impossible for one box to come to rest upon another if the first > one hits the supporting box at an angle. Face-edge contacts need two > contact joints, otherwise boxes will just tumble uncontrolably. >=20 Totaly certain. But this is more difficult. Before beginning working with ODE I was using another collision detection library based also in OBBTrees but I was not able to determine well enough the face-edge collision. If anyone has an idea, it will be great. I wish you understand why a spanish write so bad english :) --=20 **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint =3D 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla@uv.es) http://www.uv.es/~mplac **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. --=-sbJWy6VppIJdrQ4ob90f Content-Type: application/pgp-signature; name=signature.asc Content-Description: Esta parte del mensaje esta firmada digitalmente -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) iD8DBQA9uQkUhrRS0qLSFhARAgeVAJ9JMW9rDWGEk7MPvVIrvGal6LhltgCcCcwG wFgN4YUqdAzcZJLxbevHwCo= =PF9Y -----END PGP SIGNATURE----- --=-sbJWy6VppIJdrQ4ob90f-- From p.terdiman at wanadoo.fr Fri Oct 25 03:13:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 25 03:13:02 2002 Subject: [ODE] box-box collisions References: Message-ID: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Quick question : Is there a reason why the number of contacts for the box-box collision is limited to 3 ? What do I need to do in order to change that number ? From Marta.Pla at uv.es Fri Oct 25 04:03:02 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Fri Oct 25 04:03:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> References: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: <1035543982.27694.22.camel@welfa> --=-zrWb3Q02w2KWfGx4vwjj Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable El vie, 25-10-2002 a las 12:10, Pierre Terdiman escribi=F3: > Quick question : >=20 > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? You only need 3 points to put a box over another box. The necesary forces to implement, for example, a box leaved in a floor, are three. Of course you can implement 4 or more contact points, but they are redundant. > What do I need to do in order to change that number ? >=20 >=20 > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode --=20 **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint =3D 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla@uv.es) http://www.uv.es/~mplac **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. --=-zrWb3Q02w2KWfGx4vwjj Content-Type: application/pgp-signature; name=signature.asc Content-Description: Esta parte del mensaje esta firmada digitalmente -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) iD8DBQA9uSWuhrRS0qLSFhARAvZ1AJwIhsHSeMW1EX8gJKhDeEjcCdVaCgCgin94 NgWwsVVJzj97Mi5jjZ+O+lQ= =EnnI -----END PGP SIGNATURE----- --=-zrWb3Q02w2KWfGx4vwjj-- From ps_yumemi at yahoo.com Fri Oct 25 05:55:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Fri Oct 25 05:55:02 2002 Subject: [ODE] synchronizing network programs Message-ID: <20021025125408.1747.qmail@web40506.mail.yahoo.com> hello i'm still finishing my networking program using ODE. it's a mobile robot simulator and i still have problems synchronizing my mobots. i'm using a peer to peer session so all the computers send messages to other computers. the messages contain the current speed, position, rotation and other things i need. all i nedd is to compensate for the lag of the network by checking the constant position of the mobot and where it is suppose to be according to the data sent. what would be the best way to do this? 2nd i can't seem to make dBodySetRotation to work. is the matrix required for it in degrees? or in radians? last, if i have two or more mobots in the system, what's the best way to check if they collide? coz the original program only considered one mobot in the system. please consider that a mobot has not just wheels and a body but sensors as well. any suggestion is welcome. thanks __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From slipch Fri Oct 25 09:20:02 2002 From: slipch (slipch) Date: Fri Oct 25 09:20:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <10033043223.20021025192245@gsc-game.kiev.ua> Hello Peter, Friday, October 25, 2002, 11:33:00 AM, you wrote: PA> -----BEGIN PGP SIGNED MESSAGE----- PA> Hash: SHA1 PA> Okay, so I've spent a little time looking at the box-box collision code. PA> Detecting face-face contacts seems fairly easy; we just need to compare PA> the normal vector between the boxes centers in the collision with the PA> normal vector of the normal vectors of the sides of the penatrating box. PA> In other words, determine if they share a coplanar face. Then we need to PA> generate contact points (I haven't quite figured this part out yet). PA> I have a few questions. The first is that in doing this comparison, there PA> is enough error floating around that it is very unlikely that the normals PA> of box faces that should be treated as coplanar will be *exactly* the PA> same. In general, what is the policy in ODE for handling these sorts of PA> slightly inexact comparisons? PA> The second question is face-edge collisions. What's a good way of PA> determining if a line (the edge) lies in the plane of the face? Again, PA> this has to be a slightly inexact comparison rather than an exact PA> calculation because of error. I've determined that face-edge collisions PA> are absolutely crucial for good box stacking, since otherwise it becomes PA> almost impossible for one box to come to rest upon another if the first PA> one hits the supporting box at an angle. Face-edge contacts need two PA> contact joints, otherwise boxes will just tumble uncontrolably. PA> I'm going to take a look at the box-plane collision code tomorrow, since PA> it must already handle these issues correctly, perhaps differently (having PA> an object that is infinite and static does make certain calculations PA> easier!) Box - box collision use axis separating. It never checks complanarity of box faces and I do not think It will ever do it and do not think it really need it. But you can make your own alternative box-box collider than you can see easy it or not :). May be it needs to spend more time looking at the original box-box collider :). -- Best regards, Konstantin Slipchenko. mailto:slipch@gsc-game.kiev.ua From russ at q12.org Fri Oct 25 10:36:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 10:36:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: > why doesn't ODE like close contacts? ODE needs to find a unique solution for all constraints in the system. if there are two (or more) constraint dimensions that do not have a unique solution, numerical errors will result. now, imagine two contacts in exactly the same position. if we look at the solution for this system and subtract some of the force from contact 1 and add the same amount to contact 2, the resulting motion of the system will be the same (because the contacts are adding at the same point). thus the solution is not unique. moral: the closer that contacts come to having the same effect on the system, the more solution error there will be. note that the global CFM parameter can be increased to reduce the amount of numerical error in the system, even when you have coincident contacts. russ. -- Russ Smith http://www.q12.org/ On Fri, 25 Oct 2002, David McClurg wrote: > >> A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. > > You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? > > if there is a callback for each contact generated, the callback could query the index. otherwise, you could put it into the dContactGeom struct, but since they could both be a mesh, you would need two-- i1,i2. > > maybe this is a good time to bring up the idea of a generalized event handler instead of callbacks. you get an event when the contact is generated instead of passing an array. you store it off then and query the index if needed. > > >> Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). > > You're actually using the mesh-plane intersection?? Daring. > > no, i'm sorry. i meant my player collides with many static meshes and planes in the world. i combine the contacts between the player sphere and all the triangle & plane contacts to get smooth physics. > > > My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From russ at q12.org Fri Oct 25 10:49:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 10:49:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? to be clear: it's my intention to generate at most 3 contact points for box-box collison (at the moment only 1 will be generated). to represent the *complete* geometry of one box being stacked on top of another up to 8 contacts may be necessary. but in ODE contacts are expensive, so we want to use the least number of contacts that will result in a reasonable approximation. three is a reasonable number, as long as we use the three contacts that are most penetrating. for a 3-contact box stacking situation it is *possible* that the boxes can interpenetrate when pushed along some directions, but such errors will be corrected in the next timestep so they will generally not be visible. > What do I need to do in order to change that number ? write more code :) russ. -- Russ Smith http://www.q12.org/ From tetron at interreality.org Fri Oct 25 11:29:01 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 11:29:01 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 You can think of it this way -- each contact point removes (or at least restricts) a degree of freedom from the system. Since the box can rotate on three axes, you need at least three contact constraints in order to have a stable face-face collision. However as Marta said, more than three would be redundant in most situtations. On Fri, 25 Oct 2002, Pierre Terdiman wrote: > Quick question : > > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? > What do I need to do in order to change that number ? > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uY1KaeHUyhjCHfcRAs0SAJ9Umt8RnmJ41zY22GWmjtfEp4cTxwCfTQo3 Xpnd1HgglR+jEL8q/rM5l0A= =XDEF -----END PGP SIGNATURE----- From tetron at interreality.org Fri Oct 25 11:43:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 11:43:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <10033043223.20021025192245@gsc-game.kiev.ua> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Fri, 25 Oct 2002, slipch wrote: > Box - box collision use axis separating. It never checks complanarity of > box faces and I do not think It will ever do it and do not think it > really need it. But you can make your own alternative box-box collider > than you can see easy it or not :). May be it needs to spend more time > looking at the original box-box collider :). It seems there are a couple possible ways to test for face-face box contacts. Rather than being coplanar actually I meant that the planes of each box are parallel, so if we know that the boxes penetrate and are coplanar then there must be a face-face contact. The other way suggested by Marta is to compare rotations, and if the boxes are at equal/right/180 degree angles to one another then they must be in face-face contact as well. I think the second way may be a bit faster. For box-edge collisions we definately need to test to see if an edge is coplanar with the face it collides with. Actually, that may not be so bad. Once we know that, generating a couple contact points should be easy. Russ, would you care to explain the current box-box collision algorithm (and maybe box-plane as well)? I've been looking it over but the code is rather... dense :-) Oh, and for comparison, last night I took a midterm exam in Advanced Algorithms (a required course in the masters/PhD program here) and it was waaay easier than trying to figure out the box collision code :-) [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uZCcaeHUyhjCHfcRAmR+AJ9JvdpYz0722LwBZgOJlLkOJgc20gCdFnhg USeMPPQ/VUpi8lXlqK8DgwA= =RmQm -----END PGP SIGNATURE----- From russ at q12.org Fri Oct 25 12:22:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 12:22:01 2002 Subject: [ODE] box-box collisions In-Reply-To: Message-ID: > Russ, would you care to explain the current box-box collision algorithm > (and maybe box-plane as well)? I've been looking it over but the code is > rather... dense :-) to summarize: the standard 15-axis test is performed to check for box-box intersection (6 face-normal tests and 9 edge x edge tests). for each axis, the box-box penetration is recorded (penetration defined as the overlap of the projection of the boxes to the test axis). the most penetrating axis is used as the normal. if the most penetrating axis is an edge x edge then the closest point between the closest box edges is used as the contact point. otherwise the most penetrating axis is normal to the face of one box so the deepest vertex (along this axis) of the other box is used. it is this last case that should be modified to generate up to 3 contacts, not just the one. one approach is to examine the three edges adjacent to the most penetrating vertex and clip them to the box, thereby generating three other points, and use the two that are deepest. i've not tried this, so i don't know if it will work well, but this would be my first approach. some other people's box-box code takes the following approach (or some variant of it): compute the box-box intersection volume, take the vertices of this volume as an initial contact point set, then do some kind of culling to reduce the contact points to a manageable number. this approach has three big drawbacks: (1) it's slow, (2) the culling process is not well defined so this can lead to over-sensitive contacts, (3) for edge-edge contacts, where there should only be one contact point, these schemes nevertheless generate many points - and it takes a very smart culling algorithm to reduce this to just one. this illustrates a point i've made before: that collision detection for dynamics is a more difficult problem that collsion detection alone: the contact points that are generated must meet extra conditions so that the resulting contact-driven motion will be stable. in particular: * contact points should be inside the collison volume. * contact points should not jump around unnecessarily if the object positions change slightly (these are called over-sensitive contacts). * the contact constraints should be far from singular. the worst thing that collision code can do is generate coincident contacts. * the contact set must depend only on the local surface properties, not on the global object properties. * the contact normal should be the most direct translational path to reducing penetration at a contact point. this condition is less necessary for stability than the others, but is still important. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Fri Oct 25 12:55:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 25 12:55:02 2002 Subject: [ODE] dynamics in general In-Reply-To: Message-ID: Does anyone know of any mailing lists for dynamics in general, not just for particular libraries and applications? I just realized that there might be people out there who are not using ODE, and yet are doing interesting things with dynamics anyway. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From tisch at uni-paderborn.de Fri Oct 25 13:34:01 2002 From: tisch at uni-paderborn.de (Tim Schmidt) Date: Fri Oct 25 13:34:01 2002 Subject: [ODE] ODE for Java v0.1 released Message-ID: <3DB9AA9B.9040701@uni-paderborn.de> Hi! I am pleased to announce that the first release of 'ODE for Java' is available via: http://www.tim-schmidt.de/odeforjava/ Additionally to just making ODE available in Java, it provides a set of Java3D objects that can hopefully be used without detailed knowledge of ODE internals. This release is version v0.1 and it should work with: - JDK 1.3 - Java3d 1.2.1-03 Please note: - The JNI covers the ODE functionality that was available around june 2002. - The ode.core.extensions and ode.java3d.geometry.sensors packages use objects that can be found in ode/core/extensions/ode-src. To integrate them into ODE itself follow the instructions that are given in contrib/GeomTransformGroup/README.txt in the ODE CVS tree. - At the current stage I can not guarantee that the API will not change to a certain extent. - There may still be several bugs in the code, especially as respects garbage collection (so watch out for memory leaks) The lib/ directory contains precompiled linux libraries of ODE and 'ODE for Java' that have to be reacheable through the LD_LIBRARY_PATH environment variable. The provided archive development.tar.bz2 is ready to use for your own development. It contains the source code of this project and a set of makefiles that represent a modification and extension of 'The Universal Makefile' which can be found at http://geosoft.no/javamake.html. The latter is rather designed for unix/linux environments but with loss of functionality it may be adapted to work with windows, too. Just make sure that: - the environment variable JAVA_DEV_ROOT points to the development directory that is created after the unpacking of development.tar.bz2 - the environment variable JAVA_HOME points to your Java SDK directory Have a look at the examples in the ode.java3d.test package. They should give a good impression how everything is set up, at least for those who are already familiar with Java3D scene graph assembly. Feel free to send bug reports and comments to odeforjava@tim-schmidt.de. And finally I don't want to forget to thank Russ for his really great work!!! :-))) kind regards, Tim Schmidt From p.terdiman at wanadoo.fr Fri Oct 25 13:58:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 25 13:58:02 2002 Subject: [ODE] box-box collisions References: Message-ID: <041101c27c68$ede5d260$0e00000a@pierre> > three is a reasonable number, as long as we use the three > contacts that are most penetrating. Ok, that's the extra condition I was missing. > > What do I need to do in order to change that number ? > > write more code :) Actually the answer I was looking for was : "change the hardcoded value in static void nearCallback (void *data, dGeomID o1, dGeomID o2)" That's in the box-stack test, no wonder I didn't find it in ODE itself..... Pierre From wristy_j at yahoo.com Fri Oct 25 14:32:02 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Fri Oct 25 14:32:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021025213134.48020.qmail@web40812.mail.yahoo.com> Hello, I need to implement a physics simulation that can handle rag-doll type constraints (hinge, ball, but probably none powered) with joint limits, and contact with friction. I need a fast method. Is the LCP / Lagrange multiplier method used in ODE fast enough for interactive frame rates (> 30 fps) for a minimal number of constraints/contacts? I'm thinking at most, a few multi-bodies with around 9 joints each (10 bodies), plus random simple rigid bodies which may come in contact with the multi-bodies. Also - is there any drawback to using the LCP method on consoles? Does anyone know if Havok uses a similar method? I imagine they're not just using penalty methods. What other good, fast methods are out there? Thanks! J __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From coding at natew.com Fri Oct 25 17:10:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 25 17:10:02 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021025213134.48020.qmail@web40812.mail.yahoo.com> Message-ID: On Fri, 25 Oct 2002, Jason Gott wrote: > I need to implement a physics simulation that can > handle rag-doll type constraints (hinge, ball, but > probably none powered) with joint limits, and contact > with friction. I need a fast method. Is the LCP / > Lagrange multiplier method used in ODE fast enough for > interactive frame rates (> 30 fps) for a minimal > number of constraints/contacts? I just did some experiments with a rag doll consisting of 10 bodies, and 9 joints - all bodies are boxes, and I use ball joints for the shoulders, hips, and neck, and hinges for the knees and elbows. I have a 1.7ghz K7 and a GeForce 3. It's like Porrasturvat, but without the stairs, just a simple ground plane. With one doll, I get ~38 frames per second. With two dolls, 25-28 fps. With three, 19-20 fps. With four dolls (team dismount!), about 15 fps. Changing the bodies to flat-ended cylinders brought the four-doll simulation down to 11 fps. Changing them to capped cylinders, 6-9 fps. Bear in mind that there's some overhead in my tests due to the fact that they're conducted in a general purpose ODE playground rather than in an optimized game. I have no idea how much overhead there is, though. I don't think it's very significant, but if anyone can do a similar test I'd be really interested in the results. -- Nate Waddoups Redmond WA USA http://www.natew.com From johnb003 at hotmail.com Fri Oct 25 21:50:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Fri Oct 25 21:50:02 2002 Subject: [ODE] Higher Order Integrators Message-ID: Hey Russ, have you done any work on implementing a higher order integrator? I was about to give it a shot and I thought I'd see if you had started anything before I begin. Thanks, John Butterfield _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From erwin at vo.com Sat Oct 26 05:28:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Sat Oct 26 05:28:02 2002 Subject: [ODE] Speed of ODE's constraint method References: Message-ID: <001b01c27cea$e4e57670$73fefea9@athlon> These framerates look rediculously low. Are you measuring the physics stepping rate? Erwin ----- Original Message ----- From: "Nate W" To: Sent: Friday, October 25, 2002 18:18 Subject: Re: [ODE] Speed of ODE's constraint method > On Fri, 25 Oct 2002, Jason Gott wrote: > > > I need to implement a physics simulation that can > > handle rag-doll type constraints (hinge, ball, but > > probably none powered) with joint limits, and contact > > with friction. I need a fast method. Is the LCP / > > Lagrange multiplier method used in ODE fast enough for > > interactive frame rates (> 30 fps) for a minimal > > number of constraints/contacts? > > I just did some experiments with a rag doll consisting of 10 bodies, and 9 > joints - all bodies are boxes, and I use ball joints for the shoulders, > hips, and neck, and hinges for the knees and elbows. I have a 1.7ghz K7 > and a GeForce 3. > > It's like Porrasturvat, but without the stairs, just a simple ground > plane. With one doll, I get ~38 frames per second. With two dolls, 25-28 > fps. With three, 19-20 fps. With four dolls (team dismount!), about 15 > fps. > > Changing the bodies to flat-ended cylinders brought the four-doll > simulation down to 11 fps. Changing them to capped cylinders, 6-9 fps. > > Bear in mind that there's some overhead in my tests due to the fact that > they're conducted in a general purpose ODE playground rather than in an > optimized game. I have no idea how much overhead there is, though. I > don't think it's very significant, but if anyone can do a similar test I'd > be really interested in the results. > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From rtonge90 at yahoo.co.uk Sat Oct 26 07:13:02 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sat Oct 26 07:13:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021026141225.80198.qmail@web14907.mail.yahoo.com> Hello >Is the LCP / Lagrange multiplier method used in ODE >fast enough for interactive frame rates (> 30 fps) >for a minimal number of constraints/contacts? The short answer is yes. The long answer is maybe :o) The short answer is yes because there are a number of games on the shelves (and the top 10) that use an LCP method. Although the actual LCP method used in those games is different, it has similar characteristics to the one used in ODE. Brace yourselves for the long answer lads... Direct LCP methods (as used in ODE) have properties that are acceptable for some games/platforms and not others. In particular, memory usage, cpu usage and memory bandwidth usage can scale quite badly as the size of the system increases. Memory Direct methods require the storage of one or more large matrices. The size of the matrix can fluctuate quite a bit depending on what is happening in the game. For example, take a game where animated characters turn into physical ragdolls when they die. Suppose each one has 9 joints which each constrain 6 relative degrees of freedom. If a ragdoll is flying through the air then the number of matrix rows is 9*6=54. In this system, there is one matrix of size 54*54, which takes about 12k. Not too bad. Suppose the ragdoll hits the floor. This might add 2 friction contacts,each constraining 3 dof for each of the 10 bodies, giving 9*6+3*10*2=114 rows in total. This brings the matrix size to 114*114 which takes 52k. Suppose you have 10 ragdolls flying through the air. You get 10 matrices of size 54, which takes 12k*10=120k. Suppose that they fall in a pile on the floor. As they are all touching they have to all go in the smae matrix. There might be 3*10*2=60 rows due to the contacts between 9 ragdoll-ragdoll pairs, and 3*10*2=60 rows between the bottom ragdoll and the ground. Each ragdoll still has 54 rows holding it together. This gives a grand total of 9*60+60+54*10=1140 rows. A 1140*1140 matrix takes about 5 megs! Unlike graphics, the cost of (direct LCP) physics is not per object, it is per interaction, and it can get quite big. Of course, in real games which use these methods, there are hacks to make sure that people dont die in the same spot, or that only a small number of cars can be involved in a crash. James Golding did a GDC 2002 talk about how this is done in MathEngine Karma. However, big piles of dying people, big walls of falling blocks or big car crashes might be a vital part of the game, and in these cases other methods are better. There is a similar story with cpu time. Ill have to talk generally here because the direct LCP method I have experience with is different to the one used in ODE. Typically what happens is that a number of 'iterations' (in the for-loop sense, not the iterative algorithm sense) are performed. Each one takes some subset of the data in the matrix and performs some O(n^3) or O(n^2) matrix operations on it. The number of 'iterations' is variable and depends on things like the number of separating contacts. In theory, the maximum number of iterations is O(2^n) or O(3^n), which is an argument often wheeled out by anti-LCP people. There are problems but this is the least of your worries. The reason is that you can stop the an LCP after a constant number of iterations, and the physical artefacts are not too bad. The real problem is that the size of the matrix, n fluctuates quite a bit (as discussed above). This wouldnt be too bad if you were doing a linear amount of work on the matrix. However, you are doing O(n^3) work, so any fluctuations in n give large fluctuations in the cpu time. I should say though that LCP methods are very stable, and once Russ sorts out box-box, ODE is going to be rock solid. The reason that there are direct LCP games in the top 20 at the moment despite the above hurdles is because the stability is so good. >Also - is there any drawback to using the LCP method >on consoles? On PC, the above concerns arent too much of a problem. PC games machines have lots more ram than consoles, and if the game is good enough they will buy more. CPUs are a lot faster and have more cache. This makes the constant factors in execution time very small. Simple gameplay and AI hacks can prevent physical systems getting too big. For this reason, I believe that direct LCP based physics engines such as ODE are a very good choice for the PC. Our tests have also shown that they are a very good choice on the gamecube and xbox due to the easily accessible memory bandwitdh on those platforms. However, on the PS2 it is not quite as clear. Many people are releasing games based on a direct LCP solver on PS2, but they have had to make some compromises. The PS2 does have masses of memory bandwidth and floating point performance, but unoptimised C code doesnt have access to it. If you are going to port ODE to the PS2 I would suggest double buffering all your data through the scratchpad, microcoding all your inner loops and staying away from vif0. Taking advantage of matrix sparsity is a good idea too. In my experience, iterative (as opposed to direct) LCP methods work much better on PS2. With these methods it is possible to keep all the data of a reasonably sized scene in spr or vumem0 at once. This gives you far more gigaflops, because you are not hanging around waiting for main memory all the time. With these algorithms, you can even out run a PC! MathEngine Karma 1.3 comes with a direct LCP solver Kea, and an iterative LCP solver Arthur, so that you can select the best solution for your platform/game. Sorry about that... Of course, there are non LCP routes you could look at as well. In particular Thomas Jacobsen's constraint relaxation with verlet integration is probably worth a look. Good luck with your simulations! Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From g.r.vansickle at worldnet.att.net Sat Oct 26 13:55:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Sat Oct 26 13:55:02 2002 Subject: [ODE] box-box collisions In-Reply-To: Message-ID: (oops, accidentally sent this only to Russ) [snip] > this illustrates a point i've made before: that collision detection for > dynamics is a more difficult problem that collsion detection alone: the > contact points that are generated must meet extra conditions so that the > resulting contact-driven motion will be stable. in particular: > > * contact points should be inside the collison volume. > This sounds like it doesn't bode well for any sort of "collision anti-aliasing" schemes, i.e. preventing a fast-moving small object from going right through a wall. Are you saying here that even if a suitable collision point was found, the fact that it was by definition outside the collision volume (because there is none) would prevent it from being properly taken into account? -- Gary R. Van Sickle Brewer. Patriot. From russ at q12.org Sun Oct 27 00:25:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:25:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <20021027002918.5ef81c00.russ@q12.org> > This sounds like it doesn't bode well for any sort of "collision > anti-aliasing" schemes, i.e. preventing a fast-moving small object > from going right through a wall. Are you saying here that even if a > suitable collision point was found, the fact that it was by definition > outside the collision volume (because there is none) would prevent it > from being properly taken into account? i'm not quite sure i understand the question - what i was saying is that more stable dynamics results when the contact point is inside the intersection volume. if your objects don't collide, there is no intersection volume and thus ODE won't generate a contact point. if you generate one anyway for fast moving objects (e.g. projecting the object along its path) the contact constraint will still act in the same way, but finding a contact position that will give you consistent stability is going to be a problem. russ. -- Russell Smith http://www.q12.org From russ at q12.org Sun Oct 27 00:36:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:36:02 2002 Subject: [ODE] ODE presentation at IGC'02 Message-ID: <20021027003656.5b83b402.russ@q12.org> for those interested in some more blah blah about ODE, the slides of my talk at IGC'02 are up on q12. it way not make much sense because it's all in note form, but i'm sure you will get the idea. anyway, follow the link at: http://q12.org/ode/slides/slides.html russ. -- Russell Smith http://www.q12.org From russ at q12.org Sun Oct 27 00:46:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:46:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021026141225.80198.qmail@web14907.mail.yahoo.com> References: <20021026141225.80198.qmail@web14907.mail.yahoo.com> Message-ID: <20021027005050.3de333b3.russ@q12.org> hi richard, > I should say though that LCP methods are very stable, > and once Russ sorts out box-box, ODE is going to be > rock solid. thanks for the vote of confidence! > The reason that there are direct LCP games > in the top 20 at the moment despite the above hurdles > is because the stability is so good. i am curious about one thing: do your customers percieve that the stability itself is the good thing, or that the shortened development time that results is the good thing? (both? neither?) > > > Sorry about that... as a penance for shamelessly marketing your stuff here :), perhaps you could tell us exactly what an 'iterative LCP' solver is? i'm genuinely curious. are you: * running a fixed number of LCP iterations per timestep? * factorizing the non-LCP constraints fully? * re-using constraint clamping info from step to step? - if so, how do you handle contact coherency problems? * in general, how is the LCP restarted? also, there is one thing to add to your explanation of where the time goes: when a large impact occurs in the system (e.g. a car crashes into a pile of boxes) there is usually a single time step at the moment of impact that goes *really* slowly. the problem is that the LCP solver needs a large number of iterations to effectively spread the impact force throughout the rest of the system (this problem can be understood more precisely by considering how the algorithm steps through the elongated LCP solution space). it sounds like this situation would benefit the most from your constant iteration technique? russ. -- Russell Smith http://www.q12.org From g.r.vansickle at worldnet.att.net Sun Oct 27 00:59:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Sun Oct 27 00:59:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <20021027002918.5ef81c00.russ@q12.org> Message-ID: > > This sounds like it doesn't bode well for any sort of "collision > > anti-aliasing" schemes, i.e. preventing a fast-moving small object > > from going right through a wall. Are you saying here that even if a > > suitable collision point was found, the fact that it was by definition > > outside the collision volume (because there is none) would prevent it > > from being properly taken into account? > > i'm not quite sure i understand the question - what i was saying is that > more stable dynamics results when the contact point is inside the > intersection volume. if your objects don't collide, there is no > intersection volume and thus ODE won't generate a contact point. As I understand it, you actually mean "If your objects don't intersect at any timestep..." in that last sentence, right? > if you > generate one anyway for fast moving objects (e.g. projecting the object > along its path) the contact constraint will still act in the same way, > but finding a contact position that will give you consistent stability > is going to be a problem. I guess what I'm wondering is, say you shoot an ODE bullet at an ODE wall. At one timestep, the bullet is on one side of the wall, at the next it's on the other side, in neither step do their respective geometries overlap. Are you saying that it isn't possible to generate a contact point that will ensure stability in such a case? -- Gary R. Van Sickle Brewer. Patriot. From rtonge90 at yahoo.co.uk Sun Oct 27 03:19:02 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sun Oct 27 03:19:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021027101849.10220.qmail@web14904.mail.yahoo.com> Hello >perhaps you could tell us exactly what an 'iterative >LCP' solver is? i'm genuinely curious I meant iterative in the sense that the Newton Raphson method is an iterative method for finding the roots of an equation. An iterative LCP method is one that makes an initial guess of the force vector and then on each iteration moves the force vector strictly closer to the exact solution. You can then stop the iteration whenever you like, if you are willing to accept an approximate solution. If you stop the algorithm after one iteration, you get an effect that looks quite similar to a micro-impulse simulator. If you dont limit the number of iterations, you get the exact LCP solution. For reasonable size systems with lots of stacks and stuff, about 350 iterations looks ok. Each iteration does a tiny amount of work (just a constant number of 4*6 matrix multiplies), so the user has quite fine grained control over the execution time (or simulation quality). A good reference on iterative LCP methods is chapter 9 of Murty's book, which is available online: http://ioe.engin.umich.edu/books/murty/linear_complementarity_webbook/kat9.ps Although this should give you an idea about what I mean by iterative LCP, I should point out that we dont use any of the methods in that chapter. > * re-using constraint clamping info from step to > step? > - if so, how do you handle contact coherency > problems? > * in general, how is the LCP restarted? I think that you are thinking that I was talking about a warm starting technique. Whilst it is a good idea to do this as well, that was not what I meant by an iterative LCP. Richard Tonge PS2 Optimisation Engineer MathEngine www.richardtonge.com __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From paul.chavent at fnac.net Sun Oct 27 11:13:02 2002 From: paul.chavent at fnac.net (Chavent Paul) Date: Sun Oct 27 11:13:02 2002 Subject: [ODE] how to get a geom class type. Message-ID: <3DBC3B39.5090407@fnac.net> Hello i'am french. I'am a new user. This is very exiting to play with this library, so thanks to its author. I have a question for you. Knowing a dGeomID geom how can i get its class (it is a cube, a sphere, a caped cylinder ????). I'have already try to found how the structure of a dGeomID is made, but i'am not sure. thanks ! From coding at natew.com Sun Oct 27 11:25:02 2002 From: coding at natew.com (Nate W) Date: Sun Oct 27 11:25:02 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <001b01c27cea$e4e57670$73fefea9@athlon> Message-ID: On Sat, 26 Oct 2002, Erwin de Vries wrote: > > It's like Porrasturvat, but without the stairs [...] With four dolls > > (team dismount!), about 15 fps. Changing them to capped cylinders, > > 6-9 fps. > > These framerates look rediculously low. Are you measuring the physics > stepping rate? I am now, and you're right, those numwers are really low with four dolls and capped cylinders, the dWorldStep call takes about 7 milliseconds. Drawing the scene takes about 22ms, so I should be getting around 35 fps, not 6-to-9. Thanks for the tip, now I'll see what I can do about it. -- Nate Waddoups Redmond WA USA http://www.natew.com From ahamilton_01 at hotmail.com Sun Oct 27 12:14:01 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Sun Oct 27 12:14:01 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: This iterative LCP solving sounds like the magic bullet for physics in game. Is it? Al >From: Richard Tonge >To: ode@q12.org >Subject: [ODE] Speed of ODE's constraint method Date: Sun, 27 Oct 2002 >10:18:49 +0000 (GMT) > >Hello > > >perhaps you could tell us exactly what an 'iterative > >LCP' solver is? i'm genuinely curious > >I meant iterative in the sense that the Newton Raphson >method is an iterative method for finding the roots of >an equation. > >An iterative LCP method is one that makes an initial >guess of the force vector and then on each iteration >moves the force vector strictly closer to the exact >solution. You can then stop the iteration whenever you >like, if you are willing to accept an approximate >solution. If you stop the algorithm after one >iteration, you get an effect that looks quite similar >to a micro-impulse simulator. If you dont limit the >number of iterations, you get the exact LCP solution. >For reasonable size systems with lots of stacks and >stuff, about 350 iterations looks ok. Each iteration >does a tiny amount of work (just a constant number of >4*6 matrix multiplies), so the user has quite fine >grained control over the execution time (or simulation >quality). > >A good reference on iterative LCP methods is chapter 9 >of Murty's book, which is available online: >http://ioe.engin.umich.edu/books/murty/linear_complementarity_webbook/kat9.ps >Although this should give you an idea about what I >mean by iterative LCP, I should point out that we dont >use any of the methods in that chapter. > > > * re-using constraint clamping info from step to > > step? > > - if so, how do you handle contact coherency > > problems? > > * in general, how is the LCP restarted? > >I think that you are thinking that I was talking about >a warm starting technique. Whilst it is a good idea to >do this as well, that was not what I meant by an >iterative LCP. > >Richard Tonge >PS2 Optimisation Engineer >MathEngine >www.richardtonge.com > >__________________________________________________ >Do You Yahoo!? >Everything you'll ever need on one web page >from News and Sport to Email and Music Charts >http://uk.my.yahoo.com >_______________________________________________ >ODE mailing list >ODE@q12.org >http://q12.org/mailman/listinfo/ode _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From russ at q12.org Sun Oct 27 12:23:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 12:23:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: <20021027002918.5ef81c00.russ@q12.org> Message-ID: <20021027122325.04738156.russ@q12.org> > I guess what I'm wondering is, say you shoot an ODE bullet at an ODE > wall. At one timestep, the bullet is on one side of the wall, at the > next it's on the other side, in neither step do their respective > geometries overlap. Are you saying that it isn't possible to generate > a contact point that will ensure stability in such a case? in this case it's not too hard - consider the wall to be an infinite plane and generate the contact point when the bullet is on the 'wrong' side of the wall. a better example is two long thin objects that go through each other without intersecting (e.g. in a sword fight). generating the contact point to handle this case is harder, but not impossible. russ. -- Russell Smith http://www.q12.org From erwin at vo.com Sun Oct 27 12:31:57 2002 From: erwin at vo.com (Erwin de Vries) Date: Sun Oct 27 12:31:57 2002 Subject: [ODE] Speed of ODE's constraint method References: Message-ID: <006b01c27ded$f751f5a0$73fefea9@athlon> > On Sat, 26 Oct 2002, Erwin de Vries wrote: > > > > It's like Porrasturvat, but without the stairs [...] With four dolls > > > (team dismount!), about 15 fps. Changing them to capped cylinders, > > > 6-9 fps. > > > > These framerates look rediculously low. Are you measuring the physics > > stepping rate? > > I am now, and you're right, those numwers are really low with four dolls > and capped cylinders, the dWorldStep call takes about 7 milliseconds. > > Drawing the scene takes about 22ms, so I should be getting around 35 fps, > not 6-to-9. Thanks for the tip, now I'll see what I can do about it. If the dWorldStep time is 7 milliseconds, isnt ~143fps the number you should be reporting? It might be questionable that you are doing only one worldstep in one rendering step, but if someone wants to know how fast ODE is this is the best way of telling them. :-) And any rendering shouldnt interfere with these numbers of course. Erwin From holmlund at hpc2n.umu.se Sun Oct 27 12:54:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Sun Oct 27 12:54:02 2002 Subject: [ODE] Speed of ODE's constraint method References: <006b01c27ded$f751f5a0$73fefea9@athlon> Message-ID: <3DBC4423.3030005@hpc2n.umu.se> How do you all time your simulation steps? Time system calls are generally quite expensive, and not a great way to test your simulation. If you do it like that you should dry run 1000 physics steps and measure that instead. /Ken -- Kenneth Holmlund Director VRlab HPC2N, Umeå University, Sweden holmlund@hpc2n.umu.se From coding at natew.com Sun Oct 27 13:19:01 2002 From: coding at natew.com (Nate W) Date: Sun Oct 27 13:19:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <006b01c27ded$f751f5a0$73fefea9@athlon> Message-ID: On Sun, 27 Oct 2002, Erwin de Vries wrote: > > I am now, and you're right, those numwers are really low with four dolls > > and capped cylinders, the dWorldStep call takes about 7 milliseconds. > > > > Drawing the scene takes about 22ms, so I should be getting around 35 fps, > > not 6-to-9. Thanks for the tip, now I'll see what I can do about it. > > If the dWorldStep time is 7 milliseconds, isnt ~143fps the number you should > be reporting? Yeah, good point. > It might be questionable that you are doing only one worldstep > in one rendering step (...) Yes, it definitely is. :-) I had incorrectly assumed that it took more time to 'step' the world than to render it. I just revised my code to step twice before rendering, and it only makes a small difference in frame rate. Probably does lots for stability though. Thanks for the tip. -- Nate Waddoups Redmond WA USA http://www.natew.com From si at sjbrown.co.uk Sun Oct 27 13:32:01 2002 From: si at sjbrown.co.uk (Si Brown) Date: Sun Oct 27 13:32:01 2002 Subject: [ODE] how to get a geom class type. References: <3DBC3B39.5090407@fnac.net> Message-ID: <001701c27df7$96841d70$ce0d68d5@gimp> Use the dGeomGetClass function, and compare the result with the statically defined class numbers such as dSphereClass, dBoxClass, etc. Have a look in the documentation(!) and geom.h for more details. Si ----- Original Message ----- From: "Chavent Paul" To: Sent: Sunday, October 27, 2002 7:15 PM Subject: [ODE] how to get a geom class type. > Hello i'am french. > I'am a new user. > This is very exiting to play with this library, so thanks to its author. > > I have a question for you. Knowing a dGeomID geom how can i get its > class (it is a cube, a sphere, a caped cylinder ????). > I'have already try to found how the structure of a dGeomID is made, but > i'am not sure. > > thanks ! > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From nathan at whatever.net Sun Oct 27 19:27:01 2002 From: nathan at whatever.net (Nate Waddoups) Date: Sun Oct 27 19:27:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <001b01c27cea$e4e57670$73fefea9@athlon> Message-ID: On Sat, 26 Oct 2002, Erwin de Vries wrote: > These framerates look rediculously low. Are you measuring the physics > stepping rate? No, but that's a really good idea. I have no idea how much overhead there is in the rest of the app... I'll try measuring the time spent in dWorldStep. -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Sun Oct 27 21:16:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 21:16:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021027101849.10220.qmail@web14904.mail.yahoo.com> References: <20021027101849.10220.qmail@web14904.mail.yahoo.com> Message-ID: <20021027212041.76d4b926.russ@q12.org> > A good reference on iterative LCP methods is chapter 9 > of Murty's book interesting. i read chapter 9 and implemented some of the methods there in matlab. the sparsity-preserving SOR (successive over-relaxation) method described on p378 seems to be the closest to what you describe, as its main computational step is multiplying M by some vector. in ODE 'M' is J*inv(M)*J', which boils down to a bunch of 6xN matrix operations as you described. for the random PD matrices i was testing with i found that the SOR method scaled as O(n^3), the same as the direct method. i found that if a 0.1% error was the termination condition then SOR was 3-4 times less flop count than ODE's direct solver for 100*100 matrices (the crossover point below which the direct method was faster was about 20*20). however! --> typical rigid body system matrices have a much more useful spectrum than my random matrices, so i suspect that if ODE had an SOR it would (a) be much faster than direct LCP, and (b) scale O(n) or O(n^2) depending on the structure of the RB system. i will investigate this later. SOR would not be too hard to implement in ODE at all (it would be an optional method). chosing the parameter values (e.g. w) presents a problem. > Although this should give you an idea about what I > mean by iterative LCP, I should point out that we dont > use any of the methods in that chapter. are you using a method related to the SOR method? russ. -- Russell Smith http://www.q12.org From amatos at create.human.nagoya-u.ac.jp Mon Oct 28 01:02:02 2002 From: amatos at create.human.nagoya-u.ac.jp (Artur Matos) Date: Mon Oct 28 01:02:02 2002 Subject: [ODE] ODE for Java v0.1 released In-Reply-To: <3DB9AA9B.9040701@uni-paderborn.de> References: <3DB9AA9B.9040701@uni-paderborn.de> Message-ID: <20021029020236.79571ec3.amatos@create.human.nagoya-u.ac.jp> Hi Tim, On Fri, 25 Oct 2002 22:33:31 +0200 Tim Schmidt wrote: > I am pleased to announce that the first release of 'ODE for Java' is > available I just take a look at the source and played a little bit with the examples. Looks great! Thanks for releasing it. As you probably remember, I was also working in a java application that used ODE. For that I developed my own java ODE interface using swig (http://www.swig.org). SWIG is an utility that helps to interface C and C++ libraries to a myrad of programming languages, including Java, Tcl and Python. I thing using SWIG in the long run would be more useful to the ODE community, because it would be easier to interface with other programming languages besides Java (like Python). Also, because the mapping from C++ to the other languages is more or less automatic, it could help with the garbage collection problems that you mention. Basically, in SWIG you only have to create an "interface" file (that is like a C/C++ header file), and the utility automatically creates all the necessary files; Garbage collection is also handled automatically by it. My own SWIG interface file is rather rough and incomplete by now, because I don't have the necessary SWIG knowledge (i.e. typemaps) to make a more natural mapping. Also, I have based my SWIG file in the C++ interface bundled with the O.03 distribution (I haven't checked the latest CVS versions, so I really don't know how it is now), and it was rather incomplete, so I had to change it slighty in order to work. Because anyway your interface is working much better that mine, and also because of the Java3D integration, I think I can drop my own interface so that we could work together in further developing yours. Anyway, because the reasons that I pointed before, I would sugest for this changing the current ode.core.* package with a SWIG generated one instead, and adjusting the remaining Java3D integration classes. We could use my own interface file as a starting point. Also, some changes in the ODE own C++ interface would be needed. Of course, this is only my idea.:) In any case, you can count with me for helping you developing furthermore the java version. Any suggestions/ideas from the rest of the community? Best regards, Artur Matos. --------------------------------------------------------------- Artur Matos ALife Core Lab (http://www2.create.human.nagoya-u.ac.jp) Graduate School of Human Informatics | Nagoya University Email: amatos@create.human.nagoya-u.ac.jp (Lab) arturmatos78@yahoo.com --------------------------------------------------------------- From Marta.Pla at uv.es Mon Oct 28 02:18:02 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Mon Oct 28 02:18:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <1035796861.17791.3.camel@welfa> --=-dM9QhiOGVpqEKo5+CIIg Content-Type: text/plain Content-Transfer-Encoding: quoted-printable >=20 > It seems there are a couple possible ways to test for face-face box > contacts. Rather than being coplanar actually I meant that the planes of > each box are parallel, so if we know that the boxes penetrate and are > coplanar then there must be a face-face contact. The other way suggested > by Marta is to compare rotations, and if the boxes are at equal/right/180 > degree angles to one another then they must be in face-face contact as > well. >=20 > I think the second way may be a bit faster. >=20 >=20 I have implemented that way and it works well. The only difficult thing is that I don't know well how to introduce it in the ODE code. I would need someone who knows C++ well to do it.=20 Despite of this, I were reading the boxbox algorithm and I see they use the rotation of the two boxes also. I think there would be easy to put my code inside of that but I think I wouldn't be able to do it. --=20 **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint =3D 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla@uv.es) http://www.uv.es/~mplac Robotics Institute University of Valencia (Spain) **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. --=-dM9QhiOGVpqEKo5+CIIg Content-Type: application/pgp-signature; name=signature.asc Content-Description: Esta parte del mensaje esta firmada digitalmente -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) iD8DBQA9vQF9hrRS0qLSFhARAjhDAJ910XMhpaHZLgw9CZalSyra8Kd6mQCfUJVY ZDHDsuJAkBtmaPgjfknezIc= =72Yh -----END PGP SIGNATURE----- --=-dM9QhiOGVpqEKo5+CIIg-- From ps_yumemi at yahoo.com Mon Oct 28 07:33:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 28 07:33:01 2002 Subject: [ODE] rotation Message-ID: <20021028143204.88351.qmail@web40508.mail.yahoo.com> hello, how exactly do you manipulate the dMatrix3 variable? is it an array? how can you copy it? is there any way to get the euler angles from it? i really need to copy them to another variable. thanks pia __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From facontidavide at hotmail.com Mon Oct 28 09:35:02 2002 From: facontidavide at hotmail.com (Edgard Oscuro) Date: Mon Oct 28 09:35:02 2002 Subject: [ODE] Get the motor torque Message-ID:

Hello,

as we know, we drive motors using velocity and maximum torque or force, and they work in the integration step giving the right torque/force.

I need to know the genereted torque (with a given velocity as usually), but I don't know how to get it.

Someone could help me?



MSN Extra Storage: piena libertà di esprimersi e comunicare Clicca qui From bpellens at vub.ac.be Mon Oct 28 12:52:02 2002 From: bpellens at vub.ac.be (Bram Pellens) Date: Mon Oct 28 12:52:02 2002 Subject: [ODE] Creating DLL of drawstuff Message-ID: Hello, I'm having some problems using ODE together with wxWindows (www.wxWindows.org). Both the libraries drawstuff and wxWindows have references to the main function leading to linker errors when compiling my application. I believe from earlier messages in the archives I have to create a DLL from the drawstuff sources, but i don't know how the build such a DLL Can someone please give me some explanation on creating the DLL. Thanks in advance, Bram Pellens From coding at natew.com Mon Oct 28 14:17:02 2002 From: coding at natew.com (Nate W) Date: Mon Oct 28 14:17:02 2002 Subject: [ODE] Creating DLL of drawstuff In-Reply-To: Message-ID: On Mon, 28 Oct 2002, Bram Pellens wrote: > I'm having some problems using ODE together with wxWindows > (www.wxWindows.org). Both the libraries drawstuff and wxWindows have > references to the main function leading to linker errors when > compiling my application. I believe from earlier messages in the > archives I have to create a DLL from the drawstuff sources, but i > don't know how the build such a DLL Can someone please give me some > explanation on creating the DLL. If you have some sort of DLL building already, try opening drawstuff/windows.cpp and just comment out the WinMain function at the bottom of the file. You might think of drawstuff as a trivial GUI for simple tests of ODE. It's just there to make ODE objects visible in a very simple GUI. If you have wxWindows providing your GUI, you have no need for most of the code in drawstuff. You will probably find useful the functions for drawing basic geometric objects like boxes and spheres, but not much else. Those functions can simply be pasted into a source file in your application. -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Mon Oct 28 18:19:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Mon Oct 28 18:19:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp Message-ID: This is a multi-part message in MIME format. ------_=_NextPart_001_01C27EE9.1ED0102A Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable i've found that i need to combine contacts when sphere bodies roll from = one static geom to another. to understand the problem, let me show you = an example... attached is a modified version of test_boxstack.cpp. hit the 's' key to = drop a sphere and watch what happens. see how it sticks on the cusp = between the ramp and the ground plane? that is kind of weird. it happens when spheres are rolling over boxes, = planes, or meshes. it can even happen if you embed a ccylinder into the = ground and roll up next to it. you will stick for a while before you = can pull yourself away from the ccylinder. is this expected or is it a bug? if it is expected, perhaps it should = automatically be handled because it is so common to run up against. = erwin handles it within a single tri-list by merging the contacts into a = single contact. but you need to do this on a higher level as well = between different trilists, boxes, and planes. ------_=_NextPart_001_01C27EE9.1ED0102A Content-Type: application/octet-stream; name="test_boxstack.cpp" Content-Transfer-Encoding: base64 Content-Description: test_boxstack.cpp Content-Disposition: attachment; filename="test_boxstack.cpp" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKiBPcGVuIER5bmFtaWNzIEVu Z2luZSwgQ29weXJpZ2h0IChDKSAyMDAxLDIwMDIgUnVzc2VsbCBMLiBTbWl0aC4gICAgICAgKg0K ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gIEVtYWlsOiBydXNzQHExMi5vcmcgICBXZWI6IHd3dy5x MTIub3JnICAgICAgICAgICoNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAgKg0K ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiBFSVRIRVI6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICoNCiAqICAgKDEpIFRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlICAqDQogKiAgICAgICBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCAgKg0K ICogICAgICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiBUaGUgdGV4dCBvZiB0aGUg R05VIExlc3NlciAgICAgICoNCiAqICAgICAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW5j bHVkZWQgd2l0aCB0aGlzIGxpYnJhcnkgaW4gdGhlICAgICAqDQogKiAgICAgICBmaWxlIExJQ0VO U0UuVFhULiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0K ICogICAoMikgVGhlIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgaXMgaW5jbHVkZWQgd2l0aCB0aGlz IGxpYnJhcnkgaW4gICAgICoNCiAqICAgICAgIHRoZSBmaWxlIExJQ0VOU0UtQlNELlRYVC4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0K ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsICAgICAgICoNCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqDQogKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgZmlsZXMgICAgKg0K ICogTElDRU5TRS5UWFQgYW5kIExJQ0VOU0UtQlNELlRYVCBmb3IgbW9yZSBkZXRhaWxzLiAgICAg ICAgICAgICAgICAgICAgICoNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8N Cg0KI2luY2x1ZGUgPG9kZS9vZGUuaD4NCiNpbmNsdWRlIDxkcmF3c3R1ZmYvZHJhd3N0dWZmLmg+ DQoNCiNpZmRlZiBNU1ZDDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0IDQzMDUpICAvLyBm b3IgVkMrKywgbm8gcHJlY2lzaW9uIGxvc3MgY29tcGxhaW50cw0KI2VuZGlmDQoNCi8vIHNlbGVj dCBjb3JyZWN0IGRyYXdpbmcgZnVuY3Rpb25zDQoNCiNpZmRlZiBkRE9VQkxFDQojZGVmaW5lIGRz RHJhd0JveCBkc0RyYXdCb3hEDQojZGVmaW5lIGRzRHJhd1NwaGVyZSBkc0RyYXdTcGhlcmVEDQoj ZGVmaW5lIGRzRHJhd0N5bGluZGVyIGRzRHJhd0N5bGluZGVyRA0KI2RlZmluZSBkc0RyYXdDYXBw ZWRDeWxpbmRlciBkc0RyYXdDYXBwZWRDeWxpbmRlckQNCiNlbmRpZg0KDQoNCi8vIHNvbWUgY29u c3RhbnRzDQoNCiNkZWZpbmUgTlVNIDEJCQkvLyBtYXggbnVtYmVyIG9mIG9iamVjdHMNCiNkZWZp bmUgREVOU0lUWSAoNS4wKQkJLy8gZGVuc2l0eSBvZiBhbGwgb2JqZWN0cw0KI2RlZmluZSBHUEIg MwkJCS8vIG1heGltdW0gbnVtYmVyIG9mIGdlb21ldHJpZXMgcGVyIGJvZHkNCg0KDQovLyBkeW5h bWljcyBhbmQgY29sbGlzaW9uIG9iamVjdHMNCg0Kc3RydWN0IE15T2JqZWN0IHsNCiAgZEJvZHlJ RCBib2R5OwkJCS8vIHRoZSBib2R5DQogIGRHZW9tSUQgZ2VvbVtHUEJdOwkJLy8gZ2VvbWV0cmll cyByZXByZXNlbnRpbmcgdGhpcyBib2R5DQp9Ow0KDQpzdGF0aWMgaW50IG51bT0wOwkJLy8gbnVt YmVyIG9mIG9iamVjdHMgaW4gc2ltdWxhdGlvbg0Kc3RhdGljIGludCBuZXh0b2JqPTA7CQkvLyBu ZXh0IG9iamVjdCB0byByZWN5Y2xlIGlmIG51bT09TlVNDQpzdGF0aWMgZFdvcmxkSUQgd29ybGQ7 DQpzdGF0aWMgZFNwYWNlSUQgc3BhY2U7DQpzdGF0aWMgTXlPYmplY3Qgb2JqW05VTV07DQpzdGF0 aWMgZEpvaW50R3JvdXBJRCBjb250YWN0Z3JvdXA7DQpzdGF0aWMgaW50IHNlbGVjdGVkID0gLTE7 CS8vIHNlbGVjdGVkIG9iamVjdA0Kc3RhdGljIGRHZW9tSUQgcmFtcD0wOw0Kc3RhdGljIGRHZW9t SUQgcmFtcDI9MDsNCg0KDQovLyB0aGlzIGlzIGNhbGxlZCBieSBkU3BhY2VDb2xsaWRlIHdoZW4g dHdvIG9iamVjdHMgaW4gc3BhY2UgYXJlDQovLyBwb3RlbnRpYWxseSBjb2xsaWRpbmcuDQoNCnN0 YXRpYyB2b2lkIG5lYXJDYWxsYmFjayAodm9pZCAqZGF0YSwgZEdlb21JRCBvMSwgZEdlb21JRCBv MikNCnsNCiAgaW50IGk7DQogIC8vIGlmIChvMS0+Ym9keSAmJiBvMi0+Ym9keSkgcmV0dXJuOw0K DQogIC8vIGV4aXQgd2l0aG91dCBkb2luZyBhbnl0aGluZyBpZiB0aGUgdHdvIGJvZGllcyBhcmUg Y29ubmVjdGVkIGJ5IGEgam9pbnQNCiAgZEJvZHlJRCBiMSA9IGRHZW9tR2V0Qm9keShvMSk7DQog IGRCb2R5SUQgYjIgPSBkR2VvbUdldEJvZHkobzIpOw0KICBpZiAoYjEgJiYgYjIgJiYgZEFyZUNv bm5lY3RlZCAoYjEsYjIpKSByZXR1cm47DQoNCiAgZENvbnRhY3QgY29udGFjdFszXTsJCQkvLyB1 cCB0byAzIGNvbnRhY3RzIHBlciBib3gNCiAgZm9yIChpPTA7IGk8MzsgaSsrKSB7DQogICAgY29u dGFjdFtpXS5zdXJmYWNlLm1vZGUgPSBkQ29udGFjdEJvdW5jZTsgLy9kQ29udGFjdE11MjsNCiAg ICBjb250YWN0W2ldLnN1cmZhY2UubXUgPSBkSW5maW5pdHk7DQogICAgY29udGFjdFtpXS5zdXJm YWNlLm11MiA9IDA7DQogICAgY29udGFjdFtpXS5zdXJmYWNlLmJvdW5jZSA9IDAuNTsNCiAgICBj b250YWN0W2ldLnN1cmZhY2UuYm91bmNlX3ZlbCA9IDAuMTsNCiAgfQ0KICBpZiAoaW50IG51bWMg PSBkQ29sbGlkZSAobzEsbzIsMywmY29udGFjdFswXS5nZW9tLHNpemVvZihkQ29udGFjdCkpKSB7 DQogICAgLy8gZE1hdHJpeDMgUkk7DQogICAgLy8gZFJTZXRJZGVudGl0eSAoUkkpOw0KICAgIC8v IGNvbnN0IGRSZWFsIHNzWzNdID0gezAuMDIsMC4wMiwwLjAyfTsNCiAgICBmb3IgKGk9MDsgaTxu dW1jOyBpKyspIHsNCiAgICAgIGRKb2ludElEIGMgPSBkSm9pbnRDcmVhdGVDb250YWN0ICh3b3Js ZCxjb250YWN0Z3JvdXAsY29udGFjdCtpKTsNCiAgICAgIGRKb2ludEF0dGFjaCAoYyxiMSxiMik7 DQogICAgICAvLyBkc0RyYXdCb3ggKGNvbnRhY3RbaV0uZ2VvbS5wb3MsUkksc3MpOw0KICAgIH0N CiAgfQ0KfQ0KDQoNCi8vIHN0YXJ0IHNpbXVsYXRpb24gLSBzZXQgdmlld3BvaW50DQoNCnN0YXRp YyB2b2lkIHN0YXJ0KCkNCnsNCiAgc3RhdGljIGZsb2F0IHh5elszXSA9IHsyLjE2NDBmLC0xLjMw NzlmLDEuNzYwMGZ9Ow0KICBzdGF0aWMgZmxvYXQgaHByWzNdID0gezEyNS41MDAwZiwtMTcuMDAw MGYsMC4wMDAwZn07DQogIGRzU2V0Vmlld3BvaW50ICh4eXosaHByKTsNCiAgcHJpbnRmICgiVG8g ZHJvcCBhbm90aGVyIG9iamVjdCwgcHJlc3M6XG4iKTsNCiAgcHJpbnRmICgiICAgYiBmb3IgYm94 LlxuIik7DQogIHByaW50ZiAoIiAgIHMgZm9yIHNwaGVyZS5cbiIpOw0KICBwcmludGYgKCIgICBj IGZvciBjeWxpbmRlci5cbiIpOw0KICBwcmludGYgKCIgICB4IGZvciBhIGNvbXBvc2l0ZSBvYmpl Y3QuXG4iKTsNCiAgcHJpbnRmICgiVG8gc2VsZWN0IGFuIG9iamVjdCwgcHJlc3Mgc3BhY2UuXG4i KTsNCiAgcHJpbnRmICgiVG8gZGlzYWJsZSB0aGUgc2VsZWN0ZWQgb2JqZWN0LCBwcmVzcyBkLlxu Iik7DQogIHByaW50ZiAoIlRvIGVuYWJsZSB0aGUgc2VsZWN0ZWQgb2JqZWN0LCBwcmVzcyBlLlxu Iik7DQp9DQoNCg0KY2hhciBsb2Nhc2UgKGNoYXIgYykNCnsNCiAgaWYgKGMgPj0gJ0EnICYmIGMg PD0gJ1onKSByZXR1cm4gYyAtICgnYSctJ0EnKTsNCiAgZWxzZSByZXR1cm4gYzsNCn0NCg0KDQov LyBjYWxsZWQgd2hlbiBhIGtleSBwcmVzc2VkDQoNCnN0YXRpYyB2b2lkIGNvbW1hbmQgKGludCBj bWQpDQp7DQogIGludCBpLGosazsNCiAgZFJlYWwgc2lkZXNbM107DQogIGRNYXNzIG07DQoNCiAg Y21kID0gbG9jYXNlIChjbWQpOw0KICBpZiAoY21kID09ICdiJyB8fCBjbWQgPT0gJ3MnIHx8IGNt ZCA9PSAnYycgfHwgY21kID09ICd4Jykgew0KICAgIGlmIChudW0gPCBOVU0pIHsNCiAgICAgIGkg PSBudW07DQogICAgICBudW0rKzsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICBpID0gbmV4dG9i ajsNCiAgICAgIG5leHRvYmorKzsNCiAgICAgIGlmIChuZXh0b2JqID49IG51bSkgbmV4dG9iaiA9 IDA7DQoNCiAgICAgIC8vIGRlc3Ryb3kgdGhlIGJvZHkgYW5kIGdlb21zIGZvciBzbG90IGkNCiAg ICAgIGRCb2R5RGVzdHJveSAob2JqW2ldLmJvZHkpOw0KICAgICAgZm9yIChrPTA7IGsgPCBHUEI7 IGsrKykgew0KCWlmIChvYmpbaV0uZ2VvbVtrXSkgZEdlb21EZXN0cm95IChvYmpbaV0uZ2VvbVtr XSk7DQogICAgICB9DQogICAgICBtZW1zZXQgKCZvYmpbaV0sMCxzaXplb2Yob2JqW2ldKSk7DQog ICAgfQ0KDQogICAgb2JqW2ldLmJvZHkgPSBkQm9keUNyZWF0ZSAod29ybGQpOw0KICAgIGZvciAo az0wOyBrPDM7IGsrKykgc2lkZXNba10gPSBkUmFuZFJlYWwoKSowLjUrMC4xOw0KDQogICAgZEJv ZHlTZXRQb3NpdGlvbiAob2JqW2ldLmJvZHksDQogICAgICAgICAgMS4xZiwgMC5mLA0KCQkgICAg ICAvL2RSYW5kUmVhbCgpKjItMSxkUmFuZFJlYWwoKSoyLTEsDQogICAgICAgICAgZFJhbmRSZWFs KCkrMSk7DQogICAgZE1hdHJpeDMgUjsNCiAgICBkUkZyb21BeGlzQW5kQW5nbGUgKFIsZFJhbmRS ZWFsKCkqMi4wLTEuMCxkUmFuZFJlYWwoKSoyLjAtMS4wLA0KCQkJZFJhbmRSZWFsKCkqMi4wLTEu MCxkUmFuZFJlYWwoKSoxMC4wLTUuMCk7DQogICAgZEJvZHlTZXRSb3RhdGlvbiAob2JqW2ldLmJv ZHksUik7DQogICAgZEJvZHlTZXREYXRhIChvYmpbaV0uYm9keSwodm9pZCopIGkpOw0KDQogICAg aWYgKGNtZCA9PSAnYicpIHsNCiAgICAgIGRNYXNzU2V0Qm94ICgmbSxERU5TSVRZLHNpZGVzWzBd LHNpZGVzWzFdLHNpZGVzWzJdKTsNCiAgICAgIG9ialtpXS5nZW9tWzBdID0gZENyZWF0ZUJveCAo c3BhY2Usc2lkZXNbMF0sc2lkZXNbMV0sc2lkZXNbMl0pOw0KICAgIH0NCiAgICBlbHNlIGlmIChj bWQgPT0gJ2MnKSB7DQogICAgICBzaWRlc1swXSAqPSAwLjU7DQogICAgICBkTWFzc1NldENhcHBl ZEN5bGluZGVyICgmbSxERU5TSVRZLDMsc2lkZXNbMF0sc2lkZXNbMV0pOw0KICAgICAgb2JqW2ld Lmdlb21bMF0gPSBkQ3JlYXRlQ0N5bGluZGVyIChzcGFjZSxzaWRlc1swXSxzaWRlc1sxXSk7DQog ICAgfQ0KICAgIGVsc2UgaWYgKGNtZCA9PSAncycpIHsNCiAgICAgIHNpZGVzWzBdICo9IDAuNTsN CiAgICAgIGRNYXNzU2V0U3BoZXJlICgmbSxERU5TSVRZLHNpZGVzWzBdKTsNCiAgICAgIG9ialtp XS5nZW9tWzBdID0gZENyZWF0ZVNwaGVyZSAoc3BhY2Usc2lkZXNbMF0pOw0KICAgIH0NCiAgICBl bHNlIGlmIChjbWQgPT0gJ3gnKSB7DQogICAgICBkR2VvbUlEIGcyW0dQQl07CQkvLyBlbmNhcHN1 bGF0ZWQgZ2VvbWV0cmllcw0KICAgICAgZFJlYWwgZHBvc1tHUEJdWzNdOwkvLyBkZWx0YS1wb3Np dGlvbnMgZm9yIGVuY2Fwc3VsYXRlZCBnZW9tZXRyaWVzDQoNCiAgICAgIC8vIHN0YXJ0IGFjY3Vt dWxhdGluZyBtYXNzZXMgZm9yIHRoZSBlbmNhcHN1bGF0ZWQgZ2VvbWV0cmllcw0KICAgICAgZE1h c3MgbTI7DQogICAgICBkTWFzc1NldFplcm8gKCZtKTsNCg0KICAgICAgLy8gc2V0IHJhbmRvbSBk ZWx0YSBwb3NpdGlvbnMNCiAgICAgIGZvciAoaj0wOyBqPEdQQjsgaisrKSB7DQoJZm9yIChrPTA7 IGs8MzsgaysrKSBkcG9zW2pdW2tdID0gZFJhbmRSZWFsKCkqMC4zLTAuMTU7DQogICAgICB9DQoN CiAgICAgIGZvciAoaz0wOyBrPDM7IGsrKykgew0KCW9ialtpXS5nZW9tW2tdID0gZENyZWF0ZUdl b21UcmFuc2Zvcm0gKHNwYWNlKTsNCglkR2VvbVRyYW5zZm9ybVNldENsZWFudXAgKG9ialtpXS5n ZW9tW2tdLDEpOw0KCWlmIChrPT0wKSB7DQoJICBkUmVhbCByYWRpdXMgPSBkUmFuZFJlYWwoKSow LjI1KzAuMDU7DQoJICBnMltrXSA9IGRDcmVhdGVTcGhlcmUgKDAscmFkaXVzKTsNCgkgIGRNYXNz U2V0U3BoZXJlICgmbTIsREVOU0lUWSxyYWRpdXMpOw0KCX0NCgllbHNlIGlmIChrPT0xKSB7DQoJ ICBnMltrXSA9IGRDcmVhdGVCb3ggKDAsc2lkZXNbMF0sc2lkZXNbMV0sc2lkZXNbMl0pOw0KCSAg ZE1hc3NTZXRCb3ggKCZtMixERU5TSVRZLHNpZGVzWzBdLHNpZGVzWzFdLHNpZGVzWzJdKTsNCgl9 DQoJZWxzZSB7DQoJICBkUmVhbCByYWRpdXMgPSBkUmFuZFJlYWwoKSowLjErMC4wNTsNCgkgIGRS ZWFsIGxlbmd0aCA9IGRSYW5kUmVhbCgpKjEuMCswLjE7DQoJICBnMltrXSA9IGRDcmVhdGVDQ3ls aW5kZXIgKDAscmFkaXVzLGxlbmd0aCk7DQoJICBkTWFzc1NldENhcHBlZEN5bGluZGVyICgmbTIs REVOU0lUWSwzLHJhZGl1cyxsZW5ndGgpOw0KCX0NCglkR2VvbVRyYW5zZm9ybVNldEdlb20gKG9i altpXS5nZW9tW2tdLGcyW2tdKTsNCg0KCS8vIHNldCB0aGUgdHJhbnNmb3JtYXRpb24gKGFkanVz dCB0aGUgbWFzcyB0b28pDQoJZEdlb21TZXRQb3NpdGlvbiAoZzJba10sZHBvc1trXVswXSxkcG9z W2tdWzFdLGRwb3Nba11bMl0pOw0KCWRNYXNzVHJhbnNsYXRlICgmbTIsZHBvc1trXVswXSxkcG9z W2tdWzFdLGRwb3Nba11bMl0pOw0KCWRNYXRyaXgzIFJ0eDsNCglkUkZyb21BeGlzQW5kQW5nbGUg KFJ0eCxkUmFuZFJlYWwoKSoyLjAtMS4wLGRSYW5kUmVhbCgpKjIuMC0xLjAsDQoJCQkgICAgZFJh bmRSZWFsKCkqMi4wLTEuMCxkUmFuZFJlYWwoKSoxMC4wLTUuMCk7DQoJZEdlb21TZXRSb3RhdGlv biAoZzJba10sUnR4KTsNCglkTWFzc1JvdGF0ZSAoJm0yLFJ0eCk7DQoNCgkvLyBhZGQgdG8gdGhl IHRvdGFsIG1hc3MNCglkTWFzc0FkZCAoJm0sJm0yKTsNCiAgICAgIH0NCg0KICAgICAgLy8gbW92 ZSBhbGwgZW5jYXBzdWxhdGVkIG9iamVjdHMgc28gdGhhdCB0aGUgY2VudGVyIG9mIG1hc3MgaXMg KDAsMCwwKQ0KICAgICAgZm9yIChrPTA7IGs8MjsgaysrKSB7DQoJZEdlb21TZXRQb3NpdGlvbiAo ZzJba10sDQoJCQkgIGRwb3Nba11bMF0tbS5jWzBdLA0KCQkJICBkcG9zW2tdWzFdLW0uY1sxXSwN CgkJCSAgZHBvc1trXVsyXS1tLmNbMl0pOw0KICAgICAgfQ0KICAgICAgZE1hc3NUcmFuc2xhdGUg KCZtLC1tLmNbMF0sLW0uY1sxXSwtbS5jWzJdKTsNCiAgICB9DQoNCiAgICBmb3IgKGs9MDsgayA8 IEdQQjsgaysrKSB7DQogICAgICBpZiAob2JqW2ldLmdlb21ba10pIGRHZW9tU2V0Qm9keSAob2Jq W2ldLmdlb21ba10sb2JqW2ldLmJvZHkpOw0KICAgIH0NCg0KICAgIGRCb2R5U2V0TWFzcyAob2Jq W2ldLmJvZHksJm0pOw0KICB9DQoNCiAgaWYgKGNtZCA9PSAnICcpIHsNCiAgICBzZWxlY3RlZCsr Ow0KICAgIGlmIChzZWxlY3RlZCA+PSBudW0pIHNlbGVjdGVkID0gMDsNCiAgICBpZiAoc2VsZWN0 ZWQgPCAwKSBzZWxlY3RlZCA9IDA7DQogIH0NCiAgZWxzZSBpZiAoY21kID09ICdkJyAmJiBzZWxl Y3RlZCA+PSAwICYmIHNlbGVjdGVkIDwgbnVtKSB7DQogICAgZEJvZHlEaXNhYmxlIChvYmpbc2Vs ZWN0ZWRdLmJvZHkpOw0KICB9DQogIGVsc2UgaWYgKGNtZCA9PSAnZScgJiYgc2VsZWN0ZWQgPj0g MCAmJiBzZWxlY3RlZCA8IG51bSkgew0KICAgIGRCb2R5RW5hYmxlIChvYmpbc2VsZWN0ZWRdLmJv ZHkpOw0KICB9DQp9DQoNCg0KLy8gZHJhdyBhIGdlb20NCg0Kdm9pZCBkcmF3R2VvbSAoZEdlb21J RCBnLCBjb25zdCBkUmVhbCAqcG9zLCBjb25zdCBkUmVhbCAqUikNCnsNCiAgaWYgKCFnKSByZXR1 cm47DQogIGlmICghcG9zKSBwb3MgPSBkR2VvbUdldFBvc2l0aW9uIChnKTsNCiAgaWYgKCFSKSBS ID0gZEdlb21HZXRSb3RhdGlvbiAoZyk7DQoNCiAgaW50IHR5cGUgPSBkR2VvbUdldENsYXNzIChn KTsNCiAgaWYgKHR5cGUgPT0gZEJveENsYXNzKSB7DQogICAgZFZlY3RvcjMgc2lkZXM7DQogICAg ZEdlb21Cb3hHZXRMZW5ndGhzIChnLHNpZGVzKTsNCiAgICBkc0RyYXdCb3ggKHBvcyxSLHNpZGVz KTsNCiAgfQ0KICBlbHNlIGlmICh0eXBlID09IGRTcGhlcmVDbGFzcykgew0KICAgIGRzRHJhd1Nw aGVyZSAocG9zLFIsZEdlb21TcGhlcmVHZXRSYWRpdXMgKGcpKTsNCiAgfQ0KICBlbHNlIGlmICh0 eXBlID09IGRDQ3lsaW5kZXJDbGFzcykgew0KICAgIGRSZWFsIHJhZGl1cyxsZW5ndGg7DQogICAg ZEdlb21DQ3lsaW5kZXJHZXRQYXJhbXMgKGcsJnJhZGl1cywmbGVuZ3RoKTsNCiAgICBkc0RyYXdD YXBwZWRDeWxpbmRlciAocG9zLFIsbGVuZ3RoLHJhZGl1cyk7DQogIH0NCiAgZWxzZSBpZiAodHlw ZSA9PSBkR2VvbVRyYW5zZm9ybUNsYXNzKSB7DQogICAgZEdlb21JRCBnMiA9IGRHZW9tVHJhbnNm b3JtR2V0R2VvbSAoZyk7DQogICAgY29uc3QgZFJlYWwgKnBvczIgPSBkR2VvbUdldFBvc2l0aW9u IChnMik7DQogICAgY29uc3QgZFJlYWwgKlIyID0gZEdlb21HZXRSb3RhdGlvbiAoZzIpOw0KICAg IGRWZWN0b3IzIGFjdHVhbF9wb3M7DQogICAgZE1hdHJpeDMgYWN0dWFsX1I7DQogICAgZE1VTFRJ UExZMF8zMzEgKGFjdHVhbF9wb3MsUixwb3MyKTsNCiAgICBhY3R1YWxfcG9zWzBdICs9IHBvc1sw XTsNCiAgICBhY3R1YWxfcG9zWzFdICs9IHBvc1sxXTsNCiAgICBhY3R1YWxfcG9zWzJdICs9IHBv c1syXTsNCiAgICBkTVVMVElQTFkwXzMzMyAoYWN0dWFsX1IsUixSMik7DQogICAgZHJhd0dlb20g KGcyLGFjdHVhbF9wb3MsYWN0dWFsX1IpOw0KICB9DQp9DQoNCg0KLy8gc2ltdWxhdGlvbiBsb29w DQoNCnN0YXRpYyB2b2lkIHNpbUxvb3AgKGludCBwYXVzZSkNCnsNCiAgZHNTZXRDb2xvciAoMCww LDIpOw0KICBkU3BhY2VDb2xsaWRlIChzcGFjZSwwLCZuZWFyQ2FsbGJhY2spOw0KICBpZiAoIXBh dXNlKSBkV29ybGRTdGVwICh3b3JsZCwwLjA1KTsNCg0KICAvLyByZW1vdmUgYWxsIGNvbnRhY3Qg am9pbnRzDQogIGRKb2ludEdyb3VwRW1wdHkgKGNvbnRhY3Rncm91cCk7DQoNCiAgZHNTZXRDb2xv ciAoMSwxLDApOw0KICBkc1NldFRleHR1cmUgKERTX1dPT0QpOw0KICBkcmF3R2VvbShyYW1wLDAs MCk7DQogIGRyYXdHZW9tKHJhbXAyLDAsMCk7DQoNCiAgZm9yIChpbnQgaT0wOyBpPG51bTsgaSsr KSB7DQogICAgaW50IGNvbG9yX2NoYW5nZWQgPSAwOw0KICAgIGlmIChpPT1zZWxlY3RlZCkgew0K ICAgICAgZHNTZXRDb2xvciAoMCwwLjcsMSk7DQogICAgICBjb2xvcl9jaGFuZ2VkID0gMTsNCiAg ICB9DQogICAgZWxzZSBpZiAoISBkQm9keUlzRW5hYmxlZCAob2JqW2ldLmJvZHkpKSB7DQogICAg ICBkc1NldENvbG9yICgxLDAsMCk7DQogICAgICBjb2xvcl9jaGFuZ2VkID0gMTsNCiAgICB9DQog ICAgZm9yIChpbnQgaj0wOyBqIDwgR1BCOyBqKyspIGRyYXdHZW9tIChvYmpbaV0uZ2VvbVtqXSww LDApOw0KICAgIGlmIChjb2xvcl9jaGFuZ2VkKSBkc1NldENvbG9yICgxLDEsMCk7DQogIH0NCn0N Cg0KDQppbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0Kew0KICAvLyBzZXR1cCBwb2lu dGVycyB0byBkcmF3c3R1ZmYgY2FsbGJhY2sgZnVuY3Rpb25zDQogIGRzRnVuY3Rpb25zIGZuOw0K ICBmbi52ZXJzaW9uID0gRFNfVkVSU0lPTjsNCiAgZm4uc3RhcnQgPSAmc3RhcnQ7DQogIGZuLnN0 ZXAgPSAmc2ltTG9vcDsNCiAgZm4uY29tbWFuZCA9ICZjb21tYW5kOw0KICBmbi5zdG9wID0gMDsN CiAgZm4ucGF0aF90b190ZXh0dXJlcyA9ICIuLi8uLi9kcmF3c3R1ZmYvdGV4dHVyZXMiOw0KDQog IC8vIGNyZWF0ZSB3b3JsZA0KDQogIHdvcmxkID0gZFdvcmxkQ3JlYXRlKCk7DQogIHNwYWNlID0g ZEhhc2hTcGFjZUNyZWF0ZSgpOw0KICBjb250YWN0Z3JvdXAgPSBkSm9pbnRHcm91cENyZWF0ZSAo MCk7DQogIGRXb3JsZFNldEdyYXZpdHkgKHdvcmxkLDAsMCwtMC41KTsNCiAgZFdvcmxkU2V0Q0ZN ICh3b3JsZCwxZS01KTsNCiAgZENyZWF0ZVBsYW5lIChzcGFjZSwwLDAsMSwwKTsNCiAgbWVtc2V0 IChvYmosMCxzaXplb2Yob2JqKSk7DQoNCiAgLy8gY3JlYXRlIHJhbXANCiAgcmFtcCA9IGRDcmVh dGVCb3ggKHNwYWNlLCAyLmYsIDIuZiwgMC4xZik7DQoJZEdlb21TZXRQb3NpdGlvbiAocmFtcCwg MC5mLCAwLmYsIDAuZik7DQoJZE1hdHJpeDMgUjsNCglkUkZyb21BeGlzQW5kQW5nbGUgKFIsIDAu ZiwgMS5mLCAwLmYsIE1fUEkvNC5mKTsNCglkR2VvbVNldFJvdGF0aW9uIChyYW1wLFIpOw0KDQog IHJhbXAyID0gZENyZWF0ZUJveCAoc3BhY2UsIDIuZiwgMi5mLCAwLjFmKTsNCglkR2VvbVNldFBv c2l0aW9uIChyYW1wMiwgMS5mLCAwLmYsIDAuZik7DQoJZFJGcm9tQXhpc0FuZEFuZ2xlIChSLCAw LmYsIDEuZiwgMC5mLCAtTV9QSS84LmYpOw0KCWRHZW9tU2V0Um90YXRpb24gKHJhbXAyLFIpOw0K DQogIC8vIHJ1biBzaW11bGF0aW9uDQogIGRzU2ltdWxhdGlvbkxvb3AgKGFyZ2MsYXJndiwzNTIs Mjg4LCZmbik7DQoNCiAgZEpvaW50R3JvdXBEZXN0cm95IChjb250YWN0Z3JvdXApOw0KICBkU3Bh Y2VEZXN0cm95IChzcGFjZSk7DQogIGRXb3JsZERlc3Ryb3kgKHdvcmxkKTsNCg0KICByZXR1cm4g MDsNCn0NCg== ------_=_NextPart_001_01C27EE9.1ED0102A-- From russ at q12.org Mon Oct 28 23:39:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 28 23:39:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: References: Message-ID: <20021028234323.7f5815bb.russ@q12.org> > attached is a modified version of test_boxstack.cpp. hit the 's' key > to drop a sphere and watch what happens. see how it sticks on the > cusp between the ramp and the ground plane? > > is this expected or is it a bug? hi david, i have found the problem. it's not exactly a coding bug in ODE, it's a problem with the way that the friction model is used. here's the story: ODE has two ways to approximate friction: the default way (called the constant-force-limit approximation, or 'box friction') and the improved way (called "friction pyramid approximation 1") which is obtained by setting the dContactApprox1 flag in the contact mode. your example uses the default box friction (as do most of the ODE test samples). it turns out that in a world that has box friction only, the "physically correct" behavior for a ball rolling down an inclined plane is to stop dead when it hits the ground! in other words, it's not an ODE bug as such but a consequence of this friction model in the contact joint. of course this is not the behavior that you see in real life, because real life does not have box friction! the solution is to use the dContactApprox1 mode, i.e. do this in your code: contact[i].surface.mode = dContactApprox1 | other_flags contact[i].surface.mu = dInfinity; // or, some other value like '1' your example did lead me to find a couple of problems in the LCP solver that were only evident in when dContactApprox1 was being used ... i've fixed them, and you'll have to check out lcp.cpp,lcp.h from CVS for this to work properly. i'll add a section to the FAQ that explains all this better, and gives the intuitive reason why box-friction causes this problem (i'll need a diagram - it's hard to explain in words). hope this helps you! russ. -- Russell Smith http://www.q12.org From russ at q12.org Mon Oct 28 23:49:01 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 28 23:49:01 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: <20021028234323.7f5815bb.russ@q12.org> References: <20021028234323.7f5815bb.russ@q12.org> Message-ID: <20021028235046.3dc17a77.russ@q12.org> oh yes ... other people doing vehicle stuff may want to update CVS and use the dContactApprox1 mode too. this problem affected all rolling bodies that had multiple frictional contacts at different angles (i.e. car wheels going over bumps, up ramps etc). let me know of any problems. russ. -- Russell Smith http://www.q12.org From russ at q12.org Tue Oct 29 01:11:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 01:11:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: References: Message-ID: <20021029001532.65434c54.russ@q12.org> i have added a faq section to the docs that explains the cause and solution for this problem. check out: "11.13. My rolling bodies (e.g. wheels) sometimes get stuck between geoms". http://q12.org/ode/ode-latest-userguide.html enjoy, russ -- Russell Smith http://www.q12.org From ivan.bolcina at volja.net Tue Oct 29 02:51:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 29 02:51:02 2002 Subject: [ODE] Torque and acceleration of angular velocities Message-ID: <000a01c27f30$9aba3ed0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0007_01C27F38.FAF17720 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi. I have a box body with box mass. I want to apply some amount of torque. = I am interested in acceleration of angular velocity. How to calculate = it? bye and thanx, ivan ------=_NextPart_000_0007_01C27F38.FAF17720 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
 
I have a box body with box mass. I want = to apply=20 some amount of torque. I am interested in acceleration of angular = velocity. How=20 to calculate it?
 
bye and thanx,
ivan
------=_NextPart_000_0007_01C27F38.FAF17720-- From martin at metahuman.org Tue Oct 29 06:17:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Tue Oct 29 06:17:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp References: <20021028234323.7f5815bb.russ@q12.org> <20021028235046.3dc17a77.russ@q12.org> Message-ID: <3DBE8A24.A1246A71@metahuman.org> Hey Russ, ODE never ceases to amaze me with the level of support you give, Russ. Tracking down things like this, documenting them and fixing those LCP bugs is a great example. Since many people simply take the examples and change what they need to change, and don't change anything they don't understand; and since the difference between the two friction models is subtle, should the examples be changed to use dContactApprox1? For that matter, should it be the default friction model? At the very least, when discussing contact parameters in the manual, should it say "if you don't know which friction model to use, start with dContactApprox1?" Just a thought, Martin Russ Smith wrote: > > oh yes ... other people doing vehicle stuff may want to update CVS and > use the dContactApprox1 mode too. this problem affected all rolling > bodies that had multiple frictional contacts at different angles (i.e. > car wheels going over bumps, up ramps etc). > > let me know of any problems. > > russ. From russ at q12.org Tue Oct 29 11:33:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 11:33:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: <3DBE8A24.A1246A71@metahuman.org> Message-ID: > Since many people simply take the examples and change what they need to > change, and don't change anything they don't understand; and since the > difference between the two friction models is subtle, should the examples > be changed to use dContactApprox1? For that matter, should it be the > default friction model? At the very least, when discussing contact > parameters in the manual, should it say "if you don't know which friction > model to use, start with dContactApprox1?" probably you're right. in fact, there needs to be a lot more written about the friction models in general. i'm reluctant to made dContactApprox1 the default, as this will break people's code in subtle ways - there are now enough users of ODE that breaking the API is kind of an anti-social thing to do unless there is a good reason. i changed the buggy example, since that's the basis for a lot of people's vehicles. i may change the other examples too, but i'll try them out first to see what effect the change has. russ. -- Russ Smith http://www.q12.org/ From wristy_j at yahoo.com Tue Oct 29 16:21:02 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Tue Oct 29 16:21:02 2002 Subject: [ODE] "fixed world point" joint Message-ID: <20021029232045.49157.qmail@web40811.mail.yahoo.com> Hello, How can I constrain (through a ball joint) a physically simulated body to another body that is NOT under physical simulation, but updated by either user input or an animation sequence? (So, like having a shoulder joint that is updated by an animation, while having the arm lifelessly dangle from it like a rag doll.) - (Note: I'm treating the non-simulated body as though it were infinitely massive (InvMass = 0) - the problem is that it moves!) Is there a simple way to just specify a new anchor point per frame, and let the LCP solver calculate the necessary forces to keep the body constrained at that point? OR - Do I need to calculate forces to apply to the simulated body based on the current and previous position of the animated body myself (instead of letting the LCP solver figure out those forces). Will this work? Is there any other way to do it? Thanks! J __________________________________________________ Do you Yahoo!? HotJobs - Search new jobs daily now http://hotjobs.yahoo.com/ From russ at q12.org Tue Oct 29 17:12:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 17:12:02 2002 Subject: [ODE] "fixed world point" joint In-Reply-To: <20021029232045.49157.qmail@web40811.mail.yahoo.com> Message-ID: > How can I constrain (through a ball joint) a > physically simulated body to another body that is NOT > under physical simulation ideally, there should be a new joint that constrains a point on a body to move at a certain global velocity. you could compute this velocity based on the motion you desire. this joint is easy to create - in fact it's quite similar to the existing ball joint - but i have so much other stuff on my ODE todo list right now. any volunteers? other approaches (e.g. setting forces on bodies) will also work, but are less than ideal - they require a lot of fiddling and tuning to get right, and they never look quite right. russ. -- Russ Smith http://www.q12.org/ From aanand at milestoneindia.com Tue Oct 29 21:30:02 2002 From: aanand at milestoneindia.com (Aanand Narayanan.P.P) Date: Tue Oct 29 21:30:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Does anybody know which method (direct LCP, iterative LCP, penalty etc) was used in the (vehicle) physics for GTA3? Is it possible to achieve the same level of stability with ODE? I would like to hear from other people who have used ODE for full fledged physics simulations. Thanks AN --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.401 / Virus Database: 226 - Release Date: 10/9/2002 From coding at natew.com Tue Oct 29 23:34:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 29 23:34:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: On Wed, 30 Oct 2002, Aanand Narayanan.P.P wrote: > I would like to hear from other people who have used ODE for full > fledged physics simulations. What do you mean by "full fledged?" -- Nate Waddoups Redmond WA USA http://www.natew.com From slipch Wed Oct 30 01:35:03 2002 From: slipch (slipch) Date: Wed Oct 30 01:35:03 2002 Subject: Re[2]: [ODE] "fixed world point" joint In-Reply-To: References: Message-ID: <823040832.20021030103748@gsc-game.kiev.ua> Hello Russ, Wednesday, October 30, 2002, 2:11:25 AM, you wrote: >..... any volunteers? I have tried to understand creating joints in ODE. But it turned out a not easy task for me. I have read your paper on creating joints. There is a very good explained theory but it says nothing about implementation. May be some main points would be enough for me. -- Best regards, Konstantin Slipchenko mailto:slipch@gsc-game.kiev.ua From aanand at milestoneindia.com Wed Oct 30 04:45:02 2002 From: aanand at milestoneindia.com (Aanand Narayanan.P.P) Date: Wed Oct 30 04:45:02 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: Message-ID: <000001c2800a$7836a2b0$0e01a8c0@aanand> >> I would like to hear from other people who have used ODE for full >> fledged physics simulations. > What do you mean by "full fledged?" Like in GTA3 (or any other similar game). Not just for vehicles, but for other objects in the world (lamp post, dust bins etc.). What I am interested is in the stability and robustness of the system when several simulations occur (several different active joints). I did read about the posts on direct LCP and iterative LCP. So I wanted to know if anybody knows about the physics in GTA3 and the stability of ODE itself when used for such simulations (GTA3). Also can anyone point me to some literature on Dantzig algorithm (used by LCP solver in ODE). Cheers AN --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.401 / Virus Database: 226 - Release Date: 10/9/2002 From wristy_j at yahoo.com Wed Oct 30 06:24:01 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Wed Oct 30 06:24:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c2800a$7836a2b0$0e01a8c0@aanand> Message-ID: <20021030132310.65975.qmail@web40807.mail.yahoo.com> > Also can anyone point me to some literature on > Dantzig algorithm > (used by LCP solver in ODE). > > Cheers > AN Hello, David Baraff has a paper entitled "Fast Contact Force Computation for Nonpenetrating Rigid Bodies" that was in SIGGRAPH 94. In it, he has pseudo-code for his implementation of Dantzig's algorithm. Just search for it by name and you'll find a .pdf. Hope that helps, J __________________________________________________ Do you Yahoo!? HotJobs - Search new jobs daily now http://hotjobs.yahoo.com/ From erwin at vo.com Wed Oct 30 06:39:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 30 06:39:02 2002 Subject: [ODE] GTA3 and Physics References: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: <005601c28019$9d6561c0$73fefea9@athlon> Actually the carphysics in GTA3 are pretty lousy in my opinion. I suspect they are using Havok. Although i wouldnt even consider calling Havok 'lousy' in general, i dont like the carphysics i've seen in their public demo's. GTA3 kinda feels like these. I dont think its impossible to create the same physicsmodel in ODE, though. You just need to fiddle a lot with masses to get it right. Erwin ----- Original Message ----- From: "Aanand Narayanan.P.P" To: Sent: Wednesday, October 30, 2002 05:34 Subject: [ODE] GTA3 and Physics > > Does anybody know which method (direct LCP, iterative LCP, penalty etc) > was used in the (vehicle) physics for GTA3? > Is it possible to achieve the same level of stability with ODE? I would > like to hear from other people who have used ODE for full fledged > physics simulations. > > Thanks > AN From Henrik.Karlsson at dice.se Wed Oct 30 06:55:02 2002 From: Henrik.Karlsson at dice.se (Karlsson, Henrik) Date: Wed Oct 30 06:55:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <160E755604B6A949900013D42C3484722DEBAB@elrond.dice.se> I'm guessing they are using a very customized physics model for gta3... They might use havoc or similar package for most physics stuff.. but when it comes to car physics in games it is much cheaper to have a customized system compared to building up a vehicle correctly with different parts.. Henrik -----Original Message----- From: Erwin de Vries [mailto:erwin@vo.com] Sent: den 30 oktober 2002 13:06 To: ode@q12.org Subject: Re: [ODE] GTA3 and Physics Actually the carphysics in GTA3 are pretty lousy in my opinion. I suspect they are using Havok. Although i wouldnt even consider calling Havok 'lousy' in general, i dont like the carphysics i've seen in their public demo's. GTA3 kinda feels like these. I dont think its impossible to create the same physicsmodel in ODE, though. You just need to fiddle a lot with masses to get it right. Erwin ----- Original Message ----- From: "Aanand Narayanan.P.P" To: Sent: Wednesday, October 30, 2002 05:34 Subject: [ODE] GTA3 and Physics > > Does anybody know which method (direct LCP, iterative LCP, penalty etc) > was used in the (vehicle) physics for GTA3? > Is it possible to achieve the same level of stability with ODE? I would > like to hear from other people who have used ODE for full fledged > physics simulations. > > Thanks > AN _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From ed.jones at oracle.com Wed Oct 30 10:16:01 2002 From: ed.jones at oracle.com (Ed Jones) Date: Wed Oct 30 10:16:01 2002 Subject: [ODE] Self Righting Boxes (on castors) Message-ID: <3DC013BD.9080102@oracle.com> Hi Folks, I'm building a "simulation" which consists of a load of boxes on castors which I can push around (don't ask!). The boxes are (fairly obviously) boxes and the castors are 4 spheres attached to each box with ball joints. I can click on the boxes to give them forces and hence push them around the floor. Which is just a ground plane, with other boxes and spheres on it. So far so good. The "castorbox people" fall over quite regularly, which is fine and all part of the "fun". But what I'd like to do is, after a couple of seconds of lying down, get them to spring back up to their feet of their own accord. Obviously I can just reset the little fella to be the right way up but I'd like it to look more like they're jumping back up themselves. Anyone got any ideas of what would be a good (and preferably simple!) way to achieve this? Cheers, Ed. From filipe.dias at mind.pt Wed Oct 30 10:48:02 2002 From: filipe.dias at mind.pt (Filipe Dias) Date: Wed Oct 30 10:48:02 2002 Subject: [ODE] Self Righting Boxes (on castors) In-Reply-To: <3DC013BD.9080102@oracle.com> Message-ID: <200210301747.g9UHlGu01461@hook.org> I remember seeing (in the buggy demo) a force being aplyed upwards to one of the corners of the box while we were pressing the backspace key. but that isn't an automatic way to straighten things up, since it is aplied for as long as the key is down... What I am remembering now is that you can do something archimedes-like and fix a balloon some distance above the boxes.. when they go upside- down you would fill the baloon and it would turn the box over.. An up force aplied some distance over the center of the box. This is obviosly not as funny as an explosion-like effect where the box would spin a number of times an land straigt up.. but trying to turn boxes arround with explosions may take quite a lot of attepts to do it right!.. :-) Fil. -----Original Message----- From: Ed Jones To: ode@q12.org Date: Wed, 30 Oct 2002 17:15:41 +0000 Subject: [ODE] Self Righting Boxes (on castors) > Hi Folks, > > I'm building a "simulation" which consists of a load of boxes on > castors > which I can push around (don't ask!). > > The boxes are (fairly obviously) boxes and the castors are 4 spheres > attached to each box with ball joints. I can click on the boxes to give > them forces and hence push them around the floor. Which is just a > ground > plane, with other boxes and spheres on it. So far so good. > > The "castorbox people" fall over quite regularly, which is fine and all > part of the "fun". But what I'd like to do is, after a couple of > seconds > of lying down, get them to spring back up to their feet of their own > accord. Obviously I can just reset the little fella to be the right way > up but I'd like it to look more like they're jumping back up > themselves. > > Anyone got any ideas of what would be a good (and preferably simple!) > way to achieve this? > > Cheers, > Ed. > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From erwin at vo.com Wed Oct 30 11:19:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 30 11:19:01 2002 Subject: [ODE] GTA3 and Physics References: <160E755604B6A949900013D42C3484722DEBAB@elrond.dice.se> Message-ID: <00ba01c28040$be7d2510$73fefea9@athlon> > I'm guessing they are using a very customized physics model for gta3... They > might use havoc or similar package for most physics stuff.. but when it > comes to car physics in games it is much cheaper to have a customized system > compared to building up a vehicle correctly with different parts.. This is exactly what comes with Havok. A vehicle SDK. Now i have no idea how it works behind the scenes, and i've never used it, but my guess is that they are using many hacks to make it 'just work'. Erwin From philt at microsoft.com Wed Oct 30 11:49:02 2002 From: philt at microsoft.com (Phil Teschner) Date: Wed Oct 30 11:49:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <240659DFBDD99C4299EF7483EAD70F2410C1A1@RED-MSG-01.redmond.corp.microsoft.com> I remember hearing that the physics engine in GTA3 was entirely written in house. It is a pretty straight forward rigid body system that does not solve multiple simultaneous contacts (i.e. does not use an LPC solver). Phil -----Original Message----- From: Erwin de Vries [mailto:erwin@vo.com] Sent: Wednesday, October 30, 2002 10:18 AM To: ode@q12.org Subject: Re: [ODE] GTA3 and Physics > I'm guessing they are using a very customized physics model for gta3... They > might use havoc or similar package for most physics stuff.. but when it > comes to car physics in games it is much cheaper to have a customized system > compared to building up a vehicle correctly with different parts.. This is exactly what comes with Havok. A vehicle SDK. Now i have no idea how it works behind the scenes, and i've never used it, but my guess is that they are using many hacks to make it 'just work'. Erwin _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Wed Oct 30 12:44:01 2002 From: coding at natew.com (Nate W) Date: Wed Oct 30 12:44:01 2002 Subject: [ODE] Self Righting Boxes (on castors) In-Reply-To: <3DC013BD.9080102@oracle.com> Message-ID: On Wed, 30 Oct 2002, Ed Jones wrote: > The "castorbox people" fall over quite regularly, which is fine and all > part of the "fun". But what I'd like to do is, after a couple of seconds > of lying down, get them to spring back up to their feet of their own > accord. Obviously I can just reset the little fella to be the right way > up but I'd like it to look more like they're jumping back up themselves. > > Anyone got any ideas of what would be a good (and preferably simple!) > way to achieve this? How about using an angular motor? http://q12.org/ode/ode-latest-userguide.html#ref56 Set the motor to have one axis, and set one of the motor's bodies to the "castorperson" body and set the other to null. Use dJointSetAMotorParam to set a desired (angular) velocity. That should rotate the person upright. To come up with a desired velocity, get the angle between the person's current orientation and the desired "upright" vector. Multiply that angle by a "gain" factor. To tune the way the people get upright, you can tune the gain, the maximum force, the people's mass, gravity, etc. When the person's angular velocity gets close to zero, you can probably consider them upright and turn off the angular motor. I haven't actually used angular motors yet in my own code, so this is as much a question as a suggestion. If anyone has other ideas I'm all ears. -- Nate Waddoups Redmond WA USA http://www.natew.com From filipe.dias at mind.pt Wed Oct 30 13:14:01 2002 From: filipe.dias at mind.pt (Filipe Dias) Date: Wed Oct 30 13:14:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <240659DFBDD99C4299EF7483EAD70F2410C1A1@RED-MSG-01.redmond.corp.microsoft.com> Message-ID: <200210302013.g9UKDsu16879@hook.org> What I remember from playing it is that when a seeding firetruck bumps into 2 cars at the same time the result is unexpected, the two cars stay still and the fire truck goes mad like if it had hit a wall. So this is very simmilar to "doesn't solve multiple simultaneous contacts" Now judging by how good it looks, I am surprised how multiple contact situations happen that seldom! Even so it is possible to push two stoped cars very slowly, so it is possible that multiple contacts can be solved if the speed is low... Dispite all this I have mannaged to drive a firetruck inside a taxi! Fil. -----Original Message----- From: "Phil Teschner" To: "Erwin de Vries" , Date: Wed, 30 Oct 2002 10:48:02 -0800 Subject: RE: [ODE] GTA3 and Physics > I remember hearing that the physics engine in GTA3 was entirely written > in house. It is a pretty straight forward rigid body system that does > not solve multiple simultaneous contacts (i.e. does not use an LPC > solver). > > Phil > > -----Original Message----- > From: Erwin de Vries [mailto:erwin@vo.com] > Sent: Wednesday, October 30, 2002 10:18 AM > To: ode@q12.org > Subject: Re: [ODE] GTA3 and Physics > > > I'm guessing they are using a very customized physics model for > gta3... > They > > might use havoc or similar package for most physics stuff.. but when > it > > comes to car physics in games it is much cheaper to have a customized > system > > compared to building up a vehicle correctly with different parts.. > > This is exactly what comes with Havok. A vehicle SDK. Now i have no > idea > how > it works behind the scenes, and i've never used it, but my guess is > that > they are using many hacks to make it 'just work'. > > Erwin > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From holmlund at hpc2n.umu.se Wed Oct 30 14:15:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Wed Oct 30 14:15:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp References: Message-ID: <3DC04BAA.4050904@hpc2n.umu.se> Btw, what's the current status of R&D on finding methods for implementing real coulomb friction in an efficient way? Any recent publications/preprints/conferences in this area? /Kenneth Russ Smith wrote: > probably you're right. in fact, there needs to be a lot more written about > the friction models in general. i'm reluctant to made dContactApprox1 the > default, as this will break people's code in subtle ways - there are now > enough users of ODE that breaking the API is kind of an anti-social thing > to do unless there is a good reason. > > i changed the buggy example, since that's the basis for a lot of people's > vehicles. i may change the other examples too, but i'll try them out first > to see what effect the change has. > > russ. -- Kenneth Holmlund Director VRlab HPC2N, Umeå University, Sweden holmlund@hpc2n.umu.se From holmlund at hpc2n.umu.se Wed Oct 30 14:31:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Wed Oct 30 14:31:02 2002 Subject: [ODE] GTA3 and Physics References: <000001c2800a$7836a2b0$0e01a8c0@aanand> Message-ID: <3DC04F58.5040909@hpc2n.umu.se> The probably most advanced vehicle simulator around is the harvester simulator by Oryx Simulations. See http://www.oryx.se/ It's using Vortex from CM-Labs, and Russ had a key role in it's early development. (see http://www.cm-labs.com/) In this simulator you have full vehicle dynamics plus highly advanced interaction with many objects in the environment. Upcoming simulators for "heavy vehicles" use physics for adding even more realism and generality. If you would tear off the hardware (for control and display) the whole thing could quite easily be made into a "game like" application (there's a reason why Russ talks about "Harvester wars" in his notes! :) ODE and Vortex were quite similar one year ago, but Vortex has quite a few more features nowadays, as well as an improved friction model and better stability for rotating bodies. In fact, MathEngine Karma, ODE and Vortex all bear influences from the same people (including Russ), but they have been developed independently for some time now (though I really don't know much about Karma these days). /Kenneth Aanand Narayanan.P.P wrote: >>>I would like to hear from other people who have used ODE for full >>>fledged physics simulations. >> > >>What do you mean by "full fledged?" > > > Like in GTA3 (or any other similar game). Not just for vehicles, > but for other objects in the world (lamp post, dust bins etc.). What I > am interested is in the stability and robustness of the system when > several simulations occur (several different active joints). I did read > about the posts on direct LCP and iterative LCP. So I wanted to know if > anybody knows about the physics in GTA3 and the stability of ODE itself > when used for such simulations (GTA3). > > Also can anyone point me to some literature on Dantzig algorithm > (used by LCP solver in ODE). > > Cheers > AN > -- Kenneth Holmlund Director VRlab HPC2N, Umeå University, Sweden holmlund@hpc2n.umu.se From Henrik.Karlsson at dice.se Wed Oct 30 14:39:01 2002 From: Henrik.Karlsson at dice.se (Karlsson, Henrik) Date: Wed Oct 30 14:39:01 2002 Subject: [ODE] GTA3 and Physics Message-ID: <160E755604B6A949900013D42C3484722DEBB0@elrond.dice.se> It's very common that you use simple displacement in games when contacts appear between objects.. and solve them one by one.. If you tweak it a little you can make it look good.. cheap and simple :) Or you can always solve displacement simultaneously. That might give you a better protection against bodies penetrating each other when multiple contacts. The big performance hit in game physics usually is the collision part though. In our game right now 50% of the cpu is just collision detection.. (most graphics are done on the gpu). So keep your collision primitives as simple as possible (use composites of spheres instead of boxes etc, works good enough in most cases). regards, Henrik -----Original Message----- From: Filipe Dias [mailto:filipe.dias@mind.pt] Sent: den 30 oktober 2002 20:49 To: ode@q12.org Subject: RE: [ODE] GTA3 and Physics What I remember from playing it is that when a seeding firetruck bumps into 2 cars at the same time the result is unexpected, the two cars stay still and the fire truck goes mad like if it had hit a wall. So this is very simmilar to "doesn't solve multiple simultaneous contacts" Now judging by how good it looks, I am surprised how multiple contact situations happen that seldom! Even so it is possible to push two stoped cars very slowly, so it is possible that multiple contacts can be solved if the speed is low... Dispite all this I have mannaged to drive a firetruck inside a taxi! Fil. -----Original Message----- From: "Phil Teschner" To: "Erwin de Vries" , Date: Wed, 30 Oct 2002 10:48:02 -0800 Subject: RE: [ODE] GTA3 and Physics > I remember hearing that the physics engine in GTA3 was entirely written > in house. It is a pretty straight forward rigid body system that does > not solve multiple simultaneous contacts (i.e. does not use an LPC > solver). > > Phil > > -----Original Message----- > From: Erwin de Vries [mailto:erwin@vo.com] > Sent: Wednesday, October 30, 2002 10:18 AM > To: ode@q12.org > Subject: Re: [ODE] GTA3 and Physics > > > I'm guessing they are using a very customized physics model for > gta3... > They > > might use havoc or similar package for most physics stuff.. but when > it > > comes to car physics in games it is much cheaper to have a customized > system > > compared to building up a vehicle correctly with different parts.. > > This is exactly what comes with Havok. A vehicle SDK. Now i have no > idea > how > it works behind the scenes, and i've never used it, but my guess is > that > they are using many hacks to make it 'just work'. > > Erwin > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Thu Oct 31 00:23:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 00:23:02 2002 Subject: [ODE] slider trouble Message-ID: I've noticed that when I connect two boxes with a slider, and set stops on the slider so it can only move between +1 and -1, the box-slider-box system spins off into infinity if I toss it into the air. Without the limits, the system behaves just fine. I was thinking that I was just seeing the rotating body instability described in 11.12 of the FAQ, but bodies by themselves are a much smaller problem. It seems like the joint limits exacerbate the problem, could they be adding energy to the system somehow? Russ, do you have a pretty good idea of what would cause this, or would you like me to tweak one of the drawstuff-based sample apps to demonstrate this? There is a possiblity that something in Juice is contributing to the problem, so if you want I'll put together a bare-minimum test case for you. Nate Waddoups Redmond WA USA http://www.natew.com From duhprey at yahoo.com Thu Oct 31 09:59:01 2002 From: duhprey at yahoo.com (Daniel Duhprey) Date: Thu Oct 31 09:59:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: On Wed, 30 Oct 2002, Aanand Narayanan.P.P wrote: --> -->Does anybody know which method (direct LCP, iterative LCP, penalty etc) -->was used in the (vehicle) physics for GTA3? -->Is it possible to achieve the same level of stability with ODE? I would -->like to hear from other people who have used ODE for full fledged -->physics simulations. I'm one of the devs responsible for the ode plugin to crystal space. I also wrote a pinball simulator using that http://cs-pinball.sourceforge.net. Its not exactly full-fledged physics since the only real active object is the ball, but the flipper and shooter are represented with joints and forces/torques as are anything else in the game, but its really not on the scale of GTA3 -- ------------ email: duhprey@tosos.com www: http://paradox.tosos.com/~duhprey icq: 129354442 She's got a whole brood of kids, like Sendmail, and Postfix, and Apache, and Perl. And some of 'em die young, and some are mentally retarded. Sterling The European finds intercourse with Americans easy and agreeable. Einstein Not a shred of evidence exists in favor of the idea that life is serious. Gill From ed.jones at oracle.com Thu Oct 31 11:05:02 2002 From: ed.jones at oracle.com (Ed Jones) Date: Thu Oct 31 11:05:02 2002 Subject: [ODE] Self Righting Boxes (on castors) References: Message-ID: <3DC170AC.5010004@oracle.com> Thanks for the ideas Nate and Fil, I think I'll go for a big comedy magnet, attached to helicopter rotor-blades (or possibly a jet-pack or something) to hover around and pull them back up. Cheers, Ed. Nate W wrote: >On Wed, 30 Oct 2002, Ed Jones wrote: > > > >>The "castorbox people" fall over quite regularly, which is fine and all >>part of the "fun". But what I'd like to do is, after a couple of seconds >>of lying down, get them to spring back up to their feet of their own >>accord. Obviously I can just reset the little fella to be the right way >>up but I'd like it to look more like they're jumping back up themselves. >> >>Anyone got any ideas of what would be a good (and preferably simple!) >>way to achieve this? >> >> > >How about using an angular motor? >http://q12.org/ode/ode-latest-userguide.html#ref56 > >Set the motor to have one axis, and set one of the motor's bodies to the >"castorperson" body and set the other to null. Use dJointSetAMotorParam >to set a desired (angular) velocity. That should rotate the person >upright. > >To come up with a desired velocity, get the angle between the person's >current orientation and the desired "upright" vector. Multiply that angle >by a "gain" factor. To tune the way the people get upright, you can tune >the gain, the maximum force, the people's mass, gravity, etc. When the >person's angular velocity gets close to zero, you can probably consider >them upright and turn off the angular motor. > >I haven't actually used angular motors yet in my own code, so this is as >much a question as a suggestion. If anyone has other ideas I'm all ears. > > > From russ at q12.org Thu Oct 31 12:39:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 12:39:02 2002 Subject: [ODE] slider trouble In-Reply-To: Message-ID: > so if you want I'll put together a bare-minimum test case for you. please. russ -- Russ Smith http://www.q12.org/ From mein at cs.umn.edu Thu Oct 31 12:49:01 2002 From: mein at cs.umn.edu (Kent Mein) Date: Thu Oct 31 12:49:01 2002 Subject: [ODE] just a little patch Message-ID: <20021031092658.A10224@cs.umn.edu> Just a small patch under solaris for ode/test/test_ode.cpp I added the following: #if defined (__sparc) || defined (__sparc__) #include #endif Kent Mein -- mein@cs.umn.edu http://www.cs.umn.edu/~mein From xyberswine at hotmail.com Thu Oct 31 12:57:30 2002 From: xyberswine at hotmail.com (Kirk Waynesdale) Date: Thu Oct 31 12:57:30 2002 Subject: [ODE] more physics Message-ID: looks like another physics engine... www.tokamakphysics.com John L. _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From russ at q12.org Thu Oct 31 13:08:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 13:08:02 2002 Subject: [ODE] more physics In-Reply-To: Message-ID: > looks like another physics engine... > > www.tokamakphysics.com interesting. yet another mention of iterative constraint solving methods here. the demos are kind of bare bones (i.e., like ODE's bare bones demos). no mention of the cost. the box stack demo has an interesting flaw: a nudged stack will tip over, then freeze part of the way down. this suggests that 'stable' box stacking is achieved through simply turning off the phisics for a stationary stack - which is a good idea, but it makes it hard to evaluate the stability of the underlying method for stacks. the collision looks like it allows penetration, like ODE. if you collapse the chain on top of itself it will squish into itself a bit then expand out. russ. -- Russ Smith http://www.q12.org/ From anselm at hook.org Thu Oct 31 13:40:02 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 31 13:40:02 2002 Subject: [ODE] more physics In-Reply-To: Message-ID: I was looking around for some information on this topic and ran across these links that others may find interesting: http://w3imagis.imag.fr/Publications/1999/Fau99/Fau99.pdf http://w3imagis.imag.fr/Membres/Francois.Faure/faure.html - a On Thu, 31 Oct 2002, Russ Smith wrote: > > > looks like another physics engine... > > > > www.tokamakphysics.com > > interesting. yet another mention of iterative constraint solving methods > here. the demos are kind of bare bones (i.e., like ODE's bare bones > demos). no mention of the cost. > > the box stack demo has an interesting flaw: a nudged stack will tip over, > then freeze part of the way down. this suggests that 'stable' box stacking > is achieved through simply turning off the phisics for a stationary stack > - which is a good idea, but it makes it hard to evaluate the stability of > the underlying method for stacks. > > the collision looks like it allows penetration, like ODE. if you collapse > the chain on top of itself it will squish into itself a bit then expand > out. > > russ. > > -- > Russ Smith > http://www.q12.org/ > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From jme at snowcode.com Thu Oct 31 14:28:02 2002 From: jme at snowcode.com (Joakim Eriksson) Date: Thu Oct 31 14:28:02 2002 Subject: SV: [ODE] more physics Message-ID: > > looks like another physics engine... > > > > www.tokamakphysics.com > > interesting. yet another mention of iterative constraint > solving methods here. the demos are kind of bare bones >(i.e., like ODE's bare bones demos). no mention of the cost. Costs in what way? It does say memory usage and how much of the cpu per frame the physics system takes. What other costs are there? > the box stack demo has an interesting flaw: a nudged stack > will tip over, then freeze part of the way down. this suggests > that 'stable' box stacking is achieved through simply turning >off the phisics for a stationary stack Yes, seems like the objects sleep VERY quickly. After just a few tries I manage to get it to sleep in a physicly impossible position. (If the simulation had run for just a few ticks more the boxes would have fallen over) but they quickly froze in place. > the collision looks like it allows penetration, like ODE. if > you collapse the chain on top of itself it will squish into > itself a bit then expand out. It does indeed allow penetration. Just move closer to a object and spawn a sphere or something. You can see that even if the object is inside another object he can handle it. Its also a dead give away that he for the moment only handles primitives vs primitives and primitives vs static triangle meshes. It seems to be able to handle quite a lot. It does use a bit of memory 500Kb in some cases but they do contain quite a lot of objects. Too bad they dont have any more information on thier method. Also is it just me or do the chain and hinge behave strangly? If you continue to force it upwards it starts to wobble. Like a snake or something. Maybe it's just me and thats how it should behave. /Joakim E. - www.planestate.net From coding at natew.com Thu Oct 31 14:59:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 14:59:02 2002 Subject: [ODE] slider trouble In-Reply-To: Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --1363170581-980581577-1036073289=:32303 Content-Type: TEXT/PLAIN; charset=US-ASCII On Thu, 31 Oct 2002, Russ Smith wrote: > > so if you want I'll put together a bare-minimum test case for you. > > please. I've attached test_sliderstops.cpp, a small demo in the drawstuff tradition with two boxes and a slider between them. To get them flying, they are dropped onto bouncy ground. The first bounce looks about right, but before it hits the ground again the two-box system appears to gain a lot of angular momentum. They mellow out after they hit the ground again. The boxes start with altitudes of 7 and 8 units; if you raise those to 19 and 20 you get more 'air time' and more trouble. You have to be quick with the mouse to follow them around the sky though. -- Nate Waddoups Redmond WA USA http://www.natew.com --1363170581-980581577-1036073289=:32303 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="test_sliderstops.cpp" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="test_sliderstops.cpp" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNDQogKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKg0NCiAqIE9wZW4gRHluYW1pY3MgRW5naW5lLCBD b3B5cmlnaHQgKEMpIDIwMDEsMjAwMiBSdXNzZWxsIEwuIFNtaXRoLiAgICAg ICAqDQ0KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gIEVtYWlsOiBydXNzQHEx Mi5vcmcgICBXZWI6IHd3dy5xMTIub3JnICAgICAgICAgICoNDQogKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKg0NCiAqIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig ICAgICAgICAqDQ0KICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiBF SVRIRVI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNDQog KiAgICgxKSBUaGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSAgKg0NCiAqICAgICAgIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0ICAqDQ0KICogICAgICAgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLiBUaGUgdGV4dCBvZiB0aGUgR05VIExlc3NlciAgICAg ICoNDQogKiAgICAgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGluY2x1 ZGVkIHdpdGggdGhpcyBsaWJyYXJ5IGluIHRoZSAgICAgKg0NCiAqICAgICAg IGZpbGUgTElDRU5TRS5UWFQuICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqDQ0KICogICAoMikgVGhlIEJTRC1zdHls ZSBsaWNlbnNlIHRoYXQgaXMgaW5jbHVkZWQgd2l0aCB0aGlzIGxpYnJhcnkg aW4gICAgICoNDQogKiAgICAgICB0aGUgZmlsZSBMSUNFTlNFLUJTRC5UWFQu ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0NCiAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQ0KICogVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsICAgICAgICoNDQogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAg Kg0NCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBmaWxlcyAgICAqDQ0KICogTElDRU5T RS5UWFQgYW5kIExJQ0VOU0UtQlNELlRYVCBmb3IgbW9yZSBkZXRhaWxzLiAg ICAgICAgICAgICAgICAgICAgICoNDQogKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKg0NCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0NCg0N CiNpbmNsdWRlIDxvZGUvb2RlLmg+DQ0KI2luY2x1ZGUgPGRyYXdzdHVmZi9k cmF3c3R1ZmYuaD4NDQoNDQojaWZkZWYgTVNWQw0NCiNwcmFnbWEgd2Fybmlu ZyhkaXNhYmxlOjQyNDQgNDMwNSkgIC8vIGZvciBWQysrLCBubyBwcmVjaXNp b24gbG9zcyBjb21wbGFpbnRzDQ0KI2VuZGlmDQ0KDQ0KLy8gc2VsZWN0IGNv cnJlY3QgZHJhd2luZyBmdW5jdGlvbnMNDQojaWZkZWYgZERPVUJMRQ0NCiNk ZWZpbmUgZHNEcmF3Qm94IGRzRHJhd0JveEQNDQojZW5kaWYNDQoNDQoNDQov LyBzb21lIGNvbnN0YW50cw0NCiNkZWZpbmUgU0lERSAoMC41ZikJLy8gc2lk ZSBsZW5ndGggb2YgYSBib3gNDQojZGVmaW5lIE1BU1MgKDEuMCkJLy8gbWFz cyBvZiBhIGJveA0NCg0NCg0NCi8vIGR5bmFtaWNzIGFuZCBjb2xsaXNpb24g b2JqZWN0cw0NCnN0YXRpYyBkV29ybGRJRCB3b3JsZDsNDQpzdGF0aWMgZFNw YWNlSUQgc3BhY2U7DQ0Kc3RhdGljIGRCb2R5SUQgYm9keVsyXTsNDQpzdGF0 aWMgZEdlb21JRCBib3hbMl07DQ0Kc3RhdGljIGRKb2ludElEIHNsaWRlcjsN DQpzdGF0aWMgZEdlb21JRCBncm91bmQ7DQ0Kc3RhdGljIGRKb2ludEdyb3Vw SUQgY29udGFjdGdyb3VwOw0NCg0NCg0NCi8vIHN0YXJ0IHNpbXVsYXRpb24g LSBzZXQgdmlld3BvaW50DQ0KDQ0Kc3RhdGljIHZvaWQgc3RhcnQoKQ0NCnsN DQogIHN0YXRpYyBmbG9hdCB4eXpbM10gPSB7NS4wMzgyZiwtNS4wODExZiwx LjQ3MDBmfTsNDQogIHN0YXRpYyBmbG9hdCBocHJbM10gPSB7MTYwLjAwMDBm LDAuMGYsMC4wMDAwZn07DQ0KICBkc1NldFZpZXdwb2ludCAoeHl6LGhwcik7 DQ0KICBwcmludGYgKCJQcmVzcyAnZScgdG8gc3RhcnQvc3RvcCBvY2Nhc2lv bmFsIGVycm9yLlxuIik7DQ0KfQ0NCg0NCg0NCi8vIGNhbGxlZCB3aGVuIGEg a2V5IHByZXNzZWQNDQoNDQpzdGF0aWMgdm9pZCBjb21tYW5kIChpbnQgY21k KQ0NCnsNDQp9DQ0KDQ0KLy8gY29sbGlzaW9uIGNhbGxiYWNrDQ0KDQ0Kc3Rh dGljIHZvaWQgbmVhckNhbGxiYWNrICh2b2lkICpkYXRhLCBkR2VvbUlEIG8x LCBkR2VvbUlEIG8yKQ0NCnsNDQogIGludCBpLG47DQ0KDQ0KICAvLyBkb24n dCBjb2xsaWRlIGJveGVzIHdpdGggZWFjaCBvdGhlcg0NCiAgaWYgKChvMSA9 PSBib3hbMF0pICYmIChvMiA9PSBib3hbMV0pKQ0NCgkgIHJldHVybjsNDQoN DQogIGlmICgobzEgPT0gYm94WzFdKSAmJiAobzIgPT0gYm94WzBdKSkNDQoJ ICByZXR1cm47DQ0KDQ0KICBjb25zdCBpbnQgTiA9IDEwOw0NCiAgZENvbnRh Y3QgY29udGFjdFtOXTsNDQogIG4gPSBkQ29sbGlkZSAobzEsbzIsTiwmY29u dGFjdFswXS5nZW9tLHNpemVvZihkQ29udGFjdCkpOw0NCiAgaWYgKG4gPiAw KSB7DQ0KICAgIGZvciAoaT0wOyBpPG47IGkrKykgew0NCiAgICAgIGNvbnRh Y3RbaV0uc3VyZmFjZS5tb2RlID0gZENvbnRhY3RTbGlwMSB8IGRDb250YWN0 U2xpcDIgfA0NCgkvKmRDb250YWN0U29mdEVSUCB8IGRDb250YWN0U29mdENG TSB8ICovIGRDb250YWN0Qm91bmNlOw0NCiAgICAgIGNvbnRhY3RbaV0uc3Vy ZmFjZS5tdSA9IGRJbmZpbml0eTsNDQogICAgICBjb250YWN0W2ldLnN1cmZh Y2Uuc2xpcDEgPSAwLjE7DQ0KICAgICAgY29udGFjdFtpXS5zdXJmYWNlLnNs aXAyID0gMC4xOw0NCiAgICAgIC8vY29udGFjdFtpXS5zdXJmYWNlLnNvZnRf ZXJwID0gMC41Ow0NCiAgICAgIC8vY29udGFjdFtpXS5zdXJmYWNlLnNvZnRf Y2ZtID0gMC4zOw0NCgkgIGNvbnRhY3RbaV0uc3VyZmFjZS5ib3VuY2VfdmVs ID0gMDsNDQoJICBjb250YWN0W2ldLnN1cmZhY2UuYm91bmNlID0gMC45Ow0N CiAgICAgIGRKb2ludElEIGMgPSBkSm9pbnRDcmVhdGVDb250YWN0ICh3b3Js ZCxjb250YWN0Z3JvdXAsJmNvbnRhY3RbaV0pOw0NCiAgICAgIGRKb2ludEF0 dGFjaCAoYywNDQoJCSAgICBkR2VvbUdldEJvZHkoY29udGFjdFtpXS5nZW9t LmcxKSwNDQoJCSAgICBkR2VvbUdldEJvZHkoY29udGFjdFtpXS5nZW9tLmcy KSk7DQ0KICAgIH0NDQogIH0NDQp9DQ0KDQ0KLy8gc2ltdWxhdGlvbiBsb29w DQ0KDQ0Kc3RhdGljIHZvaWQgc2ltTG9vcCAoaW50IHBhdXNlKQ0NCnsNDQoN DQogIGRTcGFjZUNvbGxpZGUgKHNwYWNlLDAsJm5lYXJDYWxsYmFjayk7DQ0K ICBkV29ybGRTdGVwICh3b3JsZCwwLjA1KTsNDQogIGRKb2ludEdyb3VwRW1w dHkgKGNvbnRhY3Rncm91cCk7DQ0KDQ0KDQ0KICBkUmVhbCBzaWRlc1szXSA9 IHsxLDEsMX07DQ0KICBkc1NldFRleHR1cmUgKERTX1dPT0QpOw0NCiAgZHNT ZXRDb2xvciAoMSwxLDApOw0NCiAgZHNEcmF3Qm94IChkQm9keUdldFBvc2l0 aW9uKGJvZHlbMF0pLGRCb2R5R2V0Um90YXRpb24oYm9keVswXSksc2lkZXMp Ow0NCiAgZHNTZXRDb2xvciAoMCwxLDEpOw0NCiAgZHNEcmF3Qm94IChkQm9k eUdldFBvc2l0aW9uKGJvZHlbMV0pLGRCb2R5R2V0Um90YXRpb24oYm9keVsx XSksc2lkZXMpOw0NCn0NDQogICAgICAgICAgIA0NCmludCBtYWluIChpbnQg YXJnYywgY2hhciAqKmFyZ3YpDQ0Kew0NCiAgLy8gc2V0dXAgcG9pbnRlcnMg dG8gZHJhd3N0dWZmIGNhbGxiYWNrIGZ1bmN0aW9ucw0NCiAgZHNGdW5jdGlv bnMgZm47DQ0KICBmbi52ZXJzaW9uID0gRFNfVkVSU0lPTjsNDQogIGZuLnN0 YXJ0ID0gJnN0YXJ0Ow0NCiAgZm4uc3RlcCA9ICZzaW1Mb29wOw0NCiAgZm4u Y29tbWFuZCA9ICZjb21tYW5kOw0NCiAgZm4uc3RvcCA9IDA7DQ0KICBmbi5w YXRoX3RvX3RleHR1cmVzID0gIi4uLy4uL2RyYXdzdHVmZi90ZXh0dXJlcyI7 DQ0KDQ0KICAvLyBjcmVhdGUgd29ybGQsIHNwYWNlLCBncm91bmQsIGV0Yw0N CiAgd29ybGQgPSBkV29ybGRDcmVhdGUoKTsNDQogIGRXb3JsZFNldEdyYXZp dHkgKHdvcmxkLCAwLCAwLCAtMik7DQ0KDQ0KICBzcGFjZSA9IGRTaW1wbGVT cGFjZUNyZWF0ZSgpOw0NCiAgZ3JvdW5kID0gZENyZWF0ZVBsYW5lIChzcGFj ZSwwLDAsMSwwKTsNDQoNDQogIGNvbnRhY3Rncm91cCA9IGRKb2ludEdyb3Vw Q3JlYXRlICgwKTsNDQoNDQogIC8vIGNyZWF0ZSBtYXNzIGZvciB0aGUgYm94 ZXMNDQogIGRNYXNzIG07DQ0KICBkTWFzc1NldEJveCAoJm0sMSxTSURFLFNJ REUsU0lERSk7DQ0KICBkTWFzc0FkanVzdCAoJm0sTUFTUyk7DQ0KDQ0KICAv LyBjcmVhdGUgYm9keSAxDQ0KICBib2R5WzBdID0gZEJvZHlDcmVhdGUgKHdv cmxkKTsNDQogIGRCb2R5U2V0TWFzcyAoYm9keVswXSwmbSk7DQ0KICBkQm9k eVNldFBvc2l0aW9uIChib2R5WzBdLDAsMCw4KTsNDQoNDQogIGJveFswXSA9 IGRDcmVhdGVCb3ggKHNwYWNlLDEsMSwxKTsNDQogIGRHZW9tU2V0Qm9keSAo Ym94WzBdLGJvZHlbMF0pOw0NCg0NCiAgLy8gY3JlYXRlIGJvZHkgMg0NCiAg Ym9keVsxXSA9IGRCb2R5Q3JlYXRlICh3b3JsZCk7DQ0KICBkQm9keVNldE1h c3MgKGJvZHlbMV0sJm0pOw0NCiAgZEJvZHlTZXRQb3NpdGlvbiAoYm9keVsx XSwwLjUsMCw3KTsNDQoNDQogIGJveFsxXSA9IGRDcmVhdGVCb3ggKHNwYWNl LDEsMSwxKTsNDQogIGRHZW9tU2V0Qm9keSAoYm94WzFdLGJvZHlbMV0pOw0N Cg0NCiAgLy8gY3JlYXRlIHNsaWRlcg0NCiAgc2xpZGVyID0gZEpvaW50Q3Jl YXRlU2xpZGVyICh3b3JsZCwwKTsNDQogIGRKb2ludEF0dGFjaCAoc2xpZGVy LGJvZHlbMF0sYm9keVsxXSk7DQ0KICBkSm9pbnRTZXRTbGlkZXJBeGlzIChz bGlkZXIsMSwwLDApOw0NCiAgZEpvaW50U2V0U2xpZGVyUGFyYW0gKHNsaWRl ciwgZFBhcmFtTG9TdG9wLCAtMS4wKTsNDQogIGRKb2ludFNldFNsaWRlclBh cmFtIChzbGlkZXIsIGRQYXJhbUhpU3RvcCwgMS4wKTsNDQoNDQogIC8vIHJ1 biBzaW11bGF0aW9uDQ0KICBkc1NpbXVsYXRpb25Mb29wIChhcmdjLGFyZ3Ys MzUyLDI4OCwmZm4pOw0NCg0NCiAgZFdvcmxkRGVzdHJveSAod29ybGQpOw0N CiAgcmV0dXJuIDA7DQ0KfQ0NCg== --1363170581-980581577-1036073289=:32303-- From ahamilton_01 at hotmail.com Thu Oct 31 15:29:02 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Thu Oct 31 15:29:02 2002 Subject: SV: [ODE] more physics Message-ID: >Costs in what way? It does say memory usage and how much of >the cpu per frame the physics system takes. What other costs >are there? I think Russ mean cost for licensing it for use in games. >Yes, seems like the objects sleep VERY quickly. After just a few >tries I manage to get it to sleep in a physicly impossible position. >(If the simulation had run for just a few ticks more the boxes >would have fallen over) but they quickly froze in place. Indeed, but in a game, if that means an a few extra stacks for the game designer, I think that's a fair trade. >Also is it just me or do the chain and hinge behave strangly? >If you continue to force it upwards it starts to wobble. Like >a snake or something. Maybe it's just me and thats how it >should behave. Both of the long chains do seem a bit elastic when you lift them up for a while. Also the hinge chains looks abit rubbery when it fall onto itself. Perhaps that's an artifact of this 'iterative' method. Al > >/Joakim E. - www.planestate.net >_______________________________________________ >ODE mailing list >ODE@q12.org >http://q12.org/mailman/listinfo/ode _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From coding at natew.com Thu Oct 31 20:42:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 20:42:02 2002 Subject: [ODE] Interesting thing... Message-ID: "MelBotWars is a real-time dynamics competition involving autonomous virtual robots that fight each other using rigidBody dynamics in Maya. The contestants get to build their own robots and add intelligence to them. They need to learn many things in order to make sure their robot survives. You get to learn all about physics and the rigidBody dynamics in Maya and have a lot of fun doing it!" http://www.melbotwars.com/index_lo.html -- Nate Waddoups Redmond WA USA http://www.natew.com From anselm at hook.org Thu Oct 31 21:09:01 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 31 21:09:01 2002 Subject: [ODE] msvc dlls? In-Reply-To: Message-ID: Just a little note, I updated my c# code to link against the latest ode and I noticed something missing in the dll support. Using msvc 7.0 I think that I have to have __dllexport... defined - but none of the methods in objects.h have SHAREDLIBEXPORT as a prefix. I suppose this isn't a problem under cygwin (I haven't checked) but it is maybe something missing in the latest ode lib. But I am a bit baffled about how I did it last time - I don't think I was using cygwin... maybe these define prefixes were removed? Anyway... Here's my copy - maybe it can be merged back in - or somebody can point out to me a better way to force export of all methods in msdev? http://p2pmap.org/cgi-bin/cvsweb.cgi/p2pmap/src/ode/include/ode/objects.h?rev=1.3&content-type=text/x-cvsweb-markup Also I noticed that there's an include of alloca.h - msdev doesn't have that. And I do actually add one new method to the ode library - a self handling collision callback so that I don't have to do callbacks in c#. Of course this can't really be generalized beyond specific users needs (such as mine) because there's no good concept of material property intersections. Otherwise I was able to pretty trivially build an ode.dll under msdev... - a From russ at q12.org Thu Oct 31 23:06:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 23:06:02 2002 Subject: [ODE] slider trouble In-Reply-To: References: Message-ID: <20021031221053.291c8cac.russ@q12.org> > I've noticed that when I connect two boxes with a slider, and set > stops on the slider so it can only move between +1 and -1, the > box-slider-box system spins off into infinity if I toss it into the > air. Without the limits, the system behaves just fine. this one took a while to figure out, but it's now fixed (joint.cpp updated in CVS, with a long comment explaining the problem). the problem was that the constraint forces being applied to a powered or limited slider joint resulted in a torque couple if the body centers of mass did not line up along the slider axis (as they do in all my slider tests!). that caused the joined bodies to build up angular velocity. slider joints between objects that weren't spinning freely (e.g. sitting on the ground) would not have been affected much by this problem. nate, can you verify the fix? russ. -- Russell Smith http://www.q12.org From russ at q12.org Thu Oct 31 23:49:01 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 23:49:01 2002 Subject: [ODE] slider trouble In-Reply-To: <20021031221053.291c8cac.russ@q12.org> References: <20021031221053.291c8cac.russ@q12.org> Message-ID: <20021031225314.6ad768b2.russ@q12.org> > this one took a while to figure out, but it's now fixed (joint.cpp > updated in CVS, with a long comment explaining the problem). oops ... got some signs incorrect ... checked in a new joint.cpp. -- Russell Smith http://www.q12.org From ps_yumemi at yahoo.com Tue Oct 1 08:32:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Tue Oct 1 08:32:01 2002 Subject: [ODE] access violation Message-ID: <20021001153138.35239.qmail@web40509.mail.yahoo.com> if you get an acces violation when you go into the space collide function what does that mean? does that mean i have an invalid geom? thanks __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ivan.bolcina at volja.net Tue Oct 1 11:28:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 1 11:28:02 2002 Subject: [ODE] Usage of triangle collider Message-ID: <001301c26978$37c95a90$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0010_01C26988.FB0EE000 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Can anybody give me an example how to use triangle collider. Currently I am using built-in collider on boxes. bye, ivan ------=_NextPart_000_0010_01C26988.FB0EE000 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Can anybody give me an example how to = use triangle=20 collider.
Currently I am using built-in collider = on=20 boxes.
 
bye,
ivan
------=_NextPart_000_0010_01C26988.FB0EE000-- From ivan.bolcina at volja.net Tue Oct 1 11:45:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 1 11:45:02 2002 Subject: [ODE] old posts to this forum Message-ID: <004201c2697a$80065360$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_003F_01C2698B.43615CA0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi, I downloaded archive of old posts to this forum. How do I import it = into my email program(Outlook Express). If I cannot, where to can I = import it. bye and thanx,ivan ------=_NextPart_000_003F_01C2698B.43615CA0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi, I downloaded archive of old posts = to this=20 forum. How do I import it into my email program(Outlook Express). If I = cannot,=20 where to can I import it.
 
bye and = thanx,ivan
------=_NextPart_000_003F_01C2698B.43615CA0-- From anselm at hook.org Tue Oct 1 12:38:02 2002 From: anselm at hook.org (Anselm Hook) Date: Tue Oct 1 12:38:02 2002 Subject: [ODE] old posts to this forum In-Reply-To: <004201c2697a$80065360$0100a8c0@vectra> Message-ID: > q12 archives in mbox format - any way to get them in outlook format? The archives are in mbox format (see pipermail faq). Programs such as Netscape handle this format. Outlook express can import some formats as well. I suggest using Netscape to import the q12 archives, then exporting out to some standard that Outlook can read in. Looking on the net I don't see anybody doing *exactly* what you want but here are a couple of links: http://lists.suse.com/archive/suse-kde/2002-May/0270.html http://www.progsoc.uts.edu.au/lists/slug/2001/May/msg00118.html - a What I would do is run a On Tue, 1 Oct 2002, Ivan Bolcina wrote: > Hi, I downloaded archive of old posts to this forum. How do I import > it into my email program(Outlook Express). If I cannot, where to can I > import it. > > bye and thanx,ivan > From erwin at vo.com Tue Oct 1 13:19:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:01 2002 Subject: [ODE] Tri-collider page on wiki References: <20021001153259.GA13869@nlin.net> Message-ID: <007501c26987$bf0f2f20$73fefea9@athlon> Hi, After several weeks (months?) of crunch time i finally have time to continue my planned changes to the Tricollider. The CVS version is indeed very old, and has problems we all know about. The version i posted to this list fixes some problems, but has several bugs, which is why i'm glad it didnt make it into CVS. The sphere collision function isnt accurate enough for large triangles. I'm going to rewrite the triangle-sphere collision function to be more robust in these cases. The box collision function computes a wrong penetration depth (not deep enough) in some cases, which i found out after the release. I've planned to fix these issues somewhere next week, but dont bet your lives on it. :-) Since ODE now implements a ccylinder-box collision function i'm considering implementing the triangle-ccylinder function along with some other modifications. Erwin ----- Original Message ----- From: To: "Cyrus Preuss" Cc: Sent: Tuesday, October 01, 2002 17:32 Subject: Re: [ODE] Tri-collider page on wiki > Hi Cyrus, > > > ... I (Norman) have managed to patch Erwin's changes for spheres into the > > current CVS version of tri-collider. Contact me for details on an interim > > patched tri-collider if you need accurate sphere->triangle-edge collision > > now; hopefully a new release of tri-collider will resolve all of the > > edge-related problems. ... > > This was several months ago, and I believe the current CVS version of > tri-collider fixes these problems. > > Hm, I just browsed online CVS and it seems that the changes are not yet > in CVS, but I may be mistaken. I am forwarding the e-mail to Erwin as > well. Erwin, did the Opcode 1.2 changes, barycentric coords for sphere-tri > collision, ever make it into CVS? > > Cyrus, the problem was that the old sphere-trimesh collision used a bbox > for the sphere to do the collision for a first rough-estimate of the > collision points, then from this potentially colliding checked each point > to see if it was a real collision between the triangle and the sphere. > This second-pass was inaccurate on the edges. To avoid "bumping" behavior > when spheres rolled over "seams" between adjacent (and e.g. coplanar) > polygons, the inaccurate edge collision was completely eliminated, under > the assumption that when the ball rolls off of the plane of one triangle, > it will roll onto the plane of the next triangle. This works for "concave" > type meshes without upwardly-jutting creases (e.g. ball is rolling on > the inside of a bowl), but fails for "convex" type meshes with upwardly- > jutting creases (e.g. ball rolling upwards then downwards along and over > the sharp edge of a wedge - in this case, edge contact is essential to > account for the convexity of the geometry). This two-pass routine was > then replaced by a one-pass routine using new routines in Opcode 1.2 which > accurately calculated sphere-triangle collision, including edge cases > (apparently using a barycentric coordinate approach). > > After discussing this with Erwin via private e-mail, he was kind enough > to send me some patched files to fix that one case. However, at that time, > the internal structures of the tri-collider were being rewritten, so there > was quite a bit of tedious hacking I had to do to get Erwin's new changes > working with the old tri-collider (though it does work). > > Erwin is continuing to make new progress on the tri-collider, so it > is probably not recommended to use my solution unless you need a working > sphere-trimesh collision *now*, and are willing to modify your code later > when the new version of tri-collider comes out. If you need it now, I'll > zip up my entire modified ODE source directory and send it to you, but > it is probabaly wiser to see if Erwin has updated the official source > yet rather than fiddling with my branched changes. > > BTW in case you're not already doing so, it may be a good idea to wrap your > interface to ODE within an abstract class of your own design, and only to > call ODE indirectly through your own abstract class, which means that changes > like updating the tri-collider are localized, and your application code > ideally wouldn't need to be touched if ODE gets updated. > > Cheers, > -Norman > > From erwin at vo.com Tue Oct 1 13:19:42 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:42 2002 Subject: [ODE] hierarchial spaces References: Message-ID: <007601c26987$c026b9a0$73fefea9@athlon> Catching up. IIRC its even worse than a lot of AABB tests for a large group. Its calling a LOT of specialized collision functions for a large group. As i reported earlier, i've written a library which fixes these issues. Most code has been written. I'm using it for our own apps now, but i want to fix several issues before i publically release it. And i need to fix the tricollider issues first. Erwin ----- Original Message ----- From: "David McClurg" To: Sent: Friday, September 27, 2002 03:24 Subject: [ODE] hierarchial spaces > currently, spaces don't treat geom groups any differently from other geoms. this has the following dis-advantages... > > - in a hash space, the geoms in a group don't get the same treatment as the geoms in the space. that means many more AABB tests for a large group. > - when a geom group is processed by the space, the near callback must decide whether to collide with the entire group or not at all. > > i'm using a group for all my static tri-lists so they do not self-intersect. this is different from the application suggested by the user guide (eg, a collection of geometry objects that are located together in space) but i still think it's a good use of groups. here is my recommended solution... > > - implement hash space testing in groups. perhaps flag it on a per-group level. maybe a space is really just a group! > > - as you traverse the tree of groups and geoms in dSpaceCollide(), issue the near callback at each node. that gives the caller the ability to filter out which geoms are passed to dCollide(). > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From erwin at vo.com Tue Oct 1 13:19:57 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:57 2002 Subject: [ODE] Usage of triangle collider References: <001301c26978$37c95a90$0100a8c0@vectra> Message-ID: <007701c26987$c0db1580$73fefea9@athlon> You could try the test_trilist that goes with it? Or see the Wiki pages on info how to build the tricollider. Erwin ----- Original Message ----- From: "Ivan Bolcina" To: Sent: Tuesday, October 01, 2002 20:27 Subject: [ODE] Usage of triangle collider Can anybody give me an example how to use triangle collider. Currently I am using built-in collider on boxes. bye, ivan From dalwan01 at student.umu.se Wed Oct 2 04:28:02 2002 From: dalwan01 at student.umu.se (Daniel Wallin) Date: Wed Oct 2 04:28:02 2002 Subject: [ODE] Macros In-Reply-To: Message-ID: <5.1.0.14.0.20021002132136.02f8ae98@student.umu.se> At 15:54 2002-09-30 -0700, Marco Grubert wrote: >Well, if standard macros are evil then using macros to redefine keywords is >evil-squared. I was wondering why my code would break whenever I included >dxTrilist.h : > >// MSVC fixup. >#define for if (false); else for > >I assume that the author's intent is to limit the variable scope (MSVC is >not using the current C++ standard of restring for-variables to the scope of >the loop). Please, please don't do this. The portable way is to not declare >variables in the for header but before it. > >... That is very good use of macros.. The way MSVC6.0 handles variable scope's in for-loop's is a very frustrating bug, so if you absolutely have to use it, why not fix the problem with the macro? I can't see how this macro could cause your code to break, unless you are doing something like: for (int i = 0;;) { } int b = i; in which case the fault is all yours.. From sak at cd.chalmers.se Wed Oct 2 04:59:02 2002 From: sak at cd.chalmers.se (Sten Anders Karlsson) Date: Wed Oct 2 04:59:02 2002 Subject: [ODE] Confused on the results from dJointGetFeedback on a slider. Message-ID: Hello! I use a slider that has dParamVel = 0 and dParamFMax = to make the joint not moving. I now use the dJointGetFeedback to see what forces the slider applies to the joined bodies. The odd thing is that I get different results from the dJointGetFeedback depending what axis orientation I have on the slider. This would be OK if the slider allowed movement, but it does not move. I would instead expect that a non moving joint would affect the joined bodies with forces the same way as a fixed joint. Or, now as I write this I come think of a possibility, is it maybe so that a non moving slider still has a degree of freedom, like a hinge, the bodies can rotate around the slider axis? And just an other question - that unfortunately reveals my lacking geometry abilities - but wouldn't it be correct to use the x,y,z forces from the feedback struct and just multiply (dot product) the with the slider axis vector x,y,z to get the forces that acts in the sliders axis direction, asuming the slider axis is pointing in the direction from body1 to body2 (all torques are perpendicular to the slider)? Or, what I realy want to do is to construct a spring-damper and start of by finding out what the initial load is on the spring, before I allow anything to move around, so that I can preload the spring with a good starting value. Any feedback (pun intnd.) is appreciated. -- Anders From grubertm at hotmail.com Wed Oct 2 13:06:02 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Wed Oct 2 13:06:02 2002 Subject: [ODE] Macros References: <5.1.0.14.0.20021002132136.02f8ae98@student.umu.se> Message-ID: Hmm- I though this is self-evident. Maybe not, so here's a little philosophical rant - sorry to bother the community with that. > >// MSVC fixup. > >#define for if (false); else for > That is very good use of macros.. The way MSVC6.0 handles variable scope's in > for-loop's is a very frustrating bug, This used to be the standard behavior of MSVC and GCC prior to ISO standardization- Microsofts reason for not updating this to be more compliant of course is to avoid breaking all your old code. Now I have tons of legacy code which works perfectly fine - unless I include the mentioned header file. So the exact same code works in one module (not using ODE) and fails in the next because the header changes semantics. You _can_ change the meaning of a keyword- the question is _should_ you (even if it's morally okay, or it means you can stick a badge "ISO-compliant" on your shirt)? As long as you are coding on your own this is not an issue and you can redefine your C to look like Pascal - but when trying to do a cross-platform library it's best not to mess with the user's configuration. I have run into a couple of other quirks so now I am compiling tricollider as a static library again with its own setting instead of as part of my project- even though I still think that using a "common grounds" approach would be more suitable. Thanks, Marco Grubert From ps_yumemi at yahoo.com Wed Oct 2 19:06:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Wed Oct 2 19:06:02 2002 Subject: [ODE] access violation Message-ID: <20021003020525.81009.qmail@web40503.mail.yahoo.com> hello, This is about the access violation error i got when I passed by the dspacecollide function what should i do? I got a reply that said it might have been because I didn't build in debug mode but the problem is, I did compile it in debug mode coz i was debugging my program at that moment. i'm worried that it might be the fact that i used classes and all my geomIDs are part of those classes. When I press f10 or f11 while debugging, it gives me an error and it hasn't even reached my int dCollide function yet. I am completely at a loss and I need to finish this soon. pia __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ps_yumemi at yahoo.com Fri Oct 4 02:13:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Fri Oct 4 02:13:02 2002 Subject: [ODE] another access violation Message-ID: <20021004091241.98845.qmail@web40511.mail.yahoo.com> i have an additional question. i created a car with 4 wheels. they all go through the same functions and they all get geomIDs and BodyIDs but the last wheel has a problem with geom functions like dGetGeomPosition or dSetGeomPosition. The rest are fine. It works ok with dGetBodyPosition. why is that? what can I do? Is this a reason for my spacecollide function having an error? I already tried running a simulation without it and it worked. so the problem is centered there. what should I do now? please help. thanks pia __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ivan.bolcina at volja.net Fri Oct 4 08:36:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 4 08:36:02 2002 Subject: [ODE] coldet Message-ID: <001901c26bbb$9c7d7800$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0016_01C26BCC.5B6A9FD0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello. Has anybody used coldet with ode? How to do it?=20 bye,ivan ------=_NextPart_000_0016_01C26BCC.5B6A9FD0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello.
 
Has anybody used coldet with ode? How = to do it?=20
 
 
bye,ivan
------=_NextPart_000_0016_01C26BCC.5B6A9FD0-- From slipch Fri Oct 4 08:55:02 2002 From: slipch (slipch) Date: Fri Oct 4 08:55:02 2002 Subject: [ODE] coldet In-Reply-To: <001901c26bbb$9c7d7800$0100a8c0@vectra> References: <001901c26bbb$9c7d7800$0100a8c0@vectra> Message-ID: <7431855205.20021004185655@gsc-game.kiev.ua> Hello Ivan, Friday, October 4, 2002, 6:34:57 PM, you wrote: IB> Hello. IB> Has anybody used coldet with ode? How to do it? IB> bye,ivan I am sorry for my ignorance. What is it? -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From ivan.bolcina at volja.net Fri Oct 4 10:13:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 4 10:13:02 2002 Subject: [ODE] coldet and ode Message-ID: <001801c26bc9$18b2ba40$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0013_01C26BD9.A93281D0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi slipch, colder its collision detection library http://photoneffect.com/coldet/. = People say its very fast. I use it in my game "solar trader" at = http://users.volja.net/ibolcina/ , look under "solar trader" best regards to you too, ivan ------=_NextPart_000_0013_01C26BD9.A93281D0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi slipch,
colder its collision detection library = http://photoneffect.com/coldet/<= /A>.=20 People say its very fast. I use it in my game "solar trader" at = http://users.volja.net/ibolcina= / ,=20 look under "solar trader"
 
best regards to you too,
ivan
 
 
------=_NextPart_000_0013_01C26BD9.A93281D0-- From Arvid Norberg" Message-ID: <004b01c26bce$01af35d0$0300a8c0@hydri2000> ----- Original Message ----- From: "Marco Grubert" To: Sent: Tuesday, October 01, 2002 12:54 AM Subject: [ODE] Macros > [...] > The portable way is to not declare > variables in the for header but before it. > [...] If you would have written your code "the portable way" you wouldn't have this problem, right? My suggestion is that you fixes your code to support the standard. IMHO ODE should not be written poorly just to be backwards compatible with non-standard code. --- Arvid Norberg From p.terdiman at wanadoo.fr Fri Oct 4 12:08:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 12:08:02 2002 Subject: [ODE] coldet and ode References: <001801c26bc9$18b2ba40$0100a8c0@vectra> Message-ID: <026f01c26bd8$fb38b220$0e00000a@pierre> This is a multi-part message in MIME format. ------=_NextPart_000_026C_01C26BE9.BE85FFC0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Last time I looked at it, - ColDet only returned a single contact (i.e. it only provided RAPID's = "first contact" mode) - It was way slower than Opcode, and used a lot of ram. Of course I'm biased towards Opcode, and feel free to test and see for = yourself. But unless I missed something, current deal (ODE + Opcode) = looks better to me. Pierre ----- Original Message -----=20 From: Ivan Bolcina=20 To: ode@q12.org=20 Sent: Friday, October 04, 2002 7:10 PM Subject: [ODE] coldet and ode Hi slipch, colder its collision detection library = http://photoneffect.com/coldet/. People say its very fast. I use it in = my game "solar trader" at http://users.volja.net/ibolcina/ , look under = "solar trader" best regards to you too, ivan =20 =20 ------=_NextPart_000_026C_01C26BE9.BE85FFC0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Last time I looked at it,
- ColDet only returned a single contact = (i.e. it=20 only provided RAPID's "first contact" mode)
- It was way slower than Opcode, and = used a lot of=20 ram.
 
Of course I'm biased towards Opcode, = and feel free=20 to test and see for yourself. But unless I missed something, current = deal (ODE +=20 Opcode) looks better to me.
 
Pierre
----- Original Message -----
From:=20 Ivan=20 Bolcina
Sent: Friday, October 04, 2002 = 7:10=20 PM
Subject: [ODE] coldet and = ode

Hi slipch,
colder its collision detection = library http://photoneffect.com/coldet/<= /A>.=20 People say its very fast. I use it in my game "solar trader" at = http://users.volja.net/ibolcina= / ,=20 look under "solar trader"
 
best regards to you too,
ivan
 
 
------=_NextPart_000_026C_01C26BE9.BE85FFC0-- From orp at uni.de Fri Oct 4 13:42:01 2002 From: orp at uni.de (pro) Date: Fri Oct 4 13:42:01 2002 Subject: [ODE] coldet Message-ID: <000701c26be6$ba6d98b0$7334188d@brainpool> i use opcode or somtimes coldet for my car simulation (http://www.tu-ilmenau.de/~atzek/), and coldet (i've modified the source, now it gives all collisionpoints instead of only the first) and it is faster than opcode but my collisiondetection is only a ugly hack and doesen't work at all :( From pox at planetquake.com Fri Oct 4 13:47:03 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 13:47:03 2002 Subject: [ODE] coldet and ode In-Reply-To: <026f01c26bd8$fb38b220$0e00000a@pierre> Message-ID: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> This is slightly OT, but... I'd personally give Opcode a shot if it was more portable. (There doesn't seem to be an ANSI C/C++ target in the source). Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff in the mix) whereas ColDet compiles on just about anything, without modification. I've yet to try ColDet with ODE, but was planning on looking into the possibility in the future. A trimesh collider built into ODE itself would probably make a lot of people happy, but I'm not even sure if that's in Russ' long term plans for the library (it's obviously a hot topic on this list though). Frank. -- On Friday, October 4, 2002, at 03:05 PM, Pierre Terdiman wrote: > Last time I looked at it, > - ColDet only returned a single contact (i.e. it only provided RAPID's > "first contact" mode) > - It was way slower than Opcode, and used a lot of ram. >   > Of course I'm biased towards Opcode, and feel free to test and see for > yourself. But unless I missed something, current deal (ODE + Opcode) > looks better to me. >   > Pierre > > ----- Original Message ----- > From: Ivan Bolcina > To: ode@q12.org > Sent: Friday, October 04, 2002 7:10 PM > Subject: [ODE] coldet and ode > > Hi slipch, > colder its collision detection library > http://photoneffect.com/coldet/. People say its very fast. I use it in > my game "solar trader" at http://users.volja.net/ibolcina/ , look > under "solar trader" >   > best regards to you too, > ivan From coding at natew.com Fri Oct 4 13:56:01 2002 From: coding at natew.com (Nate W) Date: Fri Oct 4 13:56:01 2002 Subject: [ODE] coldet and ode In-Reply-To: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> Message-ID: On Fri, 4 Oct 2002, Frank C. wrote: > A trimesh collider built into ODE itself would probably make a lot of > people happy, but I'm not even sure if that's in Russ' long term plans > for the library (it's obviously a hot topic on this list though). See 1.6.3 of the user guide. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From p.terdiman at wanadoo.fr Fri Oct 4 14:03:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 14:03:02 2002 Subject: [ODE] coldet References: <000701c26be6$ba6d98b0$7334188d@brainpool> Message-ID: <032801c26be9$05c2ce00$0e00000a@pierre> > i use opcode or somtimes coldet for my car simulation > (http://www.tu-ilmenau.de/~atzek/), and coldet (i've modified the source, > now it gives all collisionpoints instead of only the first) and it is faster > than opcode I'd be interested in a demo showing that ColDet is faster. I can think of specific cases where it can happen since ColDet uses OBBs (IIRC), but otherwise that's a surprising statement. Anyone else ? Pierre From p.terdiman at wanadoo.fr Fri Oct 4 14:24:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 14:24:02 2002 Subject: [ODE] coldet and ode References: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> Message-ID: <034201c26beb$f2a54840$0e00000a@pierre> > I'd personally give Opcode a shot if it was more portable. (There > doesn't seem to be an ANSI C/C++ target in the source). Well, various people ported it to Linux and made it "more portable". On top of my head : in the F4 engine, in The Nebula Device, in Crystal Space, in ... ODE... Some more people sent me tar.gz files with makefiles and required changes to build Opcode "elsewhere". I don't know if they work well since I have a Windows box, period, but I can upload such an archive if ... Hell, let's just do it, wait 5 mn. ... Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm Words from the author : "This version is indeed different than those contained in F4 or ODE because it is only a direct linux port of version 1.2 of OPCODE, it contains nothing more, nothing less so a user does not have to deal with F4 or ODE. It is also accompanied with a so called configure script which automatically creates a makefile for the user's specific platform. It's just a question of running the configure script and automake and OPCODE is build for your platform (e.g. linux, solaris, irix etc). This is the correct way on unix flavoured oss to spread software." Questions about it ? Ask the author, please. (his mail is in the tar file) > Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff > in the mix) whereas ColDet compiles on just about anything, without > modification. Note that there's a #define to discard the ASM, and the only relevant VC++ stuff, as far as Opcode is concerned, is "__forceinline". Pierre From orp at uni.de Fri Oct 4 16:15:02 2002 From: orp at uni.de (pro) Date: Fri Oct 4 16:15:02 2002 Subject: [ODE] coldet Message-ID: <000c01c26bfc$21b42560$7334188d@brainpool> > I'd be interested in a demo showing that ColDet is faster. have a look at this http://www.tu-ilmenau.de/~atzek/kamikaze.zip there are two kamikazeversions: one for coldet and one for opcode. if you look at the colldet (collisiondetection) times in the right top corner of the screen you see, that coldet is always faster. btw: how can i reply to a thread of this mailinglist ? From pox at planetquake.com Fri Oct 4 17:05:02 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 17:05:02 2002 Subject: [ODE] coldet and ode In-Reply-To: Message-ID: I guess I'm sure now :) Frank. -- On Friday, October 4, 2002, at 09:03 AM, Nate W wrote: > On Fri, 4 Oct 2002, Frank C. wrote: > >> A trimesh collider built into ODE itself would probably make a lot of >> people happy, but I'm not even sure if that's in Russ' long term plans >> for the library (it's obviously a hot topic on this list though). > > See 1.6.3 of the user guide. :-) > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From pox at planetquake.com Fri Oct 4 17:18:01 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 17:18:01 2002 Subject: [ODE] coldet and ode In-Reply-To: <034201c26beb$f2a54840$0e00000a@pierre> Message-ID: Thanks pointing that out. Still a bit of work to get it going on my Mac, but I'm guessing a unix-style OSX build won't be much of a stretch (Classic/Carbon compatibility is another beast...) Frank. -- On Friday, October 4, 2002, at 05:21 PM, Pierre Terdiman wrote: >> I'd personally give Opcode a shot if it was more portable. (There >> doesn't seem to be an ANSI C/C++ target in the source). > > Well, various people ported it to Linux and made it "more portable". > On top > of my head : in the F4 engine, in The Nebula Device, in Crystal Space, > in > ... ODE... Some more people sent me tar.gz files with makefiles and > required > changes to build Opcode "elsewhere". > > I don't know if they work well since I have a Windows box, period, but > I can > upload such an archive if ... Hell, let's just do it, wait 5 mn. > > ... > > Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm > > Words from the author : > > "This version is indeed different than those contained in F4 or ODE > because it is only a direct linux port of version 1.2 of OPCODE, it > contains nothing more, nothing less so a user does not have to deal > with > F4 or ODE. It is also accompanied with a so called configure script > which automatically creates a makefile for the user's specific > platform. > It's just a question of running the configure script and automake and > OPCODE is build for your platform (e.g. linux, solaris, irix etc). This > is the correct way on unix flavoured oss to spread software." > > Questions about it ? Ask the author, please. (his mail is in the tar > file) > >> Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff >> in the mix) whereas ColDet compiles on just about anything, without >> modification. > > Note that there's a #define to discard the ASM, and the only relevant > VC++ > stuff, as far as Opcode is concerned, is "__forceinline". > > Pierre > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From bruce at cubik.org Fri Oct 4 17:35:02 2002 From: bruce at cubik.org (Bruce Mitchener) Date: Fri Oct 4 17:35:02 2002 Subject: [ODE] coldet and ode References: Message-ID: <3D9E34C9.60103@cubik.org> Frank, Frank C. wrote: > Thanks pointing that out. Still a bit of work to get it going on my Mac, > but I'm guessing a unix-style OSX build won't be much of a stretch > (Classic/Carbon compatibility is another beast...) With the Nebula Device, we're still back on Opcode 1.1, but should move to 1.2 soon (within a couple of months). The work to get Opcode 1.1 running on OS X once it was already running on Linux was pretty straight forward, largely a matter of handling some missing math functions. If you'd like to discuss that further, feel free to drop me an email off-list. Cheers, - Bruce From p.terdiman at wanadoo.fr Sat Oct 5 00:33:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Sat Oct 5 00:33:02 2002 Subject: [ODE] coldet References: <000c01c26bfc$21b42560$7334188d@brainpool> Message-ID: <005601c26c41$1a312e60$0e00000a@pierre> > have a look at this http://www.tu-ilmenau.de/~atzek/kamikaze.zip > there are two kamikazeversions: one for coldet and one for opcode. > if you look at the colldet (collisiondetection) times in the right top > corner of the screen you see, that coldet is always faster. Interesting. Difficult to tell if it's normal or not without more info (especially since you modified ColDet to report all contacts). Maybe the OBBs are just better in such cases. Could you mail me off-list a code snippet showing the way you're using Opcode ? Maybe there's something weird there. (I remember some people reporting the same conclusion : after a while I found they were building the Opcode trees each frame). BTW, are you using mesh-mesh CD or sphere-mesh ? If you're using mesh-mesh, did you try RAPID ? If ColDet runs faster thanks to OBBs, then RAPID might run even faster (IIRC it was faster than ColDet overall. But at this point I may want to test those libs again :) Pierre From ivan.bolcina at volja.net Sat Oct 5 02:33:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Sat Oct 5 02:33:02 2002 Subject: [ODE] coldet Message-ID: <003201c26c52$2b3b7470$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_002F_01C26C62.EE5C5AE0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi. I looks to me that opcode has more support and is used by more = programmers, and coldet is at halt. I guess I will switch to opcode. I = just wish ode would have it integerated in it, since i spent half of = last night building ode with it, and no sucess. There are also several = documents how to do it, which one is right?(Address please?) I also don't understand why there is no support for mesh-mesh collision = in ode port of opcode. Whats so problematic about depth penetration? = Can't be an aproximation be enought.Are there any plans to do it. I am sorry for all those questions, but I am still new to wonderful = world of ode and friends. bye,ivan ------=_NextPart_000_002F_01C26C62.EE5C5AE0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
 
I looks to me that opcode has more = support and is=20 used by more programmers, and coldet is at halt. I guess I will switch = to=20 opcode. I just wish ode would have it integerated in it, since i spent = half of=20 last night building ode with it, and no sucess. There are also several = documents=20 how to do it, which one is right?(Address please?)
 
 I also don't understand why there = is no=20 support for mesh-mesh collision in ode port of opcode. Whats so = problematic=20 about depth penetration? Can't be an aproximation be enought.Are there = any plans=20 to do it.
 
I am sorry for all those questions, = but  I am=20 still new to wonderful world of ode and friends.
 
bye,ivan
------=_NextPart_000_002F_01C26C62.EE5C5AE0-- From bongard at ifi.unizh.ch Sat Oct 5 06:24:01 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Sat Oct 5 06:24:01 2002 Subject: [ODE] Dynamically changing the rendering... Message-ID: Hi, Can someone tell me how I can dynamically suppress OpenGL rendering, for example by supplying "-null" at the command prompt? Thanks, Josh -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From benny at kramekweb.com Sat Oct 5 08:38:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Sat Oct 5 08:38:02 2002 Subject: [ODE] Dynamically changing the rendering... References: Message-ID: <3D9F0360.2060009@kramekweb.com> Joshua Bongard wrote: > Hi, > Can someone tell me how I can dynamically suppress OpenGL rendering, for > example by supplying "-null" at the command prompt? I don't understand the question. Are you talking about the drawstuff companion for ode? From Dominique at SavageSoftware.com.au Sat Oct 5 08:54:01 2002 From: Dominique at SavageSoftware.com.au (Dominique Louis) Date: Sat Oct 5 08:54:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... Message-ID: <3D9F0B29.10207@SavageSoftware.com.au> Hi All, Where would be a good place to start when investigating how to implement collision between a car and a skeletally animated model, probably in MilkShake 3D format. Thanks, Dominique. -- http://www.DelphiGamer.com := for all your Object Pascal game development needs; http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME := Home of JEDI-SDL; Cross-platform game development with Pascal, has never been easier. From bongard at ifi.unizh.ch Sat Oct 5 09:39:02 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Sat Oct 5 09:39:02 2002 Subject: [ODE] Dynamically changing the rendering... In-Reply-To: <3D9F0360.2060009@kramekweb.com> Message-ID: Yes; can I bracket the drawstuff in an if-else so that it doesn't always open an OpenGL window? On Sat, 5 Oct 2002, Benny Kramek wrote: > Joshua Bongard wrote: > > Hi, > > Can someone tell me how I can dynamically suppress OpenGL rendering, for > > example by supplying "-null" at the command prompt? > > I don't understand the question. Are you talking about the drawstuff > companion for ode? > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From erwin at vo.com Sat Oct 5 12:14:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Sat Oct 5 12:14:02 2002 Subject: [ODE] Macros References: Message-ID: <00dc01c26ca3$4f3026e0$73fefea9@athlon> Why are you including dxTriList.h in the first place?? The idea is that you include dTriList.h in your external code. Erwin ----- Original Message ----- From: "Marco Grubert" To: Sent: Tuesday, October 01, 2002 00:54 Subject: [ODE] Macros > Well, if standard macros are evil then using macros to redefine keywords is > evil-squared. I was wondering why my code would break whenever I included > dxTrilist.h : > > // MSVC fixup. > #define for if (false); else for > > I assume that the author's intent is to limit the variable scope (MSVC is > not using the current C++ standard of restring for-variables to the scope of > the loop). Please, please don't do this. The portable way is to not declare > variables in the for header but before it. > > BTW the CVS tri-collider revision is outdated (06/24/02) > > Thank you, > Marco Grubert <- exhausted after trying to get ODE with tricollider to > work again > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From anselm at hook.org Sat Oct 5 13:03:01 2002 From: anselm at hook.org (Anselm Hook) Date: Sat Oct 5 13:03:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... In-Reply-To: <3D9F0B29.10207@SavageSoftware.com.au> Message-ID: Hi Dominique, One way to add collision information to a character is to do it by hand; to write actual code that manufactures hulls, joints and bodies. The position of the body will drive the position of the bones in your character and that in turn will presumably drive the rendering of the skin. (Your challenge is mostly just describing a good data model. Once you have that ODE should easily be able to do the rest.) It can however be very time consuming and error prone to attempt to describe any system of even reasonable complexity using source code because the iteration time is so slow and there is no visual feedback to help correct errors in objects placement. Consider that you will have at least 13 joints and 13 bodies and 13 collision hulls - each of these objects has several parameters. These parameters all interact and the sum of the system can be extraordinarily complex. Finding islands of stability with all of these knobs and dials that you can turn at random can be pretty tiring... change any cosmological constant and your entire system explodes in an instant. Dynamics libraries are mostly unusable for scenes of any complexity without some kind of help here. A better way is to use a modelling package. If you have a complex geometry that you are editing in a modelling package - you may want to add specially tagged cylinders, boxes or spheres to your skeleton in that environment. At export time extract those details and pipe them to your collision handler. This is probably less code than the above and is better. Alternatively you could perhaps synthesize reasonable collision hulls from your skeletal data such as assuming a cylinder of certain radius given bone length - or by doing a coarse bounding check on each group of bone associated vertices and creating a collision hull dynamically. BTW You mean Milkshape 3d right? You'll need to specify bodies and joint constraints as well. If you were using a commercial physics library such as Havok then they have special extensions to 3DSMAX and other tools to allow you to visually specify all of these kinds of details. Unfortunately nothing like that exists yet in the public domain (although likely Blender will have such features soon). Right now you have to invent your own scheme or actually describe all of the joints, bodies and collision surfaces completely by hand - which can be extraordinarily tedious and error prone. Depending on your budget I'd recommend spending some time devising a data driven model that modellers could use to design not only the visual form but also the underlying function. You may even be able to use something like havok and 3dsmax to generate your data model but then actually drive the system with ODE. This would be an amusing hack since your runtime could remain open source. This guy did pretty good - probably doing it by hand - so for a single known quantity it may not be that bad: http://taat.fi/taat/porrasturvat/ - a On Sat, 5 Oct 2002, Dominique Louis wrote: > Hi All, > Where would be a good place to start when investigating how to > implement collision between a car and a skeletally animated model, > probably in MilkShake 3D format. > > Thanks, > > > Dominique. > -- > http://www.DelphiGamer.com := for all your Object Pascal game > development needs; > http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME := Home of JEDI-SDL; > Cross-platform game development with Pascal, has never been easier. > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From Nguyen Binh Sat Oct 5 20:26:03 2002 From: Nguyen Binh (Nguyen Binh) Date: Sat Oct 5 20:26:03 2002 Subject: Re[2]: [ODE] coldet In-Reply-To: <003201c26c52$2b3b7470$0100a8c0@vectra> References: <003201c26c52$2b3b7470$0100a8c0@vectra> Message-ID: <13557354421.20021006101234@glassegg.com> I had tried many collision detect package like RAPID, Coldet , Opcode (1.1). IMHO , Opcode is faster overall and it's well-designed . My only problem with Opcode is Pierre write code in 1600x1200 screen. :-) . -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From martin at metahuman.org Sun Oct 6 20:16:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Sun Oct 6 20:16:02 2002 Subject: [ODE] Dynamically changing the rendering... References: Message-ID: <3DA0FC35.A5943B60@metahuman.org> Hey Josh, Good to see you here, I just got back from IROS in Lausanne. The OpenGL library, "drawstuff," is separate from the physics library, "ode." When using drawstuff, you call dStepWorld() from your own function, called simLoop() in the tests. simLoop() is called automatically by drawstuff every frame. When you don't use drawstuff, you just call dStepWorld() yourself in a loop. It would be easy to put these into a single executable, although I use two different executables personally. Check out the source code to the examples for more details. - Martin Joshua Bongard wrote: > > Yes; can I bracket the drawstuff in an if-else so that it doesn't always > open an OpenGL window? > > On Sat, 5 Oct 2002, Benny Kramek wrote: > > > Joshua Bongard wrote: > > > Hi, > > > Can someone tell me how I can dynamically suppress OpenGL rendering, for > > > example by supplying "-null" at the command prompt? > > > > I don't understand the question. Are you talking about the drawstuff > > companion for ode? From slipch Mon Oct 7 01:47:02 2002 From: slipch (slipch) Date: Mon Oct 7 01:47:02 2002 Subject: [ODE] coldet and ode In-Reply-To: <001801c26bc9$18b2ba40$0100a8c0@vectra> References: <001801c26bc9$18b2ba40$0100a8c0@vectra> Message-ID: <485919321.20021007114859@gsc-game.kiev.ua> Hello Ivan, Friday, October 4, 2002, 8:10:11 PM, you wrote: IB> Hi slipch, IB> colder its collision detection library http://photoneffect.com/coldet/. People say its very fast. I use it in my game "solar trader" at http://users.volja.net/ibolcina/ , look under "solar trader" It is very interesting. I'll try to use it. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Mon Oct 7 02:00:02 2002 From: slipch (slipch) Date: Mon Oct 7 02:00:02 2002 Subject: [ODE] CCylinder orientation Message-ID: <256729045.20021007120229@gsc-game.kiev.ua> Hello ODE, How does CCylinder oriented? When I look at collision functions it seems cylinder axis is along axis Z. But when it created it is along OY. I fail to find where the orientation changed. I created cylinder class and with cylinder axis along OY. When I replace CCylinder with Cylinder in my model everything works right. May someone explain how can it happen? -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From thubba at gmx.net Mon Oct 7 03:04:02 2002 From: thubba at gmx.net (Michael Scharvogel) Date: Mon Oct 7 03:04:02 2002 Subject: [ODE] Hinge problem Message-ID: <009301c26de8$a5f2fac0$c36abb84@tig> hi folks... I build up a small test robot. As a matter of fact i am far from that and still trying to build the robot model. Like with an ant the legs shall be segmented. For a first try I have six legs but only two hinges per leg. The first part of each leg is connected to the body and its hinge can move between -45 and 45 degrees (yes I am using rad for the ode stuff :-) The next part of each leg can move up and down. The corresponding hinge is limited by 0 degree as low stop and 70 degree as high stop. I build the whole thing up at a hight of 2 and let it drop down on the floor. It's working just fine. But after lying on the floor for a short while, my bug seems to get bored and stands up... That would be just fine if only I had told it to do so... It seems to me, that the up / down hinge try to achiev their hi limit position... But why ???? Any comments on that ? cya&bfn, mike. From benny at kramekweb.com Mon Oct 7 07:44:01 2002 From: benny at kramekweb.com (Benny Kramek) Date: Mon Oct 7 07:44:01 2002 Subject: [ODE] Hinge problem References: <009301c26de8$a5f2fac0$c36abb84@tig> Message-ID: <3DA1A78C.10808@kramekweb.com> You probably know this already, but when you anchor the joint, then that relative orientation of the bodies is considered 0. Michael Scharvogel wrote: > hi folks... > > I build up a small test robot. As a matter of fact i am far from that and > still trying to build the robot model. Like with an ant the legs shall be > segmented. For a first try I have six legs but only two hinges per leg. > The first part of each leg is connected to the body and its hinge can move > between -45 and 45 degrees (yes I am using rad for the ode stuff :-) > > The next part of each leg can move up and down. The corresponding hinge is > limited by 0 degree as low stop and 70 degree as high stop. > I build the whole thing up at a hight of 2 and let it drop down on the > floor. > It's working just fine. But after lying on the floor for a short while, my > bug seems to get bored and stands up... > That would be just fine if only I had told it to do so... > It seems to me, that the up / down hinge try to achiev their hi limit > position... > But why ???? > > Any comments on that ? > > cya&bfn, mike. > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From ivan.bolcina at volja.net Mon Oct 7 14:36:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Mon Oct 7 14:36:02 2002 Subject: [ODE] opcode Message-ID: <002401c26e49$6ef9fc60$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0021_01C26E5A.2E2D7C00 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. Well, thanx for a nice = library. Any news about "opcode - ode - triangle collider - mesh to mesh" stuff? = Any plans? What are alternatives?=20 bye,ivan ------=_NextPart_000_0021_01C26E5A.2E2D7C00 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Pierre,
I switched from coldet to opcode, = and you were=20 right, it is faster, specially, if I am colliding two complex objects. = Well,=20 thanx for a nice library.
 
Any news about "opcode - ode - triangle = collider -=20 mesh to mesh" stuff? Any plans? What are alternatives? =
 
bye,ivan
------=_NextPart_000_0021_01C26E5A.2E2D7C00-- From p.terdiman at wanadoo.fr Mon Oct 7 19:22:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 7 19:22:01 2002 Subject: [ODE] opcode References: <002401c26e49$6ef9fc60$0100a8c0@vectra> Message-ID: <048501c26e71$305f31a0$0e00000a@pierre> 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
Pierre,
I switched from coldet to = opcode, and you=20 were right, it is faster, specially, if I am colliding two complex=20 objects.
 
Cool :)
Then it must depend on the app / = scenario, since=20 "pro" 's conclusion was different.
 
No real surprise : as often when it = comes to=20 optimizing, one has to test and see for himself...
 
Now I'd like to point something = out : Opcode's=20 goal was NOT to go faster than X or Y, the goal was to use less=20 memory...
 
So beware : IIRC in ColDet 1.1 the node = classes use=20 virtual methods, which wastes a lot of ram to begin with.
 
 
Any news about "opcode - ode - = triangle=20 collider - mesh to mesh" stuff? Any plans? What are alternatives?=20
 
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 the result to run in realtime.
 
Alternatives :
 
- decompose the mesh in convex parts=20 (SWIFT++)
- then compute penetration depth = between convex=20 polytopes (SOLID 3.0 or DEEP)
 
or
 
- use a composite object = approximatively bounding=20 each mesh
- then use standard primitive-primitive = collision=20 routines
 
Second version is easier, probably runs = faster, and=20 most games (if not all) do that.
 
BTW it has already been discussed - = check the=20 archives.
 
Pierre
------=_NextPart_000_03E9_01C26E6E.81B55DC0-- From p.terdiman at wanadoo.fr Mon Oct 7 19:23:43 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 7 19:23:43 2002 Subject: Re[2]: [ODE] coldet References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> Message-ID: <048901c26e71$31d81600$0e00000a@pierre> >My only problem with Opcode is Pierre write >code in 1600x1200 screen. :-) . I plead guilty. From grubertm at hotmail.com Mon Oct 7 20:22:01 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Mon Oct 7 20:22:01 2002 Subject: [ODE] Inertia & tumbling objects Message-ID: Hello, maybe someone can explain why the following thing happens: I create a body which is slightly rotated (1 degree around yaw/z axis) and set it's inertia tensor: dm.setBox( fMass/(x*y*z), x, y,z ); then apply a constant torque of 5000 units around the x-axis. after a few seconds of simulated time the box starts flipping around and a few more seconds later it comes to a complete stop. This happens when x,y,z are set to 40,20,10 (or similar). If I make the cube's edges equal, or set the initial orientation to 0 degrees the cube keeps on spinning indefinitely. So my questions are: why does the rotation suddenly stop? shouldn't this rotation lead to a rotation about a stable axis? Regards, Marco Grubert From slipch Tue Oct 8 00:45:02 2002 From: slipch (slipch) Date: Tue Oct 8 00:45:02 2002 Subject: Re[3]: [ODE] coldet In-Reply-To: <13557354421.20021006101234@glassegg.com> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> Message-ID: <1612357489.20021008104703@gsc-game.kiev.ua> Hello Nguyen, Sunday, October 6, 2002, 6:12:34 AM, you wrote: NB> I had tried many collision detect package like RAPID, Coldet , NB> Opcode (1.1). IMHO , Opcode is faster overall and it's NB> well-designed . My only problem with Opcode is Pierre write I just look through coldet site. Do I understand right - it can detect contact points (and may be contact normals)? If it can then it is not like Opcode. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From Nguyen Binh Tue Oct 8 05:05:03 2002 From: Nguyen Binh (Nguyen Binh) Date: Tue Oct 8 05:05:03 2002 Subject: Re[4]: [ODE] coldet In-Reply-To: <1612357489.20021008104703@gsc-game.kiev.ua> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> <1612357489.20021008104703@gsc-game.kiev.ua> Message-ID: <17328684015.20021008184833@glassegg.com> s> I just look through coldet site. s> Do I understand right - it can detect contact points (and may be s> contact normals)? s> If it can then it is not like Opcode. Yes, sure Coldet can detect contact points (contacts normal is another case, but I think you can have normals from points on mesh) Then how is Opcode and coldet different? Sorry , I can't catch you in this... -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From slipch Tue Oct 8 05:47:02 2002 From: slipch (slipch) Date: Tue Oct 8 05:47:02 2002 Subject: Re[5]: [ODE] coldet In-Reply-To: <10020202920.20021008154429@gsc-game.kiev.ua> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> <1612357489.20021008104703@gsc-game.kiev.ua> <17328684015.20021008184833@glassegg.com> <10020202920.20021008154429@gsc-game.kiev.ua> Message-ID: <11220506446.20021008154932@gsc-game.kiev.ua> Hello Nguyen, Tuesday, October 8, 2002, 2:48:33 PM, you wrote: NB> Yes, sure Coldet can detect contact points (contacts normal is NB> another case, but I think you can have normals from points on mesh) NB> Then how is Opcode and coldet different? Sorry , I can't catch you NB> in this... I am sorry. I rather new in it and do not know Opcode properly. I decided that it can only be used to find intersecting triangles not contact points. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Tue Oct 8 05:54:01 2002 From: slipch (slipch) Date: Tue Oct 8 05:54:01 2002 Subject: [ODE] CCylinder Message-ID: <4520922044.20021008155628@gsc-game.kiev.ua> Hello ODE, Can some one tell me along which axis CCylinder aligned when created axis-Z or axis-Y? -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From p.terdiman at wanadoo.fr Tue Oct 8 06:10:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Tue Oct 8 06:10:02 2002 Subject: Re[6]: [ODE] coldet References: <003201c26c52$2b3b7470$0100a8c0@vectra><13557354421.20021006101234@glassegg.com><1612357489.20021008104703@gsc-game.kiev.ua><17328684015.20021008184833@glassegg.com><10020202920.20021008154429@gsc-game.kiev.ua> <11220506446.20021008154932@gsc-game.kiev.ua> Message-ID: <015801c26ecb$a239ab20$0e00000a@pierre> > NB> Yes, sure Coldet can detect contact points (contacts normal is > NB> another case, but I think you can have normals from points on mesh) > > NB> Then how is Opcode and coldet different? Sorry , I can't catch you > NB> in this... > > I am sorry. I rather new in it and do not know Opcode properly. > I decided that it can only be used to find intersecting triangles > not contact points. And you would be right : I just report intersecting triangles indeed. But (I think) the point is, slapping a dedicated triangle-triangle routine on returned pairs is probably best done in the client code, since many apps will probably need different ways to drive their collision response. That's what ColDet does, using two different triangle-triangle overlap codes, depending on the situation. The fast one is the standard routine from Tomas Möller. That's also what I'm using. The slow one (that computes a collision point) is named "MyTriTri.c" in ColDet. It would be unfortunate to use it in the generic case since it's slower. But you can grab it and use it as well on Opcode's returned pairs, maybe (modulo license troubles). Anyway I'm not sure it's really that useful. Returning a single collision point is dubious, and that's not even the problem - the problem is the penetration depth, at least for ODE. [Now, right, 100% Baraff-like simulators don't need this.] Well, various libs, various strategies, see for your particular needs. Pierre From I.Munro at herts.ac.uk Tue Oct 8 06:31:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Tue Oct 8 06:31:02 2002 Subject: [ODE] CCylinder Message-ID: > Can some one tell me along which axis CCylinder aligned when > created axis-Z or axis-Y? z axis. From orp at uni.de Tue Oct 8 06:42:02 2002 From: orp at uni.de (pro) Date: Tue Oct 8 06:42:02 2002 Subject: [ODE] commercial SOLID3.0 will use ODE Message-ID: <000701c26ed0$d2dbac60$7334188d@brainpool> The upcoming version 4.0 will feature: a.. Coupling to ODE, a free open source physics engine ........ http://www.libsolid.com this could be interesting From bry03redskins at hotmail.com Tue Oct 8 07:52:01 2002 From: bry03redskins at hotmail.com (Bryan Hudock) Date: Tue Oct 8 07:52:01 2002 Subject: [ODE] display problem Message-ID: I have succesfully installed and used Open Dynamics Engine on a linux machine (Red Hat 7.0). However, once a program using the library is exited from, all further ODE programs fail to display. The simulation appears to still be functional, but the display is a black screen. The only way I currently have to solve the problem is to exit and rerun X-Windows each time I want to run a program. If you have any insight into this problem it would be greatly appreciated. Thank you for your time. _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From slipch Tue Oct 8 07:55:02 2002 From: slipch (slipch) Date: Tue Oct 8 07:55:02 2002 Subject: Re[2]: [ODE] CCylinder In-Reply-To: References: Message-ID: <4228173581.20021008175719@gsc-game.kiev.ua> Hello Ian, Tuesday, October 8, 2002, 4:26:14 PM, you wrote: >> Can some one tell me along which axis CCylinder aligned when >> created axis-Z or axis-Y? IM> z axis. It is what is written in documentation Then why when I create CCylinder it appears aligned along Y axis. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From rtonge90 at yahoo.co.uk Tue Oct 8 08:09:01 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Tue Oct 8 08:09:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... Message-ID: <20021008150831.4556.qmail@web14913.mail.yahoo.com> Hi Andy, Dominique >It can however be very time consuming and error prone >to attempt to describe any system of even reasonable >complexity using source code. Yes, setting up skeletons in source is hard. Using a physics authoring tool is much easier. >You may even be able to use something like havok and >3dsmax to generate your data model but then actually >drive the system with ODE. This would be an amusing >hack since your runtime could remain open source. Yes, using Havok authored data to drive the ODE runtime is an interesting idea, however I can see a few problems. 1 3DSmax and the Havok plugin (or the new combined product) are expensive if you dont already own them. 2 The Havok physics model is quite different from the ODE physics model, so any tuning parameters you set at authoring time wont necessarily have the same effect at run time. Some joints parameters in Havok might not have equivalents in ODE. 3 The Havok file format is binary, so you would have to reverse engineer it. Have any of you guys seen KAT, the physics authoring tool that comes free with Unreal Tournament 2003? It is a standalone tool, so you dont need max. It was specifically designed for authoring physics, so its interface is much simpler than max's. Its file format is an XML formatted text file, so you wouldnt need to reverse engineer it to use it with ODE. It comes with all the physics data used to make UT2003 in the XML format which you are free to edit. Also, it is based on MathEngine Karma, which has similar ancestry to ODE. This means that many tuning parameters behave in the same way. For example ERP and CFM in ODE are exactly the same as gamma and epsilon in Karma. This means that a skeleton tuned in KAT should behave similarly in ODE. Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From slipch Tue Oct 8 08:13:01 2002 From: slipch (slipch) Date: Tue Oct 8 08:13:01 2002 Subject: Re[3]: [ODE] CCylinder In-Reply-To: <4228173581.20021008175719@gsc-game.kiev.ua> References: <4228173581.20021008175719@gsc-game.kiev.ua> Message-ID: <10729212845.20021008181439@gsc-game.kiev.ua> Hello slipch, Tuesday, October 8, 2002, 5:57:19 PM, you wrote: IM>> z axis. s> It is what is written in documentation s> Then why when I create CCylinder it appears aligned along Y axis. I have to apologize. I am not right it is only drawn aligned along Y-axis. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From I.Munro at herts.ac.uk Tue Oct 8 08:27:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Tue Oct 8 08:27:02 2002 Subject: Re[2]: [ODE] CCylinder Message-ID: > > IM> z axis. > > It is what is written in documentation > Then why when I create CCylinder it appears aligned along Y axis. I don't know what it says in the documentation, but when compiled under vc7 all the CCyclinders I generate (and my app only uses CCylinders) are initially aligned on the z axis. Sorry, I haven't a clue why yours come out on the Y axis! Ian From coding at natew.com Tue Oct 8 11:19:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 8 11:19:01 2002 Subject: [ODE] CCylinder In-Reply-To: <4520922044.20021008155628@gsc-game.kiev.ua> Message-ID: On Tue, 8 Oct 2002, slipch wrote: > Can some one tell me along which axis CCylinder aligned when > created axis-Z or axis-Y? I don't know off the top of my head, but have a look at the test_buggy sample app. It creates capped cylinders for the wheel's collision hulls, it should be evident from the source code what axis they're on to begin with. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Tue Oct 8 11:31:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 8 11:31:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... In-Reply-To: <20021008150831.4556.qmail@web14913.mail.yahoo.com> Message-ID: On Tue, 8 Oct 2002, [iso-8859-1] Richard Tonge wrote: > Yes, setting up skeletons in source is hard. Using a > physics authoring tool is much easier. I happen to have written something like that using ODE: http://www.natew.com/juice/ The file format is a trivial dialect of XML, and I'll be happy to help if you have trouble making use of it. It runs under Windows, I hope that's not a problem. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Tue Oct 8 15:32:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Tue Oct 8 15:32:02 2002 Subject: [ODE] geom group patch Message-ID: now that i'm using geom groups more, i had to add a query function to see if a geom was in a group int dGeomGroupQuery (dxGeom *g, dxGeom *x) { dUASSERT (g && g->_class->num == dGeomGroupClass,"argument not a geomgroup"); dxGeomGroup *gr = (dxGeomGroup*) CLASSDATA(g); for (int i=0; i < gr->parts.size(); i++) { if (gr->parts[i] == x) { return 1; } } return 0; } From slipch Wed Oct 9 00:22:01 2002 From: slipch (slipch) Date: Wed Oct 9 00:22:01 2002 Subject: Re[2]: [ODE] CCylinder In-Reply-To: References: Message-ID: <1911113781.20021009102331@gsc-game.kiev.ua> Hello Nate, NW> I don't know off the top of my head, but have a look at the test_buggy NW> sample app. It creates capped cylinders for the wheel's collision hulls, NW> it should be evident from the source code what axis they're on to begin NW> with. In my version of test_buggy spheres used for wheels. Meshes created for cylinders in test_buggy with Open Engine are orthogonal to Ode cylinders so aligned along axis - Y. That what misled me. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Wed Oct 9 00:51:01 2002 From: slipch (slipch) Date: Wed Oct 9 00:51:01 2002 Subject: [ODE] always diabled body Message-ID: <192913489.20021009105330@gsc-game.kiev.ua> Hello ODE, Can I create a Body which do not ever be enabled, even when connected to an enabled body by a Joint. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From erwin at vo.com Wed Oct 9 01:14:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 01:14:01 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua> Message-ID: <001001c26f6b$d601ef30$8800a8c0@erwin> What is the purpose of that body then? Erwin ----- Original Message ----- From: "slipch" To: Sent: Wednesday, October 09, 2002 9:53 AM Subject: [ODE] always diabled body > Hello ODE, > > Can I create a Body which do not ever be enabled, even when > connected to an enabled body by a Joint. > > -- > Best regards, > slipch mailto:slipch@gsc-game.kiev.ua > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From slipch Wed Oct 9 02:22:02 2002 From: slipch (slipch) Date: Wed Oct 9 02:22:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <001001c26f6b$d601ef30$8800a8c0@erwin> References: <192913489.20021009105330@gsc-game.kiev.ua> <001001c26f6b$d601ef30$8800a8c0@erwin> Message-ID: <1428374912.20021009122432@gsc-game.kiev.ua> Hello Erwin, Wednesday, October 9, 2002, 11:14:05 AM, you wrote: >> Can I create a Body which do not ever be enabled, even when >> connected to an enabled body by a Joint. >> EdV> What is the purpose of that body then? EdV> Erwin I want to hook enabled body to some point and drag it during simulation simply setting the point position. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Wed Oct 9 04:32:02 2002 From: slipch (slipch) Date: Wed Oct 9 04:32:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <3DA417C9.3070109@kramekweb.com> References: <192913489.20021009105330@gsc-game.kiev.ua> <001001c26f6b$d601ef30$8800a8c0@erwin> <1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> Message-ID: <17816151855.20021009143409@gsc-game.kiev.ua> Hello Benny, Wednesday, October 9, 2002, 2:49:29 PM, you wrote: >> >>>> Can I create a Body which do not ever be enabled, even when >>>> connected to an enabled body by a Joint. >>>> >>> >> >> EdV> What is the purpose of that body then? >> >> EdV> Erwin >> >> I want to hook enabled body to some point and drag it during >> simulation simply setting the point position. >> BK> You can give your body a very large mass and disable gravity on it. Then BK> it will move very little on it's own, and you can move it around with BK> dBodySetPos() Works perfect. Thank you very much. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From p.terdiman at wanadoo.fr Wed Oct 9 06:09:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 06:09:02 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> Message-ID: <00b601c26f94$ac7e5a80$0e00000a@pierre> > BK> You can give your body a very large mass and disable gravity on it. Then > BK> it will move very little on it's own, and you can move it around with > BK> dBodySetPos() > > Works perfect. Thank you very much. Usually a null mass is used to mark fixed bodies. Does it work in ODE ? Pierre From erwin at vo.com Wed Oct 9 06:58:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 06:58:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> Message-ID: <005f01c26f9b$d761a570$8800a8c0@erwin> No. But i dont see the point in creating a fixed body anyway. Just DONT use a body if you dont want dynamics. Erwin ----- Original Message ----- From: "Pierre Terdiman" To: Sent: Wednesday, October 09, 2002 3:06 PM Subject: Re: Re[2]: [ODE] always diabled body > > BK> You can give your body a very large mass and disable gravity on it. > Then > > BK> it will move very little on it's own, and you can move it around with > > BK> dBodySetPos() > > > > Works perfect. Thank you very much. > > Usually a null mass is used to mark fixed bodies. Does it work in ODE ? > > Pierre > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From p.terdiman at wanadoo.fr Wed Oct 9 07:17:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 07:17:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <010401c26f9e$24e99940$0e00000a@pierre> > No. But i dont see the point in creating a fixed body anyway. Just DONT use > a body if you dont want dynamics. That's a common thing nonetheless, say for planes. A ground plane is fixed, yet you want your bodies to collide with it. Or for a flag, when the cloth patch is attached to a fixed base. (etc) Pierre From martin at metahuman.org Wed Oct 9 07:25:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Wed Oct 9 07:25:02 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <3DA43BF9.8D81E460@metahuman.org> Erwin de Vries wrote: > > No. But i dont see the point in creating a fixed body anyway. Just DONT use > a body if you dont want dynamics. What the poster is trying to do is to control a body by putting a joint on it, and moving the location of the half of the joint that's not on the body. They're doing this by creating a second body, attaching the joint to it, and moving it. IIRC, the ODE API seems to treat joints as having a single location, rather than two locations. Of course, most joints try to keep those two locations the same, but in practice they'll rarely have exactly the same location. Perhaps the API could be extended so you could set the location of each half of a joint independently? Or is there already a way to do this that I've missed? - Martin From slipch Wed Oct 9 07:34:02 2002 From: slipch (slipch) Date: Wed Oct 9 07:34:02 2002 Subject: Re[4]: [ODE] always diabled body In-Reply-To: <005f01c26f9b$d761a570$8800a8c0@erwin> References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <327081641.20021009173618@gsc-game.kiev.ua> Hello Erwin, Wednesday, October 9, 2002, 4:57:41 PM, you wrote: EdV> No. But i dont see the point in creating a fixed body anyway. Just DONT use EdV> a body if you dont want dynamics. EdV> Erwin I need body because I need to attach enabled body to something that I can move during simulation setting its position. EdV> ----- Original Message ----- EdV> From: "Pierre Terdiman" EdV> To: EdV> Sent: Wednesday, October 09, 2002 3:06 PM EdV> Subject: Re: Re[2]: [ODE] always diabled body >> > BK> You can give your body a very large mass and disable gravity on it. >> Then >> > BK> it will move very little on it's own, and you can move it around EdV> with >> > BK> dBodySetPos() >> > >> > Works perfect. Thank you very much. >> >> Usually a null mass is used to mark fixed bodies. Does it work in ODE ? >> >> Pierre >> >> _______________________________________________ >> ODE mailing list >> ODE@q12.org >> http://q12.org/mailman/listinfo/ode >> >> -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From erwin at vo.com Wed Oct 9 07:39:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 07:39:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> <010401c26f9e$24e99940$0e00000a@pierre> Message-ID: <006d01c26fa1$94866a50$8800a8c0@erwin> In those cases you only create a geometry. Without a body. Erwin ----- Original Message ----- From: "Pierre Terdiman" To: Sent: Wednesday, October 09, 2002 4:14 PM Subject: Re: Re[2]: [ODE] always diabled body > > No. But i dont see the point in creating a fixed body anyway. Just DONT > use > > a body if you dont want dynamics. > > That's a common thing nonetheless, say for planes. A ground plane is fixed, > yet you want your bodies to collide with it. > > Or for a flag, when the cloth patch is attached to a fixed base. > > (etc) > > Pierre > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From p.terdiman at wanadoo.fr Wed Oct 9 07:46:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 07:46:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> <010401c26f9e$24e99940$0e00000a@pierre> <006d01c26fa1$94866a50$8800a8c0@erwin> Message-ID: <016601c26fa2$3251c540$0e00000a@pierre> > In those cases you only create a geometry. Without a body. Ah, perhaps. Ok. Well, it only shows I'm not actually using ODE :) I think it works with null masses in Havok nonetheless. Pierre PS: let's welcome a new player after Mathengine, Havok, ODE, etc : www.novodex.com From slipch Wed Oct 9 09:22:01 2002 From: slipch (slipch) Date: Wed Oct 9 09:22:01 2002 Subject: [ODE] Cylinder colisions Message-ID: <17333538595.20021009192355@gsc-game.kiev.ua> ------------FF1101193C4A0652 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello ODE, Hear is cylinder class for ODE. Cylinder class includes collisions Cylinder - Box Cylinder-Cylinder Cylinder - Sphere and Cylinder-Plain I also included Cylinder - Tri-Mesh in my version of Triangle collider. I put some more information in readme.txt. -- Best regards, Konstantin Slipchenko mailto:slipch@gsc-game.kiev.ua ------------FF1101193C4A0652 Content-Type: application/x-zip-compressed; name="dCylinder.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dCylinder.zip" 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 ------------FF1101193C4A0652-- From coding at natew.com Wed Oct 9 11:36:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 11:36:02 2002 Subject: Re[2]: [ODE] CCylinder In-Reply-To: <1911113781.20021009102331@gsc-game.kiev.ua> Message-ID: On Wed, 9 Oct 2002, slipch wrote: > NW> I don't know off the top of my head, but have a look at the test_buggy > NW> sample app. It creates capped cylinders for the wheel's collision hulls, > NW> it should be evident from the source code what axis they're on to begin > NW> with. > > In my version of test_buggy spheres used for wheels. Oh look, mine too. Sorry about that. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 9 11:59:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 11:59:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <1428374912.20021009122432@gsc-game.kiev.ua> Message-ID: On Wed, 9 Oct 2002, slipch wrote: > I want to hook enabled body to some point and drag it during > simulation simply setting the point position. I am doing something like that in my application. I create a "fixed" joint, and use it to attach the body to "the static environment" (as Russ puts it in the documentation). // code m_TackJoint = dJointCreateFixed (m_pWorld->m_WorldID, 0); if (m_TackJoint) { dJointAttach (m_TackJoint, m_BodyID, null); dJointSetFixed (m_TackJoint); } As for moving things around, I'm not sure but I think you could try dBodySetPosition followed by another call to dJointSetFixed... moving things around in that way seems to me like it would destabilize the simulation, but it's worth a try. Or, don't create that "disabled" body at all... think about whatever other body it will be connected to, and connect THAT body with a fixed joint, and move that body around. That might be a little bit simpler. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 9 12:03:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 12:03:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <010401c26f9e$24e99940$0e00000a@pierre> Message-ID: On Wed, 9 Oct 2002, Pierre Terdiman wrote: > > No. But i dont see the point in creating a fixed body anyway. Just DONT > > use a body if you dont want dynamics. > > That's a common thing nonetheless, say for planes. A ground plane is fixed, > yet you want your bodies to collide with it. > > Or for a flag, when the cloth patch is attached to a fixed base. Even for both of those scenarios, you could get away without creating a rigid body. The ground plane in my application is a Geom object, not a body; if I wanted a flag, I'd render the pole, but I wouldn't make a body of it (unless I wanted the pole to sway....) instead, the edge of the cloth would just be "attached" to a set of fixed coordinates (as described in 11.1 of the FAQ). -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Wed Oct 9 17:29:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Wed Oct 9 17:29:02 2002 Subject: [ODE] welcome a new player Message-ID: Thanks for the link. It's nice to see the proliferation of rigid body simulators but I thought Si Brown's Freefall buggy demo using ODE was nicer than the NovodexTruckDemo. There seem to be some problems with the novodex wheels. When they hit the walls and objects they turn at a different angle than the inputs which makes it unresponsive very difficult to control. And the frame rate was pretty low (<30) for a small world on a GeForce3 1.6Ghz machine. Pierre Terdiman wrote: > PS: let's welcome a new player after Mathengine, Havok, ODE, etc : > www.novodex.com From p.terdiman at wanadoo.fr Wed Oct 9 18:13:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 18:13:02 2002 Subject: [ODE] welcome a new player References: Message-ID: <021b01c26ff9$e5d0c740$0e00000a@pierre> > Thanks for the link. It's nice to see the proliferation of rigid body simulators but I thought Si Brown's Freefall buggy demo using ODE was nicer than the NovodexTruckDemo. There seem to be some problems with the novodex wheels. When they hit the walls and objects they turn at a different angle than the inputs which makes it unresponsive very difficult to control. And the frame rate was pretty low (<30) for a small world on a GeForce3 1.6Ghz machine. Maybe you should report those problems to them, then ? After all, it's off-topic :) Now, the low framerate probably comes from something else : I don't have a 1.6 Ghz machine (*) and the framerate was always ~85 FPS (that is, the limit they fixed). Pierre (*) On the other hand I have a Quadro4 XGL 900, arh arh arh ! From dmcclurg at pandemicstudios.com.au Wed Oct 9 19:16:01 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Wed Oct 9 19:16:01 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: In my game, I'd like to simulate conveyor belts. Looking at the doc, a contact joint using dContactMotion1/2 seems to be the technqiue required. Does anyone have an example of that? I looked in ode/test but couldn't find anything. Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? Much thanks for any help with these questions From slipch Thu Oct 10 00:32:01 2002 From: slipch (slipch) Date: Thu Oct 10 00:32:01 2002 Subject: Re[4]: [ODE] always diabled body In-Reply-To: References: Message-ID: <1791950044.20021010103433@gsc-game.kiev.ua> Hello Nate, Wednesday, October 9, 2002, 2:06:58 PM, you wrote: NW> On Wed, 9 Oct 2002, slipch wrote: >> I want to hook enabled body to some point and drag it during >> simulation simply setting the point position. NW> I am doing something like that in my application. I create a NW> "fixed" joint, and use it to attach the body to "the static NW> environment" (as Russ puts it in the documentation). There was a good idea by Benny Kramek: " You can give your body a very large mass and disable gravity on it. Then it will move very little on it's own, and you can move it around with dBodySetPos() " Works fine. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From mattias at cambrianlabs.com Thu Oct 10 01:30:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 01:30:02 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <17333538595.20021009192355@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> Message-ID: > Hear is cylinder class for ODE. Hey! Nice job, I tried it out and it seems to work the way it should. I've seen cylinders explode out into space, but only rarely. If anyone wants a windows demo using the cylinder, check out http://www.cambrianlabs.com/DelphiODE.zip - the boxstack demo. cheers, mattias From mattias at cambrianlabs.com Thu Oct 10 01:33:11 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 01:33:11 2002 Subject: [ODE] Community page Message-ID: Hey! Russel, if you'd like, please add http://www.cambrianlabs.com/Mattias/DelphiODE/ to the community page? It's the homepage of the delphi import of ODE. If anyone wants to see some more evolved life, check out http://www.cambrianlabs.com/Mattias/Evolved/ , where I use Genetic Programming to evolve a hopper. Russel, if you want to, you could add that also. cheers, mattias From slipch Thu Oct 10 02:08:02 2002 From: slipch (slipch) Date: Thu Oct 10 02:08:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: References: <17333538595.20021009192355@gsc-game.kiev.ua> Message-ID: <757664571.20021010120947@gsc-game.kiev.ua> Hello Mattias, Thursday, October 10, 2002, 11:25:42 AM, you wrote: >> Hear is cylinder class for ODE. MF> Hey! Nice job, I tried it out and it seems to work the way it should. MF> I've seen cylinders explode out into space, but only rarely. They must not "explode out". One reason it may happen is well known problem with integration of fast rotating body. Cylinders (as well as Capped Cylinders) must show this problem more often than other bodies especially when radius/length ratio is small. It happen because rotating around an axis with small inertia partly counts as rotating around an axis with large inertia. But it is not a problem of colliders. To resolve it finite rotation axes may be used or simply do not set inertia tensor with strongly different inertia of its axes. It is also should depend on integration step. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From I.Munro at herts.ac.uk Thu Oct 10 02:32:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Thu Oct 10 02:32:02 2002 Subject: [ODE] Community page Message-ID: Mattias wrote: > If anyone wants to see some more evolved life, check out > http://www.cambrianlabs.com/Mattias/Evolved/ , where I use Genetic > Programming to evolve a hopper. Russel, if you want to, you could add > that also. Pretty interesting stuff. I'm doing similar things with a two legged runner and using Mathew Wall's GALIB. Sorry, I haven't got any details online at the moment, but have a look at http://www.bunnyburgers.com/tigger.jpg for a picture of the beast in action. I'd previously used the sort of control systems described by Railbert, but am now trying a sort of limit cycle based approach, where just once per a hop I measure the creatures attitude in space, apply (genetic algorithm generated) weights to all these values, sum them together and the use the resulting number to set the leg velocity for flight. For stance I use the same process but a different set of weights. My reasoning was that the railbert approach might be producing a control system that was fighting against the natural dynamics, whilst a non-prescriptive approach might work in harmony with the dynamics. The down-side is that the system is so non-prescriptive that a lot of time is wasted simulating completely unfeasible control weightings. The creature evolves to hops ok if I use both legs in sync, but I've only just started on the bipedal running strategies, so it's a bit hit and miss at the moment. Cheers Ian From mattias at cambrianlabs.com Thu Oct 10 02:50:01 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 02:50:01 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > Pretty interesting stuff. > I'm doing similar things with a two legged runner and using Mathew > Wall's GALIB. My current implementation evolve NNs unsing the NEAT method. Nothing online yet, though. My next goal is to evolve a snake like object (four bodies connected by three hinges) and then something two legged. I'm trying to use Juice to design the body - great tool Nate! > Sorry, I haven't got any details online at the moment, but have a look > at http://www.bunnyburgers.com/tigger.jpg for a picture of the beast > in action. That looks incredibly cool! I'd love to see him in action. Let us know when you have something to look at! > I'd previously used the sort of control systems described by Railbert, Railbert? Never heard of him, nor could I find any online papers - any links you could send? > My reasoning was that the railbert approach might be producing a > control > system that was fighting against the natural dynamics, whilst a > non-prescriptive approach might work in harmony with the dynamics. The > down-side is that the system is so non-prescriptive that a lot of time > is wasted simulating completely unfeasible control weightings. That's evolution for you. I try very hard to kill the bad systems off as fast as I can. > The creature evolves to hops ok if I use both legs in sync, but I've > only just started on the bipedal running strategies, so it's a bit > hit and miss at the moment. Well, if you want to toss ideas around, I'm game! cheers, m From I.Munro at herts.ac.uk Thu Oct 10 04:02:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Thu Oct 10 04:02:02 2002 Subject: [ODE] Community page Message-ID: Mattias Wrote: > > My current implementation evolve NNs unsing the NEAT method. Nothing > online yet, though. I've thought about NNs but i'm not really upto speed on them. I should really investigate the area more. > > That looks incredibly cool! I'd love to see him in action. > Let us know > when you have something to look at! Sure. Of course you can't see from a still frame the crash that followed 1 second later ;-) > > I'd previously used the sort of control systems described > by Railbert, > > Railbert? Never heard of him, nor could I find any online > papers - any > links you could send? Marc Raibert (sorry, mispelt his name) wrote a book called "legged robots that balance" and was responsible for the major work at the MIT leg lab. http://www.ai.mit.edu/projects/leglab/ (lots of interesting stuff at the site) His main contribution was demonstrating that dynamically unstable robots could be controlled with fairly simple control alogorithms rather than a complete mathematical analysis of the robots dynamics. Previous simulations I've done have been using working model 2d, inspired by the work of John Nagle http://www.animats.com/papers/leggedrun/leggedrun.html But working model 2d was incredibly slow to simulate and communicate with. ODE has been a real eye opener as to how fast simulations can run. It's made life a lot easier. My interests actually lie in making physical robots rather than simulations, but they're a great "what if?" tool. Cheers Ian From p.terdiman at wanadoo.fr Thu Oct 10 04:14:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 04:14:02 2002 Subject: [ODE] Community page References: Message-ID: <005f01c2704d$c6915080$0e00000a@pierre> > My next goal is to evolve a snake like object (four bodies connected by > three hinges) and then something two legged. I'm trying to use Juice to > design the body - great tool Nate! Note that NovodeX provides 2 exporters for MilkShape and MAX (others are planned) that you probably could use for ODE as well. For example, 4 bodies connected by 3 hinges are a piece of cake to build & export from MAX. [I can help here if needed, I wrote the exporter]. Note that this KAT tool I still have to play with looks fine as well. Pierre From mattias at cambrianlabs.com Thu Oct 10 04:30:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 04:30:02 2002 Subject: [ODE] Community page In-Reply-To: <005f01c2704d$c6915080$0e00000a@pierre> References: <005f01c2704d$c6915080$0e00000a@pierre> Message-ID: > > My next goal is to evolve a snake like object (four bodies connected > by > > three hinges) and then something two legged. I'm trying to use Juice > to > > design the body - great tool Nate! > > Note that NovodeX provides 2 exporters for MilkShape and MAX (others > are planned) that you probably could use for ODE as well. I couldn't find the exporters att novodex (is that novODEx?) ;) > For example, 4 bodies connected by 3 hinges are a piece of cake to > build & export from MAX. [I can help here if needed, I wrote > the exporter]. Well, MAX isn't exactly cheap, though milkshape is (and I actually have a license). Any pointers to the exporters? > Note that this KAT tool I still have to play with looks fine as well. I'd love to play with it also, but I'm guessing I'd have to buy the game to download it? cheers, mattias From p.terdiman at wanadoo.fr Thu Oct 10 04:40:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 04:40:02 2002 Subject: [ODE] Community page References: <005f01c2704d$c6915080$0e00000a@pierre> Message-ID: <00bb01c27051$7f8241a0$0e00000a@pierre> > Well, MAX isn't exactly cheap, though milkshape is (and I actually have a > license). Any pointers to the exporters? Download them freely here: http://www.novodex.com/sales.html > I'd love to play with it also, but I'm guessing I'd have to buy the game > to download it? No. http://www.swissquake.ch/chumbalum-soft/files/KAT_1_2_UT2003_Setup.exe Pierre From slipch Thu Oct 10 04:59:02 2002 From: slipch (slipch) Date: Thu Oct 10 04:59:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <757664571.20021010120947@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> Message-ID: <16117962618.20021010150125@gsc-game.kiev.ua> Hello Mattias, Thursday, October 10, 2002, 11:25:42 AM, you wrote: It seems my message has not get through. At least I do not see it back in my Inbox. I send it again. MF> Hey! Nice job, I tried it out and it seems to work the way it should. MF> I've seen cylinders explode out into space, but only rarely. They must not "explode out". One reason it may happen is well known problem with integration of fast rotating body. Cylinders (as well as Capped Cylinders) must show this problem more often than other bodies especially when radius/length ratio is small. It happen because rotating around an axis with small inertia partly counts as rotating around an axis with large inertia. But it is not a problem of colliders. To resolve it finite rotation axes may be used or simply do not set inertia tensor with strongly different inertia of its axes. It is also should depend on integration step. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From mattias at cambrianlabs.com Thu Oct 10 05:13:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 05:13:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <16117962618.20021010150125@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> Message-ID: > Hello Mattias, Hey slipch, it came through fine both times - I haven't replied yet, though. > They must not "explode out". One reason it may happen is well known > problem with integration of fast rotating body. Cylinders (as well as > Capped Cylinders) must show this problem more often than other bodies > especially when radius/length ratio is small. Well, dropping many cylinders in the boxstack demo, every once in a while one will explode. I'm not sure why, but you may be correct. cheers, m From p.terdiman at wanadoo.fr Thu Oct 10 05:19:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 05:19:02 2002 Subject: Re[2]: [ODE] Cylinder colisions References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> Message-ID: <00f801c27056$f27be760$0e00000a@pierre> Are your cylinders real cylinders or capsules ? I assume they're "real" cylinders since you make a difference between them and "capped cylinders". Then you might want to tell Eric Haines about it, for his intersection page. Actually providing a free ODE-independent set of cylinder overlap routines would be very very handy for a lot of people. > They must not "explode out". One reason it may happen is well known > problem with integration of fast rotating body. Cylinders (as well as > Capped Cylinders) must show this problem more often than other bodies > especially when radius/length ratio is small. It happen because > rotating around an axis with small inertia partly counts as rotating > around an axis with large inertia. But it is not a problem of > colliders. > To resolve it finite rotation axes may be used or simply > do not set inertia tensor with strongly different inertia of its axes. I think it can be solved by : - using a better integration scheme (RK4 at least) - clamping angular velocity to a max speed Unless I'm missing something.... I wouldn't tweak the inertia tensor, that's a delicate beast. Seems to work here: www.codercorner.com/Physics.zip (Press 6 to create some bars, then w to make them spin quickly. I can't make it explode here.)(and I hope we're talking about the same problem ;) Pierre From martin at metahuman.org Thu Oct 10 05:27:01 2002 From: martin at metahuman.org (Martin C. Martin) Date: Thu Oct 10 05:27:01 2002 Subject: [ODE] Community page References: Message-ID: <3DA571D5.329A60E7@metahuman.org> Ian Munro wrote: > > Mattias Wrote: > > Marc Raibert (sorry, mispelt his name) wrote a book called "legged robots > that balance" and was responsible for the major work at the MIT leg lab. > > http://www.ai.mit.edu/projects/leglab/ > (lots of interesting stuff at the site) You might also be interested in: http://www-2.cs.cmu.edu/~garthz/research/bowleg/bowleg.html And in particular, the paper "Control of a Bow Leg Hopping Robot." It works similarly to your description, calculating control parameters only once during flight. Stance, on the other hand, is completely passive. - Martin From mattias at cambrianlabs.com Thu Oct 10 06:04:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 06:04:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <00f801c27056$f27be760$0e00000a@pierre> References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> Message-ID: Since slipch himself hasn't answered (yet), I'll throw in an answer; > Are your cylinders real cylinders or capsules ? I assume they're "real" > cylinders since you make a difference between them and "capped > cylinders". slipch created real cylinders for ODE, I refer you to the archive; http://q12.org/pipermail/ode/2002-October/001936.html . If you want the download (it's in mime format in the pipemail archive), I'm sure he'll send it to you; slipch@gsc-game.kiev.ua cheers, mattias From Dominique at SavageSoftware.com.au Thu Oct 10 06:20:02 2002 From: Dominique at SavageSoftware.com.au (Dominique Louis) Date: Thu Oct 10 06:20:02 2002 Subject: [ODE] Silly Question... Message-ID: <3DA57EF7.1070807@SavageSoftware.com.au> Hi all, I have compiled configurator.c manually and would like to know what parameters it requires in order to create the config.h file. I have tried... configurator config\user-settings bcc32 tools\rm.exe on the command line, but it fails to delete the ctest.c file and does not seem to generate correct output. Am I missing something here? Thanks, Dominique. From benny at kramekweb.com Thu Oct 10 06:46:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Thu Oct 10 06:46:02 2002 Subject: [ODE] conveyor belts and moving platforms References: Message-ID: <3DA58E8C.10401@kramekweb.com> David McClurg wrote: > In my game, I'd like to simulate conveyor belts. Looking at the doc, a contact joint using dContactMotion1/2 seems to be the technqiue required. Does anyone have an example of that? I looked in ode/test but couldn't find anything. It's fairly simple. First make sure that you correctly set the fdir1 vector in the dContact structure. Then make sure that you use the dContactFDir1 and dContactMotion1 flags on the surface mode. Then set the correct value for motion1. > Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. > If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? One way is to put very large values in the inertia matrix. This will make the body difficult to rotate. Another, maybe better way, is give your body an inertia of a sphere, and to always have the geom oriented in a fixed orientation. From slipch Thu Oct 10 06:49:02 2002 From: slipch (slipch) Date: Thu Oct 10 06:49:02 2002 Subject: Re[4]: [ODE] Cylinder colisions In-Reply-To: <00f801c27056$f27be760$0e00000a@pierre> References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> Message-ID: <7724552614.20021010165115@gsc-game.kiev.ua> Hello Pierre, Thursday, October 10, 2002, 3:17:04 PM, you wrote: PT> Are your cylinders real cylinders or capsules ? I assume they're "real" PT> cylinders since you make a difference between them and "capped cylinders". PT> Then you might want to tell Eric Haines about it, for his intersection page. PT> Actually providing a free ODE-independent set of cylinder overlap routines PT> would be very very handy for a lot of people. Of course they are "real" cylinders. It is not need to create colliders for capsules because they already exist in ODE. Functions that implement collision for cylinders designed to set contact information to create ODE contact joints. I am not sure that they would be useful in another application. PT> Seems to work here: www.codercorner.com/Physics.zip PT> (Press 6 to create some bars, then w to make them spin quickly. I can't make PT> it explode here.)(and I hope we're talking about the same problem ;) I think yes we are talking about the same problem. Errors may appear anyway due to numeric errors independently of inertia tensor. But when inertia highly asymmetric they rather lead to noticeable result. If angular velocity is not limited it may lead to untwisting to infinite velocity. Unfortunately I can not get the example right now by technical reasons. I'll do it later and I belive I manage to make turning body to explode in any case setting proper parameters and very large velocity. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From benny at kramekweb.com Thu Oct 10 06:58:01 2002 From: benny at kramekweb.com (Benny Kramek) Date: Thu Oct 10 06:58:01 2002 Subject: [ODE] Cylinder colisions References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> Message-ID: <3DA59188.4080906@kramekweb.com> > Of course they are "real" cylinders. It is not need to create > colliders for capsules because they already exist in ODE. Functions that > implement collision for cylinders designed to set contact information > to create ODE contact joints. I am not sure that they would be useful in > another application. Why don't we add the "real" cylinder class directly into ode? From mattias at cambrianlabs.com Thu Oct 10 10:10:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 10:10:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > > My current implementation evolve NNs unsing the NEAT method. Nothing > > online yet, though. > > I've thought about NNs but i'm not really upto speed on them. I should > really investigate the area more. NNs are tricky, if you want to do any kind of "fancy" (backpropagation) learning. Evolving NNs is almost trivial. Picking the right network topology is the the tricky part. The method I use, NEAT, evolves topology AND network weights, that's harder to implement. Now, if you want to _understand_ NNs, that's another thing completely... cheers, m From Alan_Gordie at payformance.com Thu Oct 10 11:30:02 2002 From: Alan_Gordie at payformance.com (Alan Gordie) Date: Thu Oct 10 11:30:02 2002 Subject: [ODE] coldet and ode Message-ID: I'm still catching up on two weeks of past list messages, but that is awesome news! Thanks, Pierre! -----Original Message----- From: Pierre Terdiman [mailto:p.terdiman@wanadoo.fr] Sent: Friday, October 04, 2002 5:21 PM To: ode@q12.org Subject: Re: [ODE] coldet and ode > I'd personally give Opcode a shot if it was more portable. (There > doesn't seem to be an ANSI C/C++ target in the source). Well, various people ported it to Linux and made it "more portable". On top of my head : in the F4 engine, in The Nebula Device, in Crystal Space, in ... ODE... Some more people sent me tar.gz files with makefiles and required changes to build Opcode "elsewhere". I don't know if they work well since I have a Windows box, period, but I can upload such an archive if ... Hell, let's just do it, wait 5 mn. ... Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm Words from the author : "This version is indeed different than those contained in F4 or ODE because it is only a direct linux port of version 1.2 of OPCODE, it contains nothing more, nothing less so a user does not have to deal with F4 or ODE. It is also accompanied with a so called configure script which automatically creates a makefile for the user's specific platform. It's just a question of running the configure script and automake and OPCODE is build for your platform (e.g. linux, solaris, irix etc). This is the correct way on unix flavoured oss to spread software." Questions about it ? Ask the author, please. (his mail is in the tar file) > Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff > in the mix) whereas ColDet compiles on just about anything, without > modification. Note that there's a #define to discard the ASM, and the only relevant VC++ stuff, as far as Opcode is concerned, is "__forceinline". Pierre _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From kaffiene at xtra.co.nz Thu Oct 10 13:33:02 2002 From: kaffiene at xtra.co.nz (Peter) Date: Thu Oct 10 13:33:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005B9@ednex504.dsto.defence.gov.au> Message-ID: <007101c2709c$243494b0$5c02a8c0@peter> > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf Of McEvoy, > Nick > Sent: Friday, 13 September 2002 11:49 a.m. > To: 'ode@q12.org' > Subject: [ODE] RE: Wheel rotation problem > > Marco Grubert wrote: > >My observations is that mass of the connected objects has a huge impact > on > >stability. I started out with a 500kg chassis and 15kg wheels. Reducing > this > >to 1/10th of the original value significantly improved the top speed when > >wheel bending occurs. It appears as though the object mass would increase > >with higher speed, pushing the wheels into a /\ shape when driving > straight > >or a // shape when doing a left turn. > > // Chassis > CLength = 0.7f; > CWidth = 0.5f; > CHeight = 0.2f; > CMass = 1.0f; > > // Wheels > WRadius = 0.15f; > WMass = 0.2f; > > Gravity=-5.0f; // yes a strange value but who said my game is on earth :) > > I'll do some more parameter tweaking. :) > > > >I have not yet tried moving the hinge2 > >anchor points around- does that make any difference? > > No I have not tried that idea yet. > > > >I did not notice any difference when setting the finite rotation mode. > >However, the documentation suggests setting the axis every timestep > (which > >you don´t do in the sample code). > > I see that in the doco ... NOW ... missed it before ... so > dBodySetFiniteRotationAxis() should be call each step !? I'll try that > then. > > > >I don´t quite understand how this mode > >operates or why the axis has to be reset. Why should it change during > >iterations ? > > Yes good question (why call each time step) ... I don't understand it > either > ... I'm no physics guru. :-( > > > >How are you adjusting the axes´ angles? I had this problem when only > >querying one wheel, calculating the difference and then applying the same > >value to both joints. Calculating the rate of change independently for > each > >of the two front joints fixed that problem. > > Ahhh your right on this one I think ... I was calculating each wheel > (steering) independently. I'll fix it this weekend. > > // Motor > for (i = 0; i <= 1; i++) > { > dJointSetHinge2Param(mODEJoint[i], dParamVel2, -speed); > dJointSetHinge2Param(mODEJoint[i], dParamFMax2, 0.1); > } > > // Steering - woops this is wrong ... I'll fix it as per your suggestion > !!! > for (i = 0; i <= 1; i++) > { > dReal v = steer - dJointGetHinge2Angle1(mODEJoint[i]); > if (v > 0.1) v = 0.1; > if (v < -0.1) v = -0.1; > v *= 10.0; > dJointSetHinge2Param(mODEJoint[i], dParamVel, v); > dJointSetHinge2Param(mODEJoint[i], dParamFMax, 0.2); > dJointSetHinge2Param(mODEJoint[i], dParamLoStop, -0.75); > dJointSetHinge2Param(mODEJoint[i], dParamHiStop, 0.75); > dJointSetHinge2Param(mODEJoint[i], dParamFudgeFactor, 0.1); > } > Nick, did any of these experiments work? (i.e. get rid of the wheel-bending problem)? Cheers, Peter. From coding at natew.com Thu Oct 10 14:07:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 10 14:07:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: On Thu, 10 Oct 2002, Ian Munro wrote: > My interests actually lie in making physical robots rather than simulations, > but they're a great "what if?" tool. Be careful... That's exactly how I felt when I started planning the software that became Juice. Now I've lost all interest in making something I can touch. :-) I'm really enjoying the discussion of evolved behaviors. In Juice, a creature's movements are basically just sine waves of different phases and amplitudes applied to joints, and feedback loops from a body's orientation to one or more joints. I've been pondering a training feature to try using a GA to adjust the phases, amplitudes, and gains, but haven't actually implemented anything yet. I'm hoping it will smooth out gaits that have been designed by hand. I've come to the conclusion that this method of programming behavior creates creatures that tip over too easily though, so most of my time lately has gone into designing a new behavior programming language. -- Nate Waddoups Redmond WA USA http://www.natew.com From mattias at cambrianlabs.com Thu Oct 10 14:34:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 14:34:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > I'm really enjoying the discussion of evolved behaviors. In Juice, a > creature's movements are basically just sine waves of different phases > and > amplitudes applied to joints, and feedback loops from a body's > orientation > to one or more joints. Check out http://www.ventrella.com/GenePool/gene_pool.html, it's a 2d program that evolves both structure and behaviour - but the behaviour is basically offset, phase and amplitude. LimbAngle = offset + sin(Time + Phase) * Amplitude; Quite similar to what you're describing. Jeffrey's also written several interesting papers about evolving articulated agents. > I've been pondering a training feature to try > using a GA to adjust the phases, amplitudes, and gains, but haven't > actually implemented anything yet. I'm hoping it will smooth out gaits > that have been designed by hand. I'm guessing you could have a GA running in a matter of days. Contact me off the list if you're interested in some ideas on that ;) > I've come to the conclusion that this method of programming behavior > creates creatures that tip over too easily though, so most of my time > lately has gone into designing a new behavior programming language. Your creatures are very complex, GAs could probably do a good job there. cheers, m From anselm at hook.org Thu Oct 10 15:31:02 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 10 15:31:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: > > I've come to the conclusion that this method of programming behavior > > creates creatures that tip over too easily though, so most of my time > > lately has gone into designing a new behavior programming language. This sounds interesting - any links up yet? What kinds of features does your language make it easier to express? - a From dmcclurg at pandemicstudios.com.au Thu Oct 10 17:30:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 10 17:30:02 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: Benny Kramek wrote: >> If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? > One way is to put very large values in the inertia matrix. This will make the body difficult to rotate. you mean like a large mass? > Another, maybe better way, is give your body an inertia of a sphere, how is that done? > and to always have the geom oriented in a fixed orientation. by setting the rotation every frame in the app? or is there another way to constrain orientation? thanks for your help on conveyer/platform questions! From russ at q12.org Thu Oct 10 22:39:01 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 10 22:39:01 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <3DA59188.4080906@kramekweb.com> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> <3DA59188.4080906@kramekweb.com> Message-ID: <20021010224329.65a1dbdd.russ@q12.org> This is a multi-part message in MIME format. --Multipart_Thu__10_Oct_2002_22:43:29_-0400_0839c960 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit > Why don't we add the "real" cylinder class directly into ode? the non-capped cylinder code is a good chunk of work, but i think it's work-in-progress. there are a few current problems, especially with cylinder-cylinder contact. the attached image illustrates the problem - it is possible (in fact rather easy) to put two cylinders into a configuration where the contact point (the blue box) does not even intersect one of the cylinders. this is IMO a big error. having said that, this cylinder work is a great step in the right direction. even with the errors it can be useful for many people. i'll add it to the contrib directory for now. thanks konstantin! to explain why i think this error is a problem: the ODE scheme of contact points/normals/depths is of course just an approximate way of representing contact between two objects. to reduce the approximation error, all the current contact code tries to put the contacts somewhere inside the intersection volume, in positions that will (a) preserve non-penetration and (b) not generate unnecessary body motion (no extra energy allowed!). the cyl-cyl contacts often do not meet these conditions. if you integrate cylinders into the box stacking demo and stack them up you'll see that this error causes them to jitter and pop way more than even the stacked boxes (which themselves jitter because of another well understood reason). i spent a lot of time on the current primitive-primitive collision code to prevent exactly this sort of thing. in some cases, like the capped-cyl-to-box code, i had to go through quite a few different schemes before i got it (hopefully) right. russ. -- Russell Smith http://www.q12.org --Multipart_Thu__10_Oct_2002_22:43:29_-0400_0839c960 Content-Type: application/octet-stream; name="foo4.jpg" Content-Disposition: attachment; filename="foo4.jpg" Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gDtQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEwYSAgUmV2OiAx Mi8yOS85NApDUkVBVE9SOiBYViBWZXJzaW9uIDMuMTBhICBSZXY6IDEyLzI5Lzk0CkNSRUFUT1I6 IFhWIFZlcnNpb24gMy4xMGEgIFJldjogMTIvMjkvOTQKQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEw YSAgUmV2OiAxMi8yOS85NAoKQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEwYSAgUmV2OiAxMi8yOS85 NCAgUXVhbGl0eSA9IDc1LCBTbW9vdGhpbmcgPSAwCv/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsM GRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0N GDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/A ABEIAIEBNgMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAAC AQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZ GiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOU lZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAAB AncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Sl pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEA AhEDEQA/APZr+51GO8dbc4jGMcD0FV1vNUzh2ZffYpH8qNT1RrXUZY/4RjHPsKptrQYcrkezYr0I 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 --Multipart_Thu__10_Oct_2002_22:43:29_-0400_0839c960-- From russ at q12.org Thu Oct 10 23:08:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 10 23:08:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: <20021010231205.1f8bd682.russ@q12.org> > Russel, if you'd like, please add > http://www.cambrianlabs.com/Mattias/DelphiODE/ to the community page? done. russ. -- Russell Smith http://www.q12.org From dmcclurg at pandemicstudios.com.au Thu Oct 10 23:36:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 10 23:36:02 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: Benny Kramek wrote: >> Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? > Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. I created a box geom with a body and dropped a sphere geom with a body on it. There sphere comes to rest on the box while the box moves back and forth (on a sine wave with SetVel) underneath it. But the sphere doesn't move back and forth with the box!! Friction doesn't seem to give the sphere any motion. I tried infinite and 1.0 friction with the same results. contacts[i].surface.mode = dContactBounce; contacts[i].surface.mu = 1.f; //dInfinity; contacts[i].surface.mu2 = 0.f; contacts[i].surface.bounce = 0.5f; contacts[i].surface.bounce_vel = 0.01f; dJointID c = dJointCreateContact(world, contactGroup, &contacts[i]); dJointAttach(c, b1Contact, b2Contact); Any idea why this isn't working? From bongard at ifi.unizh.ch Fri Oct 11 01:18:02 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Fri Oct 11 01:18:02 2002 Subject: [ODE] Evolved behaviours In-Reply-To: Message-ID: As there seems to be quite a bit of discussion about NNs and evolved behaviours on the mailing list these days, I'd like to direct your attention to a physical simulation overlay I developed called MorphEngine (www.ifi.unizh.ch/ailab/people/bongard/MorphEngine/). For those of you in the know, and before you start throwing rotten fruit at me, this overlay uses MathEngine, not ODE, but I've almost finished porting it to ODE, and will post it up when I do. The program runs as an .exe standalone on Windows, but my documentation includes a brief introduction to NNs, GAs and evolved behaviours, and how they relate to the physical simulation of robots. Cheers, Josh On Thu, 10 Oct 2002, Nate W wrote: > On Thu, 10 Oct 2002, Ian Munro wrote: > > > My interests actually lie in making physical robots rather than simulations, > > but they're a great "what if?" tool. > > Be careful... That's exactly how I felt when I started planning the > software that became Juice. Now I've lost all interest in making > something I can touch. :-) > > I'm really enjoying the discussion of evolved behaviors. In Juice, a > creature's movements are basically just sine waves of different phases and > amplitudes applied to joints, and feedback loops from a body's orientation > to one or more joints. I've been pondering a training feature to try > using a GA to adjust the phases, amplitudes, and gains, but haven't > actually implemented anything yet. I'm hoping it will smooth out gaits > that have been designed by hand. > > I've come to the conclusion that this method of programming behavior > creates creatures that tip over too easily though, so most of my time > lately has gone into designing a new behavior programming language. > > -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From slipch Fri Oct 11 06:15:02 2002 From: slipch (slipch) Date: Fri Oct 11 06:15:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <20021010224329.65a1dbdd.russ@q12.org> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> <3DA59188.4080906@kramekweb.com> <20021010224329.65a1dbdd.russ@q12.org> Message-ID: <1279165509.20021011161705@gsc-game.kiev.ua> Hello Russ, Friday, October 11, 2002, 5:43:29 AM, you wrote: I know about this error. It happens when cylinders' edges touches. There is still a warranty that the contact point is near the place where it should be. It was not an error in my eyes I only wanted to reduce calculations. I'll think how to fix it. -- Best regards, Konstantin mailto:slipch@gsc-game.kiev.ua From benny at kramekweb.com Fri Oct 11 06:42:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Fri Oct 11 06:42:02 2002 Subject: [ODE] conveyor belts and moving platforms References: Message-ID: <3DA6DF4A.60903@kramekweb.com> > >>>Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? >>> > >>Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. >> > > I created a box geom with a body and dropped a sphere geom with a body on it. There sphere comes to rest on the box while the box moves back and forth (on a sine wave with SetVel) underneath it. But the sphere doesn't move back and forth with the box!! > > Friction doesn't seem to give the sphere any motion. I tried infinite and 1.0 friction with the same results. > This is a known thing with ode. A ball that is rolling on the ground will never slow down, even if there is friction. Try replacing the sphere with a box. Also, you shouldn't change the velocity of the platform with dBodySetVel(). This is not the correct way to do things. You should only apply forces. If you want to give a body a certain velocity you should use a motor. From p.terdiman at wanadoo.fr Fri Oct 11 06:49:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 11 06:49:02 2002 Subject: [ODE] Community page References: <005f01c2704d$c6915080$0e00000a@pierre> <00bb01c27051$7f8241a0$0e00000a@pierre> Message-ID: <007201c2712c$89469840$0e00000a@pierre> > > I'd love to play with it also, but I'm guessing I'd have to buy the game > > to download it? > > No. > http://www.swissquake.ch/chumbalum-soft/files/KAT_1_2_UT2003_Setup.exe Argh ! I was just told that KAT was *not* free. You were right, you actually have to buy the game indeed, to be able to use it. Sorry.... I thought it was a public link. Needless to say, the file has been removed. You're lucky anyway : UT2003 is a good game so there shouldn't be any reason not to buy it :) (Hey, I'm kidding) Pierre From max.lungarella at aist.go.jp Fri Oct 11 10:46:01 2002 From: max.lungarella at aist.go.jp (Max Lungarella) Date: Fri Oct 11 10:46:01 2002 Subject: [ODE] robotic simulation Message-ID: <3DA70D4E.725824C6@aist.go.jp> hi there, "dynamechs" is a dynamics engine, mainly intended for robotics simulation (http://dynamechs.sourceforge.net/). recently i've given it a try, and although i appreciate very much it's speed, i have the impression, that it's rather hard to construct complex structures - like robots. is there anything that would prevent the use of ODE for the same purpose? i.e., robotic simulation? is there anybody that has tried to do a quantitative comparison between different physics engines, in terms of accuracy, which is kind of important in this case? or does anybody have interesting pointers to relevant literature? thank you very much in advance!! cheers, max -- Max Lungarella Neuroscience Research Institute Tsukuba AIST Central 2 Umezono 1-1-1, Tsukuba 305-8568 Japan Tel +81-298-615369 Fax +81-298-615841 http://www.lungarella.com/max/ From wristy_j at yahoo.com Fri Oct 11 12:06:01 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Fri Oct 11 12:06:01 2002 Subject: [ODE] Old Cholesky factorization code Message-ID: <20021011190523.22176.qmail@web40810.mail.yahoo.com> Greetings, In the code where the Dantzig LCP solver takes over (after the A matrix and rhs vector have been determined), I noticed that there is a commented call to a Cholesky factorizor and solver. In block-matrix form (where each entry is a matrix of the form J*InvM*Jt), I realize that the A matrix is block-symmetric, BUT, I was wondering... Are the diagonal entries of the block A matrix themselves actually symmetric (J*InvM*Jt) even after the body has undergone rotations, making the inverse inertia tensor non-symmetric? If not, the Cholesky decomp wouldn't work, correct? In other words, did the Cholesky decomp ever work properly for A? Or was it just ditched to incorporate LCP constrains (contacts with friction)? Thanks! J __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From mfdubois at club-internet.fr Fri Oct 11 12:25:02 2002 From: mfdubois at club-internet.fr (Michel DUBOIS) Date: Fri Oct 11 12:25:02 2002 Subject: [ODE] Problem with AngularMortor and BallAndSocket Message-ID: <84CB8473VQPNRP42MH96PO43QOECWSI.3da7258c@MD_PC_02> Hello, I am a newbie in ODE and C++. First I developed a simulator in Java3d with threads and now I am porting it in ODE/Drawstuff to have physics. My project is to simulate a mobile robot named an atom who can be composed with identical robot to become a molecul. An atom is mainly a body (a square box) with 6 legs (left, right, top,bottom, front and rear).A leg can rotate with 2 axis. A leg can be attached with the leg of an other atom. A molecul is one atom or more than one atom. In ODE, an atom is a box with 6 legs. A leg is 2 boxes (or cylinders ..) with a slider. I think, a BallAndSocket joint with angular motor joint can attach the body with a leg. But I afraid, I don't understand the angular motor in user mode. First the stop limit seems not to be effective. And the axis seems to be relative to the gobal frame not to the body. When the body rotate, the legs seems to rotate with a strange maner. I think i have the same problem than Tim Schmidt in july. The rotations behave as if the axes are anchored to the global frame, whatever the orientation of the first body looks like. May be someone have a solution to my problems ? Michel DUBOIS From Sean at Blackscreen.org Fri Oct 11 12:31:02 2002 From: Sean at Blackscreen.org (Sean S Cullen) Date: Fri Oct 11 12:31:02 2002 Subject: [ODE] Box Box Algorithm Message-ID: <45177.24.91.219.122.1034364764.squirrel@mail.blackscreen.org> I thought I remembered someone implementing a version of dBoxBox that will compute more than a single collision point. Is there any chance of getting that put into CVS? From coding at natew.com Fri Oct 11 13:21:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 11 13:21:02 2002 Subject: [ODE] robotic simulation In-Reply-To: <3DA70D4E.725824C6@aist.go.jp> Message-ID: On Sat, 12 Oct 2002, Max Lungarella wrote: > "dynamechs" is a dynamics engine, mainly intended for robotics > simulation (http://dynamechs.sourceforge.net/). recently i've given it > a try, and although i appreciate very much it's speed, i have the > impression, that it's rather hard to construct complex structures - > like robots. When I set out to write a robot simulator (see http://www.natew.com/juice), I looked at both Dynamechs and ODE, and chose ODE for the reason you describe above. In retrospect, I think that Dynamechs would probably only be slightly more difficult to work with. Using ODE, you can created bodies and joints and connect them arbitrarily and everything just works. With Dynamechs, my understanding is that any closed loops need to be handled as special cases. In retrospect, I think that would probably be almost trivial to deal with. If you think of the structure as a graph, where bodies are nodes and joints are edges, you would just create the Dynamechs objects by traversing the graph, and when you find a cycle in the graph (easily detectable), you create one of Dynamechs' "secondary" joints. From an application-development point of view, ODE allows you to create ODE's joints objects without worrying about closed loops; Dynamechs would require you to examine the topology of the structure you're creating before you create the joints objects. > is there anything that would prevent the use of ODE for the same > purpose? i.e., robotic simulation? How detailed do you want the simulation to be? I was looking for a high-level sort of simulation, treating motors and drivetrains as black boxes and just looking at the overall structure of the robot and its control system, and I'm very happy with ODE's performance in this case. -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Sat Oct 12 12:16:01 2002 From: russ at q12.org (Russ Smith) Date: Sat Oct 12 12:16:01 2002 Subject: [ODE] Old Cholesky factorization code In-Reply-To: <20021011190523.22176.qmail@web40810.mail.yahoo.com> References: <20021011190523.22176.qmail@web40810.mail.yahoo.com> Message-ID: <20021012121947.20fed8dc.russ@q12.org> > In block-matrix > form (where each entry is a matrix of the form > J*InvM*Jt), I realize that the A matrix is > block-symmetric, BUT, I was wondering... Are the > diagonal entries of the block A matrix themselves > actually symmetric yes: A = J*inv(M)*J' A' = (J*inv(M)*J')' = (J')' * inv(M)' * J' = J*inv(M)'*J' each 6x6 block of M contains a diagonal 3x3 matrix (the mass) and a 3x3 transformed inertia tensor I*. I* = R*I*R' I*' = R*I'*R' I (the inertia tensor) is symmetric, so I* is symmetric, so M is symmetric, so A is symmetric. > In other words, did the Cholesky decomp ever work > properly for A? Or was it just ditched to incorporate > LCP constrains (contacts with friction)? cholesky is not used, i use the L*D*L' factorization instead - but this also needs a symmetric matrix. the LDLT factorization is used on the sub-matrix of A that does not have LCP constraints, then LCP is used incrementally on the rest. russ. -- Russell Smith http://www.q12.org From nathan at whatever.net Sat Oct 12 19:10:02 2002 From: nathan at whatever.net (Nate Waddoups) Date: Sat Oct 12 19:10:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: On Thu, 10 Oct 2002, Anselm Hook wrote: > > > I've come to the conclusion that this method of programming behavior > > > creates creatures that tip over too easily though, so most of my time > > > lately has gone into designing a new behavior programming language. > > This sounds interesting - any links up yet? What kinds of features does > your language make it easier to express? No links yet, just some sketches on paper right now. The main problem with the current language is that it allows you to design one behavior, and it will behave according to that "script" no matter what. If the critter falls over, it thrashes about like a fallen wind-up toy (only worse because wind-up toys don't usually have attitude sensors that suffer from gimbal lock). I put script in quotes because the behavior is specified as a directed graph, but it gets compiled down to a script-like sequence of instructions. Anyhow, there's two main features I have in mind for the next version: The main thing is that each behavior will be paired with a "context" function, yielding a value from 0 to 1. The context for a walking behavior might be a relatively upright torso, the hips higher than the feet, and so on. The outputs of the script will be multiplied by the context value. Under the appropriate conditions, the behavior script runs as usual; if the critter is standing on its head, the "walk" script has no effect; if it's leaning heavily to one side, it will only try to take small steps forward (meanwhile, the context is right for a "stand up straight" behavior to take effect...). Second, I want to be able to coordinate a whole bunch of behaviors. This is the part I'm still thinking through. The "context idea addresses part of the problem, particularly at the scale of motor control. But big decisions like "walk, run or crawl?" or "chase or flee?" have me looking for ways to create a hierarchy of behaviors, or fuzzy cognitive maps, or a subsumption approach. I have a bunch of ideas here... part of the problem is I'm not sure which to try first and I'm trying to think of a grand scheme that uses all of them - and yet, is still easy to work with. Mostly I think I need to do more reading. Meanwhile I want to revise my document object model a bit so I can implement undo/redo more easily, and integrate Novodex physics and CD, and create a network interface to Juice so I can implement the new behavior (and editor) as a separate application... and, and, and. So many ideas, so little time. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From max.lungarella at aist.go.jp Sat Oct 12 21:03:01 2002 From: max.lungarella at aist.go.jp (Max Lungarella) Date: Sat Oct 12 21:03:01 2002 Subject: [ODE] robotic simulation References: Message-ID: <3DA8EF87.778199E3@aist.go.jp> hi there, thanks for replying. > When I set out to write a robot simulator (see > http://www.natew.com/juice), i tried "juice", it's pretty cool, and well designed. the only problem that i have with it, is that i cannot export the models i realize. in other words, it would be neat if i could construct something using juice, and be able to import this something in one of my own programs. do you have plans do add similar feature? > Using ODE, you can created bodies and joints and connect them arbitrarily > and everything just works. With Dynamechs, my understanding is that any > closed loops need to be handled as special cases. In retrospect, I think > that would probably be almost trivial to deal with. If you think of the > structure as a graph, where bodies are nodes and joints are edges, you > would just create the Dynamechs objects by traversing the graph, and when > you find a cycle in the graph (easily detectable), you create one of > Dynamechs' "secondary" joints. yep. the only problem, that i have with this approach, is that almost the whole body is some sort of special case - read "hack" - and therefore less intuitive to design. i tried to use dynamechs and i still don't grasp it completely. ode is so easy to use and also aesthetically more pleasant ;) > How detailed do you want the simulation to be? my plan is to simulate a humanoid robot with a reduced number of degrees of freedom, let's say 10. the simulation would have to be fairly accurate, since i'd like to develop the control architecture in software and use this very architecture for the control of a real robot in a second time step. the modeling of the motors does not worry me as much as the modeling of the ground reaction forces, since the feet of my biped robot are not hard, but kind of soft and deformable. cheers, max -- Max Lungarella Neuroscience Research Institute Tsukuba AIST Central 2 Umezono 1-1-1, Tsukuba 305-8568 Japan Tel +81-298-615369 Fax +81-298-615841 http://www.lungarella.com/max/ From johnb003 at hotmail.com Sun Oct 13 00:19:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 00:19:02 2002 Subject: [ODE] Slightly More Complex Car Shocks Simulation Message-ID: I am working on a racing game and to start with I made a hovercraft to avoid using joints and figuring out what works and what doesn't, but now I am working on my rc10 and I've got some problems. Here is the page for my game, I've got a picture of the vehicle on the 'home page': http://web.csuchico.edu/~jb393/urgent Ok so my problem is that I have a few more moving parts than the standard buggy problem. The top red axel thing I am treating as the same body as the carbody, the moving parts are, the wheel, the spring/shock, and the lower axel. So it's really just a puzzle of how to put it together. Let me ask this first, there will likely be a lot of torque and quick movements since the masses are so small, being an remote controlled car, so would it be better to use fewest joints (like one hinge2 joint) and set the other positions manually and rotations manually based on the position of the wheel and body, or maybe add extra joints to add support. For example, with a large mass ratio like that of my lower axel and the carbody, if I use a regular hinge with some axis and apply a force along the same axis but translated out to add leverage, would that hinge want to break. An analogy would be hanging on a cupboard cabinet with all of your weight. Instead of using a hinge then, you could construct a seemingly more stable structure by making a triangle with ball joints, like this where F is the force and y is the vertical axis: |O | \ | \ y O | / ^ | / |F |O | Something I didn't mention, since I was trying to keep things simple is that I made a scripting interface to the physics that corresponds to a 3ds file. This means any kind of hack like setting the position of the shock based on the wheel, I would like to avoid so the scripts can correspond to the existing physics. If it truly is the best solution, I could add my own special kind of joints, I suppose, and make them available for the scripts. The method of connecting the bodies I've been experimenting is as follows: wheel->hinge2joint->shock, shock->sliderjoint(vertical axis)->carbody just this has a lot of error; the shock->sliderjoint->carbody doesn't maintain it's orientation with the carbody (it falls off it's axis) then for the bottom axel I needed a joint that only restricts 2 positional degrees of freedom, it's a combo of a balljoint and a slider... looks like this X====|----O it's kind of a "look at" joint. I would just make fake bodies, and by that I just mean bodies that don't have any corresponding model to draw, or no physical matter but I was scared to use 0 for a mass so they just have very small masses. Ok this post is getting long, I'll leave it at that. _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From johnb003 at hotmail.com Sun Oct 13 07:53:01 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 07:53:01 2002 Subject: [ODE] Springs Message-ID: If I want a shock between two bodies, would it be more efficient to use calculate the simple spring physics and apply direct forces to the bodies, or create some kind of joint and use CFM and ERP to make it soft? Also can someone clarify for me a bit more about ERP and CFM. What values make them behave which way and what purpose do they serve for ode exactly? Thanks, John Butterfield _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From jeffreyweber at hotmail.com Sun Oct 13 12:45:02 2002 From: jeffreyweber at hotmail.com (Jeff Weber) Date: Sun Oct 13 12:45:02 2002 Subject: [ODE] Springs Message-ID: I believe all that info is in the ode document. somewhere it explains how to use cfm and erp to mimick spring. ----Original Messa ge Follows---- From: "John Butterfield" To: ode@q12.org Subject: [ODE] Springs Date: Sun, 13 Oct 2002 07:52:48 -0700 If I want a shock between two bodies, would it be more efficient to use calculate the simple spring physics and apply direct forces to the bodies, or create some kind of joint and use CFM and ERP to make it soft? Also can someone clarify for me a bit more about ERP and CFM. What values make them behave which way and what purpose do they serve for ode exactly? Thanks, John Butterfield _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/od _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From martin at metahuman.org Sun Oct 13 13:17:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Sun Oct 13 13:17:02 2002 Subject: [ODE] Springs References: Message-ID: <3DA9D499.726503D7@metahuman.org> Hey John, I think the best test is, will the spring force change significantly in one time step? If so, you'd probably be better off with a constraint (i.e. a joint). If not, applying a force/torque using simple spring physics is probably better. John Butterfield wrote: > > Also can someone clarify for me a bit more about ERP and CFM. What values > make them behave which way and what purpose do they serve for ode exactly? That's answered in the ODE docs. It even tells you how to convert ERP and CFM values to spring parameters and back. - Martin From johnb003 at hotmail.com Sun Oct 13 20:42:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 20:42:02 2002 Subject: [ODE] Hinge Forces Message-ID: I drew a picture to help illustrate my problem: http://web.csuchico.edu/~jb393/urgent/images/hingeforce.gif If I apply force F to body m2, and it has one hinge joint to m1, will there be a much larger error than if I make another joint like in the picture? Is it better to represent the dynamics as simple as I can, or with a more structurally sound design? _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From russ at q12.org Sun Oct 13 21:18:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 13 21:18:01 2002 Subject: [ODE] Hinge Forces In-Reply-To: References: Message-ID: <20021013212244.21c5a8f6.russ@q12.org> > If I apply force F to body m2, and it has one hinge joint to m1, will > there be a much larger error than if I make another joint like in the > picture? the answer is that the configuration on the left is the correct one. one hinge joint is all you need to resist *any* amount of force that tries to push the hinge out of alignment. ODE does not model the breakable hinges that you buy from the hardware store, it models ones that are infinitely strong. having said this, from time to time you may see joints come slightly out of alignment, but this error usually has nothing to do with the forces that are applied to them. reasons for error might be: * the rotation of the joined bodies per timestep is large. * CFM is too high (this will give you "spongy" joints). * there is numerical error caused by redundant constraints. the configuration on the right side of your picture falls into this last category - you have two joints trying to do the same job (i.e. trying to limit the same degree of freedom) so this can cause numerical error (especially if CFM is small) and totally ruin the simulation. > Is it better to represent the dynamics as simple as I can, or with... as in most things, keeping it simple is best. but, as in most things, figuring out what the simple solution is can by tricky. russ. -- Russell Smith http://www.q12.org From johnb003 at hotmail.com Mon Oct 14 00:17:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 00:17:02 2002 Subject: [ODE] timestep Message-ID: Is there any harm in using variable times for the worldstep? I'd like to make things based on time not framerate and if I must use a constant time interval it seems like I'd have to use mutliple threads which would then cause the need for symaphores and it gets ugly from there. If I do a loop each frame for the amount of time that has passed, then I have large errors since the time passed could be like 1.5 times the time step. I just thought of an idea of truncating and adding the remainder to the next frame. But then I can imagine it being jerky. The best solution I can think of would be if I could just use variable time steps. _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From Tomas.Sakalauskas at axel-group.com Mon Oct 14 02:50:02 2002 From: Tomas.Sakalauskas at axel-group.com (Tomas Sakalauskas) Date: Mon Oct 14 02:50:02 2002 Subject: [ODE] timestep Message-ID: Each frame I tried to make as much complete steps as possible and then in the end perfom step equal to remaining time. I got problems when very small time steps were remaining. Then I added the time to next frame and used fixed timesteps, but either precision was not good enough or I had to use small timesteps, but then it consumed too much CPU. Variable timesteps seem to be ok if the variation is relatively small (or actually if minimal timesteps do not get close to 0). For this I have two timesteps defined - normal and minimal. Each frame I try to make as much normal steps as possible, if remaining time is more than minimal, I perform timestep equal to remaining time, otherwise I add the remainder to next frame. This way I can control both CPU consumption and precision of simulation - time error gets no bigger than minimal step. Writing this message, came up with the following strategy: - let T be the time needed to simulate. - calculate how many full steps you can perform this frame - N, - perform N timesteps lasting T/N, if N=0 and T is too small, just add it to next frame. This way timestep varies a little (but gets no more than DESIRED_STEP*2), and you get small time error only in the case that framerate is faster than minimal timestep you allow. If you' make N+1 steps lasting T/(N+1) instead, you will get range (DESIRED_STEP/2, DESIRED_STEP]. Hope that helps, Tomas -----Original Message----- From: John Butterfield [mailto:johnb003@hotmail.com] Sent: Monday, October 14, 2002 9:17 AM To: ode@q12.org Subject: [ODE] timestep Is there any harm in using variable times for the worldstep? I'd like to make things based on time not framerate and if I must use a constant time interval it seems like I'd have to use mutliple threads which would then cause the need for symaphores and it gets ugly from there. If I do a loop each frame for the amount of time that has passed, then I have large errors since the time passed could be like 1.5 times the time step. I just thought of an idea of truncating and adding the remainder to the next frame. But then I can imagine it being jerky. The best solution I can think of would be if I could just use variable time steps. _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Mon Oct 14 09:54:01 2002 From: coding at natew.com (Nate W) Date: Mon Oct 14 09:54:01 2002 Subject: [ODE] timestep In-Reply-To: Message-ID: On Mon, 14 Oct 2002, John Butterfield wrote: > Is there any harm in using variable times for the worldstep? I use variable timesteps in Juice, and it works fine. The interval between calls to dWorldStep depends on the time it took to call dWorldStep and re-draw the scene. Simple scenes get fast frame rates, complex structures with lots of joints get lower frame rates, and really really complex situations get really low frame rates and they start to act funny. I'm not aware of a really graceful way to handle running out of CPU power though. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Mon Oct 14 10:54:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 14 10:54:02 2002 Subject: [ODE] timestep In-Reply-To: Message-ID: > Is there any harm in using variable times for the worldstep? in theory there shouldn't be, in practice there is one small problem. if you take a small step then follow it by a much larger step then then any error-correcting velocity that was applied to the bodies in the first step will be extrapolated into a much larger velocity in the second step, potentially causing bodies to 'pop' away from each other. this problem has been on my list of things to fix for a while - i have a fix that should work well but will take time to implement (the underlying cause of the problem is rather subtle). russ. -- Russ Smith http://www.q12.org/ From ps_yumemi at yahoo.com Mon Oct 14 11:21:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 14 11:21:02 2002 Subject: [ODE] networking Message-ID: <20021014182023.92351.qmail@web40508.mail.yahoo.com> hello, i have a problem networking my ode robot simulator program. the program shows robots from different computers but they do not collide with each other. instead they go through each other. i created both of them using the same functions but they don't seem see each other. what could be wrong with my program? is it nearcallback or some other function? thanks pia __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From coding at natew.com Mon Oct 14 15:47:02 2002 From: coding at natew.com (Nate W) Date: Mon Oct 14 15:47:02 2002 Subject: [ODE] networking In-Reply-To: <20021014182023.92351.qmail@web40508.mail.yahoo.com> Message-ID: On Mon, 14 Oct 2002, pia dalusong wrote: > i have a problem networking my ode robot simulator > program. the program shows robots from different > computers but they do not collide with each other. Are geom objects being created and sized and positioned correctly for all of the bodies? Are all of the geom objects in the same space? When I was having trouble with collisions, I found it helpful to dump the names of each object at the very start of my collision callback. If you're not using the user-data pointer, set it to a char pointer with the object's name. If you are using the user-data pointer to point to an object of a class that you've defined, add a 'name' member to that class. This makes all kinds of debugging easier, IME. Also, out of curiousity, how are you doing the networking? Does all of the simulation take place on a server, or do the clients do some of the simulation math? I've been pondering a networked application using ODE for a while and I'm looking for ideas. I also thought it might be cool to create a simple networking 'contrib' for ODE, since interactive networked simulations could be used to do all kinds of fun stuff. It's an interesting distributed-computing problem, though. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From johnb003 at hotmail.com Mon Oct 14 19:35:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 19:35:02 2002 Subject: [ODE] networking Message-ID: >Also, out of curiousity, how are you doing the networking? Does all of >the simulation take place on a server, or do the clients do some of the >simulation math? I've been pondering a networked application using ODE >for a while and I'm looking for ideas. I have not actually implemented my netcode but I thoroughly thought about it and decided on how I'm going to do it. There are several trades offs I could see from server-side to client-side and who tells who what collisions happen. Thought the implementation you use is dependent on what your program is modeling. I am doing a remote-controlled racing game, but not like revolt... if you're curious just check out my page: http://web.csuchico.edu/~jb393/urgent I started thinking about client-side physics, but being a racing game it could be really weird. Here is an example: Your actual position is about a car's distance behind the other player... Through lag though, the other player seems right next to you. If you were to ram that car, then tell the server hey I hit him, and then the sever relay that to the the other player and bounce him away from you, you'd think it was perfectly legitimate. Now from the prospective of the car in front of you. That player sees you even further back than you really are, (like 2 car distances) so then he sees you move to the side and out of no where he gets bumped off course... Ok so this method obviously has it's flaws for a racing game but for a first person shooter or something, it would be necessary so that you could shoot AT the player... not in front of them. The other main method is to do things server side, the question then becomes how much to do on the server and how much to do on the client-side. Lets say you did everything server-side... this would be the absolute most accurate if you told the server I am turning left and it turned you left and then sent back the positions of you and the other players but then you have lagged controls and no one likes that. If you only plan on playing this on a lan, maybe the lag is not an issue for you and this method is best. The method I plan on using for my racing game is a hybrid of the two. I will keep track of the vehicles on the server and do collision detection (I have more to say about this... possibly in my next post) there between the vehicles. I however do the controls for my vehicle on the client and send the server information about my position rotation etc... depending on how accurate you might just send the information about the vehicle or model whatever in whole and have the server guess what orientation the bodies have. For example the rotation of the wheels and the locations of the shocks and all that or just the vehicle altogether... Anyway with this method, one might have to predict a bit or aim in front of the other car slightly to make the collision on the server happen... I'll attempt to fix this by trying to show how the car might look after this much time and then use some kind of frame to frame dampening to move the car from where I projected it to be to where the next packet says it is. I hope this was thought provoking, -John Butterfield _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From jeffreyweber at hotmail.com Mon Oct 14 20:23:01 2002 From: jeffreyweber at hotmail.com (Jeff Weber) Date: Mon Oct 14 20:23:01 2002 Subject: [ODE] fastcar vs. ode Message-ID: I apologize if this has been asked previously, but I'm currently researching different physics engines for simulating vehicles. Does anyone have any experience with "fastcar" http://www.oxforddynamics.co.uk/ How does it compare to ode? _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From nick.mcevoy at dsto.defence.gov.au Mon Oct 14 21:17:02 2002 From: nick.mcevoy at dsto.defence.gov.au (McEvoy, Nick) Date: Mon Oct 14 21:17:02 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <108E7D907871D6118B5000306E0189F82005EA@ednex504.dsto.defence.gov.au> Peter wrote: >Nick, did any of these experiments work? (i.e. get rid of the >wheel-bending problem)? No I have not yet been able to rid myself of the wheel-bending problem as you turn corners at high speed (I noticed the buggy_demo has the same 'subtle feature'). I tried (each sim step)... - dBodySetFiniteRotationMode() - dBodySetFiniteRotationAxis() It reduced the problem but did not remove it completely. I tried different combinations of contact values ERP, CFM & slip, also gravity, I have not yet try different wheel/body mass & geoms. All my changes either increased or reduced bendy wheels but did not remove it. The problem is that bendy wheels make my 'car' impossible to control ... it looks like someone attached the wheels with a rubber band ... hilarious fun if thats the sort of game I was trying to write ! :) (russ/ode_users?) Why is it not possible to totally stop the hinge2 'axles' becoming 'bent' ? Nick From p.terdiman at wanadoo.fr Mon Oct 14 21:29:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 14 21:29:01 2002 Subject: [ODE] fastcar vs. ode References: Message-ID: <03cf01c27403$1f2d94c0$0e00000a@pierre> > I apologize if this has been asked previously, but I'm currently researching > different physics engines for simulating vehicles. Does anyone have any > experience with "fastcar" http://www.oxforddynamics.co.uk/ > > How does it compare to ode? FastCar uses penalty methods, so I'd say it's faster, but not as stable. (No, I've never used it.) Pierre From Nguyen Binh Mon Oct 14 22:05:01 2002 From: Nguyen Binh (Nguyen Binh) Date: Mon Oct 14 22:05:01 2002 Subject: [ODE] fastcar vs. ode In-Reply-To: References: Message-ID: <1102252288.20021015120049@glassegg.com> JW> I apologize if this has been asked previously, but I'm currently researching JW> different physics engines for simulating vehicles. Does anyone have any JW> experience with "fastcar" http://www.oxforddynamics.co.uk/ JW> How does it compare to ode? FastCar is specialized for vehicle. ODE is generic physics package. So say, for vehicle physics FastCar "maybe" better. But we shouldn't compare a 20.000 bulks package with a free open source one... And more, technically ,as far as I know , Fastcar use penalty method so it may be fast but not stable. -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From johnb003 at hotmail.com Mon Oct 14 22:35:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 22:35:02 2002 Subject: [ODE] Collision Detection - Quick Question About ODE Internals Message-ID: struct dContactGeom { dVector3 pos; // contact position dVector3 normal; // normal vector dReal depth; // penetration depth dGeomID g1,g2; // the colliding geoms }; Does ODE need the dGeomID's when doing the dynamics? For example, if I use alternate collision detection, do I have to use geoms? _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From ps_yumemi at yahoo.com Mon Oct 14 22:50:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 14 22:50:01 2002 Subject: [ODE] networking In-Reply-To: Message-ID: <20021015054936.58434.qmail@web40512.mail.yahoo.com> Someone pointed out to me that my question was a little vague so i'll try to make my program clearer. I have a robot simulator program that can connect to other simulations using directx8 directplay using a peer to peer connection. I connect through a LAN connection and I'm doing this so I can simulate two robots at the same time in the same environment even if the specs for the two robots are not in the same computer. It's my thesis project so I can graduate in college. I just send the speed and direction of the robot in my pc to the other computer and vice versa. i created both mobots so they all have corresponding dBodyIDs and dGeomIDs. I guess I'm just worried coz the only things i considered in the nearcallback function are the sensors. and yes we were planning to distribute this program as an open source program after i finish it. any comments or suggesions are welcome. thanks > __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From russ at q12.org Mon Oct 14 23:19:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 14 23:19:02 2002 Subject: [ODE] Collision Detection - Quick Question About ODE Internals In-Reply-To: References: Message-ID: <20021014232322.0ea0ba61.russ@q12.org> > Does ODE need the dGeomID's when doing the dynamics? For example, if I > use alternate collision detection, do I have to use geoms? the geom IDs (g1 and g2) are in the contact structure because you may pass groups to dCollide and then get returned a list of contacts between (potentially) many different bodies. in this case your code would have to examine each g1,g2 and e.g. figure out which body it's for, create the contact joint on that body, etc. if you're using another collision package that doesn't have this feature, you just set g1,g2 to 0 (or don't set them at all) and remember not to use them in your code. russ. -- Russell Smith http://www.q12.org From kaffiene at xtra.co.nz Tue Oct 15 14:33:02 2002 From: kaffiene at xtra.co.nz (Peter) Date: Tue Oct 15 14:33:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005EA@ednex504.dsto.defence.gov.au> Message-ID: <008601c27492$2ed71510$5c02a8c0@peter> > Peter wrote: > > >Nick, did any of these experiments work? (i.e. get rid of the > >wheel-bending problem)? > > No I have not yet been able to rid myself of the wheel-bending problem as > you turn corners at high speed (I noticed the buggy_demo has the same > 'subtle feature'). > > I tried (each sim step)... > - dBodySetFiniteRotationMode() > - dBodySetFiniteRotationAxis() > > It reduced the problem but did not remove it completely. > > I tried different combinations of contact values ERP, CFM & slip, also > gravity, I have not yet try different wheel/body mass & geoms. All my > changes either increased or reduced bendy wheels but did not remove it. > > The problem is that bendy wheels make my 'car' impossible to control ... > it looks like someone attached the wheels with a rubber band ... hilarious > fun if thats the sort of game I was trying to write ! :) That was pretty much exactly the results I got - this problem has completely killed my ODE project. > (russ/ode_users?) Why is it not possible to totally stop the hinge2 > 'axles' becoming 'bent' ? The question has been asked a lot of times, but it seems the only people who ever discuss it are people (like me) who want to use ODE, but don't know enough physics to fix it (sheesh! I find comprehending ODE hard enough for my little brain!) But it *would* be nice if Russ or someone else equally en-clued could chime in? Cheers, Peter. From Brad at fie.us Tue Oct 15 16:10:02 2002 From: Brad at fie.us (Brad Friedman) Date: Tue Oct 15 16:10:02 2002 Subject: [ODE] VStudioNet Message-ID: <3DACA09A.50505@fie.us> Hello. I just joined this list just now. So if this has already been gone over, please excuse my ignorance. I grabbed the release of ODE 0.3 and went about trying to get it to load in Visual Studio .net. I found the project files in the contrib directory of the web-based CVS useful. However, I did encounter a problem, and I did solve it. It might be worth updating the project files. When I changed the preprocessor directive from dDOUBLE to dSINGLE, it stopped compiling correctly. A little work brought me to a section of code regarding HUGE_VAL and HUGE_VALF. I then relized the project file did not have a "MSVC" preprocessor directive and therefore was trying to compile incorrectly. I realize the VS projects were in the contrib directory for a reason. However, its probably worth updating them to have the "MSVC" preprocessor directive by default. Thanks. -Brad Friedman From russ at q12.org Tue Oct 15 16:32:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 15 16:32:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <008601c27492$2ed71510$5c02a8c0@peter> Message-ID: > > (russ/ode_users?) Why is it not possible to totally stop the hinge2 > > 'axles' becoming 'bent' ? well, anything is possible :) the question is, why does it happen in the first place. here's the answer: ODE stores the position and orientation of each body independently. if there is any error in the integration step then it is possible for the bodies to be in positions/orientations where the joints do not line up properly (i call this 'joint error', it is the same thing as the wheels getting bent in hinge2). there are many sources of joint error, but the surest way to introduce error is to have two or more jointed bodies that are rotating very fast with respect to each other. this is because the physics model and the integrator use certain linear assumptions about the way that bodies will move during a time step - if the bodies are rotating so fast that the new configuration at the end of the step is completely different, then these linear assumptions are just plain wrong (and the bodies will not be moved to the correct places). this is a problem that afflicts all 'cartesian coordinate' or 'lagrange multiplier based' simulators. reduced coordinate simulators like dynamecth dont have this problem (for the bodies along the main tree), because the coordinate system they use simply doesn't allow for the possibility that the bodies will not be aligned correctly (the same problem will occurr when you close any loops however). ODE has a partial fix for this problem, which is the dBodySetFiniteRotationAxis() function and friends. but note that this is an exercise in error reduction, not error elimination - it will increase the speed at which a vechicle can be reliably made to move. for *very* fast moving vehicles where the wheels rotate a large proportion of one cycle per timestep, completely eliminating the error is going to require a lot of fiddling. another approach for simulating wheels is to 'fake them' or 'raycast them' - these approaches are effective for computer games, because the difference between 'perfect physics' and 'physics that is completely wrong' is not generally noticeable to the player (or even to an experienced physicist). the only caveat here is that with increasing physical realism comes the chance for better emergent (and/or synergistic) behavior coming out of the simulation. you have to be careful that you are not faking so much that your resulting behavior is little better than hard-coded animation. will ODE support these methods in the future? it's possible. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Tue Oct 15 19:18:02 2002 From: coding at natew.com (Nate W) Date: Tue Oct 15 19:18:02 2002 Subject: [ODE] VStudioNet In-Reply-To: <3DACA09A.50505@fie.us> Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --1363170581-1485151701-1034706356=:21665 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 15 Oct 2002, Brad Friedman wrote: > When I changed the preprocessor directive from dDOUBLE to dSINGLE, it > stopped compiling correctly. A little work brought me to a section of > code regarding HUGE_VAL and HUGE_VALF. I then relized the project file > did not have a "MSVC" preprocessor directive and therefore was trying to > compile incorrectly. That would be my mistake. I was using dDOUBLE until I started using the tri-collider extension, and after I found the MSVC problem with the TC project, I neglected to also fix it in the non-TC project file. I've attached a .vcproj file that takes care of this. Russ, could you add it to the CVS, under contrib/MSVC7/ode_default, replacing the existing file? Thanks, guys. -- Nate Waddoups Redmond WA USA http://www.natew.com --1363170581-1485151701-1034706356=:21665 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="default.vcproj" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="default.vcproj" PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZyA9ICJXaW5kb3dzLTEyNTIi Pz4NDQo8VmlzdWFsU3R1ZGlvUHJvamVjdA0NCglQcm9qZWN0VHlwZT0iVmlz dWFsIEMrKyINDQoJVmVyc2lvbj0iNy4wMCINDQoJTmFtZT0ib2RlX2RlZmF1 bHQiDQ0KCVByb2plY3RHVUlEPSJ7MUJGNzVGRUItODdERC00ODZDLTg4MEIt MjI3OTg3RDE5MUMyfSINDQoJS2V5d29yZD0iQXRsUHJvaiI+DQ0KCTxQbGF0 Zm9ybXM+DQ0KCQk8UGxhdGZvcm0NDQoJCQlOYW1lPSJXaW4zMiIvPg0NCgk8 L1BsYXRmb3Jtcz4NDQoJPENvbmZpZ3VyYXRpb25zPg0NCgkJPENvbmZpZ3Vy YXRpb24NDQoJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINDQoJCQlPdXRwdXREaXJl Y3Rvcnk9IkRlYnVnIg0NCgkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iRGVi dWciDQ0KCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQ0KCQkJVXNlT2ZBVEw9 IjEiDQ0KCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZB TFNFIg0NCgkJCUNoYXJhY3RlclNldD0iMiI+DQ0KCQkJPFRvb2wNDQoJCQkJ TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINDQoJCQkJT3B0aW1pemF0aW9uPSIw Ig0NCgkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8u Li9pbmNsdWRlIg0NCgkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lO MzI7X1dJTkRPV1M7X0RFQlVHO19VU1JETEw7ZERPVUJMRTtNU1ZDIg0NCgkJ CQlNaW5pbWFsUmVidWlsZD0iVFJVRSINDQoJCQkJQmFzaWNSdW50aW1lQ2hl Y2tzPSIzIg0NCgkJCQlSdW50aW1lTGlicmFyeT0iMyINDQoJCQkJVXNlUHJl Y29tcGlsZWRIZWFkZXI9IjAiDQ0KCQkJCVdhcm5pbmdMZXZlbD0iMyINDQoJ CQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSINDQoJ CQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPg0NCgkJCTxUb29sDQ0K CQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNMaW5rZXJUb29sIg0NCgkJCQlJZ25vcmVJbXBvcnRMaWJy YXJ5PSJUUlVFIg0NCgkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvb2RlLmRs bCINDQoJCQkJTGlua0luY3JlbWVudGFsPSIyIg0NCgkJCQlNb2R1bGVEZWZp bml0aW9uRmlsZT0iLi5cLi5cLi5cY29uZmlnXG1zdmNkZWZzLmRlZiINDQoJ CQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0NCgkJCQlTdWJT eXN0ZW09IjIiDQ0KCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS9vZGUu bGliIg0NCgkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNNSURMVG9vbCINDQoJCQkJUHJlcHJvY2Vzc29yRGVmaW5p dGlvbnM9Il9ERUJVRyINDQoJCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJGQUxT RSINDQoJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQ0KCQkJCUdlbmVyYXRl U3R1Ymxlc3NQcm94aWVzPSJUUlVFIg0NCgkJCQlUeXBlTGlicmFyeU5hbWU9 IiQoSW50RGlyKS9kZWZhdWx0LnRsYiINDQoJCQkJSGVhZGVyRmlsZU5hbWU9 ImRlZmF1bHQuaCINDQoJCQkJRExMRGF0YUZpbGVOYW1lPSIiDQ0KCQkJCUlu dGVyZmFjZUlkZW50aWZpZXJGaWxlTmFtZT0iZGVmYXVsdF9pLmMiDQ0KCQkJ CVByb3h5RmlsZU5hbWU9ImRlZmF1bHRfcC5jIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQ0KCQkJCURlc2NyaXB0 aW9uPSJQZXJmb3JtaW5nIHJlZ2lzdHJhdGlvbiINDQoJCQkJQ29tbWFuZExp bmU9InJlZ3N2cjMyIC9zIC9jICZxdW90OyQoVGFyZ2V0UGF0aCkmcXVvdDsi DQ0KCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJUUlVFIi8+DQ0KCQkJPFRvb2wN DQoJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0NCgkJCTxUb29s DQ0KCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0NCgkJCTxUb29s DQ0KCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQ0KCQkJCVBy ZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQ0KCQkJCUN1bHR1cmU9 IjEwMzMiDQ0KCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQo SW50RGlyKSIvPg0NCgkJCTxUb29sDQ0KCQkJCU5hbWU9IlZDV2ViU2Vydmlj ZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0NCgkJCTxUb29sDQ0KCQkJCU5hbWU9 IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NDQoJCTwvQ29uZmlndXJhdGlvbj4N DQoJCTxDb25maWd1cmF0aW9uDQ0KCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIN DQoJCQlPdXRwdXREaXJlY3Rvcnk9IlJlbGVhc2UiDQ0KCQkJSW50ZXJtZWRp YXRlRGlyZWN0b3J5PSJSZWxlYXNlIg0NCgkJCUNvbmZpZ3VyYXRpb25UeXBl PSIyIg0NCgkJCVVzZU9mQVRMPSIxIg0NCgkJCUFUTE1pbmltaXplc0NSdW5U aW1lTGlicmFyeVVzYWdlPSJGQUxTRSINDQoJCQlDaGFyYWN0ZXJTZXQ9IjIi Pg0NCgkJCTxUb29sDQ0KCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQ0K CQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0NCgkJCQlBZGRpdGlv bmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi9pbmNsdWRlIg0NCgkJ CQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X1dJTkRPV1M7TkRF QlVHO19VU1JETEw7ZFNJTkdMRTtNU1ZDIg0NCgkJCQlTdHJpbmdQb29saW5n PSJUUlVFIg0NCgkJCQlSdW50aW1lTGlicmFyeT0iMiINDQoJCQkJRW5hYmxl RnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQ0KCQkJCVVzZVByZWNvbXBp bGVkSGVhZGVyPSIwIg0NCgkJCQlXYXJuaW5nTGV2ZWw9IjMiDQ0KCQkJCURl dGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiDQ0KCQkJCURl YnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4NDQoJCQk8VG9vbA0NCgkJCQlO YW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0NCgkJCTxUb29sDQ0KCQkJCU5h bWU9IlZDTGlua2VyVG9vbCINDQoJCQkJSWdub3JlSW1wb3J0TGlicmFyeT0i VFJVRSINDQoJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL29kZS5kbGwiDQ0K CQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINDQoJCQkJTW9kdWxlRGVmaW5pdGlv bkZpbGU9Ii4uXC4uXC4uXGNvbmZpZ1xtc3ZjZGVmcy5kZWYiDQ0KCQkJCUdl bmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iRkFMU0UiDQ0KCQkJCVN1YlN5c3Rl bT0iMiINDQoJCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpL29kZS5saWIi DQ0KCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NDQoJCQk8VG9vbA0NCgkJCQlO YW1lPSJWQ01JRExUb29sIg0NCgkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9u cz0iTkRFQlVHIg0NCgkJCQlNa1R5cExpYkNvbXBhdGlibGU9IkZBTFNFIg0N CgkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINDQoJCQkJR2VuZXJhdGVTdHVi bGVzc1Byb3hpZXM9IlRSVUUiDQ0KCQkJCVR5cGVMaWJyYXJ5TmFtZT0iJChJ bnREaXIpL2RlZmF1bHQudGxiIg0NCgkJCQlIZWFkZXJGaWxlTmFtZT0iZGVm YXVsdC5oIg0NCgkJCQlETExEYXRhRmlsZU5hbWU9IiINDQoJCQkJSW50ZXJm YWNlSWRlbnRpZmllckZpbGVOYW1lPSJkZWZhdWx0X2kuYyINDQoJCQkJUHJv eHlGaWxlTmFtZT0iZGVmYXVsdF9wLmMiLz4NDQoJCQk8VG9vbA0NCgkJCQlO YW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINDQoJCQkJRGVzY3JpcHRpb249 IlBlcmZvcm1pbmcgcmVnaXN0cmF0aW9uIg0NCgkJCQlDb21tYW5kTGluZT0i cmVnc3ZyMzIgL3MgL2MgJnF1b3Q7JChUYXJnZXRQYXRoKSZxdW90OyINDQoJ CQkJRXhjbHVkZWRGcm9tQnVpbGQ9IlRSVUUiLz4NDQoJCQk8VG9vbA0NCgkJ CQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINDQoJCQkJUHJlcHJv Y2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINDQoJCQkJQ3VsdHVyZT0iMTAz MyINDQoJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChJbnRE aXIpIi8+DQ0KCQkJPFRvb2wNDQoJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJv eHlHZW5lcmF0b3JUb29sIi8+DQ0KCQkJPFRvb2wNDQoJCQkJTmFtZT0iVkNX ZWJEZXBsb3ltZW50VG9vbCIvPg0NCgkJPC9Db25maWd1cmF0aW9uPg0NCgk8 L0NvbmZpZ3VyYXRpb25zPg0NCgk8RmlsZXM+DQ0KCQk8RmlsdGVyDQ0KCQkJ TmFtZT0iU291cmNlIEZpbGVzIg0NCgkJCUZpbHRlcj0iY3BwO2M7Y3h4O2Rl ZjtvZGw7aWRsO2hwajtiYXQ7YXNtIj4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxh dGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcV2luMzIuY3BwIj4NDQoJCQk8 L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwu LlxvZGVcc3JjXGFycmF5LmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxl DQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xlcnJvci5j cHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBh dGg9Ii4uXC4uXC4uXG9kZVxzcmNcZmFzdGRvdC5jIj4NDQoJCQk8L0ZpbGU+ DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVc c3JjXGZhc3RsZGx0LmMiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcZmFzdGxzb2x2ZS5j Ij4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRo PSIuLlwuLlwuLlxvZGVcc3JjXGZhc3RsdHNvbHZlLmMiPg0NCgkJCTwvRmls ZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9k ZVxzcmNcZ2VvbS5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcam9pbnQuY3BwIj4N DQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIu LlwuLlwuLlxvZGVcc3JjXGxjcC5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8 RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcbWFz cy5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2 ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcbWF0LmNwcCI+DQ0KCQkJPC9GaWxl Pg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2Rl XHNyY1xtYXRyaXguY3BwIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJ CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXG1lbW9yeS5jcHAi Pg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9 Ii4uXC4uXC4uXG9kZVxzcmNcbWlzYy5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJ CQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGNvbmZpZ1xt c3ZjZGVmcy5kZWYiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlS ZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcb2JzdGFjay5jcHAiPg0N CgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4u XC4uXC4uXG9kZVxzcmNcb2RlLmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxG aWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xvZGVt YXRoLmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0 aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xyb3RhdGlvbi5jcHAiPg0NCgkJ CTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u XC4uXG9kZVxzcmNcc3BhY2UuY3BwIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZp bGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXHN0ZXAu Y3BwIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQ YXRoPSIuLlwuLlwuLlxvZGVcc3JjXHRlc3RpbmcuY3BwIj4NDQoJCQk8L0Zp bGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxv ZGVcc3JjXHRpbWVyLmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJPC9GaWx0ZXI+ DQ0KCQk8RmlsdGVyDQ0KCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0NCgkJCUZp bHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiPg0NCgkJCTxGaWxlDQ0KCQkJ CVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xhcnJheS5oIj4NDQoJ CQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwu LlwuLlxvZGVcc3JjXGdlb21faW50ZXJuYWwuaCI+DQ0KCQkJPC9GaWxlPg0N CgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNy Y1xqb2ludC5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVs YXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXGxjcC5oIj4NDQoJCQk8L0Zp bGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxv ZGVcc3JjXG1hdC5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJ UmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXG9iamVjdHMuaCI+DQ0K CQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5c Li5cLi5cb2RlXHNyY1xvYnN0YWNrLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8 RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcc3Rh Y2suaCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZl UGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xzdGVwLmgiPg0NCgkJCTwvRmlsZT4N DQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxz cmNcdGVzdGluZy5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQk8L0ZpbHRlcj4NDQoJ CTxGaWx0ZXINDQoJCQlOYW1lPSJTaGFyZWQgSGVhZGVyIEZpbGVzIg0NCgkJ CUZpbHRlcj0iIj4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4u XC4uXC4uXGluY2x1ZGVcb2RlXGNvbW1vbi5oIj4NDQoJCQk8L0ZpbGU+DQ0K CQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxpbmNsdWRl XG9kZVxjb25maWcuaCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJ CVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5caW5jbHVkZVxvZGVcY29udGFjdC5o Ij4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRo PSIuLlwuLlwuLlxpbmNsdWRlXG9kZVxlcnJvci5oIj4NDQoJCQk8L0ZpbGU+ DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxpbmNs dWRlXG9kZVxnZW9tLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXG1hc3MuaCI+ DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0i Li5cLi5cLi5caW5jbHVkZVxvZGVcbWF0cml4LmgiPg0NCgkJCTwvRmlsZT4N DQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1 ZGVcb2RlXG1lbW9yeS5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJ CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxpbmNsdWRlXG9kZVxtaXNjLmgi Pg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9 Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXG9iamVjdHMuaCI+DQ0KCQkJPC9GaWxl Pg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5caW5j bHVkZVxvZGVcb2RlLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXG9kZWNwcC5o Ij4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRo PSIuLlwuLlwuLlxpbmNsdWRlXG9kZVxvZGVtYXRoLmgiPg0NCgkJCTwvRmls ZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGlu Y2x1ZGVcb2RlXHJvdGF0aW9uLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8Rmls ZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXHNw YWNlLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2 ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXHRpbWVyLmgiPg0NCgkJCTwv RmlsZT4NDQoJCTwvRmlsdGVyPg0NCgkJPEZpbGUNDQoJCQlSZWxhdGl2ZVBh dGg9IlJlYWRNZS50eHQiPg0NCgkJPC9GaWxlPg0NCgk8L0ZpbGVzPg0NCgk8 R2xvYmFscz4NDQoJPC9HbG9iYWxzPg0NCjwvVmlzdWFsU3R1ZGlvUHJvamVj dD4NDQo= --1363170581-1485151701-1034706356=:21665-- From coding at natew.com Tue Oct 15 19:28:02 2002 From: coding at natew.com (Nate W) Date: Tue Oct 15 19:28:02 2002 Subject: [ODE] VStudioNet In-Reply-To: Message-ID: This thread has reminded me of something I've been meaning to ask... is anyone else out there using VS.net and ODE+tri-collider? In my case, the compiler warning messages often have the wrong line numbers, and debugging induces big headaches fast because the debugger usually goes to the wrong line in the source file. Is anyone else seeing this? -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Tue Oct 15 19:40:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 15 19:40:02 2002 Subject: [ODE] VStudioNet In-Reply-To: References: <3DACA09A.50505@fie.us> Message-ID: <20021015194355.1e9eeb85.russ@q12.org> > I've attached a .vcproj file that takes care of this. Russ, could you > add it to the CVS, under contrib/MSVC7/ode_default, replacing the existing > file? done. russ. -- Russell Smith http://www.q12.org From Tomas.Sakalauskas at axel-group.com Wed Oct 16 00:13:02 2002 From: Tomas.Sakalauskas at axel-group.com (Tomas Sakalauskas) Date: Wed Oct 16 00:13:02 2002 Subject: [ODE] VStudioNet Message-ID: Yes. You have to replace CRCRLF in files with CRLF, this confuses VS.NET. Tomas -----Original Message----- From: Nate W [mailto:coding@natew.com] Sent: Tuesday, October 15, 2002 8:36 PM To: ode@q12.org Subject: Re: [ODE] VStudioNet This thread has reminded me of something I've been meaning to ask... is anyone else out there using VS.net and ODE+tri-collider? In my case, the compiler warning messages often have the wrong line numbers, and debugging induces big headaches fast because the debugger usually goes to the wrong line in the source file. Is anyone else seeing this? -- Nate Waddoups Redmond WA USA http://www.natew.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From ps_yumemi at yahoo.com Wed Oct 16 00:44:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Wed Oct 16 00:44:02 2002 Subject: [ODE] networking Message-ID: <20021016074301.19079.qmail@web40514.mail.yahoo.com> hello first of all thanks for replying. I'm not using a client/server type of connection. I'm using a peer to peer connection. This means that I only have one program and though it may act as a server at times it doesn't. The movements of the a robot is calculated by the local computer and it just sends a message containing the speed and orientation of the mobot to the other computers. Any computer sends a message to all the other computers connected to the same simulation like a broadcast message. I use ODE for practically everything even the positioning. and yes, all the geoms and bodies are created properly. although yes I do have problems concerning the lag. and i'm still working on that. any suggestions are welcome. and all the robots exist in the same space and world. thanks pia __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From johnb003 at hotmail.com Wed Oct 16 01:10:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Wed Oct 16 01:10:02 2002 Subject: [ODE] IRC Community Message-ID: If anyone is interested, I started a channel on efnet for ode... as you might have guessed it's #ode. I encourage anyone to go there that is interested in ode, can contribute to the community, has questions, or just wants to say hi. I'll be hanging around there as Return0. Thanks -John Butterfield If people start to show up maybe russ can mention it on his page or something. _________________________________________________________________ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 From I.Munro at herts.ac.uk Wed Oct 16 01:38:13 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Wed Oct 16 01:38:13 2002 Subject: [ODE] VStudioNet Message-ID: Nate wrote: > This thread has reminded me of something I've been meaning to > ask... is > anyone else out there using VS.net and ODE+tri-collider? In > my case, the > compiler warning messages often have the wrong line numbers, > and debugging > induces big headaches fast because the debugger usually goes > to the wrong > line in the source file. Is anyone else seeing this? I'm using vs.net and ode (but not tri-collider). I've come across similar problems when debugging, but only when I've accidentally switched on compiler optimisation. And the lines I'm trying to debug have been optimised out of existence. Ian From Remko at act-3d.com Wed Oct 16 06:26:02 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Wed Oct 16 06:26:02 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <277399354.5556039.98@server> You can fix the viual appearance of the wheel easily though. Just use the position from ODE, get the wheel rotation angle and create your own rotation matrix from this angle and the matrix of the vehicle body. This will not improve the handling of the car but at least the image looks right :) Note: you need to calculate the pitch rotation of the wheel yourself because Ode can not provide this info (hint.. hint.. Russ :) ). -Remko From ericc at xenopi.com Wed Oct 16 10:02:02 2002 From: ericc at xenopi.com (Eric Cha) Date: Wed Oct 16 10:02:02 2002 Subject: [ODE] networking In-Reply-To: <20021016074301.19079.qmail@web40514.mail.yahoo.com> Message-ID: <000001c27536$37d05880$6401a8c0@donald> Pia, Your problem is a bit tricky to pin down, but here is my theory: Since you are controlling each robot separately (via different computers), any collisions detected by a given computer have to be transmitted (propagated) to the other computers. You didn't mention whether or not you are transmitting collision information in your program, but I am going to assume that you are.. So, assuming you are propagating collision info properly (although in a peer-to-peer topology this is going to be tricky..), the other problem may be (depending on how your network code functions) one of "lag induced information negation".. What I mean is, computer "A" determines a collision has occurred and transmits the info to computer "B". However, because of lag, computer "B" transmits a new position to "A" before receiving the collision info from "A". The new position info from "B" then OVERRIDES the collision that "A" detected, and forces "A" to put it's representation of "B" into the new spot. Computer "B" finally receives the collision info, but disregards it because it happened at a position which is not current.. This scenario assumes MANY things about your network code, so it is not a definite answer. A better way (for physics) to do things would be to designate one computer as "the physics simulator". Do the entire scene simulation on that computer, and then just transmit position/orientation/velocity updates to other computers. Of course, other computers would transmit user inputs (or even impulse/velocity/acceleration changes) to the simulator computer to control their respective robot. Don't know if that helped you or not, but that's my .02. =) Eric > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > Of pia dalusong > Sent: Wednesday, October 16, 2002 12:43 AM > To: ode@q12.org > Subject: [ODE] networking > > > hello > > first of all thanks for replying. > I'm not using a client/server type of connection. I'm > using a peer to peer connection. This means that I > only have one program and though it may act as a > server at times it doesn't. The movements of the a > robot is calculated by the local computer and it just > sends a message containing the speed and orientation > of the mobot to the other computers. Any computer > sends a message to all the other computers connected > to the same simulation like a broadcast message. > I use ODE for practically everything even the > positioning. and yes, all the geoms and bodies are > created properly. > > although yes I do have problems concerning the lag. > and i'm still working on that. any suggestions are > welcome. and all the robots exist in the same space > and world. > > thanks > > pia > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From anselm at hook.org Wed Oct 16 12:10:02 2002 From: anselm at hook.org (Anselm Hook) Date: Wed Oct 16 12:10:02 2002 Subject: [ODE] networking In-Reply-To: <000001c27536$37d05880$6401a8c0@donald> Message-ID: Hi, Eric probably has the best solution (do all the dynamics on one machine); networking physics is a bit of an oxymoron - you have high frequency events being propagated over a sluggish pipe. The naive scheme is to use a heartbeat to syncronize state between machines. Presumably if all machines are always in the same state then any new inputs delivered to all machines simultaneously will have the same effect. This would result in unacceptable delays however. If you are 70 ms from a server then your sim is at least 140ms delayed. Humans start to notice delay at around 20ms and ordinary inter-continental phone conversations become difficult with >70ms delays. Modems typically incur a 30ms delay and even tcp packet building and buffering can incur a 10ms delay... obviously you need a carefully chosen hack. If you look on the net there were once a number of companies that specialized in fast networking for games (I think most of them are bankrupt now). One scheme that I liked was a dual simulation scheme: There were two instances of the simulation running - one that was current and speculative (allowing gratifying instant feedback) and the other was an authoritative simulation that used an ordinary heartbeat but suffered from the full latency of the network. The current simulation was periodically (once every tenth of a second or so) re-computed forward from the correct but temporally old simulation. So most of the time things would work, but every so often the actors would pop around a bit. This is probably the best possible scheme one can hope to achieve although it does put a large load on the client machines. Also there is quite a bit of research at Darpa and in some of the game dev journals about various robust networking schemes. Another scheme (Russ once mentioned) is the idea of a networked constraint; that maintains the force interaction between objects over a network (hmm, sounds like quantum physics). He'd have to explain that. Here is a trivial scheme I've used for non-dynamics networking. Your mileage may vary - it is highly inaccurate - it simply creates a reasonably believable 'fiction' without forcing all machines to be syncronized or forcing the load to be computed on the server. But note that it is a hack. 1) First one designates one instance of an object as the "authoritative instance" and the other instances of that same object (as exist on each separate machine) as the "ghosts" or non-authoritative instances. 2) Requests to interact with any object (in state changing ways) have to be routed to the authoritative instance. The authoritative instance then echoes a second message indicating result states that all ghosts should seek to be in. (A vanilla client server network like say 'Quake' therefore is emulated by simply having all authoritative instances reside on the server rather than on the client leaf nodes of the network. A peer to peer network is designed by marking non-server objects as authoritative and forcing requests to be re-routed to that instance (often involving network traffic)). 3) It is ok for a ghost to locally speculate about what it should do when it receives an impact - but throw away that information when more authoritative feedback arrives. This often results in a ghost being translated part way into another object - this inter-penetration can however help the simulation as will be discussed below. So for example: Lets pretend you have p2p network of two machines and two robots. Each machine is going to have an instance of each robot. I like to draw out these instance graphs using a simple c like notation - in this case it might look like this: network { machine1 { robot1 { is_authoritative { yes } request_impact{} } robot2 { is_authoritative { no } where_is_authority { machine2:robot2 } request_impact{} } } machine2 { robot1 { is_authoritative { no } where_is_authority { machine1:robot1 } request_impact{} } robot2 { is_authoritative { yes } request_impact{} } } } Any requests to apply forces to an object get sent to the authority first and the authority echoes out a real force to apply. A ghost is treated like a statue; it simply doesn't move right away when you hit it. An elaboration of this would be to allow ghosts to be simulated normally but for the authority to transmit all authoritative state (position, current forces) to all ghosts after each new force. This would result in inter-penetration as ghosts were popped to new locations... but has worked ok for me in the past. I would even propagate extremely high level events such as "cross bridge" and allow each ghost to fulfill the event as it wished - creating often quite different but plausibly believable fictions. Anyway, as I said, your mileage may vary - it really depends on what you're trying to do. If you simply can't afford to compute the simulation twice, and if all you care about is some reasonably believable non-diverging physics then this might be acceptable - it is certainly good enough for most games. Today I'd probably use something more robust myself though. Hmmm, I wonder what a networked version of 'Juice' would be like. Robot wars anybody? :-). - a On Wed, 16 Oct 2002, Eric Cha wrote: > Pia, > > Your problem is a bit tricky to pin down, but here is my theory: > > Since you are controlling each robot separately (via different > computers), any collisions detected by a given computer have to be > transmitted (propagated) to the other computers. You didn't mention > whether or not you are transmitting collision information in your > program, but I am going to assume that you are.. > > So, assuming you are propagating collision info properly (although in a > peer-to-peer topology this is going to be tricky..), the other problem > may be (depending on how your network code functions) one of "lag > induced information negation".. What I mean is, computer "A" determines > a collision has occurred and transmits the info to computer "B". > However, because of lag, computer "B" transmits a new position to "A" > before receiving the collision info from "A". The new position info > from "B" then OVERRIDES the collision that "A" detected, and forces "A" > to put it's representation of "B" into the new spot. Computer "B" > finally receives the collision info, but disregards it because it > happened at a position which is not current.. > > This scenario assumes MANY things about your network code, so it is not > a definite answer. > > A better way (for physics) to do things would be to designate one > computer as "the physics simulator". Do the entire scene simulation on > that computer, and then just transmit position/orientation/velocity > updates to other computers. Of course, other computers would transmit > user inputs (or even impulse/velocity/acceleration changes) to the > simulator computer to control their respective robot. > > Don't know if that helped you or not, but that's my .02. =) > > Eric > > > -----Original Message----- > > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > > Of pia dalusong > > Sent: Wednesday, October 16, 2002 12:43 AM > > To: ode@q12.org > > Subject: [ODE] networking > > > > > > hello > > > > first of all thanks for replying. > > I'm not using a client/server type of connection. I'm > > using a peer to peer connection. This means that I > > only have one program and though it may act as a > > server at times it doesn't. The movements of the a > > robot is calculated by the local computer and it just > > sends a message containing the speed and orientation > > of the mobot to the other computers. Any computer > > sends a message to all the other computers connected > > to the same simulation like a broadcast message. > > I use ODE for practically everything even the > > positioning. and yes, all the geoms and bodies are > > created properly. > > > > although yes I do have problems concerning the lag. > > and i'm still working on that. any suggestions are > > welcome. and all the robots exist in the same space > > and world. > > > > thanks > > > > pia > > > > > > --- > Outgoing mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From Brad at fie.us Wed Oct 16 13:28:02 2002 From: Brad at fie.us (Brad Friedman) Date: Wed Oct 16 13:28:02 2002 Subject: [ODE] networking References: Message-ID: <3DADCC02.5050409@fie.us> I highly recommend hopping onto www.GameDev.net and looking up articles on dead reckoning. In particular, I recomend this one as a start: http://www.gamedev.net/reference/programming/features/targeting/ You can then dive down to other articles for actual code. You'll also want to think in terms of TCP, UDP and half TCP solutions in your networking. Half TCP solutions will likely want to guarontee order but not receipt of packts. Or alternatively, you could guarontee receipt but not order. Generally speaking, you need to design a simulation from the ground up to work with physics over the network. Its not something to add in later. And you need to get used to the idea that the client will always be in error. The server's representation will not be 100% accurate. It will likely be making spontaneous changes. The clients smooth out the changes at the user's end. If you're designing your program for a LAN with less than 10ms lag, thats a different story of course. But you do also need to factor in the processing time. Its not just netoworking lag. -Brad From nick.mcevoy at dsto.defence.gov.au Wed Oct 16 18:03:01 2002 From: nick.mcevoy at dsto.defence.gov.au (McEvoy, Nick) Date: Wed Oct 16 18:03:01 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <108E7D907871D6118B5000306E0189F82005F6@ednex504.dsto.defence.gov.au> > Peter wrote: >That was pretty much exactly the results I got - this problem has >completely killed my ODE project. That is the way I'm heading too !!! It's a damn shame cause ODE is great stuff generally ! But I'm not one to give up easily. > Russ wrote: >well, anything is possible :) the question is, why does it happen in the >first place. here's the answer: > Thanks Russ for the nice long answer (in physics terms) but no real (good) solution (in the short term at least). :( Any other hints on the best setup of chassis & wheel mass and dimensions (including contact params) to reduce the problem. eg. should I have heavy/light chassis, heavy/light wheels, large/small diam wheels ... I suppose it should be obvious if I think about it for a moment ... thats my problem sometimes I type (incl. my code) then think later. I'll also check my timestep size as well. > Remko wrote: >You can fix the viual appearance of the wheel easily though. Yes I suppose I could fix the visual appearance ... but I don't want to do too many fake-hacks (I've already got enough) ... I like something to look and feel realistic as possible. I'll follow what Russ said '[its an] exercise in error reduction, not error elimination' ... and keep fiddling and let you all know if I find the optimal values. Nick From coding at natew.com Wed Oct 16 19:40:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 19:40:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005F6@ednex504.dsto.defence.gov.au> Message-ID: On Thu, 17 Oct 2002, McEvoy, Nick wrote: > Thanks Russ for the nice long answer (in physics terms) but no real > (good) solution (in the short term at least). :( I must admit I have very little experience using ODE to simulate a car, but I thought he did offer a good solution... or at least he said something that sounded to me like the beginnings of a solution to the wheel problem: fake them. When ODE generates contacts for the wheel-ground intersection, treat it as a frictionless contact, so ODE just keeps things from interpenetrating (you'll also get sideways forces if you're on a slope, which is probably good). Then, use your own code to compute the forces that *should* be there. ODE's friction model is pretty simple (as it should be, IMO), so if you want a really good model of tire forces for your project, you'll end up calculating those forces outside of ODE anyhow. Maybe you could apply the forces directly to the wheel body - but don't use an axle joint, instead have the wheel attached in such a way that it moves for suspension and steering but not for rotation. You could then apply a force at the contact point (or at the center of the contact patch, if you wanna get sophisticated), and apply a torque where the axle would be. -- Nate Waddoups Redmond WA USA http://www.natew.com From tetron at interreality.org Wed Oct 16 20:05:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 16 20:05:02 2002 Subject: [ODE] exploding boxes Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This may be a known bug -- box stacking is extremely unstable. Specifically, I'm looking at the "phystut" program that comes with the Crystal Space 3D engine. It uses large, flat boxes for the walls of a room[1], and the user is able to drop boxes and spheres into the room and watch them bounce and roll around. There are several problems: [1] I expect the answer may be "don't do that" and while that would work for the outer surfaces of a convex hull, it's useless for building other things within a space. The first one is that despite the fact that both the walls and objects have a bounciness of zero (perfectly inelastic collisions) when an object is dropped it tends to bounce and roll around a LOT before coming to a stop... ... almost coming to a stop, that it. Once the object has almost settled down, often it will suddenly pop up with a lot of force. This is clearly an instability in the integrator, and makes it basically impossible to stack objects on one another, which should otherwise work fine. I'd like to see this fixed, and if no one is working on it I would be willing to give it a shot if someone will point me in the right direction of where to start in the code. [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9riifaeHUyhjCHfcRAlbVAKCxOv91JfnjQVdCbZ7agC/WU1UCqwCfcZ9Z 3+yvx1qbhQwLuaY05A6VqUc= =ThXO -----END PGP SIGNATURE----- From russ at q12.org Wed Oct 16 21:42:02 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 16 21:42:02 2002 Subject: [ODE] exploding boxes In-Reply-To: References: Message-ID: <20021016214610.27fc7f46.russ@q12.org> > The first one is that despite the fact that both the walls and objects > have a bounciness of zero (perfectly inelastic collisions) when an > object is dropped it tends to bounce and roll around a LOT before > coming to a stop... if you're talking about the box-stack demo, this bouncyness is intentional. if you want no bounce, set contact[i].surface.bounce=0 in the demo. > ... almost coming to a stop, that it. Once the object has almost > settled down, often it will suddenly pop up with a lot of force. are you using the latest CVS version? 0.03 is prone to popping. there will hopefully be a new 'official' ODE release sometime soonish. if you are experiencing popping with the CVS version, i would appreciate a test case that illustrates this. note that there is a box-stacking problem caused by insufficient contact points being generated, i am also hoping to fix this up soon. russ. -- Russell Smith http://www.q12.org From ericc at xenopi.com Wed Oct 16 22:48:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Wed Oct 16 22:48:01 2002 Subject: [ODE] networking In-Reply-To: <3DADCC02.5050409@fie.us> Message-ID: <000601c275a1$3aeed3f0$6401a8c0@donald> Umm, not bad advice, but the original poster did specify that he/she purposely chose peer-to-peer, so Client-Server paradigm might not be an option (for him)... > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > Of Brad Friedman > Sent: Wednesday, October 16, 2002 1:29 PM > To: ode@q12.org > Subject: Re: [ODE] networking > > > I highly recommend hopping onto www.GameDev.net and looking > up articles > on dead reckoning. > > In particular, I recomend this one as a start: > http://www.gamedev.net/reference/programming/features/targetin g/ You can then dive down to other articles for actual code. You'll also want to think in terms of TCP, UDP and half TCP solutions in your networking. Half TCP solutions will likely want to guarontee order but not receipt of packts. Or alternatively, you could guarontee receipt but not order. Generally speaking, you need to design a simulation from the ground up to work with physics over the network. Its not something to add in later. And you need to get used to the idea that the client will always be in error. The server's representation will not be 100% accurate. It will likely be making spontaneous changes. The clients smooth out the changes at the user's end. If you're designing your program for a LAN with less than 10ms lag, thats a different story of course. But you do also need to factor in the processing time. Its not just netoworking lag. -Brad _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoftick ). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From tetron at interreality.org Wed Oct 16 22:50:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 16 22:50:02 2002 Subject: [ODE] exploding boxes In-Reply-To: <20021016214610.27fc7f46.russ@q12.org> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Wed, 16 Oct 2002, Russ Smith wrote: > if you're talking about the box-stack demo, this bouncyness is > intentional. if you want no bounce, set contact[i].surface.bounce=0 > in the demo. No, this is in the "phystut" program in Crystal Space. As I said, this is a box landing on another box and not a box hitting a plane. > are you using the latest CVS version? 0.03 is prone to popping. there > will hopefully be a new 'official' ODE release sometime soonish. if you > are experiencing popping with the CVS version, i would appreciate a test > case that illustrates this. Yes, I'm using the CVS version. Providing a simple test case is rather complicated by the fact that it uses the Crystal Space infrastructure so perhaps you would be best off downloading Crystal Space... I suppose I could try to reproduce it in the box stacking test. > note that there is a box-stacking problem caused by insufficient contact > points being generated, i am also hoping to fix this up soon. Hmm, okay. [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9rk9TaeHUyhjCHfcRAg2wAJ43RxDQqhzIsEzWqjd2At2nwB04ZQCeMV+l Ft/PY6NEi9EqgpNwMHGpRg4= =ChTm -----END PGP SIGNATURE----- From coding at natew.com Wed Oct 16 23:16:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 23:16:02 2002 Subject: [ODE] robotic simulation In-Reply-To: <3DA8EF87.778199E3@aist.go.jp> Message-ID: On Sun, 13 Oct 2002, Max Lungarella wrote: > i tried "juice", it's pretty cool, and well designed. the only problem that i > have with it, is that i cannot export the models i realize. in other words, it > would be neat if i could construct something using juice, and be able to > import this something in one of my own programs. do you have plans do add > similar feature? I have no such plans, but I do plan to document the file format to help anyone interested in writing a translator or importer. I'm also looking at the Novodex file format as a possible replacement for the XML-based format that Juice uses now. > ode is so easy to use and also aesthetically more pleasant ;) I feel the same way! -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 16 23:20:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 23:20:02 2002 Subject: [ODE] networking In-Reply-To: <000001c27536$37d05880$6401a8c0@donald> Message-ID: On Wed, 16 Oct 2002, Eric Cha wrote: > A better way (for physics) to do things would be to designate one > computer as "the physics simulator". Do the entire scene simulation on > that computer, and then just transmit position/orientation/velocity > updates to other computers. Of course, other computers would transmit > user inputs (or even impulse/velocity/acceleration changes) to the > simulator computer to control their respective robot. I hope you all don't mind too much my attempt to hijack this thread and turn it into a discussion of networked physics in general. :-) Having a single computer be "the" simulator solves a lot of problems, and in many cases would be the best solution. A co-worker and I did a multi-user simulation this way a few years ago and it worked well. (We didn't have physics to worry about, but we did have related issues with maintaining coherent world states on all of the 'client' machines.) The thing that makes me want to avoid that model today is that physics takes a lot of CPU power. Every client brings a fast CPU to the party... if there's a way to make use of that power, many clients together could be able to do much more complex simulations than a single server (or rather, "more complex that the server *I* can afford"). Ideally, it gets a lot cheaper to scale the system to support more users, becase each user brings enough CPU power to do their share of the computation. Practically it will never be quite that scalable, but I still like the idea. If you can have each client simulate the parts of the player's body or vehicle, then broadcast the positions and orientations, the server's CPU requirements go down quite a bit. Note that I'm assuming a game sort of paradigm here, but other scenarios could use other methods of assigning objects to CPUs. I'd elaborate, but I see that Anselm has already described something like what I had in mind, only better. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From amoravanszky at dplanet.ch Thu Oct 17 02:14:02 2002 From: amoravanszky at dplanet.ch (amoravanszky@dplanet.ch) Date: Thu Oct 17 02:14:02 2002 Subject: [ODE] robotic simulation Message-ID: <200210170913.g9H9DQx22252@dubb05h07-0.dplanet.ch> Nate W wrote: > I have no such plans, but I do plan to document the file format to help > anyone interested in writing a translator or importer. I'm also looking > at the Novodex file format as a possible replacement for the XML-based > format that Juice uses now. Nate, just in case you are wondering, you are welcome to use our file format not only for NovodeX related functionality, but also as a generic physics scene description format also used in conjunction with ODE. We at NovodeX think the entire community, regardless of which physics SDK is used, would benefit from a file format that is an open standard. In particular we are open to file format extensions as required by Juice -- though of course we should debate them first. BTW: The file format description is available as part of the NovodeX Steel SDK download here: http://www.novodex.com/downloads/steel-personal.exe Note that you don't have to buy the SDK to be able to read the documentation or use the viewer/exporters. -- Adam Moravanszky /*================*\ |Chief Software Architect |NovodeX AG |physics middleware |www.novodex.com \*================*/ From Remko at act-3d.com Thu Oct 17 02:41:01 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Thu Oct 17 02:41:01 2002 Subject: [ODE] Another strange wheel rotation bug Message-ID: <277472262.78464215.98@server> I fixed the 'bending wheels' problem using the following methods. The problem still exists but at least you can reduce it to acceptable levels: - Decrease the step size (update of 200-300Hz) - Different CFM and ERP values - Different masses - Bigger wheels (The bigger the wheels, the slower they have to turn for the same speed) I'm experimenting with a driving simulation and the results are stunning! However, after some experimentation, the car started to bounce and the handling was completely gone. It turned out that the wheel is not rotating around it's axis but around a point slightly above that. Gravity was causing this offset. Gravity pulls the wheel down so the rotation axis of the hinge is too high. What really surprised me, is the solution I found: When I set the gravity to zero the problem does not occur (as expected). When I crank up the gravity while the simulation is running, the bug does not come back but the wheel rotates around the correct point. Does anyone has an explanation for this? Why the rotation screws up when I initialize with gravity? -Remko From johnb003 at hotmail.com Thu Oct 17 04:32:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Thu Oct 17 04:32:02 2002 Subject: [ODE] Wheel Rotation Problem Message-ID: Actually to be honest, I've been struggling with the wheel rotation problem the last few days as well. I did notice a much better behaving system with a smaller timestep as I tested out my buggy on a big open plane. Although to get my timestep small enough I had to call update world a bunch of times, more than I could feasibly when I have other factors in the game that slow it down, like terrain. I have not yet thought of a solution that would work in my case. _________________________________________________________________ Choose an Internet access plan right for you -- try MSN! http://resourcecenter.msn.com/access/plans/default.asp From ericc at xenopi.com Thu Oct 17 07:41:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Thu Oct 17 07:41:01 2002 Subject: [ODE] networking In-Reply-To: Message-ID: <000d01c275eb$9e070620$6401a8c0@donald> Anselm's solution is what I call the "classic" solution. It's "classic" in the sense that I know of several games which actually use that system (or something very similar). Just as a point of discussion, there are several other ways to approach the problem... For example, here is what we did with Dreadnoughts (a game which we were working on using Havok): Dreadnoughts had/has pretty extreme physics engine requirements. It's a first person shooter with HUGE vehicles (ever seen Stargate the movie? Think of the flying pyramids..) We had to simulate moving structures which were large enough so that entire Quake-style levels would fit INSIDE of them. The player could run around inside these ships and then go outside and run around a huge outdoor world. At the same time, the ships themselves were moving and could battle it out with each other and interact with full physics with the environment. All this had to take place seamlessly. If a player was inside the ship looking out, he/she could see the other players running/flying around the terrain and could interact with those players.. Anyway, we found that because of memory constraints, we could not do the "master heartbeat physics server" method (the levels were so large that we were paging them in and out of memory as you moved around..) Instead, we chopped the world up into regions (pretty easy as the world was already partitioned into regions for our paging system) and dynamically assigned client computers as the physics master simulators. It was/is very tricky to implement, and not without problems in implementation. However, the end result was full physics simulation of a HUGE environment with the load being (relatively) evenly distributed amongst participant's computers... Eric > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf Of Nate W > Sent: Wednesday, October 16, 2002 3:28 PM > To: ode@q12.org > Subject: RE: [ODE] networking > > > On Wed, 16 Oct 2002, Eric Cha wrote: > > > A better way (for physics) to do things would be to designate one > > computer as "the physics simulator". Do the entire scene > simulation > > on that computer, and then just transmit > position/orientation/velocity > > updates to other computers. Of course, other computers > would transmit > > user inputs (or even impulse/velocity/acceleration changes) to the > > simulator computer to control their respective robot. > > I hope you all don't mind too much my attempt to hijack this > thread and turn it into a discussion of networked physics in > general. :-) > > Having a single computer be "the" simulator solves a lot of > problems, and in many cases would be the best solution. A > co-worker and I did a multi-user simulation this way a few > years ago and it worked well. (We didn't have physics to > worry about, but we did have related issues with maintaining > coherent world states on all of the 'client' machines.) > > The thing that makes me want to avoid that model today is > that physics takes a lot of CPU power. Every client brings a > fast CPU to the party... if there's a way to make use of that > power, many clients together could be able to do much more > complex simulations than a single server (or rather, "more > complex that the server *I* can afford"). Ideally, it gets a > lot cheaper to scale the system to support more users, becase > each user brings enough CPU power to do their share of the > computation. Practically it will never be quite that > scalable, but I still like the idea. > > If you can have each client simulate the parts of the > player's body or vehicle, then broadcast the positions and > orientations, the server's CPU requirements go down quite a > bit. Note that I'm assuming a game sort of paradigm here, > but other scenarios could use other methods of assigning > objects to CPUs. > > I'd elaborate, but I see that Anselm has already described > something like what I had in mind, only better. :-) > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From shaul_kedem at yahoo.com Thu Oct 17 10:22:02 2002 From: shaul_kedem at yahoo.com (Shaul Kedem) Date: Thu Oct 17 10:22:02 2002 Subject: [ODE] High level graphics languages Message-ID: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Hi all, Recently there is a lot of talk about high level languages for graphical use. John Carmack, known for it's Doom and Quake engines, said on the last quakecon keynote speech that his next game will be written on a high level language, stating that he sees such languages as the future trend. Can anyone give me pointers / links / recommendations about such languages? The reason I am posting it here is that I want (obviously) to implement ODE in such a language. Thanks, Shaul. __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From ericc at xenopi.com Thu Oct 17 10:39:02 2002 From: ericc at xenopi.com (Eric Cha) Date: Thu Oct 17 10:39:02 2002 Subject: [ODE] High level graphics languages In-Reply-To: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Message-ID: <001c01c27604$856969a0$6401a8c0@donald> There are numerous HLSL's (High Level Shader Languages) out there. Probably the two that are garnering the most attention (right now) are OpenGL 2.0 and nVidia's Cg (which, if you believe nVidia, will be cross compatible with DX9 HLSL).. Eric > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > Of Shaul Kedem > Sent: Thursday, October 17, 2002 10:22 AM > To: ode@q12.org > Subject: [ODE] High level graphics languages > > > Hi all, > Recently there is a lot of talk about high level > languages for graphical use. > > John Carmack, known for it's Doom and Quake engines, > said on the last quakecon keynote speech that his next > game will be written on a high level language, stating > that he sees such languages as the future trend. > > Can anyone give me pointers / links / recommendations > about such languages? > > The reason I am posting it here is that I want > (obviously) to implement ODE in such a language. > > Thanks, > Shaul. > > __________________________________________________ > Do you Yahoo!? > Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From jason at 379.com Thu Oct 17 10:52:01 2002 From: jason at 379.com (J. Perkins) Date: Thu Oct 17 10:52:01 2002 Subject: [ODE] High level graphics languages In-Reply-To: <20021017172136.34012.qmail@web40020.mail.yahoo.com> References: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Message-ID: <1034876397.2181.28.camel@imperius.um.us.sbphrd.com> I think you misunderstood the interview. I believe he said that his next game would use a high level *shader* language. I would be very surprised indeed if iD were to release Quake4 in Python! ;) Jason 379 On Thu, 2002-10-17 at 13:21, Shaul Kedem wrote: > John Carmack, known for it's Doom and Quake engines, > said on the last quakecon keynote speech that his next > game will be written on a high level language, stating > that he sees such languages as the future trend. From ivan.bolcina at volja.net Thu Oct 17 12:40:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Thu Oct 17 12:40:02 2002 Subject: [ODE] 3d world an directx Message-ID: <013401c27614$d4c0bde0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0131_01C27625.97E1A450 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Problems. Is ode 3d world different from DirectXs? It seems to me that y and z = axes are swapt. bye,ivan ------=_NextPart_000_0131_01C27625.97E1A450 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
    = Problems.
 
Is ode 3d world different from = DirectXs? It seems=20 to me that y and z axes are swapt.
 
bye,ivan
------=_NextPart_000_0131_01C27625.97E1A450-- From russ at q12.org Thu Oct 17 15:23:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 17 15:23:02 2002 Subject: [ODE] i will speak at IndieGamesCon'02 Message-ID: FYI, i will be speaking about ODE at IndieGamesCon'02 (www.indiegamescon.com), on saturday november 2nd in eugene, oregon. i'll be talking about the following topics: * ODE's application to the game industry - particularly its relevance to the indie game developer. * the technology behind ODE. * how/where ODE has been used. * pros and cons of using ODE (and other dynamics toolkits) for various kinds of games and VR environments. i will talk about vehicles at length. * alternatives to ODE - free and commercial. * the future of dynamics/simulation. * challenges for the [indie] game industry. * other interesting topics that occur to me, or that are suggested. my presentation will be up on q12.org sometime before or after the conference. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Thu Oct 17 20:30:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 17 20:30:02 2002 Subject: [ODE] VStudioNet In-Reply-To: Message-ID: On Wed, 16 Oct 2002, Tomas Sakalauskas wrote: > > [...] debugging induces big headaches fast because the debugger > > usually goes to the wrong line in the source file. Is anyone else > > seeing this? > > Yes. You have to replace CRCRLF in files with CRLF, this confuses VS.NET. That fixes it. I thank you a thousand times. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From tetron at interreality.org Thu Oct 17 22:52:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Thu Oct 17 22:52:02 2002 Subject: [ODE] box stacking instability Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I've noticed that the "boxstack" test is unstable as well, although not to the degree that the test program I'm using does. If one box comes to rest on another, while it doesn't pop up (as in this other demo) it does appear to vibrate and will move about -- I presume this is due to impulses correcting for penetration of the top box into the lower box. I'm talked to a professor who knows something about dynamics systems, and his understanding is that the impulse-based method in inherently unstable in this configuration -- using this algorithm it is almost impossible for the system to come to equilibrium. This seems to be an enormous problem, and one which makes ODE rather useless for my purposes. It looks like I shall have to just use collision detection with some basic physics hacked on... I need for it to be possible for objects to be supported by others, such as platforms on which other objects rest. It seems that ODE handles the case of stability on a plane quite well, but that is rather limited use compared to the general case :-( On a side note, the same professor mentioned the Arachi dynamics engine (www.arachi.com). It's commercial and exceedingly expensive ($30,000) but he speaks very highly of it. It would be interesting to potentially adopt some of their techniques... [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9r6FUaeHUyhjCHfcRAkJvAJsHkWstAZ1s9//kp6XfUEizoDzidgCggLVp jxxJXvtNwBkgQGNxF+ESZwk= =B4Ld -----END PGP SIGNATURE----- From coding at natew.com Thu Oct 17 23:25:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 17 23:25:02 2002 Subject: [ODE] box stacking instability In-Reply-To: Message-ID: On Fri, 18 Oct 2002, Peter Amstutz wrote: > If one box comes to rest on another, while it doesn't pop up (as in > this other demo) it does appear to vibrate and will move about -- I > presume this is due to impulses correcting for penetration of the top > box into the lower box. > I'm talked to a professor who knows something about dynamics systems, and > his understanding is that the impulse-based method in inherently > unstable in this configuration [...] As Russ said, the real problem is that the box-box collision detection code is not yet finished. If you search the mailing list archives, you'll find that this is a known problem, it is a solvable problem, and it will be fixed. > It seems that ODE handles the case of stability on a plane quite well, > but that is rather limited use compared to the general case :-( Yes, boxes can rest on planes in a perfectly stable manner. When a box lies flat on a plane, the box-plane collision code generates three contact constraints, so the box is held in place. In my own application, I had the same problem with box-plane contact - not because of a problem with ODE, but because of a mistake on my part. My code was only keeping the first of up to three contact constraints that would be generated when a box contacted a plane. The result was identical to the behavior that you see now with box-box collision detection. When I fixed my code to use all three contacts, the 'boiling' effect went away completely. I have no doubt that boxes will rest on other boxes when the box-box collision code returns three contact constraints when boxes are touching in a face-to-face configuration. It works for boxes on planes now, it will work for boxes on boxes eventually. -- Nate Waddoups Redmond WA USA http://www.natew.com From p.terdiman at wanadoo.fr Thu Oct 17 23:36:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 17 23:36:02 2002 Subject: [ODE] box stacking instability References: Message-ID: <046e01c27670$422f3540$0e00000a@pierre> > I've noticed that the "boxstack" test is unstable as well, although not to > the degree that the test program I'm using does. If one box comes to rest > on another, while it doesn't pop up (as in this other demo) it does appear > to vibrate and will move about -- I presume this is due to impulses > correcting for penetration of the top box into the lower box. > > I'm talked to a professor who knows something about dynamics systems, and > his understanding is that the impulse-based method in inherently unstable > in this configuration -- using this algorithm it is almost impossible for > the system to come to equilibrium. This seems to be an enormous problem, > and one which makes ODE rather useless for my purposes. It looks like I > shall have to just use collision detection with some basic physics hacked > on... I need for it to be possible for objects to be supported by others, > such as platforms on which other objects rest. It seems that ODE handles > the case of stability on a plane quite well, but that is rather limited > use compared to the general case :-( The boxstack test is unstable because the collision detection routine reports a single contact point, period. Pierre From russ at q12.org Fri Oct 18 00:03:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 00:03:02 2002 Subject: [ODE] box stacking instability In-Reply-To: References: Message-ID: <20021018000754.21ea5baa.russ@q12.org> > I presume this is due to impulses > correcting for penetration of the top box into the lower box. actually, ODE does not use impulse based methods. > On a side note, the same professor mentioned the Arachi dynamics > engine(www.arachi.com). It's commercial and exceedingly expensive > ($30,000) but he speaks very highly of it. It would be interesting to > potentially adopt some of their techniques... hmmm ... the web site gives no clues about the techniques (or about anything, really). does anyone know what arachi is doing? russ. -- Russell Smith http://www.q12.org From mimodene at yahoo.com Fri Oct 18 01:14:01 2002 From: mimodene at yahoo.com (mica modenese) Date: Fri Oct 18 01:14:01 2002 Subject: [ODE] beginnersproblem with ode: stack overflow Message-ID: <20021018081342.89297.qmail@web10903.mail.yahoo.com> hi all. i am kind of new to this and so my question might be rather silly. I've been using ODE for 1 week for a biped robot simulation. now my biped consists of 52 bodies 27 hinge joints, 14 prismatic joints and 28 balljoints and 4 contactmodels. now it keeps crashing, telling something about stack overflow and increasing the stacksize (/F in VC++) doesn't seem to work, ODE is allready allocating maxsize for the stack ? before i fry my brain: am i asking to much ?? do i have to reduce bodies and joints ?? thx mike __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From coding at natew.com Fri Oct 18 02:13:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 02:13:02 2002 Subject: [ODE] beginnersproblem with ode: stack overflow In-Reply-To: <20021018081342.89297.qmail@web10903.mail.yahoo.com> Message-ID: With that many joints, you'll need LOTS of stack. Juice has about 8 megabytes of stack, and I suspect that the structure you're building would overflow Juice's stack. With VS.Net, the linker option I'm using is /STACK:8000000 but maybe it's /F with earlier versions? I dunno. Anyhow, try or 10 megs or so, then double it if your app still crashes with a stack overflow. Then double it again if need be, and so on until it stops crashing. Expect a rather slow frame rate, too... it's going to take a lot of number crunching to make all those joints work. If you can generate a picture of your biped, I hope you will share it. It sounds pretty interesting. :-) On Fri, 18 Oct 2002, mica modenese wrote: > i am kind of new to this and so my question might be > rather silly. I've been using ODE for 1 week for a > biped robot simulation. now my biped consists of 52 > bodies 27 hinge joints, 14 prismatic joints and 28 > balljoints and 4 contactmodels. now it keeps crashing, > telling something about stack overflow and increasing > the stacksize (/F in VC++) doesn't seem to work, ODE > is allready allocating maxsize for the stack ? before > i fry my brain: am i asking to much ?? do i have to > reduce bodies and joints ?? From thubba at gmx.net Fri Oct 18 02:52:02 2002 From: thubba at gmx.net (Michael Scharvogel) Date: Fri Oct 18 02:52:02 2002 Subject: [ODE] a newbies question on hinge and robot legs... Message-ID: <020c01c2768b$d87d7eb0$c36abb84@tig> This is a multi-part message in MIME format. ------=_NextPart_000_0209_01C2769C.9BB0DBB0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi folks... I started working with ODE some time ago. But I encounter some problems = on understanding the manual and all the "how to model my stuff witrh = ode" subject. Thus I will briefly describe my problem. Maybe someone can comment on = that: I want to model some kind of bug robot.For the start, it shall have the = follwoing structure: H : hinge T : Thorax (CCylinder) L : Leg (Box) L H L H TTT H L H L TTT TTT L H L H TTT H L H L TTT TTT L H L H TTT H L H L (One Body, six legs, each leg consisting of two parts and connected by = two hinges) In the final state I'd like to say something like: Hinge 1 bow 10 degrees. So do I have to attach Motors to the hinges to achiev this (I did not = quiet figure out how this could work) or do I have to use these = Transform geometries and rotate them (I I understood them right they can = be used to rotate for example a leg around one of its ends) Well, you see, I not quiet used to the subject. But maybe someone could = help me getting it :-) Perhaps someone has done something liek that, or someone could provide = me some example code... Thanx a lot,=20 mike. ------=_NextPart_000_0209_01C2769C.9BB0DBB0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi folks...

I started working = with ODE some=20 time ago. But I encounter some problems on understanding the manual and = all the=20 "how to model my stuff witrh ode" subject.
Thus I will briefly = describe my=20 problem. Maybe someone can comment on that:

I want to model some = kind of=20 bug robot.For the start, it shall have the follwoing structure:
H :=20 hinge
T : Thorax (CCylinder)
L : Leg (Box)

L H L H TTT H L H L
       =20 TTT
       =20 TTT
L H L H TTT H L H L
       =20 TTT
       =20 TTT
L H L H TTT H L H L
 
 
(One Body, six legs, each leg consisting of two = parts and=20 connected by two hinges)
 
In the final state I'd like to say something=20 like:
Hinge 1 bow 10 degrees.
 
So do I have to attach Motors to the hinges to = achiev this=20 (I did not quiet figure out how this could work) or do I have to use = these=20 Transform geometries and rotate them (I I understood them right they can = be used=20 to rotate for example a leg around one of its ends)
 
 
Well, you see, I not quiet used to the subject. = But maybe=20 someone could help me getting it :-)
Perhaps someone has done something liek that, or = someone=20 could provide me some example code...
 
Thanx a lot,
mike.
------=_NextPart_000_0209_01C2769C.9BB0DBB0-- From mal at candomultimedia.com Fri Oct 18 06:50:02 2002 From: mal at candomultimedia.com (Malachy Duffin) Date: Fri Oct 18 06:50:02 2002 Subject: [ODE] Introduction / Suggestions etc Message-ID: <001801c276ad$38345a10$d834fe3e@MalLaptop> Hello all, Mal here from canDo Multimedia, an Irish 3D interactive development company. We are using a lot of Shockwave 3D at the moment ( along with the online Havok engine ) for some web games, which you can see at... http://www.candomultimedia.com/games/demos.htm Firstly, I don't know if many of you on the list know, but ODE will soon be integrated as a physics option into the realtime 3D engine of the now open sourced version of Blender ( www.blender.org ). This is great for a number of reasons... - It will raise the awareness of open source game related projects like Blender and ODE. - More developers will be keen to work on these projects - Because Blender is cross platform, a lot of work will be carried out to ensure that ODE is deployed on platforms that it wasn't available on before - ODE developers will be able to show what the engine can do online ( Blender has a web plugin ) Blender has a fairly high learning curve, but is a great prototyping tool ( imagine designing a car, defining it's wheels / suspension / mass etc and clicking a button to immediately let you drive it around a 3D world for testing purposes / to let the artists play with parameters etc ). I am looking forward to seeing a lot more content created this way! It makes it more accessible for artists to know how to design content for physics based games ( using proxies, compound convex objects etc for optimisations ) One quick suggestion, from the http://q12.org/ode/ode.html website there doesn't seem to be any updates on news, or any easy way to see examples of content created with ODE. A quick revamp with a gallery of examples and links to downloadable demos would be great, as a lot more people should be checking it out over the coming months. Thanks for taking the time to read the post, and I look forward to reading future postings on this mailing list. Mal From martin at metahuman.org Fri Oct 18 07:26:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Fri Oct 18 07:26:02 2002 Subject: [ODE] a newbies question on hinge and robot legs... References: <020c01c2768b$d87d7eb0$c36abb84@tig> Message-ID: <3DB019E0.3970D42D@metahuman.org> > Michael Scharvogel wrote: > > (One Body, six legs, each leg consisting of two parts and connected by > two hinges) > > In the final state I'd like to say something like: > Hinge 1 bow 10 degrees. > > So do I have to attach Motors to the hinges to achiev this (I did not > quiet figure out how this could work) or do I have to use these > Transform geometries and rotate them (I I understood them right they can > be used to rotate for example a leg around one of its ends) You need a motor. Transform geometries are for fixed relationships. However, hinges come with a motor built in. The motor controls velocity, not position, so the easiest thing is probably to set the velocity proportional to how far off the position is. Once you've figured out your desired velocity, call: dJointSetHingeParam (joint, dParamVel, desired_velocity); - Martin From ivan.bolcina at volja.net Fri Oct 18 08:04:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 18 08:04:02 2002 Subject: [ODE] 3d world directx Message-ID: <004801c276b7$88d9c0e0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0045_01C276C8.4C3936F0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Yes, but every time i get/set position,direction from ode to directx = structs, and vice versa, I have to swap y and z. ------=_NextPart_000_0045_01C276C8.4C3936F0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Yes, but every time i get/set = position,direction=20 from ode to directx structs, and vice versa, I have to swap y and=20 z.
------=_NextPart_000_0045_01C276C8.4C3936F0-- From ericc at xenopi.com Fri Oct 18 09:46:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Fri Oct 18 09:46:01 2002 Subject: [ODE] box stacking instability In-Reply-To: <20021018000754.21ea5baa.russ@q12.org> Message-ID: <001c01c276c6$28703680$6401a8c0@donald> Funny that you mention Arachi. I know the founder (Kyong Sok Chang) - he's an old friend of mine from college. We went to Umich (go Blue!) together (and actually got the same degree in Aerospace Engineering) I haven't talked to K.C. in quite a while, but did run into him at the GDC 2 years back when he had just started Arachi. I believe K.C. did his graduate (PhD) work at Stanford on computer physics simulation, and I believe founded the company based on his research. I haven't read over his research, but you might want to do a search of academic papers using his name to see what you might come up with. I *would* drop K.C. a line, but as I said, I haven't talked to him in quite a while, and to be honest, I would feel quite awkward asking him about his technology when I have no interest in it whatsoever (because we have our own solution which is working at a satisfactory level). Eric > > On a side note, the same professor mentioned the Arachi dynamics > > engine(www.arachi.com). It's commercial and exceedingly expensive > > ($30,000) but he speaks very highly of it. It would be > interesting to > > potentially adopt some of their techniques... > > hmmm ... the web site gives no clues about the techniques (or > about anything, really). does anyone know what arachi is doing? > > russ. > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From russ at q12.org Fri Oct 18 10:06:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 10:06:01 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: <001801c276ad$38345a10$d834fe3e@MalLaptop> References: <001801c276ad$38345a10$d834fe3e@MalLaptop> Message-ID: <20021018100957.7ff31ceb.russ@q12.org> > One quick suggestion, from the http://q12.org/ode/ode.html website > there doesn't seem to be any updates on news, or any easy way to see > examples of content created with ODE. the 'community' section has links to some downloadable demos. as far as 'news' goes - various incremental improvements have been reported only on the mailing list in the past months, not on the web site. i'm gradually working towards a new release that will fix a number of long-outstanding issues and also finally integrate some of the 'contrib' code that has been contributed. russ. -- Russell Smith http://www.q12.org From ivan.bolcina at volja.net Fri Oct 18 10:19:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 18 10:19:02 2002 Subject: [ODE] 3d world directx -- slipch, please help Message-ID: <002301c276ca$52d446b0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0020_01C276DB.162787C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi,look at this code: //get orientation from ode and put it in my d3d Quatrernion const dReal *qx=3D dBodyGetQuaternion (PhyBody); D3DXQUATERNION qxx; qxx.x=3D(float)qx[0]; qxx.y=3D(float)qx[2]; qxx.z=3D(float)qx[1]; qxx.w=3D(float)qx[3]; setOrientation(qxx); //to directx //get positionfrom ode and put it in my D3DXVECTOR3 const dReal * p=3DdBodyGetPosition(PhyBody); //to directx m_Position.x=3D(float)p[0]; m_Position.y=3D(float)p[2]; m_Position.z=3D(float)p[1]; //same for velocity const dReal * p1=3DdBodyGetLinearVel(PhyBody);=20 move.x=3D(float)p1[0]; move.y=3D(float)p1[2]; move.z=3D(float)p1[1]; //end test //I dont understand ..... :-((( I wish to get angular rotation around = x,y,z //then I wish to find differece between wished angular rotation(from = joystick) and current angular rotation //then I wish to apply torque so they eventually mach. const dReal * rotx=3DdBodyGetAngularVel (PhyBody); dVector3 result; dBodyVectorFromWorld(PhyBody, rotx[0],rotx[1],rotx[2],result); rotate.x=3Dresult[0]; rotate.y=3Dresult[1]; rotate.z=3Dresult[2]; D3DXVECTOR3 = rotVec=3DMaxRotate*D3DXVECTOR3(controls.axis_lr*1.0f,-controls.axis_ro*1.= 0f,-controls.axis_ud*1.0f); rotVec-=3Drotate; if (rotVec.x>0) rotVec.x=3DRotMax; if (rotVec.x<0) rotVec.x=3D-RotMax; if (rotVec.y>0) rotVec.y=3DRotMax; if (rotVec.y<0) rotVec.y=3D-RotMax; if (rotVec.z>0) rotVec.z=3DRotMax; if (rotVec.z<0) rotVec.z=3D-RotMax; dBodyAddRelTorque(PhyBody,70000.0f*rotVec.x,70000.0f*rotVec.y,70000.0f*ro= tVec.z); //force which heads me forward, move is current movement, posp is wished = movement(from joystick) float facsped=3D1.0f; if (controls.burner) facsped=3D2.0f; D3DXVECTOR3 posp; //m_vz is vector forward if (controls.burner) posp=3Dm_vz*1.0f*SpeedMax*facsped; else posp=3Dm_vz*controls.axis_throttle*SpeedMax*facsped; //v razliko posp-=3Dmove; float len=3DD3DXVec3Length(&posp); if (len!=3D0.0f) { posp/=3Dlen; D3DXVECTOR3 ForceApplied=3Dposp*MaxEngine;=20 dBodyAddForce(PhyBody,ForceApplied.x,ForceApplied.z,ForceApplied.y); = //SEE HERE } ------=_NextPart_000_0020_01C276DB.162787C0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi,look at this code:

 

 

//get orientation from ode and put it in my d3d=20 Quatrernion

const = dReal *qx=3D=20 dBodyGetQuaternion (PhyBody);

D3DXQUATERNION qxx;

qxx.x=3D(float)qx[0];

qxx.y=3D(float)qx[2];

qxx.z=3D(float)qx[1];

qxx.w=3D(float)qx[3];

setOrientation(qxx);        &n= bsp;       =20 //to directx

 

//get positionfrom ode and put it in my=20 D3DXVECTOR3

const = dReal *=20 p=3DdBodyGetPosition(PhyBody);

//to directx

m_Position.x=3D(float)p[0];

m_Position.y=3D(float)p[2];

m_Position.z=3D(float)p[1];

 

//same for velocity

const = dReal *=20 p1=3DdBodyGetLinearVel(PhyBody);

move.x=3D(float)p1[0];

move.y=3D(float)p1[2];

move.z=3D(float)p1[1];

//end test

 

 

//I dont understand ..... = :-(((  I wish=20 to get angular rotation around x,y,z

//then I wish to find differece = between wished=20 angular rotation(from joystick) and current angular rotation

//then I wish to apply torque so = they=20 eventually mach.

const = dReal *=20 rotx=3DdBodyGetAngularVel (PhyBody);

dVector3 result;

dBodyVectorFromWorld(PhyBody, rotx[0],rotx[1],rotx[2],result);

rotate.x=3Dresult[0];

rotate.y=3Dresult[1];

rotate.z=3Dresult[2];

D3DXVECTOR3=20 rotVec=3DMaxRotate*D3DXVECTOR3(controls.axis_lr*1.0f,-controls.axis_ro*1.= 0f,-controls.axis_ud*1.0f);

rotVec-=3Drotate;

if = (rotVec.x>0)=20 rotVec.x=3DRotMax;

if = (rotVec.x<0)=20 rotVec.x=3D-RotMax;

if = (rotVec.y>0)=20 rotVec.y=3DRotMax;

if = (rotVec.y<0)=20 rotVec.y=3D-RotMax;

if = (rotVec.z>0)=20 rotVec.z=3DRotMax;

if = (rotVec.z<0)=20 rotVec.z=3D-RotMax;

dBodyAddRelTorque(PhyBody,70000.0f*rotVec.x,70000.0f*rotVec.y,70000.0f= *rotVec.z);

 

 

//force which heads me forward, move = is current=20 movement, posp is wished movement(from joystick)

float = facsped=3D1.0f;

if = (controls.burner)=20 facsped=3D2.0f;

D3DXVECTOR3 posp;

//m_vz is vector forward

if=20 (controls.burner)

    posp=3Dm_vz*1.0f*SpeedMax*facsped;

else

    = posp=3Dm_vz*controls.axis_throttle*SpeedMax*facsped;

//v razliko

posp-=3Dmove;

float=20 len=3DD3DXVec3Length(&posp);

if = (len!=3D0.0f)

{

    posp/=3Dlen;

    D3DXVECTOR3 ForceApplied=3Dposp*MaxEngine;

   =20 dBodyAddForce(PhyBody,ForceApplied.x,ForceApplied.z,ForceApplied.y); = ;      =20 //SEE HERE

}

 
------=_NextPart_000_0020_01C276DB.162787C0-- From coding at natew.com Fri Oct 18 10:39:01 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 10:39:01 2002 Subject: [ODE] a newbies question on hinge and robot legs... In-Reply-To: <020c01c2768b$d87d7eb0$c36abb84@tig> Message-ID: On Fri, 18 Oct 2002, Michael Scharvogel wrote: > In the final state I'd like to say something like: > Hinge 1 bow 10 degrees. > > So do I have to attach Motors to the hinges to achiev this (I did not > quiet figure out how this could work) or do I have to use these > Transform geometries and rotate them (I I understood them right they > can be used to rotate for example a leg around one of its ends) What you're talking about is a job for motors. You don't have to "attach" motors to joints though, in ODE joints have motorization built into them. The motor API does not allow command like "move 10 degrees" though. Instead, you ask it something like "Hinge 1 move at 5 degrees per second" until the hinge is at the angle you desire. This means checking the hinge angle every frame, comparing it to the desired hinge angle, and asking it to move at a speed proportional to the difference. If you search the mailing list archives you'll probably find some messagse from me on this subject. The most recent of those messages are the most correct - I was trying to do it the wrong way at first. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Fri Oct 18 10:51:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 10:51:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: <001801c276ad$38345a10$d834fe3e@MalLaptop> Message-ID: On Fri, 18 Oct 2002, Malachy Duffin wrote: > imagine designing a car, defining it's wheels / suspension / mass > etc and clicking a button to immediately let you drive it around a 3D > world for testing purposes "Imagine?" :-) http://www.natew.com/juice/frames.cgi/general/html.ScreenShots http://www.natew.com/juice/frames.cgi/general/html.Pix > One quick suggestion, from the http://q12.org/ode/ode.html website there > doesn't seem to be any updates on news, or any easy way to see examples > of content created with ODE. > > A quick revamp with a gallery of examples and links to downloadable > demos would be great, as a lot more people should be checking it out > over the coming months. Check the community page for examples of content. There are a few projects with screenshots and downloadable movies, not just mine. -- Nate Waddoups Redmond WA USA http://www.natew.com From Alan_Gordie at payformance.com Fri Oct 18 11:11:01 2002 From: Alan_Gordie at payformance.com (Alan Gordie) Date: Fri Oct 18 11:11:01 2002 Subject: [ODE] Introduction / Suggestions etc Message-ID: Hi Mal! Well, perhaps it's time for me to de-lurk... (due to the mention of ODE integration with Blender) My name is Alan Gordie and I've been steadily building a robust, spring-mass simulation engine (http://gordie.go.dyndns.org/) for simulating vehicles and structures for fun. Contemplating the GPL release of Blender, I'd been toying with the idea of grafting my sim code into/onto Blender, but that would be pointless if ODE were to be integrated with Blender. At any rate, I've been following ODE (and the mailing list) for awhile now and find myself continually more impressed with its' progress as time goes on. (Thanks to Russ and the rest of you!) It seems to me that ODE has reached 'escape velocity' in terms of project growth and community support. Don't get me wrong, I think there is huge potential, but it seems like it has enough momentum now to easily move to the next level. And the point is: Now, after the release of the Blender source, I've decided to contribute in any ways that I can in terms of adding my spring-mass modeling primitives to ODE, as well as offering development assistance for the "ODE Plugin" for Blender. As Mal mentioned, there are many compelling reasons to add support this effort, but there is one that stands out for me. It will ensure that there is a open-sourced, freely-available tool suite for rigid body simulation. So, who else is interested in devoting some time to the ODE/Blender effort? I've been hanging around in #ode on EFNET since it was announced a few days ago, but there hasn't been much activity. If there are enough interested parties, I'd like to propose that we hook up on irc to start drawing up a set of plans. Any takers? Alan alan_gordie@payformance.com alangordie@attbi.com -----Original Message----- From: Malachy Duffin [mailto:mal@candomultimedia.com] Sent: Friday, October 18, 2002 9:50 AM To: ode@q12.org Subject: [ODE] Introduction / Suggestions etc Hello all, Mal here from canDo Multimedia, an Irish 3D interactive development company. We are using a lot of Shockwave 3D at the moment ( along with the online Havok engine ) for some web games, which you can see at... http://www.candomultimedia.com/games/demos.htm Firstly, I don't know if many of you on the list know, but ODE will soon be integrated as a physics option into the realtime 3D engine of the now open sourced version of Blender ( www.blender.org ). This is great for a number of reasons... - It will raise the awareness of open source game related projects like Blender and ODE. - More developers will be keen to work on these projects - Because Blender is cross platform, a lot of work will be carried out to ensure that ODE is deployed on platforms that it wasn't available on before - ODE developers will be able to show what the engine can do online ( Blender has a web plugin ) Blender has a fairly high learning curve, but is a great prototyping tool ( imagine designing a car, defining it's wheels / suspension / mass etc and clicking a button to immediately let you drive it around a 3D world for testing purposes / to let the artists play with parameters etc ). I am looking forward to seeing a lot more content created this way! It makes it more accessible for artists to know how to design content for physics based games ( using proxies, compound convex objects etc for optimisations ) One quick suggestion, from the http://q12.org/ode/ode.html website there doesn't seem to be any updates on news, or any easy way to see examples of content created with ODE. A quick revamp with a gallery of examples and links to downloadable demos would be great, as a lot more people should be checking it out over the coming months. Thanks for taking the time to read the post, and I look forward to reading future postings on this mailing list. Mal _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From nlin at nlin.net Fri Oct 18 11:44:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Fri Oct 18 11:44:02 2002 Subject: [ODE] ODE and the Blender real-time 3d modeling/gaming environment Message-ID: <20021018202815.GA32125@nlin.net> Hello, I have checked in a version of Blender with preliminary support for ODE. Set your CVSROOT to :pserver:anonymous@217.77.141.135:/cvs01 and do a CVS co of module "blender" to obtain the source code. For those who don't know, Blender is a powerful 3D modeling package which just became free software under the GPL license. It has a built-in real-time 3D game engine whose physics are now being replaced with ODE. Blender is very interesting for the ODE community because it can be a very powerful tool for quickly creating real-time games; now, coupled with ODE, it can be used for quickly creating ODE simulations - similar to Nate W's "juice" application, but with the full power of a general- purpose 3D modeler and game engine. For instance, using Blender's game engine, you can have ODE-controlled dynamic objects interact with other game objects controlled via scripts or paths. This is preliminary work. There is still a lot left to do. I only tested it on Debian GNU/Linux. See the todo list in OdePhysicsController.cpp for an idea of what still needs to be done. Anyone interested in contributing please discuss via the mailing list or private e-mail. Thanks, -Norman From Brad at fie.us Fri Oct 18 12:31:01 2002 From: Brad at fie.us (Brad Friedman) Date: Fri Oct 18 12:31:01 2002 Subject: [ODE] ODE and the Blender real-time 3d modeling/gaming environment References: <20021018202815.GA32125@nlin.net> Message-ID: <3DB06199.4020407@fie.us> From tetron at interreality.org Fri Oct 18 13:22:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 18 13:22:02 2002 Subject: [ODE] networking In-Reply-To: Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I'll jump in here. I really want to use ODE for my distributed multiuser virtual reality system (http://interreality.org), hence the interest in stable box stacking -- a virtual world would naturally allow you to stack stuff on top of other stuff just like in the real world (and then knock it down :-) The system is peer-to-peer and designed such that each object in the system has an authoratative instance, and the world is described by hyperlinking objects together (which usually includes linking across hosts) (lots more information about how this all fits together on the web page). For dynamics simulation, I intend to have a policy that the authoratative instance is entirely responsible for the dynamic movement of its objects, and nonlocal objects are considered more or less static. So the dynamics simulation is more or less consistant from the perspective of each user (even if globally it's way off, as long as it looks okay) without violating trust bounderies between hosts by manipulating objects you don't control. The problem with distributed simulation in the game paradigm is, of course, users may cheat -- however the VR stuff I'm interested in is intended to be social and not competetive, so there isn't really the same notion of "cheating". On Wed, 16 Oct 2002, Nate W wrote: > The thing that makes me want to avoid that model today is that physics > takes a lot of CPU power. Every client brings a fast CPU to the party... > if there's a way to make use of that power, many clients together could be > able to do much more complex simulations than a single server (or rather, > "more complex that the server *I* can afford"). Ideally, it gets a lot > cheaper to scale the system to support more users, becase each user brings > enough CPU power to do their share of the computation. Practically it > will never be quite that scalable, but I still like the idea. > > If you can have each client simulate the parts of the player's body or > vehicle, then broadcast the positions and orientations, the server's CPU > requirements go down quite a bit. Note that I'm assuming a game sort of > paradigm here, but other scenarios could use other methods of assigning > objects to CPUs. > > I'd elaborate, but I see that Anselm has already described something like > what I had in mind, only better. :-) [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9sG0vaeHUyhjCHfcRAlWcAJ4sCItHR5nYGP8MpA77B4uWQyaiqQCgr55D /GkkJGsj8Vvj1hnVHp/YifA= =ertj -----END PGP SIGNATURE----- From tetron at interreality.org Fri Oct 18 13:27:01 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 18 13:27:01 2002 Subject: [ODE] box stacking instability In-Reply-To: Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thu, 17 Oct 2002, Nate W wrote: > I have no doubt that boxes will rest on other boxes when the box-box > collision code returns three contact constraints when boxes are touching > in a face-to-face configuration. It works for boxes on planes now, it > will work for boxes on boxes eventually. This is very encouraging -- I quite want to see this happen as it is a prerequisite for ODE being useful for me. If someone can give me some pointers on where to look and what needs to be done, I'll happily roll my sleves up and look into fixing this. Any suggestions? [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9sG5jaeHUyhjCHfcRAjNhAKCqgzG0epl2qZy59mhDb608prVZ5gCgj0ap H8wDr1BK9N3wjcXrqtSwtJA= =jfiA -----END PGP SIGNATURE----- From russ at q12.org Fri Oct 18 13:50:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 13:50:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: cool! i'm in full support of ODE/blender integration - i think this is quite an exciting prospect. in fact i took some very preliminary steps in this direction as soon as the blender sources were released - but as norman is far in advance of my own pitiful attempt i will abandon what i am doing and help out the existing effort. i have a question: the commercial dynamics providers (ME, havok etc) have their own plugins for 3DSMax, maya, and other expensive tools. i am wondering what functionality, if any, would be lost by an artist switching from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a blender dummy.) about the suggestion to use IRC - it would be perhaps more useful to discuss this on the mailing list - so that at least we have an archived, google-searchable record. this discussion ties in with the file format discussion. i am guessing that the initial blender integration will be to run ODE simulations within blender to produce animation data, and that the saved dynamics information will be tied in with blenders own file format(s). it would also be nice if it blender could export a file format describing just the dynamical attributes that have been given to the geometry objects, so that in my game/simulation/whatever i could load this data, construct the ODE objects, then attach the objects to my scene data. it's important to have a file format that can separates dynamics attributes from the geometry data. this is because, e.g., i might design my dynamical system in blender but then use some non-blender-created graphics in my application. we dont want to tie the data to the application after all. nate and others - is there any useful level of concensus on what the "one true file format" should be? (disclaimer: i've not looked at the juice file format or any others). if there is no convergence yet, i have a pile of my own ideas i would like to contribute here. russ. -- Russ Smith http://www.q12.org/ From russ at q12.org Fri Oct 18 14:00:03 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 14:00:03 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: > i have a question: the commercial dynamics providers (ME, havok etc) have > their own plugins for 3DSMax, maya, and other expensive tools. i am > wondering what functionality, if any, would be lost by an artist switching > from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a > blender dummy.) oh ... and i know that 3DSMax/Havok supports cloth and squishy bodies (ODE doesn't yet) ... my question is more to do with the capabilities of blender itself vs 3DS etc. russ. -- Russ Smith http://www.q12.org/ From nathan at whatever.net Fri Oct 18 14:45:02 2002 From: nathan at whatever.net (Nate Waddoups) Date: Fri Oct 18 14:45:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: On Fri, 18 Oct 2002, Russ Smith wrote: > nate and others - is there any useful level of concensus on what the "one > true file format" should be? (disclaimer: i've not looked at the juice > file format or any others). if there is no convergence yet, i have a pile > of my own ideas i would like to contribute here. I went with an XML sort of format merely for the sake of experience with SAX and putting XML on my resume. It was also nice to have a pre-existing parser and a standard parser API (MSXML and SAX). I pretty much made it up as a went along, so I'm not terribly attached to the format. Novodex uses a format that looks friendly to C/C++ people (using { and } and familiar indenting, for example), and if I understand correctly they would be happy to see it used as a common open standard. It's definitely worth a look. Speaking of which, I'm reminded of a message from Adam @ Novodex that I didn't get around to replying to the other day... Anyhow, once a good file format gets agreed upon, I think a second key ingredient to standardization would be to have some open and shared "deserialization" code available. The less work it takes for application developers to import such files, quicker they (we?) will support it. Serialization and deserialization are useful for sharing data over a network as well as persisting stuff to disk, so I kinda like the idea of designing the file format and accompanying code with that in mind as well. It could be possible to load objects (and even synchronize them) over a network using the same format and much of the same deserialization code. That aspect would be helped quite a bit if the application objects had a common API to use when moving data from disk (or from the network) and into the application. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Fri Oct 18 14:50:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 14:50:02 2002 Subject: [ODE] file formats In-Reply-To: <200210170913.g9H9DQx22252@dubb05h07-0.dplanet.ch> Message-ID: On Thu, 17 Oct 2002 amoravanszky@dplanet.ch wrote: > We at NovodeX think the entire community, regardless of which physics > SDK is used, would benefit from a file format that is an open > standard. In particular we are open to file format extensions as > required by Juice -- though of course we should debate them first. I haven't looked too deeply into the Novodex docs yet, but as far as I can tell, the only stuff the Juice files contain that doesn't fit right into the Novodex for format is stuff that pertains to motion control. I don't think that really should be part of a common file format, because (as far as I'm aware) control systems themselves are not yet standardized. I came up with a couple of them for Juice, but chances are no other application would support them or even want them. The main thing, I think, would be to have a syntax that allows for application-specific additions, and some sort of namespace control (even if it's just the honor system) so that each application can easily ignore any sections of the file that it doesn't support. -- Nate Waddoups Redmond WA USA http://www.natew.com From amoravanszky at dplanet.ch Fri Oct 18 15:49:01 2002 From: amoravanszky at dplanet.ch (Adam Moravanszky) Date: Fri Oct 18 15:49:01 2002 Subject: [ODE] Introduction / Suggestions etc References: Message-ID: <001c01c276f8$da7e1c20$c912da50@powerhouse> This is a multi-part message in MIME format. ------=_NextPart_000_0019_01C27709.9D4F8300 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit > worth a look. Speaking of which, I'm reminded of a message from Adam @ > Novodex that I didn't get around to replying to the other day... > > Anyhow, once a good file format gets agreed upon, I think a second key > ingredient to standardization would be to have some open and shared > "deserialization" code available. The less work it takes for application > developers to import such files, quicker they (we?) will support it. Hi Nate, I attached some simple parser code (only 7K, I guess that is OK). It can create the ODS data structure from a C++ stream, or write a structure to a stream. This stuff only works on the ODS syntax level, and is not physics specific. All the higher (physics) level serialization code is part of the free viewer code in the SDK download, but of course on that level things are less portable -- as you know for example our joint limits are specified quite differently than those in ODE, for example. Still, standardization even on this level would not hurt. -- Adam Moravanszky /*================*\ |Chief Software Architect |NovodeX AG |physics middleware |www.novodex.com \*================*/ ------=_NextPart_000_0019_01C27709.9D4F8300 Content-Type: application/x-zip-compressed; name="odblock.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="odblock.zip" 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 ------=_NextPart_000_0019_01C27709.9D4F8300-- From nlin at nlin.net Fri Oct 18 17:59:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Fri Oct 18 17:59:02 2002 Subject: [ODE] ODE/Blender Message-ID: <20021019024242.GA32509@nlin.net> Russ Smith wrote: > >i'm in full support of ODE/blender integration - i think this is quite >an exciting prospect. in fact i took some very preliminary steps in this >direction as soon as the blender sources were released - but as norman >is far in advance of my own pitiful attempt i will abandon what i am doing >and help out the existing effort. Not so fast - we may be doing different types of ODE/Blender integration so I wouldn't throw out your work just yet... >i have a question: the commercial dynamics providers (ME, havok etc) have >their own plugins for 3DSMax, maya, and other expensive tools. i am >wondering what functionality, if any, would be lost by an artist switching >from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a >blender dummy.) Something important to understand about Blender is that it has a built-in real-time interactive 3D game engine. This means you can model a 3D scene in Blender, press the "P" key, and Blender instantly (typically less than 1 second) starts the game engine, which then controls all objects on-screen. This is a reasonably complete (Turing-complete, anyway) game engine; you can animate objects along paths, read keyboard input, move the camera and players around, create/destroy objects, set variables, send messages between objects, run scripts, and have objects controlled by the physics subsystem. This physics subsystem in the real-time game engine is what I am working on, so that Blender real-time games can have dynamic objects controlled by ODE. (The previous Blender game physics were impulse-based.) >i am guessing >that the initial blender integration will be to run ODE simulations >within blender to produce animation data, and that the saved dynamics >information will be tied in with blenders own file format(s). This is not the ODE/Blender integration I am working on right now, but it is very important as well, so that artists creating non-interactive animations (more traditional animations and movies) can also use ODE to create realistic dynamic motions. As I am not an expert in creating these kinds of animations, I don't know how such tools typically work or how they could be integrated into the modeling/animation workflow of Blender (as opposed to the game engine integration, which appears to me to be of a different nature). The way it is now integrated, physical properties of objects are specified either in the Blender material for the object (button DYN in the MaterialButtons) and/or in the Blender Game Attributes for the object (in the GameButtons). These buttons allow the user to enter properties like mass, friction, bounding volume, etc. The Blender game engine reads these fields on game startup, then creates the ODE objects. A rendering/animation tool should probably use these same buttons to read out physically relevant information, but would start an ODE world and simulate one timestep forward for each frame of the animation rendered. From what you write above it sounds like you are talking about the possibility of running the simulation just once then "baking in" the ODE-computed animation to save the animation data somewhere. This would also be possible. Again, I don't know how such tools usually work. >it would >also be nice if it blender could export a file format describing just the >dynamical attributes that have been given to the geometry objects, so >that in my game/simulation/whatever i could load this data, construct the >ODE objects, then attach the objects to my scene data. Blender has a python scripting interface, and many good python scripts have been written, especially for exporting/importing data. The python integration is kind of shaky right now, since the project just went GPL, but I expect it to stabilize. At that point, it should then be fairly easy to add python access to the new dynamical attributes (friction, restitution, bounding volumes, mass, etc) associated with each object. Then a python script could simply iterate over all objects in the scene, iterate over all attributes for each object, and write it out in any format desired. -Norman From russ at q12.org Fri Oct 18 20:36:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 20:36:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021019024242.GA32509@nlin.net> References: <20021019024242.GA32509@nlin.net> Message-ID: <20021018204011.2905d6de.russ@q12.org> > This physics subsystem in the real-time game engine is what I am > working on, so that Blender real-time games can have dynamic objects > controlled by ODE. (The previous Blender game physics were > impulse-based.) ah ... how are the dynamical properties of objects set in blender? i have in mind something where you select two objects, add a joint at a specific position, drag the low/high limits (some kind of draggable widgets that surround the joint), pop up a dialog box for the joint/body/surface properties, etc etc. of course i should just try out your work in blender - but i have found it (blender) even more difficult to use for the ininitiated than 3DSMax, which is saying something. russ. -- Russell Smith http://www.q12.org From coding at natew.com Fri Oct 18 21:12:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 21:12:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021018204011.2905d6de.russ@q12.org> Message-ID: On Fri, 18 Oct 2002, Russ Smith wrote: > of course i should just try out your work in blender - but i have found > it (blender) even more difficult to use for the ininitiated than 3DSMax, > which is saying something. That's good to hear, I was afraid it was just me. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From nlin at nlin.net Sat Oct 19 07:19:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Sat Oct 19 07:19:02 2002 Subject: [ODE] Re: ODE/Blender Message-ID: <20021019155757.GA4938@nlin.net> On Fri, Oct 18, 2002 at 08:40:11PM -0400, Russ Smith wrote: [reordering a bit...] > of course i should just try out your work in blender - but i have found > it (blender) even more difficult to use for the ininitiated than 3DSMax, > which is saying something. The Blender UI is about as intuitive as that of vi or emacs. Hard to learn, but very fast and powerful once you do know it. See http://www.cse.cuhk.edu.hk/~wmpang1/blender/blen_ui/blen_ui.html for a good introduction. It's somewhat old, but still relevant for the basics. > > This physics subsystem in the real-time game engine is what I am > > working on, so that Blender real-time games can have dynamic objects > > controlled by ODE. (The previous Blender game physics were > > impulse-based.) > > ah ... how are the dynamical properties of objects set in blender? i > have in mind something where you select two objects, add a joint at a > specific position, drag the low/high limits (some kind of draggable > widgets that surround the joint), pop up a dialog box for the > joint/body/surface properties, etc etc. After reading the above tutorial, add a mesh, add a new material to the mesh, and in the MaterialButtons look for a small button "DYN". This controls dynamic properties of the material connected with the mesh. E.g. friction, restitution, or some special Fh force on slopes (for the old physics, currently unused I think). Another place to enter material properties is by the GameButtons. Select a mesh, press F8 to go to the GameButtons, then click on the small "Actor" button, at which point some more buttons will appear, then click on "Dynamic" and "Rigid Body" (the old physics system had both "fake" dynamics and rigid-body dynamics, which is why you had to explicitly select "rigid body"; currently there is no longer any distinction between "Dynamic" and "Rigid Body" that I am aware of). At this point you can set the mass of the rigid body object, some damping properties, and some other properties which are probably outdated and were for the old physics system (like the "form factor"). To select the bounding volume for an object, select the object, go to the EditButtons (press F9), and at the left activate the button "Bounds" then select either "Box" or "Sphere". This controls whether the physics system will use a sphere or a box for the rigid body. "Polyheder" is also an option, which will eventually cause a tri-mesh to be generated using Erwin de Vries's triangle collider. There are currently some bugs with the bounding volume selection (see the ToDo list in OdePhysicsController.cpp) As for joints or constraints, Blender already has a constraints window designed for animation. You can constraint two objects to have the same location. By creating "empty" or "dummy" objects, and using these as parents of "real" objects, you can get point-to-point constraints in the modeler. The game engine could use this information for generating a ODE p2p constraint. There are some other simple constraints like "track to" or "copy orientation". The current constraint types are designed for animation/modeling help, but we could add new constraint types for physics, which would then be used in the game engine. Again see OdePhysicsController.cpp for notes on how this might work. Blender may be a bit confusing at first, but it a very powerful program and is worth learning. -Norman From nlin at nlin.net Sat Oct 19 07:21:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Sat Oct 19 07:21:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021018204011.2905d6de.russ@q12.org> References: <20021019024242.GA32509@nlin.net> <20021018204011.2905d6de.russ@q12.org> Message-ID: <20021019155926.GB4938@nlin.net> By the way, some sample files illustrating the current ODE/Blender integration are at http://www.xype.net/~nlin . These files will only work with the CVS version of blender at CVSROOT=:pserver:anonymous@217.77.141.135:/cvs01 . -Norman From Benny Sat Oct 19 08:32:02 2002 From: Benny (Benny) Date: Sat Oct 19 08:32:02 2002 Subject: [ODE] 3d world an directx Message-ID: <200210191531.g9JFV8u16679@hook.org> ------- Original Message -------- From: ivan.bolcina@volja.net To: "ode@q12.org" CC: Subject: [ODE] 3d world an directx Date: 17/10/02 07:10     Problems.   Is ode 3d world different from DirectXs? It seems to me that y and z axes are swapt.   bye,ivan From don_reid at attbi.com Sat Oct 19 09:04:02 2002 From: don_reid at attbi.com (don) Date: Sat Oct 19 09:04:02 2002 Subject: [ODE] Re: File formats In-Reply-To: <200210190101.g9J119u04892@hook.org> References: <200210190101.g9J119u04892@hook.org> Message-ID: <20021019160048.GA9649@reid.corvallis.or.us> An important thing to have in any file format, esp. a new one, is extensability. You want to be able to add new construts easily, and without changing old code. XML gives you this automatically. Of course the parser must then be written to skip over things it doesn't understand (with a warning if desired). Don Reid From ivan.bolcina at volja.net Sat Oct 19 13:17:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Sat Oct 19 13:17:01 2002 Subject: [ODE] 3d world on directx Message-ID: <007401c277ac$57b1de30$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0071_01C277BD.1A8E1A80 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi! I assure you that if I swap y and z axis, stuff works ok, otherwise = doesnt. Please look at my original code and see how are they swapt. I believe = that DirectX uses left-handed system. I pass only quaternions from ode to directx to determine current orientation. I have to swap axis in this case too. thanx, ivan ------=_NextPart_000_0071_01C277BD.1A8E1A80 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi!

I=20 assure you that if I swap y and z axis, stuff works ok, otherwise=20 doesnt.
Please look at my original code and see how are they swapt. I = believe=20 that
DirectX uses left-handed system.

I pass only quaternions = from ode=20 to directx to determine current
orientation. I have to swap axis in = this case=20 too.

thanx,
ivan

------=_NextPart_000_0071_01C277BD.1A8E1A80-- From airsona at bestweb.net Sat Oct 19 22:35:02 2002 From: airsona at bestweb.net (Sasha H) Date: Sat Oct 19 22:35:02 2002 Subject: [ODE] Flight Simulation Message-ID: <001601c27795$5a7a6b80$4001b3d8@airsona> This is a multi-part message in MIME format. ------=_NextPart_000_0013_01C27773.D27DCF40 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hey guys, I've few questions! Okey, I'm planning to use ODE to make my airplane fly... Would it be possible to simulate aerodynamics on each element of the = airplane (body, right wing, left wing, tail, etc...)? What is the best = approach, even if it's not "super realistic".=20 And also, if I have a mesh and a terrain, does ODE support such = collisions?=20 Cool......thanks! ------=_NextPart_000_0013_01C27773.D27DCF40 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hey guys, I've few = questions!
Okey, I'm planning to use ODE to make = my airplane fly...
Would it be possible to simulate = aerodynamics on=20 each element of the airplane (body, right wing, left wing, tail, = etc...)? What=20 is the best approach, even if it's not "super realistic".
And also, if I have a mesh and a = terrain, does ODE=20 support such collisions?
Cool......thanks!
 
 
------=_NextPart_000_0013_01C27773.D27DCF40-- From grubertm at hotmail.com Sat Oct 19 22:57:01 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Sat Oct 19 22:57:01 2002 Subject: [ODE] Flight Simulation References: <001601c27795$5a7a6b80$4001b3d8@airsona> Message-ID: >Okey, I'm planning to use ODE to make my airplane fly... >Would it be possible to simulate aerodynamics on each element of the airplane (body, right wing, left wing, >tail, etc...)? What is the best approach, even if it's not "super realistic". As I have never done a flightsim, I can only refer you to a book such as "Physics for Game Developers" which has a chapter on airplanes. >And also, if I have a mesh and a terrain, does ODE support such collisions? AFAIK no. Only one of the objects can be a mesh (trilist) the other one has to be a box or sphere (not sure about the current capped/cylinder status). I.e. you would use the bounding box of the fuselage & wings and a trilist for the terrain. - Marco Grubert From coding at natew.com Sat Oct 19 23:06:02 2002 From: coding at natew.com (Nate W) Date: Sat Oct 19 23:06:02 2002 Subject: [ODE] Flight Simulation In-Reply-To: Message-ID: On Sat, 19 Oct 2002, Marco Grubert wrote: > >And also, if I have a mesh and a terrain, does ODE support such collisions? > > AFAIK no. Only one of the objects can be a mesh (trilist) the other one has > to be a box or sphere (not sure about the current capped/cylinder status). > I.e. you would use the bounding box of the fuselage & wings and a trilist > for the terrain. That's a better answer than what I wrote just a minute ago. I think I misunderstood the question. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Sat Oct 19 23:09:02 2002 From: coding at natew.com (Nate W) Date: Sat Oct 19 23:09:02 2002 Subject: [ODE] Flight Simulation In-Reply-To: <001601c27795$5a7a6b80$4001b3d8@airsona> Message-ID: On Sat, 19 Oct 2002, Sasha H wrote: > Okey, I'm planning to use ODE to make my airplane fly... > > Would it be possible to simulate aerodynamics on each element of the > airplane (body, right wing, left wing, tail, etc...)? What is the best > approach, even if it's not "super realistic". $0.02 from a guy with a moderate understanding of aerodynamics and flying things: How about applying a force to each flying surface, in proportion to what the aerodynamic force on said surface should be? You could calculate the lift and drag for the wings, for example, and a force for the deflection of each control surface, etc. I bet you'd get fun, if not realistic, results. Make the force computations as accurate and sophisticated as your understanding of aerodynamics, learn all you can, and polish them up as you learn. > And also, if I have a mesh and a terrain, does ODE support such > collisions? If you mix in the "tri-collider" contribution, you can do collision detection between height-mapped terrain and boxes or spheres. A few of us have been doing this in our ODE projects for a while now. I'm using it with the Demeter terrain engine and I'm pretty happy with the results. -- Nate Waddoups Redmond WA USA http://www.natew.com From John Lagerquist Sun Oct 20 02:57:02 2002 From: John Lagerquist (John Lagerquist) Date: Sun Oct 20 02:57:02 2002 Subject: [ODE] Quaternion Integration Message-ID: <00a801c2781e$c6941260$6401a8c0@singularity> It appears that NASA has a quaternion integration method that does not require normalization between integration steps. Does anyone have any information on this technique? Their webpage (http://ettc.usc.edu/dryden/tos/closedform.html) states: "NASA's technology represents a substantial improvement over traditional methods of integrating 4-D kinematics equations. Those methods solve the quaternion kinematic equations in a way that does not automatically preserve the unit normalization of the quaternion. These methods are therefore inherently prone to error and difficult to correct. Such traditional methods are computation-intensive because of the substantial amount of error correction needed to compensate for analytical drift. NASA's integration method preserves the mathematics of the quaternion space that it creates and therefore introduces no error associated specifically with non-preservation of the quaternion norm. As a result, error correction associated with normalization is not needed in the NASA method" John From rtonge90 at yahoo.co.uk Sun Oct 20 04:14:01 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sun Oct 20 04:14:01 2002 Subject: [ODE] Quaternion Integration Message-ID: <20021020111339.28128.qmail@web14909.mail.yahoo.com> Hello >Does anyone have any information on this technique? Here is the full text of the patent: http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=/netahtml/search-bool.html&r=1&f=G&l=50&co1=AND&d=ft00&s1=6,061,611.WKU.&OS=PN/6,061,611&RS=PN/6,061,611 Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From Remko at act-3d.com Sun Oct 20 08:42:01 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Sun Oct 20 08:42:01 2002 Subject: [ODE] Another strange wheel rotation Message-ID: <277753125.359388433.98@server> Ok, it was a stupid mistake. The hinges where initialized AFTER the first simulation step. The wheels moved down because of the gravity and the rotation point was shifted. Changing the order fixed this. -Remko -----Original Message----- From: Remko Jacobs (act-3d.com) Sent: Thursday, October 17, 2002 11:40 AM To: ode@q12.org; Remko Jacobs (act-3d.com) Subject: [ODE] Another strange wheel rotation bug I fixed the 'bending wheels' problem using the following methods. The problem still exists but at least you can reduce it to acceptable levels: - Decrease the step size (update of 200-300Hz) - Different CFM and ERP values - Different masses - Bigger wheels (The bigger the wheels, the slower they have to turn for the same speed) I'm experimenting with a driving simulation and the results are stunning! However, after some experimentation, the car started to bounce and the handling was completely gone. It turned out that the wheel is not rotating around it's axis but around a point slightly above that. Gravity was causing this offset. Gravity pulls the wheel down so the rotation axis of the hinge is too high. What really surprised me, is the solution I found: When I set the gravity to zero the problem does not occur (as expected). When I crank up the gravity while the simulation is running, the bug does not come back but the wheel rotates around the correct point. Does anyone has an explanation for this? Why the rotation screws up when I initialize with gravity? -Remko _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From kjmac at freenet.co.uk Sun Oct 20 12:11:02 2002 From: kjmac at freenet.co.uk (Ken MacLeod) Date: Sun Oct 20 12:11:02 2002 Subject: [ODE] Compiling OPCODE 1.0 as a static lib for use with tri-collider Message-ID: <000301c2786c$4cf17990$0401a8c0@xperemental> (Apologies if this message is posted twice, I initially sent it using the incorrect email account) Hi, I’m developing a car simulation API for my MSc degree. I would like to be able to use ODE with the tri-collider contribution (ode/contrib) so that I can do sphere (wheel) triangle (terrain) collisions. Unfortunatly I have cannot for the life of me get opcode to compile as a static library. I printed off and followed the guide on the Wiki pages, but got only the following error output: --------------------Configuration: OPCODE 1_0 - Win32 Debug-------------------- Compiling... OPC_Container.cpp C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(41) : warning C4273: 'private: static unsigned int Opcode::Container::mNbContainers' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(41) : error C2491: 'Container::mNbContainers' : definition of dllimport static data member not allowed C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(42) : warning C4273: 'private: static unsigned int Opcode::Container::mUsedRam' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(42) : error C2491: 'Container::mUsedRam' : definition of dllimport static data member not allowed C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(50) : warning C4273: 'Container::Container' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(64) : warning C4273: 'Container::~Container' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(79) : warning C4273: 'Resize' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(121) : warning C4273: 'Contains' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(143) : warning C4273: 'Delete' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(166) : warning C4273: 'FindNext' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(186) : warning C4273: 'FindPrev' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(204) : warning C4273: 'GetUsedRam' : inconsistent dll linkage. dllexport assumed. OPC_Matrix4x4.cpp C:\MSc\opcode 1.0\opcode\OPC_Matrix4x4.cpp(65) : error C2491: 'InvertPRMatrix' : definition of dllimport function not allowed Error executing cl.exe. OPCODE 1_0.lib - 3 error(s), 10 warning(s) Looking through the archives for this mailing list someone named Norman had the same problem. He posted a message saying the he to could not compile opcode 1.0 as a static lib, unfortunately I could not see any reply to his request in the archives. Norman’s next post just thanked the author for helping him get it compiling! Here’s a snippit: ------------ Hi, Thanks to the author's help I was able to compile the tri-collider - I needed to modify opcode to compile it as a static library, then compile the files in the tri-collider directory as a static library, then link my test app against both libraries. … ---------- All help with this is greatly appreciated! Thanks, - Ken MacLeod --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 03/10/2002 From amoravanszky at dplanet.ch Sun Oct 20 13:12:01 2002 From: amoravanszky at dplanet.ch (Adam Moravanszky) Date: Sun Oct 20 13:12:01 2002 Subject: [ODE] Compiling OPCODE 1.0 as a static lib for use with tri-collider In-Reply-To: <000301c2786c$4cf17990$0401a8c0@xperemental> Message-ID: <5.1.0.14.0.20021020221049.009edb30@pop.dplanet.ch> Ken, You just have to get rid of the #defines that prefix all the functions / classes with __dllexport or __dllimport. It is not rocket science. --Adam At 08:10 PM 10/20/02 +0100, Ken MacLeod wrote: >(Apologies if this message is posted twice, I initially sent it using >the incorrect email account) > >Hi, >I'm developing a car simulation API for my MSc degree. I would like to >be able to use ODE with the tri-collider contribution (ode/contrib) so >that I can do sphere (wheel) triangle (terrain) collisions. Unfortunatly >I have cannot for the life of me get opcode to compile as a static >library. I printed off and followed the guide on the Wiki pages, but got >only the following error output: > >--------------------Configuration: OPCODE 1_0 - Win32 >Debug-------------------- >Compiling... >OPC_Container.cpp From Nguyen Binh Sun Oct 20 21:29:03 2002 From: Nguyen Binh (Nguyen Binh) Date: Sun Oct 20 21:29:03 2002 Subject: Re[2]: [ODE] Introduction / Suggestions etc In-Reply-To: <001c01c276f8$da7e1c20$c912da50@powerhouse> References: <001c01c276f8$da7e1c20$c912da50@powerhouse> Message-ID: <731305116.20021021111343@glassegg.com> As far as I know, Blender currently support Python. Then why do we need to re-implement a small descriptive language? Why we don't use the powerful Python? I didn't use Python but I use Lua (www.lua.org) and it does help alot.(I've heard that Python is much more powerful). >> worth a look. Speaking of which, I'm reminded of a message from Adam @ >> Novodex that I didn't get around to replying to the other day... >> >> Anyhow, once a good file format gets agreed upon, I think a second key >> ingredient to standardization would be to have some open and shared >> "deserialization" code available. The less work it takes for application >> developers to import such files, quicker they (we?) will support it. AM> Hi Nate, -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From ivan.bolcina at volja.net Mon Oct 21 12:15:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Mon Oct 21 12:15:02 2002 Subject: [ODE] ode to directx coordinates and orientation Message-ID: <000e01c27935$f510c620$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_000B_01C27946.B83F8F40 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi. Sorry cant speak Russian. I am from Slovenia, so we have slavic language = in common. I have this problem. Mapping 3-d coordinats from ode to directx. It is = not one to one. I have come to conclusion that positions, velocities are = mapped one to one, but orientation is like this function: //from ode to directx D3DXVECTOR3 convertVector(const dReal *in) { D3DXVECTOR3 out; out.x=3Din[0]; out.y=3Din[1]; out.z=3Din[2]; return out; } //from ode to directx D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=3D(float)in[0]; out.y=3D(float)in[1]; out.z=3D(float)in[2]; out.w=3D-(float)in[3]; return out; } So ODE is doing steps on objects and then I need to display it with = directx in corrent position and orientation. Position seem to be ok, but = orientation..... btw, I see you are professional game developer. How does it feel like? Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) ------=_NextPart_000_000B_01C27946.B83F8F40 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
Sorry cant speak Russian. I am from = Slovenia, so we=20 have slavic language in common.
I have this problem. Mapping 3-d = coordinats from=20 ode to directx. It is not one to one. I have come to conclusion that = positions,=20 velocities are mapped one to one, but orientation is like this=20 function:
 
//from ode to directx

D3DXVECTOR3 convertVector(const dReal *in)
{
D3DXVECTOR3=20 out;
out.x=3Din[0];
out.y=3Din[1];
out.z=3Din[2];
return = out;
}

//from ode to directx

D3DXQUATERNION convertQuaternion(const dReal *in)
{
D3DXQUATERNION=20 out;
out.x=3D(
float)in[0];
out.y=3D(
float)in[1];
out.z=3D(float)in[2];
out.w=3D-(float)in[3];
return=20 out;
}

 
So ODE is doing steps on objects and = then I need to=20 display it with directx in corrent position and orientation. Position = seem to be=20 ok, but orientation.....
 
btw, I see you are professional game = developer. How=20 does it feel like?
 
Lep pozdrav in dobro se imej tam v = mrzli=20 Rusiji. :-)
 
------=_NextPart_000_000B_01C27946.B83F8F40-- From ivan.bolcina at volja.net Tue Oct 22 02:03:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 02:03:01 2002 Subject: [ODE] Re: ode to directx coordinates and orientation References: <000e01c27935$f510c620$0100a8c0@vectra> <642235524.20021022104030@gsc-game.kiev.ua> Message-ID: <001101c279a9$8fddd8f0$0100a8c0@vectra> Hi,slipch. Thank you VERY much. It works great. So for anyone interested, here is transformation from ODE quaternion to DirectX's. D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=(float)in[1]; out.y=(float)in[2]; out.z=(float)in[3]; out.w=(float)in[0]; return out; } Ukraine is actually very near slovenia. Slovenia, Hungary, Ukraine. Najlepsa hvala se enkrat in uzivaj se naprej. Lep pozdrav,ivan. ----- Original Message ----- From: "slipch" To: "Ivan Bolcina" Sent: Tuesday, October 22, 2002 9:40 AM Subject: Re: ode to directx coordinates and orientation > Hello Ivan, > > Monday, October 21, 2002, 10:13:36 PM, you wrote: > > IB> //from ode to directx > IB> D3DXVECTOR3 convertVector(const dReal *in) > IB> { > IB> D3DXVECTOR3 out; > IB> out.x=in[0]; > IB> out.y=in[1]; > IB> out.z=in[2]; > IB> return out; > IB> } > > IB> //from ode to directx > > IB> D3DXQUATERNION convertQuaternion(const dReal *in) > IB> { > IB> D3DXQUATERNION out; > IB> out.x=(float)in[0]; > IB> out.y=(float)in[1]; > IB> out.z=(float)in[2]; > IB> out.w=-(float)in[3]; > IB> return out; > IB> } > > > IB> So ODE is doing steps on objects and then I need to display it with directx in corrent position and orientation. Position seem to be ok, but orientation..... > > IB> btw, I see you are professional game developer. How does it feel like? > I am doing my best to be it but I am only in the start :). > I translate DirectX transforms to ode and vise versa and > everything works right (As I already tell you it need to transpose DirectX matrix before > set it as ODE rotation matrix.). But I have never translate > Quaternion. > Following DirectX doc quaternion is > > q.x = sin(theta/2) * axis.x > q.y = sin(theta/2) * axis.y > q.z = sin(theta/2) * axis.z > q.w = cos(theta/2) > > From ODE doc: > > A quaternion is four numbers [cos(theta/2) sin(theta/2)*u] > where theta is a rotation angle and `u' is a unit length rotation axis. > > May be the problem in sequence cos(theta/2) - last in DIrectX and > first in ODE. Then > > D3DXQUATERNION convertQuaternion(const dReal *in) > { > D3DXQUATERNION out; > out.x=(float)in[1]; > out.y=(float)in[2]; > out.z=(float)in[3]; > out.w=(float)in[0]; > return out; > } > > IB> Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) > It is nearly understandable. > I am from Ukraine indeed. > > Nashi najkrashi pobazsannya! :) > > > -- > Best regards, > slipch mailto:slipch@gsc-game.kiev.ua > From ivan.bolcina at volja.net Tue Oct 22 02:06:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 02:06:01 2002 Subject: [ODE] Re: ode to directx coordinates and orientation References: <000e01c27935$f510c620$0100a8c0@vectra> <642235524.20021022104030@gsc-game.kiev.ua> Message-ID: <001a01c279a9$9e142730$0100a8c0@vectra> Hi,slipch. Thank you VERY much. It works great. So for anyone interested, here is transformation from ODE quaternion to DirectX's. D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=(float)in[1]; out.y=(float)in[2]; out.z=(float)in[3]; out.w=(float)in[0]; return out; } Ukraine is actually very near slovenia. Slovenia, Hungary, Ukraine. Najlepsa hvala se enkrat in uzivaj se naprej. Lep pozdrav,ivan. ----- Original Message ----- From: "slipch" To: "Ivan Bolcina" Sent: Tuesday, October 22, 2002 9:40 AM Subject: Re: ode to directx coordinates and orientation > Hello Ivan, > > Monday, October 21, 2002, 10:13:36 PM, you wrote: > > IB> //from ode to directx > IB> D3DXVECTOR3 convertVector(const dReal *in) > IB> { > IB> D3DXVECTOR3 out; > IB> out.x=in[0]; > IB> out.y=in[1]; > IB> out.z=in[2]; > IB> return out; > IB> } > > IB> //from ode to directx > > IB> D3DXQUATERNION convertQuaternion(const dReal *in) > IB> { > IB> D3DXQUATERNION out; > IB> out.x=(float)in[0]; > IB> out.y=(float)in[1]; > IB> out.z=(float)in[2]; > IB> out.w=-(float)in[3]; > IB> return out; > IB> } > > > IB> So ODE is doing steps on objects and then I need to display it with directx in corrent position and orientation. Position seem to be ok, but orientation..... > > IB> btw, I see you are professional game developer. How does it feel like? > I am doing my best to be it but I am only in the start :). > I translate DirectX transforms to ode and vise versa and > everything works right (As I already tell you it need to transpose DirectX matrix before > set it as ODE rotation matrix.). But I have never translate > Quaternion. > Following DirectX doc quaternion is > > q.x = sin(theta/2) * axis.x > q.y = sin(theta/2) * axis.y > q.z = sin(theta/2) * axis.z > q.w = cos(theta/2) > > From ODE doc: > > A quaternion is four numbers [cos(theta/2) sin(theta/2)*u] > where theta is a rotation angle and `u' is a unit length rotation axis. > > May be the problem in sequence cos(theta/2) - last in DIrectX and > first in ODE. Then > > D3DXQUATERNION convertQuaternion(const dReal *in) > { > D3DXQUATERNION out; > out.x=(float)in[1]; > out.y=(float)in[2]; > out.z=(float)in[3]; > out.w=(float)in[0]; > return out; > } > > IB> Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) > It is nearly understandable. > I am from Ukraine indeed. > > Nashi najkrashi pobazsannya! :) > > > -- > Best regards, > slipch mailto:slipch@gsc-game.kiev.ua > From facontidavide at hotmail.com Tue Oct 22 08:25:02 2002 From: facontidavide at hotmail.com (Edgard Oscuro) Date: Tue Oct 22 08:25:02 2002 Subject: [ODE] Get the motor torque Message-ID: Hi everyone. I am using ODE to simulate a humanoid robot (and it seems I am not the only one!). Usually we use the motors making them give a fixed velocity. I need to know the TORQUE genereted by the motor to have that velocity. Someone can suggest me how? I suppose I have to modify the code to create my how function, but where can I take this value? Thanks, Davide _________________________________________________________________ Chiacchiera con gli amici online, prova MSN Messenger! http://messenger.msn.it From ivan.bolcina at volja.net Tue Oct 22 11:50:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 11:50:02 2002 Subject: [ODE] This is corect, I hope? Message-ID: <001201c279fb$b4114ca0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_000F_01C27A0C.73C51FD0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi.=20 Is this function, which converts ODE vector to DirectX's, correct? It = appears so, exept for the mass to body assignment. bye,ivan D3DXVECTOR3 convertVector(const dReal *in) { D3DXVECTOR3 out; out.x=3Din[0]; out.y=3Din[1]; out.z=3Din[2]; return out; } ------=_NextPart_000_000F_01C27A0C.73C51FD0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
Is this function, which converts ODE = vector to=20 DirectX's, correct? It appears so, exept for the mass to body=20 assignment.
 
bye,ivan
 
 
D3DXVECTOR3 convertVector(const dReal *in)
{
D3DXVECTOR3=20 out;
out.x=3Din[0];
out.y=3Din[1];
out.z=3Din[2];
return=20 out;
}
------=_NextPart_000_000F_01C27A0C.73C51FD0-- From ahamilton_01 at hotmail.com Tue Oct 22 15:04:02 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Tue Oct 22 15:04:02 2002 Subject: [ODE] penalty method Message-ID: Every one say penalty method is bad, but has anybody actually tried it? I am talking about David Wu's gdc talk. Has any one actually implemented his method? Not trying to start a fight here, just going through all the alternatives... Al _________________________________________________________________ Broadband? Dial-up? Get reliable MSN Internet Access. http://resourcecenter.msn.com/access/plans/default.asp From g.r.vansickle at worldnet.att.net Tue Oct 22 18:44:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Tue Oct 22 18:44:02 2002 Subject: [ODE] penalty method In-Reply-To: Message-ID: > Every one say penalty method is bad, but has anybody actually tried it? I'd wager that pretty much *everybody* has actually tried it. It's bad. > I am > talking about David Wu's gdc talk. Has any one actually implemented his > method? Not trying to start a fight here, just going through all the > alternatives... I don't know what Mr. Wu had to say, but penalty methods have a built-in problem that is essentially intractable: they, by definition, lead to stiff systems of differential equations. Collisions and resting contact are either too squishy or your simulation blows up or both. I know for a fact that everybody who's ever considered the rigid-body simulation problem wish it weren't so, but it is. And to add insult to injury, the step from easily-understandable penalty methods to eye-glazingly complex more robust methods is a very long one. But luckily, Russ has a good start at putting this baby to bed once and for all for us ;-). -- Gary R. Van Sickle Brewer. Patriot. From nlin at nlin.net Tue Oct 22 19:36:01 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Tue Oct 22 19:36:01 2002 Subject: [ODE] penalty method Message-ID: <20021023040645.GE8364@nlin.net> Gary R. Van Sickle wrote: > > Every one say penalty method is bad, but has anybody actually tried it? > > I'd wager that pretty much *everybody* has actually tried it. It's bad. I believe by "it" the original poster was talking about David Wu's bag of tricks for penalty methods, not the penalty technique in general. > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say See http://www.pseudointeractive.com/games/penaltymethods.ppt Unfortunately, I was not able to attend this talk, so the slides are my only source of information on David Wu's techniques for penalty methods. He seems to swear by them. I, too, am interested in hearing from people who have tried David Wu's suggestions, since most penalty sims suffer from the well-known problems. -Norman From p.terdiman at wanadoo.fr Wed Oct 23 01:00:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 23 01:00:02 2002 Subject: [ODE] penalty method References: Message-ID: <007401c27a69$d2a0bf20$0e00000a@pierre> > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say, but penalty methods have a built-in problem > that is essentially intractable: they, by definition, lead to stiff systems of > differential equations. Collisions and resting contact are either too squishy > or your simulation blows up or both. Penalty methods have a bad reputation indeed. And for pretty good reasons. But this is not a black-or-white situation where one can simply discard them completely. Even if I'm alone on that one, I'll say they *are* a good alternative in particular cases, especially in games. Let me summarize what I think are the pros and cons. Cons: - unstable as soon as you connect bodies with springs - implementation of resting contacts borders on voodoo magic - stacked objects and all joints are pretty difficult to handle - you'll need a small timestep indeed Pros: - each iteration is extremely fast - you can solve each contact on-the-fly, which is great on consoles since it doesn't require any stack memory (see the recent post about the 10 Mb stack in VC++. No way you can do that on a console.) - handle 200~300 simultaneous contacts without any (speed) problem - you *will* need it anyway as a fallback when the LCP solver fails (that's what they do in Havok AFAIK) - they're good enough to handle common game situations, and that's the key point. Many great games with great physics have been using nothing more than penalty methods (especially japanese games - on top of my head the last good example was Wreckless on X-Box) They're "bad", but sometimes they're the right tool for the job IMHO. Some lame tests available here (I probably didn't upload the most convincing scenes anyway) : http://www.codercorner.com/Rigid.htm Pierre From svalverde at barcelona.ubisoft.es Wed Oct 23 01:03:02 2002 From: svalverde at barcelona.ubisoft.es (Sergio Valverde) Date: Wed Oct 23 01:03:02 2002 Subject: [ODE] penalty method Message-ID: <61504D875986D511928A00B0D0F36AF8D95F0C@SRVMAIL-ES> So long ago I tryed to implement a physic engine for my comercial game which is based on penalty methods for resting (or continous) contact. I remembered myself reading the Wu's presentation and trying to implement his ideas (...) In case of "sudden" and "hard" collisions, instantaneous impulses apply (like in the old and good Baraff papers). It was *VERY* difficult to tune the system for stability 1) This approach results in very tight coupling between the physics low-level simulation and more high level controls (for instance: the AI code which lays on top of the low sim layer) The system isn't very modular and was the 1st source of major headaches ... 2) -----Original Message----- From: nlin@nlin.net [mailto:nlin@nlin.net] Sent: miercoles, 23 de octubre de 2002 6:07 To: ode@q12.org Subject: Re: [ODE] penalty method Gary R. Van Sickle wrote: > > Every one say penalty method is bad, but has anybody actually tried it? > > I'd wager that pretty much *everybody* has actually tried it. It's bad. I believe by "it" the original poster was talking about David Wu's bag of tricks for penalty methods, not the penalty technique in general. > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say See http://www.pseudointeractive.com/games/penaltymethods.ppt Unfortunately, I was not able to attend this talk, so the slides are my only source of information on David Wu's techniques for penalty methods. He seems to swear by them. I, too, am interested in hearing from people who have tried David Wu's suggestions, since most penalty sims suffer from the well-known problems. -Norman _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From G.J.A.v.d.Bergen at cebra.tue.nl Wed Oct 23 02:33:02 2002 From: G.J.A.v.d.Bergen at cebra.tue.nl (Bergen, G.J.A. van den) Date: Wed Oct 23 02:33:02 2002 Subject: [ODE] penalty method Message-ID: <81E5F727841DD211A5FD0008C728DB7B06E94C4E@campusx1.tue.nl> The stiffness of the differential equations and the fact that the penalty forces rely solely on the position of the objects (not the velocities) demand that you use an integrator that does not amplify its own errors. Wu uses implicit Euler as integrator, which he claims keeps the system from exploding. Also, care should be taken not to add energy to the system by placing exerted springs on interpenetrating contacts, so either you have to determine the exact time of collision, or you'll have to allow that objects are interpenetrating to some extent. Inserting exerted springs to a contact (especially when using non-linear springs) causes your objects to go ballistic. Penalty methods are mostly useful for spongy objects (See Jeff Lander's GDM articles). John Nagle is using a (patented) penalty method for rigid bodies in Animats, but his approach is not really useful for interactive applications. Gino > -----Original Message----- > From: Pierre Terdiman [mailto:p.terdiman@wanadoo.fr] > Sent: Wednesday, October 23, 2002 9:57 AM > To: ode@q12.org > Subject: Re: [ODE] penalty method > > > > > I am > > > talking about David Wu's gdc talk. Has any one actually > implemented his > > > method? Not trying to start a fight here, just going > through all the > > > alternatives... > > > > I don't know what Mr. Wu had to say, but penalty methods > have a built-in > problem > > that is essentially intractable: they, by definition, lead to stiff > systems of > > differential equations. Collisions and resting contact are > either too > squishy > > or your simulation blows up or both. > > Penalty methods have a bad reputation indeed. And for pretty > good reasons. > But this is not a black-or-white situation where one can > simply discard them > completely. Even if I'm alone on that one, I'll say they *are* a good > alternative in particular cases, especially in games. Let me > summarize what > I think are the pros and cons. > > Cons: > - unstable as soon as you connect bodies with springs > - implementation of resting contacts borders on voodoo magic > - stacked objects and all joints are pretty difficult to handle > - you'll need a small timestep indeed > > Pros: > - each iteration is extremely fast > - you can solve each contact on-the-fly, which is great on > consoles since it > doesn't require any stack memory (see the recent post about > the 10 Mb stack > in VC++. No way you can do that on a console.) > - handle 200~300 simultaneous contacts without any (speed) problem > - you *will* need it anyway as a fallback when the LCP solver > fails (that's > what they do in Havok AFAIK) > - they're good enough to handle common game situations, and > that's the key > point. Many great games with great physics have been using > nothing more than > penalty methods (especially japanese games - on top of my > head the last good > example was Wreckless on X-Box) > > > They're "bad", but sometimes they're the right tool for the job IMHO. > > Some lame tests available here (I probably didn't upload the > most convincing > scenes anyway) : > http://www.codercorner.com/Rigid.htm > > Pierre > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From p.terdiman at wanadoo.fr Wed Oct 23 04:02:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 23 04:02:02 2002 Subject: [ODE] penalty method References: <81E5F727841DD211A5FD0008C728DB7B06E94C4E@campusx1.tue.nl> Message-ID: <013301c27a83$4a121a40$0e00000a@pierre> > The stiffness of the differential equations and the fact that the penalty > forces rely solely on the position of the objects (not the velocities) > demand that you use an integrator that does not amplify its own errors. Who said the penalty forces didn't depend on velocities ? Mine do. > Wu > uses implicit Euler as integrator, which he claims keeps the system from > exploding. Also, care should be taken not to add energy to the system by > placing exerted springs on interpenetrating contacts, so either you have to > determine the exact time of collision, or you'll have to allow that objects > are interpenetrating to some extent. Indeed, some interpenetration is allowed. That's good or bad, depending on the way you see it. On the bad side, well, it might be visually unpleasant if it's too obvious. On the good side, the system doesn't break or explode when it happens. And it does happen. Anyway I'm not sure the magic physics bullet has been found yet, each method has its share of painful problems.. Pierre From svalverde at barcelona.ubisoft.es Wed Oct 23 04:28:01 2002 From: svalverde at barcelona.ubisoft.es (Sergio Valverde) Date: Wed Oct 23 04:28:01 2002 Subject: [ODE] penalty method Message-ID: <61504D875986D511928A00B0D0F36AF8D95F47@SRVMAIL-ES> In fact, when you told us about penalty forces I was thinking in a spring-damping system. That is, we have a penalty which depends both on penetration distance and the relative velocity between the interpenetrating bodies. I think you can implement "simple" simulations of "passive" rigid bodies (like those piles of balls and boxes) with both methods in an acceptable amount of time. Maybe the penalty method allows faster and efficient simulations for these kind of systems than the LCP-based does. But when you need to implement complex mechanics and/or behaviour over your physic engine the choose is clear to me: LCP. The stability provided by this method is worth the associated computation costs. Penalty method is tricky and doesn't assure stability for certain simulation situations. Unfortunately, a game designer is allways able to find such problematic cases, breaking your trick code! :-( The topic is : What is the best way to implement the high-level, physically-based, behavior which is required by current and future games? Sergi -----Original Message----- From: Pierre Terdiman [mailto:p.terdiman@wanadoo.fr] Sent: miércoles, 23 de octubre de 2002 13:00 To: ode@q12.org Subject: Re: [ODE] penalty method > The stiffness of the differential equations and the fact that the penalty > forces rely solely on the position of the objects (not the velocities) > demand that you use an integrator that does not amplify its own errors. Who said the penalty forces didn't depend on velocities ? Mine do. > Wu > uses implicit Euler as integrator, which he claims keeps the system from > exploding. Also, care should be taken not to add energy to the system by > placing exerted springs on interpenetrating contacts, so either you have to > determine the exact time of collision, or you'll have to allow that objects > are interpenetrating to some extent. Indeed, some interpenetration is allowed. That's good or bad, depending on the way you see it. On the bad side, well, it might be visually unpleasant if it's too obvious. On the good side, the system doesn't break or explode when it happens. And it does happen. Anyway I'm not sure the magic physics bullet has been found yet, each method has its share of painful problems.. Pierre _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From russ at q12.org Wed Oct 23 21:48:02 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 23 21:48:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: <20021023215217.34a17eb4.russ@q12.org> hi all, erwin and others have been working hard developing extensions to ODEs collision functionality for the past little while, and i am finally getting around to integrating this work into ODE. as a first step, i am publishing my proposed extensions to ODE's native collision API. please read the updated collision section in: http://q12.org/ode/ode-new-collision.html the new features are: heirarchical spaces, ability to collide spaces with single geoms, ability to collide spaces together, geom groups are now spaces, geoms have 'category' and 'collide' bits for early culling, better definition of function behavior, other stuff i forgot. note that this is 99% backwards compatible with the existing API, except for two points noted below. erwin, this API is not exactly the same as your work, here's where it differs: * colliding a geom with a space (or a space with a space) is handled with dSpaceCollide2(), not dCollide() - this makes things simpler i think, and gives the user the same degree of control. * spaces do not need to be explicitly locked before use. rather, the spaces will maintain the locked state internally and trigger an error when there are any violations. the spaces will detect geoms that do not move and precompute e.g. bounding boxes and internal collision data structures * there is no geom disable/enable. you can delete and add a geom to a space to get the same effect. incompatabilities with the current API are: * the dXXXSpaceCreate() functions now take a space argument, which can just be set to 0 to get the existing behavior. * geometry groups have a slight behavior change if you want self intersection - see the doc. please provide feedback about this new API. erwin - any comments? does this API work for you? is there any missing functionality? david - i think you mentioned that geoms might want to be interted into multiple spaces. can you give me a use case for this? - in the current API each geom has just one parent. after getting this API implemented i will focus on integrating erwin's ray and trimesh work, then adding the cylinder class. there is also a new quadtree space that is further down the list. russ. -- Russell Smith http://www.q12.org From tetron at interreality.org Wed Oct 23 22:53:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 23 22:53:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <20021023215217.34a17eb4.russ@q12.org> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Cool! A physics engine is for naught if things collisions arn't detected correctly :-) Have box-box collisions (specifically the problem of not generating enough contact joints) been fixed yet? If not, please tell me which file the collision code is in and I'll see if I can fix it myself (and provide a patch of course). The ability for objects to rest upon each other stably is absolutely necessary and precludes using ODE in my application (and I really, really want to use ODE.) The cylinder class you refer to -- would this be a flat-ended cylinder, as opposed to the (slightly weird but I guess easier to program) hemisphere-ended cylinder that already exists? I'm interested in flat-ended cylinders that can stably stand up on end, which a round-ended cylinder of course cannot do. Have you considered using octtrees to optimize collision tests for complex scenes? (I'm just suggesting this off the top of my head, I'm not 100% sure how it would work...) On Wed, 23 Oct 2002, Russ Smith wrote: > hi all, > > erwin and others have been working hard developing extensions to ODEs > collision functionality for the past little while, and i am finally > getting around to integrating this work into ODE. [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9t4p7aeHUyhjCHfcRArs3AJwKBlWNnoCDJrZbnKWcN/Em1y4L9wCffkMj HRiJEoqUygM4DPJBJ1enu58= =bQ/J -----END PGP SIGNATURE----- From russ at q12.org Wed Oct 23 23:11:01 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 23 23:11:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: References: <20021023215217.34a17eb4.russ@q12.org> Message-ID: <20021023231536.7431c952.russ@q12.org> > Have box-box collisions (specifically the problem of not generating > enough contact joints) been fixed yet? not yet - it has been on my list for a while. look at dBoxBox() in geom.cpp. note that there are many ways to badly generate multiple contact points, and only a few good ways (but i don't want to discourage you! by all means fix this annoying problem...) > The cylinder class you refer to -- would this be a flat-ended > cylinder, as opposed to the (slightly weird but I guess easier to > program) hemisphere-ended cylinder that already exists? yes. this was contributed by Konstantin Slipchenko a short while ago. the capped cylinders are easier to code, it's true, but they're preferable to flat ended cylinders when you need some long thin object that doesn't need to stand on its own. this is because the contact points generated by capped cylinders are much more predictable than that for flat-end cylinders, and less sensitive to geom position changes. this makes for more stable dynamics. > Have you considered using octtrees to optimize collision tests for > complex scenes? i believe erwin is working on this. russ. -- Russell Smith http://www.q12.org From erwin at vo.com Thu Oct 24 05:24:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 05:24:01 2002 Subject: [ODE] enhanced ODE collision API References: <20021023215217.34a17eb4.russ@q12.org> Message-ID: <005f01c27b58$3056d250$73fefea9@athlon> Feedback: Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() or dGeomGetRotation() on a non-placeable geom? The way you handle colliding spaces is more clear to the user, and thus preferable. I assume dSpaceCollide2() will find the (best) space itself from the 2 geom arguments? The sample callback function in the docs also does pairwise checks on all subspaces, right? The enumeration function you use is better than mine. I suppose you buffer the last used index and last used geom? If you have added the 'prev' pointer in the spacedata of a geom, the user can also enumerate backwards. You default the Category and Collide bits to 1 so that users that dont care about it dont have to touch it. Wouldnt it be more logical to default to 0xffffffff then? This is how i interpret the new way it works now: RootSpace - SubSpace1 + GeomTransform1 o Sphere1 + ... - SubSpace2 + GeomTransform2 o Sphere2 + ... - ... Steps: * The user calls dSpaceCollide() on RootSpace. * This will call the usercallback for SubSpace1 and SubSpace2. * The usercallback will call dCollide2() on SubSpace1 and SubSpace2. * This will call the usercallback for SubSpace1, and GeomTransform2 (or the other way around). * The usercallback will call dCollide2 on SubSpace1, and GeomTransform2. * This will call the usercallback for GeomTransform1 and GeomTransform2. * The usercallback will call dCollide() for GeomTransform1 and GeomTransform2. * ... Is this correct? > * spaces do not need to be explicitly locked before use. rather, the > spaces will maintain the locked state internally and trigger an > error when there are any violations. the spaces will detect geoms > that do not move and precompute e.g. bounding boxes and internal > collision data structures So outside of the 'lock' the user is still able to use the bounding boxes computed while colliding? Excellent. How do you determine if a geom has (not) moved? Is it possible to manually lock and unlock the spaces? > * there is no geom disable/enable. you can delete and add a geom to a > space to get the same effect. Not entirely, but i was thinking of removing this flag as well, because it can be faked by setting the Category and Collide bits to 0. > please provide feedback about this new API. erwin - any comments? does > this API work for you? is there any missing functionality? There is no missing functionality as far as i can tell. Its a pity the geom constructor with a body as argument is not added (It saves a malloc and a free), but this is not that important to me. I think it is good enough to keep me from continuing my own dc library. > david - i think you mentioned that geoms might want to be interted into > multiple spaces. can you give me a use case for this? - in the current > API each geom has just one parent. I also considered adding this, but i found it too problematic. > after getting this API implemented i will focus on integrating erwin's > ray and trimesh work, then adding the cylinder class. there is also a > new quadtree space that is further down the list. Have you added the 'prev' pointer in the spacedata of a geom? Without it you cant store the node a geom is in. And it is also faster for the simple and hash spaces. :-) On a related note. Would it be possible to pass 0 in the body constructor for the world it is in, and manually add and remove it? This would be far more appropriate for my apps. Providing the same enumeration functions as in a space would also be appreciated. Cheers, Erwin From russ at q12.org Thu Oct 24 11:13:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 11:13:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <005f01c27b58$3056d250$73fefea9@athlon> Message-ID: > Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() > or dGeomGetRotation() on a non-placeable geom? hmmm ... non-placeable geoms may not have any relevant pos or R data at all. even if something is returned, e.g. zeros, i think the user should be notified that it's not good for anything. or perhaps the user should be told to check for a 0 return code? perhaps this is a way to detect non-placeable geoms? but in that case a dGeomIsPlaceable() function would be cleaner. > The way you handle colliding spaces is more clear to the user, and thus > preferable. I assume dSpaceCollide2() will find the (best) space itself from > the 2 geom arguments? The sample callback function in the docs also does > pairwise checks on all subspaces, right? yes. > The enumeration function you use is better than mine. I suppose you buffer > the last used index and last used geom? yes, that's exactly what i had in mind. > If you have added the 'prev' pointer > in the spacedata of a geom, the user can also enumerate backwards. yes - i'll use a doubly circularly linked list. > You default the Category and Collide bits to 1 so that users that dont care > about it dont have to touch it. Wouldnt it be more logical to default to > 0xffffffff then? i thought about this and could not decide the right answer. how about category=1 and collide=(~0)? > This is how i interpret the new way it works now: > Is this correct? yes. > So outside of the 'lock' the user is still able to use the bounding boxes > computed while colliding? correct. your AABB caching code is preserved. > Excellent. How do you determine if a geom has (not) moved? a space will have a list of clean and dirty geoms. the clean geoms have precomputed AABBs (and perhaps precomputed other things). a geom gets transferred to the dirty list when: * dGeomSetSomething() is called. * it's attached to a non-disabled body. a space can only be in a clean list if it has no dirty items itself - so operations on clean geoms can propagate dirty-ness up to the root space. > Is it possible to manually lock and unlock the spaces? no ... can you give me a use case for when this is required? > Not entirely, but i was thinking of removing this flag as well, because it > can be faked by setting the Category and Collide bits to 0. why 'not entirely?'. > I think it is good enough to keep me from continuing my own dc library. i am largely cutting and pasting from your dc library into ODE - changing the way some things work - but the new collision system is largely the result of your effort. > I also considered adding this, but i found it too problematic. as did i - * memory management: when a space is deleted, which geoms are deleted? should we use ref counting or garbage collection. either way introduces other problems. * a geom has to notify multiple parents when certain things happen, e.g. when it moves. annoying for the clean-data-structure point of view. > Have you added the 'prev' pointer in the spacedata of a geom? Without it you > cant store the node a geom is in. And it is also faster for the simple and > hash spaces. :-) yes. > On a related note. Would it be possible to pass 0 in the body constructor > for the world it is in, and manually add and remove it? This would be far > more appropriate for my apps. Providing the same enumeration functions as in > a space would also be appreciated. yes - i'll add this to the to-do list? :) russ. -- Russ Smith http://www.q12.org/ From dmcclurg at pandemicstudios.com.au Thu Oct 24 15:08:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 24 15:08:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: > geom groups are now spaces does that mean a geom cannot be placed into two different groups? not a big deal, but i'm curious. > david - i think you mentioned that geoms might want to be interted into multiple spaces. can you give me a use case for this? - in the current API each geom has just one parent. i just needed a way to implement collision filtering and the category and collide bitfields do this very elegantly! thanks one other common concept in collision detection is a ghost or phantom geom used as a sensor. you don't bounce off it -- you just detect a penetration. ie: what you want is just detection of the collision and not the contact information. it would be nice if there was a built-in type called 'sensor' or something that didn't do the extra work of computing the contact point/normal. that's it! thanks to erwin for his contribs and i'm really excited about these developments. From dmcclurg at pandemicstudios.com.au Thu Oct 24 15:25:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 24 15:25:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: struct dContactGeom { dVector3 pos; // contact position dVector3 normal; // normal vector dReal depth; // penetration depth dGeomID g1,g2; // the colliding geoms }; A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). int dCombineContacts(int n, dContactGeom* Contacts, int Stride); // Attempts to merge all contacts into a single contact // returns 1 if successful and 'n' otherwise Ta From erwin at vo.com Thu Oct 24 16:02:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:02:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <004201c27bb1$4833fe30$73fefea9@athlon> > > Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() > > or dGeomGetRotation() on a non-placeable geom? > > hmmm ... non-placeable geoms may not have any relevant pos or R data at > all. even if something is returned, e.g. zeros, i think the user > should be notified that it's not good for anything. or perhaps the user > should be told to check for a 0 return code? perhaps this is a way to > detect non-placeable geoms? but in that case a dGeomIsPlaceable() > function would be cleaner. Agreed. But i dont think i saw it in the docs. ;-) > > You default the Category and Collide bits to 1 so that users that dont care > > about it dont have to touch it. Wouldnt it be more logical to default to > > 0xffffffff then? > > i thought about this and could not decide the right answer. how about > category=1 and collide=(~0)? There is no correct solution.to this. People should just use it! So either 1 or ~0 for the category bits will do. I vote for ~0. > > Excellent. How do you determine if a geom has (not) moved? > > a space will have a list of clean and dirty geoms. the clean geoms have > precomputed AABBs (and perhaps precomputed other things). a geom gets > transferred to the dirty list when: > * dGeomSetSomething() is called. > * it's attached to a non-disabled body. > a space can only be in a clean list if it has no dirty items itself - so > operations on clean geoms can propagate dirty-ness up to the root space. How do you handle the case where a user creates a geom, attaches a body, disables it, and then calls dBodySetPosition() on it each step? I actually do this (the object gets enabled when it is touched), and it took me hours to find why the hell my object wasnt collision-detected (and thus enabled). Needless to say i was extremely unsatisfied when i found the bug. > > Is it possible to manually lock and unlock the spaces? > > no ... can you give me a use case for when this is required? > > > Not entirely, but i was thinking of removing this flag as well, because it > > can be faked by setting the Category and Collide bits to 0. > > why 'not entirely?'. Because the geom's aabb would be computed while it is inside the space, and in the quadtree space it would be inside a node. Thus, enabling is faster than adding. The main reason i added this is to give the user the ability collide a geom with a space on-demand, without performance loss. Imagine fireing a bullet with instant impact (ray). All the objects the bullet could possibly hit are in a seperate space. I would call dSpaceLock() on the root space, which locks all subspaces as well. (I suppose internally this already happens?) I would then call dSpaceCollide() on my root space. Then i call dSpaceCollide2() with my bullet and the seperate space. The bullet now has the same advantages as all other objects had while in dSpaceCollide(). > > I think it is good enough to keep me from continuing my own dc library. > > i am largely cutting and pasting from your dc library into ODE - changing > the way some things work - but the new collision system is largely > the result of your effort. > > > I also considered adding this, but i found it too problematic. > > as did i - > * memory management: when a space is deleted, which geoms are deleted? > should we use ref counting or garbage collection. either way > introduces other problems. > * a geom has to notify multiple parents when certain things happen, > e.g. when it moves. annoying for the clean-data-structure point of > view. Not to mention the prev and next pointer you have to keep for each space the geom is in, or the ability to create infinite loops by adding a space in another space which contains the first space itself. Have fun debugging that. :-) Erwin From coding at natew.com Thu Oct 24 16:03:01 2002 From: coding at natew.com (Nate W) Date: Thu Oct 24 16:03:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: On Fri, 25 Oct 2002, David McClurg wrote: > one other common concept in collision detection is a ghost or phantom > geom used as a sensor. you don't bounce off it -- you just detect a > penetration. ie: what you want is just detection of the collision and > not the contact information. it would be nice if there was a built-in > type called 'sensor' or something that didn't do the extra work of > computing the contact point/normal. Could you do that by filtering out collisions involving the 'sensor' geoms in the collision callback? Like: int count = dCollide (o1, o2, contacts, &contact[0].geom ... MyClass *p1 = dGeomGetData (o1); MyClass *p2 = dGeomGetData (o2); if (p1->isSensor) p1->CollisionDetected (count, contact) if (p2->isSensor) p2->CollisionDetected (count, contact) if (!p1->isSensor && !p2->isSensor) { // create contact joints } -- Nate Waddoups Redmond WA USA http://www.natew.com From erwin at vo.com Thu Oct 24 16:09:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:09:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <005201c27bb2$4fbc97b0$73fefea9@athlon> > one other common concept in collision detection is a ghost or phantom geom used as a sensor. you don't bounce off it -- you just detect a penetration. ie: what you want is just detection of the collision and not the contact information. it would be nice if there was a built-in type called 'sensor' or something that didn't do the extra work of computing the contact point/normal. I proposed this once. Calling dCollide() with 0 as flags, and simply have it return 0 or 1. It would be entirely possible, but it could break old code. But i doubt anyone does it this way. Erwin From erwin at vo.com Thu Oct 24 16:20:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:20:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <008401c27bb3$c83da200$73fefea9@athlon> > struct dContactGeom { > dVector3 pos; // contact position > dVector3 normal; // normal vector > dReal depth; // penetration depth > dGeomID g1,g2; // the colliding geoms > }; > > A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? > Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). You're actually using the mesh-plane intersection?? Daring. My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. > int dCombineContacts(int n, dContactGeom* Contacts, int Stride); > // Attempts to merge all contacts into a single contact > // returns 1 if successful and 'n' otherwise This would be very nice. But you should probably add a dReal MaxError as parameter, because without it it would be very hard. Erwin From erwin at vo.com Thu Oct 24 16:22:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:22:01 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <008801c27bb4$1955fa70$73fefea9@athlon> Thats not what he ment. I also typed a similar message, and then realized i didnt get the point. :-) The point David is making is that his dectection geoms dont need contacts. Just a true/false to determine if they hit. Erwin ----- Original Message ----- From: "Nate W" To: Sent: Thursday, October 24, 2002 17:11 Subject: RE: [ODE] enhanced ODE collision API > On Fri, 25 Oct 2002, David McClurg wrote: > > > one other common concept in collision detection is a ghost or phantom > > geom used as a sensor. you don't bounce off it -- you just detect a > > penetration. ie: what you want is just detection of the collision and > > not the contact information. it would be nice if there was a built-in > > type called 'sensor' or something that didn't do the extra work of > > computing the contact point/normal. > > Could you do that by filtering out collisions involving the 'sensor' geoms > in the collision callback? Like: > > int count = dCollide (o1, o2, contacts, &contact[0].geom ... > > MyClass *p1 = dGeomGetData (o1); > MyClass *p2 = dGeomGetData (o2); > > if (p1->isSensor) > p1->CollisionDetected (count, contact) > if (p2->isSensor) > p2->CollisionDetected (count, contact) > > if (!p1->isSensor && !p2->isSensor) > { > // create contact joints > } > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From russ at q12.org Thu Oct 24 17:05:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 17:05:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: > does that mean a geom cannot be placed into two different groups? not > a big deal, but i'm curious. they can't, yes. any reason you would want to? > one other common concept in collision detection is a ghost or phantom > geom used as a sensor. you don't bounce off it -- you just detect a > penetration. ie: what you want is just detection of the collision and > not the contact information. it would be nice if there was a built-in > type called 'sensor' or something that didn't do the extra work of > computing the contact point/normal. hmmmm ... perhaps a flag defined for dCollide() that instructs it to just return 1 or 0 depending on if there is intersection or not. at last a use for the flags parameter! this would mean touching ALL the pairwise collision functions - this is lower down the TODO list for now because you can just use dCollide() as-is, although it might be slower than you like. russ. -- Russ Smith http://www.q12.org/ From russ at q12.org Thu Oct 24 17:12:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 17:12:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <004201c27bb1$4833fe30$73fefea9@athlon> Message-ID: > How do you handle the case where a user creates a geom, attaches a body, > disables it, and then calls dBodySetPosition() on it each step? I actually > do this (the object gets enabled when it is touched), and it took me hours > to find why the hell my object wasnt collision-detected (and thus enabled). > Needless to say i was extremely unsatisfied when i found the bug. tricky! the body will have to know what geom it is attached to and call dGeomThisGuyMoved() when dBodySetPosition() etc called on it - which will make sure the geom is in the dirty list. > Because the geom's aabb would be computed while it is inside the space, and > in the quadtree space it would be inside a node. Thus, enabling is faster > than adding. ok, good reason. i'll add dGeomEnable/Disable/IsEnabled. russ. -- Russ Smith http://www.q12.org/ From dmcclurg at pandemicstudios.com.au Fri Oct 25 01:19:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Fri Oct 25 01:19:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: >> A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. > You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? if there is a callback for each contact generated, the callback could query the index. otherwise, you could put it into the dContactGeom struct, but since they could both be a mesh, you would need two-- i1,i2. maybe this is a good time to bring up the idea of a generalized event handler instead of callbacks. you get an event when the contact is generated instead of passing an array. you store it off then and query the index if needed. >> Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). > You're actually using the mesh-plane intersection?? Daring. no, i'm sorry. i meant my player collides with many static meshes and planes in the world. i combine the contacts between the player sphere and all the triangle & plane contacts to get smooth physics. > My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. that's what i've noticed. why doesn't ODE like close contacts? hmmm. got to investigate that soon. From tetron at interreality.org Fri Oct 25 01:34:09 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 01:34:09 2002 Subject: [ODE] box-box collisions Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Okay, so I've spent a little time looking at the box-box collision code. Detecting face-face contacts seems fairly easy; we just need to compare the normal vector between the boxes centers in the collision with the normal vector of the normal vectors of the sides of the penatrating box. In other words, determine if they share a coplanar face. Then we need to generate contact points (I haven't quite figured this part out yet). I have a few questions. The first is that in doing this comparison, there is enough error floating around that it is very unlikely that the normals of box faces that should be treated as coplanar will be *exactly* the same. In general, what is the policy in ODE for handling these sorts of slightly inexact comparisons? The second question is face-edge collisions. What's a good way of determining if a line (the edge) lies in the plane of the face? Again, this has to be a slightly inexact comparison rather than an exact calculation because of error. I've determined that face-edge collisions are absolutely crucial for good box stacking, since otherwise it becomes almost impossible for one box to come to rest upon another if the first one hits the supporting box at an angle. Face-edge contacts need two contact joints, otherwise boxes will just tumble uncontrolably. I'm going to take a look at the box-plane collision code tomorrow, since it must already handle these issues correctly, perhaps differently (having an object that is infinite and static does make certain calculations easier!) [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uQHBaeHUyhjCHfcRArq1AKCwBhNnJJ31E9GYdocpzCJgp3vkOQCfRmlS MLWLUFenllq0HRzWXDWrbjs= =l4iZ -----END PGP SIGNATURE----- From dale_thomas at hotmail.com Fri Oct 25 01:49:02 2002 From: dale_thomas at hotmail.com (Dale Thomas) Date: Fri Oct 25 01:49:02 2002 Subject: [ODE] Tetrahedron class Message-ID: Hi there I am looking for a tetrahedron primitive class. Does anyone have such a class or can give me advice on creating one Thanks _________________________________________________________________ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 From f99jooh at dd.chalmers.se Fri Oct 25 01:56:02 2002 From: f99jooh at dd.chalmers.se (Johannes =?iso-8859-1?q?=D6hlin?=) Date: Fri Oct 25 01:56:02 2002 Subject: [ODE] Invisible spheres Message-ID: <200210250855.KAA12394@eru.dd.chalmers.se> Hi I've been using ODE with drawstuff for a couple of weeks now and I'm experiencing a problem I can't solve. In my program I run several simulations with drawstuff (dsSimulationLoop), in each simulation I use a more or less random collection of boxes and spheres and joints. Here's the problem: Spheres are only visible in the first simulation. After that first run only boxes and shadows are visible. Does anybody have any idea what could be wrong? /Johannes -- Johannes ÖHlin Undergraduate student Engineering Physics Chalmers University of Technology From Marta.Pla at uv.es Fri Oct 25 02:02:01 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Fri Oct 25 02:02:01 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <1035536660.27694.8.camel@welfa> --=-sbJWy6VppIJdrQ4ob90f Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable El vie, 25-10-2002 a las 10:33, Peter Amstutz escribi=F3: First of all, hello to everyone, this is my first message to the list > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 >=20 > Okay, so I've spent a little time looking at the box-box collision code. > Detecting face-face contacts seems fairly easy; we just need to compare > the normal vector between the boxes centers in the collision with the > normal vector of the normal vectors of the sides of the penatrating box. > In other words, determine if they share a coplanar face. Then we need to > generate contact points (I haven't quite figured this part out yet). >=20 > I have a few questions. The first is that in doing this comparison, ther= e > is enough error floating around that it is very unlikely that the normals > of box faces that should be treated as coplanar will be *exactly* the > same. In general, what is the policy in ODE for handling these sorts of > slightly inexact comparisons? >=20 The fact is that I don't know really how it does, but I have the same problem in my application. I resolve the face-face collision by examining the relative rotation matrix between the two boxes. If the angles of this matrix are "little" enough I consider the boxes are parallel and solve the problem adding two more contact points in the colliding face with the same problem. > The second question is face-edge collisions. What's a good way of > determining if a line (the edge) lies in the plane of the face? Again, > this has to be a slightly inexact comparison rather than an exact > calculation because of error. I've determined that face-edge collisions > are absolutely crucial for good box stacking, since otherwise it becomes > almost impossible for one box to come to rest upon another if the first > one hits the supporting box at an angle. Face-edge contacts need two > contact joints, otherwise boxes will just tumble uncontrolably. >=20 Totaly certain. But this is more difficult. Before beginning working with ODE I was using another collision detection library based also in OBBTrees but I was not able to determine well enough the face-edge collision. If anyone has an idea, it will be great. I wish you understand why a spanish write so bad english :) --=20 **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint =3D 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla@uv.es) http://www.uv.es/~mplac **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. --=-sbJWy6VppIJdrQ4ob90f Content-Type: application/pgp-signature; name=signature.asc Content-Description: Esta parte del mensaje esta firmada digitalmente -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) iD8DBQA9uQkUhrRS0qLSFhARAgeVAJ9JMW9rDWGEk7MPvVIrvGal6LhltgCcCcwG wFgN4YUqdAzcZJLxbevHwCo= =PF9Y -----END PGP SIGNATURE----- --=-sbJWy6VppIJdrQ4ob90f-- From p.terdiman at wanadoo.fr Fri Oct 25 03:13:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 25 03:13:02 2002 Subject: [ODE] box-box collisions References: Message-ID: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Quick question : Is there a reason why the number of contacts for the box-box collision is limited to 3 ? What do I need to do in order to change that number ? From Marta.Pla at uv.es Fri Oct 25 04:03:02 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Fri Oct 25 04:03:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> References: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: <1035543982.27694.22.camel@welfa> --=-zrWb3Q02w2KWfGx4vwjj Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable El vie, 25-10-2002 a las 12:10, Pierre Terdiman escribi=F3: > Quick question : >=20 > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? You only need 3 points to put a box over another box. The necesary forces to implement, for example, a box leaved in a floor, are three. Of course you can implement 4 or more contact points, but they are redundant. > What do I need to do in order to change that number ? >=20 >=20 > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode --=20 **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint =3D 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla@uv.es) http://www.uv.es/~mplac **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. --=-zrWb3Q02w2KWfGx4vwjj Content-Type: application/pgp-signature; name=signature.asc Content-Description: Esta parte del mensaje esta firmada digitalmente -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) iD8DBQA9uSWuhrRS0qLSFhARAvZ1AJwIhsHSeMW1EX8gJKhDeEjcCdVaCgCgin94 NgWwsVVJzj97Mi5jjZ+O+lQ= =EnnI -----END PGP SIGNATURE----- --=-zrWb3Q02w2KWfGx4vwjj-- From ps_yumemi at yahoo.com Fri Oct 25 05:55:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Fri Oct 25 05:55:02 2002 Subject: [ODE] synchronizing network programs Message-ID: <20021025125408.1747.qmail@web40506.mail.yahoo.com> hello i'm still finishing my networking program using ODE. it's a mobile robot simulator and i still have problems synchronizing my mobots. i'm using a peer to peer session so all the computers send messages to other computers. the messages contain the current speed, position, rotation and other things i need. all i nedd is to compensate for the lag of the network by checking the constant position of the mobot and where it is suppose to be according to the data sent. what would be the best way to do this? 2nd i can't seem to make dBodySetRotation to work. is the matrix required for it in degrees? or in radians? last, if i have two or more mobots in the system, what's the best way to check if they collide? coz the original program only considered one mobot in the system. please consider that a mobot has not just wheels and a body but sensors as well. any suggestion is welcome. thanks __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From slipch Fri Oct 25 09:20:02 2002 From: slipch (slipch) Date: Fri Oct 25 09:20:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <10033043223.20021025192245@gsc-game.kiev.ua> Hello Peter, Friday, October 25, 2002, 11:33:00 AM, you wrote: PA> -----BEGIN PGP SIGNED MESSAGE----- PA> Hash: SHA1 PA> Okay, so I've spent a little time looking at the box-box collision code. PA> Detecting face-face contacts seems fairly easy; we just need to compare PA> the normal vector between the boxes centers in the collision with the PA> normal vector of the normal vectors of the sides of the penatrating box. PA> In other words, determine if they share a coplanar face. Then we need to PA> generate contact points (I haven't quite figured this part out yet). PA> I have a few questions. The first is that in doing this comparison, there PA> is enough error floating around that it is very unlikely that the normals PA> of box faces that should be treated as coplanar will be *exactly* the PA> same. In general, what is the policy in ODE for handling these sorts of PA> slightly inexact comparisons? PA> The second question is face-edge collisions. What's a good way of PA> determining if a line (the edge) lies in the plane of the face? Again, PA> this has to be a slightly inexact comparison rather than an exact PA> calculation because of error. I've determined that face-edge collisions PA> are absolutely crucial for good box stacking, since otherwise it becomes PA> almost impossible for one box to come to rest upon another if the first PA> one hits the supporting box at an angle. Face-edge contacts need two PA> contact joints, otherwise boxes will just tumble uncontrolably. PA> I'm going to take a look at the box-plane collision code tomorrow, since PA> it must already handle these issues correctly, perhaps differently (having PA> an object that is infinite and static does make certain calculations PA> easier!) Box - box collision use axis separating. It never checks complanarity of box faces and I do not think It will ever do it and do not think it really need it. But you can make your own alternative box-box collider than you can see easy it or not :). May be it needs to spend more time looking at the original box-box collider :). -- Best regards, Konstantin Slipchenko. mailto:slipch@gsc-game.kiev.ua From russ at q12.org Fri Oct 25 10:36:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 10:36:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: > why doesn't ODE like close contacts? ODE needs to find a unique solution for all constraints in the system. if there are two (or more) constraint dimensions that do not have a unique solution, numerical errors will result. now, imagine two contacts in exactly the same position. if we look at the solution for this system and subtract some of the force from contact 1 and add the same amount to contact 2, the resulting motion of the system will be the same (because the contacts are adding at the same point). thus the solution is not unique. moral: the closer that contacts come to having the same effect on the system, the more solution error there will be. note that the global CFM parameter can be increased to reduce the amount of numerical error in the system, even when you have coincident contacts. russ. -- Russ Smith http://www.q12.org/ On Fri, 25 Oct 2002, David McClurg wrote: > >> A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. > > You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? > > if there is a callback for each contact generated, the callback could query the index. otherwise, you could put it into the dContactGeom struct, but since they could both be a mesh, you would need two-- i1,i2. > > maybe this is a good time to bring up the idea of a generalized event handler instead of callbacks. you get an event when the contact is generated instead of passing an array. you store it off then and query the index if needed. > > >> Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). > > You're actually using the mesh-plane intersection?? Daring. > > no, i'm sorry. i meant my player collides with many static meshes and planes in the world. i combine the contacts between the player sphere and all the triangle & plane contacts to get smooth physics. > > > My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From russ at q12.org Fri Oct 25 10:49:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 10:49:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? to be clear: it's my intention to generate at most 3 contact points for box-box collison (at the moment only 1 will be generated). to represent the *complete* geometry of one box being stacked on top of another up to 8 contacts may be necessary. but in ODE contacts are expensive, so we want to use the least number of contacts that will result in a reasonable approximation. three is a reasonable number, as long as we use the three contacts that are most penetrating. for a 3-contact box stacking situation it is *possible* that the boxes can interpenetrate when pushed along some directions, but such errors will be corrected in the next timestep so they will generally not be visible. > What do I need to do in order to change that number ? write more code :) russ. -- Russ Smith http://www.q12.org/ From tetron at interreality.org Fri Oct 25 11:29:01 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 11:29:01 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 You can think of it this way -- each contact point removes (or at least restricts) a degree of freedom from the system. Since the box can rotate on three axes, you need at least three contact constraints in order to have a stable face-face collision. However as Marta said, more than three would be redundant in most situtations. On Fri, 25 Oct 2002, Pierre Terdiman wrote: > Quick question : > > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? > What do I need to do in order to change that number ? > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uY1KaeHUyhjCHfcRAs0SAJ9Umt8RnmJ41zY22GWmjtfEp4cTxwCfTQo3 Xpnd1HgglR+jEL8q/rM5l0A= =XDEF -----END PGP SIGNATURE----- From tetron at interreality.org Fri Oct 25 11:43:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 11:43:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <10033043223.20021025192245@gsc-game.kiev.ua> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Fri, 25 Oct 2002, slipch wrote: > Box - box collision use axis separating. It never checks complanarity of > box faces and I do not think It will ever do it and do not think it > really need it. But you can make your own alternative box-box collider > than you can see easy it or not :). May be it needs to spend more time > looking at the original box-box collider :). It seems there are a couple possible ways to test for face-face box contacts. Rather than being coplanar actually I meant that the planes of each box are parallel, so if we know that the boxes penetrate and are coplanar then there must be a face-face contact. The other way suggested by Marta is to compare rotations, and if the boxes are at equal/right/180 degree angles to one another then they must be in face-face contact as well. I think the second way may be a bit faster. For box-edge collisions we definately need to test to see if an edge is coplanar with the face it collides with. Actually, that may not be so bad. Once we know that, generating a couple contact points should be easy. Russ, would you care to explain the current box-box collision algorithm (and maybe box-plane as well)? I've been looking it over but the code is rather... dense :-) Oh, and for comparison, last night I took a midterm exam in Advanced Algorithms (a required course in the masters/PhD program here) and it was waaay easier than trying to figure out the box collision code :-) [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uZCcaeHUyhjCHfcRAmR+AJ9JvdpYz0722LwBZgOJlLkOJgc20gCdFnhg USeMPPQ/VUpi8lXlqK8DgwA= =RmQm -----END PGP SIGNATURE----- From russ at q12.org Fri Oct 25 12:22:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 12:22:01 2002 Subject: [ODE] box-box collisions In-Reply-To: Message-ID: > Russ, would you care to explain the current box-box collision algorithm > (and maybe box-plane as well)? I've been looking it over but the code is > rather... dense :-) to summarize: the standard 15-axis test is performed to check for box-box intersection (6 face-normal tests and 9 edge x edge tests). for each axis, the box-box penetration is recorded (penetration defined as the overlap of the projection of the boxes to the test axis). the most penetrating axis is used as the normal. if the most penetrating axis is an edge x edge then the closest point between the closest box edges is used as the contact point. otherwise the most penetrating axis is normal to the face of one box so the deepest vertex (along this axis) of the other box is used. it is this last case that should be modified to generate up to 3 contacts, not just the one. one approach is to examine the three edges adjacent to the most penetrating vertex and clip them to the box, thereby generating three other points, and use the two that are deepest. i've not tried this, so i don't know if it will work well, but this would be my first approach. some other people's box-box code takes the following approach (or some variant of it): compute the box-box intersection volume, take the vertices of this volume as an initial contact point set, then do some kind of culling to reduce the contact points to a manageable number. this approach has three big drawbacks: (1) it's slow, (2) the culling process is not well defined so this can lead to over-sensitive contacts, (3) for edge-edge contacts, where there should only be one contact point, these schemes nevertheless generate many points - and it takes a very smart culling algorithm to reduce this to just one. this illustrates a point i've made before: that collision detection for dynamics is a more difficult problem that collsion detection alone: the contact points that are generated must meet extra conditions so that the resulting contact-driven motion will be stable. in particular: * contact points should be inside the collison volume. * contact points should not jump around unnecessarily if the object positions change slightly (these are called over-sensitive contacts). * the contact constraints should be far from singular. the worst thing that collision code can do is generate coincident contacts. * the contact set must depend only on the local surface properties, not on the global object properties. * the contact normal should be the most direct translational path to reducing penetration at a contact point. this condition is less necessary for stability than the others, but is still important. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Fri Oct 25 12:55:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 25 12:55:02 2002 Subject: [ODE] dynamics in general In-Reply-To: Message-ID: Does anyone know of any mailing lists for dynamics in general, not just for particular libraries and applications? I just realized that there might be people out there who are not using ODE, and yet are doing interesting things with dynamics anyway. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From tisch at uni-paderborn.de Fri Oct 25 13:34:01 2002 From: tisch at uni-paderborn.de (Tim Schmidt) Date: Fri Oct 25 13:34:01 2002 Subject: [ODE] ODE for Java v0.1 released Message-ID: <3DB9AA9B.9040701@uni-paderborn.de> Hi! I am pleased to announce that the first release of 'ODE for Java' is available via: http://www.tim-schmidt.de/odeforjava/ Additionally to just making ODE available in Java, it provides a set of Java3D objects that can hopefully be used without detailed knowledge of ODE internals. This release is version v0.1 and it should work with: - JDK 1.3 - Java3d 1.2.1-03 Please note: - The JNI covers the ODE functionality that was available around june 2002. - The ode.core.extensions and ode.java3d.geometry.sensors packages use objects that can be found in ode/core/extensions/ode-src. To integrate them into ODE itself follow the instructions that are given in contrib/GeomTransformGroup/README.txt in the ODE CVS tree. - At the current stage I can not guarantee that the API will not change to a certain extent. - There may still be several bugs in the code, especially as respects garbage collection (so watch out for memory leaks) The lib/ directory contains precompiled linux libraries of ODE and 'ODE for Java' that have to be reacheable through the LD_LIBRARY_PATH environment variable. The provided archive development.tar.bz2 is ready to use for your own development. It contains the source code of this project and a set of makefiles that represent a modification and extension of 'The Universal Makefile' which can be found at http://geosoft.no/javamake.html. The latter is rather designed for unix/linux environments but with loss of functionality it may be adapted to work with windows, too. Just make sure that: - the environment variable JAVA_DEV_ROOT points to the development directory that is created after the unpacking of development.tar.bz2 - the environment variable JAVA_HOME points to your Java SDK directory Have a look at the examples in the ode.java3d.test package. They should give a good impression how everything is set up, at least for those who are already familiar with Java3D scene graph assembly. Feel free to send bug reports and comments to odeforjava@tim-schmidt.de. And finally I don't want to forget to thank Russ for his really great work!!! :-))) kind regards, Tim Schmidt From p.terdiman at wanadoo.fr Fri Oct 25 13:58:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 25 13:58:02 2002 Subject: [ODE] box-box collisions References: Message-ID: <041101c27c68$ede5d260$0e00000a@pierre> > three is a reasonable number, as long as we use the three > contacts that are most penetrating. Ok, that's the extra condition I was missing. > > What do I need to do in order to change that number ? > > write more code :) Actually the answer I was looking for was : "change the hardcoded value in static void nearCallback (void *data, dGeomID o1, dGeomID o2)" That's in the box-stack test, no wonder I didn't find it in ODE itself..... Pierre From wristy_j at yahoo.com Fri Oct 25 14:32:02 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Fri Oct 25 14:32:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021025213134.48020.qmail@web40812.mail.yahoo.com> Hello, I need to implement a physics simulation that can handle rag-doll type constraints (hinge, ball, but probably none powered) with joint limits, and contact with friction. I need a fast method. Is the LCP / Lagrange multiplier method used in ODE fast enough for interactive frame rates (> 30 fps) for a minimal number of constraints/contacts? I'm thinking at most, a few multi-bodies with around 9 joints each (10 bodies), plus random simple rigid bodies which may come in contact with the multi-bodies. Also - is there any drawback to using the LCP method on consoles? Does anyone know if Havok uses a similar method? I imagine they're not just using penalty methods. What other good, fast methods are out there? Thanks! J __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From coding at natew.com Fri Oct 25 17:10:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 25 17:10:02 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021025213134.48020.qmail@web40812.mail.yahoo.com> Message-ID: On Fri, 25 Oct 2002, Jason Gott wrote: > I need to implement a physics simulation that can > handle rag-doll type constraints (hinge, ball, but > probably none powered) with joint limits, and contact > with friction. I need a fast method. Is the LCP / > Lagrange multiplier method used in ODE fast enough for > interactive frame rates (> 30 fps) for a minimal > number of constraints/contacts? I just did some experiments with a rag doll consisting of 10 bodies, and 9 joints - all bodies are boxes, and I use ball joints for the shoulders, hips, and neck, and hinges for the knees and elbows. I have a 1.7ghz K7 and a GeForce 3. It's like Porrasturvat, but without the stairs, just a simple ground plane. With one doll, I get ~38 frames per second. With two dolls, 25-28 fps. With three, 19-20 fps. With four dolls (team dismount!), about 15 fps. Changing the bodies to flat-ended cylinders brought the four-doll simulation down to 11 fps. Changing them to capped cylinders, 6-9 fps. Bear in mind that there's some overhead in my tests due to the fact that they're conducted in a general purpose ODE playground rather than in an optimized game. I have no idea how much overhead there is, though. I don't think it's very significant, but if anyone can do a similar test I'd be really interested in the results. -- Nate Waddoups Redmond WA USA http://www.natew.com From johnb003 at hotmail.com Fri Oct 25 21:50:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Fri Oct 25 21:50:02 2002 Subject: [ODE] Higher Order Integrators Message-ID: Hey Russ, have you done any work on implementing a higher order integrator? I was about to give it a shot and I thought I'd see if you had started anything before I begin. Thanks, John Butterfield _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From erwin at vo.com Sat Oct 26 05:28:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Sat Oct 26 05:28:02 2002 Subject: [ODE] Speed of ODE's constraint method References: Message-ID: <001b01c27cea$e4e57670$73fefea9@athlon> These framerates look rediculously low. Are you measuring the physics stepping rate? Erwin ----- Original Message ----- From: "Nate W" To: Sent: Friday, October 25, 2002 18:18 Subject: Re: [ODE] Speed of ODE's constraint method > On Fri, 25 Oct 2002, Jason Gott wrote: > > > I need to implement a physics simulation that can > > handle rag-doll type constraints (hinge, ball, but > > probably none powered) with joint limits, and contact > > with friction. I need a fast method. Is the LCP / > > Lagrange multiplier method used in ODE fast enough for > > interactive frame rates (> 30 fps) for a minimal > > number of constraints/contacts? > > I just did some experiments with a rag doll consisting of 10 bodies, and 9 > joints - all bodies are boxes, and I use ball joints for the shoulders, > hips, and neck, and hinges for the knees and elbows. I have a 1.7ghz K7 > and a GeForce 3. > > It's like Porrasturvat, but without the stairs, just a simple ground > plane. With one doll, I get ~38 frames per second. With two dolls, 25-28 > fps. With three, 19-20 fps. With four dolls (team dismount!), about 15 > fps. > > Changing the bodies to flat-ended cylinders brought the four-doll > simulation down to 11 fps. Changing them to capped cylinders, 6-9 fps. > > Bear in mind that there's some overhead in my tests due to the fact that > they're conducted in a general purpose ODE playground rather than in an > optimized game. I have no idea how much overhead there is, though. I > don't think it's very significant, but if anyone can do a similar test I'd > be really interested in the results. > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From rtonge90 at yahoo.co.uk Sat Oct 26 07:13:02 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sat Oct 26 07:13:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021026141225.80198.qmail@web14907.mail.yahoo.com> Hello >Is the LCP / Lagrange multiplier method used in ODE >fast enough for interactive frame rates (> 30 fps) >for a minimal number of constraints/contacts? The short answer is yes. The long answer is maybe :o) The short answer is yes because there are a number of games on the shelves (and the top 10) that use an LCP method. Although the actual LCP method used in those games is different, it has similar characteristics to the one used in ODE. Brace yourselves for the long answer lads... Direct LCP methods (as used in ODE) have properties that are acceptable for some games/platforms and not others. In particular, memory usage, cpu usage and memory bandwidth usage can scale quite badly as the size of the system increases. Memory Direct methods require the storage of one or more large matrices. The size of the matrix can fluctuate quite a bit depending on what is happening in the game. For example, take a game where animated characters turn into physical ragdolls when they die. Suppose each one has 9 joints which each constrain 6 relative degrees of freedom. If a ragdoll is flying through the air then the number of matrix rows is 9*6=54. In this system, there is one matrix of size 54*54, which takes about 12k. Not too bad. Suppose the ragdoll hits the floor. This might add 2 friction contacts,each constraining 3 dof for each of the 10 bodies, giving 9*6+3*10*2=114 rows in total. This brings the matrix size to 114*114 which takes 52k. Suppose you have 10 ragdolls flying through the air. You get 10 matrices of size 54, which takes 12k*10=120k. Suppose that they fall in a pile on the floor. As they are all touching they have to all go in the smae matrix. There might be 3*10*2=60 rows due to the contacts between 9 ragdoll-ragdoll pairs, and 3*10*2=60 rows between the bottom ragdoll and the ground. Each ragdoll still has 54 rows holding it together. This gives a grand total of 9*60+60+54*10=1140 rows. A 1140*1140 matrix takes about 5 megs! Unlike graphics, the cost of (direct LCP) physics is not per object, it is per interaction, and it can get quite big. Of course, in real games which use these methods, there are hacks to make sure that people dont die in the same spot, or that only a small number of cars can be involved in a crash. James Golding did a GDC 2002 talk about how this is done in MathEngine Karma. However, big piles of dying people, big walls of falling blocks or big car crashes might be a vital part of the game, and in these cases other methods are better. There is a similar story with cpu time. Ill have to talk generally here because the direct LCP method I have experience with is different to the one used in ODE. Typically what happens is that a number of 'iterations' (in the for-loop sense, not the iterative algorithm sense) are performed. Each one takes some subset of the data in the matrix and performs some O(n^3) or O(n^2) matrix operations on it. The number of 'iterations' is variable and depends on things like the number of separating contacts. In theory, the maximum number of iterations is O(2^n) or O(3^n), which is an argument often wheeled out by anti-LCP people. There are problems but this is the least of your worries. The reason is that you can stop the an LCP after a constant number of iterations, and the physical artefacts are not too bad. The real problem is that the size of the matrix, n fluctuates quite a bit (as discussed above). This wouldnt be too bad if you were doing a linear amount of work on the matrix. However, you are doing O(n^3) work, so any fluctuations in n give large fluctuations in the cpu time. I should say though that LCP methods are very stable, and once Russ sorts out box-box, ODE is going to be rock solid. The reason that there are direct LCP games in the top 20 at the moment despite the above hurdles is because the stability is so good. >Also - is there any drawback to using the LCP method >on consoles? On PC, the above concerns arent too much of a problem. PC games machines have lots more ram than consoles, and if the game is good enough they will buy more. CPUs are a lot faster and have more cache. This makes the constant factors in execution time very small. Simple gameplay and AI hacks can prevent physical systems getting too big. For this reason, I believe that direct LCP based physics engines such as ODE are a very good choice for the PC. Our tests have also shown that they are a very good choice on the gamecube and xbox due to the easily accessible memory bandwitdh on those platforms. However, on the PS2 it is not quite as clear. Many people are releasing games based on a direct LCP solver on PS2, but they have had to make some compromises. The PS2 does have masses of memory bandwidth and floating point performance, but unoptimised C code doesnt have access to it. If you are going to port ODE to the PS2 I would suggest double buffering all your data through the scratchpad, microcoding all your inner loops and staying away from vif0. Taking advantage of matrix sparsity is a good idea too. In my experience, iterative (as opposed to direct) LCP methods work much better on PS2. With these methods it is possible to keep all the data of a reasonably sized scene in spr or vumem0 at once. This gives you far more gigaflops, because you are not hanging around waiting for main memory all the time. With these algorithms, you can even out run a PC! MathEngine Karma 1.3 comes with a direct LCP solver Kea, and an iterative LCP solver Arthur, so that you can select the best solution for your platform/game. Sorry about that... Of course, there are non LCP routes you could look at as well. In particular Thomas Jacobsen's constraint relaxation with verlet integration is probably worth a look. Good luck with your simulations! Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From g.r.vansickle at worldnet.att.net Sat Oct 26 13:55:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Sat Oct 26 13:55:02 2002 Subject: [ODE] box-box collisions In-Reply-To: Message-ID: (oops, accidentally sent this only to Russ) [snip] > this illustrates a point i've made before: that collision detection for > dynamics is a more difficult problem that collsion detection alone: the > contact points that are generated must meet extra conditions so that the > resulting contact-driven motion will be stable. in particular: > > * contact points should be inside the collison volume. > This sounds like it doesn't bode well for any sort of "collision anti-aliasing" schemes, i.e. preventing a fast-moving small object from going right through a wall. Are you saying here that even if a suitable collision point was found, the fact that it was by definition outside the collision volume (because there is none) would prevent it from being properly taken into account? -- Gary R. Van Sickle Brewer. Patriot. From russ at q12.org Sun Oct 27 00:25:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:25:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <20021027002918.5ef81c00.russ@q12.org> > This sounds like it doesn't bode well for any sort of "collision > anti-aliasing" schemes, i.e. preventing a fast-moving small object > from going right through a wall. Are you saying here that even if a > suitable collision point was found, the fact that it was by definition > outside the collision volume (because there is none) would prevent it > from being properly taken into account? i'm not quite sure i understand the question - what i was saying is that more stable dynamics results when the contact point is inside the intersection volume. if your objects don't collide, there is no intersection volume and thus ODE won't generate a contact point. if you generate one anyway for fast moving objects (e.g. projecting the object along its path) the contact constraint will still act in the same way, but finding a contact position that will give you consistent stability is going to be a problem. russ. -- Russell Smith http://www.q12.org From russ at q12.org Sun Oct 27 00:36:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:36:02 2002 Subject: [ODE] ODE presentation at IGC'02 Message-ID: <20021027003656.5b83b402.russ@q12.org> for those interested in some more blah blah about ODE, the slides of my talk at IGC'02 are up on q12. it way not make much sense because it's all in note form, but i'm sure you will get the idea. anyway, follow the link at: http://q12.org/ode/slides/slides.html russ. -- Russell Smith http://www.q12.org From russ at q12.org Sun Oct 27 00:46:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:46:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021026141225.80198.qmail@web14907.mail.yahoo.com> References: <20021026141225.80198.qmail@web14907.mail.yahoo.com> Message-ID: <20021027005050.3de333b3.russ@q12.org> hi richard, > I should say though that LCP methods are very stable, > and once Russ sorts out box-box, ODE is going to be > rock solid. thanks for the vote of confidence! > The reason that there are direct LCP games > in the top 20 at the moment despite the above hurdles > is because the stability is so good. i am curious about one thing: do your customers percieve that the stability itself is the good thing, or that the shortened development time that results is the good thing? (both? neither?) > > > Sorry about that... as a penance for shamelessly marketing your stuff here :), perhaps you could tell us exactly what an 'iterative LCP' solver is? i'm genuinely curious. are you: * running a fixed number of LCP iterations per timestep? * factorizing the non-LCP constraints fully? * re-using constraint clamping info from step to step? - if so, how do you handle contact coherency problems? * in general, how is the LCP restarted? also, there is one thing to add to your explanation of where the time goes: when a large impact occurs in the system (e.g. a car crashes into a pile of boxes) there is usually a single time step at the moment of impact that goes *really* slowly. the problem is that the LCP solver needs a large number of iterations to effectively spread the impact force throughout the rest of the system (this problem can be understood more precisely by considering how the algorithm steps through the elongated LCP solution space). it sounds like this situation would benefit the most from your constant iteration technique? russ. -- Russell Smith http://www.q12.org From g.r.vansickle at worldnet.att.net Sun Oct 27 00:59:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Sun Oct 27 00:59:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <20021027002918.5ef81c00.russ@q12.org> Message-ID: > > This sounds like it doesn't bode well for any sort of "collision > > anti-aliasing" schemes, i.e. preventing a fast-moving small object > > from going right through a wall. Are you saying here that even if a > > suitable collision point was found, the fact that it was by definition > > outside the collision volume (because there is none) would prevent it > > from being properly taken into account? > > i'm not quite sure i understand the question - what i was saying is that > more stable dynamics results when the contact point is inside the > intersection volume. if your objects don't collide, there is no > intersection volume and thus ODE won't generate a contact point. As I understand it, you actually mean "If your objects don't intersect at any timestep..." in that last sentence, right? > if you > generate one anyway for fast moving objects (e.g. projecting the object > along its path) the contact constraint will still act in the same way, > but finding a contact position that will give you consistent stability > is going to be a problem. I guess what I'm wondering is, say you shoot an ODE bullet at an ODE wall. At one timestep, the bullet is on one side of the wall, at the next it's on the other side, in neither step do their respective geometries overlap. Are you saying that it isn't possible to generate a contact point that will ensure stability in such a case? -- Gary R. Van Sickle Brewer. Patriot. From rtonge90 at yahoo.co.uk Sun Oct 27 03:19:02 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sun Oct 27 03:19:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021027101849.10220.qmail@web14904.mail.yahoo.com> Hello >perhaps you could tell us exactly what an 'iterative >LCP' solver is? i'm genuinely curious I meant iterative in the sense that the Newton Raphson method is an iterative method for finding the roots of an equation. An iterative LCP method is one that makes an initial guess of the force vector and then on each iteration moves the force vector strictly closer to the exact solution. You can then stop the iteration whenever you like, if you are willing to accept an approximate solution. If you stop the algorithm after one iteration, you get an effect that looks quite similar to a micro-impulse simulator. If you dont limit the number of iterations, you get the exact LCP solution. For reasonable size systems with lots of stacks and stuff, about 350 iterations looks ok. Each iteration does a tiny amount of work (just a constant number of 4*6 matrix multiplies), so the user has quite fine grained control over the execution time (or simulation quality). A good reference on iterative LCP methods is chapter 9 of Murty's book, which is available online: http://ioe.engin.umich.edu/books/murty/linear_complementarity_webbook/kat9.ps Although this should give you an idea about what I mean by iterative LCP, I should point out that we dont use any of the methods in that chapter. > * re-using constraint clamping info from step to > step? > - if so, how do you handle contact coherency > problems? > * in general, how is the LCP restarted? I think that you are thinking that I was talking about a warm starting technique. Whilst it is a good idea to do this as well, that was not what I meant by an iterative LCP. Richard Tonge PS2 Optimisation Engineer MathEngine www.richardtonge.com __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From paul.chavent at fnac.net Sun Oct 27 11:13:02 2002 From: paul.chavent at fnac.net (Chavent Paul) Date: Sun Oct 27 11:13:02 2002 Subject: [ODE] how to get a geom class type. Message-ID: <3DBC3B39.5090407@fnac.net> Hello i'am french. I'am a new user. This is very exiting to play with this library, so thanks to its author. I have a question for you. Knowing a dGeomID geom how can i get its class (it is a cube, a sphere, a caped cylinder ????). I'have already try to found how the structure of a dGeomID is made, but i'am not sure. thanks ! From coding at natew.com Sun Oct 27 11:25:02 2002 From: coding at natew.com (Nate W) Date: Sun Oct 27 11:25:02 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <001b01c27cea$e4e57670$73fefea9@athlon> Message-ID: On Sat, 26 Oct 2002, Erwin de Vries wrote: > > It's like Porrasturvat, but without the stairs [...] With four dolls > > (team dismount!), about 15 fps. Changing them to capped cylinders, > > 6-9 fps. > > These framerates look rediculously low. Are you measuring the physics > stepping rate? I am now, and you're right, those numwers are really low with four dolls and capped cylinders, the dWorldStep call takes about 7 milliseconds. Drawing the scene takes about 22ms, so I should be getting around 35 fps, not 6-to-9. Thanks for the tip, now I'll see what I can do about it. -- Nate Waddoups Redmond WA USA http://www.natew.com From ahamilton_01 at hotmail.com Sun Oct 27 12:14:01 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Sun Oct 27 12:14:01 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: This iterative LCP solving sounds like the magic bullet for physics in game. Is it? Al >From: Richard Tonge >To: ode@q12.org >Subject: [ODE] Speed of ODE's constraint method Date: Sun, 27 Oct 2002 >10:18:49 +0000 (GMT) > >Hello > > >perhaps you could tell us exactly what an 'iterative > >LCP' solver is? i'm genuinely curious > >I meant iterative in the sense that the Newton Raphson >method is an iterative method for finding the roots of >an equation. > >An iterative LCP method is one that makes an initial >guess of the force vector and then on each iteration >moves the force vector strictly closer to the exact >solution. You can then stop the iteration whenever you >like, if you are willing to accept an approximate >solution. If you stop the algorithm after one >iteration, you get an effect that looks quite similar >to a micro-impulse simulator. If you dont limit the >number of iterations, you get the exact LCP solution. >For reasonable size systems with lots of stacks and >stuff, about 350 iterations looks ok. Each iteration >does a tiny amount of work (just a constant number of >4*6 matrix multiplies), so the user has quite fine >grained control over the execution time (or simulation >quality). > >A good reference on iterative LCP methods is chapter 9 >of Murty's book, which is available online: >http://ioe.engin.umich.edu/books/murty/linear_complementarity_webbook/kat9.ps >Although this should give you an idea about what I >mean by iterative LCP, I should point out that we dont >use any of the methods in that chapter. > > > * re-using constraint clamping info from step to > > step? > > - if so, how do you handle contact coherency > > problems? > > * in general, how is the LCP restarted? > >I think that you are thinking that I was talking about >a warm starting technique. Whilst it is a good idea to >do this as well, that was not what I meant by an >iterative LCP. > >Richard Tonge >PS2 Optimisation Engineer >MathEngine >www.richardtonge.com > >__________________________________________________ >Do You Yahoo!? >Everything you'll ever need on one web page >from News and Sport to Email and Music Charts >http://uk.my.yahoo.com >_______________________________________________ >ODE mailing list >ODE@q12.org >http://q12.org/mailman/listinfo/ode _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From russ at q12.org Sun Oct 27 12:23:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 12:23:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: <20021027002918.5ef81c00.russ@q12.org> Message-ID: <20021027122325.04738156.russ@q12.org> > I guess what I'm wondering is, say you shoot an ODE bullet at an ODE > wall. At one timestep, the bullet is on one side of the wall, at the > next it's on the other side, in neither step do their respective > geometries overlap. Are you saying that it isn't possible to generate > a contact point that will ensure stability in such a case? in this case it's not too hard - consider the wall to be an infinite plane and generate the contact point when the bullet is on the 'wrong' side of the wall. a better example is two long thin objects that go through each other without intersecting (e.g. in a sword fight). generating the contact point to handle this case is harder, but not impossible. russ. -- Russell Smith http://www.q12.org From erwin at vo.com Sun Oct 27 12:31:57 2002 From: erwin at vo.com (Erwin de Vries) Date: Sun Oct 27 12:31:57 2002 Subject: [ODE] Speed of ODE's constraint method References: Message-ID: <006b01c27ded$f751f5a0$73fefea9@athlon> > On Sat, 26 Oct 2002, Erwin de Vries wrote: > > > > It's like Porrasturvat, but without the stairs [...] With four dolls > > > (team dismount!), about 15 fps. Changing them to capped cylinders, > > > 6-9 fps. > > > > These framerates look rediculously low. Are you measuring the physics > > stepping rate? > > I am now, and you're right, those numwers are really low with four dolls > and capped cylinders, the dWorldStep call takes about 7 milliseconds. > > Drawing the scene takes about 22ms, so I should be getting around 35 fps, > not 6-to-9. Thanks for the tip, now I'll see what I can do about it. If the dWorldStep time is 7 milliseconds, isnt ~143fps the number you should be reporting? It might be questionable that you are doing only one worldstep in one rendering step, but if someone wants to know how fast ODE is this is the best way of telling them. :-) And any rendering shouldnt interfere with these numbers of course. Erwin From holmlund at hpc2n.umu.se Sun Oct 27 12:54:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Sun Oct 27 12:54:02 2002 Subject: [ODE] Speed of ODE's constraint method References: <006b01c27ded$f751f5a0$73fefea9@athlon> Message-ID: <3DBC4423.3030005@hpc2n.umu.se> How do you all time your simulation steps? Time system calls are generally quite expensive, and not a great way to test your simulation. If you do it like that you should dry run 1000 physics steps and measure that instead. /Ken -- Kenneth Holmlund Director VRlab HPC2N, Umeå University, Sweden holmlund@hpc2n.umu.se From coding at natew.com Sun Oct 27 13:19:01 2002 From: coding at natew.com (Nate W) Date: Sun Oct 27 13:19:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <006b01c27ded$f751f5a0$73fefea9@athlon> Message-ID: On Sun, 27 Oct 2002, Erwin de Vries wrote: > > I am now, and you're right, those numwers are really low with four dolls > > and capped cylinders, the dWorldStep call takes about 7 milliseconds. > > > > Drawing the scene takes about 22ms, so I should be getting around 35 fps, > > not 6-to-9. Thanks for the tip, now I'll see what I can do about it. > > If the dWorldStep time is 7 milliseconds, isnt ~143fps the number you should > be reporting? Yeah, good point. > It might be questionable that you are doing only one worldstep > in one rendering step (...) Yes, it definitely is. :-) I had incorrectly assumed that it took more time to 'step' the world than to render it. I just revised my code to step twice before rendering, and it only makes a small difference in frame rate. Probably does lots for stability though. Thanks for the tip. -- Nate Waddoups Redmond WA USA http://www.natew.com From si at sjbrown.co.uk Sun Oct 27 13:32:01 2002 From: si at sjbrown.co.uk (Si Brown) Date: Sun Oct 27 13:32:01 2002 Subject: [ODE] how to get a geom class type. References: <3DBC3B39.5090407@fnac.net> Message-ID: <001701c27df7$96841d70$ce0d68d5@gimp> Use the dGeomGetClass function, and compare the result with the statically defined class numbers such as dSphereClass, dBoxClass, etc. Have a look in the documentation(!) and geom.h for more details. Si ----- Original Message ----- From: "Chavent Paul" To: Sent: Sunday, October 27, 2002 7:15 PM Subject: [ODE] how to get a geom class type. > Hello i'am french. > I'am a new user. > This is very exiting to play with this library, so thanks to its author. > > I have a question for you. Knowing a dGeomID geom how can i get its > class (it is a cube, a sphere, a caped cylinder ????). > I'have already try to found how the structure of a dGeomID is made, but > i'am not sure. > > thanks ! > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From nathan at whatever.net Sun Oct 27 19:27:01 2002 From: nathan at whatever.net (Nate Waddoups) Date: Sun Oct 27 19:27:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <001b01c27cea$e4e57670$73fefea9@athlon> Message-ID: On Sat, 26 Oct 2002, Erwin de Vries wrote: > These framerates look rediculously low. Are you measuring the physics > stepping rate? No, but that's a really good idea. I have no idea how much overhead there is in the rest of the app... I'll try measuring the time spent in dWorldStep. -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Sun Oct 27 21:16:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 21:16:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021027101849.10220.qmail@web14904.mail.yahoo.com> References: <20021027101849.10220.qmail@web14904.mail.yahoo.com> Message-ID: <20021027212041.76d4b926.russ@q12.org> > A good reference on iterative LCP methods is chapter 9 > of Murty's book interesting. i read chapter 9 and implemented some of the methods there in matlab. the sparsity-preserving SOR (successive over-relaxation) method described on p378 seems to be the closest to what you describe, as its main computational step is multiplying M by some vector. in ODE 'M' is J*inv(M)*J', which boils down to a bunch of 6xN matrix operations as you described. for the random PD matrices i was testing with i found that the SOR method scaled as O(n^3), the same as the direct method. i found that if a 0.1% error was the termination condition then SOR was 3-4 times less flop count than ODE's direct solver for 100*100 matrices (the crossover point below which the direct method was faster was about 20*20). however! --> typical rigid body system matrices have a much more useful spectrum than my random matrices, so i suspect that if ODE had an SOR it would (a) be much faster than direct LCP, and (b) scale O(n) or O(n^2) depending on the structure of the RB system. i will investigate this later. SOR would not be too hard to implement in ODE at all (it would be an optional method). chosing the parameter values (e.g. w) presents a problem. > Although this should give you an idea about what I > mean by iterative LCP, I should point out that we dont > use any of the methods in that chapter. are you using a method related to the SOR method? russ. -- Russell Smith http://www.q12.org From amatos at create.human.nagoya-u.ac.jp Mon Oct 28 01:02:02 2002 From: amatos at create.human.nagoya-u.ac.jp (Artur Matos) Date: Mon Oct 28 01:02:02 2002 Subject: [ODE] ODE for Java v0.1 released In-Reply-To: <3DB9AA9B.9040701@uni-paderborn.de> References: <3DB9AA9B.9040701@uni-paderborn.de> Message-ID: <20021029020236.79571ec3.amatos@create.human.nagoya-u.ac.jp> Hi Tim, On Fri, 25 Oct 2002 22:33:31 +0200 Tim Schmidt wrote: > I am pleased to announce that the first release of 'ODE for Java' is > available I just take a look at the source and played a little bit with the examples. Looks great! Thanks for releasing it. As you probably remember, I was also working in a java application that used ODE. For that I developed my own java ODE interface using swig (http://www.swig.org). SWIG is an utility that helps to interface C and C++ libraries to a myrad of programming languages, including Java, Tcl and Python. I thing using SWIG in the long run would be more useful to the ODE community, because it would be easier to interface with other programming languages besides Java (like Python). Also, because the mapping from C++ to the other languages is more or less automatic, it could help with the garbage collection problems that you mention. Basically, in SWIG you only have to create an "interface" file (that is like a C/C++ header file), and the utility automatically creates all the necessary files; Garbage collection is also handled automatically by it. My own SWIG interface file is rather rough and incomplete by now, because I don't have the necessary SWIG knowledge (i.e. typemaps) to make a more natural mapping. Also, I have based my SWIG file in the C++ interface bundled with the O.03 distribution (I haven't checked the latest CVS versions, so I really don't know how it is now), and it was rather incomplete, so I had to change it slighty in order to work. Because anyway your interface is working much better that mine, and also because of the Java3D integration, I think I can drop my own interface so that we could work together in further developing yours. Anyway, because the reasons that I pointed before, I would sugest for this changing the current ode.core.* package with a SWIG generated one instead, and adjusting the remaining Java3D integration classes. We could use my own interface file as a starting point. Also, some changes in the ODE own C++ interface would be needed. Of course, this is only my idea.:) In any case, you can count with me for helping you developing furthermore the java version. Any suggestions/ideas from the rest of the community? Best regards, Artur Matos. --------------------------------------------------------------- Artur Matos ALife Core Lab (http://www2.create.human.nagoya-u.ac.jp) Graduate School of Human Informatics | Nagoya University Email: amatos@create.human.nagoya-u.ac.jp (Lab) arturmatos78@yahoo.com --------------------------------------------------------------- From Marta.Pla at uv.es Mon Oct 28 02:18:02 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Mon Oct 28 02:18:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <1035796861.17791.3.camel@welfa> --=-dM9QhiOGVpqEKo5+CIIg Content-Type: text/plain Content-Transfer-Encoding: quoted-printable >=20 > It seems there are a couple possible ways to test for face-face box > contacts. Rather than being coplanar actually I meant that the planes of > each box are parallel, so if we know that the boxes penetrate and are > coplanar then there must be a face-face contact. The other way suggested > by Marta is to compare rotations, and if the boxes are at equal/right/180 > degree angles to one another then they must be in face-face contact as > well. >=20 > I think the second way may be a bit faster. >=20 >=20 I have implemented that way and it works well. The only difficult thing is that I don't know well how to introduce it in the ODE code. I would need someone who knows C++ well to do it.=20 Despite of this, I were reading the boxbox algorithm and I see they use the rotation of the two boxes also. I think there would be easy to put my code inside of that but I think I wouldn't be able to do it. --=20 **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint =3D 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla@uv.es) http://www.uv.es/~mplac Robotics Institute University of Valencia (Spain) **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. --=-dM9QhiOGVpqEKo5+CIIg Content-Type: application/pgp-signature; name=signature.asc Content-Description: Esta parte del mensaje esta firmada digitalmente -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) iD8DBQA9vQF9hrRS0qLSFhARAjhDAJ910XMhpaHZLgw9CZalSyra8Kd6mQCfUJVY ZDHDsuJAkBtmaPgjfknezIc= =72Yh -----END PGP SIGNATURE----- --=-dM9QhiOGVpqEKo5+CIIg-- From ps_yumemi at yahoo.com Mon Oct 28 07:33:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 28 07:33:01 2002 Subject: [ODE] rotation Message-ID: <20021028143204.88351.qmail@web40508.mail.yahoo.com> hello, how exactly do you manipulate the dMatrix3 variable? is it an array? how can you copy it? is there any way to get the euler angles from it? i really need to copy them to another variable. thanks pia __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From facontidavide at hotmail.com Mon Oct 28 09:35:02 2002 From: facontidavide at hotmail.com (Edgard Oscuro) Date: Mon Oct 28 09:35:02 2002 Subject: [ODE] Get the motor torque Message-ID:

Hello,

as we know, we drive motors using velocity and maximum torque or force, and they work in the integration step giving the right torque/force.

I need to know the genereted torque (with a given velocity as usually), but I don't know how to get it.

Someone could help me?



MSN Extra Storage: piena libertà di esprimersi e comunicare Clicca qui From bpellens at vub.ac.be Mon Oct 28 12:52:02 2002 From: bpellens at vub.ac.be (Bram Pellens) Date: Mon Oct 28 12:52:02 2002 Subject: [ODE] Creating DLL of drawstuff Message-ID: Hello, I'm having some problems using ODE together with wxWindows (www.wxWindows.org). Both the libraries drawstuff and wxWindows have references to the main function leading to linker errors when compiling my application. I believe from earlier messages in the archives I have to create a DLL from the drawstuff sources, but i don't know how the build such a DLL Can someone please give me some explanation on creating the DLL. Thanks in advance, Bram Pellens From coding at natew.com Mon Oct 28 14:17:02 2002 From: coding at natew.com (Nate W) Date: Mon Oct 28 14:17:02 2002 Subject: [ODE] Creating DLL of drawstuff In-Reply-To: Message-ID: On Mon, 28 Oct 2002, Bram Pellens wrote: > I'm having some problems using ODE together with wxWindows > (www.wxWindows.org). Both the libraries drawstuff and wxWindows have > references to the main function leading to linker errors when > compiling my application. I believe from earlier messages in the > archives I have to create a DLL from the drawstuff sources, but i > don't know how the build such a DLL Can someone please give me some > explanation on creating the DLL. If you have some sort of DLL building already, try opening drawstuff/windows.cpp and just comment out the WinMain function at the bottom of the file. You might think of drawstuff as a trivial GUI for simple tests of ODE. It's just there to make ODE objects visible in a very simple GUI. If you have wxWindows providing your GUI, you have no need for most of the code in drawstuff. You will probably find useful the functions for drawing basic geometric objects like boxes and spheres, but not much else. Those functions can simply be pasted into a source file in your application. -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Mon Oct 28 18:19:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Mon Oct 28 18:19:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp Message-ID: This is a multi-part message in MIME format. ------_=_NextPart_001_01C27EE9.1ED0102A Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable i've found that i need to combine contacts when sphere bodies roll from = one static geom to another. to understand the problem, let me show you = an example... attached is a modified version of test_boxstack.cpp. hit the 's' key to = drop a sphere and watch what happens. see how it sticks on the cusp = between the ramp and the ground plane? that is kind of weird. it happens when spheres are rolling over boxes, = planes, or meshes. it can even happen if you embed a ccylinder into the = ground and roll up next to it. you will stick for a while before you = can pull yourself away from the ccylinder. is this expected or is it a bug? if it is expected, perhaps it should = automatically be handled because it is so common to run up against. = erwin handles it within a single tri-list by merging the contacts into a = single contact. but you need to do this on a higher level as well = between different trilists, boxes, and planes. ------_=_NextPart_001_01C27EE9.1ED0102A Content-Type: application/octet-stream; name="test_boxstack.cpp" Content-Transfer-Encoding: base64 Content-Description: test_boxstack.cpp Content-Disposition: attachment; filename="test_boxstack.cpp" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKiBPcGVuIER5bmFtaWNzIEVu Z2luZSwgQ29weXJpZ2h0IChDKSAyMDAxLDIwMDIgUnVzc2VsbCBMLiBTbWl0aC4gICAgICAgKg0K ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gIEVtYWlsOiBydXNzQHExMi5vcmcgICBXZWI6IHd3dy5x MTIub3JnICAgICAgICAgICoNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAgKg0K ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiBFSVRIRVI6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICoNCiAqICAgKDEpIFRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlICAqDQogKiAgICAgICBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCAgKg0K ICogICAgICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiBUaGUgdGV4dCBvZiB0aGUg R05VIExlc3NlciAgICAgICoNCiAqICAgICAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW5j bHVkZWQgd2l0aCB0aGlzIGxpYnJhcnkgaW4gdGhlICAgICAqDQogKiAgICAgICBmaWxlIExJQ0VO U0UuVFhULiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0K ICogICAoMikgVGhlIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgaXMgaW5jbHVkZWQgd2l0aCB0aGlz IGxpYnJhcnkgaW4gICAgICoNCiAqICAgICAgIHRoZSBmaWxlIExJQ0VOU0UtQlNELlRYVC4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0K ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsICAgICAgICoNCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqDQogKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgZmlsZXMgICAgKg0K ICogTElDRU5TRS5UWFQgYW5kIExJQ0VOU0UtQlNELlRYVCBmb3IgbW9yZSBkZXRhaWxzLiAgICAg ICAgICAgICAgICAgICAgICoNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8N Cg0KI2luY2x1ZGUgPG9kZS9vZGUuaD4NCiNpbmNsdWRlIDxkcmF3c3R1ZmYvZHJhd3N0dWZmLmg+ DQoNCiNpZmRlZiBNU1ZDDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0IDQzMDUpICAvLyBm b3IgVkMrKywgbm8gcHJlY2lzaW9uIGxvc3MgY29tcGxhaW50cw0KI2VuZGlmDQoNCi8vIHNlbGVj dCBjb3JyZWN0IGRyYXdpbmcgZnVuY3Rpb25zDQoNCiNpZmRlZiBkRE9VQkxFDQojZGVmaW5lIGRz RHJhd0JveCBkc0RyYXdCb3hEDQojZGVmaW5lIGRzRHJhd1NwaGVyZSBkc0RyYXdTcGhlcmVEDQoj ZGVmaW5lIGRzRHJhd0N5bGluZGVyIGRzRHJhd0N5bGluZGVyRA0KI2RlZmluZSBkc0RyYXdDYXBw ZWRDeWxpbmRlciBkc0RyYXdDYXBwZWRDeWxpbmRlckQNCiNlbmRpZg0KDQoNCi8vIHNvbWUgY29u c3RhbnRzDQoNCiNkZWZpbmUgTlVNIDEJCQkvLyBtYXggbnVtYmVyIG9mIG9iamVjdHMNCiNkZWZp bmUgREVOU0lUWSAoNS4wKQkJLy8gZGVuc2l0eSBvZiBhbGwgb2JqZWN0cw0KI2RlZmluZSBHUEIg MwkJCS8vIG1heGltdW0gbnVtYmVyIG9mIGdlb21ldHJpZXMgcGVyIGJvZHkNCg0KDQovLyBkeW5h bWljcyBhbmQgY29sbGlzaW9uIG9iamVjdHMNCg0Kc3RydWN0IE15T2JqZWN0IHsNCiAgZEJvZHlJ RCBib2R5OwkJCS8vIHRoZSBib2R5DQogIGRHZW9tSUQgZ2VvbVtHUEJdOwkJLy8gZ2VvbWV0cmll cyByZXByZXNlbnRpbmcgdGhpcyBib2R5DQp9Ow0KDQpzdGF0aWMgaW50IG51bT0wOwkJLy8gbnVt YmVyIG9mIG9iamVjdHMgaW4gc2ltdWxhdGlvbg0Kc3RhdGljIGludCBuZXh0b2JqPTA7CQkvLyBu ZXh0IG9iamVjdCB0byByZWN5Y2xlIGlmIG51bT09TlVNDQpzdGF0aWMgZFdvcmxkSUQgd29ybGQ7 DQpzdGF0aWMgZFNwYWNlSUQgc3BhY2U7DQpzdGF0aWMgTXlPYmplY3Qgb2JqW05VTV07DQpzdGF0 aWMgZEpvaW50R3JvdXBJRCBjb250YWN0Z3JvdXA7DQpzdGF0aWMgaW50IHNlbGVjdGVkID0gLTE7 CS8vIHNlbGVjdGVkIG9iamVjdA0Kc3RhdGljIGRHZW9tSUQgcmFtcD0wOw0Kc3RhdGljIGRHZW9t SUQgcmFtcDI9MDsNCg0KDQovLyB0aGlzIGlzIGNhbGxlZCBieSBkU3BhY2VDb2xsaWRlIHdoZW4g dHdvIG9iamVjdHMgaW4gc3BhY2UgYXJlDQovLyBwb3RlbnRpYWxseSBjb2xsaWRpbmcuDQoNCnN0 YXRpYyB2b2lkIG5lYXJDYWxsYmFjayAodm9pZCAqZGF0YSwgZEdlb21JRCBvMSwgZEdlb21JRCBv MikNCnsNCiAgaW50IGk7DQogIC8vIGlmIChvMS0+Ym9keSAmJiBvMi0+Ym9keSkgcmV0dXJuOw0K DQogIC8vIGV4aXQgd2l0aG91dCBkb2luZyBhbnl0aGluZyBpZiB0aGUgdHdvIGJvZGllcyBhcmUg Y29ubmVjdGVkIGJ5IGEgam9pbnQNCiAgZEJvZHlJRCBiMSA9IGRHZW9tR2V0Qm9keShvMSk7DQog IGRCb2R5SUQgYjIgPSBkR2VvbUdldEJvZHkobzIpOw0KICBpZiAoYjEgJiYgYjIgJiYgZEFyZUNv bm5lY3RlZCAoYjEsYjIpKSByZXR1cm47DQoNCiAgZENvbnRhY3QgY29udGFjdFszXTsJCQkvLyB1 cCB0byAzIGNvbnRhY3RzIHBlciBib3gNCiAgZm9yIChpPTA7IGk8MzsgaSsrKSB7DQogICAgY29u dGFjdFtpXS5zdXJmYWNlLm1vZGUgPSBkQ29udGFjdEJvdW5jZTsgLy9kQ29udGFjdE11MjsNCiAg ICBjb250YWN0W2ldLnN1cmZhY2UubXUgPSBkSW5maW5pdHk7DQogICAgY29udGFjdFtpXS5zdXJm YWNlLm11MiA9IDA7DQogICAgY29udGFjdFtpXS5zdXJmYWNlLmJvdW5jZSA9IDAuNTsNCiAgICBj b250YWN0W2ldLnN1cmZhY2UuYm91bmNlX3ZlbCA9IDAuMTsNCiAgfQ0KICBpZiAoaW50IG51bWMg PSBkQ29sbGlkZSAobzEsbzIsMywmY29udGFjdFswXS5nZW9tLHNpemVvZihkQ29udGFjdCkpKSB7 DQogICAgLy8gZE1hdHJpeDMgUkk7DQogICAgLy8gZFJTZXRJZGVudGl0eSAoUkkpOw0KICAgIC8v IGNvbnN0IGRSZWFsIHNzWzNdID0gezAuMDIsMC4wMiwwLjAyfTsNCiAgICBmb3IgKGk9MDsgaTxu dW1jOyBpKyspIHsNCiAgICAgIGRKb2ludElEIGMgPSBkSm9pbnRDcmVhdGVDb250YWN0ICh3b3Js ZCxjb250YWN0Z3JvdXAsY29udGFjdCtpKTsNCiAgICAgIGRKb2ludEF0dGFjaCAoYyxiMSxiMik7 DQogICAgICAvLyBkc0RyYXdCb3ggKGNvbnRhY3RbaV0uZ2VvbS5wb3MsUkksc3MpOw0KICAgIH0N CiAgfQ0KfQ0KDQoNCi8vIHN0YXJ0IHNpbXVsYXRpb24gLSBzZXQgdmlld3BvaW50DQoNCnN0YXRp YyB2b2lkIHN0YXJ0KCkNCnsNCiAgc3RhdGljIGZsb2F0IHh5elszXSA9IHsyLjE2NDBmLC0xLjMw NzlmLDEuNzYwMGZ9Ow0KICBzdGF0aWMgZmxvYXQgaHByWzNdID0gezEyNS41MDAwZiwtMTcuMDAw MGYsMC4wMDAwZn07DQogIGRzU2V0Vmlld3BvaW50ICh4eXosaHByKTsNCiAgcHJpbnRmICgiVG8g ZHJvcCBhbm90aGVyIG9iamVjdCwgcHJlc3M6XG4iKTsNCiAgcHJpbnRmICgiICAgYiBmb3IgYm94 LlxuIik7DQogIHByaW50ZiAoIiAgIHMgZm9yIHNwaGVyZS5cbiIpOw0KICBwcmludGYgKCIgICBj IGZvciBjeWxpbmRlci5cbiIpOw0KICBwcmludGYgKCIgICB4IGZvciBhIGNvbXBvc2l0ZSBvYmpl Y3QuXG4iKTsNCiAgcHJpbnRmICgiVG8gc2VsZWN0IGFuIG9iamVjdCwgcHJlc3Mgc3BhY2UuXG4i KTsNCiAgcHJpbnRmICgiVG8gZGlzYWJsZSB0aGUgc2VsZWN0ZWQgb2JqZWN0LCBwcmVzcyBkLlxu Iik7DQogIHByaW50ZiAoIlRvIGVuYWJsZSB0aGUgc2VsZWN0ZWQgb2JqZWN0LCBwcmVzcyBlLlxu Iik7DQp9DQoNCg0KY2hhciBsb2Nhc2UgKGNoYXIgYykNCnsNCiAgaWYgKGMgPj0gJ0EnICYmIGMg PD0gJ1onKSByZXR1cm4gYyAtICgnYSctJ0EnKTsNCiAgZWxzZSByZXR1cm4gYzsNCn0NCg0KDQov LyBjYWxsZWQgd2hlbiBhIGtleSBwcmVzc2VkDQoNCnN0YXRpYyB2b2lkIGNvbW1hbmQgKGludCBj bWQpDQp7DQogIGludCBpLGosazsNCiAgZFJlYWwgc2lkZXNbM107DQogIGRNYXNzIG07DQoNCiAg Y21kID0gbG9jYXNlIChjbWQpOw0KICBpZiAoY21kID09ICdiJyB8fCBjbWQgPT0gJ3MnIHx8IGNt ZCA9PSAnYycgfHwgY21kID09ICd4Jykgew0KICAgIGlmIChudW0gPCBOVU0pIHsNCiAgICAgIGkg PSBudW07DQogICAgICBudW0rKzsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICBpID0gbmV4dG9i ajsNCiAgICAgIG5leHRvYmorKzsNCiAgICAgIGlmIChuZXh0b2JqID49IG51bSkgbmV4dG9iaiA9 IDA7DQoNCiAgICAgIC8vIGRlc3Ryb3kgdGhlIGJvZHkgYW5kIGdlb21zIGZvciBzbG90IGkNCiAg ICAgIGRCb2R5RGVzdHJveSAob2JqW2ldLmJvZHkpOw0KICAgICAgZm9yIChrPTA7IGsgPCBHUEI7 IGsrKykgew0KCWlmIChvYmpbaV0uZ2VvbVtrXSkgZEdlb21EZXN0cm95IChvYmpbaV0uZ2VvbVtr XSk7DQogICAgICB9DQogICAgICBtZW1zZXQgKCZvYmpbaV0sMCxzaXplb2Yob2JqW2ldKSk7DQog ICAgfQ0KDQogICAgb2JqW2ldLmJvZHkgPSBkQm9keUNyZWF0ZSAod29ybGQpOw0KICAgIGZvciAo az0wOyBrPDM7IGsrKykgc2lkZXNba10gPSBkUmFuZFJlYWwoKSowLjUrMC4xOw0KDQogICAgZEJv ZHlTZXRQb3NpdGlvbiAob2JqW2ldLmJvZHksDQogICAgICAgICAgMS4xZiwgMC5mLA0KCQkgICAg ICAvL2RSYW5kUmVhbCgpKjItMSxkUmFuZFJlYWwoKSoyLTEsDQogICAgICAgICAgZFJhbmRSZWFs KCkrMSk7DQogICAgZE1hdHJpeDMgUjsNCiAgICBkUkZyb21BeGlzQW5kQW5nbGUgKFIsZFJhbmRS ZWFsKCkqMi4wLTEuMCxkUmFuZFJlYWwoKSoyLjAtMS4wLA0KCQkJZFJhbmRSZWFsKCkqMi4wLTEu MCxkUmFuZFJlYWwoKSoxMC4wLTUuMCk7DQogICAgZEJvZHlTZXRSb3RhdGlvbiAob2JqW2ldLmJv ZHksUik7DQogICAgZEJvZHlTZXREYXRhIChvYmpbaV0uYm9keSwodm9pZCopIGkpOw0KDQogICAg aWYgKGNtZCA9PSAnYicpIHsNCiAgICAgIGRNYXNzU2V0Qm94ICgmbSxERU5TSVRZLHNpZGVzWzBd LHNpZGVzWzFdLHNpZGVzWzJdKTsNCiAgICAgIG9ialtpXS5nZW9tWzBdID0gZENyZWF0ZUJveCAo c3BhY2Usc2lkZXNbMF0sc2lkZXNbMV0sc2lkZXNbMl0pOw0KICAgIH0NCiAgICBlbHNlIGlmIChj bWQgPT0gJ2MnKSB7DQogICAgICBzaWRlc1swXSAqPSAwLjU7DQogICAgICBkTWFzc1NldENhcHBl ZEN5bGluZGVyICgmbSxERU5TSVRZLDMsc2lkZXNbMF0sc2lkZXNbMV0pOw0KICAgICAgb2JqW2ld Lmdlb21bMF0gPSBkQ3JlYXRlQ0N5bGluZGVyIChzcGFjZSxzaWRlc1swXSxzaWRlc1sxXSk7DQog ICAgfQ0KICAgIGVsc2UgaWYgKGNtZCA9PSAncycpIHsNCiAgICAgIHNpZGVzWzBdICo9IDAuNTsN CiAgICAgIGRNYXNzU2V0U3BoZXJlICgmbSxERU5TSVRZLHNpZGVzWzBdKTsNCiAgICAgIG9ialtp XS5nZW9tWzBdID0gZENyZWF0ZVNwaGVyZSAoc3BhY2Usc2lkZXNbMF0pOw0KICAgIH0NCiAgICBl bHNlIGlmIChjbWQgPT0gJ3gnKSB7DQogICAgICBkR2VvbUlEIGcyW0dQQl07CQkvLyBlbmNhcHN1 bGF0ZWQgZ2VvbWV0cmllcw0KICAgICAgZFJlYWwgZHBvc1tHUEJdWzNdOwkvLyBkZWx0YS1wb3Np dGlvbnMgZm9yIGVuY2Fwc3VsYXRlZCBnZW9tZXRyaWVzDQoNCiAgICAgIC8vIHN0YXJ0IGFjY3Vt dWxhdGluZyBtYXNzZXMgZm9yIHRoZSBlbmNhcHN1bGF0ZWQgZ2VvbWV0cmllcw0KICAgICAgZE1h c3MgbTI7DQogICAgICBkTWFzc1NldFplcm8gKCZtKTsNCg0KICAgICAgLy8gc2V0IHJhbmRvbSBk ZWx0YSBwb3NpdGlvbnMNCiAgICAgIGZvciAoaj0wOyBqPEdQQjsgaisrKSB7DQoJZm9yIChrPTA7 IGs8MzsgaysrKSBkcG9zW2pdW2tdID0gZFJhbmRSZWFsKCkqMC4zLTAuMTU7DQogICAgICB9DQoN CiAgICAgIGZvciAoaz0wOyBrPDM7IGsrKykgew0KCW9ialtpXS5nZW9tW2tdID0gZENyZWF0ZUdl b21UcmFuc2Zvcm0gKHNwYWNlKTsNCglkR2VvbVRyYW5zZm9ybVNldENsZWFudXAgKG9ialtpXS5n ZW9tW2tdLDEpOw0KCWlmIChrPT0wKSB7DQoJICBkUmVhbCByYWRpdXMgPSBkUmFuZFJlYWwoKSow LjI1KzAuMDU7DQoJICBnMltrXSA9IGRDcmVhdGVTcGhlcmUgKDAscmFkaXVzKTsNCgkgIGRNYXNz U2V0U3BoZXJlICgmbTIsREVOU0lUWSxyYWRpdXMpOw0KCX0NCgllbHNlIGlmIChrPT0xKSB7DQoJ ICBnMltrXSA9IGRDcmVhdGVCb3ggKDAsc2lkZXNbMF0sc2lkZXNbMV0sc2lkZXNbMl0pOw0KCSAg ZE1hc3NTZXRCb3ggKCZtMixERU5TSVRZLHNpZGVzWzBdLHNpZGVzWzFdLHNpZGVzWzJdKTsNCgl9 DQoJZWxzZSB7DQoJICBkUmVhbCByYWRpdXMgPSBkUmFuZFJlYWwoKSowLjErMC4wNTsNCgkgIGRS ZWFsIGxlbmd0aCA9IGRSYW5kUmVhbCgpKjEuMCswLjE7DQoJICBnMltrXSA9IGRDcmVhdGVDQ3ls aW5kZXIgKDAscmFkaXVzLGxlbmd0aCk7DQoJICBkTWFzc1NldENhcHBlZEN5bGluZGVyICgmbTIs REVOU0lUWSwzLHJhZGl1cyxsZW5ndGgpOw0KCX0NCglkR2VvbVRyYW5zZm9ybVNldEdlb20gKG9i altpXS5nZW9tW2tdLGcyW2tdKTsNCg0KCS8vIHNldCB0aGUgdHJhbnNmb3JtYXRpb24gKGFkanVz dCB0aGUgbWFzcyB0b28pDQoJZEdlb21TZXRQb3NpdGlvbiAoZzJba10sZHBvc1trXVswXSxkcG9z W2tdWzFdLGRwb3Nba11bMl0pOw0KCWRNYXNzVHJhbnNsYXRlICgmbTIsZHBvc1trXVswXSxkcG9z W2tdWzFdLGRwb3Nba11bMl0pOw0KCWRNYXRyaXgzIFJ0eDsNCglkUkZyb21BeGlzQW5kQW5nbGUg KFJ0eCxkUmFuZFJlYWwoKSoyLjAtMS4wLGRSYW5kUmVhbCgpKjIuMC0xLjAsDQoJCQkgICAgZFJh bmRSZWFsKCkqMi4wLTEuMCxkUmFuZFJlYWwoKSoxMC4wLTUuMCk7DQoJZEdlb21TZXRSb3RhdGlv biAoZzJba10sUnR4KTsNCglkTWFzc1JvdGF0ZSAoJm0yLFJ0eCk7DQoNCgkvLyBhZGQgdG8gdGhl IHRvdGFsIG1hc3MNCglkTWFzc0FkZCAoJm0sJm0yKTsNCiAgICAgIH0NCg0KICAgICAgLy8gbW92 ZSBhbGwgZW5jYXBzdWxhdGVkIG9iamVjdHMgc28gdGhhdCB0aGUgY2VudGVyIG9mIG1hc3MgaXMg KDAsMCwwKQ0KICAgICAgZm9yIChrPTA7IGs8MjsgaysrKSB7DQoJZEdlb21TZXRQb3NpdGlvbiAo ZzJba10sDQoJCQkgIGRwb3Nba11bMF0tbS5jWzBdLA0KCQkJICBkcG9zW2tdWzFdLW0uY1sxXSwN CgkJCSAgZHBvc1trXVsyXS1tLmNbMl0pOw0KICAgICAgfQ0KICAgICAgZE1hc3NUcmFuc2xhdGUg KCZtLC1tLmNbMF0sLW0uY1sxXSwtbS5jWzJdKTsNCiAgICB9DQoNCiAgICBmb3IgKGs9MDsgayA8 IEdQQjsgaysrKSB7DQogICAgICBpZiAob2JqW2ldLmdlb21ba10pIGRHZW9tU2V0Qm9keSAob2Jq W2ldLmdlb21ba10sb2JqW2ldLmJvZHkpOw0KICAgIH0NCg0KICAgIGRCb2R5U2V0TWFzcyAob2Jq W2ldLmJvZHksJm0pOw0KICB9DQoNCiAgaWYgKGNtZCA9PSAnICcpIHsNCiAgICBzZWxlY3RlZCsr Ow0KICAgIGlmIChzZWxlY3RlZCA+PSBudW0pIHNlbGVjdGVkID0gMDsNCiAgICBpZiAoc2VsZWN0 ZWQgPCAwKSBzZWxlY3RlZCA9IDA7DQogIH0NCiAgZWxzZSBpZiAoY21kID09ICdkJyAmJiBzZWxl Y3RlZCA+PSAwICYmIHNlbGVjdGVkIDwgbnVtKSB7DQogICAgZEJvZHlEaXNhYmxlIChvYmpbc2Vs ZWN0ZWRdLmJvZHkpOw0KICB9DQogIGVsc2UgaWYgKGNtZCA9PSAnZScgJiYgc2VsZWN0ZWQgPj0g MCAmJiBzZWxlY3RlZCA8IG51bSkgew0KICAgIGRCb2R5RW5hYmxlIChvYmpbc2VsZWN0ZWRdLmJv ZHkpOw0KICB9DQp9DQoNCg0KLy8gZHJhdyBhIGdlb20NCg0Kdm9pZCBkcmF3R2VvbSAoZEdlb21J RCBnLCBjb25zdCBkUmVhbCAqcG9zLCBjb25zdCBkUmVhbCAqUikNCnsNCiAgaWYgKCFnKSByZXR1 cm47DQogIGlmICghcG9zKSBwb3MgPSBkR2VvbUdldFBvc2l0aW9uIChnKTsNCiAgaWYgKCFSKSBS ID0gZEdlb21HZXRSb3RhdGlvbiAoZyk7DQoNCiAgaW50IHR5cGUgPSBkR2VvbUdldENsYXNzIChn KTsNCiAgaWYgKHR5cGUgPT0gZEJveENsYXNzKSB7DQogICAgZFZlY3RvcjMgc2lkZXM7DQogICAg ZEdlb21Cb3hHZXRMZW5ndGhzIChnLHNpZGVzKTsNCiAgICBkc0RyYXdCb3ggKHBvcyxSLHNpZGVz KTsNCiAgfQ0KICBlbHNlIGlmICh0eXBlID09IGRTcGhlcmVDbGFzcykgew0KICAgIGRzRHJhd1Nw aGVyZSAocG9zLFIsZEdlb21TcGhlcmVHZXRSYWRpdXMgKGcpKTsNCiAgfQ0KICBlbHNlIGlmICh0 eXBlID09IGRDQ3lsaW5kZXJDbGFzcykgew0KICAgIGRSZWFsIHJhZGl1cyxsZW5ndGg7DQogICAg ZEdlb21DQ3lsaW5kZXJHZXRQYXJhbXMgKGcsJnJhZGl1cywmbGVuZ3RoKTsNCiAgICBkc0RyYXdD YXBwZWRDeWxpbmRlciAocG9zLFIsbGVuZ3RoLHJhZGl1cyk7DQogIH0NCiAgZWxzZSBpZiAodHlw ZSA9PSBkR2VvbVRyYW5zZm9ybUNsYXNzKSB7DQogICAgZEdlb21JRCBnMiA9IGRHZW9tVHJhbnNm b3JtR2V0R2VvbSAoZyk7DQogICAgY29uc3QgZFJlYWwgKnBvczIgPSBkR2VvbUdldFBvc2l0aW9u IChnMik7DQogICAgY29uc3QgZFJlYWwgKlIyID0gZEdlb21HZXRSb3RhdGlvbiAoZzIpOw0KICAg IGRWZWN0b3IzIGFjdHVhbF9wb3M7DQogICAgZE1hdHJpeDMgYWN0dWFsX1I7DQogICAgZE1VTFRJ UExZMF8zMzEgKGFjdHVhbF9wb3MsUixwb3MyKTsNCiAgICBhY3R1YWxfcG9zWzBdICs9IHBvc1sw XTsNCiAgICBhY3R1YWxfcG9zWzFdICs9IHBvc1sxXTsNCiAgICBhY3R1YWxfcG9zWzJdICs9IHBv c1syXTsNCiAgICBkTVVMVElQTFkwXzMzMyAoYWN0dWFsX1IsUixSMik7DQogICAgZHJhd0dlb20g KGcyLGFjdHVhbF9wb3MsYWN0dWFsX1IpOw0KICB9DQp9DQoNCg0KLy8gc2ltdWxhdGlvbiBsb29w DQoNCnN0YXRpYyB2b2lkIHNpbUxvb3AgKGludCBwYXVzZSkNCnsNCiAgZHNTZXRDb2xvciAoMCww LDIpOw0KICBkU3BhY2VDb2xsaWRlIChzcGFjZSwwLCZuZWFyQ2FsbGJhY2spOw0KICBpZiAoIXBh dXNlKSBkV29ybGRTdGVwICh3b3JsZCwwLjA1KTsNCg0KICAvLyByZW1vdmUgYWxsIGNvbnRhY3Qg am9pbnRzDQogIGRKb2ludEdyb3VwRW1wdHkgKGNvbnRhY3Rncm91cCk7DQoNCiAgZHNTZXRDb2xv ciAoMSwxLDApOw0KICBkc1NldFRleHR1cmUgKERTX1dPT0QpOw0KICBkcmF3R2VvbShyYW1wLDAs MCk7DQogIGRyYXdHZW9tKHJhbXAyLDAsMCk7DQoNCiAgZm9yIChpbnQgaT0wOyBpPG51bTsgaSsr KSB7DQogICAgaW50IGNvbG9yX2NoYW5nZWQgPSAwOw0KICAgIGlmIChpPT1zZWxlY3RlZCkgew0K ICAgICAgZHNTZXRDb2xvciAoMCwwLjcsMSk7DQogICAgICBjb2xvcl9jaGFuZ2VkID0gMTsNCiAg ICB9DQogICAgZWxzZSBpZiAoISBkQm9keUlzRW5hYmxlZCAob2JqW2ldLmJvZHkpKSB7DQogICAg ICBkc1NldENvbG9yICgxLDAsMCk7DQogICAgICBjb2xvcl9jaGFuZ2VkID0gMTsNCiAgICB9DQog ICAgZm9yIChpbnQgaj0wOyBqIDwgR1BCOyBqKyspIGRyYXdHZW9tIChvYmpbaV0uZ2VvbVtqXSww LDApOw0KICAgIGlmIChjb2xvcl9jaGFuZ2VkKSBkc1NldENvbG9yICgxLDEsMCk7DQogIH0NCn0N Cg0KDQppbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0Kew0KICAvLyBzZXR1cCBwb2lu dGVycyB0byBkcmF3c3R1ZmYgY2FsbGJhY2sgZnVuY3Rpb25zDQogIGRzRnVuY3Rpb25zIGZuOw0K ICBmbi52ZXJzaW9uID0gRFNfVkVSU0lPTjsNCiAgZm4uc3RhcnQgPSAmc3RhcnQ7DQogIGZuLnN0 ZXAgPSAmc2ltTG9vcDsNCiAgZm4uY29tbWFuZCA9ICZjb21tYW5kOw0KICBmbi5zdG9wID0gMDsN CiAgZm4ucGF0aF90b190ZXh0dXJlcyA9ICIuLi8uLi9kcmF3c3R1ZmYvdGV4dHVyZXMiOw0KDQog IC8vIGNyZWF0ZSB3b3JsZA0KDQogIHdvcmxkID0gZFdvcmxkQ3JlYXRlKCk7DQogIHNwYWNlID0g ZEhhc2hTcGFjZUNyZWF0ZSgpOw0KICBjb250YWN0Z3JvdXAgPSBkSm9pbnRHcm91cENyZWF0ZSAo MCk7DQogIGRXb3JsZFNldEdyYXZpdHkgKHdvcmxkLDAsMCwtMC41KTsNCiAgZFdvcmxkU2V0Q0ZN ICh3b3JsZCwxZS01KTsNCiAgZENyZWF0ZVBsYW5lIChzcGFjZSwwLDAsMSwwKTsNCiAgbWVtc2V0 IChvYmosMCxzaXplb2Yob2JqKSk7DQoNCiAgLy8gY3JlYXRlIHJhbXANCiAgcmFtcCA9IGRDcmVh dGVCb3ggKHNwYWNlLCAyLmYsIDIuZiwgMC4xZik7DQoJZEdlb21TZXRQb3NpdGlvbiAocmFtcCwg MC5mLCAwLmYsIDAuZik7DQoJZE1hdHJpeDMgUjsNCglkUkZyb21BeGlzQW5kQW5nbGUgKFIsIDAu ZiwgMS5mLCAwLmYsIE1fUEkvNC5mKTsNCglkR2VvbVNldFJvdGF0aW9uIChyYW1wLFIpOw0KDQog IHJhbXAyID0gZENyZWF0ZUJveCAoc3BhY2UsIDIuZiwgMi5mLCAwLjFmKTsNCglkR2VvbVNldFBv c2l0aW9uIChyYW1wMiwgMS5mLCAwLmYsIDAuZik7DQoJZFJGcm9tQXhpc0FuZEFuZ2xlIChSLCAw LmYsIDEuZiwgMC5mLCAtTV9QSS84LmYpOw0KCWRHZW9tU2V0Um90YXRpb24gKHJhbXAyLFIpOw0K DQogIC8vIHJ1biBzaW11bGF0aW9uDQogIGRzU2ltdWxhdGlvbkxvb3AgKGFyZ2MsYXJndiwzNTIs Mjg4LCZmbik7DQoNCiAgZEpvaW50R3JvdXBEZXN0cm95IChjb250YWN0Z3JvdXApOw0KICBkU3Bh Y2VEZXN0cm95IChzcGFjZSk7DQogIGRXb3JsZERlc3Ryb3kgKHdvcmxkKTsNCg0KICByZXR1cm4g MDsNCn0NCg== ------_=_NextPart_001_01C27EE9.1ED0102A-- From russ at q12.org Mon Oct 28 23:39:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 28 23:39:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: References: Message-ID: <20021028234323.7f5815bb.russ@q12.org> > attached is a modified version of test_boxstack.cpp. hit the 's' key > to drop a sphere and watch what happens. see how it sticks on the > cusp between the ramp and the ground plane? > > is this expected or is it a bug? hi david, i have found the problem. it's not exactly a coding bug in ODE, it's a problem with the way that the friction model is used. here's the story: ODE has two ways to approximate friction: the default way (called the constant-force-limit approximation, or 'box friction') and the improved way (called "friction pyramid approximation 1") which is obtained by setting the dContactApprox1 flag in the contact mode. your example uses the default box friction (as do most of the ODE test samples). it turns out that in a world that has box friction only, the "physically correct" behavior for a ball rolling down an inclined plane is to stop dead when it hits the ground! in other words, it's not an ODE bug as such but a consequence of this friction model in the contact joint. of course this is not the behavior that you see in real life, because real life does not have box friction! the solution is to use the dContactApprox1 mode, i.e. do this in your code: contact[i].surface.mode = dContactApprox1 | other_flags contact[i].surface.mu = dInfinity; // or, some other value like '1' your example did lead me to find a couple of problems in the LCP solver that were only evident in when dContactApprox1 was being used ... i've fixed them, and you'll have to check out lcp.cpp,lcp.h from CVS for this to work properly. i'll add a section to the FAQ that explains all this better, and gives the intuitive reason why box-friction causes this problem (i'll need a diagram - it's hard to explain in words). hope this helps you! russ. -- Russell Smith http://www.q12.org From russ at q12.org Mon Oct 28 23:49:01 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 28 23:49:01 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: <20021028234323.7f5815bb.russ@q12.org> References: <20021028234323.7f5815bb.russ@q12.org> Message-ID: <20021028235046.3dc17a77.russ@q12.org> oh yes ... other people doing vehicle stuff may want to update CVS and use the dContactApprox1 mode too. this problem affected all rolling bodies that had multiple frictional contacts at different angles (i.e. car wheels going over bumps, up ramps etc). let me know of any problems. russ. -- Russell Smith http://www.q12.org From russ at q12.org Tue Oct 29 01:11:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 01:11:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: References: Message-ID: <20021029001532.65434c54.russ@q12.org> i have added a faq section to the docs that explains the cause and solution for this problem. check out: "11.13. My rolling bodies (e.g. wheels) sometimes get stuck between geoms". http://q12.org/ode/ode-latest-userguide.html enjoy, russ -- Russell Smith http://www.q12.org From ivan.bolcina at volja.net Tue Oct 29 02:51:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 29 02:51:02 2002 Subject: [ODE] Torque and acceleration of angular velocities Message-ID: <000a01c27f30$9aba3ed0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0007_01C27F38.FAF17720 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi. I have a box body with box mass. I want to apply some amount of torque. = I am interested in acceleration of angular velocity. How to calculate = it? bye and thanx, ivan ------=_NextPart_000_0007_01C27F38.FAF17720 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
 
I have a box body with box mass. I want = to apply=20 some amount of torque. I am interested in acceleration of angular = velocity. How=20 to calculate it?
 
bye and thanx,
ivan
------=_NextPart_000_0007_01C27F38.FAF17720-- From martin at metahuman.org Tue Oct 29 06:17:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Tue Oct 29 06:17:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp References: <20021028234323.7f5815bb.russ@q12.org> <20021028235046.3dc17a77.russ@q12.org> Message-ID: <3DBE8A24.A1246A71@metahuman.org> Hey Russ, ODE never ceases to amaze me with the level of support you give, Russ. Tracking down things like this, documenting them and fixing those LCP bugs is a great example. Since many people simply take the examples and change what they need to change, and don't change anything they don't understand; and since the difference between the two friction models is subtle, should the examples be changed to use dContactApprox1? For that matter, should it be the default friction model? At the very least, when discussing contact parameters in the manual, should it say "if you don't know which friction model to use, start with dContactApprox1?" Just a thought, Martin Russ Smith wrote: > > oh yes ... other people doing vehicle stuff may want to update CVS and > use the dContactApprox1 mode too. this problem affected all rolling > bodies that had multiple frictional contacts at different angles (i.e. > car wheels going over bumps, up ramps etc). > > let me know of any problems. > > russ. From russ at q12.org Tue Oct 29 11:33:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 11:33:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: <3DBE8A24.A1246A71@metahuman.org> Message-ID: > Since many people simply take the examples and change what they need to > change, and don't change anything they don't understand; and since the > difference between the two friction models is subtle, should the examples > be changed to use dContactApprox1? For that matter, should it be the > default friction model? At the very least, when discussing contact > parameters in the manual, should it say "if you don't know which friction > model to use, start with dContactApprox1?" probably you're right. in fact, there needs to be a lot more written about the friction models in general. i'm reluctant to made dContactApprox1 the default, as this will break people's code in subtle ways - there are now enough users of ODE that breaking the API is kind of an anti-social thing to do unless there is a good reason. i changed the buggy example, since that's the basis for a lot of people's vehicles. i may change the other examples too, but i'll try them out first to see what effect the change has. russ. -- Russ Smith http://www.q12.org/ From wristy_j at yahoo.com Tue Oct 29 16:21:02 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Tue Oct 29 16:21:02 2002 Subject: [ODE] "fixed world point" joint Message-ID: <20021029232045.49157.qmail@web40811.mail.yahoo.com> Hello, How can I constrain (through a ball joint) a physically simulated body to another body that is NOT under physical simulation, but updated by either user input or an animation sequence? (So, like having a shoulder joint that is updated by an animation, while having the arm lifelessly dangle from it like a rag doll.) - (Note: I'm treating the non-simulated body as though it were infinitely massive (InvMass = 0) - the problem is that it moves!) Is there a simple way to just specify a new anchor point per frame, and let the LCP solver calculate the necessary forces to keep the body constrained at that point? OR - Do I need to calculate forces to apply to the simulated body based on the current and previous position of the animated body myself (instead of letting the LCP solver figure out those forces). Will this work? Is there any other way to do it? Thanks! J __________________________________________________ Do you Yahoo!? HotJobs - Search new jobs daily now http://hotjobs.yahoo.com/ From russ at q12.org Tue Oct 29 17:12:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 17:12:02 2002 Subject: [ODE] "fixed world point" joint In-Reply-To: <20021029232045.49157.qmail@web40811.mail.yahoo.com> Message-ID: > How can I constrain (through a ball joint) a > physically simulated body to another body that is NOT > under physical simulation ideally, there should be a new joint that constrains a point on a body to move at a certain global velocity. you could compute this velocity based on the motion you desire. this joint is easy to create - in fact it's quite similar to the existing ball joint - but i have so much other stuff on my ODE todo list right now. any volunteers? other approaches (e.g. setting forces on bodies) will also work, but are less than ideal - they require a lot of fiddling and tuning to get right, and they never look quite right. russ. -- Russ Smith http://www.q12.org/ From aanand at milestoneindia.com Tue Oct 29 21:30:02 2002 From: aanand at milestoneindia.com (Aanand Narayanan.P.P) Date: Tue Oct 29 21:30:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Does anybody know which method (direct LCP, iterative LCP, penalty etc) was used in the (vehicle) physics for GTA3? Is it possible to achieve the same level of stability with ODE? I would like to hear from other people who have used ODE for full fledged physics simulations. Thanks AN --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.401 / Virus Database: 226 - Release Date: 10/9/2002 From coding at natew.com Tue Oct 29 23:34:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 29 23:34:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: On Wed, 30 Oct 2002, Aanand Narayanan.P.P wrote: > I would like to hear from other people who have used ODE for full > fledged physics simulations. What do you mean by "full fledged?" -- Nate Waddoups Redmond WA USA http://www.natew.com From slipch Wed Oct 30 01:35:03 2002 From: slipch (slipch) Date: Wed Oct 30 01:35:03 2002 Subject: Re[2]: [ODE] "fixed world point" joint In-Reply-To: References: Message-ID: <823040832.20021030103748@gsc-game.kiev.ua> Hello Russ, Wednesday, October 30, 2002, 2:11:25 AM, you wrote: >..... any volunteers? I have tried to understand creating joints in ODE. But it turned out a not easy task for me. I have read your paper on creating joints. There is a very good explained theory but it says nothing about implementation. May be some main points would be enough for me. -- Best regards, Konstantin Slipchenko mailto:slipch@gsc-game.kiev.ua From aanand at milestoneindia.com Wed Oct 30 04:45:02 2002 From: aanand at milestoneindia.com (Aanand Narayanan.P.P) Date: Wed Oct 30 04:45:02 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: Message-ID: <000001c2800a$7836a2b0$0e01a8c0@aanand> >> I would like to hear from other people who have used ODE for full >> fledged physics simulations. > What do you mean by "full fledged?" Like in GTA3 (or any other similar game). Not just for vehicles, but for other objects in the world (lamp post, dust bins etc.). What I am interested is in the stability and robustness of the system when several simulations occur (several different active joints). I did read about the posts on direct LCP and iterative LCP. So I wanted to know if anybody knows about the physics in GTA3 and the stability of ODE itself when used for such simulations (GTA3). Also can anyone point me to some literature on Dantzig algorithm (used by LCP solver in ODE). Cheers AN --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.401 / Virus Database: 226 - Release Date: 10/9/2002 From wristy_j at yahoo.com Wed Oct 30 06:24:01 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Wed Oct 30 06:24:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c2800a$7836a2b0$0e01a8c0@aanand> Message-ID: <20021030132310.65975.qmail@web40807.mail.yahoo.com> > Also can anyone point me to some literature on > Dantzig algorithm > (used by LCP solver in ODE). > > Cheers > AN Hello, David Baraff has a paper entitled "Fast Contact Force Computation for Nonpenetrating Rigid Bodies" that was in SIGGRAPH 94. In it, he has pseudo-code for his implementation of Dantzig's algorithm. Just search for it by name and you'll find a .pdf. Hope that helps, J __________________________________________________ Do you Yahoo!? HotJobs - Search new jobs daily now http://hotjobs.yahoo.com/ From erwin at vo.com Wed Oct 30 06:39:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 30 06:39:02 2002 Subject: [ODE] GTA3 and Physics References: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: <005601c28019$9d6561c0$73fefea9@athlon> Actually the carphysics in GTA3 are pretty lousy in my opinion. I suspect they are using Havok. Although i wouldnt even consider calling Havok 'lousy' in general, i dont like the carphysics i've seen in their public demo's. GTA3 kinda feels like these. I dont think its impossible to create the same physicsmodel in ODE, though. You just need to fiddle a lot with masses to get it right. Erwin ----- Original Message ----- From: "Aanand Narayanan.P.P" To: Sent: Wednesday, October 30, 2002 05:34 Subject: [ODE] GTA3 and Physics > > Does anybody know which method (direct LCP, iterative LCP, penalty etc) > was used in the (vehicle) physics for GTA3? > Is it possible to achieve the same level of stability with ODE? I would > like to hear from other people who have used ODE for full fledged > physics simulations. > > Thanks > AN From Henrik.Karlsson at dice.se Wed Oct 30 06:55:02 2002 From: Henrik.Karlsson at dice.se (Karlsson, Henrik) Date: Wed Oct 30 06:55:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <160E755604B6A949900013D42C3484722DEBAB@elrond.dice.se> I'm guessing they are using a very customized physics model for gta3... They might use havoc or similar package for most physics stuff.. but when it comes to car physics in games it is much cheaper to have a customized system compared to building up a vehicle correctly with different parts.. Henrik -----Original Message----- From: Erwin de Vries [mailto:erwin@vo.com] Sent: den 30 oktober 2002 13:06 To: ode@q12.org Subject: Re: [ODE] GTA3 and Physics Actually the carphysics in GTA3 are pretty lousy in my opinion. I suspect they are using Havok. Although i wouldnt even consider calling Havok 'lousy' in general, i dont like the carphysics i've seen in their public demo's. GTA3 kinda feels like these. I dont think its impossible to create the same physicsmodel in ODE, though. You just need to fiddle a lot with masses to get it right. Erwin ----- Original Message ----- From: "Aanand Narayanan.P.P" To: Sent: Wednesday, October 30, 2002 05:34 Subject: [ODE] GTA3 and Physics > > Does anybody know which method (direct LCP, iterative LCP, penalty etc) > was used in the (vehicle) physics for GTA3? > Is it possible to achieve the same level of stability with ODE? I would > like to hear from other people who have used ODE for full fledged > physics simulations. > > Thanks > AN _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From ed.jones at oracle.com Wed Oct 30 10:16:01 2002 From: ed.jones at oracle.com (Ed Jones) Date: Wed Oct 30 10:16:01 2002 Subject: [ODE] Self Righting Boxes (on castors) Message-ID: <3DC013BD.9080102@oracle.com> Hi Folks, I'm building a "simulation" which consists of a load of boxes on castors which I can push around (don't ask!). The boxes are (fairly obviously) boxes and the castors are 4 spheres attached to each box with ball joints. I can click on the boxes to give them forces and hence push them around the floor. Which is just a ground plane, with other boxes and spheres on it. So far so good. The "castorbox people" fall over quite regularly, which is fine and all part of the "fun". But what I'd like to do is, after a couple of seconds of lying down, get them to spring back up to their feet of their own accord. Obviously I can just reset the little fella to be the right way up but I'd like it to look more like they're jumping back up themselves. Anyone got any ideas of what would be a good (and preferably simple!) way to achieve this? Cheers, Ed. From filipe.dias at mind.pt Wed Oct 30 10:48:02 2002 From: filipe.dias at mind.pt (Filipe Dias) Date: Wed Oct 30 10:48:02 2002 Subject: [ODE] Self Righting Boxes (on castors) In-Reply-To: <3DC013BD.9080102@oracle.com> Message-ID: <200210301747.g9UHlGu01461@hook.org> I remember seeing (in the buggy demo) a force being aplyed upwards to one of the corners of the box while we were pressing the backspace key. but that isn't an automatic way to straighten things up, since it is aplied for as long as the key is down... What I am remembering now is that you can do something archimedes-like and fix a balloon some distance above the boxes.. when they go upside- down you would fill the baloon and it would turn the box over.. An up force aplied some distance over the center of the box. This is obviosly not as funny as an explosion-like effect where the box would spin a number of times an land straigt up.. but trying to turn boxes arround with explosions may take quite a lot of attepts to do it right!.. :-) Fil. -----Original Message----- From: Ed Jones To: ode@q12.org Date: Wed, 30 Oct 2002 17:15:41 +0000 Subject: [ODE] Self Righting Boxes (on castors) > Hi Folks, > > I'm building a "simulation" which consists of a load of boxes on > castors > which I can push around (don't ask!). > > The boxes are (fairly obviously) boxes and the castors are 4 spheres > attached to each box with ball joints. I can click on the boxes to give > them forces and hence push them around the floor. Which is just a > ground > plane, with other boxes and spheres on it. So far so good. > > The "castorbox people" fall over quite regularly, which is fine and all > part of the "fun". But what I'd like to do is, after a couple of > seconds > of lying down, get them to spring back up to their feet of their own > accord. Obviously I can just reset the little fella to be the right way > up but I'd like it to look more like they're jumping back up > themselves. > > Anyone got any ideas of what would be a good (and preferably simple!) > way to achieve this? > > Cheers, > Ed. > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From erwin at vo.com Wed Oct 30 11:19:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 30 11:19:01 2002 Subject: [ODE] GTA3 and Physics References: <160E755604B6A949900013D42C3484722DEBAB@elrond.dice.se> Message-ID: <00ba01c28040$be7d2510$73fefea9@athlon> > I'm guessing they are using a very customized physics model for gta3... They > might use havoc or similar package for most physics stuff.. but when it > comes to car physics in games it is much cheaper to have a customized system > compared to building up a vehicle correctly with different parts.. This is exactly what comes with Havok. A vehicle SDK. Now i have no idea how it works behind the scenes, and i've never used it, but my guess is that they are using many hacks to make it 'just work'. Erwin From philt at microsoft.com Wed Oct 30 11:49:02 2002 From: philt at microsoft.com (Phil Teschner) Date: Wed Oct 30 11:49:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <240659DFBDD99C4299EF7483EAD70F2410C1A1@RED-MSG-01.redmond.corp.microsoft.com> I remember hearing that the physics engine in GTA3 was entirely written in house. It is a pretty straight forward rigid body system that does not solve multiple simultaneous contacts (i.e. does not use an LPC solver). Phil -----Original Message----- From: Erwin de Vries [mailto:erwin@vo.com] Sent: Wednesday, October 30, 2002 10:18 AM To: ode@q12.org Subject: Re: [ODE] GTA3 and Physics > I'm guessing they are using a very customized physics model for gta3... They > might use havoc or similar package for most physics stuff.. but when it > comes to car physics in games it is much cheaper to have a customized system > compared to building up a vehicle correctly with different parts.. This is exactly what comes with Havok. A vehicle SDK. Now i have no idea how it works behind the scenes, and i've never used it, but my guess is that they are using many hacks to make it 'just work'. Erwin _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Wed Oct 30 12:44:01 2002 From: coding at natew.com (Nate W) Date: Wed Oct 30 12:44:01 2002 Subject: [ODE] Self Righting Boxes (on castors) In-Reply-To: <3DC013BD.9080102@oracle.com> Message-ID: On Wed, 30 Oct 2002, Ed Jones wrote: > The "castorbox people" fall over quite regularly, which is fine and all > part of the "fun". But what I'd like to do is, after a couple of seconds > of lying down, get them to spring back up to their feet of their own > accord. Obviously I can just reset the little fella to be the right way > up but I'd like it to look more like they're jumping back up themselves. > > Anyone got any ideas of what would be a good (and preferably simple!) > way to achieve this? How about using an angular motor? http://q12.org/ode/ode-latest-userguide.html#ref56 Set the motor to have one axis, and set one of the motor's bodies to the "castorperson" body and set the other to null. Use dJointSetAMotorParam to set a desired (angular) velocity. That should rotate the person upright. To come up with a desired velocity, get the angle between the person's current orientation and the desired "upright" vector. Multiply that angle by a "gain" factor. To tune the way the people get upright, you can tune the gain, the maximum force, the people's mass, gravity, etc. When the person's angular velocity gets close to zero, you can probably consider them upright and turn off the angular motor. I haven't actually used angular motors yet in my own code, so this is as much a question as a suggestion. If anyone has other ideas I'm all ears. -- Nate Waddoups Redmond WA USA http://www.natew.com From filipe.dias at mind.pt Wed Oct 30 13:14:01 2002 From: filipe.dias at mind.pt (Filipe Dias) Date: Wed Oct 30 13:14:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <240659DFBDD99C4299EF7483EAD70F2410C1A1@RED-MSG-01.redmond.corp.microsoft.com> Message-ID: <200210302013.g9UKDsu16879@hook.org> What I remember from playing it is that when a seeding firetruck bumps into 2 cars at the same time the result is unexpected, the two cars stay still and the fire truck goes mad like if it had hit a wall. So this is very simmilar to "doesn't solve multiple simultaneous contacts" Now judging by how good it looks, I am surprised how multiple contact situations happen that seldom! Even so it is possible to push two stoped cars very slowly, so it is possible that multiple contacts can be solved if the speed is low... Dispite all this I have mannaged to drive a firetruck inside a taxi! Fil. -----Original Message----- From: "Phil Teschner" To: "Erwin de Vries" , Date: Wed, 30 Oct 2002 10:48:02 -0800 Subject: RE: [ODE] GTA3 and Physics > I remember hearing that the physics engine in GTA3 was entirely written > in house. It is a pretty straight forward rigid body system that does > not solve multiple simultaneous contacts (i.e. does not use an LPC > solver). > > Phil > > -----Original Message----- > From: Erwin de Vries [mailto:erwin@vo.com] > Sent: Wednesday, October 30, 2002 10:18 AM > To: ode@q12.org > Subject: Re: [ODE] GTA3 and Physics > > > I'm guessing they are using a very customized physics model for > gta3... > They > > might use havoc or similar package for most physics stuff.. but when > it > > comes to car physics in games it is much cheaper to have a customized > system > > compared to building up a vehicle correctly with different parts.. > > This is exactly what comes with Havok. A vehicle SDK. Now i have no > idea > how > it works behind the scenes, and i've never used it, but my guess is > that > they are using many hacks to make it 'just work'. > > Erwin > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From holmlund at hpc2n.umu.se Wed Oct 30 14:15:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Wed Oct 30 14:15:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp References: Message-ID: <3DC04BAA.4050904@hpc2n.umu.se> Btw, what's the current status of R&D on finding methods for implementing real coulomb friction in an efficient way? Any recent publications/preprints/conferences in this area? /Kenneth Russ Smith wrote: > probably you're right. in fact, there needs to be a lot more written about > the friction models in general. i'm reluctant to made dContactApprox1 the > default, as this will break people's code in subtle ways - there are now > enough users of ODE that breaking the API is kind of an anti-social thing > to do unless there is a good reason. > > i changed the buggy example, since that's the basis for a lot of people's > vehicles. i may change the other examples too, but i'll try them out first > to see what effect the change has. > > russ. -- Kenneth Holmlund Director VRlab HPC2N, Umeå University, Sweden holmlund@hpc2n.umu.se From holmlund at hpc2n.umu.se Wed Oct 30 14:31:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Wed Oct 30 14:31:02 2002 Subject: [ODE] GTA3 and Physics References: <000001c2800a$7836a2b0$0e01a8c0@aanand> Message-ID: <3DC04F58.5040909@hpc2n.umu.se> The probably most advanced vehicle simulator around is the harvester simulator by Oryx Simulations. See http://www.oryx.se/ It's using Vortex from CM-Labs, and Russ had a key role in it's early development. (see http://www.cm-labs.com/) In this simulator you have full vehicle dynamics plus highly advanced interaction with many objects in the environment. Upcoming simulators for "heavy vehicles" use physics for adding even more realism and generality. If you would tear off the hardware (for control and display) the whole thing could quite easily be made into a "game like" application (there's a reason why Russ talks about "Harvester wars" in his notes! :) ODE and Vortex were quite similar one year ago, but Vortex has quite a few more features nowadays, as well as an improved friction model and better stability for rotating bodies. In fact, MathEngine Karma, ODE and Vortex all bear influences from the same people (including Russ), but they have been developed independently for some time now (though I really don't know much about Karma these days). /Kenneth Aanand Narayanan.P.P wrote: >>>I would like to hear from other people who have used ODE for full >>>fledged physics simulations. >> > >>What do you mean by "full fledged?" > > > Like in GTA3 (or any other similar game). Not just for vehicles, > but for other objects in the world (lamp post, dust bins etc.). What I > am interested is in the stability and robustness of the system when > several simulations occur (several different active joints). I did read > about the posts on direct LCP and iterative LCP. So I wanted to know if > anybody knows about the physics in GTA3 and the stability of ODE itself > when used for such simulations (GTA3). > > Also can anyone point me to some literature on Dantzig algorithm > (used by LCP solver in ODE). > > Cheers > AN > -- Kenneth Holmlund Director VRlab HPC2N, Umeå University, Sweden holmlund@hpc2n.umu.se From Henrik.Karlsson at dice.se Wed Oct 30 14:39:01 2002 From: Henrik.Karlsson at dice.se (Karlsson, Henrik) Date: Wed Oct 30 14:39:01 2002 Subject: [ODE] GTA3 and Physics Message-ID: <160E755604B6A949900013D42C3484722DEBB0@elrond.dice.se> It's very common that you use simple displacement in games when contacts appear between objects.. and solve them one by one.. If you tweak it a little you can make it look good.. cheap and simple :) Or you can always solve displacement simultaneously. That might give you a better protection against bodies penetrating each other when multiple contacts. The big performance hit in game physics usually is the collision part though. In our game right now 50% of the cpu is just collision detection.. (most graphics are done on the gpu). So keep your collision primitives as simple as possible (use composites of spheres instead of boxes etc, works good enough in most cases). regards, Henrik -----Original Message----- From: Filipe Dias [mailto:filipe.dias@mind.pt] Sent: den 30 oktober 2002 20:49 To: ode@q12.org Subject: RE: [ODE] GTA3 and Physics What I remember from playing it is that when a seeding firetruck bumps into 2 cars at the same time the result is unexpected, the two cars stay still and the fire truck goes mad like if it had hit a wall. So this is very simmilar to "doesn't solve multiple simultaneous contacts" Now judging by how good it looks, I am surprised how multiple contact situations happen that seldom! Even so it is possible to push two stoped cars very slowly, so it is possible that multiple contacts can be solved if the speed is low... Dispite all this I have mannaged to drive a firetruck inside a taxi! Fil. -----Original Message----- From: "Phil Teschner" To: "Erwin de Vries" , Date: Wed, 30 Oct 2002 10:48:02 -0800 Subject: RE: [ODE] GTA3 and Physics > I remember hearing that the physics engine in GTA3 was entirely written > in house. It is a pretty straight forward rigid body system that does > not solve multiple simultaneous contacts (i.e. does not use an LPC > solver). > > Phil > > -----Original Message----- > From: Erwin de Vries [mailto:erwin@vo.com] > Sent: Wednesday, October 30, 2002 10:18 AM > To: ode@q12.org > Subject: Re: [ODE] GTA3 and Physics > > > I'm guessing they are using a very customized physics model for > gta3... > They > > might use havoc or similar package for most physics stuff.. but when > it > > comes to car physics in games it is much cheaper to have a customized > system > > compared to building up a vehicle correctly with different parts.. > > This is exactly what comes with Havok. A vehicle SDK. Now i have no > idea > how > it works behind the scenes, and i've never used it, but my guess is > that > they are using many hacks to make it 'just work'. > > Erwin > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Thu Oct 31 00:23:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 00:23:02 2002 Subject: [ODE] slider trouble Message-ID: I've noticed that when I connect two boxes with a slider, and set stops on the slider so it can only move between +1 and -1, the box-slider-box system spins off into infinity if I toss it into the air. Without the limits, the system behaves just fine. I was thinking that I was just seeing the rotating body instability described in 11.12 of the FAQ, but bodies by themselves are a much smaller problem. It seems like the joint limits exacerbate the problem, could they be adding energy to the system somehow? Russ, do you have a pretty good idea of what would cause this, or would you like me to tweak one of the drawstuff-based sample apps to demonstrate this? There is a possiblity that something in Juice is contributing to the problem, so if you want I'll put together a bare-minimum test case for you. Nate Waddoups Redmond WA USA http://www.natew.com From duhprey at yahoo.com Thu Oct 31 09:59:01 2002 From: duhprey at yahoo.com (Daniel Duhprey) Date: Thu Oct 31 09:59:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: On Wed, 30 Oct 2002, Aanand Narayanan.P.P wrote: --> -->Does anybody know which method (direct LCP, iterative LCP, penalty etc) -->was used in the (vehicle) physics for GTA3? -->Is it possible to achieve the same level of stability with ODE? I would -->like to hear from other people who have used ODE for full fledged -->physics simulations. I'm one of the devs responsible for the ode plugin to crystal space. I also wrote a pinball simulator using that http://cs-pinball.sourceforge.net. Its not exactly full-fledged physics since the only real active object is the ball, but the flipper and shooter are represented with joints and forces/torques as are anything else in the game, but its really not on the scale of GTA3 -- ------------ email: duhprey@tosos.com www: http://paradox.tosos.com/~duhprey icq: 129354442 She's got a whole brood of kids, like Sendmail, and Postfix, and Apache, and Perl. And some of 'em die young, and some are mentally retarded. Sterling The European finds intercourse with Americans easy and agreeable. Einstein Not a shred of evidence exists in favor of the idea that life is serious. Gill From ed.jones at oracle.com Thu Oct 31 11:05:02 2002 From: ed.jones at oracle.com (Ed Jones) Date: Thu Oct 31 11:05:02 2002 Subject: [ODE] Self Righting Boxes (on castors) References: Message-ID: <3DC170AC.5010004@oracle.com> Thanks for the ideas Nate and Fil, I think I'll go for a big comedy magnet, attached to helicopter rotor-blades (or possibly a jet-pack or something) to hover around and pull them back up. Cheers, Ed. Nate W wrote: >On Wed, 30 Oct 2002, Ed Jones wrote: > > > >>The "castorbox people" fall over quite regularly, which is fine and all >>part of the "fun". But what I'd like to do is, after a couple of seconds >>of lying down, get them to spring back up to their feet of their own >>accord. Obviously I can just reset the little fella to be the right way >>up but I'd like it to look more like they're jumping back up themselves. >> >>Anyone got any ideas of what would be a good (and preferably simple!) >>way to achieve this? >> >> > >How about using an angular motor? >http://q12.org/ode/ode-latest-userguide.html#ref56 > >Set the motor to have one axis, and set one of the motor's bodies to the >"castorperson" body and set the other to null. Use dJointSetAMotorParam >to set a desired (angular) velocity. That should rotate the person >upright. > >To come up with a desired velocity, get the angle between the person's >current orientation and the desired "upright" vector. Multiply that angle >by a "gain" factor. To tune the way the people get upright, you can tune >the gain, the maximum force, the people's mass, gravity, etc. When the >person's angular velocity gets close to zero, you can probably consider >them upright and turn off the angular motor. > >I haven't actually used angular motors yet in my own code, so this is as >much a question as a suggestion. If anyone has other ideas I'm all ears. > > > From russ at q12.org Thu Oct 31 12:39:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 12:39:02 2002 Subject: [ODE] slider trouble In-Reply-To: Message-ID: > so if you want I'll put together a bare-minimum test case for you. please. russ -- Russ Smith http://www.q12.org/ From mein at cs.umn.edu Thu Oct 31 12:49:01 2002 From: mein at cs.umn.edu (Kent Mein) Date: Thu Oct 31 12:49:01 2002 Subject: [ODE] just a little patch Message-ID: <20021031092658.A10224@cs.umn.edu> Just a small patch under solaris for ode/test/test_ode.cpp I added the following: #if defined (__sparc) || defined (__sparc__) #include #endif Kent Mein -- mein@cs.umn.edu http://www.cs.umn.edu/~mein From xyberswine at hotmail.com Thu Oct 31 12:57:30 2002 From: xyberswine at hotmail.com (Kirk Waynesdale) Date: Thu Oct 31 12:57:30 2002 Subject: [ODE] more physics Message-ID: looks like another physics engine... www.tokamakphysics.com John L. _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From russ at q12.org Thu Oct 31 13:08:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 13:08:02 2002 Subject: [ODE] more physics In-Reply-To: Message-ID: > looks like another physics engine... > > www.tokamakphysics.com interesting. yet another mention of iterative constraint solving methods here. the demos are kind of bare bones (i.e., like ODE's bare bones demos). no mention of the cost. the box stack demo has an interesting flaw: a nudged stack will tip over, then freeze part of the way down. this suggests that 'stable' box stacking is achieved through simply turning off the phisics for a stationary stack - which is a good idea, but it makes it hard to evaluate the stability of the underlying method for stacks. the collision looks like it allows penetration, like ODE. if you collapse the chain on top of itself it will squish into itself a bit then expand out. russ. -- Russ Smith http://www.q12.org/ From anselm at hook.org Thu Oct 31 13:40:02 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 31 13:40:02 2002 Subject: [ODE] more physics In-Reply-To: Message-ID: I was looking around for some information on this topic and ran across these links that others may find interesting: http://w3imagis.imag.fr/Publications/1999/Fau99/Fau99.pdf http://w3imagis.imag.fr/Membres/Francois.Faure/faure.html - a On Thu, 31 Oct 2002, Russ Smith wrote: > > > looks like another physics engine... > > > > www.tokamakphysics.com > > interesting. yet another mention of iterative constraint solving methods > here. the demos are kind of bare bones (i.e., like ODE's bare bones > demos). no mention of the cost. > > the box stack demo has an interesting flaw: a nudged stack will tip over, > then freeze part of the way down. this suggests that 'stable' box stacking > is achieved through simply turning off the phisics for a stationary stack > - which is a good idea, but it makes it hard to evaluate the stability of > the underlying method for stacks. > > the collision looks like it allows penetration, like ODE. if you collapse > the chain on top of itself it will squish into itself a bit then expand > out. > > russ. > > -- > Russ Smith > http://www.q12.org/ > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From jme at snowcode.com Thu Oct 31 14:28:02 2002 From: jme at snowcode.com (Joakim Eriksson) Date: Thu Oct 31 14:28:02 2002 Subject: SV: [ODE] more physics Message-ID: > > looks like another physics engine... > > > > www.tokamakphysics.com > > interesting. yet another mention of iterative constraint > solving methods here. the demos are kind of bare bones >(i.e., like ODE's bare bones demos). no mention of the cost. Costs in what way? It does say memory usage and how much of the cpu per frame the physics system takes. What other costs are there? > the box stack demo has an interesting flaw: a nudged stack > will tip over, then freeze part of the way down. this suggests > that 'stable' box stacking is achieved through simply turning >off the phisics for a stationary stack Yes, seems like the objects sleep VERY quickly. After just a few tries I manage to get it to sleep in a physicly impossible position. (If the simulation had run for just a few ticks more the boxes would have fallen over) but they quickly froze in place. > the collision looks like it allows penetration, like ODE. if > you collapse the chain on top of itself it will squish into > itself a bit then expand out. It does indeed allow penetration. Just move closer to a object and spawn a sphere or something. You can see that even if the object is inside another object he can handle it. Its also a dead give away that he for the moment only handles primitives vs primitives and primitives vs static triangle meshes. It seems to be able to handle quite a lot. It does use a bit of memory 500Kb in some cases but they do contain quite a lot of objects. Too bad they dont have any more information on thier method. Also is it just me or do the chain and hinge behave strangly? If you continue to force it upwards it starts to wobble. Like a snake or something. Maybe it's just me and thats how it should behave. /Joakim E. - www.planestate.net From coding at natew.com Thu Oct 31 14:59:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 14:59:02 2002 Subject: [ODE] slider trouble In-Reply-To: Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --1363170581-980581577-1036073289=:32303 Content-Type: TEXT/PLAIN; charset=US-ASCII On Thu, 31 Oct 2002, Russ Smith wrote: > > so if you want I'll put together a bare-minimum test case for you. > > please. I've attached test_sliderstops.cpp, a small demo in the drawstuff tradition with two boxes and a slider between them. To get them flying, they are dropped onto bouncy ground. The first bounce looks about right, but before it hits the ground again the two-box system appears to gain a lot of angular momentum. They mellow out after they hit the ground again. The boxes start with altitudes of 7 and 8 units; if you raise those to 19 and 20 you get more 'air time' and more trouble. You have to be quick with the mouse to follow them around the sky though. -- Nate Waddoups Redmond WA USA http://www.natew.com --1363170581-980581577-1036073289=:32303 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="test_sliderstops.cpp" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="test_sliderstops.cpp" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNDQogKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKg0NCiAqIE9wZW4gRHluYW1pY3MgRW5naW5lLCBD b3B5cmlnaHQgKEMpIDIwMDEsMjAwMiBSdXNzZWxsIEwuIFNtaXRoLiAgICAg ICAqDQ0KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gIEVtYWlsOiBydXNzQHEx Mi5vcmcgICBXZWI6IHd3dy5xMTIub3JnICAgICAgICAgICoNDQogKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKg0NCiAqIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig ICAgICAgICAqDQ0KICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiBF SVRIRVI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNDQog KiAgICgxKSBUaGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSAgKg0NCiAqICAgICAgIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0ICAqDQ0KICogICAgICAgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLiBUaGUgdGV4dCBvZiB0aGUgR05VIExlc3NlciAgICAg ICoNDQogKiAgICAgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGluY2x1 ZGVkIHdpdGggdGhpcyBsaWJyYXJ5IGluIHRoZSAgICAgKg0NCiAqICAgICAg IGZpbGUgTElDRU5TRS5UWFQuICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqDQ0KICogICAoMikgVGhlIEJTRC1zdHls ZSBsaWNlbnNlIHRoYXQgaXMgaW5jbHVkZWQgd2l0aCB0aGlzIGxpYnJhcnkg aW4gICAgICoNDQogKiAgICAgICB0aGUgZmlsZSBMSUNFTlNFLUJTRC5UWFQu ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0NCiAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQ0KICogVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsICAgICAgICoNDQogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAg Kg0NCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBmaWxlcyAgICAqDQ0KICogTElDRU5T RS5UWFQgYW5kIExJQ0VOU0UtQlNELlRYVCBmb3IgbW9yZSBkZXRhaWxzLiAg ICAgICAgICAgICAgICAgICAgICoNDQogKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKg0NCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0NCg0N CiNpbmNsdWRlIDxvZGUvb2RlLmg+DQ0KI2luY2x1ZGUgPGRyYXdzdHVmZi9k cmF3c3R1ZmYuaD4NDQoNDQojaWZkZWYgTVNWQw0NCiNwcmFnbWEgd2Fybmlu ZyhkaXNhYmxlOjQyNDQgNDMwNSkgIC8vIGZvciBWQysrLCBubyBwcmVjaXNp b24gbG9zcyBjb21wbGFpbnRzDQ0KI2VuZGlmDQ0KDQ0KLy8gc2VsZWN0IGNv cnJlY3QgZHJhd2luZyBmdW5jdGlvbnMNDQojaWZkZWYgZERPVUJMRQ0NCiNk ZWZpbmUgZHNEcmF3Qm94IGRzRHJhd0JveEQNDQojZW5kaWYNDQoNDQoNDQov LyBzb21lIGNvbnN0YW50cw0NCiNkZWZpbmUgU0lERSAoMC41ZikJLy8gc2lk ZSBsZW5ndGggb2YgYSBib3gNDQojZGVmaW5lIE1BU1MgKDEuMCkJLy8gbWFz cyBvZiBhIGJveA0NCg0NCg0NCi8vIGR5bmFtaWNzIGFuZCBjb2xsaXNpb24g b2JqZWN0cw0NCnN0YXRpYyBkV29ybGRJRCB3b3JsZDsNDQpzdGF0aWMgZFNw YWNlSUQgc3BhY2U7DQ0Kc3RhdGljIGRCb2R5SUQgYm9keVsyXTsNDQpzdGF0 aWMgZEdlb21JRCBib3hbMl07DQ0Kc3RhdGljIGRKb2ludElEIHNsaWRlcjsN DQpzdGF0aWMgZEdlb21JRCBncm91bmQ7DQ0Kc3RhdGljIGRKb2ludEdyb3Vw SUQgY29udGFjdGdyb3VwOw0NCg0NCg0NCi8vIHN0YXJ0IHNpbXVsYXRpb24g LSBzZXQgdmlld3BvaW50DQ0KDQ0Kc3RhdGljIHZvaWQgc3RhcnQoKQ0NCnsN DQogIHN0YXRpYyBmbG9hdCB4eXpbM10gPSB7NS4wMzgyZiwtNS4wODExZiwx LjQ3MDBmfTsNDQogIHN0YXRpYyBmbG9hdCBocHJbM10gPSB7MTYwLjAwMDBm LDAuMGYsMC4wMDAwZn07DQ0KICBkc1NldFZpZXdwb2ludCAoeHl6LGhwcik7 DQ0KICBwcmludGYgKCJQcmVzcyAnZScgdG8gc3RhcnQvc3RvcCBvY2Nhc2lv bmFsIGVycm9yLlxuIik7DQ0KfQ0NCg0NCg0NCi8vIGNhbGxlZCB3aGVuIGEg a2V5IHByZXNzZWQNDQoNDQpzdGF0aWMgdm9pZCBjb21tYW5kIChpbnQgY21k KQ0NCnsNDQp9DQ0KDQ0KLy8gY29sbGlzaW9uIGNhbGxiYWNrDQ0KDQ0Kc3Rh dGljIHZvaWQgbmVhckNhbGxiYWNrICh2b2lkICpkYXRhLCBkR2VvbUlEIG8x LCBkR2VvbUlEIG8yKQ0NCnsNDQogIGludCBpLG47DQ0KDQ0KICAvLyBkb24n dCBjb2xsaWRlIGJveGVzIHdpdGggZWFjaCBvdGhlcg0NCiAgaWYgKChvMSA9 PSBib3hbMF0pICYmIChvMiA9PSBib3hbMV0pKQ0NCgkgIHJldHVybjsNDQoN DQogIGlmICgobzEgPT0gYm94WzFdKSAmJiAobzIgPT0gYm94WzBdKSkNDQoJ ICByZXR1cm47DQ0KDQ0KICBjb25zdCBpbnQgTiA9IDEwOw0NCiAgZENvbnRh Y3QgY29udGFjdFtOXTsNDQogIG4gPSBkQ29sbGlkZSAobzEsbzIsTiwmY29u dGFjdFswXS5nZW9tLHNpemVvZihkQ29udGFjdCkpOw0NCiAgaWYgKG4gPiAw KSB7DQ0KICAgIGZvciAoaT0wOyBpPG47IGkrKykgew0NCiAgICAgIGNvbnRh Y3RbaV0uc3VyZmFjZS5tb2RlID0gZENvbnRhY3RTbGlwMSB8IGRDb250YWN0 U2xpcDIgfA0NCgkvKmRDb250YWN0U29mdEVSUCB8IGRDb250YWN0U29mdENG TSB8ICovIGRDb250YWN0Qm91bmNlOw0NCiAgICAgIGNvbnRhY3RbaV0uc3Vy ZmFjZS5tdSA9IGRJbmZpbml0eTsNDQogICAgICBjb250YWN0W2ldLnN1cmZh Y2Uuc2xpcDEgPSAwLjE7DQ0KICAgICAgY29udGFjdFtpXS5zdXJmYWNlLnNs aXAyID0gMC4xOw0NCiAgICAgIC8vY29udGFjdFtpXS5zdXJmYWNlLnNvZnRf ZXJwID0gMC41Ow0NCiAgICAgIC8vY29udGFjdFtpXS5zdXJmYWNlLnNvZnRf Y2ZtID0gMC4zOw0NCgkgIGNvbnRhY3RbaV0uc3VyZmFjZS5ib3VuY2VfdmVs ID0gMDsNDQoJICBjb250YWN0W2ldLnN1cmZhY2UuYm91bmNlID0gMC45Ow0N CiAgICAgIGRKb2ludElEIGMgPSBkSm9pbnRDcmVhdGVDb250YWN0ICh3b3Js ZCxjb250YWN0Z3JvdXAsJmNvbnRhY3RbaV0pOw0NCiAgICAgIGRKb2ludEF0 dGFjaCAoYywNDQoJCSAgICBkR2VvbUdldEJvZHkoY29udGFjdFtpXS5nZW9t LmcxKSwNDQoJCSAgICBkR2VvbUdldEJvZHkoY29udGFjdFtpXS5nZW9tLmcy KSk7DQ0KICAgIH0NDQogIH0NDQp9DQ0KDQ0KLy8gc2ltdWxhdGlvbiBsb29w DQ0KDQ0Kc3RhdGljIHZvaWQgc2ltTG9vcCAoaW50IHBhdXNlKQ0NCnsNDQoN DQogIGRTcGFjZUNvbGxpZGUgKHNwYWNlLDAsJm5lYXJDYWxsYmFjayk7DQ0K ICBkV29ybGRTdGVwICh3b3JsZCwwLjA1KTsNDQogIGRKb2ludEdyb3VwRW1w dHkgKGNvbnRhY3Rncm91cCk7DQ0KDQ0KDQ0KICBkUmVhbCBzaWRlc1szXSA9 IHsxLDEsMX07DQ0KICBkc1NldFRleHR1cmUgKERTX1dPT0QpOw0NCiAgZHNT ZXRDb2xvciAoMSwxLDApOw0NCiAgZHNEcmF3Qm94IChkQm9keUdldFBvc2l0 aW9uKGJvZHlbMF0pLGRCb2R5R2V0Um90YXRpb24oYm9keVswXSksc2lkZXMp Ow0NCiAgZHNTZXRDb2xvciAoMCwxLDEpOw0NCiAgZHNEcmF3Qm94IChkQm9k eUdldFBvc2l0aW9uKGJvZHlbMV0pLGRCb2R5R2V0Um90YXRpb24oYm9keVsx XSksc2lkZXMpOw0NCn0NDQogICAgICAgICAgIA0NCmludCBtYWluIChpbnQg YXJnYywgY2hhciAqKmFyZ3YpDQ0Kew0NCiAgLy8gc2V0dXAgcG9pbnRlcnMg dG8gZHJhd3N0dWZmIGNhbGxiYWNrIGZ1bmN0aW9ucw0NCiAgZHNGdW5jdGlv bnMgZm47DQ0KICBmbi52ZXJzaW9uID0gRFNfVkVSU0lPTjsNDQogIGZuLnN0 YXJ0ID0gJnN0YXJ0Ow0NCiAgZm4uc3RlcCA9ICZzaW1Mb29wOw0NCiAgZm4u Y29tbWFuZCA9ICZjb21tYW5kOw0NCiAgZm4uc3RvcCA9IDA7DQ0KICBmbi5w YXRoX3RvX3RleHR1cmVzID0gIi4uLy4uL2RyYXdzdHVmZi90ZXh0dXJlcyI7 DQ0KDQ0KICAvLyBjcmVhdGUgd29ybGQsIHNwYWNlLCBncm91bmQsIGV0Yw0N CiAgd29ybGQgPSBkV29ybGRDcmVhdGUoKTsNDQogIGRXb3JsZFNldEdyYXZp dHkgKHdvcmxkLCAwLCAwLCAtMik7DQ0KDQ0KICBzcGFjZSA9IGRTaW1wbGVT cGFjZUNyZWF0ZSgpOw0NCiAgZ3JvdW5kID0gZENyZWF0ZVBsYW5lIChzcGFj ZSwwLDAsMSwwKTsNDQoNDQogIGNvbnRhY3Rncm91cCA9IGRKb2ludEdyb3Vw Q3JlYXRlICgwKTsNDQoNDQogIC8vIGNyZWF0ZSBtYXNzIGZvciB0aGUgYm94 ZXMNDQogIGRNYXNzIG07DQ0KICBkTWFzc1NldEJveCAoJm0sMSxTSURFLFNJ REUsU0lERSk7DQ0KICBkTWFzc0FkanVzdCAoJm0sTUFTUyk7DQ0KDQ0KICAv LyBjcmVhdGUgYm9keSAxDQ0KICBib2R5WzBdID0gZEJvZHlDcmVhdGUgKHdv cmxkKTsNDQogIGRCb2R5U2V0TWFzcyAoYm9keVswXSwmbSk7DQ0KICBkQm9k eVNldFBvc2l0aW9uIChib2R5WzBdLDAsMCw4KTsNDQoNDQogIGJveFswXSA9 IGRDcmVhdGVCb3ggKHNwYWNlLDEsMSwxKTsNDQogIGRHZW9tU2V0Qm9keSAo Ym94WzBdLGJvZHlbMF0pOw0NCg0NCiAgLy8gY3JlYXRlIGJvZHkgMg0NCiAg Ym9keVsxXSA9IGRCb2R5Q3JlYXRlICh3b3JsZCk7DQ0KICBkQm9keVNldE1h c3MgKGJvZHlbMV0sJm0pOw0NCiAgZEJvZHlTZXRQb3NpdGlvbiAoYm9keVsx XSwwLjUsMCw3KTsNDQoNDQogIGJveFsxXSA9IGRDcmVhdGVCb3ggKHNwYWNl LDEsMSwxKTsNDQogIGRHZW9tU2V0Qm9keSAoYm94WzFdLGJvZHlbMV0pOw0N Cg0NCiAgLy8gY3JlYXRlIHNsaWRlcg0NCiAgc2xpZGVyID0gZEpvaW50Q3Jl YXRlU2xpZGVyICh3b3JsZCwwKTsNDQogIGRKb2ludEF0dGFjaCAoc2xpZGVy LGJvZHlbMF0sYm9keVsxXSk7DQ0KICBkSm9pbnRTZXRTbGlkZXJBeGlzIChz bGlkZXIsMSwwLDApOw0NCiAgZEpvaW50U2V0U2xpZGVyUGFyYW0gKHNsaWRl ciwgZFBhcmFtTG9TdG9wLCAtMS4wKTsNDQogIGRKb2ludFNldFNsaWRlclBh cmFtIChzbGlkZXIsIGRQYXJhbUhpU3RvcCwgMS4wKTsNDQoNDQogIC8vIHJ1 biBzaW11bGF0aW9uDQ0KICBkc1NpbXVsYXRpb25Mb29wIChhcmdjLGFyZ3Ys MzUyLDI4OCwmZm4pOw0NCg0NCiAgZFdvcmxkRGVzdHJveSAod29ybGQpOw0N CiAgcmV0dXJuIDA7DQ0KfQ0NCg== --1363170581-980581577-1036073289=:32303-- From ahamilton_01 at hotmail.com Thu Oct 31 15:29:02 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Thu Oct 31 15:29:02 2002 Subject: SV: [ODE] more physics Message-ID: >Costs in what way? It does say memory usage and how much of >the cpu per frame the physics system takes. What other costs >are there? I think Russ mean cost for licensing it for use in games. >Yes, seems like the objects sleep VERY quickly. After just a few >tries I manage to get it to sleep in a physicly impossible position. >(If the simulation had run for just a few ticks more the boxes >would have fallen over) but they quickly froze in place. Indeed, but in a game, if that means an a few extra stacks for the game designer, I think that's a fair trade. >Also is it just me or do the chain and hinge behave strangly? >If you continue to force it upwards it starts to wobble. Like >a snake or something. Maybe it's just me and thats how it >should behave. Both of the long chains do seem a bit elastic when you lift them up for a while. Also the hinge chains looks abit rubbery when it fall onto itself. Perhaps that's an artifact of this 'iterative' method. Al > >/Joakim E. - www.planestate.net >_______________________________________________ >ODE mailing list >ODE@q12.org >http://q12.org/mailman/listinfo/ode _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From coding at natew.com Thu Oct 31 20:42:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 20:42:02 2002 Subject: [ODE] Interesting thing... Message-ID: "MelBotWars is a real-time dynamics competition involving autonomous virtual robots that fight each other using rigidBody dynamics in Maya. The contestants get to build their own robots and add intelligence to them. They need to learn many things in order to make sure their robot survives. You get to learn all about physics and the rigidBody dynamics in Maya and have a lot of fun doing it!" http://www.melbotwars.com/index_lo.html -- Nate Waddoups Redmond WA USA http://www.natew.com From anselm at hook.org Thu Oct 31 21:09:01 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 31 21:09:01 2002 Subject: [ODE] msvc dlls? In-Reply-To: Message-ID: Just a little note, I updated my c# code to link against the latest ode and I noticed something missing in the dll support. Using msvc 7.0 I think that I have to have __dllexport... defined - but none of the methods in objects.h have SHAREDLIBEXPORT as a prefix. I suppose this isn't a problem under cygwin (I haven't checked) but it is maybe something missing in the latest ode lib. But I am a bit baffled about how I did it last time - I don't think I was using cygwin... maybe these define prefixes were removed? Anyway... Here's my copy - maybe it can be merged back in - or somebody can point out to me a better way to force export of all methods in msdev? http://p2pmap.org/cgi-bin/cvsweb.cgi/p2pmap/src/ode/include/ode/objects.h?rev=1.3&content-type=text/x-cvsweb-markup Also I noticed that there's an include of alloca.h - msdev doesn't have that. And I do actually add one new method to the ode library - a self handling collision callback so that I don't have to do callbacks in c#. Of course this can't really be generalized beyond specific users needs (such as mine) because there's no good concept of material property intersections. Otherwise I was able to pretty trivially build an ode.dll under msdev... - a From russ at q12.org Thu Oct 31 23:06:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 23:06:02 2002 Subject: [ODE] slider trouble In-Reply-To: References: Message-ID: <20021031221053.291c8cac.russ@q12.org> > I've noticed that when I connect two boxes with a slider, and set > stops on the slider so it can only move between +1 and -1, the > box-slider-box system spins off into infinity if I toss it into the > air. Without the limits, the system behaves just fine. this one took a while to figure out, but it's now fixed (joint.cpp updated in CVS, with a long comment explaining the problem). the problem was that the constraint forces being applied to a powered or limited slider joint resulted in a torque couple if the body centers of mass did not line up along the slider axis (as they do in all my slider tests!). that caused the joined bodies to build up angular velocity. slider joints between objects that weren't spinning freely (e.g. sitting on the ground) would not have been affected much by this problem. nate, can you verify the fix? russ. -- Russell Smith http://www.q12.org From russ at q12.org Thu Oct 31 23:49:01 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 23:49:01 2002 Subject: [ODE] slider trouble In-Reply-To: <20021031221053.291c8cac.russ@q12.org> References: <20021031221053.291c8cac.russ@q12.org> Message-ID: <20021031225314.6ad768b2.russ@q12.org> > this one took a while to figure out, but it's now fixed (joint.cpp > updated in CVS, with a long comment explaining the problem). oops ... got some signs incorrect ... checked in a new joint.cpp. -- Russell Smith http://www.q12.org From ps_yumemi at yahoo.com Tue Oct 1 08:32:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Tue Oct 1 08:32:01 2002 Subject: [ODE] access violation Message-ID: <20021001153138.35239.qmail@web40509.mail.yahoo.com> if you get an acces violation when you go into the space collide function what does that mean? does that mean i have an invalid geom? thanks __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ivan.bolcina at volja.net Tue Oct 1 11:28:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 1 11:28:02 2002 Subject: [ODE] Usage of triangle collider Message-ID: <001301c26978$37c95a90$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0010_01C26988.FB0EE000 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Can anybody give me an example how to use triangle collider. Currently I am using built-in collider on boxes. bye, ivan ------=_NextPart_000_0010_01C26988.FB0EE000 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Can anybody give me an example how to = use triangle=20 collider.
Currently I am using built-in collider = on=20 boxes.
 
bye,
ivan
------=_NextPart_000_0010_01C26988.FB0EE000-- From ivan.bolcina at volja.net Tue Oct 1 11:45:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 1 11:45:02 2002 Subject: [ODE] old posts to this forum Message-ID: <004201c2697a$80065360$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_003F_01C2698B.43615CA0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi, I downloaded archive of old posts to this forum. How do I import it = into my email program(Outlook Express). If I cannot, where to can I = import it. bye and thanx,ivan ------=_NextPart_000_003F_01C2698B.43615CA0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi, I downloaded archive of old posts = to this=20 forum. How do I import it into my email program(Outlook Express). If I = cannot,=20 where to can I import it.
 
bye and = thanx,ivan
------=_NextPart_000_003F_01C2698B.43615CA0-- From anselm at hook.org Tue Oct 1 12:38:02 2002 From: anselm at hook.org (Anselm Hook) Date: Tue Oct 1 12:38:02 2002 Subject: [ODE] old posts to this forum In-Reply-To: <004201c2697a$80065360$0100a8c0@vectra> Message-ID: > q12 archives in mbox format - any way to get them in outlook format? The archives are in mbox format (see pipermail faq). Programs such as Netscape handle this format. Outlook express can import some formats as well. I suggest using Netscape to import the q12 archives, then exporting out to some standard that Outlook can read in. Looking on the net I don't see anybody doing *exactly* what you want but here are a couple of links: http://lists.suse.com/archive/suse-kde/2002-May/0270.html http://www.progsoc.uts.edu.au/lists/slug/2001/May/msg00118.html - a What I would do is run a On Tue, 1 Oct 2002, Ivan Bolcina wrote: > Hi, I downloaded archive of old posts to this forum. How do I import > it into my email program(Outlook Express). If I cannot, where to can I > import it. > > bye and thanx,ivan > From erwin at vo.com Tue Oct 1 13:19:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:01 2002 Subject: [ODE] Tri-collider page on wiki References: <20021001153259.GA13869@nlin.net> Message-ID: <007501c26987$bf0f2f20$73fefea9@athlon> Hi, After several weeks (months?) of crunch time i finally have time to continue my planned changes to the Tricollider. The CVS version is indeed very old, and has problems we all know about. The version i posted to this list fixes some problems, but has several bugs, which is why i'm glad it didnt make it into CVS. The sphere collision function isnt accurate enough for large triangles. I'm going to rewrite the triangle-sphere collision function to be more robust in these cases. The box collision function computes a wrong penetration depth (not deep enough) in some cases, which i found out after the release. I've planned to fix these issues somewhere next week, but dont bet your lives on it. :-) Since ODE now implements a ccylinder-box collision function i'm considering implementing the triangle-ccylinder function along with some other modifications. Erwin ----- Original Message ----- From: To: "Cyrus Preuss" Cc: Sent: Tuesday, October 01, 2002 17:32 Subject: Re: [ODE] Tri-collider page on wiki > Hi Cyrus, > > > ... I (Norman) have managed to patch Erwin's changes for spheres into the > > current CVS version of tri-collider. Contact me for details on an interim > > patched tri-collider if you need accurate sphere->triangle-edge collision > > now; hopefully a new release of tri-collider will resolve all of the > > edge-related problems. ... > > This was several months ago, and I believe the current CVS version of > tri-collider fixes these problems. > > Hm, I just browsed online CVS and it seems that the changes are not yet > in CVS, but I may be mistaken. I am forwarding the e-mail to Erwin as > well. Erwin, did the Opcode 1.2 changes, barycentric coords for sphere-tri > collision, ever make it into CVS? > > Cyrus, the problem was that the old sphere-trimesh collision used a bbox > for the sphere to do the collision for a first rough-estimate of the > collision points, then from this potentially colliding checked each point > to see if it was a real collision between the triangle and the sphere. > This second-pass was inaccurate on the edges. To avoid "bumping" behavior > when spheres rolled over "seams" between adjacent (and e.g. coplanar) > polygons, the inaccurate edge collision was completely eliminated, under > the assumption that when the ball rolls off of the plane of one triangle, > it will roll onto the plane of the next triangle. This works for "concave" > type meshes without upwardly-jutting creases (e.g. ball is rolling on > the inside of a bowl), but fails for "convex" type meshes with upwardly- > jutting creases (e.g. ball rolling upwards then downwards along and over > the sharp edge of a wedge - in this case, edge contact is essential to > account for the convexity of the geometry). This two-pass routine was > then replaced by a one-pass routine using new routines in Opcode 1.2 which > accurately calculated sphere-triangle collision, including edge cases > (apparently using a barycentric coordinate approach). > > After discussing this with Erwin via private e-mail, he was kind enough > to send me some patched files to fix that one case. However, at that time, > the internal structures of the tri-collider were being rewritten, so there > was quite a bit of tedious hacking I had to do to get Erwin's new changes > working with the old tri-collider (though it does work). > > Erwin is continuing to make new progress on the tri-collider, so it > is probably not recommended to use my solution unless you need a working > sphere-trimesh collision *now*, and are willing to modify your code later > when the new version of tri-collider comes out. If you need it now, I'll > zip up my entire modified ODE source directory and send it to you, but > it is probabaly wiser to see if Erwin has updated the official source > yet rather than fiddling with my branched changes. > > BTW in case you're not already doing so, it may be a good idea to wrap your > interface to ODE within an abstract class of your own design, and only to > call ODE indirectly through your own abstract class, which means that changes > like updating the tri-collider are localized, and your application code > ideally wouldn't need to be touched if ODE gets updated. > > Cheers, > -Norman > > From erwin at vo.com Tue Oct 1 13:19:42 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:42 2002 Subject: [ODE] hierarchial spaces References: Message-ID: <007601c26987$c026b9a0$73fefea9@athlon> Catching up. IIRC its even worse than a lot of AABB tests for a large group. Its calling a LOT of specialized collision functions for a large group. As i reported earlier, i've written a library which fixes these issues. Most code has been written. I'm using it for our own apps now, but i want to fix several issues before i publically release it. And i need to fix the tricollider issues first. Erwin ----- Original Message ----- From: "David McClurg" To: Sent: Friday, September 27, 2002 03:24 Subject: [ODE] hierarchial spaces > currently, spaces don't treat geom groups any differently from other geoms. this has the following dis-advantages... > > - in a hash space, the geoms in a group don't get the same treatment as the geoms in the space. that means many more AABB tests for a large group. > - when a geom group is processed by the space, the near callback must decide whether to collide with the entire group or not at all. > > i'm using a group for all my static tri-lists so they do not self-intersect. this is different from the application suggested by the user guide (eg, a collection of geometry objects that are located together in space) but i still think it's a good use of groups. here is my recommended solution... > > - implement hash space testing in groups. perhaps flag it on a per-group level. maybe a space is really just a group! > > - as you traverse the tree of groups and geoms in dSpaceCollide(), issue the near callback at each node. that gives the caller the ability to filter out which geoms are passed to dCollide(). > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From erwin at vo.com Tue Oct 1 13:19:57 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:57 2002 Subject: [ODE] Usage of triangle collider References: <001301c26978$37c95a90$0100a8c0@vectra> Message-ID: <007701c26987$c0db1580$73fefea9@athlon> You could try the test_trilist that goes with it? Or see the Wiki pages on info how to build the tricollider. Erwin ----- Original Message ----- From: "Ivan Bolcina" To: Sent: Tuesday, October 01, 2002 20:27 Subject: [ODE] Usage of triangle collider Can anybody give me an example how to use triangle collider. Currently I am using built-in collider on boxes. bye, ivan From dalwan01 at student.umu.se Wed Oct 2 04:28:02 2002 From: dalwan01 at student.umu.se (Daniel Wallin) Date: Wed Oct 2 04:28:02 2002 Subject: [ODE] Macros In-Reply-To: Message-ID: <5.1.0.14.0.20021002132136.02f8ae98@student.umu.se> At 15:54 2002-09-30 -0700, Marco Grubert wrote: >Well, if standard macros are evil then using macros to redefine keywords is >evil-squared. I was wondering why my code would break whenever I included >dxTrilist.h : > >// MSVC fixup. >#define for if (false); else for > >I assume that the author's intent is to limit the variable scope (MSVC is >not using the current C++ standard of restring for-variables to the scope of >the loop). Please, please don't do this. The portable way is to not declare >variables in the for header but before it. > >... That is very good use of macros.. The way MSVC6.0 handles variable scope's in for-loop's is a very frustrating bug, so if you absolutely have to use it, why not fix the problem with the macro? I can't see how this macro could cause your code to break, unless you are doing something like: for (int i = 0;;) { } int b = i; in which case the fault is all yours.. From sak at cd.chalmers.se Wed Oct 2 04:59:02 2002 From: sak at cd.chalmers.se (Sten Anders Karlsson) Date: Wed Oct 2 04:59:02 2002 Subject: [ODE] Confused on the results from dJointGetFeedback on a slider. Message-ID: Hello! I use a slider that has dParamVel = 0 and dParamFMax = to make the joint not moving. I now use the dJointGetFeedback to see what forces the slider applies to the joined bodies. The odd thing is that I get different results from the dJointGetFeedback depending what axis orientation I have on the slider. This would be OK if the slider allowed movement, but it does not move. I would instead expect that a non moving joint would affect the joined bodies with forces the same way as a fixed joint. Or, now as I write this I come think of a possibility, is it maybe so that a non moving slider still has a degree of freedom, like a hinge, the bodies can rotate around the slider axis? And just an other question - that unfortunately reveals my lacking geometry abilities - but wouldn't it be correct to use the x,y,z forces from the feedback struct and just multiply (dot product) the with the slider axis vector x,y,z to get the forces that acts in the sliders axis direction, asuming the slider axis is pointing in the direction from body1 to body2 (all torques are perpendicular to the slider)? Or, what I realy want to do is to construct a spring-damper and start of by finding out what the initial load is on the spring, before I allow anything to move around, so that I can preload the spring with a good starting value. Any feedback (pun intnd.) is appreciated. -- Anders From grubertm at hotmail.com Wed Oct 2 13:06:02 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Wed Oct 2 13:06:02 2002 Subject: [ODE] Macros References: <5.1.0.14.0.20021002132136.02f8ae98@student.umu.se> Message-ID: Hmm- I though this is self-evident. Maybe not, so here's a little philosophical rant - sorry to bother the community with that. > >// MSVC fixup. > >#define for if (false); else for > That is very good use of macros.. The way MSVC6.0 handles variable scope's in > for-loop's is a very frustrating bug, This used to be the standard behavior of MSVC and GCC prior to ISO standardization- Microsofts reason for not updating this to be more compliant of course is to avoid breaking all your old code. Now I have tons of legacy code which works perfectly fine - unless I include the mentioned header file. So the exact same code works in one module (not using ODE) and fails in the next because the header changes semantics. You _can_ change the meaning of a keyword- the question is _should_ you (even if it's morally okay, or it means you can stick a badge "ISO-compliant" on your shirt)? As long as you are coding on your own this is not an issue and you can redefine your C to look like Pascal - but when trying to do a cross-platform library it's best not to mess with the user's configuration. I have run into a couple of other quirks so now I am compiling tricollider as a static library again with its own setting instead of as part of my project- even though I still think that using a "common grounds" approach would be more suitable. Thanks, Marco Grubert From ps_yumemi at yahoo.com Wed Oct 2 19:06:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Wed Oct 2 19:06:02 2002 Subject: [ODE] access violation Message-ID: <20021003020525.81009.qmail@web40503.mail.yahoo.com> hello, This is about the access violation error i got when I passed by the dspacecollide function what should i do? I got a reply that said it might have been because I didn't build in debug mode but the problem is, I did compile it in debug mode coz i was debugging my program at that moment. i'm worried that it might be the fact that i used classes and all my geomIDs are part of those classes. When I press f10 or f11 while debugging, it gives me an error and it hasn't even reached my int dCollide function yet. I am completely at a loss and I need to finish this soon. pia __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ps_yumemi at yahoo.com Fri Oct 4 02:13:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Fri Oct 4 02:13:02 2002 Subject: [ODE] another access violation Message-ID: <20021004091241.98845.qmail@web40511.mail.yahoo.com> i have an additional question. i created a car with 4 wheels. they all go through the same functions and they all get geomIDs and BodyIDs but the last wheel has a problem with geom functions like dGetGeomPosition or dSetGeomPosition. The rest are fine. It works ok with dGetBodyPosition. why is that? what can I do? Is this a reason for my spacecollide function having an error? I already tried running a simulation without it and it worked. so the problem is centered there. what should I do now? please help. thanks pia __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ivan.bolcina at volja.net Fri Oct 4 08:36:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 4 08:36:02 2002 Subject: [ODE] coldet Message-ID: <001901c26bbb$9c7d7800$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0016_01C26BCC.5B6A9FD0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello. Has anybody used coldet with ode? How to do it?=20 bye,ivan ------=_NextPart_000_0016_01C26BCC.5B6A9FD0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hello.
 
Has anybody used coldet with ode? How = to do it?=20
 
 
bye,ivan
------=_NextPart_000_0016_01C26BCC.5B6A9FD0-- From slipch Fri Oct 4 08:55:02 2002 From: slipch (slipch) Date: Fri Oct 4 08:55:02 2002 Subject: [ODE] coldet In-Reply-To: <001901c26bbb$9c7d7800$0100a8c0@vectra> References: <001901c26bbb$9c7d7800$0100a8c0@vectra> Message-ID: <7431855205.20021004185655@gsc-game.kiev.ua> Hello Ivan, Friday, October 4, 2002, 6:34:57 PM, you wrote: IB> Hello. IB> Has anybody used coldet with ode? How to do it? IB> bye,ivan I am sorry for my ignorance. What is it? -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From ivan.bolcina at volja.net Fri Oct 4 10:13:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 4 10:13:02 2002 Subject: [ODE] coldet and ode Message-ID: <001801c26bc9$18b2ba40$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0013_01C26BD9.A93281D0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi slipch, colder its collision detection library http://photoneffect.com/coldet/. = People say its very fast. I use it in my game "solar trader" at = http://users.volja.net/ibolcina/ , look under "solar trader" best regards to you too, ivan ------=_NextPart_000_0013_01C26BD9.A93281D0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi slipch,
colder its collision detection library = http://photoneffect.com/coldet/<= /A>.=20 People say its very fast. I use it in my game "solar trader" at = http://users.volja.net/ibolcina= / ,=20 look under "solar trader"
 
best regards to you too,
ivan
 
 
------=_NextPart_000_0013_01C26BD9.A93281D0-- From Arvid Norberg" Message-ID: <004b01c26bce$01af35d0$0300a8c0@hydri2000> ----- Original Message ----- From: "Marco Grubert" To: Sent: Tuesday, October 01, 2002 12:54 AM Subject: [ODE] Macros > [...] > The portable way is to not declare > variables in the for header but before it. > [...] If you would have written your code "the portable way" you wouldn't have this problem, right? My suggestion is that you fixes your code to support the standard. IMHO ODE should not be written poorly just to be backwards compatible with non-standard code. --- Arvid Norberg From p.terdiman at wanadoo.fr Fri Oct 4 12:08:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 12:08:02 2002 Subject: [ODE] coldet and ode References: <001801c26bc9$18b2ba40$0100a8c0@vectra> Message-ID: <026f01c26bd8$fb38b220$0e00000a@pierre> This is a multi-part message in MIME format. ------=_NextPart_000_026C_01C26BE9.BE85FFC0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Last time I looked at it, - ColDet only returned a single contact (i.e. it only provided RAPID's = "first contact" mode) - It was way slower than Opcode, and used a lot of ram. Of course I'm biased towards Opcode, and feel free to test and see for = yourself. But unless I missed something, current deal (ODE + Opcode) = looks better to me. Pierre ----- Original Message -----=20 From: Ivan Bolcina=20 To: ode@q12.org=20 Sent: Friday, October 04, 2002 7:10 PM Subject: [ODE] coldet and ode Hi slipch, colder its collision detection library = http://photoneffect.com/coldet/. People say its very fast. I use it in = my game "solar trader" at http://users.volja.net/ibolcina/ , look under = "solar trader" best regards to you too, ivan =20 =20 ------=_NextPart_000_026C_01C26BE9.BE85FFC0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Last time I looked at it,
- ColDet only returned a single contact = (i.e. it=20 only provided RAPID's "first contact" mode)
- It was way slower than Opcode, and = used a lot of=20 ram.
 
Of course I'm biased towards Opcode, = and feel free=20 to test and see for yourself. But unless I missed something, current = deal (ODE +=20 Opcode) looks better to me.
 
Pierre
----- Original Message -----
From:=20 Ivan=20 Bolcina
Sent: Friday, October 04, 2002 = 7:10=20 PM
Subject: [ODE] coldet and = ode

Hi slipch,
colder its collision detection = library http://photoneffect.com/coldet/<= /A>.=20 People say its very fast. I use it in my game "solar trader" at = http://users.volja.net/ibolcina= / ,=20 look under "solar trader"
 
best regards to you too,
ivan
 
 
------=_NextPart_000_026C_01C26BE9.BE85FFC0-- From orp at uni.de Fri Oct 4 13:42:01 2002 From: orp at uni.de (pro) Date: Fri Oct 4 13:42:01 2002 Subject: [ODE] coldet Message-ID: <000701c26be6$ba6d98b0$7334188d@brainpool> i use opcode or somtimes coldet for my car simulation (http://www.tu-ilmenau.de/~atzek/), and coldet (i've modified the source, now it gives all collisionpoints instead of only the first) and it is faster than opcode but my collisiondetection is only a ugly hack and doesen't work at all :( From pox at planetquake.com Fri Oct 4 13:47:03 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 13:47:03 2002 Subject: [ODE] coldet and ode In-Reply-To: <026f01c26bd8$fb38b220$0e00000a@pierre> Message-ID: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> This is slightly OT, but... I'd personally give Opcode a shot if it was more portable. (There doesn't seem to be an ANSI C/C++ target in the source). Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff in the mix) whereas ColDet compiles on just about anything, without modification. I've yet to try ColDet with ODE, but was planning on looking into the possibility in the future. A trimesh collider built into ODE itself would probably make a lot of people happy, but I'm not even sure if that's in Russ' long term plans for the library (it's obviously a hot topic on this list though). Frank. -- On Friday, October 4, 2002, at 03:05 PM, Pierre Terdiman wrote: > Last time I looked at it, > - ColDet only returned a single contact (i.e. it only provided RAPID's > "first contact" mode) > - It was way slower than Opcode, and used a lot of ram. >   > Of course I'm biased towards Opcode, and feel free to test and see for > yourself. But unless I missed something, current deal (ODE + Opcode) > looks better to me. >   > Pierre > > ----- Original Message ----- > From: Ivan Bolcina > To: ode@q12.org > Sent: Friday, October 04, 2002 7:10 PM > Subject: [ODE] coldet and ode > > Hi slipch, > colder its collision detection library > http://photoneffect.com/coldet/. People say its very fast. I use it in > my game "solar trader" at http://users.volja.net/ibolcina/ , look > under "solar trader" >   > best regards to you too, > ivan From coding at natew.com Fri Oct 4 13:56:01 2002 From: coding at natew.com (Nate W) Date: Fri Oct 4 13:56:01 2002 Subject: [ODE] coldet and ode In-Reply-To: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> Message-ID: On Fri, 4 Oct 2002, Frank C. wrote: > A trimesh collider built into ODE itself would probably make a lot of > people happy, but I'm not even sure if that's in Russ' long term plans > for the library (it's obviously a hot topic on this list though). See 1.6.3 of the user guide. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From p.terdiman at wanadoo.fr Fri Oct 4 14:03:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 14:03:02 2002 Subject: [ODE] coldet References: <000701c26be6$ba6d98b0$7334188d@brainpool> Message-ID: <032801c26be9$05c2ce00$0e00000a@pierre> > i use opcode or somtimes coldet for my car simulation > (http://www.tu-ilmenau.de/~atzek/), and coldet (i've modified the source, > now it gives all collisionpoints instead of only the first) and it is faster > than opcode I'd be interested in a demo showing that ColDet is faster. I can think of specific cases where it can happen since ColDet uses OBBs (IIRC), but otherwise that's a surprising statement. Anyone else ? Pierre From p.terdiman at wanadoo.fr Fri Oct 4 14:24:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 14:24:02 2002 Subject: [ODE] coldet and ode References: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> Message-ID: <034201c26beb$f2a54840$0e00000a@pierre> > I'd personally give Opcode a shot if it was more portable. (There > doesn't seem to be an ANSI C/C++ target in the source). Well, various people ported it to Linux and made it "more portable". On top of my head : in the F4 engine, in The Nebula Device, in Crystal Space, in ... ODE... Some more people sent me tar.gz files with makefiles and required changes to build Opcode "elsewhere". I don't know if they work well since I have a Windows box, period, but I can upload such an archive if ... Hell, let's just do it, wait 5 mn. ... Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm Words from the author : "This version is indeed different than those contained in F4 or ODE because it is only a direct linux port of version 1.2 of OPCODE, it contains nothing more, nothing less so a user does not have to deal with F4 or ODE. It is also accompanied with a so called configure script which automatically creates a makefile for the user's specific platform. It's just a question of running the configure script and automake and OPCODE is build for your platform (e.g. linux, solaris, irix etc). This is the correct way on unix flavoured oss to spread software." Questions about it ? Ask the author, please. (his mail is in the tar file) > Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff > in the mix) whereas ColDet compiles on just about anything, without > modification. Note that there's a #define to discard the ASM, and the only relevant VC++ stuff, as far as Opcode is concerned, is "__forceinline". Pierre From orp at uni.de Fri Oct 4 16:15:02 2002 From: orp at uni.de (pro) Date: Fri Oct 4 16:15:02 2002 Subject: [ODE] coldet Message-ID: <000c01c26bfc$21b42560$7334188d@brainpool> > I'd be interested in a demo showing that ColDet is faster. have a look at this http://www.tu-ilmenau.de/~atzek/kamikaze.zip there are two kamikazeversions: one for coldet and one for opcode. if you look at the colldet (collisiondetection) times in the right top corner of the screen you see, that coldet is always faster. btw: how can i reply to a thread of this mailinglist ? From pox at planetquake.com Fri Oct 4 17:05:02 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 17:05:02 2002 Subject: [ODE] coldet and ode In-Reply-To: Message-ID: I guess I'm sure now :) Frank. -- On Friday, October 4, 2002, at 09:03 AM, Nate W wrote: > On Fri, 4 Oct 2002, Frank C. wrote: > >> A trimesh collider built into ODE itself would probably make a lot of >> people happy, but I'm not even sure if that's in Russ' long term plans >> for the library (it's obviously a hot topic on this list though). > > See 1.6.3 of the user guide. :-) > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From pox at planetquake.com Fri Oct 4 17:18:01 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 17:18:01 2002 Subject: [ODE] coldet and ode In-Reply-To: <034201c26beb$f2a54840$0e00000a@pierre> Message-ID: Thanks pointing that out. Still a bit of work to get it going on my Mac, but I'm guessing a unix-style OSX build won't be much of a stretch (Classic/Carbon compatibility is another beast...) Frank. -- On Friday, October 4, 2002, at 05:21 PM, Pierre Terdiman wrote: >> I'd personally give Opcode a shot if it was more portable. (There >> doesn't seem to be an ANSI C/C++ target in the source). > > Well, various people ported it to Linux and made it "more portable". > On top > of my head : in the F4 engine, in The Nebula Device, in Crystal Space, > in > ... ODE... Some more people sent me tar.gz files with makefiles and > required > changes to build Opcode "elsewhere". > > I don't know if they work well since I have a Windows box, period, but > I can > upload such an archive if ... Hell, let's just do it, wait 5 mn. > > ... > > Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm > > Words from the author : > > "This version is indeed different than those contained in F4 or ODE > because it is only a direct linux port of version 1.2 of OPCODE, it > contains nothing more, nothing less so a user does not have to deal > with > F4 or ODE. It is also accompanied with a so called configure script > which automatically creates a makefile for the user's specific > platform. > It's just a question of running the configure script and automake and > OPCODE is build for your platform (e.g. linux, solaris, irix etc). This > is the correct way on unix flavoured oss to spread software." > > Questions about it ? Ask the author, please. (his mail is in the tar > file) > >> Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff >> in the mix) whereas ColDet compiles on just about anything, without >> modification. > > Note that there's a #define to discard the ASM, and the only relevant > VC++ > stuff, as far as Opcode is concerned, is "__forceinline". > > Pierre > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From bruce at cubik.org Fri Oct 4 17:35:02 2002 From: bruce at cubik.org (Bruce Mitchener) Date: Fri Oct 4 17:35:02 2002 Subject: [ODE] coldet and ode References: Message-ID: <3D9E34C9.60103@cubik.org> Frank, Frank C. wrote: > Thanks pointing that out. Still a bit of work to get it going on my Mac, > but I'm guessing a unix-style OSX build won't be much of a stretch > (Classic/Carbon compatibility is another beast...) With the Nebula Device, we're still back on Opcode 1.1, but should move to 1.2 soon (within a couple of months). The work to get Opcode 1.1 running on OS X once it was already running on Linux was pretty straight forward, largely a matter of handling some missing math functions. If you'd like to discuss that further, feel free to drop me an email off-list. Cheers, - Bruce From p.terdiman at wanadoo.fr Sat Oct 5 00:33:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Sat Oct 5 00:33:02 2002 Subject: [ODE] coldet References: <000c01c26bfc$21b42560$7334188d@brainpool> Message-ID: <005601c26c41$1a312e60$0e00000a@pierre> > have a look at this http://www.tu-ilmenau.de/~atzek/kamikaze.zip > there are two kamikazeversions: one for coldet and one for opcode. > if you look at the colldet (collisiondetection) times in the right top > corner of the screen you see, that coldet is always faster. Interesting. Difficult to tell if it's normal or not without more info (especially since you modified ColDet to report all contacts). Maybe the OBBs are just better in such cases. Could you mail me off-list a code snippet showing the way you're using Opcode ? Maybe there's something weird there. (I remember some people reporting the same conclusion : after a while I found they were building the Opcode trees each frame). BTW, are you using mesh-mesh CD or sphere-mesh ? If you're using mesh-mesh, did you try RAPID ? If ColDet runs faster thanks to OBBs, then RAPID might run even faster (IIRC it was faster than ColDet overall. But at this point I may want to test those libs again :) Pierre From ivan.bolcina at volja.net Sat Oct 5 02:33:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Sat Oct 5 02:33:02 2002 Subject: [ODE] coldet Message-ID: <003201c26c52$2b3b7470$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_002F_01C26C62.EE5C5AE0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi. I looks to me that opcode has more support and is used by more = programmers, and coldet is at halt. I guess I will switch to opcode. I = just wish ode would have it integerated in it, since i spent half of = last night building ode with it, and no sucess. There are also several = documents how to do it, which one is right?(Address please?) I also don't understand why there is no support for mesh-mesh collision = in ode port of opcode. Whats so problematic about depth penetration? = Can't be an aproximation be enought.Are there any plans to do it. I am sorry for all those questions, but I am still new to wonderful = world of ode and friends. bye,ivan ------=_NextPart_000_002F_01C26C62.EE5C5AE0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
 
I looks to me that opcode has more = support and is=20 used by more programmers, and coldet is at halt. I guess I will switch = to=20 opcode. I just wish ode would have it integerated in it, since i spent = half of=20 last night building ode with it, and no sucess. There are also several = documents=20 how to do it, which one is right?(Address please?)
 
 I also don't understand why there = is no=20 support for mesh-mesh collision in ode port of opcode. Whats so = problematic=20 about depth penetration? Can't be an aproximation be enought.Are there = any plans=20 to do it.
 
I am sorry for all those questions, = but  I am=20 still new to wonderful world of ode and friends.
 
bye,ivan
------=_NextPart_000_002F_01C26C62.EE5C5AE0-- From bongard at ifi.unizh.ch Sat Oct 5 06:24:01 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Sat Oct 5 06:24:01 2002 Subject: [ODE] Dynamically changing the rendering... Message-ID: Hi, Can someone tell me how I can dynamically suppress OpenGL rendering, for example by supplying "-null" at the command prompt? Thanks, Josh -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From benny at kramekweb.com Sat Oct 5 08:38:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Sat Oct 5 08:38:02 2002 Subject: [ODE] Dynamically changing the rendering... References: Message-ID: <3D9F0360.2060009@kramekweb.com> Joshua Bongard wrote: > Hi, > Can someone tell me how I can dynamically suppress OpenGL rendering, for > example by supplying "-null" at the command prompt? I don't understand the question. Are you talking about the drawstuff companion for ode? From Dominique at SavageSoftware.com.au Sat Oct 5 08:54:01 2002 From: Dominique at SavageSoftware.com.au (Dominique Louis) Date: Sat Oct 5 08:54:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... Message-ID: <3D9F0B29.10207@SavageSoftware.com.au> Hi All, Where would be a good place to start when investigating how to implement collision between a car and a skeletally animated model, probably in MilkShake 3D format. Thanks, Dominique. -- http://www.DelphiGamer.com := for all your Object Pascal game development needs; http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME := Home of JEDI-SDL; Cross-platform game development with Pascal, has never been easier. From bongard at ifi.unizh.ch Sat Oct 5 09:39:02 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Sat Oct 5 09:39:02 2002 Subject: [ODE] Dynamically changing the rendering... In-Reply-To: <3D9F0360.2060009@kramekweb.com> Message-ID: Yes; can I bracket the drawstuff in an if-else so that it doesn't always open an OpenGL window? On Sat, 5 Oct 2002, Benny Kramek wrote: > Joshua Bongard wrote: > > Hi, > > Can someone tell me how I can dynamically suppress OpenGL rendering, for > > example by supplying "-null" at the command prompt? > > I don't understand the question. Are you talking about the drawstuff > companion for ode? > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From erwin at vo.com Sat Oct 5 12:14:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Sat Oct 5 12:14:02 2002 Subject: [ODE] Macros References: Message-ID: <00dc01c26ca3$4f3026e0$73fefea9@athlon> Why are you including dxTriList.h in the first place?? The idea is that you include dTriList.h in your external code. Erwin ----- Original Message ----- From: "Marco Grubert" To: Sent: Tuesday, October 01, 2002 00:54 Subject: [ODE] Macros > Well, if standard macros are evil then using macros to redefine keywords is > evil-squared. I was wondering why my code would break whenever I included > dxTrilist.h : > > // MSVC fixup. > #define for if (false); else for > > I assume that the author's intent is to limit the variable scope (MSVC is > not using the current C++ standard of restring for-variables to the scope of > the loop). Please, please don't do this. The portable way is to not declare > variables in the for header but before it. > > BTW the CVS tri-collider revision is outdated (06/24/02) > > Thank you, > Marco Grubert <- exhausted after trying to get ODE with tricollider to > work again > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From anselm at hook.org Sat Oct 5 13:03:01 2002 From: anselm at hook.org (Anselm Hook) Date: Sat Oct 5 13:03:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... In-Reply-To: <3D9F0B29.10207@SavageSoftware.com.au> Message-ID: Hi Dominique, One way to add collision information to a character is to do it by hand; to write actual code that manufactures hulls, joints and bodies. The position of the body will drive the position of the bones in your character and that in turn will presumably drive the rendering of the skin. (Your challenge is mostly just describing a good data model. Once you have that ODE should easily be able to do the rest.) It can however be very time consuming and error prone to attempt to describe any system of even reasonable complexity using source code because the iteration time is so slow and there is no visual feedback to help correct errors in objects placement. Consider that you will have at least 13 joints and 13 bodies and 13 collision hulls - each of these objects has several parameters. These parameters all interact and the sum of the system can be extraordinarily complex. Finding islands of stability with all of these knobs and dials that you can turn at random can be pretty tiring... change any cosmological constant and your entire system explodes in an instant. Dynamics libraries are mostly unusable for scenes of any complexity without some kind of help here. A better way is to use a modelling package. If you have a complex geometry that you are editing in a modelling package - you may want to add specially tagged cylinders, boxes or spheres to your skeleton in that environment. At export time extract those details and pipe them to your collision handler. This is probably less code than the above and is better. Alternatively you could perhaps synthesize reasonable collision hulls from your skeletal data such as assuming a cylinder of certain radius given bone length - or by doing a coarse bounding check on each group of bone associated vertices and creating a collision hull dynamically. BTW You mean Milkshape 3d right? You'll need to specify bodies and joint constraints as well. If you were using a commercial physics library such as Havok then they have special extensions to 3DSMAX and other tools to allow you to visually specify all of these kinds of details. Unfortunately nothing like that exists yet in the public domain (although likely Blender will have such features soon). Right now you have to invent your own scheme or actually describe all of the joints, bodies and collision surfaces completely by hand - which can be extraordinarily tedious and error prone. Depending on your budget I'd recommend spending some time devising a data driven model that modellers could use to design not only the visual form but also the underlying function. You may even be able to use something like havok and 3dsmax to generate your data model but then actually drive the system with ODE. This would be an amusing hack since your runtime could remain open source. This guy did pretty good - probably doing it by hand - so for a single known quantity it may not be that bad: http://taat.fi/taat/porrasturvat/ - a On Sat, 5 Oct 2002, Dominique Louis wrote: > Hi All, > Where would be a good place to start when investigating how to > implement collision between a car and a skeletally animated model, > probably in MilkShake 3D format. > > Thanks, > > > Dominique. > -- > http://www.DelphiGamer.com := for all your Object Pascal game > development needs; > http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME := Home of JEDI-SDL; > Cross-platform game development with Pascal, has never been easier. > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From Nguyen Binh Sat Oct 5 20:26:03 2002 From: Nguyen Binh (Nguyen Binh) Date: Sat Oct 5 20:26:03 2002 Subject: Re[2]: [ODE] coldet In-Reply-To: <003201c26c52$2b3b7470$0100a8c0@vectra> References: <003201c26c52$2b3b7470$0100a8c0@vectra> Message-ID: <13557354421.20021006101234@glassegg.com> I had tried many collision detect package like RAPID, Coldet , Opcode (1.1). IMHO , Opcode is faster overall and it's well-designed . My only problem with Opcode is Pierre write code in 1600x1200 screen. :-) . -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From martin at metahuman.org Sun Oct 6 20:16:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Sun Oct 6 20:16:02 2002 Subject: [ODE] Dynamically changing the rendering... References: Message-ID: <3DA0FC35.A5943B60@metahuman.org> Hey Josh, Good to see you here, I just got back from IROS in Lausanne. The OpenGL library, "drawstuff," is separate from the physics library, "ode." When using drawstuff, you call dStepWorld() from your own function, called simLoop() in the tests. simLoop() is called automatically by drawstuff every frame. When you don't use drawstuff, you just call dStepWorld() yourself in a loop. It would be easy to put these into a single executable, although I use two different executables personally. Check out the source code to the examples for more details. - Martin Joshua Bongard wrote: > > Yes; can I bracket the drawstuff in an if-else so that it doesn't always > open an OpenGL window? > > On Sat, 5 Oct 2002, Benny Kramek wrote: > > > Joshua Bongard wrote: > > > Hi, > > > Can someone tell me how I can dynamically suppress OpenGL rendering, for > > > example by supplying "-null" at the command prompt? > > > > I don't understand the question. Are you talking about the drawstuff > > companion for ode? From slipch Mon Oct 7 01:47:02 2002 From: slipch (slipch) Date: Mon Oct 7 01:47:02 2002 Subject: [ODE] coldet and ode In-Reply-To: <001801c26bc9$18b2ba40$0100a8c0@vectra> References: <001801c26bc9$18b2ba40$0100a8c0@vectra> Message-ID: <485919321.20021007114859@gsc-game.kiev.ua> Hello Ivan, Friday, October 4, 2002, 8:10:11 PM, you wrote: IB> Hi slipch, IB> colder its collision detection library http://photoneffect.com/coldet/. People say its very fast. I use it in my game "solar trader" at http://users.volja.net/ibolcina/ , look under "solar trader" It is very interesting. I'll try to use it. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Mon Oct 7 02:00:02 2002 From: slipch (slipch) Date: Mon Oct 7 02:00:02 2002 Subject: [ODE] CCylinder orientation Message-ID: <256729045.20021007120229@gsc-game.kiev.ua> Hello ODE, How does CCylinder oriented? When I look at collision functions it seems cylinder axis is along axis Z. But when it created it is along OY. I fail to find where the orientation changed. I created cylinder class and with cylinder axis along OY. When I replace CCylinder with Cylinder in my model everything works right. May someone explain how can it happen? -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From thubba at gmx.net Mon Oct 7 03:04:02 2002 From: thubba at gmx.net (Michael Scharvogel) Date: Mon Oct 7 03:04:02 2002 Subject: [ODE] Hinge problem Message-ID: <009301c26de8$a5f2fac0$c36abb84@tig> hi folks... I build up a small test robot. As a matter of fact i am far from that and still trying to build the robot model. Like with an ant the legs shall be segmented. For a first try I have six legs but only two hinges per leg. The first part of each leg is connected to the body and its hinge can move between -45 and 45 degrees (yes I am using rad for the ode stuff :-) The next part of each leg can move up and down. The corresponding hinge is limited by 0 degree as low stop and 70 degree as high stop. I build the whole thing up at a hight of 2 and let it drop down on the floor. It's working just fine. But after lying on the floor for a short while, my bug seems to get bored and stands up... That would be just fine if only I had told it to do so... It seems to me, that the up / down hinge try to achiev their hi limit position... But why ???? Any comments on that ? cya&bfn, mike. From benny at kramekweb.com Mon Oct 7 07:44:01 2002 From: benny at kramekweb.com (Benny Kramek) Date: Mon Oct 7 07:44:01 2002 Subject: [ODE] Hinge problem References: <009301c26de8$a5f2fac0$c36abb84@tig> Message-ID: <3DA1A78C.10808@kramekweb.com> You probably know this already, but when you anchor the joint, then that relative orientation of the bodies is considered 0. Michael Scharvogel wrote: > hi folks... > > I build up a small test robot. As a matter of fact i am far from that and > still trying to build the robot model. Like with an ant the legs shall be > segmented. For a first try I have six legs but only two hinges per leg. > The first part of each leg is connected to the body and its hinge can move > between -45 and 45 degrees (yes I am using rad for the ode stuff :-) > > The next part of each leg can move up and down. The corresponding hinge is > limited by 0 degree as low stop and 70 degree as high stop. > I build the whole thing up at a hight of 2 and let it drop down on the > floor. > It's working just fine. But after lying on the floor for a short while, my > bug seems to get bored and stands up... > That would be just fine if only I had told it to do so... > It seems to me, that the up / down hinge try to achiev their hi limit > position... > But why ???? > > Any comments on that ? > > cya&bfn, mike. > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From ivan.bolcina at volja.net Mon Oct 7 14:36:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Mon Oct 7 14:36:02 2002 Subject: [ODE] opcode Message-ID: <002401c26e49$6ef9fc60$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0021_01C26E5A.2E2D7C00 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. Well, thanx for a nice = library. Any news about "opcode - ode - triangle collider - mesh to mesh" stuff? = Any plans? What are alternatives?=20 bye,ivan ------=_NextPart_000_0021_01C26E5A.2E2D7C00 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Pierre,
I switched from coldet to opcode, = and you were=20 right, it is faster, specially, if I am colliding two complex objects. = Well,=20 thanx for a nice library.
 
Any news about "opcode - ode - triangle = collider -=20 mesh to mesh" stuff? Any plans? What are alternatives? =
 
bye,ivan
------=_NextPart_000_0021_01C26E5A.2E2D7C00-- From p.terdiman at wanadoo.fr Mon Oct 7 19:22:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 7 19:22:01 2002 Subject: [ODE] opcode References: <002401c26e49$6ef9fc60$0100a8c0@vectra> Message-ID: <048501c26e71$305f31a0$0e00000a@pierre> 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
Pierre,
I switched from coldet to = opcode, and you=20 were right, it is faster, specially, if I am colliding two complex=20 objects.
 
Cool :)
Then it must depend on the app / = scenario, since=20 "pro" 's conclusion was different.
 
No real surprise : as often when it = comes to=20 optimizing, one has to test and see for himself...
 
Now I'd like to point something = out : Opcode's=20 goal was NOT to go faster than X or Y, the goal was to use less=20 memory...
 
So beware : IIRC in ColDet 1.1 the node = classes use=20 virtual methods, which wastes a lot of ram to begin with.
 
 
Any news about "opcode - ode - = triangle=20 collider - mesh to mesh" stuff? Any plans? What are alternatives?=20
 
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 the result to run in realtime.
 
Alternatives :
 
- decompose the mesh in convex parts=20 (SWIFT++)
- then compute penetration depth = between convex=20 polytopes (SOLID 3.0 or DEEP)
 
or
 
- use a composite object = approximatively bounding=20 each mesh
- then use standard primitive-primitive = collision=20 routines
 
Second version is easier, probably runs = faster, and=20 most games (if not all) do that.
 
BTW it has already been discussed - = check the=20 archives.
 
Pierre
------=_NextPart_000_03E9_01C26E6E.81B55DC0-- From p.terdiman at wanadoo.fr Mon Oct 7 19:23:43 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 7 19:23:43 2002 Subject: Re[2]: [ODE] coldet References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> Message-ID: <048901c26e71$31d81600$0e00000a@pierre> >My only problem with Opcode is Pierre write >code in 1600x1200 screen. :-) . I plead guilty. From grubertm at hotmail.com Mon Oct 7 20:22:01 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Mon Oct 7 20:22:01 2002 Subject: [ODE] Inertia & tumbling objects Message-ID: Hello, maybe someone can explain why the following thing happens: I create a body which is slightly rotated (1 degree around yaw/z axis) and set it's inertia tensor: dm.setBox( fMass/(x*y*z), x, y,z ); then apply a constant torque of 5000 units around the x-axis. after a few seconds of simulated time the box starts flipping around and a few more seconds later it comes to a complete stop. This happens when x,y,z are set to 40,20,10 (or similar). If I make the cube's edges equal, or set the initial orientation to 0 degrees the cube keeps on spinning indefinitely. So my questions are: why does the rotation suddenly stop? shouldn't this rotation lead to a rotation about a stable axis? Regards, Marco Grubert From slipch Tue Oct 8 00:45:02 2002 From: slipch (slipch) Date: Tue Oct 8 00:45:02 2002 Subject: Re[3]: [ODE] coldet In-Reply-To: <13557354421.20021006101234@glassegg.com> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> Message-ID: <1612357489.20021008104703@gsc-game.kiev.ua> Hello Nguyen, Sunday, October 6, 2002, 6:12:34 AM, you wrote: NB> I had tried many collision detect package like RAPID, Coldet , NB> Opcode (1.1). IMHO , Opcode is faster overall and it's NB> well-designed . My only problem with Opcode is Pierre write I just look through coldet site. Do I understand right - it can detect contact points (and may be contact normals)? If it can then it is not like Opcode. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From Nguyen Binh Tue Oct 8 05:05:03 2002 From: Nguyen Binh (Nguyen Binh) Date: Tue Oct 8 05:05:03 2002 Subject: Re[4]: [ODE] coldet In-Reply-To: <1612357489.20021008104703@gsc-game.kiev.ua> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> <1612357489.20021008104703@gsc-game.kiev.ua> Message-ID: <17328684015.20021008184833@glassegg.com> s> I just look through coldet site. s> Do I understand right - it can detect contact points (and may be s> contact normals)? s> If it can then it is not like Opcode. Yes, sure Coldet can detect contact points (contacts normal is another case, but I think you can have normals from points on mesh) Then how is Opcode and coldet different? Sorry , I can't catch you in this... -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From slipch Tue Oct 8 05:47:02 2002 From: slipch (slipch) Date: Tue Oct 8 05:47:02 2002 Subject: Re[5]: [ODE] coldet In-Reply-To: <10020202920.20021008154429@gsc-game.kiev.ua> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> <1612357489.20021008104703@gsc-game.kiev.ua> <17328684015.20021008184833@glassegg.com> <10020202920.20021008154429@gsc-game.kiev.ua> Message-ID: <11220506446.20021008154932@gsc-game.kiev.ua> Hello Nguyen, Tuesday, October 8, 2002, 2:48:33 PM, you wrote: NB> Yes, sure Coldet can detect contact points (contacts normal is NB> another case, but I think you can have normals from points on mesh) NB> Then how is Opcode and coldet different? Sorry , I can't catch you NB> in this... I am sorry. I rather new in it and do not know Opcode properly. I decided that it can only be used to find intersecting triangles not contact points. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Tue Oct 8 05:54:01 2002 From: slipch (slipch) Date: Tue Oct 8 05:54:01 2002 Subject: [ODE] CCylinder Message-ID: <4520922044.20021008155628@gsc-game.kiev.ua> Hello ODE, Can some one tell me along which axis CCylinder aligned when created axis-Z or axis-Y? -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From p.terdiman at wanadoo.fr Tue Oct 8 06:10:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Tue Oct 8 06:10:02 2002 Subject: Re[6]: [ODE] coldet References: <003201c26c52$2b3b7470$0100a8c0@vectra><13557354421.20021006101234@glassegg.com><1612357489.20021008104703@gsc-game.kiev.ua><17328684015.20021008184833@glassegg.com><10020202920.20021008154429@gsc-game.kiev.ua> <11220506446.20021008154932@gsc-game.kiev.ua> Message-ID: <015801c26ecb$a239ab20$0e00000a@pierre> > NB> Yes, sure Coldet can detect contact points (contacts normal is > NB> another case, but I think you can have normals from points on mesh) > > NB> Then how is Opcode and coldet different? Sorry , I can't catch you > NB> in this... > > I am sorry. I rather new in it and do not know Opcode properly. > I decided that it can only be used to find intersecting triangles > not contact points. And you would be right : I just report intersecting triangles indeed. But (I think) the point is, slapping a dedicated triangle-triangle routine on returned pairs is probably best done in the client code, since many apps will probably need different ways to drive their collision response. That's what ColDet does, using two different triangle-triangle overlap codes, depending on the situation. The fast one is the standard routine from Tomas Möller. That's also what I'm using. The slow one (that computes a collision point) is named "MyTriTri.c" in ColDet. It would be unfortunate to use it in the generic case since it's slower. But you can grab it and use it as well on Opcode's returned pairs, maybe (modulo license troubles). Anyway I'm not sure it's really that useful. Returning a single collision point is dubious, and that's not even the problem - the problem is the penetration depth, at least for ODE. [Now, right, 100% Baraff-like simulators don't need this.] Well, various libs, various strategies, see for your particular needs. Pierre From I.Munro at herts.ac.uk Tue Oct 8 06:31:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Tue Oct 8 06:31:02 2002 Subject: [ODE] CCylinder Message-ID: > Can some one tell me along which axis CCylinder aligned when > created axis-Z or axis-Y? z axis. From orp at uni.de Tue Oct 8 06:42:02 2002 From: orp at uni.de (pro) Date: Tue Oct 8 06:42:02 2002 Subject: [ODE] commercial SOLID3.0 will use ODE Message-ID: <000701c26ed0$d2dbac60$7334188d@brainpool> The upcoming version 4.0 will feature: a.. Coupling to ODE, a free open source physics engine ........ http://www.libsolid.com this could be interesting From bry03redskins at hotmail.com Tue Oct 8 07:52:01 2002 From: bry03redskins at hotmail.com (Bryan Hudock) Date: Tue Oct 8 07:52:01 2002 Subject: [ODE] display problem Message-ID: I have succesfully installed and used Open Dynamics Engine on a linux machine (Red Hat 7.0). However, once a program using the library is exited from, all further ODE programs fail to display. The simulation appears to still be functional, but the display is a black screen. The only way I currently have to solve the problem is to exit and rerun X-Windows each time I want to run a program. If you have any insight into this problem it would be greatly appreciated. Thank you for your time. _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From slipch Tue Oct 8 07:55:02 2002 From: slipch (slipch) Date: Tue Oct 8 07:55:02 2002 Subject: Re[2]: [ODE] CCylinder In-Reply-To: References: Message-ID: <4228173581.20021008175719@gsc-game.kiev.ua> Hello Ian, Tuesday, October 8, 2002, 4:26:14 PM, you wrote: >> Can some one tell me along which axis CCylinder aligned when >> created axis-Z or axis-Y? IM> z axis. It is what is written in documentation Then why when I create CCylinder it appears aligned along Y axis. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From rtonge90 at yahoo.co.uk Tue Oct 8 08:09:01 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Tue Oct 8 08:09:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... Message-ID: <20021008150831.4556.qmail@web14913.mail.yahoo.com> Hi Andy, Dominique >It can however be very time consuming and error prone >to attempt to describe any system of even reasonable >complexity using source code. Yes, setting up skeletons in source is hard. Using a physics authoring tool is much easier. >You may even be able to use something like havok and >3dsmax to generate your data model but then actually >drive the system with ODE. This would be an amusing >hack since your runtime could remain open source. Yes, using Havok authored data to drive the ODE runtime is an interesting idea, however I can see a few problems. 1 3DSmax and the Havok plugin (or the new combined product) are expensive if you dont already own them. 2 The Havok physics model is quite different from the ODE physics model, so any tuning parameters you set at authoring time wont necessarily have the same effect at run time. Some joints parameters in Havok might not have equivalents in ODE. 3 The Havok file format is binary, so you would have to reverse engineer it. Have any of you guys seen KAT, the physics authoring tool that comes free with Unreal Tournament 2003? It is a standalone tool, so you dont need max. It was specifically designed for authoring physics, so its interface is much simpler than max's. Its file format is an XML formatted text file, so you wouldnt need to reverse engineer it to use it with ODE. It comes with all the physics data used to make UT2003 in the XML format which you are free to edit. Also, it is based on MathEngine Karma, which has similar ancestry to ODE. This means that many tuning parameters behave in the same way. For example ERP and CFM in ODE are exactly the same as gamma and epsilon in Karma. This means that a skeleton tuned in KAT should behave similarly in ODE. Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From slipch Tue Oct 8 08:13:01 2002 From: slipch (slipch) Date: Tue Oct 8 08:13:01 2002 Subject: Re[3]: [ODE] CCylinder In-Reply-To: <4228173581.20021008175719@gsc-game.kiev.ua> References: <4228173581.20021008175719@gsc-game.kiev.ua> Message-ID: <10729212845.20021008181439@gsc-game.kiev.ua> Hello slipch, Tuesday, October 8, 2002, 5:57:19 PM, you wrote: IM>> z axis. s> It is what is written in documentation s> Then why when I create CCylinder it appears aligned along Y axis. I have to apologize. I am not right it is only drawn aligned along Y-axis. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From I.Munro at herts.ac.uk Tue Oct 8 08:27:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Tue Oct 8 08:27:02 2002 Subject: Re[2]: [ODE] CCylinder Message-ID: > > IM> z axis. > > It is what is written in documentation > Then why when I create CCylinder it appears aligned along Y axis. I don't know what it says in the documentation, but when compiled under vc7 all the CCyclinders I generate (and my app only uses CCylinders) are initially aligned on the z axis. Sorry, I haven't a clue why yours come out on the Y axis! Ian From coding at natew.com Tue Oct 8 11:19:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 8 11:19:01 2002 Subject: [ODE] CCylinder In-Reply-To: <4520922044.20021008155628@gsc-game.kiev.ua> Message-ID: On Tue, 8 Oct 2002, slipch wrote: > Can some one tell me along which axis CCylinder aligned when > created axis-Z or axis-Y? I don't know off the top of my head, but have a look at the test_buggy sample app. It creates capped cylinders for the wheel's collision hulls, it should be evident from the source code what axis they're on to begin with. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Tue Oct 8 11:31:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 8 11:31:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... In-Reply-To: <20021008150831.4556.qmail@web14913.mail.yahoo.com> Message-ID: On Tue, 8 Oct 2002, [iso-8859-1] Richard Tonge wrote: > Yes, setting up skeletons in source is hard. Using a > physics authoring tool is much easier. I happen to have written something like that using ODE: http://www.natew.com/juice/ The file format is a trivial dialect of XML, and I'll be happy to help if you have trouble making use of it. It runs under Windows, I hope that's not a problem. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Tue Oct 8 15:32:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Tue Oct 8 15:32:02 2002 Subject: [ODE] geom group patch Message-ID: now that i'm using geom groups more, i had to add a query function to see if a geom was in a group int dGeomGroupQuery (dxGeom *g, dxGeom *x) { dUASSERT (g && g->_class->num == dGeomGroupClass,"argument not a geomgroup"); dxGeomGroup *gr = (dxGeomGroup*) CLASSDATA(g); for (int i=0; i < gr->parts.size(); i++) { if (gr->parts[i] == x) { return 1; } } return 0; } From slipch Wed Oct 9 00:22:01 2002 From: slipch (slipch) Date: Wed Oct 9 00:22:01 2002 Subject: Re[2]: [ODE] CCylinder In-Reply-To: References: Message-ID: <1911113781.20021009102331@gsc-game.kiev.ua> Hello Nate, NW> I don't know off the top of my head, but have a look at the test_buggy NW> sample app. It creates capped cylinders for the wheel's collision hulls, NW> it should be evident from the source code what axis they're on to begin NW> with. In my version of test_buggy spheres used for wheels. Meshes created for cylinders in test_buggy with Open Engine are orthogonal to Ode cylinders so aligned along axis - Y. That what misled me. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Wed Oct 9 00:51:01 2002 From: slipch (slipch) Date: Wed Oct 9 00:51:01 2002 Subject: [ODE] always diabled body Message-ID: <192913489.20021009105330@gsc-game.kiev.ua> Hello ODE, Can I create a Body which do not ever be enabled, even when connected to an enabled body by a Joint. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From erwin at vo.com Wed Oct 9 01:14:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 01:14:01 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua> Message-ID: <001001c26f6b$d601ef30$8800a8c0@erwin> What is the purpose of that body then? Erwin ----- Original Message ----- From: "slipch" To: Sent: Wednesday, October 09, 2002 9:53 AM Subject: [ODE] always diabled body > Hello ODE, > > Can I create a Body which do not ever be enabled, even when > connected to an enabled body by a Joint. > > -- > Best regards, > slipch mailto:slipch@gsc-game.kiev.ua > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From slipch Wed Oct 9 02:22:02 2002 From: slipch (slipch) Date: Wed Oct 9 02:22:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <001001c26f6b$d601ef30$8800a8c0@erwin> References: <192913489.20021009105330@gsc-game.kiev.ua> <001001c26f6b$d601ef30$8800a8c0@erwin> Message-ID: <1428374912.20021009122432@gsc-game.kiev.ua> Hello Erwin, Wednesday, October 9, 2002, 11:14:05 AM, you wrote: >> Can I create a Body which do not ever be enabled, even when >> connected to an enabled body by a Joint. >> EdV> What is the purpose of that body then? EdV> Erwin I want to hook enabled body to some point and drag it during simulation simply setting the point position. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From slipch Wed Oct 9 04:32:02 2002 From: slipch (slipch) Date: Wed Oct 9 04:32:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <3DA417C9.3070109@kramekweb.com> References: <192913489.20021009105330@gsc-game.kiev.ua> <001001c26f6b$d601ef30$8800a8c0@erwin> <1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> Message-ID: <17816151855.20021009143409@gsc-game.kiev.ua> Hello Benny, Wednesday, October 9, 2002, 2:49:29 PM, you wrote: >> >>>> Can I create a Body which do not ever be enabled, even when >>>> connected to an enabled body by a Joint. >>>> >>> >> >> EdV> What is the purpose of that body then? >> >> EdV> Erwin >> >> I want to hook enabled body to some point and drag it during >> simulation simply setting the point position. >> BK> You can give your body a very large mass and disable gravity on it. Then BK> it will move very little on it's own, and you can move it around with BK> dBodySetPos() Works perfect. Thank you very much. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From p.terdiman at wanadoo.fr Wed Oct 9 06:09:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 06:09:02 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> Message-ID: <00b601c26f94$ac7e5a80$0e00000a@pierre> > BK> You can give your body a very large mass and disable gravity on it. Then > BK> it will move very little on it's own, and you can move it around with > BK> dBodySetPos() > > Works perfect. Thank you very much. Usually a null mass is used to mark fixed bodies. Does it work in ODE ? Pierre From erwin at vo.com Wed Oct 9 06:58:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 06:58:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> Message-ID: <005f01c26f9b$d761a570$8800a8c0@erwin> No. But i dont see the point in creating a fixed body anyway. Just DONT use a body if you dont want dynamics. Erwin ----- Original Message ----- From: "Pierre Terdiman" To: Sent: Wednesday, October 09, 2002 3:06 PM Subject: Re: Re[2]: [ODE] always diabled body > > BK> You can give your body a very large mass and disable gravity on it. > Then > > BK> it will move very little on it's own, and you can move it around with > > BK> dBodySetPos() > > > > Works perfect. Thank you very much. > > Usually a null mass is used to mark fixed bodies. Does it work in ODE ? > > Pierre > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From p.terdiman at wanadoo.fr Wed Oct 9 07:17:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 07:17:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <010401c26f9e$24e99940$0e00000a@pierre> > No. But i dont see the point in creating a fixed body anyway. Just DONT use > a body if you dont want dynamics. That's a common thing nonetheless, say for planes. A ground plane is fixed, yet you want your bodies to collide with it. Or for a flag, when the cloth patch is attached to a fixed base. (etc) Pierre From martin at metahuman.org Wed Oct 9 07:25:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Wed Oct 9 07:25:02 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <3DA43BF9.8D81E460@metahuman.org> Erwin de Vries wrote: > > No. But i dont see the point in creating a fixed body anyway. Just DONT use > a body if you dont want dynamics. What the poster is trying to do is to control a body by putting a joint on it, and moving the location of the half of the joint that's not on the body. They're doing this by creating a second body, attaching the joint to it, and moving it. IIRC, the ODE API seems to treat joints as having a single location, rather than two locations. Of course, most joints try to keep those two locations the same, but in practice they'll rarely have exactly the same location. Perhaps the API could be extended so you could set the location of each half of a joint independently? Or is there already a way to do this that I've missed? - Martin From slipch Wed Oct 9 07:34:02 2002 From: slipch (slipch) Date: Wed Oct 9 07:34:02 2002 Subject: Re[4]: [ODE] always diabled body In-Reply-To: <005f01c26f9b$d761a570$8800a8c0@erwin> References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <327081641.20021009173618@gsc-game.kiev.ua> Hello Erwin, Wednesday, October 9, 2002, 4:57:41 PM, you wrote: EdV> No. But i dont see the point in creating a fixed body anyway. Just DONT use EdV> a body if you dont want dynamics. EdV> Erwin I need body because I need to attach enabled body to something that I can move during simulation setting its position. EdV> ----- Original Message ----- EdV> From: "Pierre Terdiman" EdV> To: EdV> Sent: Wednesday, October 09, 2002 3:06 PM EdV> Subject: Re: Re[2]: [ODE] always diabled body >> > BK> You can give your body a very large mass and disable gravity on it. >> Then >> > BK> it will move very little on it's own, and you can move it around EdV> with >> > BK> dBodySetPos() >> > >> > Works perfect. Thank you very much. >> >> Usually a null mass is used to mark fixed bodies. Does it work in ODE ? >> >> Pierre >> >> _______________________________________________ >> ODE mailing list >> ODE@q12.org >> http://q12.org/mailman/listinfo/ode >> >> -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From erwin at vo.com Wed Oct 9 07:39:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 07:39:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> <010401c26f9e$24e99940$0e00000a@pierre> Message-ID: <006d01c26fa1$94866a50$8800a8c0@erwin> In those cases you only create a geometry. Without a body. Erwin ----- Original Message ----- From: "Pierre Terdiman" To: Sent: Wednesday, October 09, 2002 4:14 PM Subject: Re: Re[2]: [ODE] always diabled body > > No. But i dont see the point in creating a fixed body anyway. Just DONT > use > > a body if you dont want dynamics. > > That's a common thing nonetheless, say for planes. A ground plane is fixed, > yet you want your bodies to collide with it. > > Or for a flag, when the cloth patch is attached to a fixed base. > > (etc) > > Pierre > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From p.terdiman at wanadoo.fr Wed Oct 9 07:46:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 07:46:01 2002 Subject: Re[2]: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> <010401c26f9e$24e99940$0e00000a@pierre> <006d01c26fa1$94866a50$8800a8c0@erwin> Message-ID: <016601c26fa2$3251c540$0e00000a@pierre> > In those cases you only create a geometry. Without a body. Ah, perhaps. Ok. Well, it only shows I'm not actually using ODE :) I think it works with null masses in Havok nonetheless. Pierre PS: let's welcome a new player after Mathengine, Havok, ODE, etc : www.novodex.com From slipch Wed Oct 9 09:22:01 2002 From: slipch (slipch) Date: Wed Oct 9 09:22:01 2002 Subject: [ODE] Cylinder colisions Message-ID: <17333538595.20021009192355@gsc-game.kiev.ua> ------------FF1101193C4A0652 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello ODE, Hear is cylinder class for ODE. Cylinder class includes collisions Cylinder - Box Cylinder-Cylinder Cylinder - Sphere and Cylinder-Plain I also included Cylinder - Tri-Mesh in my version of Triangle collider. I put some more information in readme.txt. -- Best regards, Konstantin Slipchenko mailto:slipch@gsc-game.kiev.ua ------------FF1101193C4A0652 Content-Type: application/x-zip-compressed; name="dCylinder.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="dCylinder.zip" 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 ------------FF1101193C4A0652-- From coding at natew.com Wed Oct 9 11:36:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 11:36:02 2002 Subject: Re[2]: [ODE] CCylinder In-Reply-To: <1911113781.20021009102331@gsc-game.kiev.ua> Message-ID: On Wed, 9 Oct 2002, slipch wrote: > NW> I don't know off the top of my head, but have a look at the test_buggy > NW> sample app. It creates capped cylinders for the wheel's collision hulls, > NW> it should be evident from the source code what axis they're on to begin > NW> with. > > In my version of test_buggy spheres used for wheels. Oh look, mine too. Sorry about that. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 9 11:59:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 11:59:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <1428374912.20021009122432@gsc-game.kiev.ua> Message-ID: On Wed, 9 Oct 2002, slipch wrote: > I want to hook enabled body to some point and drag it during > simulation simply setting the point position. I am doing something like that in my application. I create a "fixed" joint, and use it to attach the body to "the static environment" (as Russ puts it in the documentation). // code m_TackJoint = dJointCreateFixed (m_pWorld->m_WorldID, 0); if (m_TackJoint) { dJointAttach (m_TackJoint, m_BodyID, null); dJointSetFixed (m_TackJoint); } As for moving things around, I'm not sure but I think you could try dBodySetPosition followed by another call to dJointSetFixed... moving things around in that way seems to me like it would destabilize the simulation, but it's worth a try. Or, don't create that "disabled" body at all... think about whatever other body it will be connected to, and connect THAT body with a fixed joint, and move that body around. That might be a little bit simpler. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 9 12:03:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 12:03:02 2002 Subject: Re[2]: [ODE] always diabled body In-Reply-To: <010401c26f9e$24e99940$0e00000a@pierre> Message-ID: On Wed, 9 Oct 2002, Pierre Terdiman wrote: > > No. But i dont see the point in creating a fixed body anyway. Just DONT > > use a body if you dont want dynamics. > > That's a common thing nonetheless, say for planes. A ground plane is fixed, > yet you want your bodies to collide with it. > > Or for a flag, when the cloth patch is attached to a fixed base. Even for both of those scenarios, you could get away without creating a rigid body. The ground plane in my application is a Geom object, not a body; if I wanted a flag, I'd render the pole, but I wouldn't make a body of it (unless I wanted the pole to sway....) instead, the edge of the cloth would just be "attached" to a set of fixed coordinates (as described in 11.1 of the FAQ). -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Wed Oct 9 17:29:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Wed Oct 9 17:29:02 2002 Subject: [ODE] welcome a new player Message-ID: Thanks for the link. It's nice to see the proliferation of rigid body simulators but I thought Si Brown's Freefall buggy demo using ODE was nicer than the NovodexTruckDemo. There seem to be some problems with the novodex wheels. When they hit the walls and objects they turn at a different angle than the inputs which makes it unresponsive very difficult to control. And the frame rate was pretty low (<30) for a small world on a GeForce3 1.6Ghz machine. Pierre Terdiman wrote: > PS: let's welcome a new player after Mathengine, Havok, ODE, etc : > www.novodex.com From p.terdiman at wanadoo.fr Wed Oct 9 18:13:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 18:13:02 2002 Subject: [ODE] welcome a new player References: Message-ID: <021b01c26ff9$e5d0c740$0e00000a@pierre> > Thanks for the link. It's nice to see the proliferation of rigid body simulators but I thought Si Brown's Freefall buggy demo using ODE was nicer than the NovodexTruckDemo. There seem to be some problems with the novodex wheels. When they hit the walls and objects they turn at a different angle than the inputs which makes it unresponsive very difficult to control. And the frame rate was pretty low (<30) for a small world on a GeForce3 1.6Ghz machine. Maybe you should report those problems to them, then ? After all, it's off-topic :) Now, the low framerate probably comes from something else : I don't have a 1.6 Ghz machine (*) and the framerate was always ~85 FPS (that is, the limit they fixed). Pierre (*) On the other hand I have a Quadro4 XGL 900, arh arh arh ! From dmcclurg at pandemicstudios.com.au Wed Oct 9 19:16:01 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Wed Oct 9 19:16:01 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: In my game, I'd like to simulate conveyor belts. Looking at the doc, a contact joint using dContactMotion1/2 seems to be the technqiue required. Does anyone have an example of that? I looked in ode/test but couldn't find anything. Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? Much thanks for any help with these questions From slipch Thu Oct 10 00:32:01 2002 From: slipch (slipch) Date: Thu Oct 10 00:32:01 2002 Subject: Re[4]: [ODE] always diabled body In-Reply-To: References: Message-ID: <1791950044.20021010103433@gsc-game.kiev.ua> Hello Nate, Wednesday, October 9, 2002, 2:06:58 PM, you wrote: NW> On Wed, 9 Oct 2002, slipch wrote: >> I want to hook enabled body to some point and drag it during >> simulation simply setting the point position. NW> I am doing something like that in my application. I create a NW> "fixed" joint, and use it to attach the body to "the static NW> environment" (as Russ puts it in the documentation). There was a good idea by Benny Kramek: " You can give your body a very large mass and disable gravity on it. Then it will move very little on it's own, and you can move it around with dBodySetPos() " Works fine. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From mattias at cambrianlabs.com Thu Oct 10 01:30:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 01:30:02 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <17333538595.20021009192355@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> Message-ID: > Hear is cylinder class for ODE. Hey! Nice job, I tried it out and it seems to work the way it should. I've seen cylinders explode out into space, but only rarely. If anyone wants a windows demo using the cylinder, check out http://www.cambrianlabs.com/DelphiODE.zip - the boxstack demo. cheers, mattias From mattias at cambrianlabs.com Thu Oct 10 01:33:11 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 01:33:11 2002 Subject: [ODE] Community page Message-ID: Hey! Russel, if you'd like, please add http://www.cambrianlabs.com/Mattias/DelphiODE/ to the community page? It's the homepage of the delphi import of ODE. If anyone wants to see some more evolved life, check out http://www.cambrianlabs.com/Mattias/Evolved/ , where I use Genetic Programming to evolve a hopper. Russel, if you want to, you could add that also. cheers, mattias From slipch Thu Oct 10 02:08:02 2002 From: slipch (slipch) Date: Thu Oct 10 02:08:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: References: <17333538595.20021009192355@gsc-game.kiev.ua> Message-ID: <757664571.20021010120947@gsc-game.kiev.ua> Hello Mattias, Thursday, October 10, 2002, 11:25:42 AM, you wrote: >> Hear is cylinder class for ODE. MF> Hey! Nice job, I tried it out and it seems to work the way it should. MF> I've seen cylinders explode out into space, but only rarely. They must not "explode out". One reason it may happen is well known problem with integration of fast rotating body. Cylinders (as well as Capped Cylinders) must show this problem more often than other bodies especially when radius/length ratio is small. It happen because rotating around an axis with small inertia partly counts as rotating around an axis with large inertia. But it is not a problem of colliders. To resolve it finite rotation axes may be used or simply do not set inertia tensor with strongly different inertia of its axes. It is also should depend on integration step. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From I.Munro at herts.ac.uk Thu Oct 10 02:32:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Thu Oct 10 02:32:02 2002 Subject: [ODE] Community page Message-ID: Mattias wrote: > If anyone wants to see some more evolved life, check out > http://www.cambrianlabs.com/Mattias/Evolved/ , where I use Genetic > Programming to evolve a hopper. Russel, if you want to, you could add > that also. Pretty interesting stuff. I'm doing similar things with a two legged runner and using Mathew Wall's GALIB. Sorry, I haven't got any details online at the moment, but have a look at http://www.bunnyburgers.com/tigger.jpg for a picture of the beast in action. I'd previously used the sort of control systems described by Railbert, but am now trying a sort of limit cycle based approach, where just once per a hop I measure the creatures attitude in space, apply (genetic algorithm generated) weights to all these values, sum them together and the use the resulting number to set the leg velocity for flight. For stance I use the same process but a different set of weights. My reasoning was that the railbert approach might be producing a control system that was fighting against the natural dynamics, whilst a non-prescriptive approach might work in harmony with the dynamics. The down-side is that the system is so non-prescriptive that a lot of time is wasted simulating completely unfeasible control weightings. The creature evolves to hops ok if I use both legs in sync, but I've only just started on the bipedal running strategies, so it's a bit hit and miss at the moment. Cheers Ian From mattias at cambrianlabs.com Thu Oct 10 02:50:01 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 02:50:01 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > Pretty interesting stuff. > I'm doing similar things with a two legged runner and using Mathew > Wall's GALIB. My current implementation evolve NNs unsing the NEAT method. Nothing online yet, though. My next goal is to evolve a snake like object (four bodies connected by three hinges) and then something two legged. I'm trying to use Juice to design the body - great tool Nate! > Sorry, I haven't got any details online at the moment, but have a look > at http://www.bunnyburgers.com/tigger.jpg for a picture of the beast > in action. That looks incredibly cool! I'd love to see him in action. Let us know when you have something to look at! > I'd previously used the sort of control systems described by Railbert, Railbert? Never heard of him, nor could I find any online papers - any links you could send? > My reasoning was that the railbert approach might be producing a > control > system that was fighting against the natural dynamics, whilst a > non-prescriptive approach might work in harmony with the dynamics. The > down-side is that the system is so non-prescriptive that a lot of time > is wasted simulating completely unfeasible control weightings. That's evolution for you. I try very hard to kill the bad systems off as fast as I can. > The creature evolves to hops ok if I use both legs in sync, but I've > only just started on the bipedal running strategies, so it's a bit > hit and miss at the moment. Well, if you want to toss ideas around, I'm game! cheers, m From I.Munro at herts.ac.uk Thu Oct 10 04:02:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Thu Oct 10 04:02:02 2002 Subject: [ODE] Community page Message-ID: Mattias Wrote: > > My current implementation evolve NNs unsing the NEAT method. Nothing > online yet, though. I've thought about NNs but i'm not really upto speed on them. I should really investigate the area more. > > That looks incredibly cool! I'd love to see him in action. > Let us know > when you have something to look at! Sure. Of course you can't see from a still frame the crash that followed 1 second later ;-) > > I'd previously used the sort of control systems described > by Railbert, > > Railbert? Never heard of him, nor could I find any online > papers - any > links you could send? Marc Raibert (sorry, mispelt his name) wrote a book called "legged robots that balance" and was responsible for the major work at the MIT leg lab. http://www.ai.mit.edu/projects/leglab/ (lots of interesting stuff at the site) His main contribution was demonstrating that dynamically unstable robots could be controlled with fairly simple control alogorithms rather than a complete mathematical analysis of the robots dynamics. Previous simulations I've done have been using working model 2d, inspired by the work of John Nagle http://www.animats.com/papers/leggedrun/leggedrun.html But working model 2d was incredibly slow to simulate and communicate with. ODE has been a real eye opener as to how fast simulations can run. It's made life a lot easier. My interests actually lie in making physical robots rather than simulations, but they're a great "what if?" tool. Cheers Ian From p.terdiman at wanadoo.fr Thu Oct 10 04:14:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 04:14:02 2002 Subject: [ODE] Community page References: Message-ID: <005f01c2704d$c6915080$0e00000a@pierre> > My next goal is to evolve a snake like object (four bodies connected by > three hinges) and then something two legged. I'm trying to use Juice to > design the body - great tool Nate! Note that NovodeX provides 2 exporters for MilkShape and MAX (others are planned) that you probably could use for ODE as well. For example, 4 bodies connected by 3 hinges are a piece of cake to build & export from MAX. [I can help here if needed, I wrote the exporter]. Note that this KAT tool I still have to play with looks fine as well. Pierre From mattias at cambrianlabs.com Thu Oct 10 04:30:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 04:30:02 2002 Subject: [ODE] Community page In-Reply-To: <005f01c2704d$c6915080$0e00000a@pierre> References: <005f01c2704d$c6915080$0e00000a@pierre> Message-ID: > > My next goal is to evolve a snake like object (four bodies connected > by > > three hinges) and then something two legged. I'm trying to use Juice > to > > design the body - great tool Nate! > > Note that NovodeX provides 2 exporters for MilkShape and MAX (others > are planned) that you probably could use for ODE as well. I couldn't find the exporters att novodex (is that novODEx?) ;) > For example, 4 bodies connected by 3 hinges are a piece of cake to > build & export from MAX. [I can help here if needed, I wrote > the exporter]. Well, MAX isn't exactly cheap, though milkshape is (and I actually have a license). Any pointers to the exporters? > Note that this KAT tool I still have to play with looks fine as well. I'd love to play with it also, but I'm guessing I'd have to buy the game to download it? cheers, mattias From p.terdiman at wanadoo.fr Thu Oct 10 04:40:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 04:40:02 2002 Subject: [ODE] Community page References: <005f01c2704d$c6915080$0e00000a@pierre> Message-ID: <00bb01c27051$7f8241a0$0e00000a@pierre> > Well, MAX isn't exactly cheap, though milkshape is (and I actually have a > license). Any pointers to the exporters? Download them freely here: http://www.novodex.com/sales.html > I'd love to play with it also, but I'm guessing I'd have to buy the game > to download it? No. http://www.swissquake.ch/chumbalum-soft/files/KAT_1_2_UT2003_Setup.exe Pierre From slipch Thu Oct 10 04:59:02 2002 From: slipch (slipch) Date: Thu Oct 10 04:59:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <757664571.20021010120947@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> Message-ID: <16117962618.20021010150125@gsc-game.kiev.ua> Hello Mattias, Thursday, October 10, 2002, 11:25:42 AM, you wrote: It seems my message has not get through. At least I do not see it back in my Inbox. I send it again. MF> Hey! Nice job, I tried it out and it seems to work the way it should. MF> I've seen cylinders explode out into space, but only rarely. They must not "explode out". One reason it may happen is well known problem with integration of fast rotating body. Cylinders (as well as Capped Cylinders) must show this problem more often than other bodies especially when radius/length ratio is small. It happen because rotating around an axis with small inertia partly counts as rotating around an axis with large inertia. But it is not a problem of colliders. To resolve it finite rotation axes may be used or simply do not set inertia tensor with strongly different inertia of its axes. It is also should depend on integration step. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From mattias at cambrianlabs.com Thu Oct 10 05:13:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 05:13:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <16117962618.20021010150125@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> Message-ID: > Hello Mattias, Hey slipch, it came through fine both times - I haven't replied yet, though. > They must not "explode out". One reason it may happen is well known > problem with integration of fast rotating body. Cylinders (as well as > Capped Cylinders) must show this problem more often than other bodies > especially when radius/length ratio is small. Well, dropping many cylinders in the boxstack demo, every once in a while one will explode. I'm not sure why, but you may be correct. cheers, m From p.terdiman at wanadoo.fr Thu Oct 10 05:19:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 05:19:02 2002 Subject: Re[2]: [ODE] Cylinder colisions References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> Message-ID: <00f801c27056$f27be760$0e00000a@pierre> Are your cylinders real cylinders or capsules ? I assume they're "real" cylinders since you make a difference between them and "capped cylinders". Then you might want to tell Eric Haines about it, for his intersection page. Actually providing a free ODE-independent set of cylinder overlap routines would be very very handy for a lot of people. > They must not "explode out". One reason it may happen is well known > problem with integration of fast rotating body. Cylinders (as well as > Capped Cylinders) must show this problem more often than other bodies > especially when radius/length ratio is small. It happen because > rotating around an axis with small inertia partly counts as rotating > around an axis with large inertia. But it is not a problem of > colliders. > To resolve it finite rotation axes may be used or simply > do not set inertia tensor with strongly different inertia of its axes. I think it can be solved by : - using a better integration scheme (RK4 at least) - clamping angular velocity to a max speed Unless I'm missing something.... I wouldn't tweak the inertia tensor, that's a delicate beast. Seems to work here: www.codercorner.com/Physics.zip (Press 6 to create some bars, then w to make them spin quickly. I can't make it explode here.)(and I hope we're talking about the same problem ;) Pierre From martin at metahuman.org Thu Oct 10 05:27:01 2002 From: martin at metahuman.org (Martin C. Martin) Date: Thu Oct 10 05:27:01 2002 Subject: [ODE] Community page References: Message-ID: <3DA571D5.329A60E7@metahuman.org> Ian Munro wrote: > > Mattias Wrote: > > Marc Raibert (sorry, mispelt his name) wrote a book called "legged robots > that balance" and was responsible for the major work at the MIT leg lab. > > http://www.ai.mit.edu/projects/leglab/ > (lots of interesting stuff at the site) You might also be interested in: http://www-2.cs.cmu.edu/~garthz/research/bowleg/bowleg.html And in particular, the paper "Control of a Bow Leg Hopping Robot." It works similarly to your description, calculating control parameters only once during flight. Stance, on the other hand, is completely passive. - Martin From mattias at cambrianlabs.com Thu Oct 10 06:04:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 06:04:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <00f801c27056$f27be760$0e00000a@pierre> References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> Message-ID: Since slipch himself hasn't answered (yet), I'll throw in an answer; > Are your cylinders real cylinders or capsules ? I assume they're "real" > cylinders since you make a difference between them and "capped > cylinders". slipch created real cylinders for ODE, I refer you to the archive; http://q12.org/pipermail/ode/2002-October/001936.html . If you want the download (it's in mime format in the pipemail archive), I'm sure he'll send it to you; slipch@gsc-game.kiev.ua cheers, mattias From Dominique at SavageSoftware.com.au Thu Oct 10 06:20:02 2002 From: Dominique at SavageSoftware.com.au (Dominique Louis) Date: Thu Oct 10 06:20:02 2002 Subject: [ODE] Silly Question... Message-ID: <3DA57EF7.1070807@SavageSoftware.com.au> Hi all, I have compiled configurator.c manually and would like to know what parameters it requires in order to create the config.h file. I have tried... configurator config\user-settings bcc32 tools\rm.exe on the command line, but it fails to delete the ctest.c file and does not seem to generate correct output. Am I missing something here? Thanks, Dominique. From benny at kramekweb.com Thu Oct 10 06:46:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Thu Oct 10 06:46:02 2002 Subject: [ODE] conveyor belts and moving platforms References: Message-ID: <3DA58E8C.10401@kramekweb.com> David McClurg wrote: > In my game, I'd like to simulate conveyor belts. Looking at the doc, a contact joint using dContactMotion1/2 seems to be the technqiue required. Does anyone have an example of that? I looked in ode/test but couldn't find anything. It's fairly simple. First make sure that you correctly set the fdir1 vector in the dContact structure. Then make sure that you use the dContactFDir1 and dContactMotion1 flags on the surface mode. Then set the correct value for motion1. > Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. > If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? One way is to put very large values in the inertia matrix. This will make the body difficult to rotate. Another, maybe better way, is give your body an inertia of a sphere, and to always have the geom oriented in a fixed orientation. From slipch Thu Oct 10 06:49:02 2002 From: slipch (slipch) Date: Thu Oct 10 06:49:02 2002 Subject: Re[4]: [ODE] Cylinder colisions In-Reply-To: <00f801c27056$f27be760$0e00000a@pierre> References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> Message-ID: <7724552614.20021010165115@gsc-game.kiev.ua> Hello Pierre, Thursday, October 10, 2002, 3:17:04 PM, you wrote: PT> Are your cylinders real cylinders or capsules ? I assume they're "real" PT> cylinders since you make a difference between them and "capped cylinders". PT> Then you might want to tell Eric Haines about it, for his intersection page. PT> Actually providing a free ODE-independent set of cylinder overlap routines PT> would be very very handy for a lot of people. Of course they are "real" cylinders. It is not need to create colliders for capsules because they already exist in ODE. Functions that implement collision for cylinders designed to set contact information to create ODE contact joints. I am not sure that they would be useful in another application. PT> Seems to work here: www.codercorner.com/Physics.zip PT> (Press 6 to create some bars, then w to make them spin quickly. I can't make PT> it explode here.)(and I hope we're talking about the same problem ;) I think yes we are talking about the same problem. Errors may appear anyway due to numeric errors independently of inertia tensor. But when inertia highly asymmetric they rather lead to noticeable result. If angular velocity is not limited it may lead to untwisting to infinite velocity. Unfortunately I can not get the example right now by technical reasons. I'll do it later and I belive I manage to make turning body to explode in any case setting proper parameters and very large velocity. -- Best regards, slipch mailto:slipch@gsc-game.kiev.ua From benny at kramekweb.com Thu Oct 10 06:58:01 2002 From: benny at kramekweb.com (Benny Kramek) Date: Thu Oct 10 06:58:01 2002 Subject: [ODE] Cylinder colisions References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> Message-ID: <3DA59188.4080906@kramekweb.com> > Of course they are "real" cylinders. It is not need to create > colliders for capsules because they already exist in ODE. Functions that > implement collision for cylinders designed to set contact information > to create ODE contact joints. I am not sure that they would be useful in > another application. Why don't we add the "real" cylinder class directly into ode? From mattias at cambrianlabs.com Thu Oct 10 10:10:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 10:10:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > > My current implementation evolve NNs unsing the NEAT method. Nothing > > online yet, though. > > I've thought about NNs but i'm not really upto speed on them. I should > really investigate the area more. NNs are tricky, if you want to do any kind of "fancy" (backpropagation) learning. Evolving NNs is almost trivial. Picking the right network topology is the the tricky part. The method I use, NEAT, evolves topology AND network weights, that's harder to implement. Now, if you want to _understand_ NNs, that's another thing completely... cheers, m From Alan_Gordie at payformance.com Thu Oct 10 11:30:02 2002 From: Alan_Gordie at payformance.com (Alan Gordie) Date: Thu Oct 10 11:30:02 2002 Subject: [ODE] coldet and ode Message-ID: I'm still catching up on two weeks of past list messages, but that is awesome news! Thanks, Pierre! -----Original Message----- From: Pierre Terdiman [mailto:p.terdiman@wanadoo.fr] Sent: Friday, October 04, 2002 5:21 PM To: ode@q12.org Subject: Re: [ODE] coldet and ode > I'd personally give Opcode a shot if it was more portable. (There > doesn't seem to be an ANSI C/C++ target in the source). Well, various people ported it to Linux and made it "more portable". On top of my head : in the F4 engine, in The Nebula Device, in Crystal Space, in ... ODE... Some more people sent me tar.gz files with makefiles and required changes to build Opcode "elsewhere". I don't know if they work well since I have a Windows box, period, but I can upload such an archive if ... Hell, let's just do it, wait 5 mn. ... Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm Words from the author : "This version is indeed different than those contained in F4 or ODE because it is only a direct linux port of version 1.2 of OPCODE, it contains nothing more, nothing less so a user does not have to deal with F4 or ODE. It is also accompanied with a so called configure script which automatically creates a makefile for the user's specific platform. It's just a question of running the configure script and automake and OPCODE is build for your platform (e.g. linux, solaris, irix etc). This is the correct way on unix flavoured oss to spread software." Questions about it ? Ask the author, please. (his mail is in the tar file) > Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff > in the mix) whereas ColDet compiles on just about anything, without > modification. Note that there's a #define to discard the ASM, and the only relevant VC++ stuff, as far as Opcode is concerned, is "__forceinline". Pierre _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From kaffiene at xtra.co.nz Thu Oct 10 13:33:02 2002 From: kaffiene at xtra.co.nz (Peter) Date: Thu Oct 10 13:33:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005B9@ednex504.dsto.defence.gov.au> Message-ID: <007101c2709c$243494b0$5c02a8c0@peter> > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf Of McEvoy, > Nick > Sent: Friday, 13 September 2002 11:49 a.m. > To: 'ode@q12.org' > Subject: [ODE] RE: Wheel rotation problem > > Marco Grubert wrote: > >My observations is that mass of the connected objects has a huge impact > on > >stability. I started out with a 500kg chassis and 15kg wheels. Reducing > this > >to 1/10th of the original value significantly improved the top speed when > >wheel bending occurs. It appears as though the object mass would increase > >with higher speed, pushing the wheels into a /\ shape when driving > straight > >or a // shape when doing a left turn. > > // Chassis > CLength = 0.7f; > CWidth = 0.5f; > CHeight = 0.2f; > CMass = 1.0f; > > // Wheels > WRadius = 0.15f; > WMass = 0.2f; > > Gravity=-5.0f; // yes a strange value but who said my game is on earth :) > > I'll do some more parameter tweaking. :) > > > >I have not yet tried moving the hinge2 > >anchor points around- does that make any difference? > > No I have not tried that idea yet. > > > >I did not notice any difference when setting the finite rotation mode. > >However, the documentation suggests setting the axis every timestep > (which > >you don´t do in the sample code). > > I see that in the doco ... NOW ... missed it before ... so > dBodySetFiniteRotationAxis() should be call each step !? I'll try that > then. > > > >I don´t quite understand how this mode > >operates or why the axis has to be reset. Why should it change during > >iterations ? > > Yes good question (why call each time step) ... I don't understand it > either > ... I'm no physics guru. :-( > > > >How are you adjusting the axes´ angles? I had this problem when only > >querying one wheel, calculating the difference and then applying the same > >value to both joints. Calculating the rate of change independently for > each > >of the two front joints fixed that problem. > > Ahhh your right on this one I think ... I was calculating each wheel > (steering) independently. I'll fix it this weekend. > > // Motor > for (i = 0; i <= 1; i++) > { > dJointSetHinge2Param(mODEJoint[i], dParamVel2, -speed); > dJointSetHinge2Param(mODEJoint[i], dParamFMax2, 0.1); > } > > // Steering - woops this is wrong ... I'll fix it as per your suggestion > !!! > for (i = 0; i <= 1; i++) > { > dReal v = steer - dJointGetHinge2Angle1(mODEJoint[i]); > if (v > 0.1) v = 0.1; > if (v < -0.1) v = -0.1; > v *= 10.0; > dJointSetHinge2Param(mODEJoint[i], dParamVel, v); > dJointSetHinge2Param(mODEJoint[i], dParamFMax, 0.2); > dJointSetHinge2Param(mODEJoint[i], dParamLoStop, -0.75); > dJointSetHinge2Param(mODEJoint[i], dParamHiStop, 0.75); > dJointSetHinge2Param(mODEJoint[i], dParamFudgeFactor, 0.1); > } > Nick, did any of these experiments work? (i.e. get rid of the wheel-bending problem)? Cheers, Peter. From coding at natew.com Thu Oct 10 14:07:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 10 14:07:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: On Thu, 10 Oct 2002, Ian Munro wrote: > My interests actually lie in making physical robots rather than simulations, > but they're a great "what if?" tool. Be careful... That's exactly how I felt when I started planning the software that became Juice. Now I've lost all interest in making something I can touch. :-) I'm really enjoying the discussion of evolved behaviors. In Juice, a creature's movements are basically just sine waves of different phases and amplitudes applied to joints, and feedback loops from a body's orientation to one or more joints. I've been pondering a training feature to try using a GA to adjust the phases, amplitudes, and gains, but haven't actually implemented anything yet. I'm hoping it will smooth out gaits that have been designed by hand. I've come to the conclusion that this method of programming behavior creates creatures that tip over too easily though, so most of my time lately has gone into designing a new behavior programming language. -- Nate Waddoups Redmond WA USA http://www.natew.com From mattias at cambrianlabs.com Thu Oct 10 14:34:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 14:34:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > I'm really enjoying the discussion of evolved behaviors. In Juice, a > creature's movements are basically just sine waves of different phases > and > amplitudes applied to joints, and feedback loops from a body's > orientation > to one or more joints. Check out http://www.ventrella.com/GenePool/gene_pool.html, it's a 2d program that evolves both structure and behaviour - but the behaviour is basically offset, phase and amplitude. LimbAngle = offset + sin(Time + Phase) * Amplitude; Quite similar to what you're describing. Jeffrey's also written several interesting papers about evolving articulated agents. > I've been pondering a training feature to try > using a GA to adjust the phases, amplitudes, and gains, but haven't > actually implemented anything yet. I'm hoping it will smooth out gaits > that have been designed by hand. I'm guessing you could have a GA running in a matter of days. Contact me off the list if you're interested in some ideas on that ;) > I've come to the conclusion that this method of programming behavior > creates creatures that tip over too easily though, so most of my time > lately has gone into designing a new behavior programming language. Your creatures are very complex, GAs could probably do a good job there. cheers, m From anselm at hook.org Thu Oct 10 15:31:02 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 10 15:31:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: > > I've come to the conclusion that this method of programming behavior > > creates creatures that tip over too easily though, so most of my time > > lately has gone into designing a new behavior programming language. This sounds interesting - any links up yet? What kinds of features does your language make it easier to express? - a From dmcclurg at pandemicstudios.com.au Thu Oct 10 17:30:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 10 17:30:02 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: Benny Kramek wrote: >> If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? > One way is to put very large values in the inertia matrix. This will make the body difficult to rotate. you mean like a large mass? > Another, maybe better way, is give your body an inertia of a sphere, how is that done? > and to always have the geom oriented in a fixed orientation. by setting the rotation every frame in the app? or is there another way to constrain orientation? thanks for your help on conveyer/platform questions! From russ at q12.org Thu Oct 10 22:39:01 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 10 22:39:01 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <3DA59188.4080906@kramekweb.com> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> <3DA59188.4080906@kramekweb.com> Message-ID: <20021010224329.65a1dbdd.russ@q12.org> This is a multi-part message in MIME format. --Multipart_Thu__10_Oct_2002_22:43:29_-0400_0839c960 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit > Why don't we add the "real" cylinder class directly into ode? the non-capped cylinder code is a good chunk of work, but i think it's work-in-progress. there are a few current problems, especially with cylinder-cylinder contact. the attached image illustrates the problem - it is possible (in fact rather easy) to put two cylinders into a configuration where the contact point (the blue box) does not even intersect one of the cylinders. this is IMO a big error. having said that, this cylinder work is a great step in the right direction. even with the errors it can be useful for many people. i'll add it to the contrib directory for now. thanks konstantin! to explain why i think this error is a problem: the ODE scheme of contact points/normals/depths is of course just an approximate way of representing contact between two objects. to reduce the approximation error, all the current contact code tries to put the contacts somewhere inside the intersection volume, in positions that will (a) preserve non-penetration and (b) not generate unnecessary body motion (no extra energy allowed!). the cyl-cyl contacts often do not meet these conditions. if you integrate cylinders into the box stacking demo and stack them up you'll see that this error causes them to jitter and pop way more than even the stacked boxes (which themselves jitter because of another well understood reason). i spent a lot of time on the current primitive-primitive collision code to prevent exactly this sort of thing. in some cases, like the capped-cyl-to-box code, i had to go through quite a few different schemes before i got it (hopefully) right. russ. -- Russell Smith http://www.q12.org --Multipart_Thu__10_Oct_2002_22:43:29_-0400_0839c960 Content-Type: application/octet-stream; name="foo4.jpg" Content-Disposition: attachment; filename="foo4.jpg" Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQAAAQABAAD//gDtQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEwYSAgUmV2OiAx Mi8yOS85NApDUkVBVE9SOiBYViBWZXJzaW9uIDMuMTBhICBSZXY6IDEyLzI5Lzk0CkNSRUFUT1I6 IFhWIFZlcnNpb24gMy4xMGEgIFJldjogMTIvMjkvOTQKQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEw YSAgUmV2OiAxMi8yOS85NAoKQ1JFQVRPUjogWFYgVmVyc2lvbiAzLjEwYSAgUmV2OiAxMi8yOS85 NCAgUXVhbGl0eSA9IDc1LCBTbW9vdGhpbmcgPSAwCv/bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsM GRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0N GDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/A ABEIAIEBNgMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAAC AQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZ GiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOU lZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAAB AncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Sl pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEA AhEDEQA/APZr+51GO8dbc4jGMcD0FV1vNUzh2ZffYpH8qNT1RrXUZY/4RjHPsKptrQYcrkezYr0I UpOK91Hm1KqU37zLT6hqKHHmg/RRn+VNTVb7eA8hH1Qf4VQ+3CR8LIqe7gcfpSyXkyDG+KX3WtfY rZxRl7Z78zN+K7mOC8vB7gD/AAqwJHY/LOf++RXJ/wBozx/MNx9tvFXbfX5QBujBx7VlPCy3ijSO JWzbN5pbgZAIPviqkzakBuS4Cj0Kr/hUSa9Cxw8RB9albVIHUhSufc1kqc4vWJq6kZLSQ2Ce+LYl uMD2Vf8ACrDzS4wt2d3b5V/wrPaRnO5ZR9KtWUsRPzFd3ueac49bfgTGb2v+JBJJrKthZ1I9dq/4 VG9zrcYySWHqEU/0rXe4jQ4AB+nNK9yiRb3O0fSkqn9xfcVy/wB9/ec8+samhwZCP+AD/CmjXb7O DN/44v8AhWq99DcuEjdcd89aSb7HAn7yOME/xbQTWylDZw1MWp7qZSi1u5LgPKcf7o/wrSi1XzAA ASffFc/P9nklzGxb/gOKv2kkcIGFAPqadSlC10ghVnezkbaTzufu4HrTpJZFXhgD6nFVE1KHo0gJ 9FGaiudUSIZFs7ehZSK5fZybtY6PapL4iys0wyWnVvZQKqeKL+70/wALXN5ZybLlBHtbAOMuoPBG OhNVv7Vu5TiO3bHoBik8Xl28C3JI+cpFkded60qtNxSuXQqczep56fHXiYdb/wD8gx//ABNMl8de JnhdY9W8tyDtb7PEcH/vmsfy3P3uPypDAp65/MVz2OowZvix49t53hfW8MjEH/RIP/iKZ/wt3xz/ ANBz/wAlIP8A4iq/ijQ/kbULcHIA8xc549a4/vXHNzi7XGdx/wALe8dd9c/8lIP/AIil/wCFu+Of +g5/5KQf/EVw+c0VHPLuB3H/AAt3x1x/xPPr/okH/wARR/wtzxz/ANBz/wAlIP8A4iuHLYGadS55 dxnbH4u+Of8AoOf+SkH/AMRSf8Ld8df9Bz/yUg/+IriqQij2ku4WO1/4W946/wCg5/5KQf8AxFL/ AMLd8dZ/5DnH/XpB/wDEVxBpetPnl3Edynxe8bpKjPrO9AQWX7LCNw9PuV3tn8QNcvrVbiHUsxuM j9zHx7fdrwpeRiut8G35Hn2Dnr+8T+v9K4Me6vs+eEmmuzZcbXPRpPHfiNXwNR4/64R//E1WuPiB 4nQApqeM/wDTCL/4mseVcDJqjdHhRXmU8VXb+N/ey3FdjYb4j+LADjVf/JeL/wCJqjP8T/GCZ26x j/t2h/8AiKwnPUVm3B613061VvWT+8lpH0F8K/EGqeJPDN1eatdfaJ0vXiV/LVMKEQgYUAdWNFZn wP8A+RLvf+wi/wD6Ljor36Lbppsye52WoGxa7ZZ8BxjJZeOnrVGXS9OmQtFcYPp0q9fuI7uUmQjO OML6D1NVySI8xz5J9Vb/ANlr0qbairNnm1EnJ3RjS2Eedse52H93n+lFvabpNrJJ9BgH9a0ZZLyM DayMD/dkf+tNgkvJZP4Vx13EvXV7SXKc3JG5NFEioYy9xs7q5Xj8M1GLO2Ev+jyhn/uyKw/UVOZb pf3bxQPn0Vh/9amqAh3CKKM/75P+NYJvua2QnkAHM1snHdZetPjWxY7XtXT3YgilE4C/deU/9M52 H6V5V40+KRs9Xm0nS7V/3DmO4mkmbJcHlVBzjHTJ7/TJxrVlSjzSv8v+HNKdNzdo/wBfgel3VxpG nnLSIzHouST+lVDqUFyQsEMYz6KMmvL9A8T6Zq9x5EjGC7f/AJZytw59m7n8jXTiYQRMoLHPrXyV biXF0a9nTVuzve3re34Hd9RhKO+p2cJZSAROB6IQTUxvoCfLaSU57Srj+tc3pniIyItpeyqsZOFm fJ2/Xnp79vpW2+lxLjc4Jzyegr6nAY+hjqftI6PquqOCtSqUXYth7ENlHhVvVstiia7MPW4X2yhI qOPTbZeTBEw/2XJJ/wDHhSTRRquEjljH90MCD9Rkmuv3G+r+4j3kg/tVQvEsO702EVZguzcLtaS2 X22/40lpDG0Z3xwn224qO4SP+FI1x0AhP9aT5G7JDXMlds0VSKNMCZB/uYFRFElb5SZCO5XiseQy /dSNMe6gfyqeITovywwkj/nnISfypeytrcPaX0sXxaPJ9+VEA7IAP8areMx5fge7CnO1YgD6/OtK 4upkGY41HcSg/wCFN8WIzeBbhRtz5cPTp99a5cTLkhzSeiOrD2cnZHjrM5//AFUzMv8AeP5CrbpL DzsVh7UwXLZ5TFedDG4efwzR2OL7EDRSSxlH+ZWGCD3FcDrmjy6Tdcr+5ckxn+lelCViM54rP1az h1SyaCYtnqjf3T61rNRqR913FqjzA0tS3VrLZ3DQyqQyn86h6c1xlA2ChpynKio3PyGliOUotoBL RRRUgNIoX0paTFMBehyKuaXeGx1GG5B4VsN7qetVAc0nQ1MoqScWB6i8qzQrIhyrAMD7GqF395fY VU8NXRudJ8tjzAdn4dRVmZtzn0r5/wBn7Oo49ja9zPl4zWdMM9a0rlwOgrMnfGTXdSuQz3H4IjHg y9/7CL/+i46KT4Hnd4LvT/1EX/8ARcdFfRUP4aMnuddqEhS/k4QjjqPYVXMwY53Ee3auM8Zarf2v iu9ihupI418vCg8D5FNYP9vamel9N+dd0a0UkrHJLDybbuenOkMgO4KT67R/hUUUUSE5UH6gV5wN e1Reftsv4mlHiDVT0vZPyH+FWsTG1tSPqsvI9MHlDoqflQ0mRhQB9DivMz4g1UdbyT8h/hSf8JDq h/5fX/T/AApfWIj+rT7o9M3HHLLn15J/nXzR4ytZbTxnrEcowxu5JB/uudwP5MK9M/4SDVf+fyT8 h/hXC+NoZbq5TVXbe74jlbAzkfdJx7cfgK5MZNVIadDWhSlB3Zxzn5lJ6g16R4V8WtfbNN1F83OD 5M5P+s/2W/2vfv8AXr50RuXp0NKGaNwyMVYHIIOCD614mKw0MRDllv0fY64yaZ7Jc7kduynmun8G 6+15FLp1wyvLbD93nALR9PrxwPxFeeaPrX9saVG0jZuYBsm9/Rvx/mDVNtTl0nVI7uGUxskhBYf3 Twf0NeflU54TE2l6P+vxCvBVIWPdDHDu37EJPqCf60Mkblc+WAO2yvNj4g1Udb2T8h/hSHxDqgHN 7J+Q/wAK+3+srzPO+qy8j013jwFSNV91+WiN9hyrv+LZrzP+39VxkXkmPoP8KT/hIdU/5/ZPyH+F L6xHsH1afc9OMu7O4k57lj/SkRzH0cAewH9a8y/4SHVP+f2T8h/hS/8ACQar/wA/sn5D/Cj28Ow/ q0+56aZFIPTPrtFN8YyLF4BuZGOAI4eR/vpXmn/CQar/AM/sn5D/AAr0PXwLv4XqbhifMtbZnPqd yH+dcePqRlh5+j/I2oUpQldnj73sTkBWdvpT0vkgUhYizHuTVtbC1/hDkfWn/wBnW6jfsJ9sk18I 509rHoWZQbVpQOIk/E1AdVuiOiD8KsS6aruW8oAe54pRaW0RHyKT79K0jKmtUhamBrdu2qQ+Y2PO QfKVA59q5AqVYqwIPcHtXprFB91Fz9KwNd0c3iG5t4x56j5gP4x/jXo4XF2fJPYiUTjJBhTTYW5I qaZCqsrAhhwQe1Vl4YGvXWqMy32opoNLUDFopKM0ALRRRigDc8M3Bjup4c/fTI/A/wD1635GrkdI l8nU4WzgHIP5V1crACvLxcLVb9y47FCd+tZczbs+lXLqQZI/Os/ZLczrDCpeRjgACtqMGJnvfwNO fBV7/wBhF/8A0XHRWj8JLAad4QlgGM/a2LEdzsTNFe9TjywSM2ct45A/4TK/yP8AnnyR/wBM196w QqY+8oP1rd8dGNfGeoEqS37vvj/lmtc6rM7cW4A92zXhV82qwqShGK0bX9amigmgnEjYVCrep9Kk RdseD+h/+tTViYnPf0AzT/LkYY5HvnH6VzSzjEdLfcV7NDN5U88j/PtR5ayDcGx9Km+yx7QWmJ9j imtaKBkblx/tHP8AOp/tiv3X3B7NEarIp4AYfUqaZcwwXMMlvcbNjrhs4OPxz1p32WLlpFeRv9ok ij9y67Ps8eD329KuOb1+tn8v+CHIjzXUrF9Nu3gZw6jlJFPDD1qtwy59a9F1HSbfULfy5V4/hZMA r9K43V9HGkmMJM0quT1XG3HQE/n+VdWHxkK2mzJcbD/D179j1WME4SYeU349P1x+taWskOxUZJY8 AVzMbESKV+8CMEetd5p+kyzTre3MWTnMcRH3fQn3/l9emn1Z1KykvmK+hqR7Fb95LHn/AGmxUrAM PlKFfbOKsCKTA3CJR7oKhaCMEASBSBxs4FezZkFdZAj4Dp9Ad1S4DDIjc++AB/OmtExJxMWI7EAj 9KYAVblFcd+o/wAaAHsGUZDH6UwSI3Hyhv8Ae/wzU63CqvzW5H0+Y/kKrT6pawrunkEKf3pV2/zI ppXdkBKF3cDn2x/9avVdZIT4WRb+ALS2z+aV5QhtnhE0MiOrjKvGRgj8K9U1tgvwniYgn/Q7X69Y 658Wv3E15P8AIa3R5kt0oPCMR61N55ddyMMVQIzz+lMVmjzjB9jXxPs0zouWzJuPzHNMZVPIxTkk Rot20ZNNAB4waFoBE0ZHpTB8h5q0FQ1E6APmqUgMnUNIs7/LvABIerKcE/WufufB8oy1vcK3orjH 612RVs005Bwa66WKq09IslxTOAn0XUbcHfbMwHVk+YfpVLBBIYEEdQa9KchCCOtefao27VbpvWQ1 6WFxMqzakiJRsVe9HSg0dRiu0kWlBzTBS0gJYsmZMZzkdK6e6uAB1rmbU/6SnrmtmOC41G48uBCc dWPRfrXPVpuc0kNOyIUjlvJxFCpZj+nua6jS7FdNiACqZj96THJ/+tVmy0qGxtwiDcx5Zscsasqu znaR9a9KhQVNXe5LZ6p8MnL+G7kk5P2xv/QEop/w2JPh24JAH+lt0/3EorpJOO8bxE+Mb9yAAfL5 P/XNawPkTqxPtXQeNg7+Mb9VUnHl9v8Apmtc68Ljg8n06V8Ri/8AeJ3fV/mdMdkOMrNwgwPalRC/ LNk9hninxW7sMttA7CnSJsX735Vy3WyKGBQjDBDOew7VJskfrIqn0AzVmOGGOPAVix5OTmpEZVU/ KF/nWbn2CxAmnBhuYMf0qRbOGP720Z6gCknvgiY3D86zLu/J+RTjPU0RjUmGhJfXsMalIFUDuwHJ rESBNSgvLebJjkUKxBAPfpmoby6BfANP0XfLJOsZGfl6nA717+VU/ZVoyW//AADKbuiW08O2Vqym Jds0fHmOdxz9P8MVdknu7UDfG0wHdD2/GtGLTgy5eUAZ4CjH9an+xWkGN2+T3Zsfyr6Zttt9zIx4 tReVwDGoVs45Jzj8qtb49u51GSeOKsXS2cyhfLjOOQyLg/nVKQTR5KIkmOu4YP5jrUR5teYB0kso OIUJzwCMAVXCXbNl1Rcn15qU6iglMMkbRN3yB+NEksZXJORnOQ2TVALGq5y+W9s8VbW6tFjwIoie n3cmqO3zMj0PfigR5JwwOOMigCctDtxHFHEvTEYx/KvTtcQD4TRIvygWdqB7cx15asUaY3qxbtzx Xq2soJfhZEoJANpbfzSsMU/3E35P8hrdHk5YKoz270KjTfdXj1qwLFSwyzH61aWBQuBgV8Q6iWx0 WKLqiAKvamgkVoG3jY809bOMrjFT7VJajsUA/HvSEMx6GtNLGLrt6epp5iijBYgYFT7VdAsY/lse imopW2jB61buLkbiEGBWdM+Wx6VvC73EV53wCfQVzmp6Bd5N5CvnRyfOQv3l/CtyZ859K1rVh9ji HAyg617uWU1KTT7GU2eWlgrbSQGHY0Vd8ZxLB4jARVUGJCQox3NUYcySJEB8zMFH419fHh6rWwn1 jD+81a6/Vf5HP7VKVmLS1rv4Z1FELbYyB6NUlroQDKbpif8ApmnH614CpyfQ1K+kaTcajKWiAVF6 u3Qf4mu+sNPWztVhhU7RyST1PrVTTVhtYFhiiREHY8k1fFxKAc7FX2FdNOmoa9QdyysDqAeAKmSB HzhwfwqmLr5cGRvxpyXGR8pBHf1rYVj1T4doI/D84H/P03/oKUUz4cNv8PXBxj/S2/8AQEooEcl4 zudnjC/jHX93/wCi1rmjJ+9O45rX8dy7PG+oD/rn/wCi1rn3mXy8k89q+KxVP/aJvu3+Z0xeiNIO xJx0xxVa4mxx19RVVbltuAeaa8ysATnd9Otc8aVmO5d/tEhcCPBxxzVSe8mJ5k2+gHFVHkYHnC+4 qlcXIUFUOSerVtCgr6ITZPLcFxlnLHtzUU10VBOcmqRm53Z+lU7i67ZrshRuTckkmBfH51p+GJyL i6Yxsy/KuQOM81zivJNKEjBZ2OAB3rrtLs2tbMQrGzsfmYg4+Yjn6jt+Vetg6LU+bsRJm39plfcV G2PuG5NRbskbVZuce2PxqGGCUbFkKrk9M5OPX+dWDHs+YOTtH5fkP516upAK5Xoihh/DmopGctwz cYyB1+lTrCvVUBUDJ3//AFsipERlZXwdoxuC4/z6UgM6SFpCwljBBHGeTUH2CUH9zK4brjHTP+fp WwEjRjmPJ6jP+fc/rTDjKkNk56dBRYDKiLwHbdr8hGMoOD7/AKVZW5R/9SSVHJYjGPzq0FR0x13H H1NUJbAO+5FK88lSODjrjH9KdhFiOZfMK7wxBxleles6mM/DGAf9Olt/NK8YYXkAUlwVzn5Rz16d en517Rcfvfhjac/esrY9P9yuXGP/AGap/hf5FR3R50I8U7YT0q6IY1HPJpGZV+6AK/PvaX2OqxFH bd24qRURcnHSm+YT3qKa4EannpStKTAklmCISfyrIubpn4zxTJrlpMkmqjPxXXSo21YmwZstVKWT BY9z0qZ5Nqn1qnIfWu2ESGQzHAxWvZhTDCWJGFHB5FYcjbmretEYWseEDDaOe4r2stXvv0IkF7p1 lqJ2XNukg7E9R/Wq0Oh6bA4ZLOMMpyGPUH8auGCXaPLJJPUE05EOPutkdRur3oYitTi4Qm0n0TZn ZMNm8kEjb/tVBNZwtyTn/dFSlJGx1x3FWY4Au0MOOue9ZDMaaykCbomYgdiarILtXKvMFXrtcZH5 11KpFk8/hjrUM1qsgwYsD2xxQIyopGZAHkPPsMGrsOG+XKj6mqkumMmTEdoP90/0rMu7e7A+SVkz 0cLkflQB7n8MwB4cuQG3YvGyf+AJRVD4OJKnhC6E0/nP9vf5sY/5Zx8UUxHFfEGXb4+1JSf+eX/o pK5ZrkNIQCSAMVv/ABJJHxA1PBx/qv8A0UlcisiiVm96+Yr006035v8AM2T0NVZtq53YPbmq8t0x GN3PrVKS4IHDYX0qr5+7OeQO2azjR6juWnuOCNxI9qrNOX4AwKge6xx+lQSXDbcLlmJwAOprphSF cmnnI46fSs6WfHqSTgYrbsfDl3Ovm3zG3j6iI/6wj8en4+nSuntLC3t7VreKBFXOSpwdx988969T C4aMZp1VePVXtf562Ik9NCPSNFt9Otkd9s0zkFpQOB32/TH5/wAtgSKzE8AD7vOMevNVY45YpPLy 2FzgAdM+p/rViKAjGSd44OWGSMda7YQsrIhsT5dzBE3tjkLzz9enpT4RIf3gx5fQjkgDGaskCFCE VW/vbv5+1LE29WkZHU/w46HjHP4VpsSQqgY8sx4JUdQfUCkVWXAJ2hePm6sKtfuyi7idg5BXsf8A 69VndCMyI4Vzgqrcn0xxUjI2DqSGUFQMZ7n9OajaJgV+YbT25zn0P+e1WCGJAfeWXlmIwSPQ9B+N MZFGZFV1U/xDocf5FIohPDkuoYHs1I8bDdtkOc8MePfqKkZN37xWd4x/eAG3+VJNyzZZX4B5649q QFXDSqv3d2OjkDP0r168ynw3tgcZFpbj/wBArygbXx99Tn/lmckfUV6pqJx8M4P+vS27Y/uVy4z/ AHap/hf5FLdHBvJ71Ez00tTGcKCSa+BUTpHNIEUknmsuaYyMeaWe53KVHfvVfdtX3NdVOnbVktiO cCq8j4FPkbt3/lVRzz1rphEQM245qvM+AeelOZsVWlbOBXRCOpLGr95fzNdNZS/6DDvVcFeCa5ct hWPrwK39Pb/RYFwQCvoDmvWy7436ET2LUu6OYTbvlPBzT57qAKuAz/yFRCXfKUUDb64yKGVGwQv4 +tewZ2BZpFbCqGB7Cp2uG2YRtp75GDUIm3PnBOB93rTHz5hODgjpigCSOXJJlzgdMDrVmOSNgc7s /WqYEgXaqcH14pDImSP3cZHcmkMtNJFtIH3h7VAfLc4wATxjFMR1kQnzGY9DsBNPEdwwIjt2IHdy BUjseqfDKNY/DlyqjA+2Mf8AxxKKk+G8M8PhyYTqFY3TEAHPGxKKtEnk3xPm2fELVR6eV/6KSuF+ 09STzXe/Ezw/r1/8QdVnstE1G5t5PK2Sw2rujYiQHDAY65H4VzUPw78WzjLaNdwj/ppE3P5A15Ms O5VJO3U0voYMt315ptvJPcv5UETyN6KM49zXb2fw1vIVLXml6nO/ZRbuF68cAZ/Wtm38OatBC0UG iXqKDkKLRlHvj5a3hhNNRcxxVp4Xup/nu5Vt16lR8zY/l+tb2m6RY2Tq9vuabP3pOWH0PH6VvxaD rhQB9KvVZjzi2fr25xTk0TVt2To+ojaMELbNz9OK6oUYQ2JuUtoDsyrl8YNR2+Gl2hSWA7HOD/hW sNA1VXDnS74ccYtmJ/lU8GgajECr6Zfk9QRC2P5VqhMzRGr2/mkEjPVD9MjNTReXhvLkbfnoMAHj rV0aHqodG/su7IPY27cH8qemi6ohbOm3gYE7f9HYjH5VdybFErINrHaChJJAPX/OaGHy5QEEH7qY IY+lW5dD1cx4i0+9Cg5wYXxx+H5VVGk61G+xtIvmBwVZbZ+D69KVxkRAk3A7kLgFl3VSNyCqpE+c cAdjg9DxzV19J1+RxNLpWoOAMbVtXH9AfSpItC1UbyNKvtrYLA2rjt6Y/wA/zTBFFmm8tSpRgTuw RwPY4qRYBASwkKoRzDwR64HtWgNG1ckmLSb5QQSwMDjcfypraLq8MQK6ZfyOvKgQSf4Uhmc52qGj crg8qeRj3qAzwo/lEshJxlhlQfatC48P6rdskzaTqCsBkILd8A/iKcuiausQQaXqOVOF/wBFc55/ 3ehpDMmbeHAdhjIwAvzH6c9K9Z1MkfDCDPX7JbfzSvNp/D2tXZJfSr3jgA20gHt2r0vUrO6/4VpD ZpbStcraW6GFEJYEFMjHXjB/KsMXG+Hml2f5DW6PM2mxwKoT3BbIB4rQl0XXMYXR9QP/AG7P/hVV vD2uEf8AIG1D/wABX/wr46GGmtXFm7aKGcnihjgdeavjw9rgHGjah/4Cv/hTH8Pa7sONF1En/r1f /CtlRn2YroyJWJBwaq5IPNbD+HNfxgaHqX/gJJ/hVd/DfiHoNC1T/wAA5P8ACt4Up9hXMt27k1C5 71rnwx4hY/8AIC1TA/6c5P8ACo38L+ISR/xIdU/8A5P8K2VOXYVzHY9B6V0FkxWwhYhjgfw81SPh XxGWJ/sDVf8AwDk/wrfsvCWqyWkQn0rUwcfca3cAfpXoYGLjN3XQmRnG5hjw2W3E4AYipRO82BEH YegjJ/8ArVuQeFdQhmGNGvFC8grA3+FXRoWrKRt0y8x/1wb/AAr1CDnYobhyuIGTPdyB/jVk6Zcs u4yj8AW4roF0nU1R8aRd/jC+T+lOGi6lkEafer7eQ3+FMDnV0xSw3yzP6ruwD+FacWmwQxkQ28XH UsBmr50XVCw2adeKR0Pkt1/KpxpmoqmW0q8Yj0hb/CiwrmcluNpZEXA6rinx7EOG2qP7oq02l6tj CaddgH+9A3+FVzoWpuSzaZdg+ohf+WKLDud74JKnRptrbh9obn/gK0UeCbSey0WaK4gkhc3DNtkQ qSNq84NFMR0lFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB//2Q== --Multipart_Thu__10_Oct_2002_22:43:29_-0400_0839c960-- From russ at q12.org Thu Oct 10 23:08:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 10 23:08:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: <20021010231205.1f8bd682.russ@q12.org> > Russel, if you'd like, please add > http://www.cambrianlabs.com/Mattias/DelphiODE/ to the community page? done. russ. -- Russell Smith http://www.q12.org From dmcclurg at pandemicstudios.com.au Thu Oct 10 23:36:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 10 23:36:02 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: Benny Kramek wrote: >> Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? > Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. I created a box geom with a body and dropped a sphere geom with a body on it. There sphere comes to rest on the box while the box moves back and forth (on a sine wave with SetVel) underneath it. But the sphere doesn't move back and forth with the box!! Friction doesn't seem to give the sphere any motion. I tried infinite and 1.0 friction with the same results. contacts[i].surface.mode = dContactBounce; contacts[i].surface.mu = 1.f; //dInfinity; contacts[i].surface.mu2 = 0.f; contacts[i].surface.bounce = 0.5f; contacts[i].surface.bounce_vel = 0.01f; dJointID c = dJointCreateContact(world, contactGroup, &contacts[i]); dJointAttach(c, b1Contact, b2Contact); Any idea why this isn't working? From bongard at ifi.unizh.ch Fri Oct 11 01:18:02 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Fri Oct 11 01:18:02 2002 Subject: [ODE] Evolved behaviours In-Reply-To: Message-ID: As there seems to be quite a bit of discussion about NNs and evolved behaviours on the mailing list these days, I'd like to direct your attention to a physical simulation overlay I developed called MorphEngine (www.ifi.unizh.ch/ailab/people/bongard/MorphEngine/). For those of you in the know, and before you start throwing rotten fruit at me, this overlay uses MathEngine, not ODE, but I've almost finished porting it to ODE, and will post it up when I do. The program runs as an .exe standalone on Windows, but my documentation includes a brief introduction to NNs, GAs and evolved behaviours, and how they relate to the physical simulation of robots. Cheers, Josh On Thu, 10 Oct 2002, Nate W wrote: > On Thu, 10 Oct 2002, Ian Munro wrote: > > > My interests actually lie in making physical robots rather than simulations, > > but they're a great "what if?" tool. > > Be careful... That's exactly how I felt when I started planning the > software that became Juice. Now I've lost all interest in making > something I can touch. :-) > > I'm really enjoying the discussion of evolved behaviors. In Juice, a > creature's movements are basically just sine waves of different phases and > amplitudes applied to joints, and feedback loops from a body's orientation > to one or more joints. I've been pondering a training feature to try > using a GA to adjust the phases, amplitudes, and gains, but haven't > actually implemented anything yet. I'm hoping it will smooth out gaits > that have been designed by hand. > > I've come to the conclusion that this method of programming behavior > creates creatures that tip over too easily though, so most of my time > lately has gone into designing a new behavior programming language. > > -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From slipch Fri Oct 11 06:15:02 2002 From: slipch (slipch) Date: Fri Oct 11 06:15:02 2002 Subject: Re[2]: [ODE] Cylinder colisions In-Reply-To: <20021010224329.65a1dbdd.russ@q12.org> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> <3DA59188.4080906@kramekweb.com> <20021010224329.65a1dbdd.russ@q12.org> Message-ID: <1279165509.20021011161705@gsc-game.kiev.ua> Hello Russ, Friday, October 11, 2002, 5:43:29 AM, you wrote: I know about this error. It happens when cylinders' edges touches. There is still a warranty that the contact point is near the place where it should be. It was not an error in my eyes I only wanted to reduce calculations. I'll think how to fix it. -- Best regards, Konstantin mailto:slipch@gsc-game.kiev.ua From benny at kramekweb.com Fri Oct 11 06:42:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Fri Oct 11 06:42:02 2002 Subject: [ODE] conveyor belts and moving platforms References: Message-ID: <3DA6DF4A.60903@kramekweb.com> > >>>Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? >>> > >>Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. >> > > I created a box geom with a body and dropped a sphere geom with a body on it. There sphere comes to rest on the box while the box moves back and forth (on a sine wave with SetVel) underneath it. But the sphere doesn't move back and forth with the box!! > > Friction doesn't seem to give the sphere any motion. I tried infinite and 1.0 friction with the same results. > This is a known thing with ode. A ball that is rolling on the ground will never slow down, even if there is friction. Try replacing the sphere with a box. Also, you shouldn't change the velocity of the platform with dBodySetVel(). This is not the correct way to do things. You should only apply forces. If you want to give a body a certain velocity you should use a motor. From p.terdiman at wanadoo.fr Fri Oct 11 06:49:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 11 06:49:02 2002 Subject: [ODE] Community page References: <005f01c2704d$c6915080$0e00000a@pierre> <00bb01c27051$7f8241a0$0e00000a@pierre> Message-ID: <007201c2712c$89469840$0e00000a@pierre> > > I'd love to play with it also, but I'm guessing I'd have to buy the game > > to download it? > > No. > http://www.swissquake.ch/chumbalum-soft/files/KAT_1_2_UT2003_Setup.exe Argh ! I was just told that KAT was *not* free. You were right, you actually have to buy the game indeed, to be able to use it. Sorry.... I thought it was a public link. Needless to say, the file has been removed. You're lucky anyway : UT2003 is a good game so there shouldn't be any reason not to buy it :) (Hey, I'm kidding) Pierre From max.lungarella at aist.go.jp Fri Oct 11 10:46:01 2002 From: max.lungarella at aist.go.jp (Max Lungarella) Date: Fri Oct 11 10:46:01 2002 Subject: [ODE] robotic simulation Message-ID: <3DA70D4E.725824C6@aist.go.jp> hi there, "dynamechs" is a dynamics engine, mainly intended for robotics simulation (http://dynamechs.sourceforge.net/). recently i've given it a try, and although i appreciate very much it's speed, i have the impression, that it's rather hard to construct complex structures - like robots. is there anything that would prevent the use of ODE for the same purpose? i.e., robotic simulation? is there anybody that has tried to do a quantitative comparison between different physics engines, in terms of accuracy, which is kind of important in this case? or does anybody have interesting pointers to relevant literature? thank you very much in advance!! cheers, max -- Max Lungarella Neuroscience Research Institute Tsukuba AIST Central 2 Umezono 1-1-1, Tsukuba 305-8568 Japan Tel +81-298-615369 Fax +81-298-615841 http://www.lungarella.com/max/ From wristy_j at yahoo.com Fri Oct 11 12:06:01 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Fri Oct 11 12:06:01 2002 Subject: [ODE] Old Cholesky factorization code Message-ID: <20021011190523.22176.qmail@web40810.mail.yahoo.com> Greetings, In the code where the Dantzig LCP solver takes over (after the A matrix and rhs vector have been determined), I noticed that there is a commented call to a Cholesky factorizor and solver. In block-matrix form (where each entry is a matrix of the form J*InvM*Jt), I realize that the A matrix is block-symmetric, BUT, I was wondering... Are the diagonal entries of the block A matrix themselves actually symmetric (J*InvM*Jt) even after the body has undergone rotations, making the inverse inertia tensor non-symmetric? If not, the Cholesky decomp wouldn't work, correct? In other words, did the Cholesky decomp ever work properly for A? Or was it just ditched to incorporate LCP constrains (contacts with friction)? Thanks! J __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From mfdubois at club-internet.fr Fri Oct 11 12:25:02 2002 From: mfdubois at club-internet.fr (Michel DUBOIS) Date: Fri Oct 11 12:25:02 2002 Subject: [ODE] Problem with AngularMortor and BallAndSocket Message-ID: <84CB8473VQPNRP42MH96PO43QOECWSI.3da7258c@MD_PC_02> Hello, I am a newbie in ODE and C++. First I developed a simulator in Java3d with threads and now I am porting it in ODE/Drawstuff to have physics. My project is to simulate a mobile robot named an atom who can be composed with identical robot to become a molecul. An atom is mainly a body (a square box) with 6 legs (left, right, top,bottom, front and rear).A leg can rotate with 2 axis. A leg can be attached with the leg of an other atom. A molecul is one atom or more than one atom. In ODE, an atom is a box with 6 legs. A leg is 2 boxes (or cylinders ..) with a slider. I think, a BallAndSocket joint with angular motor joint can attach the body with a leg. But I afraid, I don't understand the angular motor in user mode. First the stop limit seems not to be effective. And the axis seems to be relative to the gobal frame not to the body. When the body rotate, the legs seems to rotate with a strange maner. I think i have the same problem than Tim Schmidt in july. The rotations behave as if the axes are anchored to the global frame, whatever the orientation of the first body looks like. May be someone have a solution to my problems ? Michel DUBOIS From Sean at Blackscreen.org Fri Oct 11 12:31:02 2002 From: Sean at Blackscreen.org (Sean S Cullen) Date: Fri Oct 11 12:31:02 2002 Subject: [ODE] Box Box Algorithm Message-ID: <45177.24.91.219.122.1034364764.squirrel@mail.blackscreen.org> I thought I remembered someone implementing a version of dBoxBox that will compute more than a single collision point. Is there any chance of getting that put into CVS? From coding at natew.com Fri Oct 11 13:21:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 11 13:21:02 2002 Subject: [ODE] robotic simulation In-Reply-To: <3DA70D4E.725824C6@aist.go.jp> Message-ID: On Sat, 12 Oct 2002, Max Lungarella wrote: > "dynamechs" is a dynamics engine, mainly intended for robotics > simulation (http://dynamechs.sourceforge.net/). recently i've given it > a try, and although i appreciate very much it's speed, i have the > impression, that it's rather hard to construct complex structures - > like robots. When I set out to write a robot simulator (see http://www.natew.com/juice), I looked at both Dynamechs and ODE, and chose ODE for the reason you describe above. In retrospect, I think that Dynamechs would probably only be slightly more difficult to work with. Using ODE, you can created bodies and joints and connect them arbitrarily and everything just works. With Dynamechs, my understanding is that any closed loops need to be handled as special cases. In retrospect, I think that would probably be almost trivial to deal with. If you think of the structure as a graph, where bodies are nodes and joints are edges, you would just create the Dynamechs objects by traversing the graph, and when you find a cycle in the graph (easily detectable), you create one of Dynamechs' "secondary" joints. From an application-development point of view, ODE allows you to create ODE's joints objects without worrying about closed loops; Dynamechs would require you to examine the topology of the structure you're creating before you create the joints objects. > is there anything that would prevent the use of ODE for the same > purpose? i.e., robotic simulation? How detailed do you want the simulation to be? I was looking for a high-level sort of simulation, treating motors and drivetrains as black boxes and just looking at the overall structure of the robot and its control system, and I'm very happy with ODE's performance in this case. -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Sat Oct 12 12:16:01 2002 From: russ at q12.org (Russ Smith) Date: Sat Oct 12 12:16:01 2002 Subject: [ODE] Old Cholesky factorization code In-Reply-To: <20021011190523.22176.qmail@web40810.mail.yahoo.com> References: <20021011190523.22176.qmail@web40810.mail.yahoo.com> Message-ID: <20021012121947.20fed8dc.russ@q12.org> > In block-matrix > form (where each entry is a matrix of the form > J*InvM*Jt), I realize that the A matrix is > block-symmetric, BUT, I was wondering... Are the > diagonal entries of the block A matrix themselves > actually symmetric yes: A = J*inv(M)*J' A' = (J*inv(M)*J')' = (J')' * inv(M)' * J' = J*inv(M)'*J' each 6x6 block of M contains a diagonal 3x3 matrix (the mass) and a 3x3 transformed inertia tensor I*. I* = R*I*R' I*' = R*I'*R' I (the inertia tensor) is symmetric, so I* is symmetric, so M is symmetric, so A is symmetric. > In other words, did the Cholesky decomp ever work > properly for A? Or was it just ditched to incorporate > LCP constrains (contacts with friction)? cholesky is not used, i use the L*D*L' factorization instead - but this also needs a symmetric matrix. the LDLT factorization is used on the sub-matrix of A that does not have LCP constraints, then LCP is used incrementally on the rest. russ. -- Russell Smith http://www.q12.org From nathan at whatever.net Sat Oct 12 19:10:02 2002 From: nathan at whatever.net (Nate Waddoups) Date: Sat Oct 12 19:10:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: On Thu, 10 Oct 2002, Anselm Hook wrote: > > > I've come to the conclusion that this method of programming behavior > > > creates creatures that tip over too easily though, so most of my time > > > lately has gone into designing a new behavior programming language. > > This sounds interesting - any links up yet? What kinds of features does > your language make it easier to express? No links yet, just some sketches on paper right now. The main problem with the current language is that it allows you to design one behavior, and it will behave according to that "script" no matter what. If the critter falls over, it thrashes about like a fallen wind-up toy (only worse because wind-up toys don't usually have attitude sensors that suffer from gimbal lock). I put script in quotes because the behavior is specified as a directed graph, but it gets compiled down to a script-like sequence of instructions. Anyhow, there's two main features I have in mind for the next version: The main thing is that each behavior will be paired with a "context" function, yielding a value from 0 to 1. The context for a walking behavior might be a relatively upright torso, the hips higher than the feet, and so on. The outputs of the script will be multiplied by the context value. Under the appropriate conditions, the behavior script runs as usual; if the critter is standing on its head, the "walk" script has no effect; if it's leaning heavily to one side, it will only try to take small steps forward (meanwhile, the context is right for a "stand up straight" behavior to take effect...). Second, I want to be able to coordinate a whole bunch of behaviors. This is the part I'm still thinking through. The "context idea addresses part of the problem, particularly at the scale of motor control. But big decisions like "walk, run or crawl?" or "chase or flee?" have me looking for ways to create a hierarchy of behaviors, or fuzzy cognitive maps, or a subsumption approach. I have a bunch of ideas here... part of the problem is I'm not sure which to try first and I'm trying to think of a grand scheme that uses all of them - and yet, is still easy to work with. Mostly I think I need to do more reading. Meanwhile I want to revise my document object model a bit so I can implement undo/redo more easily, and integrate Novodex physics and CD, and create a network interface to Juice so I can implement the new behavior (and editor) as a separate application... and, and, and. So many ideas, so little time. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From max.lungarella at aist.go.jp Sat Oct 12 21:03:01 2002 From: max.lungarella at aist.go.jp (Max Lungarella) Date: Sat Oct 12 21:03:01 2002 Subject: [ODE] robotic simulation References: Message-ID: <3DA8EF87.778199E3@aist.go.jp> hi there, thanks for replying. > When I set out to write a robot simulator (see > http://www.natew.com/juice), i tried "juice", it's pretty cool, and well designed. the only problem that i have with it, is that i cannot export the models i realize. in other words, it would be neat if i could construct something using juice, and be able to import this something in one of my own programs. do you have plans do add similar feature? > Using ODE, you can created bodies and joints and connect them arbitrarily > and everything just works. With Dynamechs, my understanding is that any > closed loops need to be handled as special cases. In retrospect, I think > that would probably be almost trivial to deal with. If you think of the > structure as a graph, where bodies are nodes and joints are edges, you > would just create the Dynamechs objects by traversing the graph, and when > you find a cycle in the graph (easily detectable), you create one of > Dynamechs' "secondary" joints. yep. the only problem, that i have with this approach, is that almost the whole body is some sort of special case - read "hack" - and therefore less intuitive to design. i tried to use dynamechs and i still don't grasp it completely. ode is so easy to use and also aesthetically more pleasant ;) > How detailed do you want the simulation to be? my plan is to simulate a humanoid robot with a reduced number of degrees of freedom, let's say 10. the simulation would have to be fairly accurate, since i'd like to develop the control architecture in software and use this very architecture for the control of a real robot in a second time step. the modeling of the motors does not worry me as much as the modeling of the ground reaction forces, since the feet of my biped robot are not hard, but kind of soft and deformable. cheers, max -- Max Lungarella Neuroscience Research Institute Tsukuba AIST Central 2 Umezono 1-1-1, Tsukuba 305-8568 Japan Tel +81-298-615369 Fax +81-298-615841 http://www.lungarella.com/max/ From johnb003 at hotmail.com Sun Oct 13 00:19:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 00:19:02 2002 Subject: [ODE] Slightly More Complex Car Shocks Simulation Message-ID: I am working on a racing game and to start with I made a hovercraft to avoid using joints and figuring out what works and what doesn't, but now I am working on my rc10 and I've got some problems. Here is the page for my game, I've got a picture of the vehicle on the 'home page': http://web.csuchico.edu/~jb393/urgent Ok so my problem is that I have a few more moving parts than the standard buggy problem. The top red axel thing I am treating as the same body as the carbody, the moving parts are, the wheel, the spring/shock, and the lower axel. So it's really just a puzzle of how to put it together. Let me ask this first, there will likely be a lot of torque and quick movements since the masses are so small, being an remote controlled car, so would it be better to use fewest joints (like one hinge2 joint) and set the other positions manually and rotations manually based on the position of the wheel and body, or maybe add extra joints to add support. For example, with a large mass ratio like that of my lower axel and the carbody, if I use a regular hinge with some axis and apply a force along the same axis but translated out to add leverage, would that hinge want to break. An analogy would be hanging on a cupboard cabinet with all of your weight. Instead of using a hinge then, you could construct a seemingly more stable structure by making a triangle with ball joints, like this where F is the force and y is the vertical axis: |O | \ | \ y O | / ^ | / |F |O | Something I didn't mention, since I was trying to keep things simple is that I made a scripting interface to the physics that corresponds to a 3ds file. This means any kind of hack like setting the position of the shock based on the wheel, I would like to avoid so the scripts can correspond to the existing physics. If it truly is the best solution, I could add my own special kind of joints, I suppose, and make them available for the scripts. The method of connecting the bodies I've been experimenting is as follows: wheel->hinge2joint->shock, shock->sliderjoint(vertical axis)->carbody just this has a lot of error; the shock->sliderjoint->carbody doesn't maintain it's orientation with the carbody (it falls off it's axis) then for the bottom axel I needed a joint that only restricts 2 positional degrees of freedom, it's a combo of a balljoint and a slider... looks like this X====|----O it's kind of a "look at" joint. I would just make fake bodies, and by that I just mean bodies that don't have any corresponding model to draw, or no physical matter but I was scared to use 0 for a mass so they just have very small masses. Ok this post is getting long, I'll leave it at that. _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From johnb003 at hotmail.com Sun Oct 13 07:53:01 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 07:53:01 2002 Subject: [ODE] Springs Message-ID: If I want a shock between two bodies, would it be more efficient to use calculate the simple spring physics and apply direct forces to the bodies, or create some kind of joint and use CFM and ERP to make it soft? Also can someone clarify for me a bit more about ERP and CFM. What values make them behave which way and what purpose do they serve for ode exactly? Thanks, John Butterfield _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From jeffreyweber at hotmail.com Sun Oct 13 12:45:02 2002 From: jeffreyweber at hotmail.com (Jeff Weber) Date: Sun Oct 13 12:45:02 2002 Subject: [ODE] Springs Message-ID: I believe all that info is in the ode document. somewhere it explains how to use cfm and erp to mimick spring. ----Original Messa ge Follows---- From: "John Butterfield" To: ode@q12.org Subject: [ODE] Springs Date: Sun, 13 Oct 2002 07:52:48 -0700 If I want a shock between two bodies, would it be more efficient to use calculate the simple spring physics and apply direct forces to the bodies, or create some kind of joint and use CFM and ERP to make it soft? Also can someone clarify for me a bit more about ERP and CFM. What values make them behave which way and what purpose do they serve for ode exactly? Thanks, John Butterfield _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/od _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From martin at metahuman.org Sun Oct 13 13:17:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Sun Oct 13 13:17:02 2002 Subject: [ODE] Springs References: Message-ID: <3DA9D499.726503D7@metahuman.org> Hey John, I think the best test is, will the spring force change significantly in one time step? If so, you'd probably be better off with a constraint (i.e. a joint). If not, applying a force/torque using simple spring physics is probably better. John Butterfield wrote: > > Also can someone clarify for me a bit more about ERP and CFM. What values > make them behave which way and what purpose do they serve for ode exactly? That's answered in the ODE docs. It even tells you how to convert ERP and CFM values to spring parameters and back. - Martin From johnb003 at hotmail.com Sun Oct 13 20:42:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 20:42:02 2002 Subject: [ODE] Hinge Forces Message-ID: I drew a picture to help illustrate my problem: http://web.csuchico.edu/~jb393/urgent/images/hingeforce.gif If I apply force F to body m2, and it has one hinge joint to m1, will there be a much larger error than if I make another joint like in the picture? Is it better to represent the dynamics as simple as I can, or with a more structurally sound design? _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From russ at q12.org Sun Oct 13 21:18:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 13 21:18:01 2002 Subject: [ODE] Hinge Forces In-Reply-To: References: Message-ID: <20021013212244.21c5a8f6.russ@q12.org> > If I apply force F to body m2, and it has one hinge joint to m1, will > there be a much larger error than if I make another joint like in the > picture? the answer is that the configuration on the left is the correct one. one hinge joint is all you need to resist *any* amount of force that tries to push the hinge out of alignment. ODE does not model the breakable hinges that you buy from the hardware store, it models ones that are infinitely strong. having said this, from time to time you may see joints come slightly out of alignment, but this error usually has nothing to do with the forces that are applied to them. reasons for error might be: * the rotation of the joined bodies per timestep is large. * CFM is too high (this will give you "spongy" joints). * there is numerical error caused by redundant constraints. the configuration on the right side of your picture falls into this last category - you have two joints trying to do the same job (i.e. trying to limit the same degree of freedom) so this can cause numerical error (especially if CFM is small) and totally ruin the simulation. > Is it better to represent the dynamics as simple as I can, or with... as in most things, keeping it simple is best. but, as in most things, figuring out what the simple solution is can by tricky. russ. -- Russell Smith http://www.q12.org From johnb003 at hotmail.com Mon Oct 14 00:17:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 00:17:02 2002 Subject: [ODE] timestep Message-ID: Is there any harm in using variable times for the worldstep? I'd like to make things based on time not framerate and if I must use a constant time interval it seems like I'd have to use mutliple threads which would then cause the need for symaphores and it gets ugly from there. If I do a loop each frame for the amount of time that has passed, then I have large errors since the time passed could be like 1.5 times the time step. I just thought of an idea of truncating and adding the remainder to the next frame. But then I can imagine it being jerky. The best solution I can think of would be if I could just use variable time steps. _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From Tomas.Sakalauskas at axel-group.com Mon Oct 14 02:50:02 2002 From: Tomas.Sakalauskas at axel-group.com (Tomas Sakalauskas) Date: Mon Oct 14 02:50:02 2002 Subject: [ODE] timestep Message-ID: Each frame I tried to make as much complete steps as possible and then in the end perfom step equal to remaining time. I got problems when very small time steps were remaining. Then I added the time to next frame and used fixed timesteps, but either precision was not good enough or I had to use small timesteps, but then it consumed too much CPU. Variable timesteps seem to be ok if the variation is relatively small (or actually if minimal timesteps do not get close to 0). For this I have two timesteps defined - normal and minimal. Each frame I try to make as much normal steps as possible, if remaining time is more than minimal, I perform timestep equal to remaining time, otherwise I add the remainder to next frame. This way I can control both CPU consumption and precision of simulation - time error gets no bigger than minimal step. Writing this message, came up with the following strategy: - let T be the time needed to simulate. - calculate how many full steps you can perform this frame - N, - perform N timesteps lasting T/N, if N=0 and T is too small, just add it to next frame. This way timestep varies a little (but gets no more than DESIRED_STEP*2), and you get small time error only in the case that framerate is faster than minimal timestep you allow. If you' make N+1 steps lasting T/(N+1) instead, you will get range (DESIRED_STEP/2, DESIRED_STEP]. Hope that helps, Tomas -----Original Message----- From: John Butterfield [mailto:johnb003@hotmail.com] Sent: Monday, October 14, 2002 9:17 AM To: ode@q12.org Subject: [ODE] timestep Is there any harm in using variable times for the worldstep? I'd like to make things based on time not framerate and if I must use a constant time interval it seems like I'd have to use mutliple threads which would then cause the need for symaphores and it gets ugly from there. If I do a loop each frame for the amount of time that has passed, then I have large errors since the time passed could be like 1.5 times the time step. I just thought of an idea of truncating and adding the remainder to the next frame. But then I can imagine it being jerky. The best solution I can think of would be if I could just use variable time steps. _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Mon Oct 14 09:54:01 2002 From: coding at natew.com (Nate W) Date: Mon Oct 14 09:54:01 2002 Subject: [ODE] timestep In-Reply-To: Message-ID: On Mon, 14 Oct 2002, John Butterfield wrote: > Is there any harm in using variable times for the worldstep? I use variable timesteps in Juice, and it works fine. The interval between calls to dWorldStep depends on the time it took to call dWorldStep and re-draw the scene. Simple scenes get fast frame rates, complex structures with lots of joints get lower frame rates, and really really complex situations get really low frame rates and they start to act funny. I'm not aware of a really graceful way to handle running out of CPU power though. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Mon Oct 14 10:54:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 14 10:54:02 2002 Subject: [ODE] timestep In-Reply-To: Message-ID: > Is there any harm in using variable times for the worldstep? in theory there shouldn't be, in practice there is one small problem. if you take a small step then follow it by a much larger step then then any error-correcting velocity that was applied to the bodies in the first step will be extrapolated into a much larger velocity in the second step, potentially causing bodies to 'pop' away from each other. this problem has been on my list of things to fix for a while - i have a fix that should work well but will take time to implement (the underlying cause of the problem is rather subtle). russ. -- Russ Smith http://www.q12.org/ From ps_yumemi at yahoo.com Mon Oct 14 11:21:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 14 11:21:02 2002 Subject: [ODE] networking Message-ID: <20021014182023.92351.qmail@web40508.mail.yahoo.com> hello, i have a problem networking my ode robot simulator program. the program shows robots from different computers but they do not collide with each other. instead they go through each other. i created both of them using the same functions but they don't seem see each other. what could be wrong with my program? is it nearcallback or some other function? thanks pia __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From coding at natew.com Mon Oct 14 15:47:02 2002 From: coding at natew.com (Nate W) Date: Mon Oct 14 15:47:02 2002 Subject: [ODE] networking In-Reply-To: <20021014182023.92351.qmail@web40508.mail.yahoo.com> Message-ID: On Mon, 14 Oct 2002, pia dalusong wrote: > i have a problem networking my ode robot simulator > program. the program shows robots from different > computers but they do not collide with each other. Are geom objects being created and sized and positioned correctly for all of the bodies? Are all of the geom objects in the same space? When I was having trouble with collisions, I found it helpful to dump the names of each object at the very start of my collision callback. If you're not using the user-data pointer, set it to a char pointer with the object's name. If you are using the user-data pointer to point to an object of a class that you've defined, add a 'name' member to that class. This makes all kinds of debugging easier, IME. Also, out of curiousity, how are you doing the networking? Does all of the simulation take place on a server, or do the clients do some of the simulation math? I've been pondering a networked application using ODE for a while and I'm looking for ideas. I also thought it might be cool to create a simple networking 'contrib' for ODE, since interactive networked simulations could be used to do all kinds of fun stuff. It's an interesting distributed-computing problem, though. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From johnb003 at hotmail.com Mon Oct 14 19:35:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 19:35:02 2002 Subject: [ODE] networking Message-ID: >Also, out of curiousity, how are you doing the networking? Does all of >the simulation take place on a server, or do the clients do some of the >simulation math? I've been pondering a networked application using ODE >for a while and I'm looking for ideas. I have not actually implemented my netcode but I thoroughly thought about it and decided on how I'm going to do it. There are several trades offs I could see from server-side to client-side and who tells who what collisions happen. Thought the implementation you use is dependent on what your program is modeling. I am doing a remote-controlled racing game, but not like revolt... if you're curious just check out my page: http://web.csuchico.edu/~jb393/urgent I started thinking about client-side physics, but being a racing game it could be really weird. Here is an example: Your actual position is about a car's distance behind the other player... Through lag though, the other player seems right next to you. If you were to ram that car, then tell the server hey I hit him, and then the sever relay that to the the other player and bounce him away from you, you'd think it was perfectly legitimate. Now from the prospective of the car in front of you. That player sees you even further back than you really are, (like 2 car distances) so then he sees you move to the side and out of no where he gets bumped off course... Ok so this method obviously has it's flaws for a racing game but for a first person shooter or something, it would be necessary so that you could shoot AT the player... not in front of them. The other main method is to do things server side, the question then becomes how much to do on the server and how much to do on the client-side. Lets say you did everything server-side... this would be the absolute most accurate if you told the server I am turning left and it turned you left and then sent back the positions of you and the other players but then you have lagged controls and no one likes that. If you only plan on playing this on a lan, maybe the lag is not an issue for you and this method is best. The method I plan on using for my racing game is a hybrid of the two. I will keep track of the vehicles on the server and do collision detection (I have more to say about this... possibly in my next post) there between the vehicles. I however do the controls for my vehicle on the client and send the server information about my position rotation etc... depending on how accurate you might just send the information about the vehicle or model whatever in whole and have the server guess what orientation the bodies have. For example the rotation of the wheels and the locations of the shocks and all that or just the vehicle altogether... Anyway with this method, one might have to predict a bit or aim in front of the other car slightly to make the collision on the server happen... I'll attempt to fix this by trying to show how the car might look after this much time and then use some kind of frame to frame dampening to move the car from where I projected it to be to where the next packet says it is. I hope this was thought provoking, -John Butterfield _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From jeffreyweber at hotmail.com Mon Oct 14 20:23:01 2002 From: jeffreyweber at hotmail.com (Jeff Weber) Date: Mon Oct 14 20:23:01 2002 Subject: [ODE] fastcar vs. ode Message-ID: I apologize if this has been asked previously, but I'm currently researching different physics engines for simulating vehicles. Does anyone have any experience with "fastcar" http://www.oxforddynamics.co.uk/ How does it compare to ode? _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From nick.mcevoy at dsto.defence.gov.au Mon Oct 14 21:17:02 2002 From: nick.mcevoy at dsto.defence.gov.au (McEvoy, Nick) Date: Mon Oct 14 21:17:02 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <108E7D907871D6118B5000306E0189F82005EA@ednex504.dsto.defence.gov.au> Peter wrote: >Nick, did any of these experiments work? (i.e. get rid of the >wheel-bending problem)? No I have not yet been able to rid myself of the wheel-bending problem as you turn corners at high speed (I noticed the buggy_demo has the same 'subtle feature'). I tried (each sim step)... - dBodySetFiniteRotationMode() - dBodySetFiniteRotationAxis() It reduced the problem but did not remove it completely. I tried different combinations of contact values ERP, CFM & slip, also gravity, I have not yet try different wheel/body mass & geoms. All my changes either increased or reduced bendy wheels but did not remove it. The problem is that bendy wheels make my 'car' impossible to control ... it looks like someone attached the wheels with a rubber band ... hilarious fun if thats the sort of game I was trying to write ! :) (russ/ode_users?) Why is it not possible to totally stop the hinge2 'axles' becoming 'bent' ? Nick From p.terdiman at wanadoo.fr Mon Oct 14 21:29:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 14 21:29:01 2002 Subject: [ODE] fastcar vs. ode References: Message-ID: <03cf01c27403$1f2d94c0$0e00000a@pierre> > I apologize if this has been asked previously, but I'm currently researching > different physics engines for simulating vehicles. Does anyone have any > experience with "fastcar" http://www.oxforddynamics.co.uk/ > > How does it compare to ode? FastCar uses penalty methods, so I'd say it's faster, but not as stable. (No, I've never used it.) Pierre From Nguyen Binh Mon Oct 14 22:05:01 2002 From: Nguyen Binh (Nguyen Binh) Date: Mon Oct 14 22:05:01 2002 Subject: [ODE] fastcar vs. ode In-Reply-To: References: Message-ID: <1102252288.20021015120049@glassegg.com> JW> I apologize if this has been asked previously, but I'm currently researching JW> different physics engines for simulating vehicles. Does anyone have any JW> experience with "fastcar" http://www.oxforddynamics.co.uk/ JW> How does it compare to ode? FastCar is specialized for vehicle. ODE is generic physics package. So say, for vehicle physics FastCar "maybe" better. But we shouldn't compare a 20.000 bulks package with a free open source one... And more, technically ,as far as I know , Fastcar use penalty method so it may be fast but not stable. -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From johnb003 at hotmail.com Mon Oct 14 22:35:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 22:35:02 2002 Subject: [ODE] Collision Detection - Quick Question About ODE Internals Message-ID: struct dContactGeom { dVector3 pos; // contact position dVector3 normal; // normal vector dReal depth; // penetration depth dGeomID g1,g2; // the colliding geoms }; Does ODE need the dGeomID's when doing the dynamics? For example, if I use alternate collision detection, do I have to use geoms? _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From ps_yumemi at yahoo.com Mon Oct 14 22:50:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 14 22:50:01 2002 Subject: [ODE] networking In-Reply-To: Message-ID: <20021015054936.58434.qmail@web40512.mail.yahoo.com> Someone pointed out to me that my question was a little vague so i'll try to make my program clearer. I have a robot simulator program that can connect to other simulations using directx8 directplay using a peer to peer connection. I connect through a LAN connection and I'm doing this so I can simulate two robots at the same time in the same environment even if the specs for the two robots are not in the same computer. It's my thesis project so I can graduate in college. I just send the speed and direction of the robot in my pc to the other computer and vice versa. i created both mobots so they all have corresponding dBodyIDs and dGeomIDs. I guess I'm just worried coz the only things i considered in the nearcallback function are the sensors. and yes we were planning to distribute this program as an open source program after i finish it. any comments or suggesions are welcome. thanks > __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From russ at q12.org Mon Oct 14 23:19:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 14 23:19:02 2002 Subject: [ODE] Collision Detection - Quick Question About ODE Internals In-Reply-To: References: Message-ID: <20021014232322.0ea0ba61.russ@q12.org> > Does ODE need the dGeomID's when doing the dynamics? For example, if I > use alternate collision detection, do I have to use geoms? the geom IDs (g1 and g2) are in the contact structure because you may pass groups to dCollide and then get returned a list of contacts between (potentially) many different bodies. in this case your code would have to examine each g1,g2 and e.g. figure out which body it's for, create the contact joint on that body, etc. if you're using another collision package that doesn't have this feature, you just set g1,g2 to 0 (or don't set them at all) and remember not to use them in your code. russ. -- Russell Smith http://www.q12.org From kaffiene at xtra.co.nz Tue Oct 15 14:33:02 2002 From: kaffiene at xtra.co.nz (Peter) Date: Tue Oct 15 14:33:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005EA@ednex504.dsto.defence.gov.au> Message-ID: <008601c27492$2ed71510$5c02a8c0@peter> > Peter wrote: > > >Nick, did any of these experiments work? (i.e. get rid of the > >wheel-bending problem)? > > No I have not yet been able to rid myself of the wheel-bending problem as > you turn corners at high speed (I noticed the buggy_demo has the same > 'subtle feature'). > > I tried (each sim step)... > - dBodySetFiniteRotationMode() > - dBodySetFiniteRotationAxis() > > It reduced the problem but did not remove it completely. > > I tried different combinations of contact values ERP, CFM & slip, also > gravity, I have not yet try different wheel/body mass & geoms. All my > changes either increased or reduced bendy wheels but did not remove it. > > The problem is that bendy wheels make my 'car' impossible to control ... > it looks like someone attached the wheels with a rubber band ... hilarious > fun if thats the sort of game I was trying to write ! :) That was pretty much exactly the results I got - this problem has completely killed my ODE project. > (russ/ode_users?) Why is it not possible to totally stop the hinge2 > 'axles' becoming 'bent' ? The question has been asked a lot of times, but it seems the only people who ever discuss it are people (like me) who want to use ODE, but don't know enough physics to fix it (sheesh! I find comprehending ODE hard enough for my little brain!) But it *would* be nice if Russ or someone else equally en-clued could chime in? Cheers, Peter. From Brad at fie.us Tue Oct 15 16:10:02 2002 From: Brad at fie.us (Brad Friedman) Date: Tue Oct 15 16:10:02 2002 Subject: [ODE] VStudioNet Message-ID: <3DACA09A.50505@fie.us> Hello. I just joined this list just now. So if this has already been gone over, please excuse my ignorance. I grabbed the release of ODE 0.3 and went about trying to get it to load in Visual Studio .net. I found the project files in the contrib directory of the web-based CVS useful. However, I did encounter a problem, and I did solve it. It might be worth updating the project files. When I changed the preprocessor directive from dDOUBLE to dSINGLE, it stopped compiling correctly. A little work brought me to a section of code regarding HUGE_VAL and HUGE_VALF. I then relized the project file did not have a "MSVC" preprocessor directive and therefore was trying to compile incorrectly. I realize the VS projects were in the contrib directory for a reason. However, its probably worth updating them to have the "MSVC" preprocessor directive by default. Thanks. -Brad Friedman From russ at q12.org Tue Oct 15 16:32:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 15 16:32:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <008601c27492$2ed71510$5c02a8c0@peter> Message-ID: > > (russ/ode_users?) Why is it not possible to totally stop the hinge2 > > 'axles' becoming 'bent' ? well, anything is possible :) the question is, why does it happen in the first place. here's the answer: ODE stores the position and orientation of each body independently. if there is any error in the integration step then it is possible for the bodies to be in positions/orientations where the joints do not line up properly (i call this 'joint error', it is the same thing as the wheels getting bent in hinge2). there are many sources of joint error, but the surest way to introduce error is to have two or more jointed bodies that are rotating very fast with respect to each other. this is because the physics model and the integrator use certain linear assumptions about the way that bodies will move during a time step - if the bodies are rotating so fast that the new configuration at the end of the step is completely different, then these linear assumptions are just plain wrong (and the bodies will not be moved to the correct places). this is a problem that afflicts all 'cartesian coordinate' or 'lagrange multiplier based' simulators. reduced coordinate simulators like dynamecth dont have this problem (for the bodies along the main tree), because the coordinate system they use simply doesn't allow for the possibility that the bodies will not be aligned correctly (the same problem will occurr when you close any loops however). ODE has a partial fix for this problem, which is the dBodySetFiniteRotationAxis() function and friends. but note that this is an exercise in error reduction, not error elimination - it will increase the speed at which a vechicle can be reliably made to move. for *very* fast moving vehicles where the wheels rotate a large proportion of one cycle per timestep, completely eliminating the error is going to require a lot of fiddling. another approach for simulating wheels is to 'fake them' or 'raycast them' - these approaches are effective for computer games, because the difference between 'perfect physics' and 'physics that is completely wrong' is not generally noticeable to the player (or even to an experienced physicist). the only caveat here is that with increasing physical realism comes the chance for better emergent (and/or synergistic) behavior coming out of the simulation. you have to be careful that you are not faking so much that your resulting behavior is little better than hard-coded animation. will ODE support these methods in the future? it's possible. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Tue Oct 15 19:18:02 2002 From: coding at natew.com (Nate W) Date: Tue Oct 15 19:18:02 2002 Subject: [ODE] VStudioNet In-Reply-To: <3DACA09A.50505@fie.us> Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --1363170581-1485151701-1034706356=:21665 Content-Type: TEXT/PLAIN; charset=US-ASCII On Tue, 15 Oct 2002, Brad Friedman wrote: > When I changed the preprocessor directive from dDOUBLE to dSINGLE, it > stopped compiling correctly. A little work brought me to a section of > code regarding HUGE_VAL and HUGE_VALF. I then relized the project file > did not have a "MSVC" preprocessor directive and therefore was trying to > compile incorrectly. That would be my mistake. I was using dDOUBLE until I started using the tri-collider extension, and after I found the MSVC problem with the TC project, I neglected to also fix it in the non-TC project file. I've attached a .vcproj file that takes care of this. Russ, could you add it to the CVS, under contrib/MSVC7/ode_default, replacing the existing file? Thanks, guys. -- Nate Waddoups Redmond WA USA http://www.natew.com --1363170581-1485151701-1034706356=:21665 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="default.vcproj" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="default.vcproj" PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZyA9ICJXaW5kb3dzLTEyNTIi Pz4NDQo8VmlzdWFsU3R1ZGlvUHJvamVjdA0NCglQcm9qZWN0VHlwZT0iVmlz dWFsIEMrKyINDQoJVmVyc2lvbj0iNy4wMCINDQoJTmFtZT0ib2RlX2RlZmF1 bHQiDQ0KCVByb2plY3RHVUlEPSJ7MUJGNzVGRUItODdERC00ODZDLTg4MEIt MjI3OTg3RDE5MUMyfSINDQoJS2V5d29yZD0iQXRsUHJvaiI+DQ0KCTxQbGF0 Zm9ybXM+DQ0KCQk8UGxhdGZvcm0NDQoJCQlOYW1lPSJXaW4zMiIvPg0NCgk8 L1BsYXRmb3Jtcz4NDQoJPENvbmZpZ3VyYXRpb25zPg0NCgkJPENvbmZpZ3Vy YXRpb24NDQoJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINDQoJCQlPdXRwdXREaXJl Y3Rvcnk9IkRlYnVnIg0NCgkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iRGVi dWciDQ0KCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQ0KCQkJVXNlT2ZBVEw9 IjEiDQ0KCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZB TFNFIg0NCgkJCUNoYXJhY3RlclNldD0iMiI+DQ0KCQkJPFRvb2wNDQoJCQkJ TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINDQoJCQkJT3B0aW1pemF0aW9uPSIw Ig0NCgkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8u Li9pbmNsdWRlIg0NCgkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lO MzI7X1dJTkRPV1M7X0RFQlVHO19VU1JETEw7ZERPVUJMRTtNU1ZDIg0NCgkJ CQlNaW5pbWFsUmVidWlsZD0iVFJVRSINDQoJCQkJQmFzaWNSdW50aW1lQ2hl Y2tzPSIzIg0NCgkJCQlSdW50aW1lTGlicmFyeT0iMyINDQoJCQkJVXNlUHJl Y29tcGlsZWRIZWFkZXI9IjAiDQ0KCQkJCVdhcm5pbmdMZXZlbD0iMyINDQoJ CQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJGQUxTRSINDQoJ CQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPg0NCgkJCTxUb29sDQ0K CQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNMaW5rZXJUb29sIg0NCgkJCQlJZ25vcmVJbXBvcnRMaWJy YXJ5PSJUUlVFIg0NCgkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvb2RlLmRs bCINDQoJCQkJTGlua0luY3JlbWVudGFsPSIyIg0NCgkJCQlNb2R1bGVEZWZp bml0aW9uRmlsZT0iLi5cLi5cLi5cY29uZmlnXG1zdmNkZWZzLmRlZiINDQoJ CQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0NCgkJCQlTdWJT eXN0ZW09IjIiDQ0KCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKS9vZGUu bGliIg0NCgkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNNSURMVG9vbCINDQoJCQkJUHJlcHJvY2Vzc29yRGVmaW5p dGlvbnM9Il9ERUJVRyINDQoJCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJGQUxT RSINDQoJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQ0KCQkJCUdlbmVyYXRl U3R1Ymxlc3NQcm94aWVzPSJUUlVFIg0NCgkJCQlUeXBlTGlicmFyeU5hbWU9 IiQoSW50RGlyKS9kZWZhdWx0LnRsYiINDQoJCQkJSGVhZGVyRmlsZU5hbWU9 ImRlZmF1bHQuaCINDQoJCQkJRExMRGF0YUZpbGVOYW1lPSIiDQ0KCQkJCUlu dGVyZmFjZUlkZW50aWZpZXJGaWxlTmFtZT0iZGVmYXVsdF9pLmMiDQ0KCQkJ CVByb3h5RmlsZU5hbWU9ImRlZmF1bHRfcC5jIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQ0KCQkJCURlc2NyaXB0 aW9uPSJQZXJmb3JtaW5nIHJlZ2lzdHJhdGlvbiINDQoJCQkJQ29tbWFuZExp bmU9InJlZ3N2cjMyIC9zIC9jICZxdW90OyQoVGFyZ2V0UGF0aCkmcXVvdDsi DQ0KCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJUUlVFIi8+DQ0KCQkJPFRvb2wN DQoJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0NCgkJCTxUb29s DQ0KCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0NCgkJCTxUb29s DQ0KCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQ0KCQkJCVBy ZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQ0KCQkJCUN1bHR1cmU9 IjEwMzMiDQ0KCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQo SW50RGlyKSIvPg0NCgkJCTxUb29sDQ0KCQkJCU5hbWU9IlZDV2ViU2Vydmlj ZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0NCgkJCTxUb29sDQ0KCQkJCU5hbWU9 IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NDQoJCTwvQ29uZmlndXJhdGlvbj4N DQoJCTxDb25maWd1cmF0aW9uDQ0KCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIN DQoJCQlPdXRwdXREaXJlY3Rvcnk9IlJlbGVhc2UiDQ0KCQkJSW50ZXJtZWRp YXRlRGlyZWN0b3J5PSJSZWxlYXNlIg0NCgkJCUNvbmZpZ3VyYXRpb25UeXBl PSIyIg0NCgkJCVVzZU9mQVRMPSIxIg0NCgkJCUFUTE1pbmltaXplc0NSdW5U aW1lTGlicmFyeVVzYWdlPSJGQUxTRSINDQoJCQlDaGFyYWN0ZXJTZXQ9IjIi Pg0NCgkJCTxUb29sDQ0KCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQ0K CQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0NCgkJCQlBZGRpdGlv bmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLi8uLi8uLi9pbmNsdWRlIg0NCgkJ CQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X1dJTkRPV1M7TkRF QlVHO19VU1JETEw7ZFNJTkdMRTtNU1ZDIg0NCgkJCQlTdHJpbmdQb29saW5n PSJUUlVFIg0NCgkJCQlSdW50aW1lTGlicmFyeT0iMiINDQoJCQkJRW5hYmxl RnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQ0KCQkJCVVzZVByZWNvbXBp bGVkSGVhZGVyPSIwIg0NCgkJCQlXYXJuaW5nTGV2ZWw9IjMiDQ0KCQkJCURl dGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiDQ0KCQkJCURl YnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4NDQoJCQk8VG9vbA0NCgkJCQlO YW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0NCgkJCTxUb29sDQ0KCQkJCU5h bWU9IlZDTGlua2VyVG9vbCINDQoJCQkJSWdub3JlSW1wb3J0TGlicmFyeT0i VFJVRSINDQoJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL29kZS5kbGwiDQ0K CQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINDQoJCQkJTW9kdWxlRGVmaW5pdGlv bkZpbGU9Ii4uXC4uXC4uXGNvbmZpZ1xtc3ZjZGVmcy5kZWYiDQ0KCQkJCUdl bmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iRkFMU0UiDQ0KCQkJCVN1YlN5c3Rl bT0iMiINDQoJCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpL29kZS5saWIi DQ0KCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NDQoJCQk8VG9vbA0NCgkJCQlO YW1lPSJWQ01JRExUb29sIg0NCgkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9u cz0iTkRFQlVHIg0NCgkJCQlNa1R5cExpYkNvbXBhdGlibGU9IkZBTFNFIg0N CgkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINDQoJCQkJR2VuZXJhdGVTdHVi bGVzc1Byb3hpZXM9IlRSVUUiDQ0KCQkJCVR5cGVMaWJyYXJ5TmFtZT0iJChJ bnREaXIpL2RlZmF1bHQudGxiIg0NCgkJCQlIZWFkZXJGaWxlTmFtZT0iZGVm YXVsdC5oIg0NCgkJCQlETExEYXRhRmlsZU5hbWU9IiINDQoJCQkJSW50ZXJm YWNlSWRlbnRpZmllckZpbGVOYW1lPSJkZWZhdWx0X2kuYyINDQoJCQkJUHJv eHlGaWxlTmFtZT0iZGVmYXVsdF9wLmMiLz4NDQoJCQk8VG9vbA0NCgkJCQlO YW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINDQoJCQkJRGVzY3JpcHRpb249 IlBlcmZvcm1pbmcgcmVnaXN0cmF0aW9uIg0NCgkJCQlDb21tYW5kTGluZT0i cmVnc3ZyMzIgL3MgL2MgJnF1b3Q7JChUYXJnZXRQYXRoKSZxdW90OyINDQoJ CQkJRXhjbHVkZWRGcm9tQnVpbGQ9IlRSVUUiLz4NDQoJCQk8VG9vbA0NCgkJ CQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQ0KCQkJPFRvb2wNDQoJ CQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINDQoJCQkJUHJlcHJv Y2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINDQoJCQkJQ3VsdHVyZT0iMTAz MyINDQoJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChJbnRE aXIpIi8+DQ0KCQkJPFRvb2wNDQoJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJv eHlHZW5lcmF0b3JUb29sIi8+DQ0KCQkJPFRvb2wNDQoJCQkJTmFtZT0iVkNX ZWJEZXBsb3ltZW50VG9vbCIvPg0NCgkJPC9Db25maWd1cmF0aW9uPg0NCgk8 L0NvbmZpZ3VyYXRpb25zPg0NCgk8RmlsZXM+DQ0KCQk8RmlsdGVyDQ0KCQkJ TmFtZT0iU291cmNlIEZpbGVzIg0NCgkJCUZpbHRlcj0iY3BwO2M7Y3h4O2Rl ZjtvZGw7aWRsO2hwajtiYXQ7YXNtIj4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxh dGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcV2luMzIuY3BwIj4NDQoJCQk8 L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwu LlxvZGVcc3JjXGFycmF5LmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxl DQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xlcnJvci5j cHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBh dGg9Ii4uXC4uXC4uXG9kZVxzcmNcZmFzdGRvdC5jIj4NDQoJCQk8L0ZpbGU+ DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVc c3JjXGZhc3RsZGx0LmMiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcZmFzdGxzb2x2ZS5j Ij4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRo PSIuLlwuLlwuLlxvZGVcc3JjXGZhc3RsdHNvbHZlLmMiPg0NCgkJCTwvRmls ZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9k ZVxzcmNcZ2VvbS5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcam9pbnQuY3BwIj4N DQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIu LlwuLlwuLlxvZGVcc3JjXGxjcC5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8 RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcbWFz cy5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2 ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcbWF0LmNwcCI+DQ0KCQkJPC9GaWxl Pg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2Rl XHNyY1xtYXRyaXguY3BwIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJ CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXG1lbW9yeS5jcHAi Pg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9 Ii4uXC4uXC4uXG9kZVxzcmNcbWlzYy5jcHAiPg0NCgkJCTwvRmlsZT4NDQoJ CQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGNvbmZpZ1xt c3ZjZGVmcy5kZWYiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlS ZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcb2JzdGFjay5jcHAiPg0N CgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4u XC4uXC4uXG9kZVxzcmNcb2RlLmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxG aWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xvZGVt YXRoLmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0 aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xyb3RhdGlvbi5jcHAiPg0NCgkJ CTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u XC4uXG9kZVxzcmNcc3BhY2UuY3BwIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZp bGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXHN0ZXAu Y3BwIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQ YXRoPSIuLlwuLlwuLlxvZGVcc3JjXHRlc3RpbmcuY3BwIj4NDQoJCQk8L0Zp bGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxv ZGVcc3JjXHRpbWVyLmNwcCI+DQ0KCQkJPC9GaWxlPg0NCgkJPC9GaWx0ZXI+ DQ0KCQk8RmlsdGVyDQ0KCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0NCgkJCUZp bHRlcj0iaDtocHA7aHh4O2htO2lubDtpbmMiPg0NCgkJCTxGaWxlDQ0KCQkJ CVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xhcnJheS5oIj4NDQoJ CQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwu LlwuLlxvZGVcc3JjXGdlb21faW50ZXJuYWwuaCI+DQ0KCQkJPC9GaWxlPg0N CgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cb2RlXHNy Y1xqb2ludC5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVs YXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXGxjcC5oIj4NDQoJCQk8L0Zp bGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxv ZGVcc3JjXG1hdC5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJ UmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxvZGVcc3JjXG9iamVjdHMuaCI+DQ0K CQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5c Li5cLi5cb2RlXHNyY1xvYnN0YWNrLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8 RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxzcmNcc3Rh Y2suaCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZl UGF0aD0iLi5cLi5cLi5cb2RlXHNyY1xzdGVwLmgiPg0NCgkJCTwvRmlsZT4N DQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXG9kZVxz cmNcdGVzdGluZy5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQk8L0ZpbHRlcj4NDQoJ CTxGaWx0ZXINDQoJCQlOYW1lPSJTaGFyZWQgSGVhZGVyIEZpbGVzIg0NCgkJ CUZpbHRlcj0iIj4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4u XC4uXC4uXGluY2x1ZGVcb2RlXGNvbW1vbi5oIj4NDQoJCQk8L0ZpbGU+DQ0K CQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxpbmNsdWRl XG9kZVxjb25maWcuaCI+DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJ CVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5caW5jbHVkZVxvZGVcY29udGFjdC5o Ij4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRo PSIuLlwuLlwuLlxpbmNsdWRlXG9kZVxlcnJvci5oIj4NDQoJCQk8L0ZpbGU+ DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxpbmNs dWRlXG9kZVxnZW9tLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXG1hc3MuaCI+ DQ0KCQkJPC9GaWxlPg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0i Li5cLi5cLi5caW5jbHVkZVxvZGVcbWF0cml4LmgiPg0NCgkJCTwvRmlsZT4N DQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1 ZGVcb2RlXG1lbW9yeS5oIj4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJ CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxpbmNsdWRlXG9kZVxtaXNjLmgi Pg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9 Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXG9iamVjdHMuaCI+DQ0KCQkJPC9GaWxl Pg0NCgkJCTxGaWxlDQ0KCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5caW5j bHVkZVxvZGVcb2RlLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJ CQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXG9kZWNwcC5o Ij4NDQoJCQk8L0ZpbGU+DQ0KCQkJPEZpbGUNDQoJCQkJUmVsYXRpdmVQYXRo PSIuLlwuLlwuLlxpbmNsdWRlXG9kZVxvZGVtYXRoLmgiPg0NCgkJCTwvRmls ZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGlu Y2x1ZGVcb2RlXHJvdGF0aW9uLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8Rmls ZQ0NCgkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXHNw YWNlLmgiPg0NCgkJCTwvRmlsZT4NDQoJCQk8RmlsZQ0NCgkJCQlSZWxhdGl2 ZVBhdGg9Ii4uXC4uXC4uXGluY2x1ZGVcb2RlXHRpbWVyLmgiPg0NCgkJCTwv RmlsZT4NDQoJCTwvRmlsdGVyPg0NCgkJPEZpbGUNDQoJCQlSZWxhdGl2ZVBh dGg9IlJlYWRNZS50eHQiPg0NCgkJPC9GaWxlPg0NCgk8L0ZpbGVzPg0NCgk8 R2xvYmFscz4NDQoJPC9HbG9iYWxzPg0NCjwvVmlzdWFsU3R1ZGlvUHJvamVj dD4NDQo= --1363170581-1485151701-1034706356=:21665-- From coding at natew.com Tue Oct 15 19:28:02 2002 From: coding at natew.com (Nate W) Date: Tue Oct 15 19:28:02 2002 Subject: [ODE] VStudioNet In-Reply-To: Message-ID: This thread has reminded me of something I've been meaning to ask... is anyone else out there using VS.net and ODE+tri-collider? In my case, the compiler warning messages often have the wrong line numbers, and debugging induces big headaches fast because the debugger usually goes to the wrong line in the source file. Is anyone else seeing this? -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Tue Oct 15 19:40:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 15 19:40:02 2002 Subject: [ODE] VStudioNet In-Reply-To: References: <3DACA09A.50505@fie.us> Message-ID: <20021015194355.1e9eeb85.russ@q12.org> > I've attached a .vcproj file that takes care of this. Russ, could you > add it to the CVS, under contrib/MSVC7/ode_default, replacing the existing > file? done. russ. -- Russell Smith http://www.q12.org From Tomas.Sakalauskas at axel-group.com Wed Oct 16 00:13:02 2002 From: Tomas.Sakalauskas at axel-group.com (Tomas Sakalauskas) Date: Wed Oct 16 00:13:02 2002 Subject: [ODE] VStudioNet Message-ID: Yes. You have to replace CRCRLF in files with CRLF, this confuses VS.NET. Tomas -----Original Message----- From: Nate W [mailto:coding@natew.com] Sent: Tuesday, October 15, 2002 8:36 PM To: ode@q12.org Subject: Re: [ODE] VStudioNet This thread has reminded me of something I've been meaning to ask... is anyone else out there using VS.net and ODE+tri-collider? In my case, the compiler warning messages often have the wrong line numbers, and debugging induces big headaches fast because the debugger usually goes to the wrong line in the source file. Is anyone else seeing this? -- Nate Waddoups Redmond WA USA http://www.natew.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From ps_yumemi at yahoo.com Wed Oct 16 00:44:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Wed Oct 16 00:44:02 2002 Subject: [ODE] networking Message-ID: <20021016074301.19079.qmail@web40514.mail.yahoo.com> hello first of all thanks for replying. I'm not using a client/server type of connection. I'm using a peer to peer connection. This means that I only have one program and though it may act as a server at times it doesn't. The movements of the a robot is calculated by the local computer and it just sends a message containing the speed and orientation of the mobot to the other computers. Any computer sends a message to all the other computers connected to the same simulation like a broadcast message. I use ODE for practically everything even the positioning. and yes, all the geoms and bodies are created properly. although yes I do have problems concerning the lag. and i'm still working on that. any suggestions are welcome. and all the robots exist in the same space and world. thanks pia __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From johnb003 at hotmail.com Wed Oct 16 01:10:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Wed Oct 16 01:10:02 2002 Subject: [ODE] IRC Community Message-ID: If anyone is interested, I started a channel on efnet for ode... as you might have guessed it's #ode. I encourage anyone to go there that is interested in ode, can contribute to the community, has questions, or just wants to say hi. I'll be hanging around there as Return0. Thanks -John Butterfield If people start to show up maybe russ can mention it on his page or something. _________________________________________________________________ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 From I.Munro at herts.ac.uk Wed Oct 16 01:38:13 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Wed Oct 16 01:38:13 2002 Subject: [ODE] VStudioNet Message-ID: Nate wrote: > This thread has reminded me of something I've been meaning to > ask... is > anyone else out there using VS.net and ODE+tri-collider? In > my case, the > compiler warning messages often have the wrong line numbers, > and debugging > induces big headaches fast because the debugger usually goes > to the wrong > line in the source file. Is anyone else seeing this? I'm using vs.net and ode (but not tri-collider). I've come across similar problems when debugging, but only when I've accidentally switched on compiler optimisation. And the lines I'm trying to debug have been optimised out of existence. Ian From Remko at act-3d.com Wed Oct 16 06:26:02 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Wed Oct 16 06:26:02 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <277399354.5556039.98@server> You can fix the viual appearance of the wheel easily though. Just use the position from ODE, get the wheel rotation angle and create your own rotation matrix from this angle and the matrix of the vehicle body. This will not improve the handling of the car but at least the image looks right :) Note: you need to calculate the pitch rotation of the wheel yourself because Ode can not provide this info (hint.. hint.. Russ :) ). -Remko From ericc at xenopi.com Wed Oct 16 10:02:02 2002 From: ericc at xenopi.com (Eric Cha) Date: Wed Oct 16 10:02:02 2002 Subject: [ODE] networking In-Reply-To: <20021016074301.19079.qmail@web40514.mail.yahoo.com> Message-ID: <000001c27536$37d05880$6401a8c0@donald> Pia, Your problem is a bit tricky to pin down, but here is my theory: Since you are controlling each robot separately (via different computers), any collisions detected by a given computer have to be transmitted (propagated) to the other computers. You didn't mention whether or not you are transmitting collision information in your program, but I am going to assume that you are.. So, assuming you are propagating collision info properly (although in a peer-to-peer topology this is going to be tricky..), the other problem may be (depending on how your network code functions) one of "lag induced information negation".. What I mean is, computer "A" determines a collision has occurred and transmits the info to computer "B". However, because of lag, computer "B" transmits a new position to "A" before receiving the collision info from "A". The new position info from "B" then OVERRIDES the collision that "A" detected, and forces "A" to put it's representation of "B" into the new spot. Computer "B" finally receives the collision info, but disregards it because it happened at a position which is not current.. This scenario assumes MANY things about your network code, so it is not a definite answer. A better way (for physics) to do things would be to designate one computer as "the physics simulator". Do the entire scene simulation on that computer, and then just transmit position/orientation/velocity updates to other computers. Of course, other computers would transmit user inputs (or even impulse/velocity/acceleration changes) to the simulator computer to control their respective robot. Don't know if that helped you or not, but that's my .02. =) Eric > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > Of pia dalusong > Sent: Wednesday, October 16, 2002 12:43 AM > To: ode@q12.org > Subject: [ODE] networking > > > hello > > first of all thanks for replying. > I'm not using a client/server type of connection. I'm > using a peer to peer connection. This means that I > only have one program and though it may act as a > server at times it doesn't. The movements of the a > robot is calculated by the local computer and it just > sends a message containing the speed and orientation > of the mobot to the other computers. Any computer > sends a message to all the other computers connected > to the same simulation like a broadcast message. > I use ODE for practically everything even the > positioning. and yes, all the geoms and bodies are > created properly. > > although yes I do have problems concerning the lag. > and i'm still working on that. any suggestions are > welcome. and all the robots exist in the same space > and world. > > thanks > > pia > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From anselm at hook.org Wed Oct 16 12:10:02 2002 From: anselm at hook.org (Anselm Hook) Date: Wed Oct 16 12:10:02 2002 Subject: [ODE] networking In-Reply-To: <000001c27536$37d05880$6401a8c0@donald> Message-ID: Hi, Eric probably has the best solution (do all the dynamics on one machine); networking physics is a bit of an oxymoron - you have high frequency events being propagated over a sluggish pipe. The naive scheme is to use a heartbeat to syncronize state between machines. Presumably if all machines are always in the same state then any new inputs delivered to all machines simultaneously will have the same effect. This would result in unacceptable delays however. If you are 70 ms from a server then your sim is at least 140ms delayed. Humans start to notice delay at around 20ms and ordinary inter-continental phone conversations become difficult with >70ms delays. Modems typically incur a 30ms delay and even tcp packet building and buffering can incur a 10ms delay... obviously you need a carefully chosen hack. If you look on the net there were once a number of companies that specialized in fast networking for games (I think most of them are bankrupt now). One scheme that I liked was a dual simulation scheme: There were two instances of the simulation running - one that was current and speculative (allowing gratifying instant feedback) and the other was an authoritative simulation that used an ordinary heartbeat but suffered from the full latency of the network. The current simulation was periodically (once every tenth of a second or so) re-computed forward from the correct but temporally old simulation. So most of the time things would work, but every so often the actors would pop around a bit. This is probably the best possible scheme one can hope to achieve although it does put a large load on the client machines. Also there is quite a bit of research at Darpa and in some of the game dev journals about various robust networking schemes. Another scheme (Russ once mentioned) is the idea of a networked constraint; that maintains the force interaction between objects over a network (hmm, sounds like quantum physics). He'd have to explain that. Here is a trivial scheme I've used for non-dynamics networking. Your mileage may vary - it is highly inaccurate - it simply creates a reasonably believable 'fiction' without forcing all machines to be syncronized or forcing the load to be computed on the server. But note that it is a hack. 1) First one designates one instance of an object as the "authoritative instance" and the other instances of that same object (as exist on each separate machine) as the "ghosts" or non-authoritative instances. 2) Requests to interact with any object (in state changing ways) have to be routed to the authoritative instance. The authoritative instance then echoes a second message indicating result states that all ghosts should seek to be in. (A vanilla client server network like say 'Quake' therefore is emulated by simply having all authoritative instances reside on the server rather than on the client leaf nodes of the network. A peer to peer network is designed by marking non-server objects as authoritative and forcing requests to be re-routed to that instance (often involving network traffic)). 3) It is ok for a ghost to locally speculate about what it should do when it receives an impact - but throw away that information when more authoritative feedback arrives. This often results in a ghost being translated part way into another object - this inter-penetration can however help the simulation as will be discussed below. So for example: Lets pretend you have p2p network of two machines and two robots. Each machine is going to have an instance of each robot. I like to draw out these instance graphs using a simple c like notation - in this case it might look like this: network { machine1 { robot1 { is_authoritative { yes } request_impact{} } robot2 { is_authoritative { no } where_is_authority { machine2:robot2 } request_impact{} } } machine2 { robot1 { is_authoritative { no } where_is_authority { machine1:robot1 } request_impact{} } robot2 { is_authoritative { yes } request_impact{} } } } Any requests to apply forces to an object get sent to the authority first and the authority echoes out a real force to apply. A ghost is treated like a statue; it simply doesn't move right away when you hit it. An elaboration of this would be to allow ghosts to be simulated normally but for the authority to transmit all authoritative state (position, current forces) to all ghosts after each new force. This would result in inter-penetration as ghosts were popped to new locations... but has worked ok for me in the past. I would even propagate extremely high level events such as "cross bridge" and allow each ghost to fulfill the event as it wished - creating often quite different but plausibly believable fictions. Anyway, as I said, your mileage may vary - it really depends on what you're trying to do. If you simply can't afford to compute the simulation twice, and if all you care about is some reasonably believable non-diverging physics then this might be acceptable - it is certainly good enough for most games. Today I'd probably use something more robust myself though. Hmmm, I wonder what a networked version of 'Juice' would be like. Robot wars anybody? :-). - a On Wed, 16 Oct 2002, Eric Cha wrote: > Pia, > > Your problem is a bit tricky to pin down, but here is my theory: > > Since you are controlling each robot separately (via different > computers), any collisions detected by a given computer have to be > transmitted (propagated) to the other computers. You didn't mention > whether or not you are transmitting collision information in your > program, but I am going to assume that you are.. > > So, assuming you are propagating collision info properly (although in a > peer-to-peer topology this is going to be tricky..), the other problem > may be (depending on how your network code functions) one of "lag > induced information negation".. What I mean is, computer "A" determines > a collision has occurred and transmits the info to computer "B". > However, because of lag, computer "B" transmits a new position to "A" > before receiving the collision info from "A". The new position info > from "B" then OVERRIDES the collision that "A" detected, and forces "A" > to put it's representation of "B" into the new spot. Computer "B" > finally receives the collision info, but disregards it because it > happened at a position which is not current.. > > This scenario assumes MANY things about your network code, so it is not > a definite answer. > > A better way (for physics) to do things would be to designate one > computer as "the physics simulator". Do the entire scene simulation on > that computer, and then just transmit position/orientation/velocity > updates to other computers. Of course, other computers would transmit > user inputs (or even impulse/velocity/acceleration changes) to the > simulator computer to control their respective robot. > > Don't know if that helped you or not, but that's my .02. =) > > Eric > > > -----Original Message----- > > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > > Of pia dalusong > > Sent: Wednesday, October 16, 2002 12:43 AM > > To: ode@q12.org > > Subject: [ODE] networking > > > > > > hello > > > > first of all thanks for replying. > > I'm not using a client/server type of connection. I'm > > using a peer to peer connection. This means that I > > only have one program and though it may act as a > > server at times it doesn't. The movements of the a > > robot is calculated by the local computer and it just > > sends a message containing the speed and orientation > > of the mobot to the other computers. Any computer > > sends a message to all the other computers connected > > to the same simulation like a broadcast message. > > I use ODE for practically everything even the > > positioning. and yes, all the geoms and bodies are > > created properly. > > > > although yes I do have problems concerning the lag. > > and i'm still working on that. any suggestions are > > welcome. and all the robots exist in the same space > > and world. > > > > thanks > > > > pia > > > > > > --- > Outgoing mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From Brad at fie.us Wed Oct 16 13:28:02 2002 From: Brad at fie.us (Brad Friedman) Date: Wed Oct 16 13:28:02 2002 Subject: [ODE] networking References: Message-ID: <3DADCC02.5050409@fie.us> I highly recommend hopping onto www.GameDev.net and looking up articles on dead reckoning. In particular, I recomend this one as a start: http://www.gamedev.net/reference/programming/features/targeting/ You can then dive down to other articles for actual code. You'll also want to think in terms of TCP, UDP and half TCP solutions in your networking. Half TCP solutions will likely want to guarontee order but not receipt of packts. Or alternatively, you could guarontee receipt but not order. Generally speaking, you need to design a simulation from the ground up to work with physics over the network. Its not something to add in later. And you need to get used to the idea that the client will always be in error. The server's representation will not be 100% accurate. It will likely be making spontaneous changes. The clients smooth out the changes at the user's end. If you're designing your program for a LAN with less than 10ms lag, thats a different story of course. But you do also need to factor in the processing time. Its not just netoworking lag. -Brad From nick.mcevoy at dsto.defence.gov.au Wed Oct 16 18:03:01 2002 From: nick.mcevoy at dsto.defence.gov.au (McEvoy, Nick) Date: Wed Oct 16 18:03:01 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <108E7D907871D6118B5000306E0189F82005F6@ednex504.dsto.defence.gov.au> > Peter wrote: >That was pretty much exactly the results I got - this problem has >completely killed my ODE project. That is the way I'm heading too !!! It's a damn shame cause ODE is great stuff generally ! But I'm not one to give up easily. > Russ wrote: >well, anything is possible :) the question is, why does it happen in the >first place. here's the answer: > Thanks Russ for the nice long answer (in physics terms) but no real (good) solution (in the short term at least). :( Any other hints on the best setup of chassis & wheel mass and dimensions (including contact params) to reduce the problem. eg. should I have heavy/light chassis, heavy/light wheels, large/small diam wheels ... I suppose it should be obvious if I think about it for a moment ... thats my problem sometimes I type (incl. my code) then think later. I'll also check my timestep size as well. > Remko wrote: >You can fix the viual appearance of the wheel easily though. Yes I suppose I could fix the visual appearance ... but I don't want to do too many fake-hacks (I've already got enough) ... I like something to look and feel realistic as possible. I'll follow what Russ said '[its an] exercise in error reduction, not error elimination' ... and keep fiddling and let you all know if I find the optimal values. Nick From coding at natew.com Wed Oct 16 19:40:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 19:40:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005F6@ednex504.dsto.defence.gov.au> Message-ID: On Thu, 17 Oct 2002, McEvoy, Nick wrote: > Thanks Russ for the nice long answer (in physics terms) but no real > (good) solution (in the short term at least). :( I must admit I have very little experience using ODE to simulate a car, but I thought he did offer a good solution... or at least he said something that sounded to me like the beginnings of a solution to the wheel problem: fake them. When ODE generates contacts for the wheel-ground intersection, treat it as a frictionless contact, so ODE just keeps things from interpenetrating (you'll also get sideways forces if you're on a slope, which is probably good). Then, use your own code to compute the forces that *should* be there. ODE's friction model is pretty simple (as it should be, IMO), so if you want a really good model of tire forces for your project, you'll end up calculating those forces outside of ODE anyhow. Maybe you could apply the forces directly to the wheel body - but don't use an axle joint, instead have the wheel attached in such a way that it moves for suspension and steering but not for rotation. You could then apply a force at the contact point (or at the center of the contact patch, if you wanna get sophisticated), and apply a torque where the axle would be. -- Nate Waddoups Redmond WA USA http://www.natew.com From tetron at interreality.org Wed Oct 16 20:05:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 16 20:05:02 2002 Subject: [ODE] exploding boxes Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This may be a known bug -- box stacking is extremely unstable. Specifically, I'm looking at the "phystut" program that comes with the Crystal Space 3D engine. It uses large, flat boxes for the walls of a room[1], and the user is able to drop boxes and spheres into the room and watch them bounce and roll around. There are several problems: [1] I expect the answer may be "don't do that" and while that would work for the outer surfaces of a convex hull, it's useless for building other things within a space. The first one is that despite the fact that both the walls and objects have a bounciness of zero (perfectly inelastic collisions) when an object is dropped it tends to bounce and roll around a LOT before coming to a stop... ... almost coming to a stop, that it. Once the object has almost settled down, often it will suddenly pop up with a lot of force. This is clearly an instability in the integrator, and makes it basically impossible to stack objects on one another, which should otherwise work fine. I'd like to see this fixed, and if no one is working on it I would be willing to give it a shot if someone will point me in the right direction of where to start in the code. [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9riifaeHUyhjCHfcRAlbVAKCxOv91JfnjQVdCbZ7agC/WU1UCqwCfcZ9Z 3+yvx1qbhQwLuaY05A6VqUc= =ThXO -----END PGP SIGNATURE----- From russ at q12.org Wed Oct 16 21:42:02 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 16 21:42:02 2002 Subject: [ODE] exploding boxes In-Reply-To: References: Message-ID: <20021016214610.27fc7f46.russ@q12.org> > The first one is that despite the fact that both the walls and objects > have a bounciness of zero (perfectly inelastic collisions) when an > object is dropped it tends to bounce and roll around a LOT before > coming to a stop... if you're talking about the box-stack demo, this bouncyness is intentional. if you want no bounce, set contact[i].surface.bounce=0 in the demo. > ... almost coming to a stop, that it. Once the object has almost > settled down, often it will suddenly pop up with a lot of force. are you using the latest CVS version? 0.03 is prone to popping. there will hopefully be a new 'official' ODE release sometime soonish. if you are experiencing popping with the CVS version, i would appreciate a test case that illustrates this. note that there is a box-stacking problem caused by insufficient contact points being generated, i am also hoping to fix this up soon. russ. -- Russell Smith http://www.q12.org From ericc at xenopi.com Wed Oct 16 22:48:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Wed Oct 16 22:48:01 2002 Subject: [ODE] networking In-Reply-To: <3DADCC02.5050409@fie.us> Message-ID: <000601c275a1$3aeed3f0$6401a8c0@donald> Umm, not bad advice, but the original poster did specify that he/she purposely chose peer-to-peer, so Client-Server paradigm might not be an option (for him)... > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > Of Brad Friedman > Sent: Wednesday, October 16, 2002 1:29 PM > To: ode@q12.org > Subject: Re: [ODE] networking > > > I highly recommend hopping onto www.GameDev.net and looking > up articles > on dead reckoning. > > In particular, I recomend this one as a start: > http://www.gamedev.net/reference/programming/features/targetin g/ You can then dive down to other articles for actual code. You'll also want to think in terms of TCP, UDP and half TCP solutions in your networking. Half TCP solutions will likely want to guarontee order but not receipt of packts. Or alternatively, you could guarontee receipt but not order. Generally speaking, you need to design a simulation from the ground up to work with physics over the network. Its not something to add in later. And you need to get used to the idea that the client will always be in error. The server's representation will not be 100% accurate. It will likely be making spontaneous changes. The clients smooth out the changes at the user's end. If you're designing your program for a LAN with less than 10ms lag, thats a different story of course. But you do also need to factor in the processing time. Its not just netoworking lag. -Brad _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoftick ). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From tetron at interreality.org Wed Oct 16 22:50:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 16 22:50:02 2002 Subject: [ODE] exploding boxes In-Reply-To: <20021016214610.27fc7f46.russ@q12.org> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Wed, 16 Oct 2002, Russ Smith wrote: > if you're talking about the box-stack demo, this bouncyness is > intentional. if you want no bounce, set contact[i].surface.bounce=0 > in the demo. No, this is in the "phystut" program in Crystal Space. As I said, this is a box landing on another box and not a box hitting a plane. > are you using the latest CVS version? 0.03 is prone to popping. there > will hopefully be a new 'official' ODE release sometime soonish. if you > are experiencing popping with the CVS version, i would appreciate a test > case that illustrates this. Yes, I'm using the CVS version. Providing a simple test case is rather complicated by the fact that it uses the Crystal Space infrastructure so perhaps you would be best off downloading Crystal Space... I suppose I could try to reproduce it in the box stacking test. > note that there is a box-stacking problem caused by insufficient contact > points being generated, i am also hoping to fix this up soon. Hmm, okay. [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9rk9TaeHUyhjCHfcRAg2wAJ43RxDQqhzIsEzWqjd2At2nwB04ZQCeMV+l Ft/PY6NEi9EqgpNwMHGpRg4= =ChTm -----END PGP SIGNATURE----- From coding at natew.com Wed Oct 16 23:16:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 23:16:02 2002 Subject: [ODE] robotic simulation In-Reply-To: <3DA8EF87.778199E3@aist.go.jp> Message-ID: On Sun, 13 Oct 2002, Max Lungarella wrote: > i tried "juice", it's pretty cool, and well designed. the only problem that i > have with it, is that i cannot export the models i realize. in other words, it > would be neat if i could construct something using juice, and be able to > import this something in one of my own programs. do you have plans do add > similar feature? I have no such plans, but I do plan to document the file format to help anyone interested in writing a translator or importer. I'm also looking at the Novodex file format as a possible replacement for the XML-based format that Juice uses now. > ode is so easy to use and also aesthetically more pleasant ;) I feel the same way! -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 16 23:20:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 23:20:02 2002 Subject: [ODE] networking In-Reply-To: <000001c27536$37d05880$6401a8c0@donald> Message-ID: On Wed, 16 Oct 2002, Eric Cha wrote: > A better way (for physics) to do things would be to designate one > computer as "the physics simulator". Do the entire scene simulation on > that computer, and then just transmit position/orientation/velocity > updates to other computers. Of course, other computers would transmit > user inputs (or even impulse/velocity/acceleration changes) to the > simulator computer to control their respective robot. I hope you all don't mind too much my attempt to hijack this thread and turn it into a discussion of networked physics in general. :-) Having a single computer be "the" simulator solves a lot of problems, and in many cases would be the best solution. A co-worker and I did a multi-user simulation this way a few years ago and it worked well. (We didn't have physics to worry about, but we did have related issues with maintaining coherent world states on all of the 'client' machines.) The thing that makes me want to avoid that model today is that physics takes a lot of CPU power. Every client brings a fast CPU to the party... if there's a way to make use of that power, many clients together could be able to do much more complex simulations than a single server (or rather, "more complex that the server *I* can afford"). Ideally, it gets a lot cheaper to scale the system to support more users, becase each user brings enough CPU power to do their share of the computation. Practically it will never be quite that scalable, but I still like the idea. If you can have each client simulate the parts of the player's body or vehicle, then broadcast the positions and orientations, the server's CPU requirements go down quite a bit. Note that I'm assuming a game sort of paradigm here, but other scenarios could use other methods of assigning objects to CPUs. I'd elaborate, but I see that Anselm has already described something like what I had in mind, only better. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From amoravanszky at dplanet.ch Thu Oct 17 02:14:02 2002 From: amoravanszky at dplanet.ch (amoravanszky@dplanet.ch) Date: Thu Oct 17 02:14:02 2002 Subject: [ODE] robotic simulation Message-ID: <200210170913.g9H9DQx22252@dubb05h07-0.dplanet.ch> Nate W wrote: > I have no such plans, but I do plan to document the file format to help > anyone interested in writing a translator or importer. I'm also looking > at the Novodex file format as a possible replacement for the XML-based > format that Juice uses now. Nate, just in case you are wondering, you are welcome to use our file format not only for NovodeX related functionality, but also as a generic physics scene description format also used in conjunction with ODE. We at NovodeX think the entire community, regardless of which physics SDK is used, would benefit from a file format that is an open standard. In particular we are open to file format extensions as required by Juice -- though of course we should debate them first. BTW: The file format description is available as part of the NovodeX Steel SDK download here: http://www.novodex.com/downloads/steel-personal.exe Note that you don't have to buy the SDK to be able to read the documentation or use the viewer/exporters. -- Adam Moravanszky /*================*\ |Chief Software Architect |NovodeX AG |physics middleware |www.novodex.com \*================*/ From Remko at act-3d.com Thu Oct 17 02:41:01 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Thu Oct 17 02:41:01 2002 Subject: [ODE] Another strange wheel rotation bug Message-ID: <277472262.78464215.98@server> I fixed the 'bending wheels' problem using the following methods. The problem still exists but at least you can reduce it to acceptable levels: - Decrease the step size (update of 200-300Hz) - Different CFM and ERP values - Different masses - Bigger wheels (The bigger the wheels, the slower they have to turn for the same speed) I'm experimenting with a driving simulation and the results are stunning! However, after some experimentation, the car started to bounce and the handling was completely gone. It turned out that the wheel is not rotating around it's axis but around a point slightly above that. Gravity was causing this offset. Gravity pulls the wheel down so the rotation axis of the hinge is too high. What really surprised me, is the solution I found: When I set the gravity to zero the problem does not occur (as expected). When I crank up the gravity while the simulation is running, the bug does not come back but the wheel rotates around the correct point. Does anyone has an explanation for this? Why the rotation screws up when I initialize with gravity? -Remko From johnb003 at hotmail.com Thu Oct 17 04:32:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Thu Oct 17 04:32:02 2002 Subject: [ODE] Wheel Rotation Problem Message-ID: Actually to be honest, I've been struggling with the wheel rotation problem the last few days as well. I did notice a much better behaving system with a smaller timestep as I tested out my buggy on a big open plane. Although to get my timestep small enough I had to call update world a bunch of times, more than I could feasibly when I have other factors in the game that slow it down, like terrain. I have not yet thought of a solution that would work in my case. _________________________________________________________________ Choose an Internet access plan right for you -- try MSN! http://resourcecenter.msn.com/access/plans/default.asp From ericc at xenopi.com Thu Oct 17 07:41:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Thu Oct 17 07:41:01 2002 Subject: [ODE] networking In-Reply-To: Message-ID: <000d01c275eb$9e070620$6401a8c0@donald> Anselm's solution is what I call the "classic" solution. It's "classic" in the sense that I know of several games which actually use that system (or something very similar). Just as a point of discussion, there are several other ways to approach the problem... For example, here is what we did with Dreadnoughts (a game which we were working on using Havok): Dreadnoughts had/has pretty extreme physics engine requirements. It's a first person shooter with HUGE vehicles (ever seen Stargate the movie? Think of the flying pyramids..) We had to simulate moving structures which were large enough so that entire Quake-style levels would fit INSIDE of them. The player could run around inside these ships and then go outside and run around a huge outdoor world. At the same time, the ships themselves were moving and could battle it out with each other and interact with full physics with the environment. All this had to take place seamlessly. If a player was inside the ship looking out, he/she could see the other players running/flying around the terrain and could interact with those players.. Anyway, we found that because of memory constraints, we could not do the "master heartbeat physics server" method (the levels were so large that we were paging them in and out of memory as you moved around..) Instead, we chopped the world up into regions (pretty easy as the world was already partitioned into regions for our paging system) and dynamically assigned client computers as the physics master simulators. It was/is very tricky to implement, and not without problems in implementation. However, the end result was full physics simulation of a HUGE environment with the load being (relatively) evenly distributed amongst participant's computers... Eric > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf Of Nate W > Sent: Wednesday, October 16, 2002 3:28 PM > To: ode@q12.org > Subject: RE: [ODE] networking > > > On Wed, 16 Oct 2002, Eric Cha wrote: > > > A better way (for physics) to do things would be to designate one > > computer as "the physics simulator". Do the entire scene > simulation > > on that computer, and then just transmit > position/orientation/velocity > > updates to other computers. Of course, other computers > would transmit > > user inputs (or even impulse/velocity/acceleration changes) to the > > simulator computer to control their respective robot. > > I hope you all don't mind too much my attempt to hijack this > thread and turn it into a discussion of networked physics in > general. :-) > > Having a single computer be "the" simulator solves a lot of > problems, and in many cases would be the best solution. A > co-worker and I did a multi-user simulation this way a few > years ago and it worked well. (We didn't have physics to > worry about, but we did have related issues with maintaining > coherent world states on all of the 'client' machines.) > > The thing that makes me want to avoid that model today is > that physics takes a lot of CPU power. Every client brings a > fast CPU to the party... if there's a way to make use of that > power, many clients together could be able to do much more > complex simulations than a single server (or rather, "more > complex that the server *I* can afford"). Ideally, it gets a > lot cheaper to scale the system to support more users, becase > each user brings enough CPU power to do their share of the > computation. Practically it will never be quite that > scalable, but I still like the idea. > > If you can have each client simulate the parts of the > player's body or vehicle, then broadcast the positions and > orientations, the server's CPU requirements go down quite a > bit. Note that I'm assuming a game sort of paradigm here, > but other scenarios could use other methods of assigning > objects to CPUs. > > I'd elaborate, but I see that Anselm has already described > something like what I had in mind, only better. :-) > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From shaul_kedem at yahoo.com Thu Oct 17 10:22:02 2002 From: shaul_kedem at yahoo.com (Shaul Kedem) Date: Thu Oct 17 10:22:02 2002 Subject: [ODE] High level graphics languages Message-ID: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Hi all, Recently there is a lot of talk about high level languages for graphical use. John Carmack, known for it's Doom and Quake engines, said on the last quakecon keynote speech that his next game will be written on a high level language, stating that he sees such languages as the future trend. Can anyone give me pointers / links / recommendations about such languages? The reason I am posting it here is that I want (obviously) to implement ODE in such a language. Thanks, Shaul. __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From ericc at xenopi.com Thu Oct 17 10:39:02 2002 From: ericc at xenopi.com (Eric Cha) Date: Thu Oct 17 10:39:02 2002 Subject: [ODE] High level graphics languages In-Reply-To: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Message-ID: <001c01c27604$856969a0$6401a8c0@donald> There are numerous HLSL's (High Level Shader Languages) out there. Probably the two that are garnering the most attention (right now) are OpenGL 2.0 and nVidia's Cg (which, if you believe nVidia, will be cross compatible with DX9 HLSL).. Eric > -----Original Message----- > From: ode-admin@q12.org [mailto:ode-admin@q12.org] On Behalf > Of Shaul Kedem > Sent: Thursday, October 17, 2002 10:22 AM > To: ode@q12.org > Subject: [ODE] High level graphics languages > > > Hi all, > Recently there is a lot of talk about high level > languages for graphical use. > > John Carmack, known for it's Doom and Quake engines, > said on the last quakecon keynote speech that his next > game will be written on a high level language, stating > that he sees such languages as the future trend. > > Can anyone give me pointers / links / recommendations > about such languages? > > The reason I am posting it here is that I want > (obviously) to implement ODE in such a language. > > Thanks, > Shaul. > > __________________________________________________ > Do you Yahoo!? > Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From jason at 379.com Thu Oct 17 10:52:01 2002 From: jason at 379.com (J. Perkins) Date: Thu Oct 17 10:52:01 2002 Subject: [ODE] High level graphics languages In-Reply-To: <20021017172136.34012.qmail@web40020.mail.yahoo.com> References: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Message-ID: <1034876397.2181.28.camel@imperius.um.us.sbphrd.com> I think you misunderstood the interview. I believe he said that his next game would use a high level *shader* language. I would be very surprised indeed if iD were to release Quake4 in Python! ;) Jason 379 On Thu, 2002-10-17 at 13:21, Shaul Kedem wrote: > John Carmack, known for it's Doom and Quake engines, > said on the last quakecon keynote speech that his next > game will be written on a high level language, stating > that he sees such languages as the future trend. From ivan.bolcina at volja.net Thu Oct 17 12:40:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Thu Oct 17 12:40:02 2002 Subject: [ODE] 3d world an directx Message-ID: <013401c27614$d4c0bde0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0131_01C27625.97E1A450 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Problems. Is ode 3d world different from DirectXs? It seems to me that y and z = axes are swapt. bye,ivan ------=_NextPart_000_0131_01C27625.97E1A450 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
    = Problems.
 
Is ode 3d world different from = DirectXs? It seems=20 to me that y and z axes are swapt.
 
bye,ivan
------=_NextPart_000_0131_01C27625.97E1A450-- From russ at q12.org Thu Oct 17 15:23:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 17 15:23:02 2002 Subject: [ODE] i will speak at IndieGamesCon'02 Message-ID: FYI, i will be speaking about ODE at IndieGamesCon'02 (www.indiegamescon.com), on saturday november 2nd in eugene, oregon. i'll be talking about the following topics: * ODE's application to the game industry - particularly its relevance to the indie game developer. * the technology behind ODE. * how/where ODE has been used. * pros and cons of using ODE (and other dynamics toolkits) for various kinds of games and VR environments. i will talk about vehicles at length. * alternatives to ODE - free and commercial. * the future of dynamics/simulation. * challenges for the [indie] game industry. * other interesting topics that occur to me, or that are suggested. my presentation will be up on q12.org sometime before or after the conference. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Thu Oct 17 20:30:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 17 20:30:02 2002 Subject: [ODE] VStudioNet In-Reply-To: Message-ID: On Wed, 16 Oct 2002, Tomas Sakalauskas wrote: > > [...] debugging induces big headaches fast because the debugger > > usually goes to the wrong line in the source file. Is anyone else > > seeing this? > > Yes. You have to replace CRCRLF in files with CRLF, this confuses VS.NET. That fixes it. I thank you a thousand times. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From tetron at interreality.org Thu Oct 17 22:52:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Thu Oct 17 22:52:02 2002 Subject: [ODE] box stacking instability Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I've noticed that the "boxstack" test is unstable as well, although not to the degree that the test program I'm using does. If one box comes to rest on another, while it doesn't pop up (as in this other demo) it does appear to vibrate and will move about -- I presume this is due to impulses correcting for penetration of the top box into the lower box. I'm talked to a professor who knows something about dynamics systems, and his understanding is that the impulse-based method in inherently unstable in this configuration -- using this algorithm it is almost impossible for the system to come to equilibrium. This seems to be an enormous problem, and one which makes ODE rather useless for my purposes. It looks like I shall have to just use collision detection with some basic physics hacked on... I need for it to be possible for objects to be supported by others, such as platforms on which other objects rest. It seems that ODE handles the case of stability on a plane quite well, but that is rather limited use compared to the general case :-( On a side note, the same professor mentioned the Arachi dynamics engine (www.arachi.com). It's commercial and exceedingly expensive ($30,000) but he speaks very highly of it. It would be interesting to potentially adopt some of their techniques... [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9r6FUaeHUyhjCHfcRAkJvAJsHkWstAZ1s9//kp6XfUEizoDzidgCggLVp jxxJXvtNwBkgQGNxF+ESZwk= =B4Ld -----END PGP SIGNATURE----- From coding at natew.com Thu Oct 17 23:25:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 17 23:25:02 2002 Subject: [ODE] box stacking instability In-Reply-To: Message-ID: On Fri, 18 Oct 2002, Peter Amstutz wrote: > If one box comes to rest on another, while it doesn't pop up (as in > this other demo) it does appear to vibrate and will move about -- I > presume this is due to impulses correcting for penetration of the top > box into the lower box. > I'm talked to a professor who knows something about dynamics systems, and > his understanding is that the impulse-based method in inherently > unstable in this configuration [...] As Russ said, the real problem is that the box-box collision detection code is not yet finished. If you search the mailing list archives, you'll find that this is a known problem, it is a solvable problem, and it will be fixed. > It seems that ODE handles the case of stability on a plane quite well, > but that is rather limited use compared to the general case :-( Yes, boxes can rest on planes in a perfectly stable manner. When a box lies flat on a plane, the box-plane collision code generates three contact constraints, so the box is held in place. In my own application, I had the same problem with box-plane contact - not because of a problem with ODE, but because of a mistake on my part. My code was only keeping the first of up to three contact constraints that would be generated when a box contacted a plane. The result was identical to the behavior that you see now with box-box collision detection. When I fixed my code to use all three contacts, the 'boiling' effect went away completely. I have no doubt that boxes will rest on other boxes when the box-box collision code returns three contact constraints when boxes are touching in a face-to-face configuration. It works for boxes on planes now, it will work for boxes on boxes eventually. -- Nate Waddoups Redmond WA USA http://www.natew.com From p.terdiman at wanadoo.fr Thu Oct 17 23:36:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 17 23:36:02 2002 Subject: [ODE] box stacking instability References: Message-ID: <046e01c27670$422f3540$0e00000a@pierre> > I've noticed that the "boxstack" test is unstable as well, although not to > the degree that the test program I'm using does. If one box comes to rest > on another, while it doesn't pop up (as in this other demo) it does appear > to vibrate and will move about -- I presume this is due to impulses > correcting for penetration of the top box into the lower box. > > I'm talked to a professor who knows something about dynamics systems, and > his understanding is that the impulse-based method in inherently unstable > in this configuration -- using this algorithm it is almost impossible for > the system to come to equilibrium. This seems to be an enormous problem, > and one which makes ODE rather useless for my purposes. It looks like I > shall have to just use collision detection with some basic physics hacked > on... I need for it to be possible for objects to be supported by others, > such as platforms on which other objects rest. It seems that ODE handles > the case of stability on a plane quite well, but that is rather limited > use compared to the general case :-( The boxstack test is unstable because the collision detection routine reports a single contact point, period. Pierre From russ at q12.org Fri Oct 18 00:03:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 00:03:02 2002 Subject: [ODE] box stacking instability In-Reply-To: References: Message-ID: <20021018000754.21ea5baa.russ@q12.org> > I presume this is due to impulses > correcting for penetration of the top box into the lower box. actually, ODE does not use impulse based methods. > On a side note, the same professor mentioned the Arachi dynamics > engine(www.arachi.com). It's commercial and exceedingly expensive > ($30,000) but he speaks very highly of it. It would be interesting to > potentially adopt some of their techniques... hmmm ... the web site gives no clues about the techniques (or about anything, really). does anyone know what arachi is doing? russ. -- Russell Smith http://www.q12.org From mimodene at yahoo.com Fri Oct 18 01:14:01 2002 From: mimodene at yahoo.com (mica modenese) Date: Fri Oct 18 01:14:01 2002 Subject: [ODE] beginnersproblem with ode: stack overflow Message-ID: <20021018081342.89297.qmail@web10903.mail.yahoo.com> hi all. i am kind of new to this and so my question might be rather silly. I've been using ODE for 1 week for a biped robot simulation. now my biped consists of 52 bodies 27 hinge joints, 14 prismatic joints and 28 balljoints and 4 contactmodels. now it keeps crashing, telling something about stack overflow and increasing the stacksize (/F in VC++) doesn't seem to work, ODE is allready allocating maxsize for the stack ? before i fry my brain: am i asking to much ?? do i have to reduce bodies and joints ?? thx mike __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From coding at natew.com Fri Oct 18 02:13:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 02:13:02 2002 Subject: [ODE] beginnersproblem with ode: stack overflow In-Reply-To: <20021018081342.89297.qmail@web10903.mail.yahoo.com> Message-ID: With that many joints, you'll need LOTS of stack. Juice has about 8 megabytes of stack, and I suspect that the structure you're building would overflow Juice's stack. With VS.Net, the linker option I'm using is /STACK:8000000 but maybe it's /F with earlier versions? I dunno. Anyhow, try or 10 megs or so, then double it if your app still crashes with a stack overflow. Then double it again if need be, and so on until it stops crashing. Expect a rather slow frame rate, too... it's going to take a lot of number crunching to make all those joints work. If you can generate a picture of your biped, I hope you will share it. It sounds pretty interesting. :-) On Fri, 18 Oct 2002, mica modenese wrote: > i am kind of new to this and so my question might be > rather silly. I've been using ODE for 1 week for a > biped robot simulation. now my biped consists of 52 > bodies 27 hinge joints, 14 prismatic joints and 28 > balljoints and 4 contactmodels. now it keeps crashing, > telling something about stack overflow and increasing > the stacksize (/F in VC++) doesn't seem to work, ODE > is allready allocating maxsize for the stack ? before > i fry my brain: am i asking to much ?? do i have to > reduce bodies and joints ?? From thubba at gmx.net Fri Oct 18 02:52:02 2002 From: thubba at gmx.net (Michael Scharvogel) Date: Fri Oct 18 02:52:02 2002 Subject: [ODE] a newbies question on hinge and robot legs... Message-ID: <020c01c2768b$d87d7eb0$c36abb84@tig> This is a multi-part message in MIME format. ------=_NextPart_000_0209_01C2769C.9BB0DBB0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi folks... I started working with ODE some time ago. But I encounter some problems = on understanding the manual and all the "how to model my stuff witrh = ode" subject. Thus I will briefly describe my problem. Maybe someone can comment on = that: I want to model some kind of bug robot.For the start, it shall have the = follwoing structure: H : hinge T : Thorax (CCylinder) L : Leg (Box) L H L H TTT H L H L TTT TTT L H L H TTT H L H L TTT TTT L H L H TTT H L H L (One Body, six legs, each leg consisting of two parts and connected by = two hinges) In the final state I'd like to say something like: Hinge 1 bow 10 degrees. So do I have to attach Motors to the hinges to achiev this (I did not = quiet figure out how this could work) or do I have to use these = Transform geometries and rotate them (I I understood them right they can = be used to rotate for example a leg around one of its ends) Well, you see, I not quiet used to the subject. But maybe someone could = help me getting it :-) Perhaps someone has done something liek that, or someone could provide = me some example code... Thanx a lot,=20 mike. ------=_NextPart_000_0209_01C2769C.9BB0DBB0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi folks...

I started working = with ODE some=20 time ago. But I encounter some problems on understanding the manual and = all the=20 "how to model my stuff witrh ode" subject.
Thus I will briefly = describe my=20 problem. Maybe someone can comment on that:

I want to model some = kind of=20 bug robot.For the start, it shall have the follwoing structure:
H :=20 hinge
T : Thorax (CCylinder)
L : Leg (Box)

L H L H TTT H L H L
       =20 TTT
       =20 TTT
L H L H TTT H L H L
       =20 TTT
       =20 TTT
L H L H TTT H L H L
 
 
(One Body, six legs, each leg consisting of two = parts and=20 connected by two hinges)
 
In the final state I'd like to say something=20 like:
Hinge 1 bow 10 degrees.
 
So do I have to attach Motors to the hinges to = achiev this=20 (I did not quiet figure out how this could work) or do I have to use = these=20 Transform geometries and rotate them (I I understood them right they can = be used=20 to rotate for example a leg around one of its ends)
 
 
Well, you see, I not quiet used to the subject. = But maybe=20 someone could help me getting it :-)
Perhaps someone has done something liek that, or = someone=20 could provide me some example code...
 
Thanx a lot,
mike.
------=_NextPart_000_0209_01C2769C.9BB0DBB0-- From mal at candomultimedia.com Fri Oct 18 06:50:02 2002 From: mal at candomultimedia.com (Malachy Duffin) Date: Fri Oct 18 06:50:02 2002 Subject: [ODE] Introduction / Suggestions etc Message-ID: <001801c276ad$38345a10$d834fe3e@MalLaptop> Hello all, Mal here from canDo Multimedia, an Irish 3D interactive development company. We are using a lot of Shockwave 3D at the moment ( along with the online Havok engine ) for some web games, which you can see at... http://www.candomultimedia.com/games/demos.htm Firstly, I don't know if many of you on the list know, but ODE will soon be integrated as a physics option into the realtime 3D engine of the now open sourced version of Blender ( www.blender.org ). This is great for a number of reasons... - It will raise the awareness of open source game related projects like Blender and ODE. - More developers will be keen to work on these projects - Because Blender is cross platform, a lot of work will be carried out to ensure that ODE is deployed on platforms that it wasn't available on before - ODE developers will be able to show what the engine can do online ( Blender has a web plugin ) Blender has a fairly high learning curve, but is a great prototyping tool ( imagine designing a car, defining it's wheels / suspension / mass etc and clicking a button to immediately let you drive it around a 3D world for testing purposes / to let the artists play with parameters etc ). I am looking forward to seeing a lot more content created this way! It makes it more accessible for artists to know how to design content for physics based games ( using proxies, compound convex objects etc for optimisations ) One quick suggestion, from the http://q12.org/ode/ode.html website there doesn't seem to be any updates on news, or any easy way to see examples of content created with ODE. A quick revamp with a gallery of examples and links to downloadable demos would be great, as a lot more people should be checking it out over the coming months. Thanks for taking the time to read the post, and I look forward to reading future postings on this mailing list. Mal From martin at metahuman.org Fri Oct 18 07:26:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Fri Oct 18 07:26:02 2002 Subject: [ODE] a newbies question on hinge and robot legs... References: <020c01c2768b$d87d7eb0$c36abb84@tig> Message-ID: <3DB019E0.3970D42D@metahuman.org> > Michael Scharvogel wrote: > > (One Body, six legs, each leg consisting of two parts and connected by > two hinges) > > In the final state I'd like to say something like: > Hinge 1 bow 10 degrees. > > So do I have to attach Motors to the hinges to achiev this (I did not > quiet figure out how this could work) or do I have to use these > Transform geometries and rotate them (I I understood them right they can > be used to rotate for example a leg around one of its ends) You need a motor. Transform geometries are for fixed relationships. However, hinges come with a motor built in. The motor controls velocity, not position, so the easiest thing is probably to set the velocity proportional to how far off the position is. Once you've figured out your desired velocity, call: dJointSetHingeParam (joint, dParamVel, desired_velocity); - Martin From ivan.bolcina at volja.net Fri Oct 18 08:04:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 18 08:04:02 2002 Subject: [ODE] 3d world directx Message-ID: <004801c276b7$88d9c0e0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0045_01C276C8.4C3936F0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Yes, but every time i get/set position,direction from ode to directx = structs, and vice versa, I have to swap y and z. ------=_NextPart_000_0045_01C276C8.4C3936F0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Yes, but every time i get/set = position,direction=20 from ode to directx structs, and vice versa, I have to swap y and=20 z.
------=_NextPart_000_0045_01C276C8.4C3936F0-- From ericc at xenopi.com Fri Oct 18 09:46:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Fri Oct 18 09:46:01 2002 Subject: [ODE] box stacking instability In-Reply-To: <20021018000754.21ea5baa.russ@q12.org> Message-ID: <001c01c276c6$28703680$6401a8c0@donald> Funny that you mention Arachi. I know the founder (Kyong Sok Chang) - he's an old friend of mine from college. We went to Umich (go Blue!) together (and actually got the same degree in Aerospace Engineering) I haven't talked to K.C. in quite a while, but did run into him at the GDC 2 years back when he had just started Arachi. I believe K.C. did his graduate (PhD) work at Stanford on computer physics simulation, and I believe founded the company based on his research. I haven't read over his research, but you might want to do a search of academic papers using his name to see what you might come up with. I *would* drop K.C. a line, but as I said, I haven't talked to him in quite a while, and to be honest, I would feel quite awkward asking him about his technology when I have no interest in it whatsoever (because we have our own solution which is working at a satisfactory level). Eric > > On a side note, the same professor mentioned the Arachi dynamics > > engine(www.arachi.com). It's commercial and exceedingly expensive > > ($30,000) but he speaks very highly of it. It would be > interesting to > > potentially adopt some of their techniques... > > hmmm ... the web site gives no clues about the techniques (or > about anything, really). does anyone know what arachi is doing? > > russ. > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From russ at q12.org Fri Oct 18 10:06:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 10:06:01 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: <001801c276ad$38345a10$d834fe3e@MalLaptop> References: <001801c276ad$38345a10$d834fe3e@MalLaptop> Message-ID: <20021018100957.7ff31ceb.russ@q12.org> > One quick suggestion, from the http://q12.org/ode/ode.html website > there doesn't seem to be any updates on news, or any easy way to see > examples of content created with ODE. the 'community' section has links to some downloadable demos. as far as 'news' goes - various incremental improvements have been reported only on the mailing list in the past months, not on the web site. i'm gradually working towards a new release that will fix a number of long-outstanding issues and also finally integrate some of the 'contrib' code that has been contributed. russ. -- Russell Smith http://www.q12.org From ivan.bolcina at volja.net Fri Oct 18 10:19:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 18 10:19:02 2002 Subject: [ODE] 3d world directx -- slipch, please help Message-ID: <002301c276ca$52d446b0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0020_01C276DB.162787C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi,look at this code: //get orientation from ode and put it in my d3d Quatrernion const dReal *qx=3D dBodyGetQuaternion (PhyBody); D3DXQUATERNION qxx; qxx.x=3D(float)qx[0]; qxx.y=3D(float)qx[2]; qxx.z=3D(float)qx[1]; qxx.w=3D(float)qx[3]; setOrientation(qxx); //to directx //get positionfrom ode and put it in my D3DXVECTOR3 const dReal * p=3DdBodyGetPosition(PhyBody); //to directx m_Position.x=3D(float)p[0]; m_Position.y=3D(float)p[2]; m_Position.z=3D(float)p[1]; //same for velocity const dReal * p1=3DdBodyGetLinearVel(PhyBody);=20 move.x=3D(float)p1[0]; move.y=3D(float)p1[2]; move.z=3D(float)p1[1]; //end test //I dont understand ..... :-((( I wish to get angular rotation around = x,y,z //then I wish to find differece between wished angular rotation(from = joystick) and current angular rotation //then I wish to apply torque so they eventually mach. const dReal * rotx=3DdBodyGetAngularVel (PhyBody); dVector3 result; dBodyVectorFromWorld(PhyBody, rotx[0],rotx[1],rotx[2],result); rotate.x=3Dresult[0]; rotate.y=3Dresult[1]; rotate.z=3Dresult[2]; D3DXVECTOR3 = rotVec=3DMaxRotate*D3DXVECTOR3(controls.axis_lr*1.0f,-controls.axis_ro*1.= 0f,-controls.axis_ud*1.0f); rotVec-=3Drotate; if (rotVec.x>0) rotVec.x=3DRotMax; if (rotVec.x<0) rotVec.x=3D-RotMax; if (rotVec.y>0) rotVec.y=3DRotMax; if (rotVec.y<0) rotVec.y=3D-RotMax; if (rotVec.z>0) rotVec.z=3DRotMax; if (rotVec.z<0) rotVec.z=3D-RotMax; dBodyAddRelTorque(PhyBody,70000.0f*rotVec.x,70000.0f*rotVec.y,70000.0f*ro= tVec.z); //force which heads me forward, move is current movement, posp is wished = movement(from joystick) float facsped=3D1.0f; if (controls.burner) facsped=3D2.0f; D3DXVECTOR3 posp; //m_vz is vector forward if (controls.burner) posp=3Dm_vz*1.0f*SpeedMax*facsped; else posp=3Dm_vz*controls.axis_throttle*SpeedMax*facsped; //v razliko posp-=3Dmove; float len=3DD3DXVec3Length(&posp); if (len!=3D0.0f) { posp/=3Dlen; D3DXVECTOR3 ForceApplied=3Dposp*MaxEngine;=20 dBodyAddForce(PhyBody,ForceApplied.x,ForceApplied.z,ForceApplied.y); = //SEE HERE } ------=_NextPart_000_0020_01C276DB.162787C0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable

Hi,look at this code:

 

 

//get orientation from ode and put it in my d3d=20 Quatrernion

const = dReal *qx=3D=20 dBodyGetQuaternion (PhyBody);

D3DXQUATERNION qxx;

qxx.x=3D(float)qx[0];

qxx.y=3D(float)qx[2];

qxx.z=3D(float)qx[1];

qxx.w=3D(float)qx[3];

setOrientation(qxx);        &n= bsp;       =20 //to directx

 

//get positionfrom ode and put it in my=20 D3DXVECTOR3

const = dReal *=20 p=3DdBodyGetPosition(PhyBody);

//to directx

m_Position.x=3D(float)p[0];

m_Position.y=3D(float)p[2];

m_Position.z=3D(float)p[1];

 

//same for velocity

const = dReal *=20 p1=3DdBodyGetLinearVel(PhyBody);

move.x=3D(float)p1[0];

move.y=3D(float)p1[2];

move.z=3D(float)p1[1];

//end test

 

 

//I dont understand ..... = :-(((  I wish=20 to get angular rotation around x,y,z

//then I wish to find differece = between wished=20 angular rotation(from joystick) and current angular rotation

//then I wish to apply torque so = they=20 eventually mach.

const = dReal *=20 rotx=3DdBodyGetAngularVel (PhyBody);

dVector3 result;

dBodyVectorFromWorld(PhyBody, rotx[0],rotx[1],rotx[2],result);

rotate.x=3Dresult[0];

rotate.y=3Dresult[1];

rotate.z=3Dresult[2];

D3DXVECTOR3=20 rotVec=3DMaxRotate*D3DXVECTOR3(controls.axis_lr*1.0f,-controls.axis_ro*1.= 0f,-controls.axis_ud*1.0f);

rotVec-=3Drotate;

if = (rotVec.x>0)=20 rotVec.x=3DRotMax;

if = (rotVec.x<0)=20 rotVec.x=3D-RotMax;

if = (rotVec.y>0)=20 rotVec.y=3DRotMax;

if = (rotVec.y<0)=20 rotVec.y=3D-RotMax;

if = (rotVec.z>0)=20 rotVec.z=3DRotMax;

if = (rotVec.z<0)=20 rotVec.z=3D-RotMax;

dBodyAddRelTorque(PhyBody,70000.0f*rotVec.x,70000.0f*rotVec.y,70000.0f= *rotVec.z);

 

 

//force which heads me forward, move = is current=20 movement, posp is wished movement(from joystick)

float = facsped=3D1.0f;

if = (controls.burner)=20 facsped=3D2.0f;

D3DXVECTOR3 posp;

//m_vz is vector forward

if=20 (controls.burner)

    posp=3Dm_vz*1.0f*SpeedMax*facsped;

else

    = posp=3Dm_vz*controls.axis_throttle*SpeedMax*facsped;

//v razliko

posp-=3Dmove;

float=20 len=3DD3DXVec3Length(&posp);

if = (len!=3D0.0f)

{

    posp/=3Dlen;

    D3DXVECTOR3 ForceApplied=3Dposp*MaxEngine;

   =20 dBodyAddForce(PhyBody,ForceApplied.x,ForceApplied.z,ForceApplied.y); = ;      =20 //SEE HERE

}

 
------=_NextPart_000_0020_01C276DB.162787C0-- From coding at natew.com Fri Oct 18 10:39:01 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 10:39:01 2002 Subject: [ODE] a newbies question on hinge and robot legs... In-Reply-To: <020c01c2768b$d87d7eb0$c36abb84@tig> Message-ID: On Fri, 18 Oct 2002, Michael Scharvogel wrote: > In the final state I'd like to say something like: > Hinge 1 bow 10 degrees. > > So do I have to attach Motors to the hinges to achiev this (I did not > quiet figure out how this could work) or do I have to use these > Transform geometries and rotate them (I I understood them right they > can be used to rotate for example a leg around one of its ends) What you're talking about is a job for motors. You don't have to "attach" motors to joints though, in ODE joints have motorization built into them. The motor API does not allow command like "move 10 degrees" though. Instead, you ask it something like "Hinge 1 move at 5 degrees per second" until the hinge is at the angle you desire. This means checking the hinge angle every frame, comparing it to the desired hinge angle, and asking it to move at a speed proportional to the difference. If you search the mailing list archives you'll probably find some messagse from me on this subject. The most recent of those messages are the most correct - I was trying to do it the wrong way at first. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Fri Oct 18 10:51:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 10:51:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: <001801c276ad$38345a10$d834fe3e@MalLaptop> Message-ID: On Fri, 18 Oct 2002, Malachy Duffin wrote: > imagine designing a car, defining it's wheels / suspension / mass > etc and clicking a button to immediately let you drive it around a 3D > world for testing purposes "Imagine?" :-) http://www.natew.com/juice/frames.cgi/general/html.ScreenShots http://www.natew.com/juice/frames.cgi/general/html.Pix > One quick suggestion, from the http://q12.org/ode/ode.html website there > doesn't seem to be any updates on news, or any easy way to see examples > of content created with ODE. > > A quick revamp with a gallery of examples and links to downloadable > demos would be great, as a lot more people should be checking it out > over the coming months. Check the community page for examples of content. There are a few projects with screenshots and downloadable movies, not just mine. -- Nate Waddoups Redmond WA USA http://www.natew.com From Alan_Gordie at payformance.com Fri Oct 18 11:11:01 2002 From: Alan_Gordie at payformance.com (Alan Gordie) Date: Fri Oct 18 11:11:01 2002 Subject: [ODE] Introduction / Suggestions etc Message-ID: Hi Mal! Well, perhaps it's time for me to de-lurk... (due to the mention of ODE integration with Blender) My name is Alan Gordie and I've been steadily building a robust, spring-mass simulation engine (http://gordie.go.dyndns.org/) for simulating vehicles and structures for fun. Contemplating the GPL release of Blender, I'd been toying with the idea of grafting my sim code into/onto Blender, but that would be pointless if ODE were to be integrated with Blender. At any rate, I've been following ODE (and the mailing list) for awhile now and find myself continually more impressed with its' progress as time goes on. (Thanks to Russ and the rest of you!) It seems to me that ODE has reached 'escape velocity' in terms of project growth and community support. Don't get me wrong, I think there is huge potential, but it seems like it has enough momentum now to easily move to the next level. And the point is: Now, after the release of the Blender source, I've decided to contribute in any ways that I can in terms of adding my spring-mass modeling primitives to ODE, as well as offering development assistance for the "ODE Plugin" for Blender. As Mal mentioned, there are many compelling reasons to add support this effort, but there is one that stands out for me. It will ensure that there is a open-sourced, freely-available tool suite for rigid body simulation. So, who else is interested in devoting some time to the ODE/Blender effort? I've been hanging around in #ode on EFNET since it was announced a few days ago, but there hasn't been much activity. If there are enough interested parties, I'd like to propose that we hook up on irc to start drawing up a set of plans. Any takers? Alan alan_gordie@payformance.com alangordie@attbi.com -----Original Message----- From: Malachy Duffin [mailto:mal@candomultimedia.com] Sent: Friday, October 18, 2002 9:50 AM To: ode@q12.org Subject: [ODE] Introduction / Suggestions etc Hello all, Mal here from canDo Multimedia, an Irish 3D interactive development company. We are using a lot of Shockwave 3D at the moment ( along with the online Havok engine ) for some web games, which you can see at... http://www.candomultimedia.com/games/demos.htm Firstly, I don't know if many of you on the list know, but ODE will soon be integrated as a physics option into the realtime 3D engine of the now open sourced version of Blender ( www.blender.org ). This is great for a number of reasons... - It will raise the awareness of open source game related projects like Blender and ODE. - More developers will be keen to work on these projects - Because Blender is cross platform, a lot of work will be carried out to ensure that ODE is deployed on platforms that it wasn't available on before - ODE developers will be able to show what the engine can do online ( Blender has a web plugin ) Blender has a fairly high learning curve, but is a great prototyping tool ( imagine designing a car, defining it's wheels / suspension / mass etc and clicking a button to immediately let you drive it around a 3D world for testing purposes / to let the artists play with parameters etc ). I am looking forward to seeing a lot more content created this way! It makes it more accessible for artists to know how to design content for physics based games ( using proxies, compound convex objects etc for optimisations ) One quick suggestion, from the http://q12.org/ode/ode.html website there doesn't seem to be any updates on news, or any easy way to see examples of content created with ODE. A quick revamp with a gallery of examples and links to downloadable demos would be great, as a lot more people should be checking it out over the coming months. Thanks for taking the time to read the post, and I look forward to reading future postings on this mailing list. Mal _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From nlin at nlin.net Fri Oct 18 11:44:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Fri Oct 18 11:44:02 2002 Subject: [ODE] ODE and the Blender real-time 3d modeling/gaming environment Message-ID: <20021018202815.GA32125@nlin.net> Hello, I have checked in a version of Blender with preliminary support for ODE. Set your CVSROOT to :pserver:anonymous@217.77.141.135:/cvs01 and do a CVS co of module "blender" to obtain the source code. For those who don't know, Blender is a powerful 3D modeling package which just became free software under the GPL license. It has a built-in real-time 3D game engine whose physics are now being replaced with ODE. Blender is very interesting for the ODE community because it can be a very powerful tool for quickly creating real-time games; now, coupled with ODE, it can be used for quickly creating ODE simulations - similar to Nate W's "juice" application, but with the full power of a general- purpose 3D modeler and game engine. For instance, using Blender's game engine, you can have ODE-controlled dynamic objects interact with other game objects controlled via scripts or paths. This is preliminary work. There is still a lot left to do. I only tested it on Debian GNU/Linux. See the todo list in OdePhysicsController.cpp for an idea of what still needs to be done. Anyone interested in contributing please discuss via the mailing list or private e-mail. Thanks, -Norman From Brad at fie.us Fri Oct 18 12:31:01 2002 From: Brad at fie.us (Brad Friedman) Date: Fri Oct 18 12:31:01 2002 Subject: [ODE] ODE and the Blender real-time 3d modeling/gaming environment References: <20021018202815.GA32125@nlin.net> Message-ID: <3DB06199.4020407@fie.us> From tetron at interreality.org Fri Oct 18 13:22:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 18 13:22:02 2002 Subject: [ODE] networking In-Reply-To: Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I'll jump in here. I really want to use ODE for my distributed multiuser virtual reality system (http://interreality.org), hence the interest in stable box stacking -- a virtual world would naturally allow you to stack stuff on top of other stuff just like in the real world (and then knock it down :-) The system is peer-to-peer and designed such that each object in the system has an authoratative instance, and the world is described by hyperlinking objects together (which usually includes linking across hosts) (lots more information about how this all fits together on the web page). For dynamics simulation, I intend to have a policy that the authoratative instance is entirely responsible for the dynamic movement of its objects, and nonlocal objects are considered more or less static. So the dynamics simulation is more or less consistant from the perspective of each user (even if globally it's way off, as long as it looks okay) without violating trust bounderies between hosts by manipulating objects you don't control. The problem with distributed simulation in the game paradigm is, of course, users may cheat -- however the VR stuff I'm interested in is intended to be social and not competetive, so there isn't really the same notion of "cheating". On Wed, 16 Oct 2002, Nate W wrote: > The thing that makes me want to avoid that model today is that physics > takes a lot of CPU power. Every client brings a fast CPU to the party... > if there's a way to make use of that power, many clients together could be > able to do much more complex simulations than a single server (or rather, > "more complex that the server *I* can afford"). Ideally, it gets a lot > cheaper to scale the system to support more users, becase each user brings > enough CPU power to do their share of the computation. Practically it > will never be quite that scalable, but I still like the idea. > > If you can have each client simulate the parts of the player's body or > vehicle, then broadcast the positions and orientations, the server's CPU > requirements go down quite a bit. Note that I'm assuming a game sort of > paradigm here, but other scenarios could use other methods of assigning > objects to CPUs. > > I'd elaborate, but I see that Anselm has already described something like > what I had in mind, only better. :-) [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9sG0vaeHUyhjCHfcRAlWcAJ4sCItHR5nYGP8MpA77B4uWQyaiqQCgr55D /GkkJGsj8Vvj1hnVHp/YifA= =ertj -----END PGP SIGNATURE----- From tetron at interreality.org Fri Oct 18 13:27:01 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 18 13:27:01 2002 Subject: [ODE] box stacking instability In-Reply-To: Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thu, 17 Oct 2002, Nate W wrote: > I have no doubt that boxes will rest on other boxes when the box-box > collision code returns three contact constraints when boxes are touching > in a face-to-face configuration. It works for boxes on planes now, it > will work for boxes on boxes eventually. This is very encouraging -- I quite want to see this happen as it is a prerequisite for ODE being useful for me. If someone can give me some pointers on where to look and what needs to be done, I'll happily roll my sleves up and look into fixing this. Any suggestions? [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9sG5jaeHUyhjCHfcRAjNhAKCqgzG0epl2qZy59mhDb608prVZ5gCgj0ap H8wDr1BK9N3wjcXrqtSwtJA= =jfiA -----END PGP SIGNATURE----- From russ at q12.org Fri Oct 18 13:50:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 13:50:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: cool! i'm in full support of ODE/blender integration - i think this is quite an exciting prospect. in fact i took some very preliminary steps in this direction as soon as the blender sources were released - but as norman is far in advance of my own pitiful attempt i will abandon what i am doing and help out the existing effort. i have a question: the commercial dynamics providers (ME, havok etc) have their own plugins for 3DSMax, maya, and other expensive tools. i am wondering what functionality, if any, would be lost by an artist switching from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a blender dummy.) about the suggestion to use IRC - it would be perhaps more useful to discuss this on the mailing list - so that at least we have an archived, google-searchable record. this discussion ties in with the file format discussion. i am guessing that the initial blender integration will be to run ODE simulations within blender to produce animation data, and that the saved dynamics information will be tied in with blenders own file format(s). it would also be nice if it blender could export a file format describing just the dynamical attributes that have been given to the geometry objects, so that in my game/simulation/whatever i could load this data, construct the ODE objects, then attach the objects to my scene data. it's important to have a file format that can separates dynamics attributes from the geometry data. this is because, e.g., i might design my dynamical system in blender but then use some non-blender-created graphics in my application. we dont want to tie the data to the application after all. nate and others - is there any useful level of concensus on what the "one true file format" should be? (disclaimer: i've not looked at the juice file format or any others). if there is no convergence yet, i have a pile of my own ideas i would like to contribute here. russ. -- Russ Smith http://www.q12.org/ From russ at q12.org Fri Oct 18 14:00:03 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 14:00:03 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: > i have a question: the commercial dynamics providers (ME, havok etc) have > their own plugins for 3DSMax, maya, and other expensive tools. i am > wondering what functionality, if any, would be lost by an artist switching > from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a > blender dummy.) oh ... and i know that 3DSMax/Havok supports cloth and squishy bodies (ODE doesn't yet) ... my question is more to do with the capabilities of blender itself vs 3DS etc. russ. -- Russ Smith http://www.q12.org/ From nathan at whatever.net Fri Oct 18 14:45:02 2002 From: nathan at whatever.net (Nate Waddoups) Date: Fri Oct 18 14:45:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: On Fri, 18 Oct 2002, Russ Smith wrote: > nate and others - is there any useful level of concensus on what the "one > true file format" should be? (disclaimer: i've not looked at the juice > file format or any others). if there is no convergence yet, i have a pile > of my own ideas i would like to contribute here. I went with an XML sort of format merely for the sake of experience with SAX and putting XML on my resume. It was also nice to have a pre-existing parser and a standard parser API (MSXML and SAX). I pretty much made it up as a went along, so I'm not terribly attached to the format. Novodex uses a format that looks friendly to C/C++ people (using { and } and familiar indenting, for example), and if I understand correctly they would be happy to see it used as a common open standard. It's definitely worth a look. Speaking of which, I'm reminded of a message from Adam @ Novodex that I didn't get around to replying to the other day... Anyhow, once a good file format gets agreed upon, I think a second key ingredient to standardization would be to have some open and shared "deserialization" code available. The less work it takes for application developers to import such files, quicker they (we?) will support it. Serialization and deserialization are useful for sharing data over a network as well as persisting stuff to disk, so I kinda like the idea of designing the file format and accompanying code with that in mind as well. It could be possible to load objects (and even synchronize them) over a network using the same format and much of the same deserialization code. That aspect would be helped quite a bit if the application objects had a common API to use when moving data from disk (or from the network) and into the application. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Fri Oct 18 14:50:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 14:50:02 2002 Subject: [ODE] file formats In-Reply-To: <200210170913.g9H9DQx22252@dubb05h07-0.dplanet.ch> Message-ID: On Thu, 17 Oct 2002 amoravanszky@dplanet.ch wrote: > We at NovodeX think the entire community, regardless of which physics > SDK is used, would benefit from a file format that is an open > standard. In particular we are open to file format extensions as > required by Juice -- though of course we should debate them first. I haven't looked too deeply into the Novodex docs yet, but as far as I can tell, the only stuff the Juice files contain that doesn't fit right into the Novodex for format is stuff that pertains to motion control. I don't think that really should be part of a common file format, because (as far as I'm aware) control systems themselves are not yet standardized. I came up with a couple of them for Juice, but chances are no other application would support them or even want them. The main thing, I think, would be to have a syntax that allows for application-specific additions, and some sort of namespace control (even if it's just the honor system) so that each application can easily ignore any sections of the file that it doesn't support. -- Nate Waddoups Redmond WA USA http://www.natew.com From amoravanszky at dplanet.ch Fri Oct 18 15:49:01 2002 From: amoravanszky at dplanet.ch (Adam Moravanszky) Date: Fri Oct 18 15:49:01 2002 Subject: [ODE] Introduction / Suggestions etc References: Message-ID: <001c01c276f8$da7e1c20$c912da50@powerhouse> This is a multi-part message in MIME format. ------=_NextPart_000_0019_01C27709.9D4F8300 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit > worth a look. Speaking of which, I'm reminded of a message from Adam @ > Novodex that I didn't get around to replying to the other day... > > Anyhow, once a good file format gets agreed upon, I think a second key > ingredient to standardization would be to have some open and shared > "deserialization" code available. The less work it takes for application > developers to import such files, quicker they (we?) will support it. Hi Nate, I attached some simple parser code (only 7K, I guess that is OK). It can create the ODS data structure from a C++ stream, or write a structure to a stream. This stuff only works on the ODS syntax level, and is not physics specific. All the higher (physics) level serialization code is part of the free viewer code in the SDK download, but of course on that level things are less portable -- as you know for example our joint limits are specified quite differently than those in ODE, for example. Still, standardization even on this level would not hurt. -- Adam Moravanszky /*================*\ |Chief Software Architect |NovodeX AG |physics middleware |www.novodex.com \*================*/ ------=_NextPart_000_0019_01C27709.9D4F8300 Content-Type: application/x-zip-compressed; name="odblock.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="odblock.zip" UEsDBBQAAgAIAMYEUy2gRuF8ngYAAAYRAAAJAAAAT0RCbG9jay5opVjrbxo5EP8MEv/DSJEaQBT6 uDup0ERqCVGjJqEtqa4fKiGza8CXXXtre5PSNPe334ztfUCStqfShLDj8Tx+86R7YiljvoT5fHr0 +nQ6fjt/M5+3mntIE5Lvkgfdx7/z6n5uNb83dl7fiYZaEhVdQpQwY+AxqMU/PLIQcxNpkVmhJPhP 1ZV7xMBYZRstVmsL7XEHnr548QJexSyFM6XZFZPm2+WmrvU+Eb/3QhGffxOjAcHcak4dAkc1AGbu k2k1H76M1448GxyAQ7TVnFlmecplSYLvcMF1KiRLWk1POQCBWYAs+zf7cFPeuIX9232AVrPgJ0bP N9pvNVvNsUqJzwxbzcYeHiaUM5EnImnQBejCAA/SPLGiftoHuFhzPIvWTLPIcg0Rk1JZWHDIDY/R Iq9LLAXXpk/q3LOBlG2Ii8soUYHzS64sNz1gMgazVnkSOzlSfMk5WAVLFqF68gsMZzpaC7lyIk8k MLCbTEToHcuyBD8Q2j3ItFppzJ1rJy1R6hKWSsOlVNfSAxn0ac5iULkFgbah6RpVWLABsrbpoKJ3 TFsR5QnTjsNAqC/DU4YuRoQghurNybvjk9MJIt64wd/ZWmSSpRw/uufGOBEe2fDsOM5UzBP3FIiN M27WxyLh4B8LcoNoJG8UnhMVJ/yKJ6Yg3Pq/F/yrzTVa+HMR4Yb/M0ZQMmHvGtTv9+t87n3G9RXX NV8KJndKb/hL1YDdSGCo85jDy1mKQPbXh62m7xShb4y2ua6wcpQ+hDpNKGMxUukhlelgEJ5CdF02 qXy17sECA7mKIlAy2cCaGSguOhUhbNOj+dmrTydH8PxJ0TwGg5R9rWUsIE4ruw4wlUyYapz67akw 9mWw/rBwg4joSsFjbDwcel8KVujuMtO/LSx+2KWpAcOv1XzVJQwwjakq0gwh4Wlmsfxc/iOT+/n8 w27mwluYONtIy75OtMZSKtM6yxdYd9REGlzmKfjjG2KfzD+eTz7N33+cXkx6NcL09YdX4y3K+A7l 9ORi8uHVaa+iTKbH/mlyPkbK2/Pp3+dw63I50+IKIXBGeP1c69GOdVv2twNbB26QFfHkIy+KWhr2 PWZmVmOfaXcc1Z2FoypNiJhLI1aSGhmRZ+IbH5X5YvAJ1BLYQl1xjINmG6qShVIJLIoAkZBaVoDJ F75B0cH22XAosDMxTCnfofBt5DWVdOpy1NPQ9LKLGUozZHItAUcSSxETuUKawcQREZQ+RHqTWZdN o+rUuR1zd9Z2D1GvuvKodqmzewu7/P+7daVEvH2rS/dcMRVV/+gHcpynVcyD1LL+EsViP2LbTqQo RHZGiA+dGl8dsNQqDVtLFQNMhlo3iPAqjiQGkl9jx6FG/2/FWLu1rarnwh987HlkDp44yQ+a0APf CimqmB8LX78Nh5ZhV7zuUw0mn2jvabyGh6CW9GF64k0Ddi0KjThrTUT7B2UKDnkahf46HByA1TiO xRI2KodrHHzEnjKaxhwypg2nOZrltn+PZW4wdmGZ9Wo2FWhiYyUb8Ieyd6HVJZdwNsOoJ3C95ti+ Cp9ixY3ct9j49eWWGppsu+7Xvd91vijQctvADSLh9AlN4HXLO2SCxMFP2AcJuGL0Q02FWvPJRg3D 9wGfAE6rMEWlV+lD9xBc47Yboanqy0VPcxzfErHAwnV402bCymKmSEiFmxi2MkEl8Dp084az51oL S/Y0CnS8Od62CvDaqMP+ZHGZW/jx4y+xOC5nSruonke+wPA27mVacDOEYGxIDVzz8yjixlS5jzFf cVuUQYWPUx0i9IFHuTYCEXfL3YFz3BVkAYXPzmth17BCvvpu2QNMmfOPp6c+IM56h22tVgeDTHPM UO7wRnsC5iWkKAKrKqhBPNAeTaEImDif8ZrdaqrDIsApZkw5bdsVxoX1Rd0QX3XdjWX8XiMStkh4 lT4S17fdhKlkMciUkLRwoycUNmIHgVt5LKgZlS5hWWJi7/qyb+pLjtfYp33hF1ycFXPpZy6WUBpo V22rFNq543mVK+RNoedXnS/VVY7AWqzALcfUoDTWWC4jixt/PV1Vma5DaFP5u+6D312L2qIy6hQI FFl8UhaTR5I6s4Uu2eqbgSl8R+xRYDpsNBzjDTx99nx0uysvbBnbIv3gC0IrOYUktohww7wr6xin x651S6LBg6LQpv4ff/71gCxzv7Da/AXc+BzV0EDZ8vfps/7zEdTf8TuC29dcjDjtX6a2LyiJJRlG Pu6b1i1o1EVvw1zf4zLGHBsMdv5f4z9QSwMEFAACAAgA6gRTLWYKGQ+zEwAAZEAAAAsAAABPREJs b2NrLmNwcM1be3PTSLb/21TxHTqZ2omdOLH1svwg3GJ4VFHLkF1gaqYKKEqR5USDLflKMiGTzX72 Pa/ulmwngYG5e0M5sVunu8/zd87pNr39w2/52X93/96/Wms//8Kxkyc/zfP4o4rnUVmqQ5Wf/p7E lZomZVykyyrNM8Xv7JQty6jH+fKySM/OK9V+3FHOaDRSj6bRQv2cF9GnKCv/+HhZ33XbEt/2A0u8 +0Yd9e7f6+0fvko+pSWIvZ0I9ageVWPl9HteD6QMxoEz9kL1j5/hCWniPMrOkqn6BGrMCxXnWRWl WVKoWZEvFFKUMJ5mZ+pTNFdVropklhRZnByBBN+VxaDnDHv9vhqN3dHY95hFFQt/ZRVVaazK9A/4 kGbTJKvSWZoUJRIBW1FxmlZFVFyq6WUWLYA0tTRHJOz3ZXfQc0a9vksqiqZT4GqxmlfpHJQHWlws YHPZ9wu3vn/vhzSL56tpoh6Imx+dP6yPlhUaggaZfDZNZuofH05ef/jt9cmLR6+ev4ZRGEMe0rz8 cBqV9MaOXqBW2snnZUfBLxhP5mWy9XFaHtlPSJhN0xlvvCrRH0DLSbmM4gRsM53gODhPWaHFCrWv RITxGCK1eloU4FzH6uUvL14A6Sor07MMVGaI4uJyWb0GGydA1afVxOK03CJavh0F798G7+Hx1f17 V86gq1yvq0bw8rsqGF13YXTowojTBW+HUfzr03AABMOu8oDWBQrP4VEgGIQ0HZ+EPIrTYe3hCEZw eRocwHouvEa4LtAPXRoOYdEBTMXHPv4dMDUMhzDfhXU8fDEXQ4eHhgEyhgwyG7LAEGYN8W+fh5Fp hxnHWbzjEN6h6AOfGXKFkYBlwNU9XIqJgQh5CUAQouBRfAdTA3h5oA2fVRe4TISrIqdhQMNOwJTC DQsY+kwzQmXCBj7v57ioApiKS+BfZs6H7b2Q56N2h6wOf8QyI78wMRABUcs+q9VHjYiSBmK6IRt3 wEyjHLCMh9x5+JRN2Je5vpiSaQM2EgoKc3xW84Asz77ko61CZg5FGbEZceKAqd0ApQJqHB6hcVjw ERs68NmUDjONvLps1AFuyhI6HhM6LivQZ0WjJw5DnMvaGvEa+DHkTVF9zAZqAU2H+yIrgTCNfuex knGHkKnDkOaiZTBaRKFICyNoKhSTKTFAHJbFB1F5FCehy4ZE7bILeL6Y3mElDZgF9B707ZA5GYhs 6K1DtjM6RyjEI1oR2UBn8JhddGB8guZG7/PExTlw0PUCCiLmzSUHQrv4qGa2B4Vzn50f2fbZ85Ei FNWh/OyHjtAgLb54YWQKDY+mQK7F8VE8jwMFEWIgRgrZKyky0dN5P4w71+eXT+ZisT22MsqMzujz 2q6FF3Rrl0XBj6IIFJIH0ZSID7goKmQkkvjsURgKGLMhD6MfuyG/fPrL1Bj/Drs5suMwG4Ewi/ZC u3liwoDjKRhxvAQCD+g8odgcVcuLYARjfCAK0Ewx+IDN5AuUurwIuhqhqseLucK3w/x6sq0jzj9g odG/SMMC/UNewGELBbwGwXDAlh1R0DHxiD0XlYhqGbLB+oIBffE1MWNf7BSwVjwJFodZczmUXXYF DB9UG/KAmh0IBg7YhrQ8TuKlUUeOYAmGuC/QyFpDXaCFQoHzUEw7YNCUZINeyMiGPutIBISsM2SH 3E8MMGQM0IjnMRu4NcYmLkTAK0yLkyIvlNN41BNICwWABBpFQwNJAmxaQinRvUuRxsMOE+JfNFwg puWoQqOjZRzRvzgSZhzmkAV3KXUPOTdJDPnsE0N5BWKUkFFO5wTW8ohVOeK47V9fb1QdafZpo/Ag M3kMDGi2kc1m6Jloc4QfCQTK4uKw6EfiwyTlgJMtuqhIigwieHuEi5JVXd4HeaTsOTB5UpIICi3B 60sdQJYzmZaypOQFcgwbpFRC+Rwjkj0H4u4OQ7AAuydZCw1K1dDIxL8nQBLalIMfA4dxEjUiKTiQ hIE+NtSZCAVDz0U1IQpIPdJnVKJs7ZsETHEoAeOHBlhowZBBn+qKvkkwoSDIMDC4TJHP8YhbSCqh CmnIbkZr+abiIt+WUHcMSvalnLPpwYCvJ946MFEXCrYEA5sVA/ZKzh1eLdmOajhrC1tfIpSALzCx 6Ety9XyT/yjD+AwplCc8A5G60kRXcw2s4FxKgL7FoFC8Syo0m0F9jn20WWiqInRu3BZDTbIiQgYV SiykhC3qBWFDl5+1esLvS9YPDUCi9RBOKS0MDSQjr4RKAqmSSDC4UWm4kKOTJXPEuECGsWUwZdQ+ FYkCkGQeya6BKVRwhApaj6WRBoI04LIm3IHJOc6IFTQUM0oJi9UEQfGoAYVUb/scXL5nWhbcCiMD LYJhIyW9J4WGBgTXFOmhlEGBbyBZ6lfqIDxTYaMuMD5dXdqOTDlAjYIjpY1rYB3jDxeiktA2Lejt lOaGpsWRasmRAty19fhQEB8V09dN2YhUT8VeaIvgPidynBXYnozyuyRn6U1Q5wNWJk8wpXsooY2y jmy6sAnAdl8hJyhPTDwwacsTzHBNrxCyvIQ7vqnbAimvBn1poFzTXfqyOLIkdRRGj0YNyoC25pUO lcqpoa3zJflSoe2acpOGAvFq23450qchn1LJUqCF7FzDvs21A8Zh6mEHJucP2HIIQ/zU1L26guyb JokUL93kSHcLUnKj9ahodXSRPfSksOzr4gCRi2qkAUONdODkU5LXqGEZmerWF8i0bZPj8F5Uc9U6 mRGjy0heg1opzNwOh6Ya1C7vs+6k/KRagmFgEJhSySdkQaNQ3Waru0AEx9CSToYqYJcSBXVUthdy bLqC3o0LD6o4zHlIktGJSJtG464yJyY/KntU0rl/rwU1SYuIKlillc5UO1YP1R78+xFI1YNjkDJE QqJsxerwWLXh8YHTwQktPCg9pvOV+P1bu/Sh854e185loAByDtptO3IQH1SdvwW8TgyPK3l30Nyi 14vKMilAGPWAuKHRa/hVJNWqyFSMA9ebSpgm/6dKkHLvL9PDVok/5en0BrPvo8xlNR2P87IqkmgB cpfqDjVcnKfzRLX3YytuqR48UHrl/RhWqE1jVg8ODIfXfMYntqid4508eX2ZVdFnOssbj6PyNR1H tvXO9cp5lSWfnbdYM+/+c5WD0nBgmcRVMj3anWwhdpn4ZJlkeLZ4WuC54l2TPJ70eJ6XXz7J50kv 0iopornKC1UmizTO53l259yA5/5iyECtU5XP1AyVPstX2ZaJoPlVpid+zPKLTBsDbyui+Vmu4nya yMSLtIrPVTspipq/4jEuqP/ph19ePv3twz9/OXnzdIwPtDuRuidbSE9+evXo8Satu4328XZabxvt i+dvnr569GKD2N9G/PTk2QZhsEb49OVjIP77y5NfXzZoSXlEO01m0WpeNZ7KcXLDcfUN0b49gM6j 6Wu6FGqnOpDSkty214vhc5VoL+dbD7QmPDUrqXyiASYmrG5VxaUi06TlUZlUs7Y+bR+Py4/p8qLs TFoIfPhBQUhWclLOU9TDh4wAAlXHx2pvZ4/szQY3NLBEdZ6QH0Xgb4WKZvgbx3YUEEXkOuB5PLbu V6sSPFmpXxOVZ/NLVa6Wy7yo1KekwAsO5aioonmLHK8rjnhrYmkHWHKEpVZ1XuQXKksuVAMD2muI sG5IxpYW3zC0jGytxlk/u22rlcN73oGUDpbqVsVK8IkNLL/NelumzCJ42I0t3sYRhVODUwRWG1z1 64n48KGFNVpjm6PJWG4wvAaRmhPjZt3TPJ9rw3TZh+IOOQf6ZalOrd/xzWVX8YUPQlq5Oj2FxyUr ASfROmj6PlkdYomXTqZQf9BQmYDR60kx7sarosA7s89yudIipk4Zmo8VaW0iG4D9L5K9IgEuyhR8 K1LLKC0Q5P4XyZEVe7Nmr3R48HX6R2L2eJMUizQDjIWMCKbEsQqHqvo8GEyy1UJd/fro+ZsPz588 ffmmy79p4KcXJ4//3qXf13QHiMtsv/gC3s/iWCVky4u8+BgVCMhjVeZFcdlVWQ56WyznCfp6AuNp llZpNAeWzb1nCQotkjg/y+ieEayYUITZGzLLpurbUR5w1siIbeXaUR7w7G1aS3IFKs2uPGEkA4H6 HQWONFXLvCzT07m9WURdFBW6CCSMc/UDXoFKLsIbSJrsyOR8VdQuQ4/U4eFD8JOzpBKLktdAXjqi TamAaO8AsM2idN7u2EghZEDfhYKOU1t1DgCyoHv08+hTok6TJNN7VsgLgovEwuklMRJH8zno+/BQ LYs8TspSpRW6WkWzZgrYIrEiCu08SxiVsKyKoRyK42NyLosCTcA0ECZhIQiG00012V0vfxhXYJYG 490mGMNyYqRjNmGngWd1R+dQ4vFoOqVN0GDt/fYaVBlI6HSaILeBl0pZDnbqfoLVrRmmkY4SpFDq a0DblhWaFYMNO/xOhpERHhAVYAKEenR7CmQSK88t2ZIJdCjoKLgJ+a1dGsyIvqTbMCZjzdQksHD4 8FgZ3NISXWlma4Dm7ts5B8qXtVpSIoOSU8lFNPLWTD2Q9kE2tlGoNwORi3h5ic6RdmuP9axymsyT KmlvedRAYZyvH1yLpOb5W8M8VqHx5ObnwK+GbxTPDB/c7qG6ao3XdUgF3t4Pe2MtLngA9C55kbT7 n5/BT5e/Y7D3LtszYQDeB4jxcdJYo3fLGvDw1rlXe2NlJm+EEoPyzaH0dfVPrezuYPlWs1IcZYCQ gLbzeX4B2QUQkZP/RS+vF4lpdppUFwCl1kc4LIjT2wS9rimpLieD1jcI9FgE0itwCaQ/NkpzKiKq 5HNlPzUT0P9ssriGqzUHuhld/wzA2uBowFJ9u6+H2j+jT+mfanw1lGG25HQ02euwUkURkOiTqd29 aYxNFG3scTv2NVTxJQj4lSB4Mw7eDYW3o+FtgFg3+52w+EXIuBUca9tcb+SuayrJEqhwIijTOO6n 6TTbq1Q8z8kVv9qLoLHuTDY6X9uG6JMZ0+Umi2UloPOdy/i1RujfmyzMsJamZhZKbSxhbYf9Avql 8ZgOZPA7iGQ3rEnb6FDYAxFVeXSanKUZNGYqxSi04xAPOHpwkJI7aS9p76cc+bXNl3kKu+O3Blt2 fjxPooIaPhze7mNfpqwtR3olFMbPsKS2h3i5dIVUfndVvUPU+lovYSkqczrJ291xdtfPJHUfjZvJ UUfODXSti0YX1KjXJBRGCF61R21KYejX5eAirCbI2pEgqFxVEbQvn5K5ZhXHfmfj4NrcKdAGQK7K CDanQzVVnuer+RQTJ++7syPq2dE7sXLIYX6H7kD9/kBvdujAp4ODjmLN7b2r9iZKtzJSOupnu3vm RGYdnpjCjjYbELHKhyzHb0TuTu5ef8fEVL3NkHXeZbzEVoE2xTHzrsxEo2qNTLeEWetbAq3VwhA7 fNh0JpF7jZfDwz8l1bWRynQAqq6tiX5ed+5asOhjb1D/Rtu3zdSa3o530c3Xpxrja3pj/q3kX8bL bW5h5l5tzv2v2LfLgT7ZxuP13g0ttjXfVtkmN82rHe/eCEvPnr94CmXIbFnHpL8ciG5DHUKlJRQJ 0PECW7vvqt0OwU8dHRoEu7sdfYG15pg1srXEpF2xvpB2RrPaXbutud7VBusZ094Wvuxt6/K21pe6 Mmut49RtbvwtXrzhxOgjNZBax6ivlnFdxGsjokYltU4y0STi1uDKdOxsXZvMvPVyjY3LN0r1rLPF beSoupm6tMfIQ16hxgvFj+Wj1K5hmJGJxmdqc1UzPlkII1xaL292Ujyf1K2LudTEwATyeZK1086B 0xCMSq0HquakN3UE670Aae7tXLci9cJtbiwlDUgN+9O6jZqiNZpPfVX046mWcGvban10uSrPP5xG UCHDlBsqxyIpE/AA3cL0essiWUYwioe9eHw7S4sSz7QXyTTFKtA0iPF5OqfTVGxSgD9T8l81i/fN WNKcNH1gkReJlqfUHPV6bL2S2gI8o0Qyw0SpgFUVfYrSOcaQ6QPoSizKLtHvDK29uFZtw99mUHew J95p72sSCOsmcB0c6EcT66fqlhUnNUGMHHhTwNdpU3WZVFonmzGaJZ8rGx3WUFoxke430GK4Ik6w ZpL/z6OUKMdsoEowTkPMZgQ3xPwKdCjroFDejQWbXvBaq+8OLwA1s9Ntd4Pvahl7T9swjGZVOL3L KoZjaw+78ClmnppBNoxgMHGy5Sba8gVRyzxZSETDSsnyKoF4LVPIU9CPxuedOtNyUoiXPWdAUcf0 Ln6JAVvSo02+N/MCn2QVWbxYNpCO+Dh58uHnR789f9LBc6d+3Vuq87ThMOZGyAag2no1v3Zo/9fV qsTMugrXz/SRhmILSwJjDRaeOmV7rFe3aO1Mp3ZuWF+VV9yu5vVnNyu7ti9Oam69rllbG7e00/V6 6jw9U1zOLKK4yNVslcVV2VX1SML/JbuK8fZtvB7kWifPM/MtJOaWiuf9pTilubku6esvebEYS1a9 Uo7rTa43XBEy5VJ7I74HKzT1X7tpxOeHDyX/2Y6dh9eSUafF3sV2K8s4ymZC2YTn7u7fprvdpazX qulDRq7XLvhN2r6+SUnyVQHRk1aU/A9IGGBtWQVpFUWn8TSZ/deUtI/rblPR5Ltp5tk8j6p1xcxw UPvQplbAb478YPD/1Hdm39l3SEPlTSqqfcsvWy1otOz0eo1Ac9wjb6Lqv4+OjhR+m/S7qc+2XhD8 GbZE2QPDD3yQLvc2Dd+p1R/by7fZ+44cvzZ0e4tS79/7D1BLAQIUABQAAgAIAMYEUy2gRuF8ngYA AAYRAAAJAAAAAAAAAAEAIAC2gQAAAABPREJsb2NrLmhQSwECFAAUAAIACADqBFMtZgoZD7MTAABk QAAACwAAAAAAAAABACAAtoHFBgAAT0RCbG9jay5jcHBQSwUGAAAAAAIAAgBwAAAAoRoAAAAA ------=_NextPart_000_0019_01C27709.9D4F8300-- From nlin at nlin.net Fri Oct 18 17:59:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Fri Oct 18 17:59:02 2002 Subject: [ODE] ODE/Blender Message-ID: <20021019024242.GA32509@nlin.net> Russ Smith wrote: > >i'm in full support of ODE/blender integration - i think this is quite >an exciting prospect. in fact i took some very preliminary steps in this >direction as soon as the blender sources were released - but as norman >is far in advance of my own pitiful attempt i will abandon what i am doing >and help out the existing effort. Not so fast - we may be doing different types of ODE/Blender integration so I wouldn't throw out your work just yet... >i have a question: the commercial dynamics providers (ME, havok etc) have >their own plugins for 3DSMax, maya, and other expensive tools. i am >wondering what functionality, if any, would be lost by an artist switching >from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a >blender dummy.) Something important to understand about Blender is that it has a built-in real-time interactive 3D game engine. This means you can model a 3D scene in Blender, press the "P" key, and Blender instantly (typically less than 1 second) starts the game engine, which then controls all objects on-screen. This is a reasonably complete (Turing-complete, anyway) game engine; you can animate objects along paths, read keyboard input, move the camera and players around, create/destroy objects, set variables, send messages between objects, run scripts, and have objects controlled by the physics subsystem. This physics subsystem in the real-time game engine is what I am working on, so that Blender real-time games can have dynamic objects controlled by ODE. (The previous Blender game physics were impulse-based.) >i am guessing >that the initial blender integration will be to run ODE simulations >within blender to produce animation data, and that the saved dynamics >information will be tied in with blenders own file format(s). This is not the ODE/Blender integration I am working on right now, but it is very important as well, so that artists creating non-interactive animations (more traditional animations and movies) can also use ODE to create realistic dynamic motions. As I am not an expert in creating these kinds of animations, I don't know how such tools typically work or how they could be integrated into the modeling/animation workflow of Blender (as opposed to the game engine integration, which appears to me to be of a different nature). The way it is now integrated, physical properties of objects are specified either in the Blender material for the object (button DYN in the MaterialButtons) and/or in the Blender Game Attributes for the object (in the GameButtons). These buttons allow the user to enter properties like mass, friction, bounding volume, etc. The Blender game engine reads these fields on game startup, then creates the ODE objects. A rendering/animation tool should probably use these same buttons to read out physically relevant information, but would start an ODE world and simulate one timestep forward for each frame of the animation rendered. From what you write above it sounds like you are talking about the possibility of running the simulation just once then "baking in" the ODE-computed animation to save the animation data somewhere. This would also be possible. Again, I don't know how such tools usually work. >it would >also be nice if it blender could export a file format describing just the >dynamical attributes that have been given to the geometry objects, so >that in my game/simulation/whatever i could load this data, construct the >ODE objects, then attach the objects to my scene data. Blender has a python scripting interface, and many good python scripts have been written, especially for exporting/importing data. The python integration is kind of shaky right now, since the project just went GPL, but I expect it to stabilize. At that point, it should then be fairly easy to add python access to the new dynamical attributes (friction, restitution, bounding volumes, mass, etc) associated with each object. Then a python script could simply iterate over all objects in the scene, iterate over all attributes for each object, and write it out in any format desired. -Norman From russ at q12.org Fri Oct 18 20:36:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 20:36:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021019024242.GA32509@nlin.net> References: <20021019024242.GA32509@nlin.net> Message-ID: <20021018204011.2905d6de.russ@q12.org> > This physics subsystem in the real-time game engine is what I am > working on, so that Blender real-time games can have dynamic objects > controlled by ODE. (The previous Blender game physics were > impulse-based.) ah ... how are the dynamical properties of objects set in blender? i have in mind something where you select two objects, add a joint at a specific position, drag the low/high limits (some kind of draggable widgets that surround the joint), pop up a dialog box for the joint/body/surface properties, etc etc. of course i should just try out your work in blender - but i have found it (blender) even more difficult to use for the ininitiated than 3DSMax, which is saying something. russ. -- Russell Smith http://www.q12.org From coding at natew.com Fri Oct 18 21:12:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 21:12:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021018204011.2905d6de.russ@q12.org> Message-ID: On Fri, 18 Oct 2002, Russ Smith wrote: > of course i should just try out your work in blender - but i have found > it (blender) even more difficult to use for the ininitiated than 3DSMax, > which is saying something. That's good to hear, I was afraid it was just me. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From nlin at nlin.net Sat Oct 19 07:19:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Sat Oct 19 07:19:02 2002 Subject: [ODE] Re: ODE/Blender Message-ID: <20021019155757.GA4938@nlin.net> On Fri, Oct 18, 2002 at 08:40:11PM -0400, Russ Smith wrote: [reordering a bit...] > of course i should just try out your work in blender - but i have found > it (blender) even more difficult to use for the ininitiated than 3DSMax, > which is saying something. The Blender UI is about as intuitive as that of vi or emacs. Hard to learn, but very fast and powerful once you do know it. See http://www.cse.cuhk.edu.hk/~wmpang1/blender/blen_ui/blen_ui.html for a good introduction. It's somewhat old, but still relevant for the basics. > > This physics subsystem in the real-time game engine is what I am > > working on, so that Blender real-time games can have dynamic objects > > controlled by ODE. (The previous Blender game physics were > > impulse-based.) > > ah ... how are the dynamical properties of objects set in blender? i > have in mind something where you select two objects, add a joint at a > specific position, drag the low/high limits (some kind of draggable > widgets that surround the joint), pop up a dialog box for the > joint/body/surface properties, etc etc. After reading the above tutorial, add a mesh, add a new material to the mesh, and in the MaterialButtons look for a small button "DYN". This controls dynamic properties of the material connected with the mesh. E.g. friction, restitution, or some special Fh force on slopes (for the old physics, currently unused I think). Another place to enter material properties is by the GameButtons. Select a mesh, press F8 to go to the GameButtons, then click on the small "Actor" button, at which point some more buttons will appear, then click on "Dynamic" and "Rigid Body" (the old physics system had both "fake" dynamics and rigid-body dynamics, which is why you had to explicitly select "rigid body"; currently there is no longer any distinction between "Dynamic" and "Rigid Body" that I am aware of). At this point you can set the mass of the rigid body object, some damping properties, and some other properties which are probably outdated and were for the old physics system (like the "form factor"). To select the bounding volume for an object, select the object, go to the EditButtons (press F9), and at the left activate the button "Bounds" then select either "Box" or "Sphere". This controls whether the physics system will use a sphere or a box for the rigid body. "Polyheder" is also an option, which will eventually cause a tri-mesh to be generated using Erwin de Vries's triangle collider. There are currently some bugs with the bounding volume selection (see the ToDo list in OdePhysicsController.cpp) As for joints or constraints, Blender already has a constraints window designed for animation. You can constraint two objects to have the same location. By creating "empty" or "dummy" objects, and using these as parents of "real" objects, you can get point-to-point constraints in the modeler. The game engine could use this information for generating a ODE p2p constraint. There are some other simple constraints like "track to" or "copy orientation". The current constraint types are designed for animation/modeling help, but we could add new constraint types for physics, which would then be used in the game engine. Again see OdePhysicsController.cpp for notes on how this might work. Blender may be a bit confusing at first, but it a very powerful program and is worth learning. -Norman From nlin at nlin.net Sat Oct 19 07:21:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Sat Oct 19 07:21:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021018204011.2905d6de.russ@q12.org> References: <20021019024242.GA32509@nlin.net> <20021018204011.2905d6de.russ@q12.org> Message-ID: <20021019155926.GB4938@nlin.net> By the way, some sample files illustrating the current ODE/Blender integration are at http://www.xype.net/~nlin . These files will only work with the CVS version of blender at CVSROOT=:pserver:anonymous@217.77.141.135:/cvs01 . -Norman From Benny Sat Oct 19 08:32:02 2002 From: Benny (Benny) Date: Sat Oct 19 08:32:02 2002 Subject: [ODE] 3d world an directx Message-ID: <200210191531.g9JFV8u16679@hook.org> ------- Original Message -------- From: ivan.bolcina@volja.net To: "ode@q12.org" CC: Subject: [ODE] 3d world an directx Date: 17/10/02 07:10     Problems.   Is ode 3d world different from DirectXs? It seems to me that y and z axes are swapt.   bye,ivan From don_reid at attbi.com Sat Oct 19 09:04:02 2002 From: don_reid at attbi.com (don) Date: Sat Oct 19 09:04:02 2002 Subject: [ODE] Re: File formats In-Reply-To: <200210190101.g9J119u04892@hook.org> References: <200210190101.g9J119u04892@hook.org> Message-ID: <20021019160048.GA9649@reid.corvallis.or.us> An important thing to have in any file format, esp. a new one, is extensability. You want to be able to add new construts easily, and without changing old code. XML gives you this automatically. Of course the parser must then be written to skip over things it doesn't understand (with a warning if desired). Don Reid From ivan.bolcina at volja.net Sat Oct 19 13:17:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Sat Oct 19 13:17:01 2002 Subject: [ODE] 3d world on directx Message-ID: <007401c277ac$57b1de30$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0071_01C277BD.1A8E1A80 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi! I assure you that if I swap y and z axis, stuff works ok, otherwise = doesnt. Please look at my original code and see how are they swapt. I believe = that DirectX uses left-handed system. I pass only quaternions from ode to directx to determine current orientation. I have to swap axis in this case too. thanx, ivan ------=_NextPart_000_0071_01C277BD.1A8E1A80 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi!

I=20 assure you that if I swap y and z axis, stuff works ok, otherwise=20 doesnt.
Please look at my original code and see how are they swapt. I = believe=20 that
DirectX uses left-handed system.

I pass only quaternions = from ode=20 to directx to determine current
orientation. I have to swap axis in = this case=20 too.

thanx,
ivan

------=_NextPart_000_0071_01C277BD.1A8E1A80-- From airsona at bestweb.net Sat Oct 19 22:35:02 2002 From: airsona at bestweb.net (Sasha H) Date: Sat Oct 19 22:35:02 2002 Subject: [ODE] Flight Simulation Message-ID: <001601c27795$5a7a6b80$4001b3d8@airsona> This is a multi-part message in MIME format. ------=_NextPart_000_0013_01C27773.D27DCF40 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hey guys, I've few questions! Okey, I'm planning to use ODE to make my airplane fly... Would it be possible to simulate aerodynamics on each element of the = airplane (body, right wing, left wing, tail, etc...)? What is the best = approach, even if it's not "super realistic".=20 And also, if I have a mesh and a terrain, does ODE support such = collisions?=20 Cool......thanks! ------=_NextPart_000_0013_01C27773.D27DCF40 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hey guys, I've few = questions!
Okey, I'm planning to use ODE to make = my airplane fly...
Would it be possible to simulate = aerodynamics on=20 each element of the airplane (body, right wing, left wing, tail, = etc...)? What=20 is the best approach, even if it's not "super realistic".
And also, if I have a mesh and a = terrain, does ODE=20 support such collisions?
Cool......thanks!
 
 
------=_NextPart_000_0013_01C27773.D27DCF40-- From grubertm at hotmail.com Sat Oct 19 22:57:01 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Sat Oct 19 22:57:01 2002 Subject: [ODE] Flight Simulation References: <001601c27795$5a7a6b80$4001b3d8@airsona> Message-ID: >Okey, I'm planning to use ODE to make my airplane fly... >Would it be possible to simulate aerodynamics on each element of the airplane (body, right wing, left wing, >tail, etc...)? What is the best approach, even if it's not "super realistic". As I have never done a flightsim, I can only refer you to a book such as "Physics for Game Developers" which has a chapter on airplanes. >And also, if I have a mesh and a terrain, does ODE support such collisions? AFAIK no. Only one of the objects can be a mesh (trilist) the other one has to be a box or sphere (not sure about the current capped/cylinder status). I.e. you would use the bounding box of the fuselage & wings and a trilist for the terrain. - Marco Grubert From coding at natew.com Sat Oct 19 23:06:02 2002 From: coding at natew.com (Nate W) Date: Sat Oct 19 23:06:02 2002 Subject: [ODE] Flight Simulation In-Reply-To: Message-ID: On Sat, 19 Oct 2002, Marco Grubert wrote: > >And also, if I have a mesh and a terrain, does ODE support such collisions? > > AFAIK no. Only one of the objects can be a mesh (trilist) the other one has > to be a box or sphere (not sure about the current capped/cylinder status). > I.e. you would use the bounding box of the fuselage & wings and a trilist > for the terrain. That's a better answer than what I wrote just a minute ago. I think I misunderstood the question. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Sat Oct 19 23:09:02 2002 From: coding at natew.com (Nate W) Date: Sat Oct 19 23:09:02 2002 Subject: [ODE] Flight Simulation In-Reply-To: <001601c27795$5a7a6b80$4001b3d8@airsona> Message-ID: On Sat, 19 Oct 2002, Sasha H wrote: > Okey, I'm planning to use ODE to make my airplane fly... > > Would it be possible to simulate aerodynamics on each element of the > airplane (body, right wing, left wing, tail, etc...)? What is the best > approach, even if it's not "super realistic". $0.02 from a guy with a moderate understanding of aerodynamics and flying things: How about applying a force to each flying surface, in proportion to what the aerodynamic force on said surface should be? You could calculate the lift and drag for the wings, for example, and a force for the deflection of each control surface, etc. I bet you'd get fun, if not realistic, results. Make the force computations as accurate and sophisticated as your understanding of aerodynamics, learn all you can, and polish them up as you learn. > And also, if I have a mesh and a terrain, does ODE support such > collisions? If you mix in the "tri-collider" contribution, you can do collision detection between height-mapped terrain and boxes or spheres. A few of us have been doing this in our ODE projects for a while now. I'm using it with the Demeter terrain engine and I'm pretty happy with the results. -- Nate Waddoups Redmond WA USA http://www.natew.com From John Lagerquist Sun Oct 20 02:57:02 2002 From: John Lagerquist (John Lagerquist) Date: Sun Oct 20 02:57:02 2002 Subject: [ODE] Quaternion Integration Message-ID: <00a801c2781e$c6941260$6401a8c0@singularity> It appears that NASA has a quaternion integration method that does not require normalization between integration steps. Does anyone have any information on this technique? Their webpage (http://ettc.usc.edu/dryden/tos/closedform.html) states: "NASA's technology represents a substantial improvement over traditional methods of integrating 4-D kinematics equations. Those methods solve the quaternion kinematic equations in a way that does not automatically preserve the unit normalization of the quaternion. These methods are therefore inherently prone to error and difficult to correct. Such traditional methods are computation-intensive because of the substantial amount of error correction needed to compensate for analytical drift. NASA's integration method preserves the mathematics of the quaternion space that it creates and therefore introduces no error associated specifically with non-preservation of the quaternion norm. As a result, error correction associated with normalization is not needed in the NASA method" John From rtonge90 at yahoo.co.uk Sun Oct 20 04:14:01 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sun Oct 20 04:14:01 2002 Subject: [ODE] Quaternion Integration Message-ID: <20021020111339.28128.qmail@web14909.mail.yahoo.com> Hello >Does anyone have any information on this technique? Here is the full text of the patent: http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=/netahtml/search-bool.html&r=1&f=G&l=50&co1=AND&d=ft00&s1=6,061,611.WKU.&OS=PN/6,061,611&RS=PN/6,061,611 Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From Remko at act-3d.com Sun Oct 20 08:42:01 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Sun Oct 20 08:42:01 2002 Subject: [ODE] Another strange wheel rotation Message-ID: <277753125.359388433.98@server> Ok, it was a stupid mistake. The hinges where initialized AFTER the first simulation step. The wheels moved down because of the gravity and the rotation point was shifted. Changing the order fixed this. -Remko -----Original Message----- From: Remko Jacobs (act-3d.com) Sent: Thursday, October 17, 2002 11:40 AM To: ode@q12.org; Remko Jacobs (act-3d.com) Subject: [ODE] Another strange wheel rotation bug I fixed the 'bending wheels' problem using the following methods. The problem still exists but at least you can reduce it to acceptable levels: - Decrease the step size (update of 200-300Hz) - Different CFM and ERP values - Different masses - Bigger wheels (The bigger the wheels, the slower they have to turn for the same speed) I'm experimenting with a driving simulation and the results are stunning! However, after some experimentation, the car started to bounce and the handling was completely gone. It turned out that the wheel is not rotating around it's axis but around a point slightly above that. Gravity was causing this offset. Gravity pulls the wheel down so the rotation axis of the hinge is too high. What really surprised me, is the solution I found: When I set the gravity to zero the problem does not occur (as expected). When I crank up the gravity while the simulation is running, the bug does not come back but the wheel rotates around the correct point. Does anyone has an explanation for this? Why the rotation screws up when I initialize with gravity? -Remko _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From kjmac at freenet.co.uk Sun Oct 20 12:11:02 2002 From: kjmac at freenet.co.uk (Ken MacLeod) Date: Sun Oct 20 12:11:02 2002 Subject: [ODE] Compiling OPCODE 1.0 as a static lib for use with tri-collider Message-ID: <000301c2786c$4cf17990$0401a8c0@xperemental> (Apologies if this message is posted twice, I initially sent it using the incorrect email account) Hi, I’m developing a car simulation API for my MSc degree. I would like to be able to use ODE with the tri-collider contribution (ode/contrib) so that I can do sphere (wheel) triangle (terrain) collisions. Unfortunatly I have cannot for the life of me get opcode to compile as a static library. I printed off and followed the guide on the Wiki pages, but got only the following error output: --------------------Configuration: OPCODE 1_0 - Win32 Debug-------------------- Compiling... OPC_Container.cpp C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(41) : warning C4273: 'private: static unsigned int Opcode::Container::mNbContainers' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(41) : error C2491: 'Container::mNbContainers' : definition of dllimport static data member not allowed C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(42) : warning C4273: 'private: static unsigned int Opcode::Container::mUsedRam' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(42) : error C2491: 'Container::mUsedRam' : definition of dllimport static data member not allowed C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(50) : warning C4273: 'Container::Container' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(64) : warning C4273: 'Container::~Container' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(79) : warning C4273: 'Resize' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(121) : warning C4273: 'Contains' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(143) : warning C4273: 'Delete' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(166) : warning C4273: 'FindNext' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(186) : warning C4273: 'FindPrev' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(204) : warning C4273: 'GetUsedRam' : inconsistent dll linkage. dllexport assumed. OPC_Matrix4x4.cpp C:\MSc\opcode 1.0\opcode\OPC_Matrix4x4.cpp(65) : error C2491: 'InvertPRMatrix' : definition of dllimport function not allowed Error executing cl.exe. OPCODE 1_0.lib - 3 error(s), 10 warning(s) Looking through the archives for this mailing list someone named Norman had the same problem. He posted a message saying the he to could not compile opcode 1.0 as a static lib, unfortunately I could not see any reply to his request in the archives. Norman’s next post just thanked the author for helping him get it compiling! Here’s a snippit: ------------ Hi, Thanks to the author's help I was able to compile the tri-collider - I needed to modify opcode to compile it as a static library, then compile the files in the tri-collider directory as a static library, then link my test app against both libraries. … ---------- All help with this is greatly appreciated! Thanks, - Ken MacLeod --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 03/10/2002 From amoravanszky at dplanet.ch Sun Oct 20 13:12:01 2002 From: amoravanszky at dplanet.ch (Adam Moravanszky) Date: Sun Oct 20 13:12:01 2002 Subject: [ODE] Compiling OPCODE 1.0 as a static lib for use with tri-collider In-Reply-To: <000301c2786c$4cf17990$0401a8c0@xperemental> Message-ID: <5.1.0.14.0.20021020221049.009edb30@pop.dplanet.ch> Ken, You just have to get rid of the #defines that prefix all the functions / classes with __dllexport or __dllimport. It is not rocket science. --Adam At 08:10 PM 10/20/02 +0100, Ken MacLeod wrote: >(Apologies if this message is posted twice, I initially sent it using >the incorrect email account) > >Hi, >I'm developing a car simulation API for my MSc degree. I would like to >be able to use ODE with the tri-collider contribution (ode/contrib) so >that I can do sphere (wheel) triangle (terrain) collisions. Unfortunatly >I have cannot for the life of me get opcode to compile as a static >library. I printed off and followed the guide on the Wiki pages, but got >only the following error output: > >--------------------Configuration: OPCODE 1_0 - Win32 >Debug-------------------- >Compiling... >OPC_Container.cpp From Nguyen Binh Sun Oct 20 21:29:03 2002 From: Nguyen Binh (Nguyen Binh) Date: Sun Oct 20 21:29:03 2002 Subject: Re[2]: [ODE] Introduction / Suggestions etc In-Reply-To: <001c01c276f8$da7e1c20$c912da50@powerhouse> References: <001c01c276f8$da7e1c20$c912da50@powerhouse> Message-ID: <731305116.20021021111343@glassegg.com> As far as I know, Blender currently support Python. Then why do we need to re-implement a small descriptive language? Why we don't use the powerful Python? I didn't use Python but I use Lua (www.lua.org) and it does help alot.(I've heard that Python is much more powerful). >> worth a look. Speaking of which, I'm reminded of a message from Adam @ >> Novodex that I didn't get around to replying to the other day... >> >> Anyhow, once a good file format gets agreed upon, I think a second key >> ingredient to standardization would be to have some open and shared >> "deserialization" code available. The less work it takes for application >> developers to import such files, quicker they (we?) will support it. AM> Hi Nate, -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From ivan.bolcina at volja.net Mon Oct 21 12:15:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Mon Oct 21 12:15:02 2002 Subject: [ODE] ode to directx coordinates and orientation Message-ID: <000e01c27935$f510c620$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_000B_01C27946.B83F8F40 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi. Sorry cant speak Russian. I am from Slovenia, so we have slavic language = in common. I have this problem. Mapping 3-d coordinats from ode to directx. It is = not one to one. I have come to conclusion that positions, velocities are = mapped one to one, but orientation is like this function: //from ode to directx D3DXVECTOR3 convertVector(const dReal *in) { D3DXVECTOR3 out; out.x=3Din[0]; out.y=3Din[1]; out.z=3Din[2]; return out; } //from ode to directx D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=3D(float)in[0]; out.y=3D(float)in[1]; out.z=3D(float)in[2]; out.w=3D-(float)in[3]; return out; } So ODE is doing steps on objects and then I need to display it with = directx in corrent position and orientation. Position seem to be ok, but = orientation..... btw, I see you are professional game developer. How does it feel like? Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) ------=_NextPart_000_000B_01C27946.B83F8F40 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
Sorry cant speak Russian. I am from = Slovenia, so we=20 have slavic language in common.
I have this problem. Mapping 3-d = coordinats from=20 ode to directx. It is not one to one. I have come to conclusion that = positions,=20 velocities are mapped one to one, but orientation is like this=20 function:
 
//from ode to directx

D3DXVECTOR3 convertVector(const dReal *in)
{
D3DXVECTOR3=20 out;
out.x=3Din[0];
out.y=3Din[1];
out.z=3Din[2];
return = out;
}

//from ode to directx

D3DXQUATERNION convertQuaternion(const dReal *in)
{
D3DXQUATERNION=20 out;
out.x=3D(
float)in[0];
out.y=3D(
float)in[1];
out.z=3D(float)in[2];
out.w=3D-(float)in[3];
return=20 out;
}

 
So ODE is doing steps on objects and = then I need to=20 display it with directx in corrent position and orientation. Position = seem to be=20 ok, but orientation.....
 
btw, I see you are professional game = developer. How=20 does it feel like?
 
Lep pozdrav in dobro se imej tam v = mrzli=20 Rusiji. :-)
 
------=_NextPart_000_000B_01C27946.B83F8F40-- From ivan.bolcina at volja.net Tue Oct 22 02:03:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 02:03:01 2002 Subject: [ODE] Re: ode to directx coordinates and orientation References: <000e01c27935$f510c620$0100a8c0@vectra> <642235524.20021022104030@gsc-game.kiev.ua> Message-ID: <001101c279a9$8fddd8f0$0100a8c0@vectra> Hi,slipch. Thank you VERY much. It works great. So for anyone interested, here is transformation from ODE quaternion to DirectX's. D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=(float)in[1]; out.y=(float)in[2]; out.z=(float)in[3]; out.w=(float)in[0]; return out; } Ukraine is actually very near slovenia. Slovenia, Hungary, Ukraine. Najlepsa hvala se enkrat in uzivaj se naprej. Lep pozdrav,ivan. ----- Original Message ----- From: "slipch" To: "Ivan Bolcina" Sent: Tuesday, October 22, 2002 9:40 AM Subject: Re: ode to directx coordinates and orientation > Hello Ivan, > > Monday, October 21, 2002, 10:13:36 PM, you wrote: > > IB> //from ode to directx > IB> D3DXVECTOR3 convertVector(const dReal *in) > IB> { > IB> D3DXVECTOR3 out; > IB> out.x=in[0]; > IB> out.y=in[1]; > IB> out.z=in[2]; > IB> return out; > IB> } > > IB> //from ode to directx > > IB> D3DXQUATERNION convertQuaternion(const dReal *in) > IB> { > IB> D3DXQUATERNION out; > IB> out.x=(float)in[0]; > IB> out.y=(float)in[1]; > IB> out.z=(float)in[2]; > IB> out.w=-(float)in[3]; > IB> return out; > IB> } > > > IB> So ODE is doing steps on objects and then I need to display it with directx in corrent position and orientation. Position seem to be ok, but orientation..... > > IB> btw, I see you are professional game developer. How does it feel like? > I am doing my best to be it but I am only in the start :). > I translate DirectX transforms to ode and vise versa and > everything works right (As I already tell you it need to transpose DirectX matrix before > set it as ODE rotation matrix.). But I have never translate > Quaternion. > Following DirectX doc quaternion is > > q.x = sin(theta/2) * axis.x > q.y = sin(theta/2) * axis.y > q.z = sin(theta/2) * axis.z > q.w = cos(theta/2) > > From ODE doc: > > A quaternion is four numbers [cos(theta/2) sin(theta/2)*u] > where theta is a rotation angle and `u' is a unit length rotation axis. > > May be the problem in sequence cos(theta/2) - last in DIrectX and > first in ODE. Then > > D3DXQUATERNION convertQuaternion(const dReal *in) > { > D3DXQUATERNION out; > out.x=(float)in[1]; > out.y=(float)in[2]; > out.z=(float)in[3]; > out.w=(float)in[0]; > return out; > } > > IB> Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) > It is nearly understandable. > I am from Ukraine indeed. > > Nashi najkrashi pobazsannya! :) > > > -- > Best regards, > slipch mailto:slipch@gsc-game.kiev.ua > From ivan.bolcina at volja.net Tue Oct 22 02:06:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 02:06:01 2002 Subject: [ODE] Re: ode to directx coordinates and orientation References: <000e01c27935$f510c620$0100a8c0@vectra> <642235524.20021022104030@gsc-game.kiev.ua> Message-ID: <001a01c279a9$9e142730$0100a8c0@vectra> Hi,slipch. Thank you VERY much. It works great. So for anyone interested, here is transformation from ODE quaternion to DirectX's. D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=(float)in[1]; out.y=(float)in[2]; out.z=(float)in[3]; out.w=(float)in[0]; return out; } Ukraine is actually very near slovenia. Slovenia, Hungary, Ukraine. Najlepsa hvala se enkrat in uzivaj se naprej. Lep pozdrav,ivan. ----- Original Message ----- From: "slipch" To: "Ivan Bolcina" Sent: Tuesday, October 22, 2002 9:40 AM Subject: Re: ode to directx coordinates and orientation > Hello Ivan, > > Monday, October 21, 2002, 10:13:36 PM, you wrote: > > IB> //from ode to directx > IB> D3DXVECTOR3 convertVector(const dReal *in) > IB> { > IB> D3DXVECTOR3 out; > IB> out.x=in[0]; > IB> out.y=in[1]; > IB> out.z=in[2]; > IB> return out; > IB> } > > IB> //from ode to directx > > IB> D3DXQUATERNION convertQuaternion(const dReal *in) > IB> { > IB> D3DXQUATERNION out; > IB> out.x=(float)in[0]; > IB> out.y=(float)in[1]; > IB> out.z=(float)in[2]; > IB> out.w=-(float)in[3]; > IB> return out; > IB> } > > > IB> So ODE is doing steps on objects and then I need to display it with directx in corrent position and orientation. Position seem to be ok, but orientation..... > > IB> btw, I see you are professional game developer. How does it feel like? > I am doing my best to be it but I am only in the start :). > I translate DirectX transforms to ode and vise versa and > everything works right (As I already tell you it need to transpose DirectX matrix before > set it as ODE rotation matrix.). But I have never translate > Quaternion. > Following DirectX doc quaternion is > > q.x = sin(theta/2) * axis.x > q.y = sin(theta/2) * axis.y > q.z = sin(theta/2) * axis.z > q.w = cos(theta/2) > > From ODE doc: > > A quaternion is four numbers [cos(theta/2) sin(theta/2)*u] > where theta is a rotation angle and `u' is a unit length rotation axis. > > May be the problem in sequence cos(theta/2) - last in DIrectX and > first in ODE. Then > > D3DXQUATERNION convertQuaternion(const dReal *in) > { > D3DXQUATERNION out; > out.x=(float)in[1]; > out.y=(float)in[2]; > out.z=(float)in[3]; > out.w=(float)in[0]; > return out; > } > > IB> Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) > It is nearly understandable. > I am from Ukraine indeed. > > Nashi najkrashi pobazsannya! :) > > > -- > Best regards, > slipch mailto:slipch@gsc-game.kiev.ua > From facontidavide at hotmail.com Tue Oct 22 08:25:02 2002 From: facontidavide at hotmail.com (Edgard Oscuro) Date: Tue Oct 22 08:25:02 2002 Subject: [ODE] Get the motor torque Message-ID: Hi everyone. I am using ODE to simulate a humanoid robot (and it seems I am not the only one!). Usually we use the motors making them give a fixed velocity. I need to know the TORQUE genereted by the motor to have that velocity. Someone can suggest me how? I suppose I have to modify the code to create my how function, but where can I take this value? Thanks, Davide _________________________________________________________________ Chiacchiera con gli amici online, prova MSN Messenger! http://messenger.msn.it From ivan.bolcina at volja.net Tue Oct 22 11:50:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 11:50:02 2002 Subject: [ODE] This is corect, I hope? Message-ID: <001201c279fb$b4114ca0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_000F_01C27A0C.73C51FD0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi.=20 Is this function, which converts ODE vector to DirectX's, correct? It = appears so, exept for the mass to body assignment. bye,ivan D3DXVECTOR3 convertVector(const dReal *in) { D3DXVECTOR3 out; out.x=3Din[0]; out.y=3Din[1]; out.z=3Din[2]; return out; } ------=_NextPart_000_000F_01C27A0C.73C51FD0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
Is this function, which converts ODE = vector to=20 DirectX's, correct? It appears so, exept for the mass to body=20 assignment.
 
bye,ivan
 
 
D3DXVECTOR3 convertVector(const dReal *in)
{
D3DXVECTOR3=20 out;
out.x=3Din[0];
out.y=3Din[1];
out.z=3Din[2];
return=20 out;
}
------=_NextPart_000_000F_01C27A0C.73C51FD0-- From ahamilton_01 at hotmail.com Tue Oct 22 15:04:02 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Tue Oct 22 15:04:02 2002 Subject: [ODE] penalty method Message-ID: Every one say penalty method is bad, but has anybody actually tried it? I am talking about David Wu's gdc talk. Has any one actually implemented his method? Not trying to start a fight here, just going through all the alternatives... Al _________________________________________________________________ Broadband? Dial-up? Get reliable MSN Internet Access. http://resourcecenter.msn.com/access/plans/default.asp From g.r.vansickle at worldnet.att.net Tue Oct 22 18:44:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Tue Oct 22 18:44:02 2002 Subject: [ODE] penalty method In-Reply-To: Message-ID: > Every one say penalty method is bad, but has anybody actually tried it? I'd wager that pretty much *everybody* has actually tried it. It's bad. > I am > talking about David Wu's gdc talk. Has any one actually implemented his > method? Not trying to start a fight here, just going through all the > alternatives... I don't know what Mr. Wu had to say, but penalty methods have a built-in problem that is essentially intractable: they, by definition, lead to stiff systems of differential equations. Collisions and resting contact are either too squishy or your simulation blows up or both. I know for a fact that everybody who's ever considered the rigid-body simulation problem wish it weren't so, but it is. And to add insult to injury, the step from easily-understandable penalty methods to eye-glazingly complex more robust methods is a very long one. But luckily, Russ has a good start at putting this baby to bed once and for all for us ;-). -- Gary R. Van Sickle Brewer. Patriot. From nlin at nlin.net Tue Oct 22 19:36:01 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Tue Oct 22 19:36:01 2002 Subject: [ODE] penalty method Message-ID: <20021023040645.GE8364@nlin.net> Gary R. Van Sickle wrote: > > Every one say penalty method is bad, but has anybody actually tried it? > > I'd wager that pretty much *everybody* has actually tried it. It's bad. I believe by "it" the original poster was talking about David Wu's bag of tricks for penalty methods, not the penalty technique in general. > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say See http://www.pseudointeractive.com/games/penaltymethods.ppt Unfortunately, I was not able to attend this talk, so the slides are my only source of information on David Wu's techniques for penalty methods. He seems to swear by them. I, too, am interested in hearing from people who have tried David Wu's suggestions, since most penalty sims suffer from the well-known problems. -Norman From p.terdiman at wanadoo.fr Wed Oct 23 01:00:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 23 01:00:02 2002 Subject: [ODE] penalty method References: Message-ID: <007401c27a69$d2a0bf20$0e00000a@pierre> > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say, but penalty methods have a built-in problem > that is essentially intractable: they, by definition, lead to stiff systems of > differential equations. Collisions and resting contact are either too squishy > or your simulation blows up or both. Penalty methods have a bad reputation indeed. And for pretty good reasons. But this is not a black-or-white situation where one can simply discard them completely. Even if I'm alone on that one, I'll say they *are* a good alternative in particular cases, especially in games. Let me summarize what I think are the pros and cons. Cons: - unstable as soon as you connect bodies with springs - implementation of resting contacts borders on voodoo magic - stacked objects and all joints are pretty difficult to handle - you'll need a small timestep indeed Pros: - each iteration is extremely fast - you can solve each contact on-the-fly, which is great on consoles since it doesn't require any stack memory (see the recent post about the 10 Mb stack in VC++. No way you can do that on a console.) - handle 200~300 simultaneous contacts without any (speed) problem - you *will* need it anyway as a fallback when the LCP solver fails (that's what they do in Havok AFAIK) - they're good enough to handle common game situations, and that's the key point. Many great games with great physics have been using nothing more than penalty methods (especially japanese games - on top of my head the last good example was Wreckless on X-Box) They're "bad", but sometimes they're the right tool for the job IMHO. Some lame tests available here (I probably didn't upload the most convincing scenes anyway) : http://www.codercorner.com/Rigid.htm Pierre From svalverde at barcelona.ubisoft.es Wed Oct 23 01:03:02 2002 From: svalverde at barcelona.ubisoft.es (Sergio Valverde) Date: Wed Oct 23 01:03:02 2002 Subject: [ODE] penalty method Message-ID: <61504D875986D511928A00B0D0F36AF8D95F0C@SRVMAIL-ES> So long ago I tryed to implement a physic engine for my comercial game which is based on penalty methods for resting (or continous) contact. I remembered myself reading the Wu's presentation and trying to implement his ideas (...) In case of "sudden" and "hard" collisions, instantaneous impulses apply (like in the old and good Baraff papers). It was *VERY* difficult to tune the system for stability 1) This approach results in very tight coupling between the physics low-level simulation and more high level controls (for instance: the AI code which lays on top of the low sim layer) The system isn't very modular and was the 1st source of major headaches ... 2) -----Original Message----- From: nlin@nlin.net [mailto:nlin@nlin.net] Sent: miercoles, 23 de octubre de 2002 6:07 To: ode@q12.org Subject: Re: [ODE] penalty method Gary R. Van Sickle wrote: > > Every one say penalty method is bad, but has anybody actually tried it? > > I'd wager that pretty much *everybody* has actually tried it. It's bad. I believe by "it" the original poster was talking about David Wu's bag of tricks for penalty methods, not the penalty technique in general. > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say See http://www.pseudointeractive.com/games/penaltymethods.ppt Unfortunately, I was not able to attend this talk, so the slides are my only source of information on David Wu's techniques for penalty methods. He seems to swear by them. I, too, am interested in hearing from people who have tried David Wu's suggestions, since most penalty sims suffer from the well-known problems. -Norman _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From G.J.A.v.d.Bergen at cebra.tue.nl Wed Oct 23 02:33:02 2002 From: G.J.A.v.d.Bergen at cebra.tue.nl (Bergen, G.J.A. van den) Date: Wed Oct 23 02:33:02 2002 Subject: [ODE] penalty method Message-ID: <81E5F727841DD211A5FD0008C728DB7B06E94C4E@campusx1.tue.nl> The stiffness of the differential equations and the fact that the penalty forces rely solely on the position of the objects (not the velocities) demand that you use an integrator that does not amplify its own errors. Wu uses implicit Euler as integrator, which he claims keeps the system from exploding. Also, care should be taken not to add energy to the system by placing exerted springs on interpenetrating contacts, so either you have to determine the exact time of collision, or you'll have to allow that objects are interpenetrating to some extent. Inserting exerted springs to a contact (especially when using non-linear springs) causes your objects to go ballistic. Penalty methods are mostly useful for spongy objects (See Jeff Lander's GDM articles). John Nagle is using a (patented) penalty method for rigid bodies in Animats, but his approach is not really useful for interactive applications. Gino > -----Original Message----- > From: Pierre Terdiman [mailto:p.terdiman@wanadoo.fr] > Sent: Wednesday, October 23, 2002 9:57 AM > To: ode@q12.org > Subject: Re: [ODE] penalty method > > > > > I am > > > talking about David Wu's gdc talk. Has any one actually > implemented his > > > method? Not trying to start a fight here, just going > through all the > > > alternatives... > > > > I don't know what Mr. Wu had to say, but penalty methods > have a built-in > problem > > that is essentially intractable: they, by definition, lead to stiff > systems of > > differential equations. Collisions and resting contact are > either too > squishy > > or your simulation blows up or both. > > Penalty methods have a bad reputation indeed. And for pretty > good reasons. > But this is not a black-or-white situation where one can > simply discard them > completely. Even if I'm alone on that one, I'll say they *are* a good > alternative in particular cases, especially in games. Let me > summarize what > I think are the pros and cons. > > Cons: > - unstable as soon as you connect bodies with springs > - implementation of resting contacts borders on voodoo magic > - stacked objects and all joints are pretty difficult to handle > - you'll need a small timestep indeed > > Pros: > - each iteration is extremely fast > - you can solve each contact on-the-fly, which is great on > consoles since it > doesn't require any stack memory (see the recent post about > the 10 Mb stack > in VC++. No way you can do that on a console.) > - handle 200~300 simultaneous contacts without any (speed) problem > - you *will* need it anyway as a fallback when the LCP solver > fails (that's > what they do in Havok AFAIK) > - they're good enough to handle common game situations, and > that's the key > point. Many great games with great physics have been using > nothing more than > penalty methods (especially japanese games - on top of my > head the last good > example was Wreckless on X-Box) > > > They're "bad", but sometimes they're the right tool for the job IMHO. > > Some lame tests available here (I probably didn't upload the > most convincing > scenes anyway) : > http://www.codercorner.com/Rigid.htm > > Pierre > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From p.terdiman at wanadoo.fr Wed Oct 23 04:02:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 23 04:02:02 2002 Subject: [ODE] penalty method References: <81E5F727841DD211A5FD0008C728DB7B06E94C4E@campusx1.tue.nl> Message-ID: <013301c27a83$4a121a40$0e00000a@pierre> > The stiffness of the differential equations and the fact that the penalty > forces rely solely on the position of the objects (not the velocities) > demand that you use an integrator that does not amplify its own errors. Who said the penalty forces didn't depend on velocities ? Mine do. > Wu > uses implicit Euler as integrator, which he claims keeps the system from > exploding. Also, care should be taken not to add energy to the system by > placing exerted springs on interpenetrating contacts, so either you have to > determine the exact time of collision, or you'll have to allow that objects > are interpenetrating to some extent. Indeed, some interpenetration is allowed. That's good or bad, depending on the way you see it. On the bad side, well, it might be visually unpleasant if it's too obvious. On the good side, the system doesn't break or explode when it happens. And it does happen. Anyway I'm not sure the magic physics bullet has been found yet, each method has its share of painful problems.. Pierre From svalverde at barcelona.ubisoft.es Wed Oct 23 04:28:01 2002 From: svalverde at barcelona.ubisoft.es (Sergio Valverde) Date: Wed Oct 23 04:28:01 2002 Subject: [ODE] penalty method Message-ID: <61504D875986D511928A00B0D0F36AF8D95F47@SRVMAIL-ES> In fact, when you told us about penalty forces I was thinking in a spring-damping system. That is, we have a penalty which depends both on penetration distance and the relative velocity between the interpenetrating bodies. I think you can implement "simple" simulations of "passive" rigid bodies (like those piles of balls and boxes) with both methods in an acceptable amount of time. Maybe the penalty method allows faster and efficient simulations for these kind of systems than the LCP-based does. But when you need to implement complex mechanics and/or behaviour over your physic engine the choose is clear to me: LCP. The stability provided by this method is worth the associated computation costs. Penalty method is tricky and doesn't assure stability for certain simulation situations. Unfortunately, a game designer is allways able to find such problematic cases, breaking your trick code! :-( The topic is : What is the best way to implement the high-level, physically-based, behavior which is required by current and future games? Sergi -----Original Message----- From: Pierre Terdiman [mailto:p.terdiman@wanadoo.fr] Sent: miércoles, 23 de octubre de 2002 13:00 To: ode@q12.org Subject: Re: [ODE] penalty method > The stiffness of the differential equations and the fact that the penalty > forces rely solely on the position of the objects (not the velocities) > demand that you use an integrator that does not amplify its own errors. Who said the penalty forces didn't depend on velocities ? Mine do. > Wu > uses implicit Euler as integrator, which he claims keeps the system from > exploding. Also, care should be taken not to add energy to the system by > placing exerted springs on interpenetrating contacts, so either you have to > determine the exact time of collision, or you'll have to allow that objects > are interpenetrating to some extent. Indeed, some interpenetration is allowed. That's good or bad, depending on the way you see it. On the bad side, well, it might be visually unpleasant if it's too obvious. On the good side, the system doesn't break or explode when it happens. And it does happen. Anyway I'm not sure the magic physics bullet has been found yet, each method has its share of painful problems.. Pierre _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From russ at q12.org Wed Oct 23 21:48:02 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 23 21:48:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: <20021023215217.34a17eb4.russ@q12.org> hi all, erwin and others have been working hard developing extensions to ODEs collision functionality for the past little while, and i am finally getting around to integrating this work into ODE. as a first step, i am publishing my proposed extensions to ODE's native collision API. please read the updated collision section in: http://q12.org/ode/ode-new-collision.html the new features are: heirarchical spaces, ability to collide spaces with single geoms, ability to collide spaces together, geom groups are now spaces, geoms have 'category' and 'collide' bits for early culling, better definition of function behavior, other stuff i forgot. note that this is 99% backwards compatible with the existing API, except for two points noted below. erwin, this API is not exactly the same as your work, here's where it differs: * colliding a geom with a space (or a space with a space) is handled with dSpaceCollide2(), not dCollide() - this makes things simpler i think, and gives the user the same degree of control. * spaces do not need to be explicitly locked before use. rather, the spaces will maintain the locked state internally and trigger an error when there are any violations. the spaces will detect geoms that do not move and precompute e.g. bounding boxes and internal collision data structures * there is no geom disable/enable. you can delete and add a geom to a space to get the same effect. incompatabilities with the current API are: * the dXXXSpaceCreate() functions now take a space argument, which can just be set to 0 to get the existing behavior. * geometry groups have a slight behavior change if you want self intersection - see the doc. please provide feedback about this new API. erwin - any comments? does this API work for you? is there any missing functionality? david - i think you mentioned that geoms might want to be interted into multiple spaces. can you give me a use case for this? - in the current API each geom has just one parent. after getting this API implemented i will focus on integrating erwin's ray and trimesh work, then adding the cylinder class. there is also a new quadtree space that is further down the list. russ. -- Russell Smith http://www.q12.org From tetron at interreality.org Wed Oct 23 22:53:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 23 22:53:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <20021023215217.34a17eb4.russ@q12.org> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Cool! A physics engine is for naught if things collisions arn't detected correctly :-) Have box-box collisions (specifically the problem of not generating enough contact joints) been fixed yet? If not, please tell me which file the collision code is in and I'll see if I can fix it myself (and provide a patch of course). The ability for objects to rest upon each other stably is absolutely necessary and precludes using ODE in my application (and I really, really want to use ODE.) The cylinder class you refer to -- would this be a flat-ended cylinder, as opposed to the (slightly weird but I guess easier to program) hemisphere-ended cylinder that already exists? I'm interested in flat-ended cylinders that can stably stand up on end, which a round-ended cylinder of course cannot do. Have you considered using octtrees to optimize collision tests for complex scenes? (I'm just suggesting this off the top of my head, I'm not 100% sure how it would work...) On Wed, 23 Oct 2002, Russ Smith wrote: > hi all, > > erwin and others have been working hard developing extensions to ODEs > collision functionality for the past little while, and i am finally > getting around to integrating this work into ODE. [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9t4p7aeHUyhjCHfcRArs3AJwKBlWNnoCDJrZbnKWcN/Em1y4L9wCffkMj HRiJEoqUygM4DPJBJ1enu58= =bQ/J -----END PGP SIGNATURE----- From russ at q12.org Wed Oct 23 23:11:01 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 23 23:11:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: References: <20021023215217.34a17eb4.russ@q12.org> Message-ID: <20021023231536.7431c952.russ@q12.org> > Have box-box collisions (specifically the problem of not generating > enough contact joints) been fixed yet? not yet - it has been on my list for a while. look at dBoxBox() in geom.cpp. note that there are many ways to badly generate multiple contact points, and only a few good ways (but i don't want to discourage you! by all means fix this annoying problem...) > The cylinder class you refer to -- would this be a flat-ended > cylinder, as opposed to the (slightly weird but I guess easier to > program) hemisphere-ended cylinder that already exists? yes. this was contributed by Konstantin Slipchenko a short while ago. the capped cylinders are easier to code, it's true, but they're preferable to flat ended cylinders when you need some long thin object that doesn't need to stand on its own. this is because the contact points generated by capped cylinders are much more predictable than that for flat-end cylinders, and less sensitive to geom position changes. this makes for more stable dynamics. > Have you considered using octtrees to optimize collision tests for > complex scenes? i believe erwin is working on this. russ. -- Russell Smith http://www.q12.org From erwin at vo.com Thu Oct 24 05:24:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 05:24:01 2002 Subject: [ODE] enhanced ODE collision API References: <20021023215217.34a17eb4.russ@q12.org> Message-ID: <005f01c27b58$3056d250$73fefea9@athlon> Feedback: Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() or dGeomGetRotation() on a non-placeable geom? The way you handle colliding spaces is more clear to the user, and thus preferable. I assume dSpaceCollide2() will find the (best) space itself from the 2 geom arguments? The sample callback function in the docs also does pairwise checks on all subspaces, right? The enumeration function you use is better than mine. I suppose you buffer the last used index and last used geom? If you have added the 'prev' pointer in the spacedata of a geom, the user can also enumerate backwards. You default the Category and Collide bits to 1 so that users that dont care about it dont have to touch it. Wouldnt it be more logical to default to 0xffffffff then? This is how i interpret the new way it works now: RootSpace - SubSpace1 + GeomTransform1 o Sphere1 + ... - SubSpace2 + GeomTransform2 o Sphere2 + ... - ... Steps: * The user calls dSpaceCollide() on RootSpace. * This will call the usercallback for SubSpace1 and SubSpace2. * The usercallback will call dCollide2() on SubSpace1 and SubSpace2. * This will call the usercallback for SubSpace1, and GeomTransform2 (or the other way around). * The usercallback will call dCollide2 on SubSpace1, and GeomTransform2. * This will call the usercallback for GeomTransform1 and GeomTransform2. * The usercallback will call dCollide() for GeomTransform1 and GeomTransform2. * ... Is this correct? > * spaces do not need to be explicitly locked before use. rather, the > spaces will maintain the locked state internally and trigger an > error when there are any violations. the spaces will detect geoms > that do not move and precompute e.g. bounding boxes and internal > collision data structures So outside of the 'lock' the user is still able to use the bounding boxes computed while colliding? Excellent. How do you determine if a geom has (not) moved? Is it possible to manually lock and unlock the spaces? > * there is no geom disable/enable. you can delete and add a geom to a > space to get the same effect. Not entirely, but i was thinking of removing this flag as well, because it can be faked by setting the Category and Collide bits to 0. > please provide feedback about this new API. erwin - any comments? does > this API work for you? is there any missing functionality? There is no missing functionality as far as i can tell. Its a pity the geom constructor with a body as argument is not added (It saves a malloc and a free), but this is not that important to me. I think it is good enough to keep me from continuing my own dc library. > david - i think you mentioned that geoms might want to be interted into > multiple spaces. can you give me a use case for this? - in the current > API each geom has just one parent. I also considered adding this, but i found it too problematic. > after getting this API implemented i will focus on integrating erwin's > ray and trimesh work, then adding the cylinder class. there is also a > new quadtree space that is further down the list. Have you added the 'prev' pointer in the spacedata of a geom? Without it you cant store the node a geom is in. And it is also faster for the simple and hash spaces. :-) On a related note. Would it be possible to pass 0 in the body constructor for the world it is in, and manually add and remove it? This would be far more appropriate for my apps. Providing the same enumeration functions as in a space would also be appreciated. Cheers, Erwin From russ at q12.org Thu Oct 24 11:13:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 11:13:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <005f01c27b58$3056d250$73fefea9@athlon> Message-ID: > Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() > or dGeomGetRotation() on a non-placeable geom? hmmm ... non-placeable geoms may not have any relevant pos or R data at all. even if something is returned, e.g. zeros, i think the user should be notified that it's not good for anything. or perhaps the user should be told to check for a 0 return code? perhaps this is a way to detect non-placeable geoms? but in that case a dGeomIsPlaceable() function would be cleaner. > The way you handle colliding spaces is more clear to the user, and thus > preferable. I assume dSpaceCollide2() will find the (best) space itself from > the 2 geom arguments? The sample callback function in the docs also does > pairwise checks on all subspaces, right? yes. > The enumeration function you use is better than mine. I suppose you buffer > the last used index and last used geom? yes, that's exactly what i had in mind. > If you have added the 'prev' pointer > in the spacedata of a geom, the user can also enumerate backwards. yes - i'll use a doubly circularly linked list. > You default the Category and Collide bits to 1 so that users that dont care > about it dont have to touch it. Wouldnt it be more logical to default to > 0xffffffff then? i thought about this and could not decide the right answer. how about category=1 and collide=(~0)? > This is how i interpret the new way it works now: > Is this correct? yes. > So outside of the 'lock' the user is still able to use the bounding boxes > computed while colliding? correct. your AABB caching code is preserved. > Excellent. How do you determine if a geom has (not) moved? a space will have a list of clean and dirty geoms. the clean geoms have precomputed AABBs (and perhaps precomputed other things). a geom gets transferred to the dirty list when: * dGeomSetSomething() is called. * it's attached to a non-disabled body. a space can only be in a clean list if it has no dirty items itself - so operations on clean geoms can propagate dirty-ness up to the root space. > Is it possible to manually lock and unlock the spaces? no ... can you give me a use case for when this is required? > Not entirely, but i was thinking of removing this flag as well, because it > can be faked by setting the Category and Collide bits to 0. why 'not entirely?'. > I think it is good enough to keep me from continuing my own dc library. i am largely cutting and pasting from your dc library into ODE - changing the way some things work - but the new collision system is largely the result of your effort. > I also considered adding this, but i found it too problematic. as did i - * memory management: when a space is deleted, which geoms are deleted? should we use ref counting or garbage collection. either way introduces other problems. * a geom has to notify multiple parents when certain things happen, e.g. when it moves. annoying for the clean-data-structure point of view. > Have you added the 'prev' pointer in the spacedata of a geom? Without it you > cant store the node a geom is in. And it is also faster for the simple and > hash spaces. :-) yes. > On a related note. Would it be possible to pass 0 in the body constructor > for the world it is in, and manually add and remove it? This would be far > more appropriate for my apps. Providing the same enumeration functions as in > a space would also be appreciated. yes - i'll add this to the to-do list? :) russ. -- Russ Smith http://www.q12.org/ From dmcclurg at pandemicstudios.com.au Thu Oct 24 15:08:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 24 15:08:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: > geom groups are now spaces does that mean a geom cannot be placed into two different groups? not a big deal, but i'm curious. > david - i think you mentioned that geoms might want to be interted into multiple spaces. can you give me a use case for this? - in the current API each geom has just one parent. i just needed a way to implement collision filtering and the category and collide bitfields do this very elegantly! thanks one other common concept in collision detection is a ghost or phantom geom used as a sensor. you don't bounce off it -- you just detect a penetration. ie: what you want is just detection of the collision and not the contact information. it would be nice if there was a built-in type called 'sensor' or something that didn't do the extra work of computing the contact point/normal. that's it! thanks to erwin for his contribs and i'm really excited about these developments. From dmcclurg at pandemicstudios.com.au Thu Oct 24 15:25:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 24 15:25:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: struct dContactGeom { dVector3 pos; // contact position dVector3 normal; // normal vector dReal depth; // penetration depth dGeomID g1,g2; // the colliding geoms }; A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). int dCombineContacts(int n, dContactGeom* Contacts, int Stride); // Attempts to merge all contacts into a single contact // returns 1 if successful and 'n' otherwise Ta From erwin at vo.com Thu Oct 24 16:02:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:02:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <004201c27bb1$4833fe30$73fefea9@athlon> > > Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() > > or dGeomGetRotation() on a non-placeable geom? > > hmmm ... non-placeable geoms may not have any relevant pos or R data at > all. even if something is returned, e.g. zeros, i think the user > should be notified that it's not good for anything. or perhaps the user > should be told to check for a 0 return code? perhaps this is a way to > detect non-placeable geoms? but in that case a dGeomIsPlaceable() > function would be cleaner. Agreed. But i dont think i saw it in the docs. ;-) > > You default the Category and Collide bits to 1 so that users that dont care > > about it dont have to touch it. Wouldnt it be more logical to default to > > 0xffffffff then? > > i thought about this and could not decide the right answer. how about > category=1 and collide=(~0)? There is no correct solution.to this. People should just use it! So either 1 or ~0 for the category bits will do. I vote for ~0. > > Excellent. How do you determine if a geom has (not) moved? > > a space will have a list of clean and dirty geoms. the clean geoms have > precomputed AABBs (and perhaps precomputed other things). a geom gets > transferred to the dirty list when: > * dGeomSetSomething() is called. > * it's attached to a non-disabled body. > a space can only be in a clean list if it has no dirty items itself - so > operations on clean geoms can propagate dirty-ness up to the root space. How do you handle the case where a user creates a geom, attaches a body, disables it, and then calls dBodySetPosition() on it each step? I actually do this (the object gets enabled when it is touched), and it took me hours to find why the hell my object wasnt collision-detected (and thus enabled). Needless to say i was extremely unsatisfied when i found the bug. > > Is it possible to manually lock and unlock the spaces? > > no ... can you give me a use case for when this is required? > > > Not entirely, but i was thinking of removing this flag as well, because it > > can be faked by setting the Category and Collide bits to 0. > > why 'not entirely?'. Because the geom's aabb would be computed while it is inside the space, and in the quadtree space it would be inside a node. Thus, enabling is faster than adding. The main reason i added this is to give the user the ability collide a geom with a space on-demand, without performance loss. Imagine fireing a bullet with instant impact (ray). All the objects the bullet could possibly hit are in a seperate space. I would call dSpaceLock() on the root space, which locks all subspaces as well. (I suppose internally this already happens?) I would then call dSpaceCollide() on my root space. Then i call dSpaceCollide2() with my bullet and the seperate space. The bullet now has the same advantages as all other objects had while in dSpaceCollide(). > > I think it is good enough to keep me from continuing my own dc library. > > i am largely cutting and pasting from your dc library into ODE - changing > the way some things work - but the new collision system is largely > the result of your effort. > > > I also considered adding this, but i found it too problematic. > > as did i - > * memory management: when a space is deleted, which geoms are deleted? > should we use ref counting or garbage collection. either way > introduces other problems. > * a geom has to notify multiple parents when certain things happen, > e.g. when it moves. annoying for the clean-data-structure point of > view. Not to mention the prev and next pointer you have to keep for each space the geom is in, or the ability to create infinite loops by adding a space in another space which contains the first space itself. Have fun debugging that. :-) Erwin From coding at natew.com Thu Oct 24 16:03:01 2002 From: coding at natew.com (Nate W) Date: Thu Oct 24 16:03:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: On Fri, 25 Oct 2002, David McClurg wrote: > one other common concept in collision detection is a ghost or phantom > geom used as a sensor. you don't bounce off it -- you just detect a > penetration. ie: what you want is just detection of the collision and > not the contact information. it would be nice if there was a built-in > type called 'sensor' or something that didn't do the extra work of > computing the contact point/normal. Could you do that by filtering out collisions involving the 'sensor' geoms in the collision callback? Like: int count = dCollide (o1, o2, contacts, &contact[0].geom ... MyClass *p1 = dGeomGetData (o1); MyClass *p2 = dGeomGetData (o2); if (p1->isSensor) p1->CollisionDetected (count, contact) if (p2->isSensor) p2->CollisionDetected (count, contact) if (!p1->isSensor && !p2->isSensor) { // create contact joints } -- Nate Waddoups Redmond WA USA http://www.natew.com From erwin at vo.com Thu Oct 24 16:09:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:09:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <005201c27bb2$4fbc97b0$73fefea9@athlon> > one other common concept in collision detection is a ghost or phantom geom used as a sensor. you don't bounce off it -- you just detect a penetration. ie: what you want is just detection of the collision and not the contact information. it would be nice if there was a built-in type called 'sensor' or something that didn't do the extra work of computing the contact point/normal. I proposed this once. Calling dCollide() with 0 as flags, and simply have it return 0 or 1. It would be entirely possible, but it could break old code. But i doubt anyone does it this way. Erwin From erwin at vo.com Thu Oct 24 16:20:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:20:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <008401c27bb3$c83da200$73fefea9@athlon> > struct dContactGeom { > dVector3 pos; // contact position > dVector3 normal; // normal vector > dReal depth; // penetration depth > dGeomID g1,g2; // the colliding geoms > }; > > A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? > Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). You're actually using the mesh-plane intersection?? Daring. My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. > int dCombineContacts(int n, dContactGeom* Contacts, int Stride); > // Attempts to merge all contacts into a single contact > // returns 1 if successful and 'n' otherwise This would be very nice. But you should probably add a dReal MaxError as parameter, because without it it would be very hard. Erwin From erwin at vo.com Thu Oct 24 16:22:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:22:01 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <008801c27bb4$1955fa70$73fefea9@athlon> Thats not what he ment. I also typed a similar message, and then realized i didnt get the point. :-) The point David is making is that his dectection geoms dont need contacts. Just a true/false to determine if they hit. Erwin ----- Original Message ----- From: "Nate W" To: Sent: Thursday, October 24, 2002 17:11 Subject: RE: [ODE] enhanced ODE collision API > On Fri, 25 Oct 2002, David McClurg wrote: > > > one other common concept in collision detection is a ghost or phantom > > geom used as a sensor. you don't bounce off it -- you just detect a > > penetration. ie: what you want is just detection of the collision and > > not the contact information. it would be nice if there was a built-in > > type called 'sensor' or something that didn't do the extra work of > > computing the contact point/normal. > > Could you do that by filtering out collisions involving the 'sensor' geoms > in the collision callback? Like: > > int count = dCollide (o1, o2, contacts, &contact[0].geom ... > > MyClass *p1 = dGeomGetData (o1); > MyClass *p2 = dGeomGetData (o2); > > if (p1->isSensor) > p1->CollisionDetected (count, contact) > if (p2->isSensor) > p2->CollisionDetected (count, contact) > > if (!p1->isSensor && !p2->isSensor) > { > // create contact joints > } > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From russ at q12.org Thu Oct 24 17:05:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 17:05:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: > does that mean a geom cannot be placed into two different groups? not > a big deal, but i'm curious. they can't, yes. any reason you would want to? > one other common concept in collision detection is a ghost or phantom > geom used as a sensor. you don't bounce off it -- you just detect a > penetration. ie: what you want is just detection of the collision and > not the contact information. it would be nice if there was a built-in > type called 'sensor' or something that didn't do the extra work of > computing the contact point/normal. hmmmm ... perhaps a flag defined for dCollide() that instructs it to just return 1 or 0 depending on if there is intersection or not. at last a use for the flags parameter! this would mean touching ALL the pairwise collision functions - this is lower down the TODO list for now because you can just use dCollide() as-is, although it might be slower than you like. russ. -- Russ Smith http://www.q12.org/ From russ at q12.org Thu Oct 24 17:12:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 17:12:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <004201c27bb1$4833fe30$73fefea9@athlon> Message-ID: > How do you handle the case where a user creates a geom, attaches a body, > disables it, and then calls dBodySetPosition() on it each step? I actually > do this (the object gets enabled when it is touched), and it took me hours > to find why the hell my object wasnt collision-detected (and thus enabled). > Needless to say i was extremely unsatisfied when i found the bug. tricky! the body will have to know what geom it is attached to and call dGeomThisGuyMoved() when dBodySetPosition() etc called on it - which will make sure the geom is in the dirty list. > Because the geom's aabb would be computed while it is inside the space, and > in the quadtree space it would be inside a node. Thus, enabling is faster > than adding. ok, good reason. i'll add dGeomEnable/Disable/IsEnabled. russ. -- Russ Smith http://www.q12.org/ From dmcclurg at pandemicstudios.com.au Fri Oct 25 01:19:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Fri Oct 25 01:19:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: >> A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. > You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? if there is a callback for each contact generated, the callback could query the index. otherwise, you could put it into the dContactGeom struct, but since they could both be a mesh, you would need two-- i1,i2. maybe this is a good time to bring up the idea of a generalized event handler instead of callbacks. you get an event when the contact is generated instead of passing an array. you store it off then and query the index if needed. >> Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). > You're actually using the mesh-plane intersection?? Daring. no, i'm sorry. i meant my player collides with many static meshes and planes in the world. i combine the contacts between the player sphere and all the triangle & plane contacts to get smooth physics. > My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. that's what i've noticed. why doesn't ODE like close contacts? hmmm. got to investigate that soon. From tetron at interreality.org Fri Oct 25 01:34:09 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 01:34:09 2002 Subject: [ODE] box-box collisions Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Okay, so I've spent a little time looking at the box-box collision code. Detecting face-face contacts seems fairly easy; we just need to compare the normal vector between the boxes centers in the collision with the normal vector of the normal vectors of the sides of the penatrating box. In other words, determine if they share a coplanar face. Then we need to generate contact points (I haven't quite figured this part out yet). I have a few questions. The first is that in doing this comparison, there is enough error floating around that it is very unlikely that the normals of box faces that should be treated as coplanar will be *exactly* the same. In general, what is the policy in ODE for handling these sorts of slightly inexact comparisons? The second question is face-edge collisions. What's a good way of determining if a line (the edge) lies in the plane of the face? Again, this has to be a slightly inexact comparison rather than an exact calculation because of error. I've determined that face-edge collisions are absolutely crucial for good box stacking, since otherwise it becomes almost impossible for one box to come to rest upon another if the first one hits the supporting box at an angle. Face-edge contacts need two contact joints, otherwise boxes will just tumble uncontrolably. I'm going to take a look at the box-plane collision code tomorrow, since it must already handle these issues correctly, perhaps differently (having an object that is infinite and static does make certain calculations easier!) [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uQHBaeHUyhjCHfcRArq1AKCwBhNnJJ31E9GYdocpzCJgp3vkOQCfRmlS MLWLUFenllq0HRzWXDWrbjs= =l4iZ -----END PGP SIGNATURE----- From dale_thomas at hotmail.com Fri Oct 25 01:49:02 2002 From: dale_thomas at hotmail.com (Dale Thomas) Date: Fri Oct 25 01:49:02 2002 Subject: [ODE] Tetrahedron class Message-ID: Hi there I am looking for a tetrahedron primitive class. Does anyone have such a class or can give me advice on creating one Thanks _________________________________________________________________ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 From f99jooh at dd.chalmers.se Fri Oct 25 01:56:02 2002 From: f99jooh at dd.chalmers.se (Johannes =?iso-8859-1?q?=D6hlin?=) Date: Fri Oct 25 01:56:02 2002 Subject: [ODE] Invisible spheres Message-ID: <200210250855.KAA12394@eru.dd.chalmers.se> Hi I've been using ODE with drawstuff for a couple of weeks now and I'm experiencing a problem I can't solve. In my program I run several simulations with drawstuff (dsSimulationLoop), in each simulation I use a more or less random collection of boxes and spheres and joints. Here's the problem: Spheres are only visible in the first simulation. After that first run only boxes and shadows are visible. Does anybody have any idea what could be wrong? /Johannes -- Johannes ÖHlin Undergraduate student Engineering Physics Chalmers University of Technology From Marta.Pla at uv.es Fri Oct 25 02:02:01 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Fri Oct 25 02:02:01 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <1035536660.27694.8.camel@welfa> --=-sbJWy6VppIJdrQ4ob90f Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable El vie, 25-10-2002 a las 10:33, Peter Amstutz escribi=F3: First of all, hello to everyone, this is my first message to the list > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 >=20 > Okay, so I've spent a little time looking at the box-box collision code. > Detecting face-face contacts seems fairly easy; we just need to compare > the normal vector between the boxes centers in the collision with the > normal vector of the normal vectors of the sides of the penatrating box. > In other words, determine if they share a coplanar face. Then we need to > generate contact points (I haven't quite figured this part out yet). >=20 > I have a few questions. The first is that in doing this comparison, ther= e > is enough error floating around that it is very unlikely that the normals > of box faces that should be treated as coplanar will be *exactly* the > same. In general, what is the policy in ODE for handling these sorts of > slightly inexact comparisons? >=20 The fact is that I don't know really how it does, but I have the same problem in my application. I resolve the face-face collision by examining the relative rotation matrix between the two boxes. If the angles of this matrix are "little" enough I consider the boxes are parallel and solve the problem adding two more contact points in the colliding face with the same problem. > The second question is face-edge collisions. What's a good way of > determining if a line (the edge) lies in the plane of the face? Again, > this has to be a slightly inexact comparison rather than an exact > calculation because of error. I've determined that face-edge collisions > are absolutely crucial for good box stacking, since otherwise it becomes > almost impossible for one box to come to rest upon another if the first > one hits the supporting box at an angle. Face-edge contacts need two > contact joints, otherwise boxes will just tumble uncontrolably. >=20 Totaly certain. But this is more difficult. Before beginning working with ODE I was using another collision detection library based also in OBBTrees but I was not able to determine well enough the face-edge collision. If anyone has an idea, it will be great. I wish you understand why a spanish write so bad english :) --=20 **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint =3D 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla@uv.es) http://www.uv.es/~mplac **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. --=-sbJWy6VppIJdrQ4ob90f Content-Type: application/pgp-signature; name=signature.asc Content-Description: Esta parte del mensaje esta firmada digitalmente -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) iD8DBQA9uQkUhrRS0qLSFhARAgeVAJ9JMW9rDWGEk7MPvVIrvGal6LhltgCcCcwG wFgN4YUqdAzcZJLxbevHwCo= =PF9Y -----END PGP SIGNATURE----- --=-sbJWy6VppIJdrQ4ob90f-- From p.terdiman at wanadoo.fr Fri Oct 25 03:13:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 25 03:13:02 2002 Subject: [ODE] box-box collisions References: Message-ID: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Quick question : Is there a reason why the number of contacts for the box-box collision is limited to 3 ? What do I need to do in order to change that number ? From Marta.Pla at uv.es Fri Oct 25 04:03:02 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Fri Oct 25 04:03:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> References: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: <1035543982.27694.22.camel@welfa> --=-zrWb3Q02w2KWfGx4vwjj Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable El vie, 25-10-2002 a las 12:10, Pierre Terdiman escribi=F3: > Quick question : >=20 > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? You only need 3 points to put a box over another box. The necesary forces to implement, for example, a box leaved in a floor, are three. Of course you can implement 4 or more contact points, but they are redundant. > What do I need to do in order to change that number ? >=20 >=20 > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode --=20 **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint =3D 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla@uv.es) http://www.uv.es/~mplac **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. --=-zrWb3Q02w2KWfGx4vwjj Content-Type: application/pgp-signature; name=signature.asc Content-Description: Esta parte del mensaje esta firmada digitalmente -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) iD8DBQA9uSWuhrRS0qLSFhARAvZ1AJwIhsHSeMW1EX8gJKhDeEjcCdVaCgCgin94 NgWwsVVJzj97Mi5jjZ+O+lQ= =EnnI -----END PGP SIGNATURE----- --=-zrWb3Q02w2KWfGx4vwjj-- From ps_yumemi at yahoo.com Fri Oct 25 05:55:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Fri Oct 25 05:55:02 2002 Subject: [ODE] synchronizing network programs Message-ID: <20021025125408.1747.qmail@web40506.mail.yahoo.com> hello i'm still finishing my networking program using ODE. it's a mobile robot simulator and i still have problems synchronizing my mobots. i'm using a peer to peer session so all the computers send messages to other computers. the messages contain the current speed, position, rotation and other things i need. all i nedd is to compensate for the lag of the network by checking the constant position of the mobot and where it is suppose to be according to the data sent. what would be the best way to do this? 2nd i can't seem to make dBodySetRotation to work. is the matrix required for it in degrees? or in radians? last, if i have two or more mobots in the system, what's the best way to check if they collide? coz the original program only considered one mobot in the system. please consider that a mobot has not just wheels and a body but sensors as well. any suggestion is welcome. thanks __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From slipch Fri Oct 25 09:20:02 2002 From: slipch (slipch) Date: Fri Oct 25 09:20:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <10033043223.20021025192245@gsc-game.kiev.ua> Hello Peter, Friday, October 25, 2002, 11:33:00 AM, you wrote: PA> -----BEGIN PGP SIGNED MESSAGE----- PA> Hash: SHA1 PA> Okay, so I've spent a little time looking at the box-box collision code. PA> Detecting face-face contacts seems fairly easy; we just need to compare PA> the normal vector between the boxes centers in the collision with the PA> normal vector of the normal vectors of the sides of the penatrating box. PA> In other words, determine if they share a coplanar face. Then we need to PA> generate contact points (I haven't quite figured this part out yet). PA> I have a few questions. The first is that in doing this comparison, there PA> is enough error floating around that it is very unlikely that the normals PA> of box faces that should be treated as coplanar will be *exactly* the PA> same. In general, what is the policy in ODE for handling these sorts of PA> slightly inexact comparisons? PA> The second question is face-edge collisions. What's a good way of PA> determining if a line (the edge) lies in the plane of the face? Again, PA> this has to be a slightly inexact comparison rather than an exact PA> calculation because of error. I've determined that face-edge collisions PA> are absolutely crucial for good box stacking, since otherwise it becomes PA> almost impossible for one box to come to rest upon another if the first PA> one hits the supporting box at an angle. Face-edge contacts need two PA> contact joints, otherwise boxes will just tumble uncontrolably. PA> I'm going to take a look at the box-plane collision code tomorrow, since PA> it must already handle these issues correctly, perhaps differently (having PA> an object that is infinite and static does make certain calculations PA> easier!) Box - box collision use axis separating. It never checks complanarity of box faces and I do not think It will ever do it and do not think it really need it. But you can make your own alternative box-box collider than you can see easy it or not :). May be it needs to spend more time looking at the original box-box collider :). -- Best regards, Konstantin Slipchenko. mailto:slipch@gsc-game.kiev.ua From russ at q12.org Fri Oct 25 10:36:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 10:36:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: > why doesn't ODE like close contacts? ODE needs to find a unique solution for all constraints in the system. if there are two (or more) constraint dimensions that do not have a unique solution, numerical errors will result. now, imagine two contacts in exactly the same position. if we look at the solution for this system and subtract some of the force from contact 1 and add the same amount to contact 2, the resulting motion of the system will be the same (because the contacts are adding at the same point). thus the solution is not unique. moral: the closer that contacts come to having the same effect on the system, the more solution error there will be. note that the global CFM parameter can be increased to reduce the amount of numerical error in the system, even when you have coincident contacts. russ. -- Russ Smith http://www.q12.org/ On Fri, 25 Oct 2002, David McClurg wrote: > >> A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. > > You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? > > if there is a callback for each contact generated, the callback could query the index. otherwise, you could put it into the dContactGeom struct, but since they could both be a mesh, you would need two-- i1,i2. > > maybe this is a good time to bring up the idea of a generalized event handler instead of callbacks. you get an event when the contact is generated instead of passing an array. you store it off then and query the index if needed. > > >> Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). > > You're actually using the mesh-plane intersection?? Daring. > > no, i'm sorry. i meant my player collides with many static meshes and planes in the world. i combine the contacts between the player sphere and all the triangle & plane contacts to get smooth physics. > > > My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From russ at q12.org Fri Oct 25 10:49:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 10:49:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? to be clear: it's my intention to generate at most 3 contact points for box-box collison (at the moment only 1 will be generated). to represent the *complete* geometry of one box being stacked on top of another up to 8 contacts may be necessary. but in ODE contacts are expensive, so we want to use the least number of contacts that will result in a reasonable approximation. three is a reasonable number, as long as we use the three contacts that are most penetrating. for a 3-contact box stacking situation it is *possible* that the boxes can interpenetrate when pushed along some directions, but such errors will be corrected in the next timestep so they will generally not be visible. > What do I need to do in order to change that number ? write more code :) russ. -- Russ Smith http://www.q12.org/ From tetron at interreality.org Fri Oct 25 11:29:01 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 11:29:01 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 You can think of it this way -- each contact point removes (or at least restricts) a degree of freedom from the system. Since the box can rotate on three axes, you need at least three contact constraints in order to have a stable face-face collision. However as Marta said, more than three would be redundant in most situtations. On Fri, 25 Oct 2002, Pierre Terdiman wrote: > Quick question : > > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? > What do I need to do in order to change that number ? > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uY1KaeHUyhjCHfcRAs0SAJ9Umt8RnmJ41zY22GWmjtfEp4cTxwCfTQo3 Xpnd1HgglR+jEL8q/rM5l0A= =XDEF -----END PGP SIGNATURE----- From tetron at interreality.org Fri Oct 25 11:43:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 11:43:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <10033043223.20021025192245@gsc-game.kiev.ua> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Fri, 25 Oct 2002, slipch wrote: > Box - box collision use axis separating. It never checks complanarity of > box faces and I do not think It will ever do it and do not think it > really need it. But you can make your own alternative box-box collider > than you can see easy it or not :). May be it needs to spend more time > looking at the original box-box collider :). It seems there are a couple possible ways to test for face-face box contacts. Rather than being coplanar actually I meant that the planes of each box are parallel, so if we know that the boxes penetrate and are coplanar then there must be a face-face contact. The other way suggested by Marta is to compare rotations, and if the boxes are at equal/right/180 degree angles to one another then they must be in face-face contact as well. I think the second way may be a bit faster. For box-edge collisions we definately need to test to see if an edge is coplanar with the face it collides with. Actually, that may not be so bad. Once we know that, generating a couple contact points should be easy. Russ, would you care to explain the current box-box collision algorithm (and maybe box-plane as well)? I've been looking it over but the code is rather... dense :-) Oh, and for comparison, last night I took a midterm exam in Advanced Algorithms (a required course in the masters/PhD program here) and it was waaay easier than trying to figure out the box collision code :-) [ Peter Amstutz ][ amstutz@cs.umass.edu ][ tetron@interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uZCcaeHUyhjCHfcRAmR+AJ9JvdpYz0722LwBZgOJlLkOJgc20gCdFnhg USeMPPQ/VUpi8lXlqK8DgwA= =RmQm -----END PGP SIGNATURE----- From russ at q12.org Fri Oct 25 12:22:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 12:22:01 2002 Subject: [ODE] box-box collisions In-Reply-To: Message-ID: > Russ, would you care to explain the current box-box collision algorithm > (and maybe box-plane as well)? I've been looking it over but the code is > rather... dense :-) to summarize: the standard 15-axis test is performed to check for box-box intersection (6 face-normal tests and 9 edge x edge tests). for each axis, the box-box penetration is recorded (penetration defined as the overlap of the projection of the boxes to the test axis). the most penetrating axis is used as the normal. if the most penetrating axis is an edge x edge then the closest point between the closest box edges is used as the contact point. otherwise the most penetrating axis is normal to the face of one box so the deepest vertex (along this axis) of the other box is used. it is this last case that should be modified to generate up to 3 contacts, not just the one. one approach is to examine the three edges adjacent to the most penetrating vertex and clip them to the box, thereby generating three other points, and use the two that are deepest. i've not tried this, so i don't know if it will work well, but this would be my first approach. some other people's box-box code takes the following approach (or some variant of it): compute the box-box intersection volume, take the vertices of this volume as an initial contact point set, then do some kind of culling to reduce the contact points to a manageable number. this approach has three big drawbacks: (1) it's slow, (2) the culling process is not well defined so this can lead to over-sensitive contacts, (3) for edge-edge contacts, where there should only be one contact point, these schemes nevertheless generate many points - and it takes a very smart culling algorithm to reduce this to just one. this illustrates a point i've made before: that collision detection for dynamics is a more difficult problem that collsion detection alone: the contact points that are generated must meet extra conditions so that the resulting contact-driven motion will be stable. in particular: * contact points should be inside the collison volume. * contact points should not jump around unnecessarily if the object positions change slightly (these are called over-sensitive contacts). * the contact constraints should be far from singular. the worst thing that collision code can do is generate coincident contacts. * the contact set must depend only on the local surface properties, not on the global object properties. * the contact normal should be the most direct translational path to reducing penetration at a contact point. this condition is less necessary for stability than the others, but is still important. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Fri Oct 25 12:55:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 25 12:55:02 2002 Subject: [ODE] dynamics in general In-Reply-To: Message-ID: Does anyone know of any mailing lists for dynamics in general, not just for particular libraries and applications? I just realized that there might be people out there who are not using ODE, and yet are doing interesting things with dynamics anyway. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From tisch at uni-paderborn.de Fri Oct 25 13:34:01 2002 From: tisch at uni-paderborn.de (Tim Schmidt) Date: Fri Oct 25 13:34:01 2002 Subject: [ODE] ODE for Java v0.1 released Message-ID: <3DB9AA9B.9040701@uni-paderborn.de> Hi! I am pleased to announce that the first release of 'ODE for Java' is available via: http://www.tim-schmidt.de/odeforjava/ Additionally to just making ODE available in Java, it provides a set of Java3D objects that can hopefully be used without detailed knowledge of ODE internals. This release is version v0.1 and it should work with: - JDK 1.3 - Java3d 1.2.1-03 Please note: - The JNI covers the ODE functionality that was available around june 2002. - The ode.core.extensions and ode.java3d.geometry.sensors packages use objects that can be found in ode/core/extensions/ode-src. To integrate them into ODE itself follow the instructions that are given in contrib/GeomTransformGroup/README.txt in the ODE CVS tree. - At the current stage I can not guarantee that the API will not change to a certain extent. - There may still be several bugs in the code, especially as respects garbage collection (so watch out for memory leaks) The lib/ directory contains precompiled linux libraries of ODE and 'ODE for Java' that have to be reacheable through the LD_LIBRARY_PATH environment variable. The provided archive development.tar.bz2 is ready to use for your own development. It contains the source code of this project and a set of makefiles that represent a modification and extension of 'The Universal Makefile' which can be found at http://geosoft.no/javamake.html. The latter is rather designed for unix/linux environments but with loss of functionality it may be adapted to work with windows, too. Just make sure that: - the environment variable JAVA_DEV_ROOT points to the development directory that is created after the unpacking of development.tar.bz2 - the environment variable JAVA_HOME points to your Java SDK directory Have a look at the examples in the ode.java3d.test package. They should give a good impression how everything is set up, at least for those who are already familiar with Java3D scene graph assembly. Feel free to send bug reports and comments to odeforjava@tim-schmidt.de. And finally I don't want to forget to thank Russ for his really great work!!! :-))) kind regards, Tim Schmidt From p.terdiman at wanadoo.fr Fri Oct 25 13:58:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 25 13:58:02 2002 Subject: [ODE] box-box collisions References: Message-ID: <041101c27c68$ede5d260$0e00000a@pierre> > three is a reasonable number, as long as we use the three > contacts that are most penetrating. Ok, that's the extra condition I was missing. > > What do I need to do in order to change that number ? > > write more code :) Actually the answer I was looking for was : "change the hardcoded value in static void nearCallback (void *data, dGeomID o1, dGeomID o2)" That's in the box-stack test, no wonder I didn't find it in ODE itself..... Pierre From wristy_j at yahoo.com Fri Oct 25 14:32:02 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Fri Oct 25 14:32:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021025213134.48020.qmail@web40812.mail.yahoo.com> Hello, I need to implement a physics simulation that can handle rag-doll type constraints (hinge, ball, but probably none powered) with joint limits, and contact with friction. I need a fast method. Is the LCP / Lagrange multiplier method used in ODE fast enough for interactive frame rates (> 30 fps) for a minimal number of constraints/contacts? I'm thinking at most, a few multi-bodies with around 9 joints each (10 bodies), plus random simple rigid bodies which may come in contact with the multi-bodies. Also - is there any drawback to using the LCP method on consoles? Does anyone know if Havok uses a similar method? I imagine they're not just using penalty methods. What other good, fast methods are out there? Thanks! J __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From coding at natew.com Fri Oct 25 17:10:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 25 17:10:02 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021025213134.48020.qmail@web40812.mail.yahoo.com> Message-ID: On Fri, 25 Oct 2002, Jason Gott wrote: > I need to implement a physics simulation that can > handle rag-doll type constraints (hinge, ball, but > probably none powered) with joint limits, and contact > with friction. I need a fast method. Is the LCP / > Lagrange multiplier method used in ODE fast enough for > interactive frame rates (> 30 fps) for a minimal > number of constraints/contacts? I just did some experiments with a rag doll consisting of 10 bodies, and 9 joints - all bodies are boxes, and I use ball joints for the shoulders, hips, and neck, and hinges for the knees and elbows. I have a 1.7ghz K7 and a GeForce 3. It's like Porrasturvat, but without the stairs, just a simple ground plane. With one doll, I get ~38 frames per second. With two dolls, 25-28 fps. With three, 19-20 fps. With four dolls (team dismount!), about 15 fps. Changing the bodies to flat-ended cylinders brought the four-doll simulation down to 11 fps. Changing them to capped cylinders, 6-9 fps. Bear in mind that there's some overhead in my tests due to the fact that they're conducted in a general purpose ODE playground rather than in an optimized game. I have no idea how much overhead there is, though. I don't think it's very significant, but if anyone can do a similar test I'd be really interested in the results. -- Nate Waddoups Redmond WA USA http://www.natew.com From johnb003 at hotmail.com Fri Oct 25 21:50:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Fri Oct 25 21:50:02 2002 Subject: [ODE] Higher Order Integrators Message-ID: Hey Russ, have you done any work on implementing a higher order integrator? I was about to give it a shot and I thought I'd see if you had started anything before I begin. Thanks, John Butterfield _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From erwin at vo.com Sat Oct 26 05:28:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Sat Oct 26 05:28:02 2002 Subject: [ODE] Speed of ODE's constraint method References: Message-ID: <001b01c27cea$e4e57670$73fefea9@athlon> These framerates look rediculously low. Are you measuring the physics stepping rate? Erwin ----- Original Message ----- From: "Nate W" To: Sent: Friday, October 25, 2002 18:18 Subject: Re: [ODE] Speed of ODE's constraint method > On Fri, 25 Oct 2002, Jason Gott wrote: > > > I need to implement a physics simulation that can > > handle rag-doll type constraints (hinge, ball, but > > probably none powered) with joint limits, and contact > > with friction. I need a fast method. Is the LCP / > > Lagrange multiplier method used in ODE fast enough for > > interactive frame rates (> 30 fps) for a minimal > > number of constraints/contacts? > > I just did some experiments with a rag doll consisting of 10 bodies, and 9 > joints - all bodies are boxes, and I use ball joints for the shoulders, > hips, and neck, and hinges for the knees and elbows. I have a 1.7ghz K7 > and a GeForce 3. > > It's like Porrasturvat, but without the stairs, just a simple ground > plane. With one doll, I get ~38 frames per second. With two dolls, 25-28 > fps. With three, 19-20 fps. With four dolls (team dismount!), about 15 > fps. > > Changing the bodies to flat-ended cylinders brought the four-doll > simulation down to 11 fps. Changing them to capped cylinders, 6-9 fps. > > Bear in mind that there's some overhead in my tests due to the fact that > they're conducted in a general purpose ODE playground rather than in an > optimized game. I have no idea how much overhead there is, though. I > don't think it's very significant, but if anyone can do a similar test I'd > be really interested in the results. > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > > From rtonge90 at yahoo.co.uk Sat Oct 26 07:13:02 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sat Oct 26 07:13:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021026141225.80198.qmail@web14907.mail.yahoo.com> Hello >Is the LCP / Lagrange multiplier method used in ODE >fast enough for interactive frame rates (> 30 fps) >for a minimal number of constraints/contacts? The short answer is yes. The long answer is maybe :o) The short answer is yes because there are a number of games on the shelves (and the top 10) that use an LCP method. Although the actual LCP method used in those games is different, it has similar characteristics to the one used in ODE. Brace yourselves for the long answer lads... Direct LCP methods (as used in ODE) have properties that are acceptable for some games/platforms and not others. In particular, memory usage, cpu usage and memory bandwidth usage can scale quite badly as the size of the system increases. Memory Direct methods require the storage of one or more large matrices. The size of the matrix can fluctuate quite a bit depending on what is happening in the game. For example, take a game where animated characters turn into physical ragdolls when they die. Suppose each one has 9 joints which each constrain 6 relative degrees of freedom. If a ragdoll is flying through the air then the number of matrix rows is 9*6=54. In this system, there is one matrix of size 54*54, which takes about 12k. Not too bad. Suppose the ragdoll hits the floor. This might add 2 friction contacts,each constraining 3 dof for each of the 10 bodies, giving 9*6+3*10*2=114 rows in total. This brings the matrix size to 114*114 which takes 52k. Suppose you have 10 ragdolls flying through the air. You get 10 matrices of size 54, which takes 12k*10=120k. Suppose that they fall in a pile on the floor. As they are all touching they have to all go in the smae matrix. There might be 3*10*2=60 rows due to the contacts between 9 ragdoll-ragdoll pairs, and 3*10*2=60 rows between the bottom ragdoll and the ground. Each ragdoll still has 54 rows holding it together. This gives a grand total of 9*60+60+54*10=1140 rows. A 1140*1140 matrix takes about 5 megs! Unlike graphics, the cost of (direct LCP) physics is not per object, it is per interaction, and it can get quite big. Of course, in real games which use these methods, there are hacks to make sure that people dont die in the same spot, or that only a small number of cars can be involved in a crash. James Golding did a GDC 2002 talk about how this is done in MathEngine Karma. However, big piles of dying people, big walls of falling blocks or big car crashes might be a vital part of the game, and in these cases other methods are better. There is a similar story with cpu time. Ill have to talk generally here because the direct LCP method I have experience with is different to the one used in ODE. Typically what happens is that a number of 'iterations' (in the for-loop sense, not the iterative algorithm sense) are performed. Each one takes some subset of the data in the matrix and performs some O(n^3) or O(n^2) matrix operations on it. The number of 'iterations' is variable and depends on things like the number of separating contacts. In theory, the maximum number of iterations is O(2^n) or O(3^n), which is an argument often wheeled out by anti-LCP people. There are problems but this is the least of your worries. The reason is that you can stop the an LCP after a constant number of iterations, and the physical artefacts are not too bad. The real problem is that the size of the matrix, n fluctuates quite a bit (as discussed above). This wouldnt be too bad if you were doing a linear amount of work on the matrix. However, you are doing O(n^3) work, so any fluctuations in n give large fluctuations in the cpu time. I should say though that LCP methods are very stable, and once Russ sorts out box-box, ODE is going to be rock solid. The reason that there are direct LCP games in the top 20 at the moment despite the above hurdles is because the stability is so good. >Also - is there any drawback to using the LCP method >on consoles? On PC, the above concerns arent too much of a problem. PC games machines have lots more ram than consoles, and if the game is good enough they will buy more. CPUs are a lot faster and have more cache. This makes the constant factors in execution time very small. Simple gameplay and AI hacks can prevent physical systems getting too big. For this reason, I believe that direct LCP based physics engines such as ODE are a very good choice for the PC. Our tests have also shown that they are a very good choice on the gamecube and xbox due to the easily accessible memory bandwitdh on those platforms. However, on the PS2 it is not quite as clear. Many people are releasing games based on a direct LCP solver on PS2, but they have had to make some compromises. The PS2 does have masses of memory bandwidth and floating point performance, but unoptimised C code doesnt have access to it. If you are going to port ODE to the PS2 I would suggest double buffering all your data through the scratchpad, microcoding all your inner loops and staying away from vif0. Taking advantage of matrix sparsity is a good idea too. In my experience, iterative (as opposed to direct) LCP methods work much better on PS2. With these methods it is possible to keep all the data of a reasonably sized scene in spr or vumem0 at once. This gives you far more gigaflops, because you are not hanging around waiting for main memory all the time. With these algorithms, you can even out run a PC! MathEngine Karma 1.3 comes with a direct LCP solver Kea, and an iterative LCP solver Arthur, so that you can select the best solution for your platform/game. Sorry about that... Of course, there are non LCP routes you could look at as well. In particular Thomas Jacobsen's constraint relaxation with verlet integration is probably worth a look. Good luck with your simulations! Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From g.r.vansickle at worldnet.att.net Sat Oct 26 13:55:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Sat Oct 26 13:55:02 2002 Subject: [ODE] box-box collisions In-Reply-To: Message-ID: (oops, accidentally sent this only to Russ) [snip] > this illustrates a point i've made before: that collision detection for > dynamics is a more difficult problem that collsion detection alone: the > contact points that are generated must meet extra conditions so that the > resulting contact-driven motion will be stable. in particular: > > * contact points should be inside the collison volume. > This sounds like it doesn't bode well for any sort of "collision anti-aliasing" schemes, i.e. preventing a fast-moving small object from going right through a wall. Are you saying here that even if a suitable collision point was found, the fact that it was by definition outside the collision volume (because there is none) would prevent it from being properly taken into account? -- Gary R. Van Sickle Brewer. Patriot. From russ at q12.org Sun Oct 27 00:25:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:25:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <20021027002918.5ef81c00.russ@q12.org> > This sounds like it doesn't bode well for any sort of "collision > anti-aliasing" schemes, i.e. preventing a fast-moving small object > from going right through a wall. Are you saying here that even if a > suitable collision point was found, the fact that it was by definition > outside the collision volume (because there is none) would prevent it > from being properly taken into account? i'm not quite sure i understand the question - what i was saying is that more stable dynamics results when the contact point is inside the intersection volume. if your objects don't collide, there is no intersection volume and thus ODE won't generate a contact point. if you generate one anyway for fast moving objects (e.g. projecting the object along its path) the contact constraint will still act in the same way, but finding a contact position that will give you consistent stability is going to be a problem. russ. -- Russell Smith http://www.q12.org From russ at q12.org Sun Oct 27 00:36:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:36:02 2002 Subject: [ODE] ODE presentation at IGC'02 Message-ID: <20021027003656.5b83b402.russ@q12.org> for those interested in some more blah blah about ODE, the slides of my talk at IGC'02 are up on q12. it way not make much sense because it's all in note form, but i'm sure you will get the idea. anyway, follow the link at: http://q12.org/ode/slides/slides.html russ. -- Russell Smith http://www.q12.org From russ at q12.org Sun Oct 27 00:46:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:46:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021026141225.80198.qmail@web14907.mail.yahoo.com> References: <20021026141225.80198.qmail@web14907.mail.yahoo.com> Message-ID: <20021027005050.3de333b3.russ@q12.org> hi richard, > I should say though that LCP methods are very stable, > and once Russ sorts out box-box, ODE is going to be > rock solid. thanks for the vote of confidence! > The reason that there are direct LCP games > in the top 20 at the moment despite the above hurdles > is because the stability is so good. i am curious about one thing: do your customers percieve that the stability itself is the good thing, or that the shortened development time that results is the good thing? (both? neither?) > > > Sorry about that... as a penance for shamelessly marketing your stuff here :), perhaps you could tell us exactly what an 'iterative LCP' solver is? i'm genuinely curious. are you: * running a fixed number of LCP iterations per timestep? * factorizing the non-LCP constraints fully? * re-using constraint clamping info from step to step? - if so, how do you handle contact coherency problems? * in general, how is the LCP restarted? also, there is one thing to add to your explanation of where the time goes: when a large impact occurs in the system (e.g. a car crashes into a pile of boxes) there is usually a single time step at the moment of impact that goes *really* slowly. the problem is that the LCP solver needs a large number of iterations to effectively spread the impact force throughout the rest of the system (this problem can be understood more precisely by considering how the algorithm steps through the elongated LCP solution space). it sounds like this situation would benefit the most from your constant iteration technique? russ. -- Russell Smith http://www.q12.org From g.r.vansickle at worldnet.att.net Sun Oct 27 00:59:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Sun Oct 27 00:59:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <20021027002918.5ef81c00.russ@q12.org> Message-ID: > > This sounds like it doesn't bode well for any sort of "collision > > anti-aliasing" schemes, i.e. preventing a fast-moving small object > > from going right through a wall. Are you saying here that even if a > > suitable collision point was found, the fact that it was by definition > > outside the collision volume (because there is none) would prevent it > > from being properly taken into account? > > i'm not quite sure i understand the question - what i was saying is that > more stable dynamics results when the contact point is inside the > intersection volume. if your objects don't collide, there is no > intersection volume and thus ODE won't generate a contact point. As I understand it, you actually mean "If your objects don't intersect at any timestep..." in that last sentence, right? > if you > generate one anyway for fast moving objects (e.g. projecting the object > along its path) the contact constraint will still act in the same way, > but finding a contact position that will give you consistent stability > is going to be a problem. I guess what I'm wondering is, say you shoot an ODE bullet at an ODE wall. At one timestep, the bullet is on one side of the wall, at the next it's on the other side, in neither step do their respective geometries overlap. Are you saying that it isn't possible to generate a contact point that will ensure stability in such a case? -- Gary R. Van Sickle Brewer. Patriot. From rtonge90 at yahoo.co.uk Sun Oct 27 03:19:02 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sun Oct 27 03:19:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021027101849.10220.qmail@web14904.mail.yahoo.com> Hello >perhaps you could tell us exactly what an 'iterative >LCP' solver is? i'm genuinely curious I meant iterative in the sense that the Newton Raphson method is an iterative method for finding the roots of an equation. An iterative LCP method is one that makes an initial guess of the force vector and then on each iteration moves the force vector strictly closer to the exact solution. You can then stop the iteration whenever you like, if you are willing to accept an approximate solution. If you stop the algorithm after one iteration, you get an effect that looks quite similar to a micro-impulse simulator. If you dont limit the number of iterations, you get the exact LCP solution. For reasonable size systems with lots of stacks and stuff, about 350 iterations looks ok. Each iteration does a tiny amount of work (just a constant number of 4*6 matrix multiplies), so the user has quite fine grained control over the execution time (or simulation quality). A good reference on iterative LCP methods is chapter 9 of Murty's book, which is available online: http://ioe.engin.umich.edu/books/murty/linear_complementarity_webbook/kat9.ps Although this should give you an idea about what I mean by iterative LCP, I should point out that we dont use any of the methods in that chapter. > * re-using constraint clamping info from step to > step? > - if so, how do you handle contact coherency > problems? > * in general, how is the LCP restarted? I think that you are thinking that I was talking about a warm starting technique. Whilst it is a good idea to do this as well, that was not what I meant by an iterative LCP. Richard Tonge PS2 Optimisation Engineer MathEngine www.richardtonge.com __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From paul.chavent at fnac.net Sun Oct 27 11:13:02 2002 From: paul.chavent at fnac.net (Chavent Paul) Date: Sun Oct 27 11:13:02 2002 Subject: [ODE] how to get a geom class type. Message-ID: <3DBC3B39.5090407@fnac.net> Hello i'am french. I'am a new user. This is very exiting to play with this library, so thanks to its author. I have a question for you. Knowing a dGeomID geom how can i get its class (it is a cube, a sphere, a caped cylinder ????). I'have already try to found how the structure of a dGeomID is made, but i'am not sure. thanks ! From coding at natew.com Sun Oct 27 11:25:02 2002 From: coding at natew.com (Nate W) Date: Sun Oct 27 11:25:02 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <001b01c27cea$e4e57670$73fefea9@athlon> Message-ID: On Sat, 26 Oct 2002, Erwin de Vries wrote: > > It's like Porrasturvat, but without the stairs [...] With four dolls > > (team dismount!), about 15 fps. Changing them to capped cylinders, > > 6-9 fps. > > These framerates look rediculously low. Are you measuring the physics > stepping rate? I am now, and you're right, those numwers are really low with four dolls and capped cylinders, the dWorldStep call takes about 7 milliseconds. Drawing the scene takes about 22ms, so I should be getting around 35 fps, not 6-to-9. Thanks for the tip, now I'll see what I can do about it. -- Nate Waddoups Redmond WA USA http://www.natew.com From ahamilton_01 at hotmail.com Sun Oct 27 12:14:01 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Sun Oct 27 12:14:01 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: This iterative LCP solving sounds like the magic bullet for physics in game. Is it? Al >From: Richard Tonge >To: ode@q12.org >Subject: [ODE] Speed of ODE's constraint method Date: Sun, 27 Oct 2002 >10:18:49 +0000 (GMT) > >Hello > > >perhaps you could tell us exactly what an 'iterative > >LCP' solver is? i'm genuinely curious > >I meant iterative in the sense that the Newton Raphson >method is an iterative method for finding the roots of >an equation. > >An iterative LCP method is one that makes an initial >guess of the force vector and then on each iteration >moves the force vector strictly closer to the exact >solution. You can then stop the iteration whenever you >like, if you are willing to accept an approximate >solution. If you stop the algorithm after one >iteration, you get an effect that looks quite similar >to a micro-impulse simulator. If you dont limit the >number of iterations, you get the exact LCP solution. >For reasonable size systems with lots of stacks and >stuff, about 350 iterations looks ok. Each iteration >does a tiny amount of work (just a constant number of >4*6 matrix multiplies), so the user has quite fine >grained control over the execution time (or simulation >quality). > >A good reference on iterative LCP methods is chapter 9 >of Murty's book, which is available online: >http://ioe.engin.umich.edu/books/murty/linear_complementarity_webbook/kat9.ps >Although this should give you an idea about what I >mean by iterative LCP, I should point out that we dont >use any of the methods in that chapter. > > > * re-using constraint clamping info from step to > > step? > > - if so, how do you handle contact coherency > > problems? > > * in general, how is the LCP restarted? > >I think that you are thinking that I was talking about >a warm starting technique. Whilst it is a good idea to >do this as well, that was not what I meant by an >iterative LCP. > >Richard Tonge >PS2 Optimisation Engineer >MathEngine >www.richardtonge.com > >__________________________________________________ >Do You Yahoo!? >Everything you'll ever need on one web page >from News and Sport to Email and Music Charts >http://uk.my.yahoo.com >_______________________________________________ >ODE mailing list >ODE@q12.org >http://q12.org/mailman/listinfo/ode _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From russ at q12.org Sun Oct 27 12:23:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 12:23:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: <20021027002918.5ef81c00.russ@q12.org> Message-ID: <20021027122325.04738156.russ@q12.org> > I guess what I'm wondering is, say you shoot an ODE bullet at an ODE > wall. At one timestep, the bullet is on one side of the wall, at the > next it's on the other side, in neither step do their respective > geometries overlap. Are you saying that it isn't possible to generate > a contact point that will ensure stability in such a case? in this case it's not too hard - consider the wall to be an infinite plane and generate the contact point when the bullet is on the 'wrong' side of the wall. a better example is two long thin objects that go through each other without intersecting (e.g. in a sword fight). generating the contact point to handle this case is harder, but not impossible. russ. -- Russell Smith http://www.q12.org From erwin at vo.com Sun Oct 27 12:31:57 2002 From: erwin at vo.com (Erwin de Vries) Date: Sun Oct 27 12:31:57 2002 Subject: [ODE] Speed of ODE's constraint method References: Message-ID: <006b01c27ded$f751f5a0$73fefea9@athlon> > On Sat, 26 Oct 2002, Erwin de Vries wrote: > > > > It's like Porrasturvat, but without the stairs [...] With four dolls > > > (team dismount!), about 15 fps. Changing them to capped cylinders, > > > 6-9 fps. > > > > These framerates look rediculously low. Are you measuring the physics > > stepping rate? > > I am now, and you're right, those numwers are really low with four dolls > and capped cylinders, the dWorldStep call takes about 7 milliseconds. > > Drawing the scene takes about 22ms, so I should be getting around 35 fps, > not 6-to-9. Thanks for the tip, now I'll see what I can do about it. If the dWorldStep time is 7 milliseconds, isnt ~143fps the number you should be reporting? It might be questionable that you are doing only one worldstep in one rendering step, but if someone wants to know how fast ODE is this is the best way of telling them. :-) And any rendering shouldnt interfere with these numbers of course. Erwin From holmlund at hpc2n.umu.se Sun Oct 27 12:54:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Sun Oct 27 12:54:02 2002 Subject: [ODE] Speed of ODE's constraint method References: <006b01c27ded$f751f5a0$73fefea9@athlon> Message-ID: <3DBC4423.3030005@hpc2n.umu.se> How do you all time your simulation steps? Time system calls are generally quite expensive, and not a great way to test your simulation. If you do it like that you should dry run 1000 physics steps and measure that instead. /Ken -- Kenneth Holmlund Director VRlab HPC2N, Umeå University, Sweden holmlund@hpc2n.umu.se From coding at natew.com Sun Oct 27 13:19:01 2002 From: coding at natew.com (Nate W) Date: Sun Oct 27 13:19:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <006b01c27ded$f751f5a0$73fefea9@athlon> Message-ID: On Sun, 27 Oct 2002, Erwin de Vries wrote: > > I am now, and you're right, those numwers are really low with four dolls > > and capped cylinders, the dWorldStep call takes about 7 milliseconds. > > > > Drawing the scene takes about 22ms, so I should be getting around 35 fps, > > not 6-to-9. Thanks for the tip, now I'll see what I can do about it. > > If the dWorldStep time is 7 milliseconds, isnt ~143fps the number you should > be reporting? Yeah, good point. > It might be questionable that you are doing only one worldstep > in one rendering step (...) Yes, it definitely is. :-) I had incorrectly assumed that it took more time to 'step' the world than to render it. I just revised my code to step twice before rendering, and it only makes a small difference in frame rate. Probably does lots for stability though. Thanks for the tip. -- Nate Waddoups Redmond WA USA http://www.natew.com From si at sjbrown.co.uk Sun Oct 27 13:32:01 2002 From: si at sjbrown.co.uk (Si Brown) Date: Sun Oct 27 13:32:01 2002 Subject: [ODE] how to get a geom class type. References: <3DBC3B39.5090407@fnac.net> Message-ID: <001701c27df7$96841d70$ce0d68d5@gimp> Use the dGeomGetClass function, and compare the result with the statically defined class numbers such as dSphereClass, dBoxClass, etc. Have a look in the documentation(!) and geom.h for more details. Si ----- Original Message ----- From: "Chavent Paul" To: Sent: Sunday, October 27, 2002 7:15 PM Subject: [ODE] how to get a geom class type. > Hello i'am french. > I'am a new user. > This is very exiting to play with this library, so thanks to its author. > > I have a question for you. Knowing a dGeomID geom how can i get its > class (it is a cube, a sphere, a caped cylinder ????). > I'have already try to found how the structure of a dGeomID is made, but > i'am not sure. > > thanks ! > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From nathan at whatever.net Sun Oct 27 19:27:01 2002 From: nathan at whatever.net (Nate Waddoups) Date: Sun Oct 27 19:27:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <001b01c27cea$e4e57670$73fefea9@athlon> Message-ID: On Sat, 26 Oct 2002, Erwin de Vries wrote: > These framerates look rediculously low. Are you measuring the physics > stepping rate? No, but that's a really good idea. I have no idea how much overhead there is in the rest of the app... I'll try measuring the time spent in dWorldStep. -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Sun Oct 27 21:16:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 21:16:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021027101849.10220.qmail@web14904.mail.yahoo.com> References: <20021027101849.10220.qmail@web14904.mail.yahoo.com> Message-ID: <20021027212041.76d4b926.russ@q12.org> > A good reference on iterative LCP methods is chapter 9 > of Murty's book interesting. i read chapter 9 and implemented some of the methods there in matlab. the sparsity-preserving SOR (successive over-relaxation) method described on p378 seems to be the closest to what you describe, as its main computational step is multiplying M by some vector. in ODE 'M' is J*inv(M)*J', which boils down to a bunch of 6xN matrix operations as you described. for the random PD matrices i was testing with i found that the SOR method scaled as O(n^3), the same as the direct method. i found that if a 0.1% error was the termination condition then SOR was 3-4 times less flop count than ODE's direct solver for 100*100 matrices (the crossover point below which the direct method was faster was about 20*20). however! --> typical rigid body system matrices have a much more useful spectrum than my random matrices, so i suspect that if ODE had an SOR it would (a) be much faster than direct LCP, and (b) scale O(n) or O(n^2) depending on the structure of the RB system. i will investigate this later. SOR would not be too hard to implement in ODE at all (it would be an optional method). chosing the parameter values (e.g. w) presents a problem. > Although this should give you an idea about what I > mean by iterative LCP, I should point out that we dont > use any of the methods in that chapter. are you using a method related to the SOR method? russ. -- Russell Smith http://www.q12.org From amatos at create.human.nagoya-u.ac.jp Mon Oct 28 01:02:02 2002 From: amatos at create.human.nagoya-u.ac.jp (Artur Matos) Date: Mon Oct 28 01:02:02 2002 Subject: [ODE] ODE for Java v0.1 released In-Reply-To: <3DB9AA9B.9040701@uni-paderborn.de> References: <3DB9AA9B.9040701@uni-paderborn.de> Message-ID: <20021029020236.79571ec3.amatos@create.human.nagoya-u.ac.jp> Hi Tim, On Fri, 25 Oct 2002 22:33:31 +0200 Tim Schmidt wrote: > I am pleased to announce that the first release of 'ODE for Java' is > available I just take a look at the source and played a little bit with the examples. Looks great! Thanks for releasing it. As you probably remember, I was also working in a java application that used ODE. For that I developed my own java ODE interface using swig (http://www.swig.org). SWIG is an utility that helps to interface C and C++ libraries to a myrad of programming languages, including Java, Tcl and Python. I thing using SWIG in the long run would be more useful to the ODE community, because it would be easier to interface with other programming languages besides Java (like Python). Also, because the mapping from C++ to the other languages is more or less automatic, it could help with the garbage collection problems that you mention. Basically, in SWIG you only have to create an "interface" file (that is like a C/C++ header file), and the utility automatically creates all the necessary files; Garbage collection is also handled automatically by it. My own SWIG interface file is rather rough and incomplete by now, because I don't have the necessary SWIG knowledge (i.e. typemaps) to make a more natural mapping. Also, I have based my SWIG file in the C++ interface bundled with the O.03 distribution (I haven't checked the latest CVS versions, so I really don't know how it is now), and it was rather incomplete, so I had to change it slighty in order to work. Because anyway your interface is working much better that mine, and also because of the Java3D integration, I think I can drop my own interface so that we could work together in further developing yours. Anyway, because the reasons that I pointed before, I would sugest for this changing the current ode.core.* package with a SWIG generated one instead, and adjusting the remaining Java3D integration classes. We could use my own interface file as a starting point. Also, some changes in the ODE own C++ interface would be needed. Of course, this is only my idea.:) In any case, you can count with me for helping you developing furthermore the java version. Any suggestions/ideas from the rest of the community? Best regards, Artur Matos. --------------------------------------------------------------- Artur Matos ALife Core Lab (http://www2.create.human.nagoya-u.ac.jp) Graduate School of Human Informatics | Nagoya University Email: amatos@create.human.nagoya-u.ac.jp (Lab) arturmatos78@yahoo.com --------------------------------------------------------------- From Marta.Pla at uv.es Mon Oct 28 02:18:02 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Mon Oct 28 02:18:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <1035796861.17791.3.camel@welfa> --=-dM9QhiOGVpqEKo5+CIIg Content-Type: text/plain Content-Transfer-Encoding: quoted-printable >=20 > It seems there are a couple possible ways to test for face-face box > contacts. Rather than being coplanar actually I meant that the planes of > each box are parallel, so if we know that the boxes penetrate and are > coplanar then there must be a face-face contact. The other way suggested > by Marta is to compare rotations, and if the boxes are at equal/right/180 > degree angles to one another then they must be in face-face contact as > well. >=20 > I think the second way may be a bit faster. >=20 >=20 I have implemented that way and it works well. The only difficult thing is that I don't know well how to introduce it in the ODE code. I would need someone who knows C++ well to do it.=20 Despite of this, I were reading the boxbox algorithm and I see they use the rotation of the two boxes also. I think there would be easy to put my code inside of that but I think I wouldn't be able to do it. --=20 **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint =3D 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla@uv.es) http://www.uv.es/~mplac Robotics Institute University of Valencia (Spain) **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. --=-dM9QhiOGVpqEKo5+CIIg Content-Type: application/pgp-signature; name=signature.asc Content-Description: Esta parte del mensaje esta firmada digitalmente -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.0 (GNU/Linux) iD8DBQA9vQF9hrRS0qLSFhARAjhDAJ910XMhpaHZLgw9CZalSyra8Kd6mQCfUJVY ZDHDsuJAkBtmaPgjfknezIc= =72Yh -----END PGP SIGNATURE----- --=-dM9QhiOGVpqEKo5+CIIg-- From ps_yumemi at yahoo.com Mon Oct 28 07:33:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 28 07:33:01 2002 Subject: [ODE] rotation Message-ID: <20021028143204.88351.qmail@web40508.mail.yahoo.com> hello, how exactly do you manipulate the dMatrix3 variable? is it an array? how can you copy it? is there any way to get the euler angles from it? i really need to copy them to another variable. thanks pia __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From facontidavide at hotmail.com Mon Oct 28 09:35:02 2002 From: facontidavide at hotmail.com (Edgard Oscuro) Date: Mon Oct 28 09:35:02 2002 Subject: [ODE] Get the motor torque Message-ID:

Hello,

as we know, we drive motors using velocity and maximum torque or force, and they work in the integration step giving the right torque/force.

I need to know the genereted torque (with a given velocity as usually), but I don't know how to get it.

Someone could help me?



MSN Extra Storage: piena libertà di esprimersi e comunicare Clicca qui From bpellens at vub.ac.be Mon Oct 28 12:52:02 2002 From: bpellens at vub.ac.be (Bram Pellens) Date: Mon Oct 28 12:52:02 2002 Subject: [ODE] Creating DLL of drawstuff Message-ID: Hello, I'm having some problems using ODE together with wxWindows (www.wxWindows.org). Both the libraries drawstuff and wxWindows have references to the main function leading to linker errors when compiling my application. I believe from earlier messages in the archives I have to create a DLL from the drawstuff sources, but i don't know how the build such a DLL Can someone please give me some explanation on creating the DLL. Thanks in advance, Bram Pellens From coding at natew.com Mon Oct 28 14:17:02 2002 From: coding at natew.com (Nate W) Date: Mon Oct 28 14:17:02 2002 Subject: [ODE] Creating DLL of drawstuff In-Reply-To: Message-ID: On Mon, 28 Oct 2002, Bram Pellens wrote: > I'm having some problems using ODE together with wxWindows > (www.wxWindows.org). Both the libraries drawstuff and wxWindows have > references to the main function leading to linker errors when > compiling my application. I believe from earlier messages in the > archives I have to create a DLL from the drawstuff sources, but i > don't know how the build such a DLL Can someone please give me some > explanation on creating the DLL. If you have some sort of DLL building already, try opening drawstuff/windows.cpp and just comment out the WinMain function at the bottom of the file. You might think of drawstuff as a trivial GUI for simple tests of ODE. It's just there to make ODE objects visible in a very simple GUI. If you have wxWindows providing your GUI, you have no need for most of the code in drawstuff. You will probably find useful the functions for drawing basic geometric objects like boxes and spheres, but not much else. Those functions can simply be pasted into a source file in your application. -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Mon Oct 28 18:19:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Mon Oct 28 18:19:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp Message-ID: This is a multi-part message in MIME format. ------_=_NextPart_001_01C27EE9.1ED0102A Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable i've found that i need to combine contacts when sphere bodies roll from = one static geom to another. to understand the problem, let me show you = an example... attached is a modified version of test_boxstack.cpp. hit the 's' key to = drop a sphere and watch what happens. see how it sticks on the cusp = between the ramp and the ground plane? that is kind of weird. it happens when spheres are rolling over boxes, = planes, or meshes. it can even happen if you embed a ccylinder into the = ground and roll up next to it. you will stick for a while before you = can pull yourself away from the ccylinder. is this expected or is it a bug? if it is expected, perhaps it should = automatically be handled because it is so common to run up against. = erwin handles it within a single tri-list by merging the contacts into a = single contact. but you need to do this on a higher level as well = between different trilists, boxes, and planes. ------_=_NextPart_001_01C27EE9.1ED0102A Content-Type: application/octet-stream; name="test_boxstack.cpp" Content-Transfer-Encoding: base64 Content-Description: test_boxstack.cpp Content-Disposition: attachment; filename="test_boxstack.cpp" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKiBPcGVuIER5bmFtaWNzIEVu Z2luZSwgQ29weXJpZ2h0IChDKSAyMDAxLDIwMDIgUnVzc2VsbCBMLiBTbWl0aC4gICAgICAgKg0K ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gIEVtYWlsOiBydXNzQHExMi5vcmcgICBXZWI6IHd3dy5x MTIub3JnICAgICAgICAgICoNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAgKg0K ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiBFSVRIRVI6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICoNCiAqICAgKDEpIFRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlICAqDQogKiAgICAgICBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCAgKg0K ICogICAgICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiBUaGUgdGV4dCBvZiB0aGUg R05VIExlc3NlciAgICAgICoNCiAqICAgICAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgaW5j bHVkZWQgd2l0aCB0aGlzIGxpYnJhcnkgaW4gdGhlICAgICAqDQogKiAgICAgICBmaWxlIExJQ0VO U0UuVFhULiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0K ICogICAoMikgVGhlIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgaXMgaW5jbHVkZWQgd2l0aCB0aGlz IGxpYnJhcnkgaW4gICAgICoNCiAqICAgICAgIHRoZSBmaWxlIExJQ0VOU0UtQlNELlRYVC4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0K ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsICAgICAgICoNCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAqDQogKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgZmlsZXMgICAgKg0K ICogTElDRU5TRS5UWFQgYW5kIExJQ0VOU0UtQlNELlRYVCBmb3IgbW9yZSBkZXRhaWxzLiAgICAg ICAgICAgICAgICAgICAgICoNCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQogKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8N Cg0KI2luY2x1ZGUgPG9kZS9vZGUuaD4NCiNpbmNsdWRlIDxkcmF3c3R1ZmYvZHJhd3N0dWZmLmg+ DQoNCiNpZmRlZiBNU1ZDDQojcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0IDQzMDUpICAvLyBm b3IgVkMrKywgbm8gcHJlY2lzaW9uIGxvc3MgY29tcGxhaW50cw0KI2VuZGlmDQoNCi8vIHNlbGVj dCBjb3JyZWN0IGRyYXdpbmcgZnVuY3Rpb25zDQoNCiNpZmRlZiBkRE9VQkxFDQojZGVmaW5lIGRz RHJhd0JveCBkc0RyYXdCb3hEDQojZGVmaW5lIGRzRHJhd1NwaGVyZSBkc0RyYXdTcGhlcmVEDQoj ZGVmaW5lIGRzRHJhd0N5bGluZGVyIGRzRHJhd0N5bGluZGVyRA0KI2RlZmluZSBkc0RyYXdDYXBw ZWRDeWxpbmRlciBkc0RyYXdDYXBwZWRDeWxpbmRlckQNCiNlbmRpZg0KDQoNCi8vIHNvbWUgY29u c3RhbnRzDQoNCiNkZWZpbmUgTlVNIDEJCQkvLyBtYXggbnVtYmVyIG9mIG9iamVjdHMNCiNkZWZp bmUgREVOU0lUWSAoNS4wKQkJLy8gZGVuc2l0eSBvZiBhbGwgb2JqZWN0cw0KI2RlZmluZSBHUEIg MwkJCS8vIG1heGltdW0gbnVtYmVyIG9mIGdlb21ldHJpZXMgcGVyIGJvZHkNCg0KDQovLyBkeW5h bWljcyBhbmQgY29sbGlzaW9uIG9iamVjdHMNCg0Kc3RydWN0IE15T2JqZWN0IHsNCiAgZEJvZHlJ RCBib2R5OwkJCS8vIHRoZSBib2R5DQogIGRHZW9tSUQgZ2VvbVtHUEJdOwkJLy8gZ2VvbWV0cmll cyByZXByZXNlbnRpbmcgdGhpcyBib2R5DQp9Ow0KDQpzdGF0aWMgaW50IG51bT0wOwkJLy8gbnVt YmVyIG9mIG9iamVjdHMgaW4gc2ltdWxhdGlvbg0Kc3RhdGljIGludCBuZXh0b2JqPTA7CQkvLyBu ZXh0IG9iamVjdCB0byByZWN5Y2xlIGlmIG51bT09TlVNDQpzdGF0aWMgZFdvcmxkSUQgd29ybGQ7 DQpzdGF0aWMgZFNwYWNlSUQgc3BhY2U7DQpzdGF0aWMgTXlPYmplY3Qgb2JqW05VTV07DQpzdGF0 aWMgZEpvaW50R3JvdXBJRCBjb250YWN0Z3JvdXA7DQpzdGF0aWMgaW50IHNlbGVjdGVkID0gLTE7 CS8vIHNlbGVjdGVkIG9iamVjdA0Kc3RhdGljIGRHZW9tSUQgcmFtcD0wOw0Kc3RhdGljIGRHZW9t SUQgcmFtcDI9MDsNCg0KDQovLyB0aGlzIGlzIGNhbGxlZCBieSBkU3BhY2VDb2xsaWRlIHdoZW4g dHdvIG9iamVjdHMgaW4gc3BhY2UgYXJlDQovLyBwb3RlbnRpYWxseSBjb2xsaWRpbmcuDQoNCnN0 YXRpYyB2b2lkIG5lYXJDYWxsYmFjayAodm9pZCAqZGF0YSwgZEdlb21JRCBvMSwgZEdlb21JRCBv MikNCnsNCiAgaW50IGk7DQogIC8vIGlmIChvMS0+Ym9keSAmJiBvMi0+Ym9keSkgcmV0dXJuOw0K DQogIC8vIGV4aXQgd2l0aG91dCBkb2luZyBhbnl0aGluZyBpZiB0aGUgdHdvIGJvZGllcyBhcmUg Y29ubmVjdGVkIGJ5IGEgam9pbnQNCiAgZEJvZHlJRCBiMSA9IGRHZW9tR2V0Qm9keShvMSk7DQog IGRCb2R5SUQgYjIgPSBkR2VvbUdldEJvZHkobzIpOw0KICBpZiAoYjEgJiYgYjIgJiYgZEFyZUNv bm5lY3RlZCAoYjEsYjIpKSByZXR1cm47DQoNCiAgZENvbnRhY3QgY29udGFjdFszXTsJCQkvLyB1 cCB0byAzIGNvbnRhY3RzIHBlciBib3gNCiAgZm9yIChpPTA7IGk8MzsgaSsrKSB7DQogICAgY29u dGFjdFtpXS5zdXJmYWNlLm1vZGUgPSBkQ29udGFjdEJvdW5jZTsgLy9kQ29udGFjdE11MjsNCiAg ICBjb250YWN0W2ldLnN1cmZhY2UubXUgPSBkSW5maW5pdHk7DQogICAgY29udGFjdFtpXS5zdXJm YWNlLm11MiA9IDA7DQogICAgY29udGFjdFtpXS5zdXJmYWNlLmJvdW5jZSA9IDAuNTsNCiAgICBj b250YWN0W2ldLnN1cmZhY2UuYm91bmNlX3ZlbCA9IDAuMTsNCiAgfQ0KICBpZiAoaW50IG51bWMg PSBkQ29sbGlkZSAobzEsbzIsMywmY29udGFjdFswXS5nZW9tLHNpemVvZihkQ29udGFjdCkpKSB7 DQogICAgLy8gZE1hdHJpeDMgUkk7DQogICAgLy8gZFJTZXRJZGVudGl0eSAoUkkpOw0KICAgIC8v IGNvbnN0IGRSZWFsIHNzWzNdID0gezAuMDIsMC4wMiwwLjAyfTsNCiAgICBmb3IgKGk9MDsgaTxu dW1jOyBpKyspIHsNCiAgICAgIGRKb2ludElEIGMgPSBkSm9pbnRDcmVhdGVDb250YWN0ICh3b3Js ZCxjb250YWN0Z3JvdXAsY29udGFjdCtpKTsNCiAgICAgIGRKb2ludEF0dGFjaCAoYyxiMSxiMik7 DQogICAgICAvLyBkc0RyYXdCb3ggKGNvbnRhY3RbaV0uZ2VvbS5wb3MsUkksc3MpOw0KICAgIH0N CiAgfQ0KfQ0KDQoNCi8vIHN0YXJ0IHNpbXVsYXRpb24gLSBzZXQgdmlld3BvaW50DQoNCnN0YXRp YyB2b2lkIHN0YXJ0KCkNCnsNCiAgc3RhdGljIGZsb2F0IHh5elszXSA9IHsyLjE2NDBmLC0xLjMw NzlmLDEuNzYwMGZ9Ow0KICBzdGF0aWMgZmxvYXQgaHByWzNdID0gezEyNS41MDAwZiwtMTcuMDAw MGYsMC4wMDAwZn07DQogIGRzU2V0Vmlld3BvaW50ICh4eXosaHByKTsNCiAgcHJpbnRmICgiVG8g ZHJvcCBhbm90aGVyIG9iamVjdCwgcHJlc3M6XG4iKTsNCiAgcHJpbnRmICgiICAgYiBmb3IgYm94 LlxuIik7DQogIHByaW50ZiAoIiAgIHMgZm9yIHNwaGVyZS5cbiIpOw0KICBwcmludGYgKCIgICBj IGZvciBjeWxpbmRlci5cbiIpOw0KICBwcmludGYgKCIgICB4IGZvciBhIGNvbXBvc2l0ZSBvYmpl Y3QuXG4iKTsNCiAgcHJpbnRmICgiVG8gc2VsZWN0IGFuIG9iamVjdCwgcHJlc3Mgc3BhY2UuXG4i KTsNCiAgcHJpbnRmICgiVG8gZGlzYWJsZSB0aGUgc2VsZWN0ZWQgb2JqZWN0LCBwcmVzcyBkLlxu Iik7DQogIHByaW50ZiAoIlRvIGVuYWJsZSB0aGUgc2VsZWN0ZWQgb2JqZWN0LCBwcmVzcyBlLlxu Iik7DQp9DQoNCg0KY2hhciBsb2Nhc2UgKGNoYXIgYykNCnsNCiAgaWYgKGMgPj0gJ0EnICYmIGMg PD0gJ1onKSByZXR1cm4gYyAtICgnYSctJ0EnKTsNCiAgZWxzZSByZXR1cm4gYzsNCn0NCg0KDQov LyBjYWxsZWQgd2hlbiBhIGtleSBwcmVzc2VkDQoNCnN0YXRpYyB2b2lkIGNvbW1hbmQgKGludCBj bWQpDQp7DQogIGludCBpLGosazsNCiAgZFJlYWwgc2lkZXNbM107DQogIGRNYXNzIG07DQoNCiAg Y21kID0gbG9jYXNlIChjbWQpOw0KICBpZiAoY21kID09ICdiJyB8fCBjbWQgPT0gJ3MnIHx8IGNt ZCA9PSAnYycgfHwgY21kID09ICd4Jykgew0KICAgIGlmIChudW0gPCBOVU0pIHsNCiAgICAgIGkg PSBudW07DQogICAgICBudW0rKzsNCiAgICB9DQogICAgZWxzZSB7DQogICAgICBpID0gbmV4dG9i ajsNCiAgICAgIG5leHRvYmorKzsNCiAgICAgIGlmIChuZXh0b2JqID49IG51bSkgbmV4dG9iaiA9 IDA7DQoNCiAgICAgIC8vIGRlc3Ryb3kgdGhlIGJvZHkgYW5kIGdlb21zIGZvciBzbG90IGkNCiAg ICAgIGRCb2R5RGVzdHJveSAob2JqW2ldLmJvZHkpOw0KICAgICAgZm9yIChrPTA7IGsgPCBHUEI7 IGsrKykgew0KCWlmIChvYmpbaV0uZ2VvbVtrXSkgZEdlb21EZXN0cm95IChvYmpbaV0uZ2VvbVtr XSk7DQogICAgICB9DQogICAgICBtZW1zZXQgKCZvYmpbaV0sMCxzaXplb2Yob2JqW2ldKSk7DQog ICAgfQ0KDQogICAgb2JqW2ldLmJvZHkgPSBkQm9keUNyZWF0ZSAod29ybGQpOw0KICAgIGZvciAo az0wOyBrPDM7IGsrKykgc2lkZXNba10gPSBkUmFuZFJlYWwoKSowLjUrMC4xOw0KDQogICAgZEJv ZHlTZXRQb3NpdGlvbiAob2JqW2ldLmJvZHksDQogICAgICAgICAgMS4xZiwgMC5mLA0KCQkgICAg ICAvL2RSYW5kUmVhbCgpKjItMSxkUmFuZFJlYWwoKSoyLTEsDQogICAgICAgICAgZFJhbmRSZWFs KCkrMSk7DQogICAgZE1hdHJpeDMgUjsNCiAgICBkUkZyb21BeGlzQW5kQW5nbGUgKFIsZFJhbmRS ZWFsKCkqMi4wLTEuMCxkUmFuZFJlYWwoKSoyLjAtMS4wLA0KCQkJZFJhbmRSZWFsKCkqMi4wLTEu MCxkUmFuZFJlYWwoKSoxMC4wLTUuMCk7DQogICAgZEJvZHlTZXRSb3RhdGlvbiAob2JqW2ldLmJv ZHksUik7DQogICAgZEJvZHlTZXREYXRhIChvYmpbaV0uYm9keSwodm9pZCopIGkpOw0KDQogICAg aWYgKGNtZCA9PSAnYicpIHsNCiAgICAgIGRNYXNzU2V0Qm94ICgmbSxERU5TSVRZLHNpZGVzWzBd LHNpZGVzWzFdLHNpZGVzWzJdKTsNCiAgICAgIG9ialtpXS5nZW9tWzBdID0gZENyZWF0ZUJveCAo c3BhY2Usc2lkZXNbMF0sc2lkZXNbMV0sc2lkZXNbMl0pOw0KICAgIH0NCiAgICBlbHNlIGlmIChj bWQgPT0gJ2MnKSB7DQogICAgICBzaWRlc1swXSAqPSAwLjU7DQogICAgICBkTWFzc1NldENhcHBl ZEN5bGluZGVyICgmbSxERU5TSVRZLDMsc2lkZXNbMF0sc2lkZXNbMV0pOw0KICAgICAgb2JqW2ld Lmdlb21bMF0gPSBkQ3JlYXRlQ0N5bGluZGVyIChzcGFjZSxzaWRlc1swXSxzaWRlc1sxXSk7DQog ICAgfQ0KICAgIGVsc2UgaWYgKGNtZCA9PSAncycpIHsNCiAgICAgIHNpZGVzWzBdICo9IDAuNTsN CiAgICAgIGRNYXNzU2V0U3BoZXJlICgmbSxERU5TSVRZLHNpZGVzWzBdKTsNCiAgICAgIG9ialtp XS5nZW9tWzBdID0gZENyZWF0ZVNwaGVyZSAoc3BhY2Usc2lkZXNbMF0pOw0KICAgIH0NCiAgICBl bHNlIGlmIChjbWQgPT0gJ3gnKSB7DQogICAgICBkR2VvbUlEIGcyW0dQQl07CQkvLyBlbmNhcHN1 bGF0ZWQgZ2VvbWV0cmllcw0KICAgICAgZFJlYWwgZHBvc1tHUEJdWzNdOwkvLyBkZWx0YS1wb3Np dGlvbnMgZm9yIGVuY2Fwc3VsYXRlZCBnZW9tZXRyaWVzDQoNCiAgICAgIC8vIHN0YXJ0IGFjY3Vt dWxhdGluZyBtYXNzZXMgZm9yIHRoZSBlbmNhcHN1bGF0ZWQgZ2VvbWV0cmllcw0KICAgICAgZE1h c3MgbTI7DQogICAgICBkTWFzc1NldFplcm8gKCZtKTsNCg0KICAgICAgLy8gc2V0IHJhbmRvbSBk ZWx0YSBwb3NpdGlvbnMNCiAgICAgIGZvciAoaj0wOyBqPEdQQjsgaisrKSB7DQoJZm9yIChrPTA7 IGs8MzsgaysrKSBkcG9zW2pdW2tdID0gZFJhbmRSZWFsKCkqMC4zLTAuMTU7DQogICAgICB9DQoN CiAgICAgIGZvciAoaz0wOyBrPDM7IGsrKykgew0KCW9ialtpXS5nZW9tW2tdID0gZENyZWF0ZUdl b21UcmFuc2Zvcm0gKHNwYWNlKTsNCglkR2VvbVRyYW5zZm9ybVNldENsZWFudXAgKG9ialtpXS5n ZW9tW2tdLDEpOw0KCWlmIChrPT0wKSB7DQoJICBkUmVhbCByYWRpdXMgPSBkUmFuZFJlYWwoKSow LjI1KzAuMDU7DQoJICBnMltrXSA9IGRDcmVhdGVTcGhlcmUgKDAscmFkaXVzKTsNCgkgIGRNYXNz U2V0U3BoZXJlICgmbTIsREVOU0lUWSxyYWRpdXMpOw0KCX0NCgllbHNlIGlmIChrPT0xKSB7DQoJ ICBnMltrXSA9IGRDcmVhdGVCb3ggKDAsc2lkZXNbMF0sc2lkZXNbMV0sc2lkZXNbMl0pOw0KCSAg ZE1hc3NTZXRCb3ggKCZtMixERU5TSVRZLHNpZGVzWzBdLHNpZGVzWzFdLHNpZGVzWzJdKTsNCgl9 DQoJZWxzZSB7DQoJICBkUmVhbCByYWRpdXMgPSBkUmFuZFJlYWwoKSowLjErMC4wNTsNCgkgIGRS ZWFsIGxlbmd0aCA9IGRSYW5kUmVhbCgpKjEuMCswLjE7DQoJICBnMltrXSA9IGRDcmVhdGVDQ3ls aW5kZXIgKDAscmFkaXVzLGxlbmd0aCk7DQoJICBkTWFzc1NldENhcHBlZEN5bGluZGVyICgmbTIs REVOU0lUWSwzLHJhZGl1cyxsZW5ndGgpOw0KCX0NCglkR2VvbVRyYW5zZm9ybVNldEdlb20gKG9i altpXS5nZW9tW2tdLGcyW2tdKTsNCg0KCS8vIHNldCB0aGUgdHJhbnNmb3JtYXRpb24gKGFkanVz dCB0aGUgbWFzcyB0b28pDQoJZEdlb21TZXRQb3NpdGlvbiAoZzJba10sZHBvc1trXVswXSxkcG9z W2tdWzFdLGRwb3Nba11bMl0pOw0KCWRNYXNzVHJhbnNsYXRlICgmbTIsZHBvc1trXVswXSxkcG9z W2tdWzFdLGRwb3Nba11bMl0pOw0KCWRNYXRyaXgzIFJ0eDsNCglkUkZyb21BeGlzQW5kQW5nbGUg KFJ0eCxkUmFuZFJlYWwoKSoyLjAtMS4wLGRSYW5kUmVhbCgpKjIuMC0xLjAsDQoJCQkgICAgZFJh bmRSZWFsKCkqMi4wLTEuMCxkUmFuZFJlYWwoKSoxMC4wLTUuMCk7DQoJZEdlb21TZXRSb3RhdGlv biAoZzJba10sUnR4KTsNCglkTWFzc1JvdGF0ZSAoJm0yLFJ0eCk7DQoNCgkvLyBhZGQgdG8gdGhl IHRvdGFsIG1hc3MNCglkTWFzc0FkZCAoJm0sJm0yKTsNCiAgICAgIH0NCg0KICAgICAgLy8gbW92 ZSBhbGwgZW5jYXBzdWxhdGVkIG9iamVjdHMgc28gdGhhdCB0aGUgY2VudGVyIG9mIG1hc3MgaXMg KDAsMCwwKQ0KICAgICAgZm9yIChrPTA7IGs8MjsgaysrKSB7DQoJZEdlb21TZXRQb3NpdGlvbiAo ZzJba10sDQoJCQkgIGRwb3Nba11bMF0tbS5jWzBdLA0KCQkJICBkcG9zW2tdWzFdLW0uY1sxXSwN CgkJCSAgZHBvc1trXVsyXS1tLmNbMl0pOw0KICAgICAgfQ0KICAgICAgZE1hc3NUcmFuc2xhdGUg KCZtLC1tLmNbMF0sLW0uY1sxXSwtbS5jWzJdKTsNCiAgICB9DQoNCiAgICBmb3IgKGs9MDsgayA8 IEdQQjsgaysrKSB7DQogICAgICBpZiAob2JqW2ldLmdlb21ba10pIGRHZW9tU2V0Qm9keSAob2Jq W2ldLmdlb21ba10sb2JqW2ldLmJvZHkpOw0KICAgIH0NCg0KICAgIGRCb2R5U2V0TWFzcyAob2Jq W2ldLmJvZHksJm0pOw0KICB9DQoNCiAgaWYgKGNtZCA9PSAnICcpIHsNCiAgICBzZWxlY3RlZCsr Ow0KICAgIGlmIChzZWxlY3RlZCA+PSBudW0pIHNlbGVjdGVkID0gMDsNCiAgICBpZiAoc2VsZWN0 ZWQgPCAwKSBzZWxlY3RlZCA9IDA7DQogIH0NCiAgZWxzZSBpZiAoY21kID09ICdkJyAmJiBzZWxl Y3RlZCA+PSAwICYmIHNlbGVjdGVkIDwgbnVtKSB7DQogICAgZEJvZHlEaXNhYmxlIChvYmpbc2Vs ZWN0ZWRdLmJvZHkpOw0KICB9DQogIGVsc2UgaWYgKGNtZCA9PSAnZScgJiYgc2VsZWN0ZWQgPj0g MCAmJiBzZWxlY3RlZCA8IG51bSkgew0KICAgIGRCb2R5RW5hYmxlIChvYmpbc2VsZWN0ZWRdLmJv ZHkpOw0KICB9DQp9DQoNCg0KLy8gZHJhdyBhIGdlb20NCg0Kdm9pZCBkcmF3R2VvbSAoZEdlb21J RCBnLCBjb25zdCBkUmVhbCAqcG9zLCBjb25zdCBkUmVhbCAqUikNCnsNCiAgaWYgKCFnKSByZXR1 cm47DQogIGlmICghcG9zKSBwb3MgPSBkR2VvbUdldFBvc2l0aW9uIChnKTsNCiAgaWYgKCFSKSBS ID0gZEdlb21HZXRSb3RhdGlvbiAoZyk7DQoNCiAgaW50IHR5cGUgPSBkR2VvbUdldENsYXNzIChn KTsNCiAgaWYgKHR5cGUgPT0gZEJveENsYXNzKSB7DQogICAgZFZlY3RvcjMgc2lkZXM7DQogICAg ZEdlb21Cb3hHZXRMZW5ndGhzIChnLHNpZGVzKTsNCiAgICBkc0RyYXdCb3ggKHBvcyxSLHNpZGVz KTsNCiAgfQ0KICBlbHNlIGlmICh0eXBlID09IGRTcGhlcmVDbGFzcykgew0KICAgIGRzRHJhd1Nw aGVyZSAocG9zLFIsZEdlb21TcGhlcmVHZXRSYWRpdXMgKGcpKTsNCiAgfQ0KICBlbHNlIGlmICh0 eXBlID09IGRDQ3lsaW5kZXJDbGFzcykgew0KICAgIGRSZWFsIHJhZGl1cyxsZW5ndGg7DQogICAg ZEdlb21DQ3lsaW5kZXJHZXRQYXJhbXMgKGcsJnJhZGl1cywmbGVuZ3RoKTsNCiAgICBkc0RyYXdD YXBwZWRDeWxpbmRlciAocG9zLFIsbGVuZ3RoLHJhZGl1cyk7DQogIH0NCiAgZWxzZSBpZiAodHlw ZSA9PSBkR2VvbVRyYW5zZm9ybUNsYXNzKSB7DQogICAgZEdlb21JRCBnMiA9IGRHZW9tVHJhbnNm b3JtR2V0R2VvbSAoZyk7DQogICAgY29uc3QgZFJlYWwgKnBvczIgPSBkR2VvbUdldFBvc2l0aW9u IChnMik7DQogICAgY29uc3QgZFJlYWwgKlIyID0gZEdlb21HZXRSb3RhdGlvbiAoZzIpOw0KICAg IGRWZWN0b3IzIGFjdHVhbF9wb3M7DQogICAgZE1hdHJpeDMgYWN0dWFsX1I7DQogICAgZE1VTFRJ UExZMF8zMzEgKGFjdHVhbF9wb3MsUixwb3MyKTsNCiAgICBhY3R1YWxfcG9zWzBdICs9IHBvc1sw XTsNCiAgICBhY3R1YWxfcG9zWzFdICs9IHBvc1sxXTsNCiAgICBhY3R1YWxfcG9zWzJdICs9IHBv c1syXTsNCiAgICBkTVVMVElQTFkwXzMzMyAoYWN0dWFsX1IsUixSMik7DQogICAgZHJhd0dlb20g KGcyLGFjdHVhbF9wb3MsYWN0dWFsX1IpOw0KICB9DQp9DQoNCg0KLy8gc2ltdWxhdGlvbiBsb29w DQoNCnN0YXRpYyB2b2lkIHNpbUxvb3AgKGludCBwYXVzZSkNCnsNCiAgZHNTZXRDb2xvciAoMCww LDIpOw0KICBkU3BhY2VDb2xsaWRlIChzcGFjZSwwLCZuZWFyQ2FsbGJhY2spOw0KICBpZiAoIXBh dXNlKSBkV29ybGRTdGVwICh3b3JsZCwwLjA1KTsNCg0KICAvLyByZW1vdmUgYWxsIGNvbnRhY3Qg am9pbnRzDQogIGRKb2ludEdyb3VwRW1wdHkgKGNvbnRhY3Rncm91cCk7DQoNCiAgZHNTZXRDb2xv ciAoMSwxLDApOw0KICBkc1NldFRleHR1cmUgKERTX1dPT0QpOw0KICBkcmF3R2VvbShyYW1wLDAs MCk7DQogIGRyYXdHZW9tKHJhbXAyLDAsMCk7DQoNCiAgZm9yIChpbnQgaT0wOyBpPG51bTsgaSsr KSB7DQogICAgaW50IGNvbG9yX2NoYW5nZWQgPSAwOw0KICAgIGlmIChpPT1zZWxlY3RlZCkgew0K ICAgICAgZHNTZXRDb2xvciAoMCwwLjcsMSk7DQogICAgICBjb2xvcl9jaGFuZ2VkID0gMTsNCiAg ICB9DQogICAgZWxzZSBpZiAoISBkQm9keUlzRW5hYmxlZCAob2JqW2ldLmJvZHkpKSB7DQogICAg ICBkc1NldENvbG9yICgxLDAsMCk7DQogICAgICBjb2xvcl9jaGFuZ2VkID0gMTsNCiAgICB9DQog ICAgZm9yIChpbnQgaj0wOyBqIDwgR1BCOyBqKyspIGRyYXdHZW9tIChvYmpbaV0uZ2VvbVtqXSww LDApOw0KICAgIGlmIChjb2xvcl9jaGFuZ2VkKSBkc1NldENvbG9yICgxLDEsMCk7DQogIH0NCn0N Cg0KDQppbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0Kew0KICAvLyBzZXR1cCBwb2lu dGVycyB0byBkcmF3c3R1ZmYgY2FsbGJhY2sgZnVuY3Rpb25zDQogIGRzRnVuY3Rpb25zIGZuOw0K ICBmbi52ZXJzaW9uID0gRFNfVkVSU0lPTjsNCiAgZm4uc3RhcnQgPSAmc3RhcnQ7DQogIGZuLnN0 ZXAgPSAmc2ltTG9vcDsNCiAgZm4uY29tbWFuZCA9ICZjb21tYW5kOw0KICBmbi5zdG9wID0gMDsN CiAgZm4ucGF0aF90b190ZXh0dXJlcyA9ICIuLi8uLi9kcmF3c3R1ZmYvdGV4dHVyZXMiOw0KDQog IC8vIGNyZWF0ZSB3b3JsZA0KDQogIHdvcmxkID0gZFdvcmxkQ3JlYXRlKCk7DQogIHNwYWNlID0g ZEhhc2hTcGFjZUNyZWF0ZSgpOw0KICBjb250YWN0Z3JvdXAgPSBkSm9pbnRHcm91cENyZWF0ZSAo MCk7DQogIGRXb3JsZFNldEdyYXZpdHkgKHdvcmxkLDAsMCwtMC41KTsNCiAgZFdvcmxkU2V0Q0ZN ICh3b3JsZCwxZS01KTsNCiAgZENyZWF0ZVBsYW5lIChzcGFjZSwwLDAsMSwwKTsNCiAgbWVtc2V0 IChvYmosMCxzaXplb2Yob2JqKSk7DQoNCiAgLy8gY3JlYXRlIHJhbXANCiAgcmFtcCA9IGRDcmVh dGVCb3ggKHNwYWNlLCAyLmYsIDIuZiwgMC4xZik7DQoJZEdlb21TZXRQb3NpdGlvbiAocmFtcCwg MC5mLCAwLmYsIDAuZik7DQoJZE1hdHJpeDMgUjsNCglkUkZyb21BeGlzQW5kQW5nbGUgKFIsIDAu ZiwgMS5mLCAwLmYsIE1fUEkvNC5mKTsNCglkR2VvbVNldFJvdGF0aW9uIChyYW1wLFIpOw0KDQog IHJhbXAyID0gZENyZWF0ZUJveCAoc3BhY2UsIDIuZiwgMi5mLCAwLjFmKTsNCglkR2VvbVNldFBv c2l0aW9uIChyYW1wMiwgMS5mLCAwLmYsIDAuZik7DQoJZFJGcm9tQXhpc0FuZEFuZ2xlIChSLCAw LmYsIDEuZiwgMC5mLCAtTV9QSS84LmYpOw0KCWRHZW9tU2V0Um90YXRpb24gKHJhbXAyLFIpOw0K DQogIC8vIHJ1biBzaW11bGF0aW9uDQogIGRzU2ltdWxhdGlvbkxvb3AgKGFyZ2MsYXJndiwzNTIs Mjg4LCZmbik7DQoNCiAgZEpvaW50R3JvdXBEZXN0cm95IChjb250YWN0Z3JvdXApOw0KICBkU3Bh Y2VEZXN0cm95IChzcGFjZSk7DQogIGRXb3JsZERlc3Ryb3kgKHdvcmxkKTsNCg0KICByZXR1cm4g MDsNCn0NCg== ------_=_NextPart_001_01C27EE9.1ED0102A-- From russ at q12.org Mon Oct 28 23:39:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 28 23:39:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: References: Message-ID: <20021028234323.7f5815bb.russ@q12.org> > attached is a modified version of test_boxstack.cpp. hit the 's' key > to drop a sphere and watch what happens. see how it sticks on the > cusp between the ramp and the ground plane? > > is this expected or is it a bug? hi david, i have found the problem. it's not exactly a coding bug in ODE, it's a problem with the way that the friction model is used. here's the story: ODE has two ways to approximate friction: the default way (called the constant-force-limit approximation, or 'box friction') and the improved way (called "friction pyramid approximation 1") which is obtained by setting the dContactApprox1 flag in the contact mode. your example uses the default box friction (as do most of the ODE test samples). it turns out that in a world that has box friction only, the "physically correct" behavior for a ball rolling down an inclined plane is to stop dead when it hits the ground! in other words, it's not an ODE bug as such but a consequence of this friction model in the contact joint. of course this is not the behavior that you see in real life, because real life does not have box friction! the solution is to use the dContactApprox1 mode, i.e. do this in your code: contact[i].surface.mode = dContactApprox1 | other_flags contact[i].surface.mu = dInfinity; // or, some other value like '1' your example did lead me to find a couple of problems in the LCP solver that were only evident in when dContactApprox1 was being used ... i've fixed them, and you'll have to check out lcp.cpp,lcp.h from CVS for this to work properly. i'll add a section to the FAQ that explains all this better, and gives the intuitive reason why box-friction causes this problem (i'll need a diagram - it's hard to explain in words). hope this helps you! russ. -- Russell Smith http://www.q12.org From russ at q12.org Mon Oct 28 23:49:01 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 28 23:49:01 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: <20021028234323.7f5815bb.russ@q12.org> References: <20021028234323.7f5815bb.russ@q12.org> Message-ID: <20021028235046.3dc17a77.russ@q12.org> oh yes ... other people doing vehicle stuff may want to update CVS and use the dContactApprox1 mode too. this problem affected all rolling bodies that had multiple frictional contacts at different angles (i.e. car wheels going over bumps, up ramps etc). let me know of any problems. russ. -- Russell Smith http://www.q12.org From russ at q12.org Tue Oct 29 01:11:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 01:11:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: References: Message-ID: <20021029001532.65434c54.russ@q12.org> i have added a faq section to the docs that explains the cause and solution for this problem. check out: "11.13. My rolling bodies (e.g. wheels) sometimes get stuck between geoms". http://q12.org/ode/ode-latest-userguide.html enjoy, russ -- Russell Smith http://www.q12.org From ivan.bolcina at volja.net Tue Oct 29 02:51:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 29 02:51:02 2002 Subject: [ODE] Torque and acceleration of angular velocities Message-ID: <000a01c27f30$9aba3ed0$0100a8c0@vectra> This is a multi-part message in MIME format. ------=_NextPart_000_0007_01C27F38.FAF17720 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi. I have a box body with box mass. I want to apply some amount of torque. = I am interested in acceleration of angular velocity. How to calculate = it? bye and thanx, ivan ------=_NextPart_000_0007_01C27F38.FAF17720 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
Hi.
 
I have a box body with box mass. I want = to apply=20 some amount of torque. I am interested in acceleration of angular = velocity. How=20 to calculate it?
 
bye and thanx,
ivan
------=_NextPart_000_0007_01C27F38.FAF17720-- From martin at metahuman.org Tue Oct 29 06:17:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Tue Oct 29 06:17:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp References: <20021028234323.7f5815bb.russ@q12.org> <20021028235046.3dc17a77.russ@q12.org> Message-ID: <3DBE8A24.A1246A71@metahuman.org> Hey Russ, ODE never ceases to amaze me with the level of support you give, Russ. Tracking down things like this, documenting them and fixing those LCP bugs is a great example. Since many people simply take the examples and change what they need to change, and don't change anything they don't understand; and since the difference between the two friction models is subtle, should the examples be changed to use dContactApprox1? For that matter, should it be the default friction model? At the very least, when discussing contact parameters in the manual, should it say "if you don't know which friction model to use, start with dContactApprox1?" Just a thought, Martin Russ Smith wrote: > > oh yes ... other people doing vehicle stuff may want to update CVS and > use the dContactApprox1 mode too. this problem affected all rolling > bodies that had multiple frictional contacts at different angles (i.e. > car wheels going over bumps, up ramps etc). > > let me know of any problems. > > russ. From russ at q12.org Tue Oct 29 11:33:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 11:33:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: <3DBE8A24.A1246A71@metahuman.org> Message-ID: > Since many people simply take the examples and change what they need to > change, and don't change anything they don't understand; and since the > difference between the two friction models is subtle, should the examples > be changed to use dContactApprox1? For that matter, should it be the > default friction model? At the very least, when discussing contact > parameters in the manual, should it say "if you don't know which friction > model to use, start with dContactApprox1?" probably you're right. in fact, there needs to be a lot more written about the friction models in general. i'm reluctant to made dContactApprox1 the default, as this will break people's code in subtle ways - there are now enough users of ODE that breaking the API is kind of an anti-social thing to do unless there is a good reason. i changed the buggy example, since that's the basis for a lot of people's vehicles. i may change the other examples too, but i'll try them out first to see what effect the change has. russ. -- Russ Smith http://www.q12.org/ From wristy_j at yahoo.com Tue Oct 29 16:21:02 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Tue Oct 29 16:21:02 2002 Subject: [ODE] "fixed world point" joint Message-ID: <20021029232045.49157.qmail@web40811.mail.yahoo.com> Hello, How can I constrain (through a ball joint) a physically simulated body to another body that is NOT under physical simulation, but updated by either user input or an animation sequence? (So, like having a shoulder joint that is updated by an animation, while having the arm lifelessly dangle from it like a rag doll.) - (Note: I'm treating the non-simulated body as though it were infinitely massive (InvMass = 0) - the problem is that it moves!) Is there a simple way to just specify a new anchor point per frame, and let the LCP solver calculate the necessary forces to keep the body constrained at that point? OR - Do I need to calculate forces to apply to the simulated body based on the current and previous position of the animated body myself (instead of letting the LCP solver figure out those forces). Will this work? Is there any other way to do it? Thanks! J __________________________________________________ Do you Yahoo!? HotJobs - Search new jobs daily now http://hotjobs.yahoo.com/ From russ at q12.org Tue Oct 29 17:12:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 17:12:02 2002 Subject: [ODE] "fixed world point" joint In-Reply-To: <20021029232045.49157.qmail@web40811.mail.yahoo.com> Message-ID: > How can I constrain (through a ball joint) a > physically simulated body to another body that is NOT > under physical simulation ideally, there should be a new joint that constrains a point on a body to move at a certain global velocity. you could compute this velocity based on the motion you desire. this joint is easy to create - in fact it's quite similar to the existing ball joint - but i have so much other stuff on my ODE todo list right now. any volunteers? other approaches (e.g. setting forces on bodies) will also work, but are less than ideal - they require a lot of fiddling and tuning to get right, and they never look quite right. russ. -- Russ Smith http://www.q12.org/ From aanand at milestoneindia.com Tue Oct 29 21:30:02 2002 From: aanand at milestoneindia.com (Aanand Narayanan.P.P) Date: Tue Oct 29 21:30:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Does anybody know which method (direct LCP, iterative LCP, penalty etc) was used in the (vehicle) physics for GTA3? Is it possible to achieve the same level of stability with ODE? I would like to hear from other people who have used ODE for full fledged physics simulations. Thanks AN --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.401 / Virus Database: 226 - Release Date: 10/9/2002 From coding at natew.com Tue Oct 29 23:34:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 29 23:34:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: On Wed, 30 Oct 2002, Aanand Narayanan.P.P wrote: > I would like to hear from other people who have used ODE for full > fledged physics simulations. What do you mean by "full fledged?" -- Nate Waddoups Redmond WA USA http://www.natew.com From slipch Wed Oct 30 01:35:03 2002 From: slipch (slipch) Date: Wed Oct 30 01:35:03 2002 Subject: Re[2]: [ODE] "fixed world point" joint In-Reply-To: References: Message-ID: <823040832.20021030103748@gsc-game.kiev.ua> Hello Russ, Wednesday, October 30, 2002, 2:11:25 AM, you wrote: >..... any volunteers? I have tried to understand creating joints in ODE. But it turned out a not easy task for me. I have read your paper on creating joints. There is a very good explained theory but it says nothing about implementation. May be some main points would be enough for me. -- Best regards, Konstantin Slipchenko mailto:slipch@gsc-game.kiev.ua From aanand at milestoneindia.com Wed Oct 30 04:45:02 2002 From: aanand at milestoneindia.com (Aanand Narayanan.P.P) Date: Wed Oct 30 04:45:02 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: Message-ID: <000001c2800a$7836a2b0$0e01a8c0@aanand> >> I would like to hear from other people who have used ODE for full >> fledged physics simulations. > What do you mean by "full fledged?" Like in GTA3 (or any other similar game). Not just for vehicles, but for other objects in the world (lamp post, dust bins etc.). What I am interested is in the stability and robustness of the system when several simulations occur (several different active joints). I did read about the posts on direct LCP and iterative LCP. So I wanted to know if anybody knows about the physics in GTA3 and the stability of ODE itself when used for such simulations (GTA3). Also can anyone point me to some literature on Dantzig algorithm (used by LCP solver in ODE). Cheers AN --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.401 / Virus Database: 226 - Release Date: 10/9/2002 From wristy_j at yahoo.com Wed Oct 30 06:24:01 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Wed Oct 30 06:24:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c2800a$7836a2b0$0e01a8c0@aanand> Message-ID: <20021030132310.65975.qmail@web40807.mail.yahoo.com> > Also can anyone point me to some literature on > Dantzig algorithm > (used by LCP solver in ODE). > > Cheers > AN Hello, David Baraff has a paper entitled "Fast Contact Force Computation for Nonpenetrating Rigid Bodies" that was in SIGGRAPH 94. In it, he has pseudo-code for his implementation of Dantzig's algorithm. Just search for it by name and you'll find a .pdf. Hope that helps, J __________________________________________________ Do you Yahoo!? HotJobs - Search new jobs daily now http://hotjobs.yahoo.com/ From erwin at vo.com Wed Oct 30 06:39:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 30 06:39:02 2002 Subject: [ODE] GTA3 and Physics References: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: <005601c28019$9d6561c0$73fefea9@athlon> Actually the carphysics in GTA3 are pretty lousy in my opinion. I suspect they are using Havok. Although i wouldnt even consider calling Havok 'lousy' in general, i dont like the carphysics i've seen in their public demo's. GTA3 kinda feels like these. I dont think its impossible to create the same physicsmodel in ODE, though. You just need to fiddle a lot with masses to get it right. Erwin ----- Original Message ----- From: "Aanand Narayanan.P.P" To: Sent: Wednesday, October 30, 2002 05:34 Subject: [ODE] GTA3 and Physics > > Does anybody know which method (direct LCP, iterative LCP, penalty etc) > was used in the (vehicle) physics for GTA3? > Is it possible to achieve the same level of stability with ODE? I would > like to hear from other people who have used ODE for full fledged > physics simulations. > > Thanks > AN From Henrik.Karlsson at dice.se Wed Oct 30 06:55:02 2002 From: Henrik.Karlsson at dice.se (Karlsson, Henrik) Date: Wed Oct 30 06:55:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <160E755604B6A949900013D42C3484722DEBAB@elrond.dice.se> I'm guessing they are using a very customized physics model for gta3... They might use havoc or similar package for most physics stuff.. but when it comes to car physics in games it is much cheaper to have a customized system compared to building up a vehicle correctly with different parts.. Henrik -----Original Message----- From: Erwin de Vries [mailto:erwin@vo.com] Sent: den 30 oktober 2002 13:06 To: ode@q12.org Subject: Re: [ODE] GTA3 and Physics Actually the carphysics in GTA3 are pretty lousy in my opinion. I suspect they are using Havok. Although i wouldnt even consider calling Havok 'lousy' in general, i dont like the carphysics i've seen in their public demo's. GTA3 kinda feels like these. I dont think its impossible to create the same physicsmodel in ODE, though. You just need to fiddle a lot with masses to get it right. Erwin ----- Original Message ----- From: "Aanand Narayanan.P.P" To: Sent: Wednesday, October 30, 2002 05:34 Subject: [ODE] GTA3 and Physics > > Does anybody know which method (direct LCP, iterative LCP, penalty etc) > was used in the (vehicle) physics for GTA3? > Is it possible to achieve the same level of stability with ODE? I would > like to hear from other people who have used ODE for full fledged > physics simulations. > > Thanks > AN _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From ed.jones at oracle.com Wed Oct 30 10:16:01 2002 From: ed.jones at oracle.com (Ed Jones) Date: Wed Oct 30 10:16:01 2002 Subject: [ODE] Self Righting Boxes (on castors) Message-ID: <3DC013BD.9080102@oracle.com> Hi Folks, I'm building a "simulation" which consists of a load of boxes on castors which I can push around (don't ask!). The boxes are (fairly obviously) boxes and the castors are 4 spheres attached to each box with ball joints. I can click on the boxes to give them forces and hence push them around the floor. Which is just a ground plane, with other boxes and spheres on it. So far so good. The "castorbox people" fall over quite regularly, which is fine and all part of the "fun". But what I'd like to do is, after a couple of seconds of lying down, get them to spring back up to their feet of their own accord. Obviously I can just reset the little fella to be the right way up but I'd like it to look more like they're jumping back up themselves. Anyone got any ideas of what would be a good (and preferably simple!) way to achieve this? Cheers, Ed. From filipe.dias at mind.pt Wed Oct 30 10:48:02 2002 From: filipe.dias at mind.pt (Filipe Dias) Date: Wed Oct 30 10:48:02 2002 Subject: [ODE] Self Righting Boxes (on castors) In-Reply-To: <3DC013BD.9080102@oracle.com> Message-ID: <200210301747.g9UHlGu01461@hook.org> I remember seeing (in the buggy demo) a force being aplyed upwards to one of the corners of the box while we were pressing the backspace key. but that isn't an automatic way to straighten things up, since it is aplied for as long as the key is down... What I am remembering now is that you can do something archimedes-like and fix a balloon some distance above the boxes.. when they go upside- down you would fill the baloon and it would turn the box over.. An up force aplied some distance over the center of the box. This is obviosly not as funny as an explosion-like effect where the box would spin a number of times an land straigt up.. but trying to turn boxes arround with explosions may take quite a lot of attepts to do it right!.. :-) Fil. -----Original Message----- From: Ed Jones To: ode@q12.org Date: Wed, 30 Oct 2002 17:15:41 +0000 Subject: [ODE] Self Righting Boxes (on castors) > Hi Folks, > > I'm building a "simulation" which consists of a load of boxes on > castors > which I can push around (don't ask!). > > The boxes are (fairly obviously) boxes and the castors are 4 spheres > attached to each box with ball joints. I can click on the boxes to give > them forces and hence push them around the floor. Which is just a > ground > plane, with other boxes and spheres on it. So far so good. > > The "castorbox people" fall over quite regularly, which is fine and all > part of the "fun". But what I'd like to do is, after a couple of > seconds > of lying down, get them to spring back up to their feet of their own > accord. Obviously I can just reset the little fella to be the right way > up but I'd like it to look more like they're jumping back up > themselves. > > Anyone got any ideas of what would be a good (and preferably simple!) > way to achieve this? > > Cheers, > Ed. > > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From erwin at vo.com Wed Oct 30 11:19:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 30 11:19:01 2002 Subject: [ODE] GTA3 and Physics References: <160E755604B6A949900013D42C3484722DEBAB@elrond.dice.se> Message-ID: <00ba01c28040$be7d2510$73fefea9@athlon> > I'm guessing they are using a very customized physics model for gta3... They > might use havoc or similar package for most physics stuff.. but when it > comes to car physics in games it is much cheaper to have a customized system > compared to building up a vehicle correctly with different parts.. This is exactly what comes with Havok. A vehicle SDK. Now i have no idea how it works behind the scenes, and i've never used it, but my guess is that they are using many hacks to make it 'just work'. Erwin From philt at microsoft.com Wed Oct 30 11:49:02 2002 From: philt at microsoft.com (Phil Teschner) Date: Wed Oct 30 11:49:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <240659DFBDD99C4299EF7483EAD70F2410C1A1@RED-MSG-01.redmond.corp.microsoft.com> I remember hearing that the physics engine in GTA3 was entirely written in house. It is a pretty straight forward rigid body system that does not solve multiple simultaneous contacts (i.e. does not use an LPC solver). Phil -----Original Message----- From: Erwin de Vries [mailto:erwin@vo.com] Sent: Wednesday, October 30, 2002 10:18 AM To: ode@q12.org Subject: Re: [ODE] GTA3 and Physics > I'm guessing they are using a very customized physics model for gta3... They > might use havoc or similar package for most physics stuff.. but when it > comes to car physics in games it is much cheaper to have a customized system > compared to building up a vehicle correctly with different parts.. This is exactly what comes with Havok. A vehicle SDK. Now i have no idea how it works behind the scenes, and i've never used it, but my guess is that they are using many hacks to make it 'just work'. Erwin _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Wed Oct 30 12:44:01 2002 From: coding at natew.com (Nate W) Date: Wed Oct 30 12:44:01 2002 Subject: [ODE] Self Righting Boxes (on castors) In-Reply-To: <3DC013BD.9080102@oracle.com> Message-ID: On Wed, 30 Oct 2002, Ed Jones wrote: > The "castorbox people" fall over quite regularly, which is fine and all > part of the "fun". But what I'd like to do is, after a couple of seconds > of lying down, get them to spring back up to their feet of their own > accord. Obviously I can just reset the little fella to be the right way > up but I'd like it to look more like they're jumping back up themselves. > > Anyone got any ideas of what would be a good (and preferably simple!) > way to achieve this? How about using an angular motor? http://q12.org/ode/ode-latest-userguide.html#ref56 Set the motor to have one axis, and set one of the motor's bodies to the "castorperson" body and set the other to null. Use dJointSetAMotorParam to set a desired (angular) velocity. That should rotate the person upright. To come up with a desired velocity, get the angle between the person's current orientation and the desired "upright" vector. Multiply that angle by a "gain" factor. To tune the way the people get upright, you can tune the gain, the maximum force, the people's mass, gravity, etc. When the person's angular velocity gets close to zero, you can probably consider them upright and turn off the angular motor. I haven't actually used angular motors yet in my own code, so this is as much a question as a suggestion. If anyone has other ideas I'm all ears. -- Nate Waddoups Redmond WA USA http://www.natew.com From filipe.dias at mind.pt Wed Oct 30 13:14:01 2002 From: filipe.dias at mind.pt (Filipe Dias) Date: Wed Oct 30 13:14:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <240659DFBDD99C4299EF7483EAD70F2410C1A1@RED-MSG-01.redmond.corp.microsoft.com> Message-ID: <200210302013.g9UKDsu16879@hook.org> What I remember from playing it is that when a seeding firetruck bumps into 2 cars at the same time the result is unexpected, the two cars stay still and the fire truck goes mad like if it had hit a wall. So this is very simmilar to "doesn't solve multiple simultaneous contacts" Now judging by how good it looks, I am surprised how multiple contact situations happen that seldom! Even so it is possible to push two stoped cars very slowly, so it is possible that multiple contacts can be solved if the speed is low... Dispite all this I have mannaged to drive a firetruck inside a taxi! Fil. -----Original Message----- From: "Phil Teschner" To: "Erwin de Vries" , Date: Wed, 30 Oct 2002 10:48:02 -0800 Subject: RE: [ODE] GTA3 and Physics > I remember hearing that the physics engine in GTA3 was entirely written > in house. It is a pretty straight forward rigid body system that does > not solve multiple simultaneous contacts (i.e. does not use an LPC > solver). > > Phil > > -----Original Message----- > From: Erwin de Vries [mailto:erwin@vo.com] > Sent: Wednesday, October 30, 2002 10:18 AM > To: ode@q12.org > Subject: Re: [ODE] GTA3 and Physics > > > I'm guessing they are using a very customized physics model for > gta3... > They > > might use havoc or similar package for most physics stuff.. but when > it > > comes to car physics in games it is much cheaper to have a customized > system > > compared to building up a vehicle correctly with different parts.. > > This is exactly what comes with Havok. A vehicle SDK. Now i have no > idea > how > it works behind the scenes, and i've never used it, but my guess is > that > they are using many hacks to make it 'just work'. > > Erwin > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From holmlund at hpc2n.umu.se Wed Oct 30 14:15:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Wed Oct 30 14:15:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp References: Message-ID: <3DC04BAA.4050904@hpc2n.umu.se> Btw, what's the current status of R&D on finding methods for implementing real coulomb friction in an efficient way? Any recent publications/preprints/conferences in this area? /Kenneth Russ Smith wrote: > probably you're right. in fact, there needs to be a lot more written about > the friction models in general. i'm reluctant to made dContactApprox1 the > default, as this will break people's code in subtle ways - there are now > enough users of ODE that breaking the API is kind of an anti-social thing > to do unless there is a good reason. > > i changed the buggy example, since that's the basis for a lot of people's > vehicles. i may change the other examples too, but i'll try them out first > to see what effect the change has. > > russ. -- Kenneth Holmlund Director VRlab HPC2N, Umeå University, Sweden holmlund@hpc2n.umu.se From holmlund at hpc2n.umu.se Wed Oct 30 14:31:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Wed Oct 30 14:31:02 2002 Subject: [ODE] GTA3 and Physics References: <000001c2800a$7836a2b0$0e01a8c0@aanand> Message-ID: <3DC04F58.5040909@hpc2n.umu.se> The probably most advanced vehicle simulator around is the harvester simulator by Oryx Simulations. See http://www.oryx.se/ It's using Vortex from CM-Labs, and Russ had a key role in it's early development. (see http://www.cm-labs.com/) In this simulator you have full vehicle dynamics plus highly advanced interaction with many objects in the environment. Upcoming simulators for "heavy vehicles" use physics for adding even more realism and generality. If you would tear off the hardware (for control and display) the whole thing could quite easily be made into a "game like" application (there's a reason why Russ talks about "Harvester wars" in his notes! :) ODE and Vortex were quite similar one year ago, but Vortex has quite a few more features nowadays, as well as an improved friction model and better stability for rotating bodies. In fact, MathEngine Karma, ODE and Vortex all bear influences from the same people (including Russ), but they have been developed independently for some time now (though I really don't know much about Karma these days). /Kenneth Aanand Narayanan.P.P wrote: >>>I would like to hear from other people who have used ODE for full >>>fledged physics simulations. >> > >>What do you mean by "full fledged?" > > > Like in GTA3 (or any other similar game). Not just for vehicles, > but for other objects in the world (lamp post, dust bins etc.). What I > am interested is in the stability and robustness of the system when > several simulations occur (several different active joints). I did read > about the posts on direct LCP and iterative LCP. So I wanted to know if > anybody knows about the physics in GTA3 and the stability of ODE itself > when used for such simulations (GTA3). > > Also can anyone point me to some literature on Dantzig algorithm > (used by LCP solver in ODE). > > Cheers > AN > -- Kenneth Holmlund Director VRlab HPC2N, Umeå University, Sweden holmlund@hpc2n.umu.se From Henrik.Karlsson at dice.se Wed Oct 30 14:39:01 2002 From: Henrik.Karlsson at dice.se (Karlsson, Henrik) Date: Wed Oct 30 14:39:01 2002 Subject: [ODE] GTA3 and Physics Message-ID: <160E755604B6A949900013D42C3484722DEBB0@elrond.dice.se> It's very common that you use simple displacement in games when contacts appear between objects.. and solve them one by one.. If you tweak it a little you can make it look good.. cheap and simple :) Or you can always solve displacement simultaneously. That might give you a better protection against bodies penetrating each other when multiple contacts. The big performance hit in game physics usually is the collision part though. In our game right now 50% of the cpu is just collision detection.. (most graphics are done on the gpu). So keep your collision primitives as simple as possible (use composites of spheres instead of boxes etc, works good enough in most cases). regards, Henrik -----Original Message----- From: Filipe Dias [mailto:filipe.dias@mind.pt] Sent: den 30 oktober 2002 20:49 To: ode@q12.org Subject: RE: [ODE] GTA3 and Physics What I remember from playing it is that when a seeding firetruck bumps into 2 cars at the same time the result is unexpected, the two cars stay still and the fire truck goes mad like if it had hit a wall. So this is very simmilar to "doesn't solve multiple simultaneous contacts" Now judging by how good it looks, I am surprised how multiple contact situations happen that seldom! Even so it is possible to push two stoped cars very slowly, so it is possible that multiple contacts can be solved if the speed is low... Dispite all this I have mannaged to drive a firetruck inside a taxi! Fil. -----Original Message----- From: "Phil Teschner" To: "Erwin de Vries" , Date: Wed, 30 Oct 2002 10:48:02 -0800 Subject: RE: [ODE] GTA3 and Physics > I remember hearing that the physics engine in GTA3 was entirely written > in house. It is a pretty straight forward rigid body system that does > not solve multiple simultaneous contacts (i.e. does not use an LPC > solver). > > Phil > > -----Original Message----- > From: Erwin de Vries [mailto:erwin@vo.com] > Sent: Wednesday, October 30, 2002 10:18 AM > To: ode@q12.org > Subject: Re: [ODE] GTA3 and Physics > > > I'm guessing they are using a very customized physics model for > gta3... > They > > might use havoc or similar package for most physics stuff.. but when > it > > comes to car physics in games it is much cheaper to have a customized > system > > compared to building up a vehicle correctly with different parts.. > > This is exactly what comes with Havok. A vehicle SDK. Now i have no > idea > how > it works behind the scenes, and i've never used it, but my guess is > that > they are using many hacks to make it 'just work'. > > Erwin > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ ODE mailing list ODE@q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Thu Oct 31 00:23:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 00:23:02 2002 Subject: [ODE] slider trouble Message-ID: I've noticed that when I connect two boxes with a slider, and set stops on the slider so it can only move between +1 and -1, the box-slider-box system spins off into infinity if I toss it into the air. Without the limits, the system behaves just fine. I was thinking that I was just seeing the rotating body instability described in 11.12 of the FAQ, but bodies by themselves are a much smaller problem. It seems like the joint limits exacerbate the problem, could they be adding energy to the system somehow? Russ, do you have a pretty good idea of what would cause this, or would you like me to tweak one of the drawstuff-based sample apps to demonstrate this? There is a possiblity that something in Juice is contributing to the problem, so if you want I'll put together a bare-minimum test case for you. Nate Waddoups Redmond WA USA http://www.natew.com From duhprey at yahoo.com Thu Oct 31 09:59:01 2002 From: duhprey at yahoo.com (Daniel Duhprey) Date: Thu Oct 31 09:59:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: On Wed, 30 Oct 2002, Aanand Narayanan.P.P wrote: --> -->Does anybody know which method (direct LCP, iterative LCP, penalty etc) -->was used in the (vehicle) physics for GTA3? -->Is it possible to achieve the same level of stability with ODE? I would -->like to hear from other people who have used ODE for full fledged -->physics simulations. I'm one of the devs responsible for the ode plugin to crystal space. I also wrote a pinball simulator using that http://cs-pinball.sourceforge.net. Its not exactly full-fledged physics since the only real active object is the ball, but the flipper and shooter are represented with joints and forces/torques as are anything else in the game, but its really not on the scale of GTA3 -- ------------ email: duhprey@tosos.com www: http://paradox.tosos.com/~duhprey icq: 129354442 She's got a whole brood of kids, like Sendmail, and Postfix, and Apache, and Perl. And some of 'em die young, and some are mentally retarded. Sterling The European finds intercourse with Americans easy and agreeable. Einstein Not a shred of evidence exists in favor of the idea that life is serious. Gill From ed.jones at oracle.com Thu Oct 31 11:05:02 2002 From: ed.jones at oracle.com (Ed Jones) Date: Thu Oct 31 11:05:02 2002 Subject: [ODE] Self Righting Boxes (on castors) References: Message-ID: <3DC170AC.5010004@oracle.com> Thanks for the ideas Nate and Fil, I think I'll go for a big comedy magnet, attached to helicopter rotor-blades (or possibly a jet-pack or something) to hover around and pull them back up. Cheers, Ed. Nate W wrote: >On Wed, 30 Oct 2002, Ed Jones wrote: > > > >>The "castorbox people" fall over quite regularly, which is fine and all >>part of the "fun". But what I'd like to do is, after a couple of seconds >>of lying down, get them to spring back up to their feet of their own >>accord. Obviously I can just reset the little fella to be the right way >>up but I'd like it to look more like they're jumping back up themselves. >> >>Anyone got any ideas of what would be a good (and preferably simple!) >>way to achieve this? >> >> > >How about using an angular motor? >http://q12.org/ode/ode-latest-userguide.html#ref56 > >Set the motor to have one axis, and set one of the motor's bodies to the >"castorperson" body and set the other to null. Use dJointSetAMotorParam >to set a desired (angular) velocity. That should rotate the person >upright. > >To come up with a desired velocity, get the angle between the person's >current orientation and the desired "upright" vector. Multiply that angle >by a "gain" factor. To tune the way the people get upright, you can tune >the gain, the maximum force, the people's mass, gravity, etc. When the >person's angular velocity gets close to zero, you can probably consider >them upright and turn off the angular motor. > >I haven't actually used angular motors yet in my own code, so this is as >much a question as a suggestion. If anyone has other ideas I'm all ears. > > > From russ at q12.org Thu Oct 31 12:39:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 12:39:02 2002 Subject: [ODE] slider trouble In-Reply-To: Message-ID: > so if you want I'll put together a bare-minimum test case for you. please. russ -- Russ Smith http://www.q12.org/ From mein at cs.umn.edu Thu Oct 31 12:49:01 2002 From: mein at cs.umn.edu (Kent Mein) Date: Thu Oct 31 12:49:01 2002 Subject: [ODE] just a little patch Message-ID: <20021031092658.A10224@cs.umn.edu> Just a small patch under solaris for ode/test/test_ode.cpp I added the following: #if defined (__sparc) || defined (__sparc__) #include #endif Kent Mein -- mein@cs.umn.edu http://www.cs.umn.edu/~mein From xyberswine at hotmail.com Thu Oct 31 12:57:30 2002 From: xyberswine at hotmail.com (Kirk Waynesdale) Date: Thu Oct 31 12:57:30 2002 Subject: [ODE] more physics Message-ID: looks like another physics engine... www.tokamakphysics.com John L. _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From russ at q12.org Thu Oct 31 13:08:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 13:08:02 2002 Subject: [ODE] more physics In-Reply-To: Message-ID: > looks like another physics engine... > > www.tokamakphysics.com interesting. yet another mention of iterative constraint solving methods here. the demos are kind of bare bones (i.e., like ODE's bare bones demos). no mention of the cost. the box stack demo has an interesting flaw: a nudged stack will tip over, then freeze part of the way down. this suggests that 'stable' box stacking is achieved through simply turning off the phisics for a stationary stack - which is a good idea, but it makes it hard to evaluate the stability of the underlying method for stacks. the collision looks like it allows penetration, like ODE. if you collapse the chain on top of itself it will squish into itself a bit then expand out. russ. -- Russ Smith http://www.q12.org/ From anselm at hook.org Thu Oct 31 13:40:02 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 31 13:40:02 2002 Subject: [ODE] more physics In-Reply-To: Message-ID: I was looking around for some information on this topic and ran across these links that others may find interesting: http://w3imagis.imag.fr/Publications/1999/Fau99/Fau99.pdf http://w3imagis.imag.fr/Membres/Francois.Faure/faure.html - a On Thu, 31 Oct 2002, Russ Smith wrote: > > > looks like another physics engine... > > > > www.tokamakphysics.com > > interesting. yet another mention of iterative constraint solving methods > here. the demos are kind of bare bones (i.e., like ODE's bare bones > demos). no mention of the cost. > > the box stack demo has an interesting flaw: a nudged stack will tip over, > then freeze part of the way down. this suggests that 'stable' box stacking > is achieved through simply turning off the phisics for a stationary stack > - which is a good idea, but it makes it hard to evaluate the stability of > the underlying method for stacks. > > the collision looks like it allows penetration, like ODE. if you collapse > the chain on top of itself it will squish into itself a bit then expand > out. > > russ. > > -- > Russ Smith > http://www.q12.org/ > > _______________________________________________ > ODE mailing list > ODE@q12.org > http://q12.org/mailman/listinfo/ode > From jme at snowcode.com Thu Oct 31 14:28:02 2002 From: jme at snowcode.com (Joakim Eriksson) Date: Thu Oct 31 14:28:02 2002 Subject: SV: [ODE] more physics Message-ID: > > looks like another physics engine... > > > > www.tokamakphysics.com > > interesting. yet another mention of iterative constraint > solving methods here. the demos are kind of bare bones >(i.e., like ODE's bare bones demos). no mention of the cost. Costs in what way? It does say memory usage and how much of the cpu per frame the physics system takes. What other costs are there? > the box stack demo has an interesting flaw: a nudged stack > will tip over, then freeze part of the way down. this suggests > that 'stable' box stacking is achieved through simply turning >off the phisics for a stationary stack Yes, seems like the objects sleep VERY quickly. After just a few tries I manage to get it to sleep in a physicly impossible position. (If the simulation had run for just a few ticks more the boxes would have fallen over) but they quickly froze in place. > the collision looks like it allows penetration, like ODE. if > you collapse the chain on top of itself it will squish into > itself a bit then expand out. It does indeed allow penetration. Just move closer to a object and spawn a sphere or something. You can see that even if the object is inside another object he can handle it. Its also a dead give away that he for the moment only handles primitives vs primitives and primitives vs static triangle meshes. It seems to be able to handle quite a lot. It does use a bit of memory 500Kb in some cases but they do contain quite a lot of objects. Too bad they dont have any more information on thier method. Also is it just me or do the chain and hinge behave strangly? If you continue to force it upwards it starts to wobble. Like a snake or something. Maybe it's just me and thats how it should behave. /Joakim E. - www.planestate.net From coding at natew.com Thu Oct 31 14:59:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 14:59:02 2002 Subject: [ODE] slider trouble In-Reply-To: Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --1363170581-980581577-1036073289=:32303 Content-Type: TEXT/PLAIN; charset=US-ASCII On Thu, 31 Oct 2002, Russ Smith wrote: > > so if you want I'll put together a bare-minimum test case for you. > > please. I've attached test_sliderstops.cpp, a small demo in the drawstuff tradition with two boxes and a slider between them. To get them flying, they are dropped onto bouncy ground. The first bounce looks about right, but before it hits the ground again the two-box system appears to gain a lot of angular momentum. They mellow out after they hit the ground again. The boxes start with altitudes of 7 and 8 units; if you raise those to 19 and 20 you get more 'air time' and more trouble. You have to be quick with the mouse to follow them around the sky though. -- Nate Waddoups Redmond WA USA http://www.natew.com --1363170581-980581577-1036073289=:32303 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="test_sliderstops.cpp" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="test_sliderstops.cpp" LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioNDQogKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKg0NCiAqIE9wZW4gRHluYW1pY3MgRW5naW5lLCBD b3B5cmlnaHQgKEMpIDIwMDEsMjAwMiBSdXNzZWxsIEwuIFNtaXRoLiAgICAg ICAqDQ0KICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gIEVtYWlsOiBydXNzQHEx Mi5vcmcgICBXZWI6IHd3dy5xMTIub3JnICAgICAgICAgICoNDQogKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKg0NCiAqIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig ICAgICAgICAqDQ0KICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiBF SVRIRVI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNDQog KiAgICgxKSBUaGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSAgKg0NCiAqICAgICAgIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0ICAqDQ0KICogICAgICAgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLiBUaGUgdGV4dCBvZiB0aGUgR05VIExlc3NlciAgICAg ICoNDQogKiAgICAgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGluY2x1 ZGVkIHdpdGggdGhpcyBsaWJyYXJ5IGluIHRoZSAgICAgKg0NCiAqICAgICAg IGZpbGUgTElDRU5TRS5UWFQuICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqDQ0KICogICAoMikgVGhlIEJTRC1zdHls ZSBsaWNlbnNlIHRoYXQgaXMgaW5jbHVkZWQgd2l0aCB0aGlzIGxpYnJhcnkg aW4gICAgICoNDQogKiAgICAgICB0aGUgZmlsZSBMSUNFTlNFLUJTRC5UWFQu ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0NCiAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQ0KICogVGhpcyBsaWJyYXJ5 IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsICAgICAgICoNDQogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAgICAg Kg0NCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBmaWxlcyAgICAqDQ0KICogTElDRU5T RS5UWFQgYW5kIExJQ0VOU0UtQlNELlRYVCBmb3IgbW9yZSBkZXRhaWxzLiAg ICAgICAgICAgICAgICAgICAgICoNDQogKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKg0NCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0NCg0N CiNpbmNsdWRlIDxvZGUvb2RlLmg+DQ0KI2luY2x1ZGUgPGRyYXdzdHVmZi9k cmF3c3R1ZmYuaD4NDQoNDQojaWZkZWYgTVNWQw0NCiNwcmFnbWEgd2Fybmlu ZyhkaXNhYmxlOjQyNDQgNDMwNSkgIC8vIGZvciBWQysrLCBubyBwcmVjaXNp b24gbG9zcyBjb21wbGFpbnRzDQ0KI2VuZGlmDQ0KDQ0KLy8gc2VsZWN0IGNv cnJlY3QgZHJhd2luZyBmdW5jdGlvbnMNDQojaWZkZWYgZERPVUJMRQ0NCiNk ZWZpbmUgZHNEcmF3Qm94IGRzRHJhd0JveEQNDQojZW5kaWYNDQoNDQoNDQov LyBzb21lIGNvbnN0YW50cw0NCiNkZWZpbmUgU0lERSAoMC41ZikJLy8gc2lk ZSBsZW5ndGggb2YgYSBib3gNDQojZGVmaW5lIE1BU1MgKDEuMCkJLy8gbWFz cyBvZiBhIGJveA0NCg0NCg0NCi8vIGR5bmFtaWNzIGFuZCBjb2xsaXNpb24g b2JqZWN0cw0NCnN0YXRpYyBkV29ybGRJRCB3b3JsZDsNDQpzdGF0aWMgZFNw YWNlSUQgc3BhY2U7DQ0Kc3RhdGljIGRCb2R5SUQgYm9keVsyXTsNDQpzdGF0 aWMgZEdlb21JRCBib3hbMl07DQ0Kc3RhdGljIGRKb2ludElEIHNsaWRlcjsN DQpzdGF0aWMgZEdlb21JRCBncm91bmQ7DQ0Kc3RhdGljIGRKb2ludEdyb3Vw SUQgY29udGFjdGdyb3VwOw0NCg0NCg0NCi8vIHN0YXJ0IHNpbXVsYXRpb24g LSBzZXQgdmlld3BvaW50DQ0KDQ0Kc3RhdGljIHZvaWQgc3RhcnQoKQ0NCnsN DQogIHN0YXRpYyBmbG9hdCB4eXpbM10gPSB7NS4wMzgyZiwtNS4wODExZiwx LjQ3MDBmfTsNDQogIHN0YXRpYyBmbG9hdCBocHJbM10gPSB7MTYwLjAwMDBm LDAuMGYsMC4wMDAwZn07DQ0KICBkc1NldFZpZXdwb2ludCAoeHl6LGhwcik7 DQ0KICBwcmludGYgKCJQcmVzcyAnZScgdG8gc3RhcnQvc3RvcCBvY2Nhc2lv bmFsIGVycm9yLlxuIik7DQ0KfQ0NCg0NCg0NCi8vIGNhbGxlZCB3aGVuIGEg a2V5IHByZXNzZWQNDQoNDQpzdGF0aWMgdm9pZCBjb21tYW5kIChpbnQgY21k KQ0NCnsNDQp9DQ0KDQ0KLy8gY29sbGlzaW9uIGNhbGxiYWNrDQ0KDQ0Kc3Rh dGljIHZvaWQgbmVhckNhbGxiYWNrICh2b2lkICpkYXRhLCBkR2VvbUlEIG8x LCBkR2VvbUlEIG8yKQ0NCnsNDQogIGludCBpLG47DQ0KDQ0KICAvLyBkb24n dCBjb2xsaWRlIGJveGVzIHdpdGggZWFjaCBvdGhlcg0NCiAgaWYgKChvMSA9 PSBib3hbMF0pICYmIChvMiA9PSBib3hbMV0pKQ0NCgkgIHJldHVybjsNDQoN DQogIGlmICgobzEgPT0gYm94WzFdKSAmJiAobzIgPT0gYm94WzBdKSkNDQoJ ICByZXR1cm47DQ0KDQ0KICBjb25zdCBpbnQgTiA9IDEwOw0NCiAgZENvbnRh Y3QgY29udGFjdFtOXTsNDQogIG4gPSBkQ29sbGlkZSAobzEsbzIsTiwmY29u dGFjdFswXS5nZW9tLHNpemVvZihkQ29udGFjdCkpOw0NCiAgaWYgKG4gPiAw KSB7DQ0KICAgIGZvciAoaT0wOyBpPG47IGkrKykgew0NCiAgICAgIGNvbnRh Y3RbaV0uc3VyZmFjZS5tb2RlID0gZENvbnRhY3RTbGlwMSB8IGRDb250YWN0 U2xpcDIgfA0NCgkvKmRDb250YWN0U29mdEVSUCB8IGRDb250YWN0U29mdENG TSB8ICovIGRDb250YWN0Qm91bmNlOw0NCiAgICAgIGNvbnRhY3RbaV0uc3Vy ZmFjZS5tdSA9IGRJbmZpbml0eTsNDQogICAgICBjb250YWN0W2ldLnN1cmZh Y2Uuc2xpcDEgPSAwLjE7DQ0KICAgICAgY29udGFjdFtpXS5zdXJmYWNlLnNs aXAyID0gMC4xOw0NCiAgICAgIC8vY29udGFjdFtpXS5zdXJmYWNlLnNvZnRf ZXJwID0gMC41Ow0NCiAgICAgIC8vY29udGFjdFtpXS5zdXJmYWNlLnNvZnRf Y2ZtID0gMC4zOw0NCgkgIGNvbnRhY3RbaV0uc3VyZmFjZS5ib3VuY2VfdmVs ID0gMDsNDQoJICBjb250YWN0W2ldLnN1cmZhY2UuYm91bmNlID0gMC45Ow0N CiAgICAgIGRKb2ludElEIGMgPSBkSm9pbnRDcmVhdGVDb250YWN0ICh3b3Js ZCxjb250YWN0Z3JvdXAsJmNvbnRhY3RbaV0pOw0NCiAgICAgIGRKb2ludEF0 dGFjaCAoYywNDQoJCSAgICBkR2VvbUdldEJvZHkoY29udGFjdFtpXS5nZW9t LmcxKSwNDQoJCSAgICBkR2VvbUdldEJvZHkoY29udGFjdFtpXS5nZW9tLmcy KSk7DQ0KICAgIH0NDQogIH0NDQp9DQ0KDQ0KLy8gc2ltdWxhdGlvbiBsb29w DQ0KDQ0Kc3RhdGljIHZvaWQgc2ltTG9vcCAoaW50IHBhdXNlKQ0NCnsNDQoN DQogIGRTcGFjZUNvbGxpZGUgKHNwYWNlLDAsJm5lYXJDYWxsYmFjayk7DQ0K ICBkV29ybGRTdGVwICh3b3JsZCwwLjA1KTsNDQogIGRKb2ludEdyb3VwRW1w dHkgKGNvbnRhY3Rncm91cCk7DQ0KDQ0KDQ0KICBkUmVhbCBzaWRlc1szXSA9 IHsxLDEsMX07DQ0KICBkc1NldFRleHR1cmUgKERTX1dPT0QpOw0NCiAgZHNT ZXRDb2xvciAoMSwxLDApOw0NCiAgZHNEcmF3Qm94IChkQm9keUdldFBvc2l0 aW9uKGJvZHlbMF0pLGRCb2R5R2V0Um90YXRpb24oYm9keVswXSksc2lkZXMp Ow0NCiAgZHNTZXRDb2xvciAoMCwxLDEpOw0NCiAgZHNEcmF3Qm94IChkQm9k eUdldFBvc2l0aW9uKGJvZHlbMV0pLGRCb2R5R2V0Um90YXRpb24oYm9keVsx XSksc2lkZXMpOw0NCn0NDQogICAgICAgICAgIA0NCmludCBtYWluIChpbnQg YXJnYywgY2hhciAqKmFyZ3YpDQ0Kew0NCiAgLy8gc2V0dXAgcG9pbnRlcnMg dG8gZHJhd3N0dWZmIGNhbGxiYWNrIGZ1bmN0aW9ucw0NCiAgZHNGdW5jdGlv bnMgZm47DQ0KICBmbi52ZXJzaW9uID0gRFNfVkVSU0lPTjsNDQogIGZuLnN0 YXJ0ID0gJnN0YXJ0Ow0NCiAgZm4uc3RlcCA9ICZzaW1Mb29wOw0NCiAgZm4u Y29tbWFuZCA9ICZjb21tYW5kOw0NCiAgZm4uc3RvcCA9IDA7DQ0KICBmbi5w YXRoX3RvX3RleHR1cmVzID0gIi4uLy4uL2RyYXdzdHVmZi90ZXh0dXJlcyI7 DQ0KDQ0KICAvLyBjcmVhdGUgd29ybGQsIHNwYWNlLCBncm91bmQsIGV0Yw0N CiAgd29ybGQgPSBkV29ybGRDcmVhdGUoKTsNDQogIGRXb3JsZFNldEdyYXZp dHkgKHdvcmxkLCAwLCAwLCAtMik7DQ0KDQ0KICBzcGFjZSA9IGRTaW1wbGVT cGFjZUNyZWF0ZSgpOw0NCiAgZ3JvdW5kID0gZENyZWF0ZVBsYW5lIChzcGFj ZSwwLDAsMSwwKTsNDQoNDQogIGNvbnRhY3Rncm91cCA9IGRKb2ludEdyb3Vw Q3JlYXRlICgwKTsNDQoNDQogIC8vIGNyZWF0ZSBtYXNzIGZvciB0aGUgYm94 ZXMNDQogIGRNYXNzIG07DQ0KICBkTWFzc1NldEJveCAoJm0sMSxTSURFLFNJ REUsU0lERSk7DQ0KICBkTWFzc0FkanVzdCAoJm0sTUFTUyk7DQ0KDQ0KICAv LyBjcmVhdGUgYm9keSAxDQ0KICBib2R5WzBdID0gZEJvZHlDcmVhdGUgKHdv cmxkKTsNDQogIGRCb2R5U2V0TWFzcyAoYm9keVswXSwmbSk7DQ0KICBkQm9k eVNldFBvc2l0aW9uIChib2R5WzBdLDAsMCw4KTsNDQoNDQogIGJveFswXSA9 IGRDcmVhdGVCb3ggKHNwYWNlLDEsMSwxKTsNDQogIGRHZW9tU2V0Qm9keSAo Ym94WzBdLGJvZHlbMF0pOw0NCg0NCiAgLy8gY3JlYXRlIGJvZHkgMg0NCiAg Ym9keVsxXSA9IGRCb2R5Q3JlYXRlICh3b3JsZCk7DQ0KICBkQm9keVNldE1h c3MgKGJvZHlbMV0sJm0pOw0NCiAgZEJvZHlTZXRQb3NpdGlvbiAoYm9keVsx XSwwLjUsMCw3KTsNDQoNDQogIGJveFsxXSA9IGRDcmVhdGVCb3ggKHNwYWNl LDEsMSwxKTsNDQogIGRHZW9tU2V0Qm9keSAoYm94WzFdLGJvZHlbMV0pOw0N Cg0NCiAgLy8gY3JlYXRlIHNsaWRlcg0NCiAgc2xpZGVyID0gZEpvaW50Q3Jl YXRlU2xpZGVyICh3b3JsZCwwKTsNDQogIGRKb2ludEF0dGFjaCAoc2xpZGVy LGJvZHlbMF0sYm9keVsxXSk7DQ0KICBkSm9pbnRTZXRTbGlkZXJBeGlzIChz bGlkZXIsMSwwLDApOw0NCiAgZEpvaW50U2V0U2xpZGVyUGFyYW0gKHNsaWRl ciwgZFBhcmFtTG9TdG9wLCAtMS4wKTsNDQogIGRKb2ludFNldFNsaWRlclBh cmFtIChzbGlkZXIsIGRQYXJhbUhpU3RvcCwgMS4wKTsNDQoNDQogIC8vIHJ1 biBzaW11bGF0aW9uDQ0KICBkc1NpbXVsYXRpb25Mb29wIChhcmdjLGFyZ3Ys MzUyLDI4OCwmZm4pOw0NCg0NCiAgZFdvcmxkRGVzdHJveSAod29ybGQpOw0N CiAgcmV0dXJuIDA7DQ0KfQ0NCg== --1363170581-980581577-1036073289=:32303-- From ahamilton_01 at hotmail.com Thu Oct 31 15:29:02 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Thu Oct 31 15:29:02 2002 Subject: SV: [ODE] more physics Message-ID: >Costs in what way? It does say memory usage and how much of >the cpu per frame the physics system takes. What other costs >are there? I think Russ mean cost for licensing it for use in games. >Yes, seems like the objects sleep VERY quickly. After just a few >tries I manage to get it to sleep in a physicly impossible position. >(If the simulation had run for just a few ticks more the boxes >would have fallen over) but they quickly froze in place. Indeed, but in a game, if that means an a few extra stacks for the game designer, I think that's a fair trade. >Also is it just me or do the chain and hinge behave strangly? >If you continue to force it upwards it starts to wobble. Like >a snake or something. Maybe it's just me and thats how it >should behave. Both of the long chains do seem a bit elastic when you lift them up for a while. Also the hinge chains looks abit rubbery when it fall onto itself. Perhaps that's an artifact of this 'iterative' method. Al > >/Joakim E. - www.planestate.net >_______________________________________________ >ODE mailing list >ODE@q12.org >http://q12.org/mailman/listinfo/ode _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From coding at natew.com Thu Oct 31 20:42:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 20:42:02 2002 Subject: [ODE] Interesting thing... Message-ID: "MelBotWars is a real-time dynamics competition involving autonomous virtual robots that fight each other using rigidBody dynamics in Maya. The contestants get to build their own robots and add intelligence to them. They need to learn many things in order to make sure their robot survives. You get to learn all about physics and the rigidBody dynamics in Maya and have a lot of fun doing it!" http://www.melbotwars.com/index_lo.html -- Nate Waddoups Redmond WA USA http://www.natew.com From anselm at hook.org Thu Oct 31 21:09:01 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 31 21:09:01 2002 Subject: [ODE] msvc dlls? In-Reply-To: Message-ID: Just a little note, I updated my c# code to link against the latest ode and I noticed something missing in the dll support. Using msvc 7.0 I think that I have to have __dllexport... defined - but none of the methods in objects.h have SHAREDLIBEXPORT as a prefix. I suppose this isn't a problem under cygwin (I haven't checked) but it is maybe something missing in the latest ode lib. But I am a bit baffled about how I did it last time - I don't think I was using cygwin... maybe these define prefixes were removed? Anyway... Here's my copy - maybe it can be merged back in - or somebody can point out to me a better way to force export of all methods in msdev? http://p2pmap.org/cgi-bin/cvsweb.cgi/p2pmap/src/ode/include/ode/objects.h?rev=1.3&content-type=text/x-cvsweb-markup Also I noticed that there's an include of alloca.h - msdev doesn't have that. And I do actually add one new method to the ode library - a self handling collision callback so that I don't have to do callbacks in c#. Of course this can't really be generalized beyond specific users needs (such as mine) because there's no good concept of material property intersections. Otherwise I was able to pretty trivially build an ode.dll under msdev... - a From russ at q12.org Thu Oct 31 23:06:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 23:06:02 2002 Subject: [ODE] slider trouble In-Reply-To: References: Message-ID: <20021031221053.291c8cac.russ@q12.org> > I've noticed that when I connect two boxes with a slider, and set > stops on the slider so it can only move between +1 and -1, the > box-slider-box system spins off into infinity if I toss it into the > air. Without the limits, the system behaves just fine. this one took a while to figure out, but it's now fixed (joint.cpp updated in CVS, with a long comment explaining the problem). the problem was that the constraint forces being applied to a powered or limited slider joint resulted in a torque couple if the body centers of mass did not line up along the slider axis (as they do in all my slider tests!). that caused the joined bodies to build up angular velocity. slider joints between objects that weren't spinning freely (e.g. sitting on the ground) would not have been affected much by this problem. nate, can you verify the fix? russ. -- Russell Smith http://www.q12.org From russ at q12.org Thu Oct 31 23:49:01 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 23:49:01 2002 Subject: [ODE] slider trouble In-Reply-To: <20021031221053.291c8cac.russ@q12.org> References: <20021031221053.291c8cac.russ@q12.org> Message-ID: <20021031225314.6ad768b2.russ@q12.org> > this one took a while to figure out, but it's now fixed (joint.cpp > updated in CVS, with a long comment explaining the problem). oops ... got some signs incorrect ... checked in a new joint.cpp. -- Russell Smith http://www.q12.org From ps_yumemi at yahoo.com Tue Oct 1 08:32:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Tue Oct 1 08:32:01 2002 Subject: [ODE] access violation Message-ID: <20021001153138.35239.qmail@web40509.mail.yahoo.com> if you get an acces violation when you go into the space collide function what does that mean? does that mean i have an invalid geom? thanks __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ivan.bolcina at volja.net Tue Oct 1 11:28:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 1 11:28:02 2002 Subject: [ODE] Usage of triangle collider Message-ID: <001301c26978$37c95a90$0100a8c0@vectra> Can anybody give me an example how to use triangle collider. Currently I am using built-in collider on boxes. bye, ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021001/79a81740/attachment.htm From ivan.bolcina at volja.net Tue Oct 1 11:45:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 1 11:45:02 2002 Subject: [ODE] old posts to this forum Message-ID: <004201c2697a$80065360$0100a8c0@vectra> Hi, I downloaded archive of old posts to this forum. How do I import it into my email program(Outlook Express). If I cannot, where to can I import it. bye and thanx,ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021001/4eb21c56/attachment.htm From anselm at hook.org Tue Oct 1 12:38:02 2002 From: anselm at hook.org (Anselm Hook) Date: Tue Oct 1 12:38:02 2002 Subject: [ODE] old posts to this forum In-Reply-To: <004201c2697a$80065360$0100a8c0@vectra> Message-ID: > q12 archives in mbox format - any way to get them in outlook format? The archives are in mbox format (see pipermail faq). Programs such as Netscape handle this format. Outlook express can import some formats as well. I suggest using Netscape to import the q12 archives, then exporting out to some standard that Outlook can read in. Looking on the net I don't see anybody doing *exactly* what you want but here are a couple of links: http://lists.suse.com/archive/suse-kde/2002-May/0270.html http://www.progsoc.uts.edu.au/lists/slug/2001/May/msg00118.html - a What I would do is run a On Tue, 1 Oct 2002, Ivan Bolcina wrote: > Hi, I downloaded archive of old posts to this forum. How do I import > it into my email program(Outlook Express). If I cannot, where to can I > import it. > > bye and thanx,ivan > From erwin at vo.com Tue Oct 1 13:19:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:01 2002 Subject: [ODE] Tri-collider page on wiki References: <20021001153259.GA13869@nlin.net> Message-ID: <007501c26987$bf0f2f20$73fefea9@athlon> Hi, After several weeks (months?) of crunch time i finally have time to continue my planned changes to the Tricollider. The CVS version is indeed very old, and has problems we all know about. The version i posted to this list fixes some problems, but has several bugs, which is why i'm glad it didnt make it into CVS. The sphere collision function isnt accurate enough for large triangles. I'm going to rewrite the triangle-sphere collision function to be more robust in these cases. The box collision function computes a wrong penetration depth (not deep enough) in some cases, which i found out after the release. I've planned to fix these issues somewhere next week, but dont bet your lives on it. :-) Since ODE now implements a ccylinder-box collision function i'm considering implementing the triangle-ccylinder function along with some other modifications. Erwin ----- Original Message ----- From: To: "Cyrus Preuss" Cc: Sent: Tuesday, October 01, 2002 17:32 Subject: Re: [ODE] Tri-collider page on wiki > Hi Cyrus, > > > ... I (Norman) have managed to patch Erwin's changes for spheres into the > > current CVS version of tri-collider. Contact me for details on an interim > > patched tri-collider if you need accurate sphere->triangle-edge collision > > now; hopefully a new release of tri-collider will resolve all of the > > edge-related problems. ... > > This was several months ago, and I believe the current CVS version of > tri-collider fixes these problems. > > Hm, I just browsed online CVS and it seems that the changes are not yet > in CVS, but I may be mistaken. I am forwarding the e-mail to Erwin as > well. Erwin, did the Opcode 1.2 changes, barycentric coords for sphere-tri > collision, ever make it into CVS? > > Cyrus, the problem was that the old sphere-trimesh collision used a bbox > for the sphere to do the collision for a first rough-estimate of the > collision points, then from this potentially colliding checked each point > to see if it was a real collision between the triangle and the sphere. > This second-pass was inaccurate on the edges. To avoid "bumping" behavior > when spheres rolled over "seams" between adjacent (and e.g. coplanar) > polygons, the inaccurate edge collision was completely eliminated, under > the assumption that when the ball rolls off of the plane of one triangle, > it will roll onto the plane of the next triangle. This works for "concave" > type meshes without upwardly-jutting creases (e.g. ball is rolling on > the inside of a bowl), but fails for "convex" type meshes with upwardly- > jutting creases (e.g. ball rolling upwards then downwards along and over > the sharp edge of a wedge - in this case, edge contact is essential to > account for the convexity of the geometry). This two-pass routine was > then replaced by a one-pass routine using new routines in Opcode 1.2 which > accurately calculated sphere-triangle collision, including edge cases > (apparently using a barycentric coordinate approach). > > After discussing this with Erwin via private e-mail, he was kind enough > to send me some patched files to fix that one case. However, at that time, > the internal structures of the tri-collider were being rewritten, so there > was quite a bit of tedious hacking I had to do to get Erwin's new changes > working with the old tri-collider (though it does work). > > Erwin is continuing to make new progress on the tri-collider, so it > is probably not recommended to use my solution unless you need a working > sphere-trimesh collision *now*, and are willing to modify your code later > when the new version of tri-collider comes out. If you need it now, I'll > zip up my entire modified ODE source directory and send it to you, but > it is probabaly wiser to see if Erwin has updated the official source > yet rather than fiddling with my branched changes. > > BTW in case you're not already doing so, it may be a good idea to wrap your > interface to ODE within an abstract class of your own design, and only to > call ODE indirectly through your own abstract class, which means that changes > like updating the tri-collider are localized, and your application code > ideally wouldn't need to be touched if ODE gets updated. > > Cheers, > -Norman > > From erwin at vo.com Tue Oct 1 13:19:42 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:42 2002 Subject: [ODE] hierarchial spaces References: Message-ID: <007601c26987$c026b9a0$73fefea9@athlon> Catching up. IIRC its even worse than a lot of AABB tests for a large group. Its calling a LOT of specialized collision functions for a large group. As i reported earlier, i've written a library which fixes these issues. Most code has been written. I'm using it for our own apps now, but i want to fix several issues before i publically release it. And i need to fix the tricollider issues first. Erwin ----- Original Message ----- From: "David McClurg" To: Sent: Friday, September 27, 2002 03:24 Subject: [ODE] hierarchial spaces > currently, spaces don't treat geom groups any differently from other geoms. this has the following dis-advantages... > > - in a hash space, the geoms in a group don't get the same treatment as the geoms in the space. that means many more AABB tests for a large group. > - when a geom group is processed by the space, the near callback must decide whether to collide with the entire group or not at all. > > i'm using a group for all my static tri-lists so they do not self-intersect. this is different from the application suggested by the user guide (eg, a collection of geometry objects that are located together in space) but i still think it's a good use of groups. here is my recommended solution... > > - implement hash space testing in groups. perhaps flag it on a per-group level. maybe a space is really just a group! > > - as you traverse the tree of groups and geoms in dSpaceCollide(), issue the near callback at each node. that gives the caller the ability to filter out which geoms are passed to dCollide(). > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > > From erwin at vo.com Tue Oct 1 13:19:57 2002 From: erwin at vo.com (Erwin de Vries) Date: Tue Oct 1 13:19:57 2002 Subject: [ODE] Usage of triangle collider References: <001301c26978$37c95a90$0100a8c0@vectra> Message-ID: <007701c26987$c0db1580$73fefea9@athlon> You could try the test_trilist that goes with it? Or see the Wiki pages on info how to build the tricollider. Erwin ----- Original Message ----- From: "Ivan Bolcina" To: Sent: Tuesday, October 01, 2002 20:27 Subject: [ODE] Usage of triangle collider Can anybody give me an example how to use triangle collider. Currently I am using built-in collider on boxes. bye, ivan From dalwan01 at student.umu.se Wed Oct 2 04:28:02 2002 From: dalwan01 at student.umu.se (Daniel Wallin) Date: Wed Oct 2 04:28:02 2002 Subject: [ODE] Macros In-Reply-To: Message-ID: <5.1.0.14.0.20021002132136.02f8ae98@student.umu.se> At 15:54 2002-09-30 -0700, Marco Grubert wrote: >Well, if standard macros are evil then using macros to redefine keywords is >evil-squared. I was wondering why my code would break whenever I included >dxTrilist.h : > >// MSVC fixup. >#define for if (false); else for > >I assume that the author's intent is to limit the variable scope (MSVC is >not using the current C++ standard of restring for-variables to the scope of >the loop). Please, please don't do this. The portable way is to not declare >variables in the for header but before it. > >... That is very good use of macros.. The way MSVC6.0 handles variable scope's in for-loop's is a very frustrating bug, so if you absolutely have to use it, why not fix the problem with the macro? I can't see how this macro could cause your code to break, unless you are doing something like: for (int i = 0;;) { } int b = i; in which case the fault is all yours.. From sak at cd.chalmers.se Wed Oct 2 04:59:02 2002 From: sak at cd.chalmers.se (Sten Anders Karlsson) Date: Wed Oct 2 04:59:02 2002 Subject: [ODE] Confused on the results from dJointGetFeedback on a slider. Message-ID: Hello! I use a slider that has dParamVel = 0 and dParamFMax = to make the joint not moving. I now use the dJointGetFeedback to see what forces the slider applies to the joined bodies. The odd thing is that I get different results from the dJointGetFeedback depending what axis orientation I have on the slider. This would be OK if the slider allowed movement, but it does not move. I would instead expect that a non moving joint would affect the joined bodies with forces the same way as a fixed joint. Or, now as I write this I come think of a possibility, is it maybe so that a non moving slider still has a degree of freedom, like a hinge, the bodies can rotate around the slider axis? And just an other question - that unfortunately reveals my lacking geometry abilities - but wouldn't it be correct to use the x,y,z forces from the feedback struct and just multiply (dot product) the with the slider axis vector x,y,z to get the forces that acts in the sliders axis direction, asuming the slider axis is pointing in the direction from body1 to body2 (all torques are perpendicular to the slider)? Or, what I realy want to do is to construct a spring-damper and start of by finding out what the initial load is on the spring, before I allow anything to move around, so that I can preload the spring with a good starting value. Any feedback (pun intnd.) is appreciated. -- Anders From grubertm at hotmail.com Wed Oct 2 13:06:02 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Wed Oct 2 13:06:02 2002 Subject: [ODE] Macros References: <5.1.0.14.0.20021002132136.02f8ae98@student.umu.se> Message-ID: Hmm- I though this is self-evident. Maybe not, so here's a little philosophical rant - sorry to bother the community with that. > >// MSVC fixup. > >#define for if (false); else for > That is very good use of macros.. The way MSVC6.0 handles variable scope's in > for-loop's is a very frustrating bug, This used to be the standard behavior of MSVC and GCC prior to ISO standardization- Microsofts reason for not updating this to be more compliant of course is to avoid breaking all your old code. Now I have tons of legacy code which works perfectly fine - unless I include the mentioned header file. So the exact same code works in one module (not using ODE) and fails in the next because the header changes semantics. You _can_ change the meaning of a keyword- the question is _should_ you (even if it's morally okay, or it means you can stick a badge "ISO-compliant" on your shirt)? As long as you are coding on your own this is not an issue and you can redefine your C to look like Pascal - but when trying to do a cross-platform library it's best not to mess with the user's configuration. I have run into a couple of other quirks so now I am compiling tricollider as a static library again with its own setting instead of as part of my project- even though I still think that using a "common grounds" approach would be more suitable. Thanks, Marco Grubert From ps_yumemi at yahoo.com Wed Oct 2 19:06:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Wed Oct 2 19:06:02 2002 Subject: [ODE] access violation Message-ID: <20021003020525.81009.qmail@web40503.mail.yahoo.com> hello, This is about the access violation error i got when I passed by the dspacecollide function what should i do? I got a reply that said it might have been because I didn't build in debug mode but the problem is, I did compile it in debug mode coz i was debugging my program at that moment. i'm worried that it might be the fact that i used classes and all my geomIDs are part of those classes. When I press f10 or f11 while debugging, it gives me an error and it hasn't even reached my int dCollide function yet. I am completely at a loss and I need to finish this soon. pia __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ps_yumemi at yahoo.com Fri Oct 4 02:13:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Fri Oct 4 02:13:02 2002 Subject: [ODE] another access violation Message-ID: <20021004091241.98845.qmail@web40511.mail.yahoo.com> i have an additional question. i created a car with 4 wheels. they all go through the same functions and they all get geomIDs and BodyIDs but the last wheel has a problem with geom functions like dGetGeomPosition or dSetGeomPosition. The rest are fine. It works ok with dGetBodyPosition. why is that? what can I do? Is this a reason for my spacecollide function having an error? I already tried running a simulation without it and it worked. so the problem is centered there. what should I do now? please help. thanks pia __________________________________________________ Do you Yahoo!? New DSL Internet Access from SBC & Yahoo! http://sbc.yahoo.com From ivan.bolcina at volja.net Fri Oct 4 08:36:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 4 08:36:02 2002 Subject: [ODE] coldet Message-ID: <001901c26bbb$9c7d7800$0100a8c0@vectra> Hello. Has anybody used coldet with ode? How to do it? bye,ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021004/1bf609da/attachment.htm From slipch at gsc-game.kiev.ua Fri Oct 4 08:55:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Fri Oct 4 08:55:02 2002 Subject: [ODE] coldet In-Reply-To: <001901c26bbb$9c7d7800$0100a8c0@vectra> References: <001901c26bbb$9c7d7800$0100a8c0@vectra> Message-ID: <7431855205.20021004185655@gsc-game.kiev.ua> Hello Ivan, Friday, October 4, 2002, 6:34:57 PM, you wrote: IB> Hello. IB> Has anybody used coldet with ode? How to do it? IB> bye,ivan I am sorry for my ignorance. What is it? -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From ivan.bolcina at volja.net Fri Oct 4 10:13:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 4 10:13:02 2002 Subject: [ODE] coldet and ode Message-ID: <001801c26bc9$18b2ba40$0100a8c0@vectra> Hi slipch, colder its collision detection library http://photoneffect.com/coldet/. People say its very fast. I use it in my game "solar trader" at http://users.volja.net/ibolcina/ , look under "solar trader" best regards to you too, ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021004/7ab40bbc/attachment.htm From c99ang at cs.umu.se Fri Oct 4 10:48:01 2002 From: c99ang at cs.umu.se (Arvid Norberg) Date: Fri Oct 4 10:48:01 2002 Subject: [ODE] Macros References: Message-ID: <004b01c26bce$01af35d0$0300a8c0@hydri2000> ----- Original Message ----- From: "Marco Grubert" To: Sent: Tuesday, October 01, 2002 12:54 AM Subject: [ODE] Macros > [...] > The portable way is to not declare > variables in the for header but before it. > [...] If you would have written your code "the portable way" you wouldn't have this problem, right? My suggestion is that you fixes your code to support the standard. IMHO ODE should not be written poorly just to be backwards compatible with non-standard code. --- Arvid Norberg From p.terdiman at wanadoo.fr Fri Oct 4 12:08:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 12:08:02 2002 Subject: [ODE] coldet and ode References: <001801c26bc9$18b2ba40$0100a8c0@vectra> Message-ID: <026f01c26bd8$fb38b220$0e00000a@pierre> Last time I looked at it, - ColDet only returned a single contact (i.e. it only provided RAPID's "first contact" mode) - It was way slower than Opcode, and used a lot of ram. Of course I'm biased towards Opcode, and feel free to test and see for yourself. But unless I missed something, current deal (ODE + Opcode) looks better to me. Pierre ----- Original Message ----- From: Ivan Bolcina To: ode at q12.org Sent: Friday, October 04, 2002 7:10 PM Subject: [ODE] coldet and ode Hi slipch, colder its collision detection library http://photoneffect.com/coldet/. People say its very fast. I use it in my game "solar trader" at http://users.volja.net/ibolcina/ , look under "solar trader" best regards to you too, ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021004/d958e984/attachment.htm From orp at uni.de Fri Oct 4 13:42:01 2002 From: orp at uni.de (pro) Date: Fri Oct 4 13:42:01 2002 Subject: [ODE] coldet Message-ID: <000701c26be6$ba6d98b0$7334188d@brainpool> i use opcode or somtimes coldet for my car simulation (http://www.tu-ilmenau.de/~atzek/), and coldet (i've modified the source, now it gives all collisionpoints instead of only the first) and it is faster than opcode but my collisiondetection is only a ugly hack and doesen't work at all :( From pox at planetquake.com Fri Oct 4 13:47:03 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 13:47:03 2002 Subject: [ODE] coldet and ode In-Reply-To: <026f01c26bd8$fb38b220$0e00000a@pierre> Message-ID: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> This is slightly OT, but... I'd personally give Opcode a shot if it was more portable. (There doesn't seem to be an ANSI C/C++ target in the source). Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff in the mix) whereas ColDet compiles on just about anything, without modification. I've yet to try ColDet with ODE, but was planning on looking into the possibility in the future. A trimesh collider built into ODE itself would probably make a lot of people happy, but I'm not even sure if that's in Russ' long term plans for the library (it's obviously a hot topic on this list though). Frank. -- On Friday, October 4, 2002, at 03:05 PM, Pierre Terdiman wrote: > Last time I looked at it, > - ColDet only returned a single contact (i.e. it only provided RAPID's > "first contact" mode) > - It was way slower than Opcode, and used a lot of ram. > ? > Of course I'm biased towards Opcode, and feel free to test and see for > yourself. But unless I missed something, current deal (ODE + Opcode) > looks better to me. > ? > Pierre > > ----- Original Message ----- > From: Ivan Bolcina > To: ode at q12.org > Sent: Friday, October 04, 2002 7:10 PM > Subject: [ODE] coldet and ode > > Hi slipch, > colder its collision detection library > http://photoneffect.com/coldet/. People say its very fast. I use it in > my game "solar trader" at http://users.volja.net/ibolcina/?, look > under "solar trader" > ? > best regards to you too, > ivan From coding at natew.com Fri Oct 4 13:56:01 2002 From: coding at natew.com (Nate W) Date: Fri Oct 4 13:56:01 2002 Subject: [ODE] coldet and ode In-Reply-To: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> Message-ID: On Fri, 4 Oct 2002, Frank C. wrote: > A trimesh collider built into ODE itself would probably make a lot of > people happy, but I'm not even sure if that's in Russ' long term plans > for the library (it's obviously a hot topic on this list though). See 1.6.3 of the user guide. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From p.terdiman at wanadoo.fr Fri Oct 4 14:03:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 14:03:02 2002 Subject: [ODE] coldet References: <000701c26be6$ba6d98b0$7334188d@brainpool> Message-ID: <032801c26be9$05c2ce00$0e00000a@pierre> > i use opcode or somtimes coldet for my car simulation > (http://www.tu-ilmenau.de/~atzek/), and coldet (i've modified the source, > now it gives all collisionpoints instead of only the first) and it is faster > than opcode I'd be interested in a demo showing that ColDet is faster. I can think of specific cases where it can happen since ColDet uses OBBs (IIRC), but otherwise that's a surprising statement. Anyone else ? Pierre From p.terdiman at wanadoo.fr Fri Oct 4 14:24:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 4 14:24:02 2002 Subject: [ODE] coldet and ode References: <3D669AD1-D7DA-11D6-8665-0003933EA538@planetquake.com> Message-ID: <034201c26beb$f2a54840$0e00000a@pierre> > I'd personally give Opcode a shot if it was more portable. (There > doesn't seem to be an ANSI C/C++ target in the source). Well, various people ported it to Linux and made it "more portable". On top of my head : in the F4 engine, in The Nebula Device, in Crystal Space, in ... ODE... Some more people sent me tar.gz files with makefiles and required changes to build Opcode "elsewhere". I don't know if they work well since I have a Windows box, period, but I can upload such an archive if ... Hell, let's just do it, wait 5 mn. ... Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm Words from the author : "This version is indeed different than those contained in F4 or ODE because it is only a direct linux port of version 1.2 of OPCODE, it contains nothing more, nothing less so a user does not have to deal with F4 or ODE. It is also accompanied with a so called configure script which automatically creates a makefile for the user's specific platform. It's just a question of running the configure script and automake and OPCODE is build for your platform (e.g. linux, solaris, irix etc). This is the correct way on unix flavoured oss to spread software." Questions about it ? Ask the author, please. (his mail is in the tar file) > Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff > in the mix) whereas ColDet compiles on just about anything, without > modification. Note that there's a #define to discard the ASM, and the only relevant VC++ stuff, as far as Opcode is concerned, is "__forceinline". Pierre From orp at uni.de Fri Oct 4 16:15:02 2002 From: orp at uni.de (pro) Date: Fri Oct 4 16:15:02 2002 Subject: [ODE] coldet Message-ID: <000c01c26bfc$21b42560$7334188d@brainpool> > I'd be interested in a demo showing that ColDet is faster. have a look at this http://www.tu-ilmenau.de/~atzek/kamikaze.zip there are two kamikazeversions: one for coldet and one for opcode. if you look at the colldet (collisiondetection) times in the right top corner of the screen you see, that coldet is always faster. btw: how can i reply to a thread of this mailinglist ? From pox at planetquake.com Fri Oct 4 17:05:02 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 17:05:02 2002 Subject: [ODE] coldet and ode In-Reply-To: Message-ID: I guess I'm sure now :) Frank. -- On Friday, October 4, 2002, at 09:03 AM, Nate W wrote: > On Fri, 4 Oct 2002, Frank C. wrote: > >> A trimesh collider built into ODE itself would probably make a lot of >> people happy, but I'm not even sure if that's in Russ' long term plans >> for the library (it's obviously a hot topic on this list though). > > See 1.6.3 of the user guide. :-) > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > From pox at planetquake.com Fri Oct 4 17:18:01 2002 From: pox at planetquake.com (Frank C.) Date: Fri Oct 4 17:18:01 2002 Subject: [ODE] coldet and ode In-Reply-To: <034201c26beb$f2a54840$0e00000a@pierre> Message-ID: Thanks pointing that out. Still a bit of work to get it going on my Mac, but I'm guessing a unix-style OSX build won't be much of a stretch (Classic/Carbon compatibility is another beast...) Frank. -- On Friday, October 4, 2002, at 05:21 PM, Pierre Terdiman wrote: >> I'd personally give Opcode a shot if it was more portable. (There >> doesn't seem to be an ANSI C/C++ target in the source). > > Well, various people ported it to Linux and made it "more portable". > On top > of my head : in the F4 engine, in The Nebula Device, in Crystal Space, > in > ... ODE... Some more people sent me tar.gz files with makefiles and > required > changes to build Opcode "elsewhere". > > I don't know if they work well since I have a Windows box, period, but > I can > upload such an archive if ... Hell, let's just do it, wait 5 mn. > > ... > > Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm > > Words from the author : > > "This version is indeed different than those contained in F4 or ODE > because it is only a direct linux port of version 1.2 of OPCODE, it > contains nothing more, nothing less so a user does not have to deal > with > F4 or ODE. It is also accompanied with a so called configure script > which automatically creates a makefile for the user's specific > platform. > It's just a question of running the configure script and automake and > OPCODE is build for your platform (e.g. linux, solaris, irix etc). This > is the correct way on unix flavoured oss to spread software." > > Questions about it ? Ask the author, please. (his mail is in the tar > file) > >> Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff >> in the mix) whereas ColDet compiles on just about anything, without >> modification. > > Note that there's a #define to discard the ASM, and the only relevant > VC++ > stuff, as far as Opcode is concerned, is "__forceinline". > > Pierre > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > From bruce at cubik.org Fri Oct 4 17:35:02 2002 From: bruce at cubik.org (Bruce Mitchener) Date: Fri Oct 4 17:35:02 2002 Subject: [ODE] coldet and ode References: Message-ID: <3D9E34C9.60103@cubik.org> Frank, Frank C. wrote: > Thanks pointing that out. Still a bit of work to get it going on my Mac, > but I'm guessing a unix-style OSX build won't be much of a stretch > (Classic/Carbon compatibility is another beast...) With the Nebula Device, we're still back on Opcode 1.1, but should move to 1.2 soon (within a couple of months). The work to get Opcode 1.1 running on OS X once it was already running on Linux was pretty straight forward, largely a matter of handling some missing math functions. If you'd like to discuss that further, feel free to drop me an email off-list. Cheers, - Bruce From p.terdiman at wanadoo.fr Sat Oct 5 00:33:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Sat Oct 5 00:33:02 2002 Subject: [ODE] coldet References: <000c01c26bfc$21b42560$7334188d@brainpool> Message-ID: <005601c26c41$1a312e60$0e00000a@pierre> > have a look at this http://www.tu-ilmenau.de/~atzek/kamikaze.zip > there are two kamikazeversions: one for coldet and one for opcode. > if you look at the colldet (collisiondetection) times in the right top > corner of the screen you see, that coldet is always faster. Interesting. Difficult to tell if it's normal or not without more info (especially since you modified ColDet to report all contacts). Maybe the OBBs are just better in such cases. Could you mail me off-list a code snippet showing the way you're using Opcode ? Maybe there's something weird there. (I remember some people reporting the same conclusion : after a while I found they were building the Opcode trees each frame). BTW, are you using mesh-mesh CD or sphere-mesh ? If you're using mesh-mesh, did you try RAPID ? If ColDet runs faster thanks to OBBs, then RAPID might run even faster (IIRC it was faster than ColDet overall. But at this point I may want to test those libs again :) Pierre From ivan.bolcina at volja.net Sat Oct 5 02:33:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Sat Oct 5 02:33:02 2002 Subject: [ODE] coldet Message-ID: <003201c26c52$2b3b7470$0100a8c0@vectra> Hi. I looks to me that opcode has more support and is used by more programmers, and coldet is at halt. I guess I will switch to opcode. I just wish ode would have it integerated in it, since i spent half of last night building ode with it, and no sucess. There are also several documents how to do it, which one is right?(Address please?) I also don't understand why there is no support for mesh-mesh collision in ode port of opcode. Whats so problematic about depth penetration? Can't be an aproximation be enought.Are there any plans to do it. I am sorry for all those questions, but I am still new to wonderful world of ode and friends. bye,ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021005/a4a26318/attachment.htm From bongard at ifi.unizh.ch Sat Oct 5 06:24:01 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Sat Oct 5 06:24:01 2002 Subject: [ODE] Dynamically changing the rendering... Message-ID: Hi, Can someone tell me how I can dynamically suppress OpenGL rendering, for example by supplying "-null" at the command prompt? Thanks, Josh -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From benny at kramekweb.com Sat Oct 5 08:38:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Sat Oct 5 08:38:02 2002 Subject: [ODE] Dynamically changing the rendering... References: Message-ID: <3D9F0360.2060009@kramekweb.com> Joshua Bongard wrote: > Hi, > Can someone tell me how I can dynamically suppress OpenGL rendering, for > example by supplying "-null" at the command prompt? I don't understand the question. Are you talking about the drawstuff companion for ode? From Dominique at SavageSoftware.com.au Sat Oct 5 08:54:01 2002 From: Dominique at SavageSoftware.com.au (Dominique Louis) Date: Sat Oct 5 08:54:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... Message-ID: <3D9F0B29.10207@SavageSoftware.com.au> Hi All, Where would be a good place to start when investigating how to implement collision between a car and a skeletally animated model, probably in MilkShake 3D format. Thanks, Dominique. -- http://www.DelphiGamer.com := for all your Object Pascal game development needs; http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME := Home of JEDI-SDL; Cross-platform game development with Pascal, has never been easier. From bongard at ifi.unizh.ch Sat Oct 5 09:39:02 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Sat Oct 5 09:39:02 2002 Subject: [ODE] Dynamically changing the rendering... In-Reply-To: <3D9F0360.2060009@kramekweb.com> Message-ID: Yes; can I bracket the drawstuff in an if-else so that it doesn't always open an OpenGL window? On Sat, 5 Oct 2002, Benny Kramek wrote: > Joshua Bongard wrote: > > Hi, > > Can someone tell me how I can dynamically suppress OpenGL rendering, for > > example by supplying "-null" at the command prompt? > > I don't understand the question. Are you talking about the drawstuff > companion for ode? > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From erwin at vo.com Sat Oct 5 12:14:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Sat Oct 5 12:14:02 2002 Subject: [ODE] Macros References: Message-ID: <00dc01c26ca3$4f3026e0$73fefea9@athlon> Why are you including dxTriList.h in the first place?? The idea is that you include dTriList.h in your external code. Erwin ----- Original Message ----- From: "Marco Grubert" To: Sent: Tuesday, October 01, 2002 00:54 Subject: [ODE] Macros > Well, if standard macros are evil then using macros to redefine keywords is > evil-squared. I was wondering why my code would break whenever I included > dxTrilist.h : > > // MSVC fixup. > #define for if (false); else for > > I assume that the author's intent is to limit the variable scope (MSVC is > not using the current C++ standard of restring for-variables to the scope of > the loop). Please, please don't do this. The portable way is to not declare > variables in the for header but before it. > > BTW the CVS tri-collider revision is outdated (06/24/02) > > Thank you, > Marco Grubert <- exhausted after trying to get ODE with tricollider to > work again > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > > From anselm at hook.org Sat Oct 5 13:03:01 2002 From: anselm at hook.org (Anselm Hook) Date: Sat Oct 5 13:03:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... In-Reply-To: <3D9F0B29.10207@SavageSoftware.com.au> Message-ID: Hi Dominique, One way to add collision information to a character is to do it by hand; to write actual code that manufactures hulls, joints and bodies. The position of the body will drive the position of the bones in your character and that in turn will presumably drive the rendering of the skin. (Your challenge is mostly just describing a good data model. Once you have that ODE should easily be able to do the rest.) It can however be very time consuming and error prone to attempt to describe any system of even reasonable complexity using source code because the iteration time is so slow and there is no visual feedback to help correct errors in objects placement. Consider that you will have at least 13 joints and 13 bodies and 13 collision hulls - each of these objects has several parameters. These parameters all interact and the sum of the system can be extraordinarily complex. Finding islands of stability with all of these knobs and dials that you can turn at random can be pretty tiring... change any cosmological constant and your entire system explodes in an instant. Dynamics libraries are mostly unusable for scenes of any complexity without some kind of help here. A better way is to use a modelling package. If you have a complex geometry that you are editing in a modelling package - you may want to add specially tagged cylinders, boxes or spheres to your skeleton in that environment. At export time extract those details and pipe them to your collision handler. This is probably less code than the above and is better. Alternatively you could perhaps synthesize reasonable collision hulls from your skeletal data such as assuming a cylinder of certain radius given bone length - or by doing a coarse bounding check on each group of bone associated vertices and creating a collision hull dynamically. BTW You mean Milkshape 3d right? You'll need to specify bodies and joint constraints as well. If you were using a commercial physics library such as Havok then they have special extensions to 3DSMAX and other tools to allow you to visually specify all of these kinds of details. Unfortunately nothing like that exists yet in the public domain (although likely Blender will have such features soon). Right now you have to invent your own scheme or actually describe all of the joints, bodies and collision surfaces completely by hand - which can be extraordinarily tedious and error prone. Depending on your budget I'd recommend spending some time devising a data driven model that modellers could use to design not only the visual form but also the underlying function. You may even be able to use something like havok and 3dsmax to generate your data model but then actually drive the system with ODE. This would be an amusing hack since your runtime could remain open source. This guy did pretty good - probably doing it by hand - so for a single known quantity it may not be that bad: http://taat.fi/taat/porrasturvat/ - a On Sat, 5 Oct 2002, Dominique Louis wrote: > Hi All, > Where would be a good place to start when investigating how to > implement collision between a car and a skeletally animated model, > probably in MilkShake 3D format. > > Thanks, > > > Dominique. > -- > http://www.DelphiGamer.com := for all your Object Pascal game > development needs; > http://www.delphi-jedi.org/Jedi:TEAM_SDL_HOME := Home of JEDI-SDL; > Cross-platform game development with Pascal, has never been easier. > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > From ngbinh at glassegg.com Sat Oct 5 20:26:03 2002 From: ngbinh at glassegg.com (Nguyen Binh) Date: Sat Oct 5 20:26:03 2002 Subject: [ODE] coldet In-Reply-To: <003201c26c52$2b3b7470$0100a8c0@vectra> References: <003201c26c52$2b3b7470$0100a8c0@vectra> Message-ID: <13557354421.20021006101234@glassegg.com> I had tried many collision detect package like RAPID, Coldet , Opcode (1.1). IMHO , Opcode is faster overall and it's well-designed . My only problem with Opcode is Pierre write code in 1600x1200 screen. :-) . -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From martin at metahuman.org Sun Oct 6 20:16:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Sun Oct 6 20:16:02 2002 Subject: [ODE] Dynamically changing the rendering... References: Message-ID: <3DA0FC35.A5943B60@metahuman.org> Hey Josh, Good to see you here, I just got back from IROS in Lausanne. The OpenGL library, "drawstuff," is separate from the physics library, "ode." When using drawstuff, you call dStepWorld() from your own function, called simLoop() in the tests. simLoop() is called automatically by drawstuff every frame. When you don't use drawstuff, you just call dStepWorld() yourself in a loop. It would be easy to put these into a single executable, although I use two different executables personally. Check out the source code to the examples for more details. - Martin Joshua Bongard wrote: > > Yes; can I bracket the drawstuff in an if-else so that it doesn't always > open an OpenGL window? > > On Sat, 5 Oct 2002, Benny Kramek wrote: > > > Joshua Bongard wrote: > > > Hi, > > > Can someone tell me how I can dynamically suppress OpenGL rendering, for > > > example by supplying "-null" at the command prompt? > > > > I don't understand the question. Are you talking about the drawstuff > > companion for ode? From slipch at gsc-game.kiev.ua Mon Oct 7 01:47:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Mon Oct 7 01:47:02 2002 Subject: [ODE] coldet and ode In-Reply-To: <001801c26bc9$18b2ba40$0100a8c0@vectra> References: <001801c26bc9$18b2ba40$0100a8c0@vectra> Message-ID: <485919321.20021007114859@gsc-game.kiev.ua> Hello Ivan, Friday, October 4, 2002, 8:10:11 PM, you wrote: IB> Hi slipch, IB> colder its collision detection library http://photoneffect.com/coldet/. People say its very fast. I use it in my game "solar trader" at http://users.volja.net/ibolcina/ , look under "solar trader" It is very interesting. I'll try to use it. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From slipch at gsc-game.kiev.ua Mon Oct 7 02:00:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Mon Oct 7 02:00:02 2002 Subject: [ODE] CCylinder orientation Message-ID: <256729045.20021007120229@gsc-game.kiev.ua> Hello ODE, How does CCylinder oriented? When I look at collision functions it seems cylinder axis is along axis Z. But when it created it is along OY. I fail to find where the orientation changed. I created cylinder class and with cylinder axis along OY. When I replace CCylinder with Cylinder in my model everything works right. May someone explain how can it happen? -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From thubba at gmx.net Mon Oct 7 03:04:02 2002 From: thubba at gmx.net (Michael Scharvogel) Date: Mon Oct 7 03:04:02 2002 Subject: [ODE] Hinge problem Message-ID: <009301c26de8$a5f2fac0$c36abb84@tig> hi folks... I build up a small test robot. As a matter of fact i am far from that and still trying to build the robot model. Like with an ant the legs shall be segmented. For a first try I have six legs but only two hinges per leg. The first part of each leg is connected to the body and its hinge can move between -45 and 45 degrees (yes I am using rad for the ode stuff :-) The next part of each leg can move up and down. The corresponding hinge is limited by 0 degree as low stop and 70 degree as high stop. I build the whole thing up at a hight of 2 and let it drop down on the floor. It's working just fine. But after lying on the floor for a short while, my bug seems to get bored and stands up... That would be just fine if only I had told it to do so... It seems to me, that the up / down hinge try to achiev their hi limit position... But why ???? Any comments on that ? cya&bfn, mike. From benny at kramekweb.com Mon Oct 7 07:44:01 2002 From: benny at kramekweb.com (Benny Kramek) Date: Mon Oct 7 07:44:01 2002 Subject: [ODE] Hinge problem References: <009301c26de8$a5f2fac0$c36abb84@tig> Message-ID: <3DA1A78C.10808@kramekweb.com> You probably know this already, but when you anchor the joint, then that relative orientation of the bodies is considered 0. Michael Scharvogel wrote: > hi folks... > > I build up a small test robot. As a matter of fact i am far from that and > still trying to build the robot model. Like with an ant the legs shall be > segmented. For a first try I have six legs but only two hinges per leg. > The first part of each leg is connected to the body and its hinge can move > between -45 and 45 degrees (yes I am using rad for the ode stuff :-) > > The next part of each leg can move up and down. The corresponding hinge is > limited by 0 degree as low stop and 70 degree as high stop. > I build the whole thing up at a hight of 2 and let it drop down on the > floor. > It's working just fine. But after lying on the floor for a short while, my > bug seems to get bored and stands up... > That would be just fine if only I had told it to do so... > It seems to me, that the up / down hinge try to achiev their hi limit > position... > But why ???? > > Any comments on that ? > > cya&bfn, mike. > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > > From ivan.bolcina at volja.net Mon Oct 7 14:36:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Mon Oct 7 14:36:02 2002 Subject: [ODE] opcode Message-ID: <002401c26e49$6ef9fc60$0100a8c0@vectra> Pierre, I switched from coldet to opcode, and you were right, it is faster, specially, if I am colliding two complex objects. Well, thanx for a nice library. Any news about "opcode - ode - triangle collider - mesh to mesh" stuff? Any plans? What are alternatives? bye,ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021007/94d6a34b/attachment.htm From p.terdiman at wanadoo.fr Mon Oct 7 19:22:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 7 19:22:01 2002 Subject: [ODE] opcode References: <002401c26e49$6ef9fc60$0100a8c0@vectra> Message-ID: <048501c26e71$305f31a0$0e00000a@pierre> 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? 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 -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021007/45f99c9b/attachment.htm From p.terdiman at wanadoo.fr Mon Oct 7 19:23:43 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 7 19:23:43 2002 Subject: [ODE] coldet References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> Message-ID: <048901c26e71$31d81600$0e00000a@pierre> >My only problem with Opcode is Pierre write >code in 1600x1200 screen. :-) . I plead guilty. From grubertm at hotmail.com Mon Oct 7 20:22:01 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Mon Oct 7 20:22:01 2002 Subject: [ODE] Inertia & tumbling objects Message-ID: Hello, maybe someone can explain why the following thing happens: I create a body which is slightly rotated (1 degree around yaw/z axis) and set it's inertia tensor: dm.setBox( fMass/(x*y*z), x, y,z ); then apply a constant torque of 5000 units around the x-axis. after a few seconds of simulated time the box starts flipping around and a few more seconds later it comes to a complete stop. This happens when x,y,z are set to 40,20,10 (or similar). If I make the cube's edges equal, or set the initial orientation to 0 degrees the cube keeps on spinning indefinitely. So my questions are: why does the rotation suddenly stop? shouldn't this rotation lead to a rotation about a stable axis? Regards, Marco Grubert From slipch at gsc-game.kiev.ua Tue Oct 8 00:45:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Tue Oct 8 00:45:02 2002 Subject: [ODE] coldet In-Reply-To: <13557354421.20021006101234@glassegg.com> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> Message-ID: <1612357489.20021008104703@gsc-game.kiev.ua> Hello Nguyen, Sunday, October 6, 2002, 6:12:34 AM, you wrote: NB> I had tried many collision detect package like RAPID, Coldet , NB> Opcode (1.1). IMHO , Opcode is faster overall and it's NB> well-designed . My only problem with Opcode is Pierre write I just look through coldet site. Do I understand right - it can detect contact points (and may be contact normals)? If it can then it is not like Opcode. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From ngbinh at glassegg.com Tue Oct 8 05:05:03 2002 From: ngbinh at glassegg.com (Nguyen Binh) Date: Tue Oct 8 05:05:03 2002 Subject: [ODE] coldet In-Reply-To: <1612357489.20021008104703@gsc-game.kiev.ua> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> <1612357489.20021008104703@gsc-game.kiev.ua> Message-ID: <17328684015.20021008184833@glassegg.com> s> I just look through coldet site. s> Do I understand right - it can detect contact points (and may be s> contact normals)? s> If it can then it is not like Opcode. Yes, sure Coldet can detect contact points (contacts normal is another case, but I think you can have normals from points on mesh) Then how is Opcode and coldet different? Sorry , I can't catch you in this... -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From slipch at gsc-game.kiev.ua Tue Oct 8 05:47:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Tue Oct 8 05:47:02 2002 Subject: [ODE] coldet In-Reply-To: <10020202920.20021008154429@gsc-game.kiev.ua> References: <003201c26c52$2b3b7470$0100a8c0@vectra> <13557354421.20021006101234@glassegg.com> <1612357489.20021008104703@gsc-game.kiev.ua> <17328684015.20021008184833@glassegg.com> <10020202920.20021008154429@gsc-game.kiev.ua> Message-ID: <11220506446.20021008154932@gsc-game.kiev.ua> Hello Nguyen, Tuesday, October 8, 2002, 2:48:33 PM, you wrote: NB> Yes, sure Coldet can detect contact points (contacts normal is NB> another case, but I think you can have normals from points on mesh) NB> Then how is Opcode and coldet different? Sorry , I can't catch you NB> in this... I am sorry. I rather new in it and do not know Opcode properly. I decided that it can only be used to find intersecting triangles not contact points. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From slipch at gsc-game.kiev.ua Tue Oct 8 05:54:01 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Tue Oct 8 05:54:01 2002 Subject: [ODE] CCylinder Message-ID: <4520922044.20021008155628@gsc-game.kiev.ua> Hello ODE, Can some one tell me along which axis CCylinder aligned when created axis-Z or axis-Y? -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From p.terdiman at wanadoo.fr Tue Oct 8 06:10:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Tue Oct 8 06:10:02 2002 Subject: [ODE] coldet References: <003201c26c52$2b3b7470$0100a8c0@vectra><13557354421.20021006101234@glassegg.com><1612357489.20021008104703@gsc-game.kiev.ua><17328684015.20021008184833@glassegg.com><10020202920.20021008154429@gsc-game.kiev.ua> <11220506446.20021008154932@gsc-game.kiev.ua> Message-ID: <015801c26ecb$a239ab20$0e00000a@pierre> > NB> Yes, sure Coldet can detect contact points (contacts normal is > NB> another case, but I think you can have normals from points on mesh) > > NB> Then how is Opcode and coldet different? Sorry , I can't catch you > NB> in this... > > I am sorry. I rather new in it and do not know Opcode properly. > I decided that it can only be used to find intersecting triangles > not contact points. And you would be right : I just report intersecting triangles indeed. But (I think) the point is, slapping a dedicated triangle-triangle routine on returned pairs is probably best done in the client code, since many apps will probably need different ways to drive their collision response. That's what ColDet does, using two different triangle-triangle overlap codes, depending on the situation. The fast one is the standard routine from Tomas M?ller. That's also what I'm using. The slow one (that computes a collision point) is named "MyTriTri.c" in ColDet. It would be unfortunate to use it in the generic case since it's slower. But you can grab it and use it as well on Opcode's returned pairs, maybe (modulo license troubles). Anyway I'm not sure it's really that useful. Returning a single collision point is dubious, and that's not even the problem - the problem is the penetration depth, at least for ODE. [Now, right, 100% Baraff-like simulators don't need this.] Well, various libs, various strategies, see for your particular needs. Pierre From I.Munro at herts.ac.uk Tue Oct 8 06:31:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Tue Oct 8 06:31:02 2002 Subject: [ODE] CCylinder Message-ID: > Can some one tell me along which axis CCylinder aligned when > created axis-Z or axis-Y? z axis. From orp at uni.de Tue Oct 8 06:42:02 2002 From: orp at uni.de (pro) Date: Tue Oct 8 06:42:02 2002 Subject: [ODE] commercial SOLID3.0 will use ODE Message-ID: <000701c26ed0$d2dbac60$7334188d@brainpool> The upcoming version 4.0 will feature: a.. Coupling to ODE, a free open source physics engine ........ http://www.libsolid.com this could be interesting From bry03redskins at hotmail.com Tue Oct 8 07:52:01 2002 From: bry03redskins at hotmail.com (Bryan Hudock) Date: Tue Oct 8 07:52:01 2002 Subject: [ODE] display problem Message-ID: I have succesfully installed and used Open Dynamics Engine on a linux machine (Red Hat 7.0). However, once a program using the library is exited from, all further ODE programs fail to display. The simulation appears to still be functional, but the display is a black screen. The only way I currently have to solve the problem is to exit and rerun X-Windows each time I want to run a program. If you have any insight into this problem it would be greatly appreciated. Thank you for your time. _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From slipch at gsc-game.kiev.ua Tue Oct 8 07:55:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Tue Oct 8 07:55:02 2002 Subject: [ODE] CCylinder In-Reply-To: References: Message-ID: <4228173581.20021008175719@gsc-game.kiev.ua> Hello Ian, Tuesday, October 8, 2002, 4:26:14 PM, you wrote: >> Can some one tell me along which axis CCylinder aligned when >> created axis-Z or axis-Y? IM> z axis. It is what is written in documentation Then why when I create CCylinder it appears aligned along Y axis. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From rtonge90 at yahoo.co.uk Tue Oct 8 08:09:01 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Tue Oct 8 08:09:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... Message-ID: <20021008150831.4556.qmail@web14913.mail.yahoo.com> Hi Andy, Dominique >It can however be very time consuming and error prone >to attempt to describe any system of even reasonable >complexity using source code. Yes, setting up skeletons in source is hard. Using a physics authoring tool is much easier. >You may even be able to use something like havok and >3dsmax to generate your data model but then actually >drive the system with ODE. This would be an amusing >hack since your runtime could remain open source. Yes, using Havok authored data to drive the ODE runtime is an interesting idea, however I can see a few problems. 1 3DSmax and the Havok plugin (or the new combined product) are expensive if you dont already own them. 2 The Havok physics model is quite different from the ODE physics model, so any tuning parameters you set at authoring time wont necessarily have the same effect at run time. Some joints parameters in Havok might not have equivalents in ODE. 3 The Havok file format is binary, so you would have to reverse engineer it. Have any of you guys seen KAT, the physics authoring tool that comes free with Unreal Tournament 2003? It is a standalone tool, so you dont need max. It was specifically designed for authoring physics, so its interface is much simpler than max's. Its file format is an XML formatted text file, so you wouldnt need to reverse engineer it to use it with ODE. It comes with all the physics data used to make UT2003 in the XML format which you are free to edit. Also, it is based on MathEngine Karma, which has similar ancestry to ODE. This means that many tuning parameters behave in the same way. For example ERP and CFM in ODE are exactly the same as gamma and epsilon in Karma. This means that a skeleton tuned in KAT should behave similarly in ODE. Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From slipch at gsc-game.kiev.ua Tue Oct 8 08:13:01 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Tue Oct 8 08:13:01 2002 Subject: [ODE] CCylinder In-Reply-To: <4228173581.20021008175719@gsc-game.kiev.ua> References: <4228173581.20021008175719@gsc-game.kiev.ua> Message-ID: <10729212845.20021008181439@gsc-game.kiev.ua> Hello slipch, Tuesday, October 8, 2002, 5:57:19 PM, you wrote: IM>> z axis. s> It is what is written in documentation s> Then why when I create CCylinder it appears aligned along Y axis. I have to apologize. I am not right it is only drawn aligned along Y-axis. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From I.Munro at herts.ac.uk Tue Oct 8 08:27:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Tue Oct 8 08:27:02 2002 Subject: [ODE] CCylinder Message-ID: > > IM> z axis. > > It is what is written in documentation > Then why when I create CCylinder it appears aligned along Y axis. I don't know what it says in the documentation, but when compiled under vc7 all the CCyclinders I generate (and my app only uses CCylinders) are initially aligned on the z axis. Sorry, I haven't a clue why yours come out on the Y axis! Ian From coding at natew.com Tue Oct 8 11:19:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 8 11:19:01 2002 Subject: [ODE] CCylinder In-Reply-To: <4520922044.20021008155628@gsc-game.kiev.ua> Message-ID: On Tue, 8 Oct 2002, slipch wrote: > Can some one tell me along which axis CCylinder aligned when > created axis-Z or axis-Y? I don't know off the top of my head, but have a look at the test_buggy sample app. It creates capped cylinders for the wheel's collision hulls, it should be evident from the source code what axis they're on to begin with. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Tue Oct 8 11:31:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 8 11:31:01 2002 Subject: [ODE] Collision with Quake or Skeletal type models... In-Reply-To: <20021008150831.4556.qmail@web14913.mail.yahoo.com> Message-ID: On Tue, 8 Oct 2002, [iso-8859-1] Richard Tonge wrote: > Yes, setting up skeletons in source is hard. Using a > physics authoring tool is much easier. I happen to have written something like that using ODE: http://www.natew.com/juice/ The file format is a trivial dialect of XML, and I'll be happy to help if you have trouble making use of it. It runs under Windows, I hope that's not a problem. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Tue Oct 8 15:32:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Tue Oct 8 15:32:02 2002 Subject: [ODE] geom group patch Message-ID: now that i'm using geom groups more, i had to add a query function to see if a geom was in a group int dGeomGroupQuery (dxGeom *g, dxGeom *x) { dUASSERT (g && g->_class->num == dGeomGroupClass,"argument not a geomgroup"); dxGeomGroup *gr = (dxGeomGroup*) CLASSDATA(g); for (int i=0; i < gr->parts.size(); i++) { if (gr->parts[i] == x) { return 1; } } return 0; } From slipch at gsc-game.kiev.ua Wed Oct 9 00:22:01 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Wed Oct 9 00:22:01 2002 Subject: [ODE] CCylinder In-Reply-To: References: Message-ID: <1911113781.20021009102331@gsc-game.kiev.ua> Hello Nate, NW> I don't know off the top of my head, but have a look at the test_buggy NW> sample app. It creates capped cylinders for the wheel's collision hulls, NW> it should be evident from the source code what axis they're on to begin NW> with. In my version of test_buggy spheres used for wheels. Meshes created for cylinders in test_buggy with Open Engine are orthogonal to Ode cylinders so aligned along axis - Y. That what misled me. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From slipch at gsc-game.kiev.ua Wed Oct 9 00:51:01 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Wed Oct 9 00:51:01 2002 Subject: [ODE] always diabled body Message-ID: <192913489.20021009105330@gsc-game.kiev.ua> Hello ODE, Can I create a Body which do not ever be enabled, even when connected to an enabled body by a Joint. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From erwin at vo.com Wed Oct 9 01:14:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 01:14:01 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua> Message-ID: <001001c26f6b$d601ef30$8800a8c0@erwin> What is the purpose of that body then? Erwin ----- Original Message ----- From: "slipch" To: Sent: Wednesday, October 09, 2002 9:53 AM Subject: [ODE] always diabled body > Hello ODE, > > Can I create a Body which do not ever be enabled, even when > connected to an enabled body by a Joint. > > -- > Best regards, > slipch mailto:slipch at gsc-game.kiev.ua > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > > From slipch at gsc-game.kiev.ua Wed Oct 9 02:22:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Wed Oct 9 02:22:02 2002 Subject: [ODE] always diabled body In-Reply-To: <001001c26f6b$d601ef30$8800a8c0@erwin> References: <192913489.20021009105330@gsc-game.kiev.ua> <001001c26f6b$d601ef30$8800a8c0@erwin> Message-ID: <1428374912.20021009122432@gsc-game.kiev.ua> Hello Erwin, Wednesday, October 9, 2002, 11:14:05 AM, you wrote: >> Can I create a Body which do not ever be enabled, even when >> connected to an enabled body by a Joint. >> EdV> What is the purpose of that body then? EdV> Erwin I want to hook enabled body to some point and drag it during simulation simply setting the point position. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From slipch at gsc-game.kiev.ua Wed Oct 9 04:32:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Wed Oct 9 04:32:02 2002 Subject: [ODE] always diabled body In-Reply-To: <3DA417C9.3070109@kramekweb.com> References: <192913489.20021009105330@gsc-game.kiev.ua> <001001c26f6b$d601ef30$8800a8c0@erwin> <1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> Message-ID: <17816151855.20021009143409@gsc-game.kiev.ua> Hello Benny, Wednesday, October 9, 2002, 2:49:29 PM, you wrote: >> >>>> Can I create a Body which do not ever be enabled, even when >>>> connected to an enabled body by a Joint. >>>> >>> >> >> EdV> What is the purpose of that body then? >> >> EdV> Erwin >> >> I want to hook enabled body to some point and drag it during >> simulation simply setting the point position. >> BK> You can give your body a very large mass and disable gravity on it. Then BK> it will move very little on it's own, and you can move it around with BK> dBodySetPos() Works perfect. Thank you very much. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From p.terdiman at wanadoo.fr Wed Oct 9 06:09:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 06:09:02 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> Message-ID: <00b601c26f94$ac7e5a80$0e00000a@pierre> > BK> You can give your body a very large mass and disable gravity on it. Then > BK> it will move very little on it's own, and you can move it around with > BK> dBodySetPos() > > Works perfect. Thank you very much. Usually a null mass is used to mark fixed bodies. Does it work in ODE ? Pierre From erwin at vo.com Wed Oct 9 06:58:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 06:58:01 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> Message-ID: <005f01c26f9b$d761a570$8800a8c0@erwin> No. But i dont see the point in creating a fixed body anyway. Just DONT use a body if you dont want dynamics. Erwin ----- Original Message ----- From: "Pierre Terdiman" To: Sent: Wednesday, October 09, 2002 3:06 PM Subject: Re: Re[2]: [ODE] always diabled body > > BK> You can give your body a very large mass and disable gravity on it. > Then > > BK> it will move very little on it's own, and you can move it around with > > BK> dBodySetPos() > > > > Works perfect. Thank you very much. > > Usually a null mass is used to mark fixed bodies. Does it work in ODE ? > > Pierre > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > > From p.terdiman at wanadoo.fr Wed Oct 9 07:17:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 07:17:01 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <010401c26f9e$24e99940$0e00000a@pierre> > No. But i dont see the point in creating a fixed body anyway. Just DONT use > a body if you dont want dynamics. That's a common thing nonetheless, say for planes. A ground plane is fixed, yet you want your bodies to collide with it. Or for a flag, when the cloth patch is attached to a fixed base. (etc) Pierre From martin at metahuman.org Wed Oct 9 07:25:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Wed Oct 9 07:25:02 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <3DA43BF9.8D81E460@metahuman.org> Erwin de Vries wrote: > > No. But i dont see the point in creating a fixed body anyway. Just DONT use > a body if you dont want dynamics. What the poster is trying to do is to control a body by putting a joint on it, and moving the location of the half of the joint that's not on the body. They're doing this by creating a second body, attaching the joint to it, and moving it. IIRC, the ODE API seems to treat joints as having a single location, rather than two locations. Of course, most joints try to keep those two locations the same, but in practice they'll rarely have exactly the same location. Perhaps the API could be extended so you could set the location of each half of a joint independently? Or is there already a way to do this that I've missed? - Martin From slipch at gsc-game.kiev.ua Wed Oct 9 07:34:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Wed Oct 9 07:34:02 2002 Subject: [ODE] always diabled body In-Reply-To: <005f01c26f9b$d761a570$8800a8c0@erwin> References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> Message-ID: <327081641.20021009173618@gsc-game.kiev.ua> Hello Erwin, Wednesday, October 9, 2002, 4:57:41 PM, you wrote: EdV> No. But i dont see the point in creating a fixed body anyway. Just DONT use EdV> a body if you dont want dynamics. EdV> Erwin I need body because I need to attach enabled body to something that I can move during simulation setting its position. EdV> ----- Original Message ----- EdV> From: "Pierre Terdiman" EdV> To: EdV> Sent: Wednesday, October 09, 2002 3:06 PM EdV> Subject: Re: Re[2]: [ODE] always diabled body >> > BK> You can give your body a very large mass and disable gravity on it. >> Then >> > BK> it will move very little on it's own, and you can move it around EdV> with >> > BK> dBodySetPos() >> > >> > Works perfect. Thank you very much. >> >> Usually a null mass is used to mark fixed bodies. Does it work in ODE ? >> >> Pierre >> >> _______________________________________________ >> ODE mailing list >> ODE at q12.org >> http://q12.org/mailman/listinfo/ode >> >> -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From erwin at vo.com Wed Oct 9 07:39:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 9 07:39:01 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> <010401c26f9e$24e99940$0e00000a@pierre> Message-ID: <006d01c26fa1$94866a50$8800a8c0@erwin> In those cases you only create a geometry. Without a body. Erwin ----- Original Message ----- From: "Pierre Terdiman" To: Sent: Wednesday, October 09, 2002 4:14 PM Subject: Re: Re[2]: [ODE] always diabled body > > No. But i dont see the point in creating a fixed body anyway. Just DONT > use > > a body if you dont want dynamics. > > That's a common thing nonetheless, say for planes. A ground plane is fixed, > yet you want your bodies to collide with it. > > Or for a flag, when the cloth patch is attached to a fixed base. > > (etc) > > Pierre > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > > From p.terdiman at wanadoo.fr Wed Oct 9 07:46:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 07:46:01 2002 Subject: [ODE] always diabled body References: <192913489.20021009105330@gsc-game.kiev.ua><001001c26f6b$d601ef30$8800a8c0@erwin><1428374912.20021009122432@gsc-game.kiev.ua> <3DA417C9.3070109@kramekweb.com> <17816151855.20021009143409@gsc-game.kiev.ua> <00b601c26f94$ac7e5a80$0e00000a@pierre> <005f01c26f9b$d761a570$8800a8c0@erwin> <010401c26f9e$24e99940$0e00000a@pierre> <006d01c26fa1$94866a50$8800a8c0@erwin> Message-ID: <016601c26fa2$3251c540$0e00000a@pierre> > In those cases you only create a geometry. Without a body. Ah, perhaps. Ok. Well, it only shows I'm not actually using ODE :) I think it works with null masses in Havok nonetheless. Pierre PS: let's welcome a new player after Mathengine, Havok, ODE, etc : www.novodex.com From slipch at gsc-game.kiev.ua Wed Oct 9 09:22:01 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Wed Oct 9 09:22:01 2002 Subject: [ODE] Cylinder colisions Message-ID: <17333538595.20021009192355@gsc-game.kiev.ua> Hello ODE, Hear is cylinder class for ODE. Cylinder class includes collisions Cylinder - Box Cylinder-Cylinder Cylinder - Sphere and Cylinder-Plain I also included Cylinder - Tri-Mesh in my version of Triangle collider. I put some more information in readme.txt. -- Best regards, Konstantin Slipchenko mailto:slipch at gsc-game.kiev.ua -------------- next part -------------- A non-text attachment was scrubbed... Name: dCylinder.zip Type: application/x-zip-compressed Size: 8989 bytes Desc: not available Url : http://q12.org/pipermail/ode/attachments/20021009/759e63bc/dCylinder.bin From coding at natew.com Wed Oct 9 11:36:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 11:36:02 2002 Subject: [ODE] CCylinder In-Reply-To: <1911113781.20021009102331@gsc-game.kiev.ua> Message-ID: On Wed, 9 Oct 2002, slipch wrote: > NW> I don't know off the top of my head, but have a look at the test_buggy > NW> sample app. It creates capped cylinders for the wheel's collision hulls, > NW> it should be evident from the source code what axis they're on to begin > NW> with. > > In my version of test_buggy spheres used for wheels. Oh look, mine too. Sorry about that. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 9 11:59:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 11:59:02 2002 Subject: [ODE] always diabled body In-Reply-To: <1428374912.20021009122432@gsc-game.kiev.ua> Message-ID: On Wed, 9 Oct 2002, slipch wrote: > I want to hook enabled body to some point and drag it during > simulation simply setting the point position. I am doing something like that in my application. I create a "fixed" joint, and use it to attach the body to "the static environment" (as Russ puts it in the documentation). // code m_TackJoint = dJointCreateFixed (m_pWorld->m_WorldID, 0); if (m_TackJoint) { dJointAttach (m_TackJoint, m_BodyID, null); dJointSetFixed (m_TackJoint); } As for moving things around, I'm not sure but I think you could try dBodySetPosition followed by another call to dJointSetFixed... moving things around in that way seems to me like it would destabilize the simulation, but it's worth a try. Or, don't create that "disabled" body at all... think about whatever other body it will be connected to, and connect THAT body with a fixed joint, and move that body around. That might be a little bit simpler. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 9 12:03:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 9 12:03:02 2002 Subject: [ODE] always diabled body In-Reply-To: <010401c26f9e$24e99940$0e00000a@pierre> Message-ID: On Wed, 9 Oct 2002, Pierre Terdiman wrote: > > No. But i dont see the point in creating a fixed body anyway. Just DONT > > use a body if you dont want dynamics. > > That's a common thing nonetheless, say for planes. A ground plane is fixed, > yet you want your bodies to collide with it. > > Or for a flag, when the cloth patch is attached to a fixed base. Even for both of those scenarios, you could get away without creating a rigid body. The ground plane in my application is a Geom object, not a body; if I wanted a flag, I'd render the pole, but I wouldn't make a body of it (unless I wanted the pole to sway....) instead, the edge of the cloth would just be "attached" to a set of fixed coordinates (as described in 11.1 of the FAQ). -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Wed Oct 9 17:29:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Wed Oct 9 17:29:02 2002 Subject: [ODE] welcome a new player Message-ID: Thanks for the link. It's nice to see the proliferation of rigid body simulators but I thought Si Brown's Freefall buggy demo using ODE was nicer than the NovodexTruckDemo. There seem to be some problems with the novodex wheels. When they hit the walls and objects they turn at a different angle than the inputs which makes it unresponsive very difficult to control. And the frame rate was pretty low (<30) for a small world on a GeForce3 1.6Ghz machine. Pierre Terdiman wrote: > PS: let's welcome a new player after Mathengine, Havok, ODE, etc : > www.novodex.com From p.terdiman at wanadoo.fr Wed Oct 9 18:13:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 9 18:13:02 2002 Subject: [ODE] welcome a new player References: Message-ID: <021b01c26ff9$e5d0c740$0e00000a@pierre> > Thanks for the link. It's nice to see the proliferation of rigid body simulators but I thought Si Brown's Freefall buggy demo using ODE was nicer than the NovodexTruckDemo. There seem to be some problems with the novodex wheels. When they hit the walls and objects they turn at a different angle than the inputs which makes it unresponsive very difficult to control. And the frame rate was pretty low (<30) for a small world on a GeForce3 1.6Ghz machine. Maybe you should report those problems to them, then ? After all, it's off-topic :) Now, the low framerate probably comes from something else : I don't have a 1.6 Ghz machine (*) and the framerate was always ~85 FPS (that is, the limit they fixed). Pierre (*) On the other hand I have a Quadro4 XGL 900, arh arh arh ! From dmcclurg at pandemicstudios.com.au Wed Oct 9 19:16:01 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Wed Oct 9 19:16:01 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: In my game, I'd like to simulate conveyor belts. Looking at the doc, a contact joint using dContactMotion1/2 seems to be the technqiue required. Does anyone have an example of that? I looked in ode/test but couldn't find anything. Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? Much thanks for any help with these questions From slipch at gsc-game.kiev.ua Thu Oct 10 00:32:01 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Thu Oct 10 00:32:01 2002 Subject: [ODE] always diabled body In-Reply-To: References: Message-ID: <1791950044.20021010103433@gsc-game.kiev.ua> Hello Nate, Wednesday, October 9, 2002, 2:06:58 PM, you wrote: NW> On Wed, 9 Oct 2002, slipch wrote: >> I want to hook enabled body to some point and drag it during >> simulation simply setting the point position. NW> I am doing something like that in my application. I create a NW> "fixed" joint, and use it to attach the body to "the static NW> environment" (as Russ puts it in the documentation). There was a good idea by Benny Kramek: " You can give your body a very large mass and disable gravity on it. Then it will move very little on it's own, and you can move it around with dBodySetPos() " Works fine. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From mattias at cambrianlabs.com Thu Oct 10 01:30:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 01:30:02 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <17333538595.20021009192355@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> Message-ID: > Hear is cylinder class for ODE. Hey! Nice job, I tried it out and it seems to work the way it should. I've seen cylinders explode out into space, but only rarely. If anyone wants a windows demo using the cylinder, check out http://www.cambrianlabs.com/DelphiODE.zip - the boxstack demo. cheers, mattias From mattias at cambrianlabs.com Thu Oct 10 01:33:11 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 01:33:11 2002 Subject: [ODE] Community page Message-ID: Hey! Russel, if you'd like, please add http://www.cambrianlabs.com/Mattias/DelphiODE/ to the community page? It's the homepage of the delphi import of ODE. If anyone wants to see some more evolved life, check out http://www.cambrianlabs.com/Mattias/Evolved/ , where I use Genetic Programming to evolve a hopper. Russel, if you want to, you could add that also. cheers, mattias From slipch at gsc-game.kiev.ua Thu Oct 10 02:08:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Thu Oct 10 02:08:02 2002 Subject: [ODE] Cylinder colisions In-Reply-To: References: <17333538595.20021009192355@gsc-game.kiev.ua> Message-ID: <757664571.20021010120947@gsc-game.kiev.ua> Hello Mattias, Thursday, October 10, 2002, 11:25:42 AM, you wrote: >> Hear is cylinder class for ODE. MF> Hey! Nice job, I tried it out and it seems to work the way it should. MF> I've seen cylinders explode out into space, but only rarely. They must not "explode out". One reason it may happen is well known problem with integration of fast rotating body. Cylinders (as well as Capped Cylinders) must show this problem more often than other bodies especially when radius/length ratio is small. It happen because rotating around an axis with small inertia partly counts as rotating around an axis with large inertia. But it is not a problem of colliders. To resolve it finite rotation axes may be used or simply do not set inertia tensor with strongly different inertia of its axes. It is also should depend on integration step. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From I.Munro at herts.ac.uk Thu Oct 10 02:32:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Thu Oct 10 02:32:02 2002 Subject: [ODE] Community page Message-ID: Mattias wrote: > If anyone wants to see some more evolved life, check out > http://www.cambrianlabs.com/Mattias/Evolved/ , where I use Genetic > Programming to evolve a hopper. Russel, if you want to, you could add > that also. Pretty interesting stuff. I'm doing similar things with a two legged runner and using Mathew Wall's GALIB. Sorry, I haven't got any details online at the moment, but have a look at http://www.bunnyburgers.com/tigger.jpg for a picture of the beast in action. I'd previously used the sort of control systems described by Railbert, but am now trying a sort of limit cycle based approach, where just once per a hop I measure the creatures attitude in space, apply (genetic algorithm generated) weights to all these values, sum them together and the use the resulting number to set the leg velocity for flight. For stance I use the same process but a different set of weights. My reasoning was that the railbert approach might be producing a control system that was fighting against the natural dynamics, whilst a non-prescriptive approach might work in harmony with the dynamics. The down-side is that the system is so non-prescriptive that a lot of time is wasted simulating completely unfeasible control weightings. The creature evolves to hops ok if I use both legs in sync, but I've only just started on the bipedal running strategies, so it's a bit hit and miss at the moment. Cheers Ian From mattias at cambrianlabs.com Thu Oct 10 02:50:01 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 02:50:01 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > Pretty interesting stuff. > I'm doing similar things with a two legged runner and using Mathew > Wall's GALIB. My current implementation evolve NNs unsing the NEAT method. Nothing online yet, though. My next goal is to evolve a snake like object (four bodies connected by three hinges) and then something two legged. I'm trying to use Juice to design the body - great tool Nate! > Sorry, I haven't got any details online at the moment, but have a look > at http://www.bunnyburgers.com/tigger.jpg for a picture of the beast > in action. That looks incredibly cool! I'd love to see him in action. Let us know when you have something to look at! > I'd previously used the sort of control systems described by Railbert, Railbert? Never heard of him, nor could I find any online papers - any links you could send? > My reasoning was that the railbert approach might be producing a > control > system that was fighting against the natural dynamics, whilst a > non-prescriptive approach might work in harmony with the dynamics. The > down-side is that the system is so non-prescriptive that a lot of time > is wasted simulating completely unfeasible control weightings. That's evolution for you. I try very hard to kill the bad systems off as fast as I can. > The creature evolves to hops ok if I use both legs in sync, but I've > only just started on the bipedal running strategies, so it's a bit > hit and miss at the moment. Well, if you want to toss ideas around, I'm game! cheers, m From I.Munro at herts.ac.uk Thu Oct 10 04:02:02 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Thu Oct 10 04:02:02 2002 Subject: [ODE] Community page Message-ID: Mattias Wrote: > > My current implementation evolve NNs unsing the NEAT method. Nothing > online yet, though. I've thought about NNs but i'm not really upto speed on them. I should really investigate the area more. > > That looks incredibly cool! I'd love to see him in action. > Let us know > when you have something to look at! Sure. Of course you can't see from a still frame the crash that followed 1 second later ;-) > > I'd previously used the sort of control systems described > by Railbert, > > Railbert? Never heard of him, nor could I find any online > papers - any > links you could send? Marc Raibert (sorry, mispelt his name) wrote a book called "legged robots that balance" and was responsible for the major work at the MIT leg lab. http://www.ai.mit.edu/projects/leglab/ (lots of interesting stuff at the site) His main contribution was demonstrating that dynamically unstable robots could be controlled with fairly simple control alogorithms rather than a complete mathematical analysis of the robots dynamics. Previous simulations I've done have been using working model 2d, inspired by the work of John Nagle http://www.animats.com/papers/leggedrun/leggedrun.html But working model 2d was incredibly slow to simulate and communicate with. ODE has been a real eye opener as to how fast simulations can run. It's made life a lot easier. My interests actually lie in making physical robots rather than simulations, but they're a great "what if?" tool. Cheers Ian From p.terdiman at wanadoo.fr Thu Oct 10 04:14:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 04:14:02 2002 Subject: [ODE] Community page References: Message-ID: <005f01c2704d$c6915080$0e00000a@pierre> > My next goal is to evolve a snake like object (four bodies connected by > three hinges) and then something two legged. I'm trying to use Juice to > design the body - great tool Nate! Note that NovodeX provides 2 exporters for MilkShape and MAX (others are planned) that you probably could use for ODE as well. For example, 4 bodies connected by 3 hinges are a piece of cake to build & export from MAX. [I can help here if needed, I wrote the exporter]. Note that this KAT tool I still have to play with looks fine as well. Pierre From mattias at cambrianlabs.com Thu Oct 10 04:30:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 04:30:02 2002 Subject: [ODE] Community page In-Reply-To: <005f01c2704d$c6915080$0e00000a@pierre> References: <005f01c2704d$c6915080$0e00000a@pierre> Message-ID: > > My next goal is to evolve a snake like object (four bodies connected > by > > three hinges) and then something two legged. I'm trying to use Juice > to > > design the body - great tool Nate! > > Note that NovodeX provides 2 exporters for MilkShape and MAX (others > are planned) that you probably could use for ODE as well. I couldn't find the exporters att novodex (is that novODEx?) ;) > For example, 4 bodies connected by 3 hinges are a piece of cake to > build & export from MAX. [I can help here if needed, I wrote > the exporter]. Well, MAX isn't exactly cheap, though milkshape is (and I actually have a license). Any pointers to the exporters? > Note that this KAT tool I still have to play with looks fine as well. I'd love to play with it also, but I'm guessing I'd have to buy the game to download it? cheers, mattias From p.terdiman at wanadoo.fr Thu Oct 10 04:40:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 04:40:02 2002 Subject: [ODE] Community page References: <005f01c2704d$c6915080$0e00000a@pierre> Message-ID: <00bb01c27051$7f8241a0$0e00000a@pierre> > Well, MAX isn't exactly cheap, though milkshape is (and I actually have a > license). Any pointers to the exporters? Download them freely here: http://www.novodex.com/sales.html > I'd love to play with it also, but I'm guessing I'd have to buy the game > to download it? No. http://www.swissquake.ch/chumbalum-soft/files/KAT_1_2_UT2003_Setup.exe Pierre From slipch at gsc-game.kiev.ua Thu Oct 10 04:59:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Thu Oct 10 04:59:02 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <757664571.20021010120947@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> Message-ID: <16117962618.20021010150125@gsc-game.kiev.ua> Hello Mattias, Thursday, October 10, 2002, 11:25:42 AM, you wrote: It seems my message has not get through. At least I do not see it back in my Inbox. I send it again. MF> Hey! Nice job, I tried it out and it seems to work the way it should. MF> I've seen cylinders explode out into space, but only rarely. They must not "explode out". One reason it may happen is well known problem with integration of fast rotating body. Cylinders (as well as Capped Cylinders) must show this problem more often than other bodies especially when radius/length ratio is small. It happen because rotating around an axis with small inertia partly counts as rotating around an axis with large inertia. But it is not a problem of colliders. To resolve it finite rotation axes may be used or simply do not set inertia tensor with strongly different inertia of its axes. It is also should depend on integration step. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From mattias at cambrianlabs.com Thu Oct 10 05:13:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 05:13:02 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <16117962618.20021010150125@gsc-game.kiev.ua> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> Message-ID: > Hello Mattias, Hey slipch, it came through fine both times - I haven't replied yet, though. > They must not "explode out". One reason it may happen is well known > problem with integration of fast rotating body. Cylinders (as well as > Capped Cylinders) must show this problem more often than other bodies > especially when radius/length ratio is small. Well, dropping many cylinders in the boxstack demo, every once in a while one will explode. I'm not sure why, but you may be correct. cheers, m From p.terdiman at wanadoo.fr Thu Oct 10 05:19:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 10 05:19:02 2002 Subject: [ODE] Cylinder colisions References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> Message-ID: <00f801c27056$f27be760$0e00000a@pierre> Are your cylinders real cylinders or capsules ? I assume they're "real" cylinders since you make a difference between them and "capped cylinders". Then you might want to tell Eric Haines about it, for his intersection page. Actually providing a free ODE-independent set of cylinder overlap routines would be very very handy for a lot of people. > They must not "explode out". One reason it may happen is well known > problem with integration of fast rotating body. Cylinders (as well as > Capped Cylinders) must show this problem more often than other bodies > especially when radius/length ratio is small. It happen because > rotating around an axis with small inertia partly counts as rotating > around an axis with large inertia. But it is not a problem of > colliders. > To resolve it finite rotation axes may be used or simply > do not set inertia tensor with strongly different inertia of its axes. I think it can be solved by : - using a better integration scheme (RK4 at least) - clamping angular velocity to a max speed Unless I'm missing something.... I wouldn't tweak the inertia tensor, that's a delicate beast. Seems to work here: www.codercorner.com/Physics.zip (Press 6 to create some bars, then w to make them spin quickly. I can't make it explode here.)(and I hope we're talking about the same problem ;) Pierre From martin at metahuman.org Thu Oct 10 05:27:01 2002 From: martin at metahuman.org (Martin C. Martin) Date: Thu Oct 10 05:27:01 2002 Subject: [ODE] Community page References: Message-ID: <3DA571D5.329A60E7@metahuman.org> Ian Munro wrote: > > Mattias Wrote: > > Marc Raibert (sorry, mispelt his name) wrote a book called "legged robots > that balance" and was responsible for the major work at the MIT leg lab. > > http://www.ai.mit.edu/projects/leglab/ > (lots of interesting stuff at the site) You might also be interested in: http://www-2.cs.cmu.edu/~garthz/research/bowleg/bowleg.html And in particular, the paper "Control of a Bow Leg Hopping Robot." It works similarly to your description, calculating control parameters only once during flight. Stance, on the other hand, is completely passive. - Martin From mattias at cambrianlabs.com Thu Oct 10 06:04:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 06:04:02 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <00f801c27056$f27be760$0e00000a@pierre> References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> Message-ID: Since slipch himself hasn't answered (yet), I'll throw in an answer; > Are your cylinders real cylinders or capsules ? I assume they're "real" > cylinders since you make a difference between them and "capped > cylinders". slipch created real cylinders for ODE, I refer you to the archive; http://q12.org/pipermail/ode/2002-October/001936.html . If you want the download (it's in mime format in the pipemail archive), I'm sure he'll send it to you; slipch at gsc-game.kiev.ua cheers, mattias From Dominique at SavageSoftware.com.au Thu Oct 10 06:20:02 2002 From: Dominique at SavageSoftware.com.au (Dominique Louis) Date: Thu Oct 10 06:20:02 2002 Subject: [ODE] Silly Question... Message-ID: <3DA57EF7.1070807@SavageSoftware.com.au> Hi all, I have compiled configurator.c manually and would like to know what parameters it requires in order to create the config.h file. I have tried... configurator config\user-settings bcc32 tools\rm.exe on the command line, but it fails to delete the ctest.c file and does not seem to generate correct output. Am I missing something here? Thanks, Dominique. From benny at kramekweb.com Thu Oct 10 06:46:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Thu Oct 10 06:46:02 2002 Subject: [ODE] conveyor belts and moving platforms References: Message-ID: <3DA58E8C.10401@kramekweb.com> David McClurg wrote: > In my game, I'd like to simulate conveyor belts. Looking at the doc, a contact joint using dContactMotion1/2 seems to be the technqiue required. Does anyone have an example of that? I looked in ode/test but couldn't find anything. It's fairly simple. First make sure that you correctly set the fdir1 vector in the dContact structure. Then make sure that you use the dContactFDir1 and dContactMotion1 flags on the surface mode. Then set the correct value for motion1. > Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. > If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? One way is to put very large values in the inertia matrix. This will make the body difficult to rotate. Another, maybe better way, is give your body an inertia of a sphere, and to always have the geom oriented in a fixed orientation. From slipch at gsc-game.kiev.ua Thu Oct 10 06:49:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Thu Oct 10 06:49:02 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <00f801c27056$f27be760$0e00000a@pierre> References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> Message-ID: <7724552614.20021010165115@gsc-game.kiev.ua> Hello Pierre, Thursday, October 10, 2002, 3:17:04 PM, you wrote: PT> Are your cylinders real cylinders or capsules ? I assume they're "real" PT> cylinders since you make a difference between them and "capped cylinders". PT> Then you might want to tell Eric Haines about it, for his intersection page. PT> Actually providing a free ODE-independent set of cylinder overlap routines PT> would be very very handy for a lot of people. Of course they are "real" cylinders. It is not need to create colliders for capsules because they already exist in ODE. Functions that implement collision for cylinders designed to set contact information to create ODE contact joints. I am not sure that they would be useful in another application. PT> Seems to work here: www.codercorner.com/Physics.zip PT> (Press 6 to create some bars, then w to make them spin quickly. I can't make PT> it explode here.)(and I hope we're talking about the same problem ;) I think yes we are talking about the same problem. Errors may appear anyway due to numeric errors independently of inertia tensor. But when inertia highly asymmetric they rather lead to noticeable result. If angular velocity is not limited it may lead to untwisting to infinite velocity. Unfortunately I can not get the example right now by technical reasons. I'll do it later and I belive I manage to make turning body to explode in any case setting proper parameters and very large velocity. -- Best regards, slipch mailto:slipch at gsc-game.kiev.ua From benny at kramekweb.com Thu Oct 10 06:58:01 2002 From: benny at kramekweb.com (Benny Kramek) Date: Thu Oct 10 06:58:01 2002 Subject: [ODE] Cylinder colisions References: <17333538595.20021009192355@gsc-game.kiev.ua><757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> Message-ID: <3DA59188.4080906@kramekweb.com> > Of course they are "real" cylinders. It is not need to create > colliders for capsules because they already exist in ODE. Functions that > implement collision for cylinders designed to set contact information > to create ODE contact joints. I am not sure that they would be useful in > another application. Why don't we add the "real" cylinder class directly into ode? From mattias at cambrianlabs.com Thu Oct 10 10:10:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 10:10:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > > My current implementation evolve NNs unsing the NEAT method. Nothing > > online yet, though. > > I've thought about NNs but i'm not really upto speed on them. I should > really investigate the area more. NNs are tricky, if you want to do any kind of "fancy" (backpropagation) learning. Evolving NNs is almost trivial. Picking the right network topology is the the tricky part. The method I use, NEAT, evolves topology AND network weights, that's harder to implement. Now, if you want to _understand_ NNs, that's another thing completely... cheers, m From Alan_Gordie at payformance.com Thu Oct 10 11:30:02 2002 From: Alan_Gordie at payformance.com (Alan Gordie) Date: Thu Oct 10 11:30:02 2002 Subject: [ODE] coldet and ode Message-ID: I'm still catching up on two weeks of past list messages, but that is awesome news! Thanks, Pierre! -----Original Message----- From: Pierre Terdiman [mailto:p.terdiman at wanadoo.fr] Sent: Friday, October 04, 2002 5:21 PM To: ode at q12.org Subject: Re: [ODE] coldet and ode > I'd personally give Opcode a shot if it was more portable. (There > doesn't seem to be an ANSI C/C++ target in the source). Well, various people ported it to Linux and made it "more portable". On top of my head : in the F4 engine, in The Nebula Device, in Crystal Space, in ... ODE... Some more people sent me tar.gz files with makefiles and required changes to build Opcode "elsewhere". I don't know if they work well since I have a Windows box, period, but I can upload such an archive if ... Hell, let's just do it, wait 5 mn. ... Ok, done, uploaded Linux port : www.codercorner.com/Opcode.htm Words from the author : "This version is indeed different than those contained in F4 or ODE because it is only a direct linux port of version 1.2 of OPCODE, it contains nothing more, nothing less so a user does not have to deal with F4 or ODE. It is also accompanied with a so called configure script which automatically creates a makefile for the user's specific platform. It's just a question of running the configure script and automake and OPCODE is build for your platform (e.g. linux, solaris, irix etc). This is the correct way on unix flavoured oss to spread software." Questions about it ? Ask the author, please. (his mail is in the tar file) > Opcode looks heavily biased towards Win32 (lots of x86 ASM VC++ stuff > in the mix) whereas ColDet compiles on just about anything, without > modification. Note that there's a #define to discard the ASM, and the only relevant VC++ stuff, as far as Opcode is concerned, is "__forceinline". Pierre _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode From kaffiene at xtra.co.nz Thu Oct 10 13:33:02 2002 From: kaffiene at xtra.co.nz (Peter) Date: Thu Oct 10 13:33:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005B9@ednex504.dsto.defence.gov.au> Message-ID: <007101c2709c$243494b0$5c02a8c0@peter> > -----Original Message----- > From: ode-admin at q12.org [mailto:ode-admin at q12.org] On Behalf Of McEvoy, > Nick > Sent: Friday, 13 September 2002 11:49 a.m. > To: 'ode at q12.org' > Subject: [ODE] RE: Wheel rotation problem > > Marco Grubert wrote: > >My observations is that mass of the connected objects has a huge impact > on > >stability. I started out with a 500kg chassis and 15kg wheels. Reducing > this > >to 1/10th of the original value significantly improved the top speed when > >wheel bending occurs. It appears as though the object mass would increase > >with higher speed, pushing the wheels into a /\ shape when driving > straight > >or a // shape when doing a left turn. > > // Chassis > CLength = 0.7f; > CWidth = 0.5f; > CHeight = 0.2f; > CMass = 1.0f; > > // Wheels > WRadius = 0.15f; > WMass = 0.2f; > > Gravity=-5.0f; // yes a strange value but who said my game is on earth :) > > I'll do some more parameter tweaking. :) > > > >I have not yet tried moving the hinge2 > >anchor points around- does that make any difference? > > No I have not tried that idea yet. > > > >I did not notice any difference when setting the finite rotation mode. > >However, the documentation suggests setting the axis every timestep > (which > >you don?t do in the sample code). > > I see that in the doco ... NOW ... missed it before ... so > dBodySetFiniteRotationAxis() should be call each step !? I'll try that > then. > > > >I don?t quite understand how this mode > >operates or why the axis has to be reset. Why should it change during > >iterations ? > > Yes good question (why call each time step) ... I don't understand it > either > ... I'm no physics guru. :-( > > > >How are you adjusting the axes? angles? I had this problem when only > >querying one wheel, calculating the difference and then applying the same > >value to both joints. Calculating the rate of change independently for > each > >of the two front joints fixed that problem. > > Ahhh your right on this one I think ... I was calculating each wheel > (steering) independently. I'll fix it this weekend. > > // Motor > for (i = 0; i <= 1; i++) > { > dJointSetHinge2Param(mODEJoint[i], dParamVel2, -speed); > dJointSetHinge2Param(mODEJoint[i], dParamFMax2, 0.1); > } > > // Steering - woops this is wrong ... I'll fix it as per your suggestion > !!! > for (i = 0; i <= 1; i++) > { > dReal v = steer - dJointGetHinge2Angle1(mODEJoint[i]); > if (v > 0.1) v = 0.1; > if (v < -0.1) v = -0.1; > v *= 10.0; > dJointSetHinge2Param(mODEJoint[i], dParamVel, v); > dJointSetHinge2Param(mODEJoint[i], dParamFMax, 0.2); > dJointSetHinge2Param(mODEJoint[i], dParamLoStop, -0.75); > dJointSetHinge2Param(mODEJoint[i], dParamHiStop, 0.75); > dJointSetHinge2Param(mODEJoint[i], dParamFudgeFactor, 0.1); > } > Nick, did any of these experiments work? (i.e. get rid of the wheel-bending problem)? Cheers, Peter. From coding at natew.com Thu Oct 10 14:07:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 10 14:07:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: On Thu, 10 Oct 2002, Ian Munro wrote: > My interests actually lie in making physical robots rather than simulations, > but they're a great "what if?" tool. Be careful... That's exactly how I felt when I started planning the software that became Juice. Now I've lost all interest in making something I can touch. :-) I'm really enjoying the discussion of evolved behaviors. In Juice, a creature's movements are basically just sine waves of different phases and amplitudes applied to joints, and feedback loops from a body's orientation to one or more joints. I've been pondering a training feature to try using a GA to adjust the phases, amplitudes, and gains, but haven't actually implemented anything yet. I'm hoping it will smooth out gaits that have been designed by hand. I've come to the conclusion that this method of programming behavior creates creatures that tip over too easily though, so most of my time lately has gone into designing a new behavior programming language. -- Nate Waddoups Redmond WA USA http://www.natew.com From mattias at cambrianlabs.com Thu Oct 10 14:34:02 2002 From: mattias at cambrianlabs.com (Mattias Fagerlund) Date: Thu Oct 10 14:34:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: > I'm really enjoying the discussion of evolved behaviors. In Juice, a > creature's movements are basically just sine waves of different phases > and > amplitudes applied to joints, and feedback loops from a body's > orientation > to one or more joints. Check out http://www.ventrella.com/GenePool/gene_pool.html, it's a 2d program that evolves both structure and behaviour - but the behaviour is basically offset, phase and amplitude. LimbAngle = offset + sin(Time + Phase) * Amplitude; Quite similar to what you're describing. Jeffrey's also written several interesting papers about evolving articulated agents. > I've been pondering a training feature to try > using a GA to adjust the phases, amplitudes, and gains, but haven't > actually implemented anything yet. I'm hoping it will smooth out gaits > that have been designed by hand. I'm guessing you could have a GA running in a matter of days. Contact me off the list if you're interested in some ideas on that ;) > I've come to the conclusion that this method of programming behavior > creates creatures that tip over too easily though, so most of my time > lately has gone into designing a new behavior programming language. Your creatures are very complex, GAs could probably do a good job there. cheers, m From anselm at hook.org Thu Oct 10 15:31:02 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 10 15:31:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: > > I've come to the conclusion that this method of programming behavior > > creates creatures that tip over too easily though, so most of my time > > lately has gone into designing a new behavior programming language. This sounds interesting - any links up yet? What kinds of features does your language make it easier to express? - a From dmcclurg at pandemicstudios.com.au Thu Oct 10 17:30:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 10 17:30:02 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: Benny Kramek wrote: >> If my player is a ccylinder or sphere, and I don't want my player to rotate as it moves in the world via SetVel, how do I constrain the body to not rotate? > One way is to put very large values in the inertia matrix. This will make the body difficult to rotate. you mean like a large mass? > Another, maybe better way, is give your body an inertia of a sphere, how is that done? > and to always have the geom oriented in a fixed orientation. by setting the rotation every frame in the app? or is there another way to constrain orientation? thanks for your help on conveyer/platform questions! From russ at q12.org Thu Oct 10 22:39:01 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 10 22:39:01 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <3DA59188.4080906@kramekweb.com> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> <3DA59188.4080906@kramekweb.com> Message-ID: <20021010224329.65a1dbdd.russ@q12.org> > Why don't we add the "real" cylinder class directly into ode? the non-capped cylinder code is a good chunk of work, but i think it's work-in-progress. there are a few current problems, especially with cylinder-cylinder contact. the attached image illustrates the problem - it is possible (in fact rather easy) to put two cylinders into a configuration where the contact point (the blue box) does not even intersect one of the cylinders. this is IMO a big error. having said that, this cylinder work is a great step in the right direction. even with the errors it can be useful for many people. i'll add it to the contrib directory for now. thanks konstantin! to explain why i think this error is a problem: the ODE scheme of contact points/normals/depths is of course just an approximate way of representing contact between two objects. to reduce the approximation error, all the current contact code tries to put the contacts somewhere inside the intersection volume, in positions that will (a) preserve non-penetration and (b) not generate unnecessary body motion (no extra energy allowed!). the cyl-cyl contacts often do not meet these conditions. if you integrate cylinders into the box stacking demo and stack them up you'll see that this error causes them to jitter and pop way more than even the stacked boxes (which themselves jitter because of another well understood reason). i spent a lot of time on the current primitive-primitive collision code to prevent exactly this sort of thing. in some cases, like the capped-cyl-to-box code, i had to go through quite a few different schemes before i got it (hopefully) right. russ. -- Russell Smith http://www.q12.org -------------- next part -------------- A non-text attachment was scrubbed... Name: foo4.jpg Type: application/octet-stream Size: 8413 bytes Desc: not available Url : http://q12.org/pipermail/ode/attachments/20021010/0bf337af/foo4.obj From russ at q12.org Thu Oct 10 23:08:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 10 23:08:02 2002 Subject: [ODE] Community page In-Reply-To: References: Message-ID: <20021010231205.1f8bd682.russ@q12.org> > Russel, if you'd like, please add > http://www.cambrianlabs.com/Mattias/DelphiODE/ to the community page? done. russ. -- Russell Smith http://www.q12.org From dmcclurg at pandemicstudios.com.au Thu Oct 10 23:36:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 10 23:36:02 2002 Subject: [ODE] conveyor belts and moving platforms Message-ID: Benny Kramek wrote: >> Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? > Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. I created a box geom with a body and dropped a sphere geom with a body on it. There sphere comes to rest on the box while the box moves back and forth (on a sine wave with SetVel) underneath it. But the sphere doesn't move back and forth with the box!! Friction doesn't seem to give the sphere any motion. I tried infinite and 1.0 friction with the same results. contacts[i].surface.mode = dContactBounce; contacts[i].surface.mu = 1.f; //dInfinity; contacts[i].surface.mu2 = 0.f; contacts[i].surface.bounce = 0.5f; contacts[i].surface.bounce_vel = 0.01f; dJointID c = dJointCreateContact(world, contactGroup, &contacts[i]); dJointAttach(c, b1Contact, b2Contact); Any idea why this isn't working? From bongard at ifi.unizh.ch Fri Oct 11 01:18:02 2002 From: bongard at ifi.unizh.ch (Joshua Bongard) Date: Fri Oct 11 01:18:02 2002 Subject: [ODE] Evolved behaviours In-Reply-To: Message-ID: As there seems to be quite a bit of discussion about NNs and evolved behaviours on the mailing list these days, I'd like to direct your attention to a physical simulation overlay I developed called MorphEngine (www.ifi.unizh.ch/ailab/people/bongard/MorphEngine/). For those of you in the know, and before you start throwing rotten fruit at me, this overlay uses MathEngine, not ODE, but I've almost finished porting it to ODE, and will post it up when I do. The program runs as an .exe standalone on Windows, but my documentation includes a brief introduction to NNs, GAs and evolved behaviours, and how they relate to the physical simulation of robots. Cheers, Josh On Thu, 10 Oct 2002, Nate W wrote: > On Thu, 10 Oct 2002, Ian Munro wrote: > > > My interests actually lie in making physical robots rather than simulations, > > but they're a great "what if?" tool. > > Be careful... That's exactly how I felt when I started planning the > software that became Juice. Now I've lost all interest in making > something I can touch. :-) > > I'm really enjoying the discussion of evolved behaviors. In Juice, a > creature's movements are basically just sine waves of different phases and > amplitudes applied to joints, and feedback loops from a body's orientation > to one or more joints. I've been pondering a training feature to try > using a GA to adjust the phases, amplitudes, and gains, but haven't > actually implemented anything yet. I'm hoping it will smooth out gaits > that have been designed by hand. > > I've come to the conclusion that this method of programming behavior > creates creatures that tip over too easily though, so most of my time > lately has gone into designing a new behavior programming language. > > -- __________________________________________________________ Josh C. Bongard Doctoral candidate, Artificial Intelligence Laboratory Department of Information Technology, University of Zurich Winterthurerstrasse 190, CH-8057 Zurich, Switzerland Phone: +41 01 635 43 47 Fax: +41 01 635 68 09 www.ifi.unizh.ch/ailab/people/bongard/ __________________________________________________________ From slipch at gsc-game.kiev.ua Fri Oct 11 06:15:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Fri Oct 11 06:15:02 2002 Subject: [ODE] Cylinder colisions In-Reply-To: <20021010224329.65a1dbdd.russ@q12.org> References: <17333538595.20021009192355@gsc-game.kiev.ua> <757664571.20021010120947@gsc-game.kiev.ua> <16117962618.20021010150125@gsc-game.kiev.ua> <00f801c27056$f27be760$0e00000a@pierre> <7724552614.20021010165115@gsc-game.kiev.ua> <3DA59188.4080906@kramekweb.com> <20021010224329.65a1dbdd.russ@q12.org> Message-ID: <1279165509.20021011161705@gsc-game.kiev.ua> Hello Russ, Friday, October 11, 2002, 5:43:29 AM, you wrote: I know about this error. It happens when cylinders' edges touches. There is still a warranty that the contact point is near the place where it should be. It was not an error in my eyes I only wanted to reduce calculations. I'll think how to fix it. -- Best regards, Konstantin mailto:slipch at gsc-game.kiev.ua From benny at kramekweb.com Fri Oct 11 06:42:02 2002 From: benny at kramekweb.com (Benny Kramek) Date: Fri Oct 11 06:42:02 2002 Subject: [ODE] conveyor belts and moving platforms References: Message-ID: <3DA6DF4A.60903@kramekweb.com> > >>>Also, if i want to simulate moving platforms (boxes with bodies) that the player can jump on, should friction keep the player on the platform or will I need a special contact joint? >>> > >>Friction will keep the players on the platform with no problem. Just make sure that there is enough friction. >> > > I created a box geom with a body and dropped a sphere geom with a body on it. There sphere comes to rest on the box while the box moves back and forth (on a sine wave with SetVel) underneath it. But the sphere doesn't move back and forth with the box!! > > Friction doesn't seem to give the sphere any motion. I tried infinite and 1.0 friction with the same results. > This is a known thing with ode. A ball that is rolling on the ground will never slow down, even if there is friction. Try replacing the sphere with a box. Also, you shouldn't change the velocity of the platform with dBodySetVel(). This is not the correct way to do things. You should only apply forces. If you want to give a body a certain velocity you should use a motor. From p.terdiman at wanadoo.fr Fri Oct 11 06:49:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 11 06:49:02 2002 Subject: [ODE] Community page References: <005f01c2704d$c6915080$0e00000a@pierre> <00bb01c27051$7f8241a0$0e00000a@pierre> Message-ID: <007201c2712c$89469840$0e00000a@pierre> > > I'd love to play with it also, but I'm guessing I'd have to buy the game > > to download it? > > No. > http://www.swissquake.ch/chumbalum-soft/files/KAT_1_2_UT2003_Setup.exe Argh ! I was just told that KAT was *not* free. You were right, you actually have to buy the game indeed, to be able to use it. Sorry.... I thought it was a public link. Needless to say, the file has been removed. You're lucky anyway : UT2003 is a good game so there shouldn't be any reason not to buy it :) (Hey, I'm kidding) Pierre From max.lungarella at aist.go.jp Fri Oct 11 10:46:01 2002 From: max.lungarella at aist.go.jp (Max Lungarella) Date: Fri Oct 11 10:46:01 2002 Subject: [ODE] robotic simulation Message-ID: <3DA70D4E.725824C6@aist.go.jp> hi there, "dynamechs" is a dynamics engine, mainly intended for robotics simulation (http://dynamechs.sourceforge.net/). recently i've given it a try, and although i appreciate very much it's speed, i have the impression, that it's rather hard to construct complex structures - like robots. is there anything that would prevent the use of ODE for the same purpose? i.e., robotic simulation? is there anybody that has tried to do a quantitative comparison between different physics engines, in terms of accuracy, which is kind of important in this case? or does anybody have interesting pointers to relevant literature? thank you very much in advance!! cheers, max -- Max Lungarella Neuroscience Research Institute Tsukuba AIST Central 2 Umezono 1-1-1, Tsukuba 305-8568 Japan Tel +81-298-615369 Fax +81-298-615841 http://www.lungarella.com/max/ From wristy_j at yahoo.com Fri Oct 11 12:06:01 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Fri Oct 11 12:06:01 2002 Subject: [ODE] Old Cholesky factorization code Message-ID: <20021011190523.22176.qmail@web40810.mail.yahoo.com> Greetings, In the code where the Dantzig LCP solver takes over (after the A matrix and rhs vector have been determined), I noticed that there is a commented call to a Cholesky factorizor and solver. In block-matrix form (where each entry is a matrix of the form J*InvM*Jt), I realize that the A matrix is block-symmetric, BUT, I was wondering... Are the diagonal entries of the block A matrix themselves actually symmetric (J*InvM*Jt) even after the body has undergone rotations, making the inverse inertia tensor non-symmetric? If not, the Cholesky decomp wouldn't work, correct? In other words, did the Cholesky decomp ever work properly for A? Or was it just ditched to incorporate LCP constrains (contacts with friction)? Thanks! J __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From mfdubois at club-internet.fr Fri Oct 11 12:25:02 2002 From: mfdubois at club-internet.fr (Michel DUBOIS) Date: Fri Oct 11 12:25:02 2002 Subject: [ODE] Problem with AngularMortor and BallAndSocket Message-ID: <84CB8473VQPNRP42MH96PO43QOECWSI.3da7258c@MD_PC_02> Hello, I am a newbie in ODE and C++. First I developed a simulator in Java3d with threads and now I am porting it in ODE/Drawstuff to have physics. My project is to simulate a mobile robot named an atom who can be composed with identical robot to become a molecul. An atom is mainly a body (a square box) with 6 legs (left, right, top,bottom, front and rear).A leg can rotate with 2 axis. A leg can be attached with the leg of an other atom. A molecul is one atom or more than one atom. In ODE, an atom is a box with 6 legs. A leg is 2 boxes (or cylinders ..) with a slider. I think, a BallAndSocket joint with angular motor joint can attach the body with a leg. But I afraid, I don't understand the angular motor in user mode. First the stop limit seems not to be effective. And the axis seems to be relative to the gobal frame not to the body. When the body rotate, the legs seems to rotate with a strange maner. I think i have the same problem than Tim Schmidt in july. The rotations behave as if the axes are anchored to the global frame, whatever the orientation of the first body looks like. May be someone have a solution to my problems ? Michel DUBOIS From Sean at Blackscreen.org Fri Oct 11 12:31:02 2002 From: Sean at Blackscreen.org (Sean S Cullen) Date: Fri Oct 11 12:31:02 2002 Subject: [ODE] Box Box Algorithm Message-ID: <45177.24.91.219.122.1034364764.squirrel@mail.blackscreen.org> I thought I remembered someone implementing a version of dBoxBox that will compute more than a single collision point. Is there any chance of getting that put into CVS? From coding at natew.com Fri Oct 11 13:21:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 11 13:21:02 2002 Subject: [ODE] robotic simulation In-Reply-To: <3DA70D4E.725824C6@aist.go.jp> Message-ID: On Sat, 12 Oct 2002, Max Lungarella wrote: > "dynamechs" is a dynamics engine, mainly intended for robotics > simulation (http://dynamechs.sourceforge.net/). recently i've given it > a try, and although i appreciate very much it's speed, i have the > impression, that it's rather hard to construct complex structures - > like robots. When I set out to write a robot simulator (see http://www.natew.com/juice), I looked at both Dynamechs and ODE, and chose ODE for the reason you describe above. In retrospect, I think that Dynamechs would probably only be slightly more difficult to work with. Using ODE, you can created bodies and joints and connect them arbitrarily and everything just works. With Dynamechs, my understanding is that any closed loops need to be handled as special cases. In retrospect, I think that would probably be almost trivial to deal with. If you think of the structure as a graph, where bodies are nodes and joints are edges, you would just create the Dynamechs objects by traversing the graph, and when you find a cycle in the graph (easily detectable), you create one of Dynamechs' "secondary" joints. From russ at q12.org Sat Oct 12 12:16:01 2002 From: russ at q12.org (Russ Smith) Date: Sat Oct 12 12:16:01 2002 Subject: [ODE] Old Cholesky factorization code In-Reply-To: <20021011190523.22176.qmail@web40810.mail.yahoo.com> References: <20021011190523.22176.qmail@web40810.mail.yahoo.com> Message-ID: <20021012121947.20fed8dc.russ@q12.org> > In block-matrix > form (where each entry is a matrix of the form > J*InvM*Jt), I realize that the A matrix is > block-symmetric, BUT, I was wondering... Are the > diagonal entries of the block A matrix themselves > actually symmetric yes: A = J*inv(M)*J' A' = (J*inv(M)*J')' = (J')' * inv(M)' * J' = J*inv(M)'*J' each 6x6 block of M contains a diagonal 3x3 matrix (the mass) and a 3x3 transformed inertia tensor I*. I* = R*I*R' I*' = R*I'*R' I (the inertia tensor) is symmetric, so I* is symmetric, so M is symmetric, so A is symmetric. > In other words, did the Cholesky decomp ever work > properly for A? Or was it just ditched to incorporate > LCP constrains (contacts with friction)? cholesky is not used, i use the L*D*L' factorization instead - but this also needs a symmetric matrix. the LDLT factorization is used on the sub-matrix of A that does not have LCP constraints, then LCP is used incrementally on the rest. russ. -- Russell Smith http://www.q12.org From nathan at whatever.net Sat Oct 12 19:10:02 2002 From: nathan at whatever.net (Nate Waddoups) Date: Sat Oct 12 19:10:02 2002 Subject: [ODE] Community page In-Reply-To: Message-ID: On Thu, 10 Oct 2002, Anselm Hook wrote: > > > I've come to the conclusion that this method of programming behavior > > > creates creatures that tip over too easily though, so most of my time > > > lately has gone into designing a new behavior programming language. > > This sounds interesting - any links up yet? What kinds of features does > your language make it easier to express? No links yet, just some sketches on paper right now. The main problem with the current language is that it allows you to design one behavior, and it will behave according to that "script" no matter what. If the critter falls over, it thrashes about like a fallen wind-up toy (only worse because wind-up toys don't usually have attitude sensors that suffer from gimbal lock). I put script in quotes because the behavior is specified as a directed graph, but it gets compiled down to a script-like sequence of instructions. Anyhow, there's two main features I have in mind for the next version: The main thing is that each behavior will be paired with a "context" function, yielding a value from 0 to 1. The context for a walking behavior might be a relatively upright torso, the hips higher than the feet, and so on. The outputs of the script will be multiplied by the context value. Under the appropriate conditions, the behavior script runs as usual; if the critter is standing on its head, the "walk" script has no effect; if it's leaning heavily to one side, it will only try to take small steps forward (meanwhile, the context is right for a "stand up straight" behavior to take effect...). Second, I want to be able to coordinate a whole bunch of behaviors. This is the part I'm still thinking through. The "context idea addresses part of the problem, particularly at the scale of motor control. But big decisions like "walk, run or crawl?" or "chase or flee?" have me looking for ways to create a hierarchy of behaviors, or fuzzy cognitive maps, or a subsumption approach. I have a bunch of ideas here... part of the problem is I'm not sure which to try first and I'm trying to think of a grand scheme that uses all of them - and yet, is still easy to work with. Mostly I think I need to do more reading. Meanwhile I want to revise my document object model a bit so I can implement undo/redo more easily, and integrate Novodex physics and CD, and create a network interface to Juice so I can implement the new behavior (and editor) as a separate application... and, and, and. So many ideas, so little time. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From max.lungarella at aist.go.jp Sat Oct 12 21:03:01 2002 From: max.lungarella at aist.go.jp (Max Lungarella) Date: Sat Oct 12 21:03:01 2002 Subject: [ODE] robotic simulation References: Message-ID: <3DA8EF87.778199E3@aist.go.jp> hi there, thanks for replying. > When I set out to write a robot simulator (see > http://www.natew.com/juice), i tried "juice", it's pretty cool, and well designed. the only problem that i have with it, is that i cannot export the models i realize. in other words, it would be neat if i could construct something using juice, and be able to import this something in one of my own programs. do you have plans do add similar feature? > Using ODE, you can created bodies and joints and connect them arbitrarily > and everything just works. With Dynamechs, my understanding is that any > closed loops need to be handled as special cases. In retrospect, I think > that would probably be almost trivial to deal with. If you think of the > structure as a graph, where bodies are nodes and joints are edges, you > would just create the Dynamechs objects by traversing the graph, and when > you find a cycle in the graph (easily detectable), you create one of > Dynamechs' "secondary" joints. yep. the only problem, that i have with this approach, is that almost the whole body is some sort of special case - read "hack" - and therefore less intuitive to design. i tried to use dynamechs and i still don't grasp it completely. ode is so easy to use and also aesthetically more pleasant ;) > How detailed do you want the simulation to be? my plan is to simulate a humanoid robot with a reduced number of degrees of freedom, let's say 10. the simulation would have to be fairly accurate, since i'd like to develop the control architecture in software and use this very architecture for the control of a real robot in a second time step. the modeling of the motors does not worry me as much as the modeling of the ground reaction forces, since the feet of my biped robot are not hard, but kind of soft and deformable. cheers, max -- Max Lungarella Neuroscience Research Institute Tsukuba AIST Central 2 Umezono 1-1-1, Tsukuba 305-8568 Japan Tel +81-298-615369 Fax +81-298-615841 http://www.lungarella.com/max/ From johnb003 at hotmail.com Sun Oct 13 00:19:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 00:19:02 2002 Subject: [ODE] Slightly More Complex Car Shocks Simulation Message-ID: I am working on a racing game and to start with I made a hovercraft to avoid using joints and figuring out what works and what doesn't, but now I am working on my rc10 and I've got some problems. Here is the page for my game, I've got a picture of the vehicle on the 'home page': http://web.csuchico.edu/~jb393/urgent Ok so my problem is that I have a few more moving parts than the standard buggy problem. The top red axel thing I am treating as the same body as the carbody, the moving parts are, the wheel, the spring/shock, and the lower axel. So it's really just a puzzle of how to put it together. Let me ask this first, there will likely be a lot of torque and quick movements since the masses are so small, being an remote controlled car, so would it be better to use fewest joints (like one hinge2 joint) and set the other positions manually and rotations manually based on the position of the wheel and body, or maybe add extra joints to add support. For example, with a large mass ratio like that of my lower axel and the carbody, if I use a regular hinge with some axis and apply a force along the same axis but translated out to add leverage, would that hinge want to break. An analogy would be hanging on a cupboard cabinet with all of your weight. Instead of using a hinge then, you could construct a seemingly more stable structure by making a triangle with ball joints, like this where F is the force and y is the vertical axis: |O | \ | \ y O | / ^ | / |F |O | Something I didn't mention, since I was trying to keep things simple is that I made a scripting interface to the physics that corresponds to a 3ds file. This means any kind of hack like setting the position of the shock based on the wheel, I would like to avoid so the scripts can correspond to the existing physics. If it truly is the best solution, I could add my own special kind of joints, I suppose, and make them available for the scripts. The method of connecting the bodies I've been experimenting is as follows: wheel->hinge2joint->shock, shock->sliderjoint(vertical axis)->carbody just this has a lot of error; the shock->sliderjoint->carbody doesn't maintain it's orientation with the carbody (it falls off it's axis) then for the bottom axel I needed a joint that only restricts 2 positional degrees of freedom, it's a combo of a balljoint and a slider... looks like this X====|----O it's kind of a "look at" joint. I would just make fake bodies, and by that I just mean bodies that don't have any corresponding model to draw, or no physical matter but I was scared to use 0 for a mass so they just have very small masses. Ok this post is getting long, I'll leave it at that. _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From johnb003 at hotmail.com Sun Oct 13 07:53:01 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 07:53:01 2002 Subject: [ODE] Springs Message-ID: If I want a shock between two bodies, would it be more efficient to use calculate the simple spring physics and apply direct forces to the bodies, or create some kind of joint and use CFM and ERP to make it soft? Also can someone clarify for me a bit more about ERP and CFM. What values make them behave which way and what purpose do they serve for ode exactly? Thanks, John Butterfield _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From jeffreyweber at hotmail.com Sun Oct 13 12:45:02 2002 From: jeffreyweber at hotmail.com (Jeff Weber) Date: Sun Oct 13 12:45:02 2002 Subject: [ODE] Springs Message-ID: I believe all that info is in the ode document. somewhere it explains how to use cfm and erp to mimick spring. ----Original Messa ge Follows---- From: "John Butterfield" To: ode at q12.org Subject: [ODE] Springs Date: Sun, 13 Oct 2002 07:52:48 -0700 If I want a shock between two bodies, would it be more efficient to use calculate the simple spring physics and apply direct forces to the bodies, or create some kind of joint and use CFM and ERP to make it soft? Also can someone clarify for me a bit more about ERP and CFM. What values make them behave which way and what purpose do they serve for ode exactly? Thanks, John Butterfield _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/od _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From martin at metahuman.org Sun Oct 13 13:17:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Sun Oct 13 13:17:02 2002 Subject: [ODE] Springs References: Message-ID: <3DA9D499.726503D7@metahuman.org> Hey John, I think the best test is, will the spring force change significantly in one time step? If so, you'd probably be better off with a constraint (i.e. a joint). If not, applying a force/torque using simple spring physics is probably better. John Butterfield wrote: > > Also can someone clarify for me a bit more about ERP and CFM. What values > make them behave which way and what purpose do they serve for ode exactly? That's answered in the ODE docs. It even tells you how to convert ERP and CFM values to spring parameters and back. - Martin From johnb003 at hotmail.com Sun Oct 13 20:42:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Sun Oct 13 20:42:02 2002 Subject: [ODE] Hinge Forces Message-ID: I drew a picture to help illustrate my problem: http://web.csuchico.edu/~jb393/urgent/images/hingeforce.gif If I apply force F to body m2, and it has one hinge joint to m1, will there be a much larger error than if I make another joint like in the picture? Is it better to represent the dynamics as simple as I can, or with a more structurally sound design? _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From russ at q12.org Sun Oct 13 21:18:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 13 21:18:01 2002 Subject: [ODE] Hinge Forces In-Reply-To: References: Message-ID: <20021013212244.21c5a8f6.russ@q12.org> > If I apply force F to body m2, and it has one hinge joint to m1, will > there be a much larger error than if I make another joint like in the > picture? the answer is that the configuration on the left is the correct one. one hinge joint is all you need to resist *any* amount of force that tries to push the hinge out of alignment. ODE does not model the breakable hinges that you buy from the hardware store, it models ones that are infinitely strong. having said this, from time to time you may see joints come slightly out of alignment, but this error usually has nothing to do with the forces that are applied to them. reasons for error might be: * the rotation of the joined bodies per timestep is large. * CFM is too high (this will give you "spongy" joints). * there is numerical error caused by redundant constraints. the configuration on the right side of your picture falls into this last category - you have two joints trying to do the same job (i.e. trying to limit the same degree of freedom) so this can cause numerical error (especially if CFM is small) and totally ruin the simulation. > Is it better to represent the dynamics as simple as I can, or with... as in most things, keeping it simple is best. but, as in most things, figuring out what the simple solution is can by tricky. russ. -- Russell Smith http://www.q12.org From johnb003 at hotmail.com Mon Oct 14 00:17:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 00:17:02 2002 Subject: [ODE] timestep Message-ID: Is there any harm in using variable times for the worldstep? I'd like to make things based on time not framerate and if I must use a constant time interval it seems like I'd have to use mutliple threads which would then cause the need for symaphores and it gets ugly from there. If I do a loop each frame for the amount of time that has passed, then I have large errors since the time passed could be like 1.5 times the time step. I just thought of an idea of truncating and adding the remainder to the next frame. But then I can imagine it being jerky. The best solution I can think of would be if I could just use variable time steps. _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From Tomas.Sakalauskas at axel-group.com Mon Oct 14 02:50:02 2002 From: Tomas.Sakalauskas at axel-group.com (Tomas Sakalauskas) Date: Mon Oct 14 02:50:02 2002 Subject: [ODE] timestep Message-ID: Each frame I tried to make as much complete steps as possible and then in the end perfom step equal to remaining time. I got problems when very small time steps were remaining. Then I added the time to next frame and used fixed timesteps, but either precision was not good enough or I had to use small timesteps, but then it consumed too much CPU. Variable timesteps seem to be ok if the variation is relatively small (or actually if minimal timesteps do not get close to 0). For this I have two timesteps defined - normal and minimal. Each frame I try to make as much normal steps as possible, if remaining time is more than minimal, I perform timestep equal to remaining time, otherwise I add the remainder to next frame. This way I can control both CPU consumption and precision of simulation - time error gets no bigger than minimal step. Writing this message, came up with the following strategy: - let T be the time needed to simulate. - calculate how many full steps you can perform this frame - N, - perform N timesteps lasting T/N, if N=0 and T is too small, just add it to next frame. This way timestep varies a little (but gets no more than DESIRED_STEP*2), and you get small time error only in the case that framerate is faster than minimal timestep you allow. If you' make N+1 steps lasting T/(N+1) instead, you will get range (DESIRED_STEP/2, DESIRED_STEP]. Hope that helps, Tomas -----Original Message----- From: John Butterfield [mailto:johnb003 at hotmail.com] Sent: Monday, October 14, 2002 9:17 AM To: ode at q12.org Subject: [ODE] timestep Is there any harm in using variable times for the worldstep? I'd like to make things based on time not framerate and if I must use a constant time interval it seems like I'd have to use mutliple threads which would then cause the need for symaphores and it gets ugly from there. If I do a loop each frame for the amount of time that has passed, then I have large errors since the time passed could be like 1.5 times the time step. I just thought of an idea of truncating and adding the remainder to the next frame. But then I can imagine it being jerky. The best solution I can think of would be if I could just use variable time steps. _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Mon Oct 14 09:54:01 2002 From: coding at natew.com (Nate W) Date: Mon Oct 14 09:54:01 2002 Subject: [ODE] timestep In-Reply-To: Message-ID: On Mon, 14 Oct 2002, John Butterfield wrote: > Is there any harm in using variable times for the worldstep? I use variable timesteps in Juice, and it works fine. The interval between calls to dWorldStep depends on the time it took to call dWorldStep and re-draw the scene. Simple scenes get fast frame rates, complex structures with lots of joints get lower frame rates, and really really complex situations get really low frame rates and they start to act funny. I'm not aware of a really graceful way to handle running out of CPU power though. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Mon Oct 14 10:54:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 14 10:54:02 2002 Subject: [ODE] timestep In-Reply-To: Message-ID: > Is there any harm in using variable times for the worldstep? in theory there shouldn't be, in practice there is one small problem. if you take a small step then follow it by a much larger step then then any error-correcting velocity that was applied to the bodies in the first step will be extrapolated into a much larger velocity in the second step, potentially causing bodies to 'pop' away from each other. this problem has been on my list of things to fix for a while - i have a fix that should work well but will take time to implement (the underlying cause of the problem is rather subtle). russ. -- Russ Smith http://www.q12.org/ From ps_yumemi at yahoo.com Mon Oct 14 11:21:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 14 11:21:02 2002 Subject: [ODE] networking Message-ID: <20021014182023.92351.qmail@web40508.mail.yahoo.com> hello, i have a problem networking my ode robot simulator program. the program shows robots from different computers but they do not collide with each other. instead they go through each other. i created both of them using the same functions but they don't seem see each other. what could be wrong with my program? is it nearcallback or some other function? thanks pia __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From coding at natew.com Mon Oct 14 15:47:02 2002 From: coding at natew.com (Nate W) Date: Mon Oct 14 15:47:02 2002 Subject: [ODE] networking In-Reply-To: <20021014182023.92351.qmail@web40508.mail.yahoo.com> Message-ID: On Mon, 14 Oct 2002, pia dalusong wrote: > i have a problem networking my ode robot simulator > program. the program shows robots from different > computers but they do not collide with each other. Are geom objects being created and sized and positioned correctly for all of the bodies? Are all of the geom objects in the same space? When I was having trouble with collisions, I found it helpful to dump the names of each object at the very start of my collision callback. If you're not using the user-data pointer, set it to a char pointer with the object's name. If you are using the user-data pointer to point to an object of a class that you've defined, add a 'name' member to that class. This makes all kinds of debugging easier, IME. Also, out of curiousity, how are you doing the networking? Does all of the simulation take place on a server, or do the clients do some of the simulation math? I've been pondering a networked application using ODE for a while and I'm looking for ideas. I also thought it might be cool to create a simple networking 'contrib' for ODE, since interactive networked simulations could be used to do all kinds of fun stuff. It's an interesting distributed-computing problem, though. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From johnb003 at hotmail.com Mon Oct 14 19:35:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 19:35:02 2002 Subject: [ODE] networking Message-ID: >Also, out of curiousity, how are you doing the networking? Does all of >the simulation take place on a server, or do the clients do some of the >simulation math? I've been pondering a networked application using ODE >for a while and I'm looking for ideas. I have not actually implemented my netcode but I thoroughly thought about it and decided on how I'm going to do it. There are several trades offs I could see from server-side to client-side and who tells who what collisions happen. Thought the implementation you use is dependent on what your program is modeling. I am doing a remote-controlled racing game, but not like revolt... if you're curious just check out my page: http://web.csuchico.edu/~jb393/urgent I started thinking about client-side physics, but being a racing game it could be really weird. Here is an example: Your actual position is about a car's distance behind the other player... Through lag though, the other player seems right next to you. If you were to ram that car, then tell the server hey I hit him, and then the sever relay that to the the other player and bounce him away from you, you'd think it was perfectly legitimate. Now from the prospective of the car in front of you. That player sees you even further back than you really are, (like 2 car distances) so then he sees you move to the side and out of no where he gets bumped off course... Ok so this method obviously has it's flaws for a racing game but for a first person shooter or something, it would be necessary so that you could shoot AT the player... not in front of them. The other main method is to do things server side, the question then becomes how much to do on the server and how much to do on the client-side. Lets say you did everything server-side... this would be the absolute most accurate if you told the server I am turning left and it turned you left and then sent back the positions of you and the other players but then you have lagged controls and no one likes that. If you only plan on playing this on a lan, maybe the lag is not an issue for you and this method is best. The method I plan on using for my racing game is a hybrid of the two. I will keep track of the vehicles on the server and do collision detection (I have more to say about this... possibly in my next post) there between the vehicles. I however do the controls for my vehicle on the client and send the server information about my position rotation etc... depending on how accurate you might just send the information about the vehicle or model whatever in whole and have the server guess what orientation the bodies have. For example the rotation of the wheels and the locations of the shocks and all that or just the vehicle altogether... Anyway with this method, one might have to predict a bit or aim in front of the other car slightly to make the collision on the server happen... I'll attempt to fix this by trying to show how the car might look after this much time and then use some kind of frame to frame dampening to move the car from where I projected it to be to where the next packet says it is. I hope this was thought provoking, -John Butterfield _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From jeffreyweber at hotmail.com Mon Oct 14 20:23:01 2002 From: jeffreyweber at hotmail.com (Jeff Weber) Date: Mon Oct 14 20:23:01 2002 Subject: [ODE] fastcar vs. ode Message-ID: I apologize if this has been asked previously, but I'm currently researching different physics engines for simulating vehicles. Does anyone have any experience with "fastcar" http://www.oxforddynamics.co.uk/ How does it compare to ode? _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From nick.mcevoy at dsto.defence.gov.au Mon Oct 14 21:17:02 2002 From: nick.mcevoy at dsto.defence.gov.au (McEvoy, Nick) Date: Mon Oct 14 21:17:02 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <108E7D907871D6118B5000306E0189F82005EA@ednex504.dsto.defence.gov.au> Peter wrote: >Nick, did any of these experiments work? (i.e. get rid of the >wheel-bending problem)? No I have not yet been able to rid myself of the wheel-bending problem as you turn corners at high speed (I noticed the buggy_demo has the same 'subtle feature'). I tried (each sim step)... - dBodySetFiniteRotationMode() - dBodySetFiniteRotationAxis() It reduced the problem but did not remove it completely. I tried different combinations of contact values ERP, CFM & slip, also gravity, I have not yet try different wheel/body mass & geoms. All my changes either increased or reduced bendy wheels but did not remove it. The problem is that bendy wheels make my 'car' impossible to control ... it looks like someone attached the wheels with a rubber band ... hilarious fun if thats the sort of game I was trying to write ! :) (russ/ode_users?) Why is it not possible to totally stop the hinge2 'axles' becoming 'bent' ? Nick From p.terdiman at wanadoo.fr Mon Oct 14 21:29:01 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Mon Oct 14 21:29:01 2002 Subject: [ODE] fastcar vs. ode References: Message-ID: <03cf01c27403$1f2d94c0$0e00000a@pierre> > I apologize if this has been asked previously, but I'm currently researching > different physics engines for simulating vehicles. Does anyone have any > experience with "fastcar" http://www.oxforddynamics.co.uk/ > > How does it compare to ode? FastCar uses penalty methods, so I'd say it's faster, but not as stable. (No, I've never used it.) Pierre From ngbinh at glassegg.com Mon Oct 14 22:05:01 2002 From: ngbinh at glassegg.com (Nguyen Binh) Date: Mon Oct 14 22:05:01 2002 Subject: [ODE] fastcar vs. ode In-Reply-To: References: Message-ID: <1102252288.20021015120049@glassegg.com> JW> I apologize if this has been asked previously, but I'm currently researching JW> different physics engines for simulating vehicles. Does anyone have any JW> experience with "fastcar" http://www.oxforddynamics.co.uk/ JW> How does it compare to ode? FastCar is specialized for vehicle. ODE is generic physics package. So say, for vehicle physics FastCar "maybe" better. But we shouldn't compare a 20.000 bulks package with a free open source one... And more, technically ,as far as I know , Fastcar use penalty method so it may be fast but not stable. -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From johnb003 at hotmail.com Mon Oct 14 22:35:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Mon Oct 14 22:35:02 2002 Subject: [ODE] Collision Detection - Quick Question About ODE Internals Message-ID: struct dContactGeom { dVector3 pos; // contact position dVector3 normal; // normal vector dReal depth; // penetration depth dGeomID g1,g2; // the colliding geoms }; Does ODE need the dGeomID's when doing the dynamics? For example, if I use alternate collision detection, do I have to use geoms? _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From ps_yumemi at yahoo.com Mon Oct 14 22:50:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 14 22:50:01 2002 Subject: [ODE] networking In-Reply-To: Message-ID: <20021015054936.58434.qmail@web40512.mail.yahoo.com> Someone pointed out to me that my question was a little vague so i'll try to make my program clearer. I have a robot simulator program that can connect to other simulations using directx8 directplay using a peer to peer connection. I connect through a LAN connection and I'm doing this so I can simulate two robots at the same time in the same environment even if the specs for the two robots are not in the same computer. It's my thesis project so I can graduate in college. I just send the speed and direction of the robot in my pc to the other computer and vice versa. i created both mobots so they all have corresponding dBodyIDs and dGeomIDs. I guess I'm just worried coz the only things i considered in the nearcallback function are the sensors. and yes we were planning to distribute this program as an open source program after i finish it. any comments or suggesions are welcome. thanks > __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From russ at q12.org Mon Oct 14 23:19:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 14 23:19:02 2002 Subject: [ODE] Collision Detection - Quick Question About ODE Internals In-Reply-To: References: Message-ID: <20021014232322.0ea0ba61.russ@q12.org> > Does ODE need the dGeomID's when doing the dynamics? For example, if I > use alternate collision detection, do I have to use geoms? the geom IDs (g1 and g2) are in the contact structure because you may pass groups to dCollide and then get returned a list of contacts between (potentially) many different bodies. in this case your code would have to examine each g1,g2 and e.g. figure out which body it's for, create the contact joint on that body, etc. if you're using another collision package that doesn't have this feature, you just set g1,g2 to 0 (or don't set them at all) and remember not to use them in your code. russ. -- Russell Smith http://www.q12.org From kaffiene at xtra.co.nz Tue Oct 15 14:33:02 2002 From: kaffiene at xtra.co.nz (Peter) Date: Tue Oct 15 14:33:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005EA@ednex504.dsto.defence.gov.au> Message-ID: <008601c27492$2ed71510$5c02a8c0@peter> > Peter wrote: > > >Nick, did any of these experiments work? (i.e. get rid of the > >wheel-bending problem)? > > No I have not yet been able to rid myself of the wheel-bending problem as > you turn corners at high speed (I noticed the buggy_demo has the same > 'subtle feature'). > > I tried (each sim step)... > - dBodySetFiniteRotationMode() > - dBodySetFiniteRotationAxis() > > It reduced the problem but did not remove it completely. > > I tried different combinations of contact values ERP, CFM & slip, also > gravity, I have not yet try different wheel/body mass & geoms. All my > changes either increased or reduced bendy wheels but did not remove it. > > The problem is that bendy wheels make my 'car' impossible to control ... > it looks like someone attached the wheels with a rubber band ... hilarious > fun if thats the sort of game I was trying to write ! :) That was pretty much exactly the results I got - this problem has completely killed my ODE project. > (russ/ode_users?) Why is it not possible to totally stop the hinge2 > 'axles' becoming 'bent' ? The question has been asked a lot of times, but it seems the only people who ever discuss it are people (like me) who want to use ODE, but don't know enough physics to fix it (sheesh! I find comprehending ODE hard enough for my little brain!) But it *would* be nice if Russ or someone else equally en-clued could chime in? Cheers, Peter. From Brad at fie.us Tue Oct 15 16:10:02 2002 From: Brad at fie.us (Brad Friedman) Date: Tue Oct 15 16:10:02 2002 Subject: [ODE] VStudioNet Message-ID: <3DACA09A.50505@fie.us> Hello. I just joined this list just now. So if this has already been gone over, please excuse my ignorance. I grabbed the release of ODE 0.3 and went about trying to get it to load in Visual Studio .net. I found the project files in the contrib directory of the web-based CVS useful. However, I did encounter a problem, and I did solve it. It might be worth updating the project files. When I changed the preprocessor directive from dDOUBLE to dSINGLE, it stopped compiling correctly. A little work brought me to a section of code regarding HUGE_VAL and HUGE_VALF. I then relized the project file did not have a "MSVC" preprocessor directive and therefore was trying to compile incorrectly. I realize the VS projects were in the contrib directory for a reason. However, its probably worth updating them to have the "MSVC" preprocessor directive by default. Thanks. -Brad Friedman From russ at q12.org Tue Oct 15 16:32:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 15 16:32:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <008601c27492$2ed71510$5c02a8c0@peter> Message-ID: > > (russ/ode_users?) Why is it not possible to totally stop the hinge2 > > 'axles' becoming 'bent' ? well, anything is possible :) the question is, why does it happen in the first place. here's the answer: ODE stores the position and orientation of each body independently. if there is any error in the integration step then it is possible for the bodies to be in positions/orientations where the joints do not line up properly (i call this 'joint error', it is the same thing as the wheels getting bent in hinge2). there are many sources of joint error, but the surest way to introduce error is to have two or more jointed bodies that are rotating very fast with respect to each other. this is because the physics model and the integrator use certain linear assumptions about the way that bodies will move during a time step - if the bodies are rotating so fast that the new configuration at the end of the step is completely different, then these linear assumptions are just plain wrong (and the bodies will not be moved to the correct places). this is a problem that afflicts all 'cartesian coordinate' or 'lagrange multiplier based' simulators. reduced coordinate simulators like dynamecth dont have this problem (for the bodies along the main tree), because the coordinate system they use simply doesn't allow for the possibility that the bodies will not be aligned correctly (the same problem will occurr when you close any loops however). ODE has a partial fix for this problem, which is the dBodySetFiniteRotationAxis() function and friends. but note that this is an exercise in error reduction, not error elimination - it will increase the speed at which a vechicle can be reliably made to move. for *very* fast moving vehicles where the wheels rotate a large proportion of one cycle per timestep, completely eliminating the error is going to require a lot of fiddling. another approach for simulating wheels is to 'fake them' or 'raycast them' - these approaches are effective for computer games, because the difference between 'perfect physics' and 'physics that is completely wrong' is not generally noticeable to the player (or even to an experienced physicist). the only caveat here is that with increasing physical realism comes the chance for better emergent (and/or synergistic) behavior coming out of the simulation. you have to be careful that you are not faking so much that your resulting behavior is little better than hard-coded animation. will ODE support these methods in the future? it's possible. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Tue Oct 15 19:18:02 2002 From: coding at natew.com (Nate W) Date: Tue Oct 15 19:18:02 2002 Subject: [ODE] VStudioNet In-Reply-To: <3DACA09A.50505@fie.us> Message-ID: On Tue, 15 Oct 2002, Brad Friedman wrote: > When I changed the preprocessor directive from dDOUBLE to dSINGLE, it > stopped compiling correctly. A little work brought me to a section of > code regarding HUGE_VAL and HUGE_VALF. I then relized the project file > did not have a "MSVC" preprocessor directive and therefore was trying to > compile incorrectly. That would be my mistake. I was using dDOUBLE until I started using the tri-collider extension, and after I found the MSVC problem with the TC project, I neglected to also fix it in the non-TC project file. I've attached a .vcproj file that takes care of this. Russ, could you add it to the CVS, under contrib/MSVC7/ode_default, replacing the existing file? Thanks, guys. -- Nate Waddoups Redmond WA USA http://www.natew.com -------------- next part -------------- From coding at natew.com Tue Oct 15 19:28:02 2002 From: coding at natew.com (Nate W) Date: Tue Oct 15 19:28:02 2002 Subject: [ODE] VStudioNet In-Reply-To: Message-ID: This thread has reminded me of something I've been meaning to ask... is anyone else out there using VS.net and ODE+tri-collider? In my case, the compiler warning messages often have the wrong line numbers, and debugging induces big headaches fast because the debugger usually goes to the wrong line in the source file. Is anyone else seeing this? -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Tue Oct 15 19:40:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 15 19:40:02 2002 Subject: [ODE] VStudioNet In-Reply-To: References: <3DACA09A.50505@fie.us> Message-ID: <20021015194355.1e9eeb85.russ@q12.org> > I've attached a .vcproj file that takes care of this. Russ, could you > add it to the CVS, under contrib/MSVC7/ode_default, replacing the existing > file? done. russ. -- Russell Smith http://www.q12.org From Tomas.Sakalauskas at axel-group.com Wed Oct 16 00:13:02 2002 From: Tomas.Sakalauskas at axel-group.com (Tomas Sakalauskas) Date: Wed Oct 16 00:13:02 2002 Subject: [ODE] VStudioNet Message-ID: Yes. You have to replace CRCRLF in files with CRLF, this confuses VS.NET. Tomas -----Original Message----- From: Nate W [mailto:coding at natew.com] Sent: Tuesday, October 15, 2002 8:36 PM To: ode at q12.org Subject: Re: [ODE] VStudioNet This thread has reminded me of something I've been meaning to ask... is anyone else out there using VS.net and ODE+tri-collider? In my case, the compiler warning messages often have the wrong line numbers, and debugging induces big headaches fast because the debugger usually goes to the wrong line in the source file. Is anyone else seeing this? -- Nate Waddoups Redmond WA USA http://www.natew.com _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode From ps_yumemi at yahoo.com Wed Oct 16 00:44:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Wed Oct 16 00:44:02 2002 Subject: [ODE] networking Message-ID: <20021016074301.19079.qmail@web40514.mail.yahoo.com> hello first of all thanks for replying. I'm not using a client/server type of connection. I'm using a peer to peer connection. This means that I only have one program and though it may act as a server at times it doesn't. The movements of the a robot is calculated by the local computer and it just sends a message containing the speed and orientation of the mobot to the other computers. Any computer sends a message to all the other computers connected to the same simulation like a broadcast message. I use ODE for practically everything even the positioning. and yes, all the geoms and bodies are created properly. although yes I do have problems concerning the lag. and i'm still working on that. any suggestions are welcome. and all the robots exist in the same space and world. thanks pia __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From johnb003 at hotmail.com Wed Oct 16 01:10:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Wed Oct 16 01:10:02 2002 Subject: [ODE] IRC Community Message-ID: If anyone is interested, I started a channel on efnet for ode... as you might have guessed it's #ode. I encourage anyone to go there that is interested in ode, can contribute to the community, has questions, or just wants to say hi. I'll be hanging around there as Return0. Thanks -John Butterfield If people start to show up maybe russ can mention it on his page or something. _________________________________________________________________ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 From I.Munro at herts.ac.uk Wed Oct 16 01:38:13 2002 From: I.Munro at herts.ac.uk (Ian Munro) Date: Wed Oct 16 01:38:13 2002 Subject: [ODE] VStudioNet Message-ID: Nate wrote: > This thread has reminded me of something I've been meaning to > ask... is > anyone else out there using VS.net and ODE+tri-collider? In > my case, the > compiler warning messages often have the wrong line numbers, > and debugging > induces big headaches fast because the debugger usually goes > to the wrong > line in the source file. Is anyone else seeing this? I'm using vs.net and ode (but not tri-collider). I've come across similar problems when debugging, but only when I've accidentally switched on compiler optimisation. And the lines I'm trying to debug have been optimised out of existence. Ian From Remko at act-3d.com Wed Oct 16 06:26:02 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Wed Oct 16 06:26:02 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <277399354.5556039.98@server> You can fix the viual appearance of the wheel easily though. Just use the position from ODE, get the wheel rotation angle and create your own rotation matrix from this angle and the matrix of the vehicle body. This will not improve the handling of the car but at least the image looks right :) Note: you need to calculate the pitch rotation of the wheel yourself because Ode can not provide this info (hint.. hint.. Russ :) ). -Remko From ericc at xenopi.com Wed Oct 16 10:02:02 2002 From: ericc at xenopi.com (Eric Cha) Date: Wed Oct 16 10:02:02 2002 Subject: [ODE] networking In-Reply-To: <20021016074301.19079.qmail@web40514.mail.yahoo.com> Message-ID: <000001c27536$37d05880$6401a8c0@donald> Pia, Your problem is a bit tricky to pin down, but here is my theory: Since you are controlling each robot separately (via different computers), any collisions detected by a given computer have to be transmitted (propagated) to the other computers. You didn't mention whether or not you are transmitting collision information in your program, but I am going to assume that you are.. So, assuming you are propagating collision info properly (although in a peer-to-peer topology this is going to be tricky..), the other problem may be (depending on how your network code functions) one of "lag induced information negation".. What I mean is, computer "A" determines a collision has occurred and transmits the info to computer "B". However, because of lag, computer "B" transmits a new position to "A" before receiving the collision info from "A". The new position info from "B" then OVERRIDES the collision that "A" detected, and forces "A" to put it's representation of "B" into the new spot. Computer "B" finally receives the collision info, but disregards it because it happened at a position which is not current.. This scenario assumes MANY things about your network code, so it is not a definite answer. A better way (for physics) to do things would be to designate one computer as "the physics simulator". Do the entire scene simulation on that computer, and then just transmit position/orientation/velocity updates to other computers. Of course, other computers would transmit user inputs (or even impulse/velocity/acceleration changes) to the simulator computer to control their respective robot. Don't know if that helped you or not, but that's my .02. =) Eric > -----Original Message----- > From: ode-admin at q12.org [mailto:ode-admin at q12.org] On Behalf > Of pia dalusong > Sent: Wednesday, October 16, 2002 12:43 AM > To: ode at q12.org > Subject: [ODE] networking > > > hello > > first of all thanks for replying. > I'm not using a client/server type of connection. I'm > using a peer to peer connection. This means that I > only have one program and though it may act as a > server at times it doesn't. The movements of the a > robot is calculated by the local computer and it just > sends a message containing the speed and orientation > of the mobot to the other computers. Any computer > sends a message to all the other computers connected > to the same simulation like a broadcast message. > I use ODE for practically everything even the > positioning. and yes, all the geoms and bodies are > created properly. > > although yes I do have problems concerning the lag. > and i'm still working on that. any suggestions are > welcome. and all the robots exist in the same space > and world. > > thanks > > pia > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From anselm at hook.org Wed Oct 16 12:10:02 2002 From: anselm at hook.org (Anselm Hook) Date: Wed Oct 16 12:10:02 2002 Subject: [ODE] networking In-Reply-To: <000001c27536$37d05880$6401a8c0@donald> Message-ID: Hi, Eric probably has the best solution (do all the dynamics on one machine); networking physics is a bit of an oxymoron - you have high frequency events being propagated over a sluggish pipe. The naive scheme is to use a heartbeat to syncronize state between machines. Presumably if all machines are always in the same state then any new inputs delivered to all machines simultaneously will have the same effect. This would result in unacceptable delays however. If you are 70 ms from a server then your sim is at least 140ms delayed. Humans start to notice delay at around 20ms and ordinary inter-continental phone conversations become difficult with >70ms delays. Modems typically incur a 30ms delay and even tcp packet building and buffering can incur a 10ms delay... obviously you need a carefully chosen hack. If you look on the net there were once a number of companies that specialized in fast networking for games (I think most of them are bankrupt now). One scheme that I liked was a dual simulation scheme: There were two instances of the simulation running - one that was current and speculative (allowing gratifying instant feedback) and the other was an authoritative simulation that used an ordinary heartbeat but suffered from the full latency of the network. The current simulation was periodically (once every tenth of a second or so) re-computed forward from the correct but temporally old simulation. So most of the time things would work, but every so often the actors would pop around a bit. This is probably the best possible scheme one can hope to achieve although it does put a large load on the client machines. Also there is quite a bit of research at Darpa and in some of the game dev journals about various robust networking schemes. Another scheme (Russ once mentioned) is the idea of a networked constraint; that maintains the force interaction between objects over a network (hmm, sounds like quantum physics). He'd have to explain that. Here is a trivial scheme I've used for non-dynamics networking. Your mileage may vary - it is highly inaccurate - it simply creates a reasonably believable 'fiction' without forcing all machines to be syncronized or forcing the load to be computed on the server. But note that it is a hack. 1) First one designates one instance of an object as the "authoritative instance" and the other instances of that same object (as exist on each separate machine) as the "ghosts" or non-authoritative instances. 2) Requests to interact with any object (in state changing ways) have to be routed to the authoritative instance. The authoritative instance then echoes a second message indicating result states that all ghosts should seek to be in. (A vanilla client server network like say 'Quake' therefore is emulated by simply having all authoritative instances reside on the server rather than on the client leaf nodes of the network. A peer to peer network is designed by marking non-server objects as authoritative and forcing requests to be re-routed to that instance (often involving network traffic)). 3) It is ok for a ghost to locally speculate about what it should do when it receives an impact - but throw away that information when more authoritative feedback arrives. This often results in a ghost being translated part way into another object - this inter-penetration can however help the simulation as will be discussed below. So for example: Lets pretend you have p2p network of two machines and two robots. Each machine is going to have an instance of each robot. I like to draw out these instance graphs using a simple c like notation - in this case it might look like this: network { machine1 { robot1 { is_authoritative { yes } request_impact{} } robot2 { is_authoritative { no } where_is_authority { machine2:robot2 } request_impact{} } } machine2 { robot1 { is_authoritative { no } where_is_authority { machine1:robot1 } request_impact{} } robot2 { is_authoritative { yes } request_impact{} } } } Any requests to apply forces to an object get sent to the authority first and the authority echoes out a real force to apply. A ghost is treated like a statue; it simply doesn't move right away when you hit it. An elaboration of this would be to allow ghosts to be simulated normally but for the authority to transmit all authoritative state (position, current forces) to all ghosts after each new force. This would result in inter-penetration as ghosts were popped to new locations... but has worked ok for me in the past. I would even propagate extremely high level events such as "cross bridge" and allow each ghost to fulfill the event as it wished - creating often quite different but plausibly believable fictions. Anyway, as I said, your mileage may vary - it really depends on what you're trying to do. If you simply can't afford to compute the simulation twice, and if all you care about is some reasonably believable non-diverging physics then this might be acceptable - it is certainly good enough for most games. Today I'd probably use something more robust myself though. Hmmm, I wonder what a networked version of 'Juice' would be like. Robot wars anybody? :-). - a On Wed, 16 Oct 2002, Eric Cha wrote: > Pia, > > Your problem is a bit tricky to pin down, but here is my theory: > > Since you are controlling each robot separately (via different > computers), any collisions detected by a given computer have to be > transmitted (propagated) to the other computers. You didn't mention > whether or not you are transmitting collision information in your > program, but I am going to assume that you are.. > > So, assuming you are propagating collision info properly (although in a > peer-to-peer topology this is going to be tricky..), the other problem > may be (depending on how your network code functions) one of "lag > induced information negation".. What I mean is, computer "A" determines > a collision has occurred and transmits the info to computer "B". > However, because of lag, computer "B" transmits a new position to "A" > before receiving the collision info from "A". The new position info > from "B" then OVERRIDES the collision that "A" detected, and forces "A" > to put it's representation of "B" into the new spot. Computer "B" > finally receives the collision info, but disregards it because it > happened at a position which is not current.. > > This scenario assumes MANY things about your network code, so it is not > a definite answer. > > A better way (for physics) to do things would be to designate one > computer as "the physics simulator". Do the entire scene simulation on > that computer, and then just transmit position/orientation/velocity > updates to other computers. Of course, other computers would transmit > user inputs (or even impulse/velocity/acceleration changes) to the > simulator computer to control their respective robot. > > Don't know if that helped you or not, but that's my .02. =) > > Eric > > > -----Original Message----- > > From: ode-admin at q12.org [mailto:ode-admin at q12.org] On Behalf > > Of pia dalusong > > Sent: Wednesday, October 16, 2002 12:43 AM > > To: ode at q12.org > > Subject: [ODE] networking > > > > > > hello > > > > first of all thanks for replying. > > I'm not using a client/server type of connection. I'm > > using a peer to peer connection. This means that I > > only have one program and though it may act as a > > server at times it doesn't. The movements of the a > > robot is calculated by the local computer and it just > > sends a message containing the speed and orientation > > of the mobot to the other computers. Any computer > > sends a message to all the other computers connected > > to the same simulation like a broadcast message. > > I use ODE for practically everything even the > > positioning. and yes, all the geoms and bodies are > > created properly. > > > > although yes I do have problems concerning the lag. > > and i'm still working on that. any suggestions are > > welcome. and all the robots exist in the same space > > and world. > > > > thanks > > > > pia > > > > > > --- > Outgoing mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > From Brad at fie.us Wed Oct 16 13:28:02 2002 From: Brad at fie.us (Brad Friedman) Date: Wed Oct 16 13:28:02 2002 Subject: [ODE] networking References: Message-ID: <3DADCC02.5050409@fie.us> I highly recommend hopping onto www.GameDev.net and looking up articles on dead reckoning. In particular, I recomend this one as a start: http://www.gamedev.net/reference/programming/features/targeting/ You can then dive down to other articles for actual code. You'll also want to think in terms of TCP, UDP and half TCP solutions in your networking. Half TCP solutions will likely want to guarontee order but not receipt of packts. Or alternatively, you could guarontee receipt but not order. Generally speaking, you need to design a simulation from the ground up to work with physics over the network. Its not something to add in later. And you need to get used to the idea that the client will always be in error. The server's representation will not be 100% accurate. It will likely be making spontaneous changes. The clients smooth out the changes at the user's end. If you're designing your program for a LAN with less than 10ms lag, thats a different story of course. But you do also need to factor in the processing time. Its not just netoworking lag. -Brad From nick.mcevoy at dsto.defence.gov.au Wed Oct 16 18:03:01 2002 From: nick.mcevoy at dsto.defence.gov.au (McEvoy, Nick) Date: Wed Oct 16 18:03:01 2002 Subject: [ODE] RE: Wheel rotation problem Message-ID: <108E7D907871D6118B5000306E0189F82005F6@ednex504.dsto.defence.gov.au> > Peter wrote: >That was pretty much exactly the results I got - this problem has >completely killed my ODE project. That is the way I'm heading too !!! It's a damn shame cause ODE is great stuff generally ! But I'm not one to give up easily. > Russ wrote: >well, anything is possible :) the question is, why does it happen in the >first place. here's the answer: > Thanks Russ for the nice long answer (in physics terms) but no real (good) solution (in the short term at least). :( Any other hints on the best setup of chassis & wheel mass and dimensions (including contact params) to reduce the problem. eg. should I have heavy/light chassis, heavy/light wheels, large/small diam wheels ... I suppose it should be obvious if I think about it for a moment ... thats my problem sometimes I type (incl. my code) then think later. I'll also check my timestep size as well. > Remko wrote: >You can fix the viual appearance of the wheel easily though. Yes I suppose I could fix the visual appearance ... but I don't want to do too many fake-hacks (I've already got enough) ... I like something to look and feel realistic as possible. I'll follow what Russ said '[its an] exercise in error reduction, not error elimination' ... and keep fiddling and let you all know if I find the optimal values. Nick From coding at natew.com Wed Oct 16 19:40:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 19:40:02 2002 Subject: [ODE] RE: Wheel rotation problem In-Reply-To: <108E7D907871D6118B5000306E0189F82005F6@ednex504.dsto.defence.gov.au> Message-ID: On Thu, 17 Oct 2002, McEvoy, Nick wrote: > Thanks Russ for the nice long answer (in physics terms) but no real > (good) solution (in the short term at least). :( I must admit I have very little experience using ODE to simulate a car, but I thought he did offer a good solution... or at least he said something that sounded to me like the beginnings of a solution to the wheel problem: fake them. When ODE generates contacts for the wheel-ground intersection, treat it as a frictionless contact, so ODE just keeps things from interpenetrating (you'll also get sideways forces if you're on a slope, which is probably good). Then, use your own code to compute the forces that *should* be there. ODE's friction model is pretty simple (as it should be, IMO), so if you want a really good model of tire forces for your project, you'll end up calculating those forces outside of ODE anyhow. Maybe you could apply the forces directly to the wheel body - but don't use an axle joint, instead have the wheel attached in such a way that it moves for suspension and steering but not for rotation. You could then apply a force at the contact point (or at the center of the contact patch, if you wanna get sophisticated), and apply a torque where the axle would be. -- Nate Waddoups Redmond WA USA http://www.natew.com From tetron at interreality.org Wed Oct 16 20:05:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 16 20:05:02 2002 Subject: [ODE] exploding boxes Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This may be a known bug -- box stacking is extremely unstable. Specifically, I'm looking at the "phystut" program that comes with the Crystal Space 3D engine. It uses large, flat boxes for the walls of a room[1], and the user is able to drop boxes and spheres into the room and watch them bounce and roll around. There are several problems: [1] I expect the answer may be "don't do that" and while that would work for the outer surfaces of a convex hull, it's useless for building other things within a space. The first one is that despite the fact that both the walls and objects have a bounciness of zero (perfectly inelastic collisions) when an object is dropped it tends to bounce and roll around a LOT before coming to a stop... ... almost coming to a stop, that it. Once the object has almost settled down, often it will suddenly pop up with a lot of force. This is clearly an instability in the integrator, and makes it basically impossible to stack objects on one another, which should otherwise work fine. I'd like to see this fixed, and if no one is working on it I would be willing to give it a shot if someone will point me in the right direction of where to start in the code. [ Peter Amstutz ][ amstutz at cs.umass.edu ][ tetron at interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9riifaeHUyhjCHfcRAlbVAKCxOv91JfnjQVdCbZ7agC/WU1UCqwCfcZ9Z 3+yvx1qbhQwLuaY05A6VqUc= =ThXO -----END PGP SIGNATURE----- From russ at q12.org Wed Oct 16 21:42:02 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 16 21:42:02 2002 Subject: [ODE] exploding boxes In-Reply-To: References: Message-ID: <20021016214610.27fc7f46.russ@q12.org> > The first one is that despite the fact that both the walls and objects > have a bounciness of zero (perfectly inelastic collisions) when an > object is dropped it tends to bounce and roll around a LOT before > coming to a stop... if you're talking about the box-stack demo, this bouncyness is intentional. if you want no bounce, set contact[i].surface.bounce=0 in the demo. > ... almost coming to a stop, that it. Once the object has almost > settled down, often it will suddenly pop up with a lot of force. are you using the latest CVS version? 0.03 is prone to popping. there will hopefully be a new 'official' ODE release sometime soonish. if you are experiencing popping with the CVS version, i would appreciate a test case that illustrates this. note that there is a box-stacking problem caused by insufficient contact points being generated, i am also hoping to fix this up soon. russ. -- Russell Smith http://www.q12.org From ericc at xenopi.com Wed Oct 16 22:48:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Wed Oct 16 22:48:01 2002 Subject: [ODE] networking In-Reply-To: <3DADCC02.5050409@fie.us> Message-ID: <000601c275a1$3aeed3f0$6401a8c0@donald> Umm, not bad advice, but the original poster did specify that he/she purposely chose peer-to-peer, so Client-Server paradigm might not be an option (for him)... > -----Original Message----- > From: ode-admin at q12.org [mailto:ode-admin at q12.org] On Behalf > Of Brad Friedman > Sent: Wednesday, October 16, 2002 1:29 PM > To: ode at q12.org > Subject: Re: [ODE] networking > > > I highly recommend hopping onto www.GameDev.net and looking > up articles > on dead reckoning. > > In particular, I recomend this one as a start: > http://www.gamedev.net/reference/programming/features/targetin g/ You can then dive down to other articles for actual code. You'll also want to think in terms of TCP, UDP and half TCP solutions in your networking. Half TCP solutions will likely want to guarontee order but not receipt of packts. Or alternatively, you could guarontee receipt but not order. Generally speaking, you need to design a simulation from the ground up to work with physics over the network. Its not something to add in later. And you need to get used to the idea that the client will always be in error. The server's representation will not be 100% accurate. It will likely be making spontaneous changes. The clients smooth out the changes at the user's end. If you're designing your program for a LAN with less than 10ms lag, thats a different story of course. But you do also need to factor in the processing time. Its not just netoworking lag. -Brad _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoftick ). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From tetron at interreality.org Wed Oct 16 22:50:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 16 22:50:02 2002 Subject: [ODE] exploding boxes In-Reply-To: <20021016214610.27fc7f46.russ@q12.org> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Wed, 16 Oct 2002, Russ Smith wrote: > if you're talking about the box-stack demo, this bouncyness is > intentional. if you want no bounce, set contact[i].surface.bounce=0 > in the demo. No, this is in the "phystut" program in Crystal Space. As I said, this is a box landing on another box and not a box hitting a plane. > are you using the latest CVS version? 0.03 is prone to popping. there > will hopefully be a new 'official' ODE release sometime soonish. if you > are experiencing popping with the CVS version, i would appreciate a test > case that illustrates this. Yes, I'm using the CVS version. Providing a simple test case is rather complicated by the fact that it uses the Crystal Space infrastructure so perhaps you would be best off downloading Crystal Space... I suppose I could try to reproduce it in the box stacking test. > note that there is a box-stacking problem caused by insufficient contact > points being generated, i am also hoping to fix this up soon. Hmm, okay. [ Peter Amstutz ][ amstutz at cs.umass.edu ][ tetron at interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9rk9TaeHUyhjCHfcRAg2wAJ43RxDQqhzIsEzWqjd2At2nwB04ZQCeMV+l Ft/PY6NEi9EqgpNwMHGpRg4= =ChTm -----END PGP SIGNATURE----- From coding at natew.com Wed Oct 16 23:16:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 23:16:02 2002 Subject: [ODE] robotic simulation In-Reply-To: <3DA8EF87.778199E3@aist.go.jp> Message-ID: On Sun, 13 Oct 2002, Max Lungarella wrote: > i tried "juice", it's pretty cool, and well designed. the only problem that i > have with it, is that i cannot export the models i realize. in other words, it > would be neat if i could construct something using juice, and be able to > import this something in one of my own programs. do you have plans do add > similar feature? I have no such plans, but I do plan to document the file format to help anyone interested in writing a translator or importer. I'm also looking at the Novodex file format as a possible replacement for the XML-based format that Juice uses now. > ode is so easy to use and also aesthetically more pleasant ;) I feel the same way! -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Wed Oct 16 23:20:02 2002 From: coding at natew.com (Nate W) Date: Wed Oct 16 23:20:02 2002 Subject: [ODE] networking In-Reply-To: <000001c27536$37d05880$6401a8c0@donald> Message-ID: On Wed, 16 Oct 2002, Eric Cha wrote: > A better way (for physics) to do things would be to designate one > computer as "the physics simulator". Do the entire scene simulation on > that computer, and then just transmit position/orientation/velocity > updates to other computers. Of course, other computers would transmit > user inputs (or even impulse/velocity/acceleration changes) to the > simulator computer to control their respective robot. I hope you all don't mind too much my attempt to hijack this thread and turn it into a discussion of networked physics in general. :-) Having a single computer be "the" simulator solves a lot of problems, and in many cases would be the best solution. A co-worker and I did a multi-user simulation this way a few years ago and it worked well. (We didn't have physics to worry about, but we did have related issues with maintaining coherent world states on all of the 'client' machines.) The thing that makes me want to avoid that model today is that physics takes a lot of CPU power. Every client brings a fast CPU to the party... if there's a way to make use of that power, many clients together could be able to do much more complex simulations than a single server (or rather, "more complex that the server *I* can afford"). Ideally, it gets a lot cheaper to scale the system to support more users, becase each user brings enough CPU power to do their share of the computation. Practically it will never be quite that scalable, but I still like the idea. If you can have each client simulate the parts of the player's body or vehicle, then broadcast the positions and orientations, the server's CPU requirements go down quite a bit. Note that I'm assuming a game sort of paradigm here, but other scenarios could use other methods of assigning objects to CPUs. I'd elaborate, but I see that Anselm has already described something like what I had in mind, only better. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From amoravanszky at dplanet.ch Thu Oct 17 02:14:02 2002 From: amoravanszky at dplanet.ch (amoravanszky@dplanet.ch) Date: Thu Oct 17 02:14:02 2002 Subject: [ODE] robotic simulation Message-ID: <200210170913.g9H9DQx22252@dubb05h07-0.dplanet.ch> Nate W wrote: > I have no such plans, but I do plan to document the file format to help > anyone interested in writing a translator or importer. I'm also looking > at the Novodex file format as a possible replacement for the XML-based > format that Juice uses now. Nate, just in case you are wondering, you are welcome to use our file format not only for NovodeX related functionality, but also as a generic physics scene description format also used in conjunction with ODE. We at NovodeX think the entire community, regardless of which physics SDK is used, would benefit from a file format that is an open standard. In particular we are open to file format extensions as required by Juice -- though of course we should debate them first. BTW: The file format description is available as part of the NovodeX Steel SDK download here: http://www.novodex.com/downloads/steel-personal.exe Note that you don't have to buy the SDK to be able to read the documentation or use the viewer/exporters. -- Adam Moravanszky /*================*\ |Chief Software Architect |NovodeX AG |physics middleware |www.novodex.com \*================*/ From Remko at act-3d.com Thu Oct 17 02:41:01 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Thu Oct 17 02:41:01 2002 Subject: [ODE] Another strange wheel rotation bug Message-ID: <277472262.78464215.98@server> I fixed the 'bending wheels' problem using the following methods. The problem still exists but at least you can reduce it to acceptable levels: - Decrease the step size (update of 200-300Hz) - Different CFM and ERP values - Different masses - Bigger wheels (The bigger the wheels, the slower they have to turn for the same speed) I'm experimenting with a driving simulation and the results are stunning! However, after some experimentation, the car started to bounce and the handling was completely gone. It turned out that the wheel is not rotating around it's axis but around a point slightly above that. Gravity was causing this offset. Gravity pulls the wheel down so the rotation axis of the hinge is too high. What really surprised me, is the solution I found: When I set the gravity to zero the problem does not occur (as expected). When I crank up the gravity while the simulation is running, the bug does not come back but the wheel rotates around the correct point. Does anyone has an explanation for this? Why the rotation screws up when I initialize with gravity? -Remko From johnb003 at hotmail.com Thu Oct 17 04:32:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Thu Oct 17 04:32:02 2002 Subject: [ODE] Wheel Rotation Problem Message-ID: Actually to be honest, I've been struggling with the wheel rotation problem the last few days as well. I did notice a much better behaving system with a smaller timestep as I tested out my buggy on a big open plane. Although to get my timestep small enough I had to call update world a bunch of times, more than I could feasibly when I have other factors in the game that slow it down, like terrain. I have not yet thought of a solution that would work in my case. _________________________________________________________________ Choose an Internet access plan right for you -- try MSN! http://resourcecenter.msn.com/access/plans/default.asp From ericc at xenopi.com Thu Oct 17 07:41:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Thu Oct 17 07:41:01 2002 Subject: [ODE] networking In-Reply-To: Message-ID: <000d01c275eb$9e070620$6401a8c0@donald> Anselm's solution is what I call the "classic" solution. It's "classic" in the sense that I know of several games which actually use that system (or something very similar). Just as a point of discussion, there are several other ways to approach the problem... For example, here is what we did with Dreadnoughts (a game which we were working on using Havok): Dreadnoughts had/has pretty extreme physics engine requirements. It's a first person shooter with HUGE vehicles (ever seen Stargate the movie? Think of the flying pyramids..) We had to simulate moving structures which were large enough so that entire Quake-style levels would fit INSIDE of them. The player could run around inside these ships and then go outside and run around a huge outdoor world. At the same time, the ships themselves were moving and could battle it out with each other and interact with full physics with the environment. All this had to take place seamlessly. If a player was inside the ship looking out, he/she could see the other players running/flying around the terrain and could interact with those players.. Anyway, we found that because of memory constraints, we could not do the "master heartbeat physics server" method (the levels were so large that we were paging them in and out of memory as you moved around..) Instead, we chopped the world up into regions (pretty easy as the world was already partitioned into regions for our paging system) and dynamically assigned client computers as the physics master simulators. It was/is very tricky to implement, and not without problems in implementation. However, the end result was full physics simulation of a HUGE environment with the load being (relatively) evenly distributed amongst participant's computers... Eric > -----Original Message----- > From: ode-admin at q12.org [mailto:ode-admin at q12.org] On Behalf Of Nate W > Sent: Wednesday, October 16, 2002 3:28 PM > To: ode at q12.org > Subject: RE: [ODE] networking > > > On Wed, 16 Oct 2002, Eric Cha wrote: > > > A better way (for physics) to do things would be to designate one > > computer as "the physics simulator". Do the entire scene > simulation > > on that computer, and then just transmit > position/orientation/velocity > > updates to other computers. Of course, other computers > would transmit > > user inputs (or even impulse/velocity/acceleration changes) to the > > simulator computer to control their respective robot. > > I hope you all don't mind too much my attempt to hijack this > thread and turn it into a discussion of networked physics in > general. :-) > > Having a single computer be "the" simulator solves a lot of > problems, and in many cases would be the best solution. A > co-worker and I did a multi-user simulation this way a few > years ago and it worked well. (We didn't have physics to > worry about, but we did have related issues with maintaining > coherent world states on all of the 'client' machines.) > > The thing that makes me want to avoid that model today is > that physics takes a lot of CPU power. Every client brings a > fast CPU to the party... if there's a way to make use of that > power, many clients together could be able to do much more > complex simulations than a single server (or rather, "more > complex that the server *I* can afford"). Ideally, it gets a > lot cheaper to scale the system to support more users, becase > each user brings enough CPU power to do their share of the > computation. Practically it will never be quite that > scalable, but I still like the idea. > > If you can have each client simulate the parts of the > player's body or vehicle, then broadcast the positions and > orientations, the server's CPU requirements go down quite a > bit. Note that I'm assuming a game sort of paradigm here, > but other scenarios could use other methods of assigning > objects to CPUs. > > I'd elaborate, but I see that Anselm has already described > something like what I had in mind, only better. :-) > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From shaul_kedem at yahoo.com Thu Oct 17 10:22:02 2002 From: shaul_kedem at yahoo.com (Shaul Kedem) Date: Thu Oct 17 10:22:02 2002 Subject: [ODE] High level graphics languages Message-ID: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Hi all, Recently there is a lot of talk about high level languages for graphical use. John Carmack, known for it's Doom and Quake engines, said on the last quakecon keynote speech that his next game will be written on a high level language, stating that he sees such languages as the future trend. Can anyone give me pointers / links / recommendations about such languages? The reason I am posting it here is that I want (obviously) to implement ODE in such a language. Thanks, Shaul. __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From ericc at xenopi.com Thu Oct 17 10:39:02 2002 From: ericc at xenopi.com (Eric Cha) Date: Thu Oct 17 10:39:02 2002 Subject: [ODE] High level graphics languages In-Reply-To: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Message-ID: <001c01c27604$856969a0$6401a8c0@donald> There are numerous HLSL's (High Level Shader Languages) out there. Probably the two that are garnering the most attention (right now) are OpenGL 2.0 and nVidia's Cg (which, if you believe nVidia, will be cross compatible with DX9 HLSL).. Eric > -----Original Message----- > From: ode-admin at q12.org [mailto:ode-admin at q12.org] On Behalf > Of Shaul Kedem > Sent: Thursday, October 17, 2002 10:22 AM > To: ode at q12.org > Subject: [ODE] High level graphics languages > > > Hi all, > Recently there is a lot of talk about high level > languages for graphical use. > > John Carmack, known for it's Doom and Quake engines, > said on the last quakecon keynote speech that his next > game will be written on a high level language, stating > that he sees such languages as the future trend. > > Can anyone give me pointers / links / recommendations > about such languages? > > The reason I am posting it here is that I want > (obviously) to implement ODE in such a language. > > Thanks, > Shaul. > > __________________________________________________ > Do you Yahoo!? > Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode --- Incoming mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From jason at 379.com Thu Oct 17 10:52:01 2002 From: jason at 379.com (J. Perkins) Date: Thu Oct 17 10:52:01 2002 Subject: [ODE] High level graphics languages In-Reply-To: <20021017172136.34012.qmail@web40020.mail.yahoo.com> References: <20021017172136.34012.qmail@web40020.mail.yahoo.com> Message-ID: <1034876397.2181.28.camel@imperius.um.us.sbphrd.com> I think you misunderstood the interview. I believe he said that his next game would use a high level *shader* language. I would be very surprised indeed if iD were to release Quake4 in Python! ;) Jason 379 On Thu, 2002-10-17 at 13:21, Shaul Kedem wrote: > John Carmack, known for it's Doom and Quake engines, > said on the last quakecon keynote speech that his next > game will be written on a high level language, stating > that he sees such languages as the future trend. From ivan.bolcina at volja.net Thu Oct 17 12:40:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Thu Oct 17 12:40:02 2002 Subject: [ODE] 3d world an directx Message-ID: <013401c27614$d4c0bde0$0100a8c0@vectra> Problems. Is ode 3d world different from DirectXs? It seems to me that y and z axes are swapt. bye,ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021017/7c88257a/attachment.htm From russ at q12.org Thu Oct 17 15:23:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 17 15:23:02 2002 Subject: [ODE] i will speak at IndieGamesCon'02 Message-ID: FYI, i will be speaking about ODE at IndieGamesCon'02 (www.indiegamescon.com), on saturday november 2nd in eugene, oregon. i'll be talking about the following topics: * ODE's application to the game industry - particularly its relevance to the indie game developer. * the technology behind ODE. * how/where ODE has been used. * pros and cons of using ODE (and other dynamics toolkits) for various kinds of games and VR environments. i will talk about vehicles at length. * alternatives to ODE - free and commercial. * the future of dynamics/simulation. * challenges for the [indie] game industry. * other interesting topics that occur to me, or that are suggested. my presentation will be up on q12.org sometime before or after the conference. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Thu Oct 17 20:30:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 17 20:30:02 2002 Subject: [ODE] VStudioNet In-Reply-To: Message-ID: On Wed, 16 Oct 2002, Tomas Sakalauskas wrote: > > [...] debugging induces big headaches fast because the debugger > > usually goes to the wrong line in the source file. Is anyone else > > seeing this? > > Yes. You have to replace CRCRLF in files with CRLF, this confuses VS.NET. That fixes it. I thank you a thousand times. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From tetron at interreality.org Thu Oct 17 22:52:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Thu Oct 17 22:52:02 2002 Subject: [ODE] box stacking instability Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I've noticed that the "boxstack" test is unstable as well, although not to the degree that the test program I'm using does. If one box comes to rest on another, while it doesn't pop up (as in this other demo) it does appear to vibrate and will move about -- I presume this is due to impulses correcting for penetration of the top box into the lower box. I'm talked to a professor who knows something about dynamics systems, and his understanding is that the impulse-based method in inherently unstable in this configuration -- using this algorithm it is almost impossible for the system to come to equilibrium. This seems to be an enormous problem, and one which makes ODE rather useless for my purposes. It looks like I shall have to just use collision detection with some basic physics hacked on... I need for it to be possible for objects to be supported by others, such as platforms on which other objects rest. It seems that ODE handles the case of stability on a plane quite well, but that is rather limited use compared to the general case :-( On a side note, the same professor mentioned the Arachi dynamics engine (www.arachi.com). It's commercial and exceedingly expensive ($30,000) but he speaks very highly of it. It would be interesting to potentially adopt some of their techniques... [ Peter Amstutz ][ amstutz at cs.umass.edu ][ tetron at interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9r6FUaeHUyhjCHfcRAkJvAJsHkWstAZ1s9//kp6XfUEizoDzidgCggLVp jxxJXvtNwBkgQGNxF+ESZwk= =B4Ld -----END PGP SIGNATURE----- From coding at natew.com Thu Oct 17 23:25:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 17 23:25:02 2002 Subject: [ODE] box stacking instability In-Reply-To: Message-ID: On Fri, 18 Oct 2002, Peter Amstutz wrote: > If one box comes to rest on another, while it doesn't pop up (as in > this other demo) it does appear to vibrate and will move about -- I > presume this is due to impulses correcting for penetration of the top > box into the lower box. > I'm talked to a professor who knows something about dynamics systems, and > his understanding is that the impulse-based method in inherently > unstable in this configuration [...] As Russ said, the real problem is that the box-box collision detection code is not yet finished. If you search the mailing list archives, you'll find that this is a known problem, it is a solvable problem, and it will be fixed. > It seems that ODE handles the case of stability on a plane quite well, > but that is rather limited use compared to the general case :-( Yes, boxes can rest on planes in a perfectly stable manner. When a box lies flat on a plane, the box-plane collision code generates three contact constraints, so the box is held in place. In my own application, I had the same problem with box-plane contact - not because of a problem with ODE, but because of a mistake on my part. My code was only keeping the first of up to three contact constraints that would be generated when a box contacted a plane. The result was identical to the behavior that you see now with box-box collision detection. When I fixed my code to use all three contacts, the 'boiling' effect went away completely. I have no doubt that boxes will rest on other boxes when the box-box collision code returns three contact constraints when boxes are touching in a face-to-face configuration. It works for boxes on planes now, it will work for boxes on boxes eventually. -- Nate Waddoups Redmond WA USA http://www.natew.com From p.terdiman at wanadoo.fr Thu Oct 17 23:36:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Thu Oct 17 23:36:02 2002 Subject: [ODE] box stacking instability References: Message-ID: <046e01c27670$422f3540$0e00000a@pierre> > I've noticed that the "boxstack" test is unstable as well, although not to > the degree that the test program I'm using does. If one box comes to rest > on another, while it doesn't pop up (as in this other demo) it does appear > to vibrate and will move about -- I presume this is due to impulses > correcting for penetration of the top box into the lower box. > > I'm talked to a professor who knows something about dynamics systems, and > his understanding is that the impulse-based method in inherently unstable > in this configuration -- using this algorithm it is almost impossible for > the system to come to equilibrium. This seems to be an enormous problem, > and one which makes ODE rather useless for my purposes. It looks like I > shall have to just use collision detection with some basic physics hacked > on... I need for it to be possible for objects to be supported by others, > such as platforms on which other objects rest. It seems that ODE handles > the case of stability on a plane quite well, but that is rather limited > use compared to the general case :-( The boxstack test is unstable because the collision detection routine reports a single contact point, period. Pierre From russ at q12.org Fri Oct 18 00:03:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 00:03:02 2002 Subject: [ODE] box stacking instability In-Reply-To: References: Message-ID: <20021018000754.21ea5baa.russ@q12.org> > I presume this is due to impulses > correcting for penetration of the top box into the lower box. actually, ODE does not use impulse based methods. > On a side note, the same professor mentioned the Arachi dynamics > engine(www.arachi.com). It's commercial and exceedingly expensive > ($30,000) but he speaks very highly of it. It would be interesting to > potentially adopt some of their techniques... hmmm ... the web site gives no clues about the techniques (or about anything, really). does anyone know what arachi is doing? russ. -- Russell Smith http://www.q12.org From mimodene at yahoo.com Fri Oct 18 01:14:01 2002 From: mimodene at yahoo.com (mica modenese) Date: Fri Oct 18 01:14:01 2002 Subject: [ODE] beginnersproblem with ode: stack overflow Message-ID: <20021018081342.89297.qmail@web10903.mail.yahoo.com> hi all. i am kind of new to this and so my question might be rather silly. I've been using ODE for 1 week for a biped robot simulation. now my biped consists of 52 bodies 27 hinge joints, 14 prismatic joints and 28 balljoints and 4 contactmodels. now it keeps crashing, telling something about stack overflow and increasing the stacksize (/F in VC++) doesn't seem to work, ODE is allready allocating maxsize for the stack ? before i fry my brain: am i asking to much ?? do i have to reduce bodies and joints ?? thx mike __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com From coding at natew.com Fri Oct 18 02:13:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 02:13:02 2002 Subject: [ODE] beginnersproblem with ode: stack overflow In-Reply-To: <20021018081342.89297.qmail@web10903.mail.yahoo.com> Message-ID: With that many joints, you'll need LOTS of stack. Juice has about 8 megabytes of stack, and I suspect that the structure you're building would overflow Juice's stack. With VS.Net, the linker option I'm using is /STACK:8000000 but maybe it's /F with earlier versions? I dunno. Anyhow, try or 10 megs or so, then double it if your app still crashes with a stack overflow. Then double it again if need be, and so on until it stops crashing. Expect a rather slow frame rate, too... it's going to take a lot of number crunching to make all those joints work. If you can generate a picture of your biped, I hope you will share it. It sounds pretty interesting. :-) On Fri, 18 Oct 2002, mica modenese wrote: > i am kind of new to this and so my question might be > rather silly. I've been using ODE for 1 week for a > biped robot simulation. now my biped consists of 52 > bodies 27 hinge joints, 14 prismatic joints and 28 > balljoints and 4 contactmodels. now it keeps crashing, > telling something about stack overflow and increasing > the stacksize (/F in VC++) doesn't seem to work, ODE > is allready allocating maxsize for the stack ? before > i fry my brain: am i asking to much ?? do i have to > reduce bodies and joints ?? From thubba at gmx.net Fri Oct 18 02:52:02 2002 From: thubba at gmx.net (Michael Scharvogel) Date: Fri Oct 18 02:52:02 2002 Subject: [ODE] a newbies question on hinge and robot legs... Message-ID: <020c01c2768b$d87d7eb0$c36abb84@tig> Hi folks... I started working with ODE some time ago. But I encounter some problems on understanding the manual and all the "how to model my stuff witrh ode" subject. Thus I will briefly describe my problem. Maybe someone can comment on that: I want to model some kind of bug robot.For the start, it shall have the follwoing structure: H : hinge T : Thorax (CCylinder) L : Leg (Box) L H L H TTT H L H L TTT TTT L H L H TTT H L H L TTT TTT L H L H TTT H L H L (One Body, six legs, each leg consisting of two parts and connected by two hinges) In the final state I'd like to say something like: Hinge 1 bow 10 degrees. So do I have to attach Motors to the hinges to achiev this (I did not quiet figure out how this could work) or do I have to use these Transform geometries and rotate them (I I understood them right they can be used to rotate for example a leg around one of its ends) Well, you see, I not quiet used to the subject. But maybe someone could help me getting it :-) Perhaps someone has done something liek that, or someone could provide me some example code... Thanx a lot, mike. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021018/eb8b0307/attachment.htm From mal at candomultimedia.com Fri Oct 18 06:50:02 2002 From: mal at candomultimedia.com (Malachy Duffin) Date: Fri Oct 18 06:50:02 2002 Subject: [ODE] Introduction / Suggestions etc Message-ID: <001801c276ad$38345a10$d834fe3e@MalLaptop> Hello all, Mal here from canDo Multimedia, an Irish 3D interactive development company. We are using a lot of Shockwave 3D at the moment ( along with the online Havok engine ) for some web games, which you can see at... http://www.candomultimedia.com/games/demos.htm Firstly, I don't know if many of you on the list know, but ODE will soon be integrated as a physics option into the realtime 3D engine of the now open sourced version of Blender ( www.blender.org ). This is great for a number of reasons... - It will raise the awareness of open source game related projects like Blender and ODE. - More developers will be keen to work on these projects - Because Blender is cross platform, a lot of work will be carried out to ensure that ODE is deployed on platforms that it wasn't available on before - ODE developers will be able to show what the engine can do online ( Blender has a web plugin ) Blender has a fairly high learning curve, but is a great prototyping tool ( imagine designing a car, defining it's wheels / suspension / mass etc and clicking a button to immediately let you drive it around a 3D world for testing purposes / to let the artists play with parameters etc ). I am looking forward to seeing a lot more content created this way! It makes it more accessible for artists to know how to design content for physics based games ( using proxies, compound convex objects etc for optimisations ) One quick suggestion, from the http://q12.org/ode/ode.html website there doesn't seem to be any updates on news, or any easy way to see examples of content created with ODE. A quick revamp with a gallery of examples and links to downloadable demos would be great, as a lot more people should be checking it out over the coming months. Thanks for taking the time to read the post, and I look forward to reading future postings on this mailing list. Mal From martin at metahuman.org Fri Oct 18 07:26:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Fri Oct 18 07:26:02 2002 Subject: [ODE] a newbies question on hinge and robot legs... References: <020c01c2768b$d87d7eb0$c36abb84@tig> Message-ID: <3DB019E0.3970D42D@metahuman.org> > Michael Scharvogel wrote: > > (One Body, six legs, each leg consisting of two parts and connected by > two hinges) > > In the final state I'd like to say something like: > Hinge 1 bow 10 degrees. > > So do I have to attach Motors to the hinges to achiev this (I did not > quiet figure out how this could work) or do I have to use these > Transform geometries and rotate them (I I understood them right they can > be used to rotate for example a leg around one of its ends) You need a motor. Transform geometries are for fixed relationships. However, hinges come with a motor built in. The motor controls velocity, not position, so the easiest thing is probably to set the velocity proportional to how far off the position is. Once you've figured out your desired velocity, call: dJointSetHingeParam (joint, dParamVel, desired_velocity); - Martin From ivan.bolcina at volja.net Fri Oct 18 08:04:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 18 08:04:02 2002 Subject: [ODE] 3d world directx Message-ID: <004801c276b7$88d9c0e0$0100a8c0@vectra> Yes, but every time i get/set position,direction from ode to directx structs, and vice versa, I have to swap y and z. -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021018/568edc9f/attachment.htm From ericc at xenopi.com Fri Oct 18 09:46:01 2002 From: ericc at xenopi.com (Eric Cha) Date: Fri Oct 18 09:46:01 2002 Subject: [ODE] box stacking instability In-Reply-To: <20021018000754.21ea5baa.russ@q12.org> Message-ID: <001c01c276c6$28703680$6401a8c0@donald> Funny that you mention Arachi. I know the founder (Kyong Sok Chang) - he's an old friend of mine from college. We went to Umich (go Blue!) together (and actually got the same degree in Aerospace Engineering) I haven't talked to K.C. in quite a while, but did run into him at the GDC 2 years back when he had just started Arachi. I believe K.C. did his graduate (PhD) work at Stanford on computer physics simulation, and I believe founded the company based on his research. I haven't read over his research, but you might want to do a search of academic papers using his name to see what you might come up with. I *would* drop K.C. a line, but as I said, I haven't talked to him in quite a while, and to be honest, I would feel quite awkward asking him about his technology when I have no interest in it whatsoever (because we have our own solution which is working at a satisfactory level). Eric > > On a side note, the same professor mentioned the Arachi dynamics > > engine(www.arachi.com). It's commercial and exceedingly expensive > > ($30,000) but he speaks very highly of it. It would be > interesting to > > potentially adopt some of their techniques... > > hmmm ... the web site gives no clues about the techniques (or > about anything, really). does anyone know what arachi is doing? > > russ. > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 10/3/2002 From russ at q12.org Fri Oct 18 10:06:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 10:06:01 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: <001801c276ad$38345a10$d834fe3e@MalLaptop> References: <001801c276ad$38345a10$d834fe3e@MalLaptop> Message-ID: <20021018100957.7ff31ceb.russ@q12.org> > One quick suggestion, from the http://q12.org/ode/ode.html website > there doesn't seem to be any updates on news, or any easy way to see > examples of content created with ODE. the 'community' section has links to some downloadable demos. as far as 'news' goes - various incremental improvements have been reported only on the mailing list in the past months, not on the web site. i'm gradually working towards a new release that will fix a number of long-outstanding issues and also finally integrate some of the 'contrib' code that has been contributed. russ. -- Russell Smith http://www.q12.org From ivan.bolcina at volja.net Fri Oct 18 10:19:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Fri Oct 18 10:19:02 2002 Subject: [ODE] 3d world directx -- slipch, please help Message-ID: <002301c276ca$52d446b0$0100a8c0@vectra> Hi,look at this code: //get orientation from ode and put it in my d3d Quatrernion const dReal *qx= dBodyGetQuaternion (PhyBody); D3DXQUATERNION qxx; qxx.x=(float)qx[0]; qxx.y=(float)qx[2]; qxx.z=(float)qx[1]; qxx.w=(float)qx[3]; setOrientation(qxx); //to directx //get positionfrom ode and put it in my D3DXVECTOR3 const dReal * p=dBodyGetPosition(PhyBody); //to directx m_Position.x=(float)p[0]; m_Position.y=(float)p[2]; m_Position.z=(float)p[1]; //same for velocity const dReal * p1=dBodyGetLinearVel(PhyBody); move.x=(float)p1[0]; move.y=(float)p1[2]; move.z=(float)p1[1]; //end test //I dont understand ..... :-((( I wish to get angular rotation around x,y,z //then I wish to find differece between wished angular rotation(from joystick) and current angular rotation //then I wish to apply torque so they eventually mach. const dReal * rotx=dBodyGetAngularVel (PhyBody); dVector3 result; dBodyVectorFromWorld(PhyBody, rotx[0],rotx[1],rotx[2],result); rotate.x=result[0]; rotate.y=result[1]; rotate.z=result[2]; D3DXVECTOR3 rotVec=MaxRotate*D3DXVECTOR3(controls.axis_lr*1.0f,-controls.axis_ro*1.0f,-controls.axis_ud*1.0f); rotVec-=rotate; if (rotVec.x>0) rotVec.x=RotMax; if (rotVec.x<0) rotVec.x=-RotMax; if (rotVec.y>0) rotVec.y=RotMax; if (rotVec.y<0) rotVec.y=-RotMax; if (rotVec.z>0) rotVec.z=RotMax; if (rotVec.z<0) rotVec.z=-RotMax; dBodyAddRelTorque(PhyBody,70000.0f*rotVec.x,70000.0f*rotVec.y,70000.0f*rotVec.z); //force which heads me forward, move is current movement, posp is wished movement(from joystick) float facsped=1.0f; if (controls.burner) facsped=2.0f; D3DXVECTOR3 posp; //m_vz is vector forward if (controls.burner) posp=m_vz*1.0f*SpeedMax*facsped; else posp=m_vz*controls.axis_throttle*SpeedMax*facsped; //v razliko posp-=move; float len=D3DXVec3Length(&posp); if (len!=0.0f) { posp/=len; D3DXVECTOR3 ForceApplied=posp*MaxEngine; dBodyAddForce(PhyBody,ForceApplied.x,ForceApplied.z,ForceApplied.y); //SEE HERE } -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021018/b32bd891/attachment.htm From coding at natew.com Fri Oct 18 10:39:01 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 10:39:01 2002 Subject: [ODE] a newbies question on hinge and robot legs... In-Reply-To: <020c01c2768b$d87d7eb0$c36abb84@tig> Message-ID: On Fri, 18 Oct 2002, Michael Scharvogel wrote: > In the final state I'd like to say something like: > Hinge 1 bow 10 degrees. > > So do I have to attach Motors to the hinges to achiev this (I did not > quiet figure out how this could work) or do I have to use these > Transform geometries and rotate them (I I understood them right they > can be used to rotate for example a leg around one of its ends) What you're talking about is a job for motors. You don't have to "attach" motors to joints though, in ODE joints have motorization built into them. The motor API does not allow command like "move 10 degrees" though. Instead, you ask it something like "Hinge 1 move at 5 degrees per second" until the hinge is at the angle you desire. This means checking the hinge angle every frame, comparing it to the desired hinge angle, and asking it to move at a speed proportional to the difference. If you search the mailing list archives you'll probably find some messagse from me on this subject. The most recent of those messages are the most correct - I was trying to do it the wrong way at first. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Fri Oct 18 10:51:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 10:51:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: <001801c276ad$38345a10$d834fe3e@MalLaptop> Message-ID: On Fri, 18 Oct 2002, Malachy Duffin wrote: > imagine designing a car, defining it's wheels / suspension / mass > etc and clicking a button to immediately let you drive it around a 3D > world for testing purposes "Imagine?" :-) http://www.natew.com/juice/frames.cgi/general/html.ScreenShots http://www.natew.com/juice/frames.cgi/general/html.Pix > One quick suggestion, from the http://q12.org/ode/ode.html website there > doesn't seem to be any updates on news, or any easy way to see examples > of content created with ODE. > > A quick revamp with a gallery of examples and links to downloadable > demos would be great, as a lot more people should be checking it out > over the coming months. Check the community page for examples of content. There are a few projects with screenshots and downloadable movies, not just mine. -- Nate Waddoups Redmond WA USA http://www.natew.com From Alan_Gordie at payformance.com Fri Oct 18 11:11:01 2002 From: Alan_Gordie at payformance.com (Alan Gordie) Date: Fri Oct 18 11:11:01 2002 Subject: [ODE] Introduction / Suggestions etc Message-ID: Hi Mal! Well, perhaps it's time for me to de-lurk... (due to the mention of ODE integration with Blender) My name is Alan Gordie and I've been steadily building a robust, spring-mass simulation engine (http://gordie.go.dyndns.org/) for simulating vehicles and structures for fun. Contemplating the GPL release of Blender, I'd been toying with the idea of grafting my sim code into/onto Blender, but that would be pointless if ODE were to be integrated with Blender. At any rate, I've been following ODE (and the mailing list) for awhile now and find myself continually more impressed with its' progress as time goes on. (Thanks to Russ and the rest of you!) It seems to me that ODE has reached 'escape velocity' in terms of project growth and community support. Don't get me wrong, I think there is huge potential, but it seems like it has enough momentum now to easily move to the next level. And the point is: Now, after the release of the Blender source, I've decided to contribute in any ways that I can in terms of adding my spring-mass modeling primitives to ODE, as well as offering development assistance for the "ODE Plugin" for Blender. As Mal mentioned, there are many compelling reasons to add support this effort, but there is one that stands out for me. It will ensure that there is a open-sourced, freely-available tool suite for rigid body simulation. So, who else is interested in devoting some time to the ODE/Blender effort? I've been hanging around in #ode on EFNET since it was announced a few days ago, but there hasn't been much activity. If there are enough interested parties, I'd like to propose that we hook up on irc to start drawing up a set of plans. Any takers? Alan alan_gordie at payformance.com alangordie at attbi.com -----Original Message----- From: Malachy Duffin [mailto:mal at candomultimedia.com] Sent: Friday, October 18, 2002 9:50 AM To: ode at q12.org Subject: [ODE] Introduction / Suggestions etc Hello all, Mal here from canDo Multimedia, an Irish 3D interactive development company. We are using a lot of Shockwave 3D at the moment ( along with the online Havok engine ) for some web games, which you can see at... http://www.candomultimedia.com/games/demos.htm Firstly, I don't know if many of you on the list know, but ODE will soon be integrated as a physics option into the realtime 3D engine of the now open sourced version of Blender ( www.blender.org ). This is great for a number of reasons... - It will raise the awareness of open source game related projects like Blender and ODE. - More developers will be keen to work on these projects - Because Blender is cross platform, a lot of work will be carried out to ensure that ODE is deployed on platforms that it wasn't available on before - ODE developers will be able to show what the engine can do online ( Blender has a web plugin ) Blender has a fairly high learning curve, but is a great prototyping tool ( imagine designing a car, defining it's wheels / suspension / mass etc and clicking a button to immediately let you drive it around a 3D world for testing purposes / to let the artists play with parameters etc ). I am looking forward to seeing a lot more content created this way! It makes it more accessible for artists to know how to design content for physics based games ( using proxies, compound convex objects etc for optimisations ) One quick suggestion, from the http://q12.org/ode/ode.html website there doesn't seem to be any updates on news, or any easy way to see examples of content created with ODE. A quick revamp with a gallery of examples and links to downloadable demos would be great, as a lot more people should be checking it out over the coming months. Thanks for taking the time to read the post, and I look forward to reading future postings on this mailing list. Mal _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode From nlin at nlin.net Fri Oct 18 11:44:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Fri Oct 18 11:44:02 2002 Subject: [ODE] ODE and the Blender real-time 3d modeling/gaming environment Message-ID: <20021018202815.GA32125@nlin.net> Hello, I have checked in a version of Blender with preliminary support for ODE. Set your CVSROOT to :pserver:anonymous at 217.77.141.135:/cvs01 and do a CVS co of module "blender" to obtain the source code. For those who don't know, Blender is a powerful 3D modeling package which just became free software under the GPL license. It has a built-in real-time 3D game engine whose physics are now being replaced with ODE. Blender is very interesting for the ODE community because it can be a very powerful tool for quickly creating real-time games; now, coupled with ODE, it can be used for quickly creating ODE simulations - similar to Nate W's "juice" application, but with the full power of a general- purpose 3D modeler and game engine. For instance, using Blender's game engine, you can have ODE-controlled dynamic objects interact with other game objects controlled via scripts or paths. This is preliminary work. There is still a lot left to do. I only tested it on Debian GNU/Linux. See the todo list in OdePhysicsController.cpp for an idea of what still needs to be done. Anyone interested in contributing please discuss via the mailing list or private e-mail. Thanks, -Norman From Brad at fie.us Fri Oct 18 12:31:01 2002 From: Brad at fie.us (Brad Friedman) Date: Fri Oct 18 12:31:01 2002 Subject: [ODE] ODE and the Blender real-time 3d modeling/gaming environment References: <20021018202815.GA32125@nlin.net> Message-ID: <3DB06199.4020407@fie.us> An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021018/fa67a326/attachment.htm From tetron at interreality.org Fri Oct 18 13:22:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 18 13:22:02 2002 Subject: [ODE] networking In-Reply-To: Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I'll jump in here. I really want to use ODE for my distributed multiuser virtual reality system (http://interreality.org), hence the interest in stable box stacking -- a virtual world would naturally allow you to stack stuff on top of other stuff just like in the real world (and then knock it down :-) The system is peer-to-peer and designed such that each object in the system has an authoratative instance, and the world is described by hyperlinking objects together (which usually includes linking across hosts) (lots more information about how this all fits together on the web page). For dynamics simulation, I intend to have a policy that the authoratative instance is entirely responsible for the dynamic movement of its objects, and nonlocal objects are considered more or less static. So the dynamics simulation is more or less consistant from the perspective of each user (even if globally it's way off, as long as it looks okay) without violating trust bounderies between hosts by manipulating objects you don't control. The problem with distributed simulation in the game paradigm is, of course, users may cheat -- however the VR stuff I'm interested in is intended to be social and not competetive, so there isn't really the same notion of "cheating". On Wed, 16 Oct 2002, Nate W wrote: > The thing that makes me want to avoid that model today is that physics > takes a lot of CPU power. Every client brings a fast CPU to the party... > if there's a way to make use of that power, many clients together could be > able to do much more complex simulations than a single server (or rather, > "more complex that the server *I* can afford"). Ideally, it gets a lot > cheaper to scale the system to support more users, becase each user brings > enough CPU power to do their share of the computation. Practically it > will never be quite that scalable, but I still like the idea. > > If you can have each client simulate the parts of the player's body or > vehicle, then broadcast the positions and orientations, the server's CPU > requirements go down quite a bit. Note that I'm assuming a game sort of > paradigm here, but other scenarios could use other methods of assigning > objects to CPUs. > > I'd elaborate, but I see that Anselm has already described something like > what I had in mind, only better. :-) [ Peter Amstutz ][ amstutz at cs.umass.edu ][ tetron at interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9sG0vaeHUyhjCHfcRAlWcAJ4sCItHR5nYGP8MpA77B4uWQyaiqQCgr55D /GkkJGsj8Vvj1hnVHp/YifA= =ertj -----END PGP SIGNATURE----- From tetron at interreality.org Fri Oct 18 13:27:01 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 18 13:27:01 2002 Subject: [ODE] box stacking instability In-Reply-To: Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thu, 17 Oct 2002, Nate W wrote: > I have no doubt that boxes will rest on other boxes when the box-box > collision code returns three contact constraints when boxes are touching > in a face-to-face configuration. It works for boxes on planes now, it > will work for boxes on boxes eventually. This is very encouraging -- I quite want to see this happen as it is a prerequisite for ODE being useful for me. If someone can give me some pointers on where to look and what needs to be done, I'll happily roll my sleves up and look into fixing this. Any suggestions? [ Peter Amstutz ][ amstutz at cs.umass.edu ][ tetron at interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9sG5jaeHUyhjCHfcRAjNhAKCqgzG0epl2qZy59mhDb608prVZ5gCgj0ap H8wDr1BK9N3wjcXrqtSwtJA= =jfiA -----END PGP SIGNATURE----- From russ at q12.org Fri Oct 18 13:50:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 13:50:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: cool! i'm in full support of ODE/blender integration - i think this is quite an exciting prospect. in fact i took some very preliminary steps in this direction as soon as the blender sources were released - but as norman is far in advance of my own pitiful attempt i will abandon what i am doing and help out the existing effort. i have a question: the commercial dynamics providers (ME, havok etc) have their own plugins for 3DSMax, maya, and other expensive tools. i am wondering what functionality, if any, would be lost by an artist switching from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a blender dummy.) about the suggestion to use IRC - it would be perhaps more useful to discuss this on the mailing list - so that at least we have an archived, google-searchable record. this discussion ties in with the file format discussion. i am guessing that the initial blender integration will be to run ODE simulations within blender to produce animation data, and that the saved dynamics information will be tied in with blenders own file format(s). it would also be nice if it blender could export a file format describing just the dynamical attributes that have been given to the geometry objects, so that in my game/simulation/whatever i could load this data, construct the ODE objects, then attach the objects to my scene data. it's important to have a file format that can separates dynamics attributes from the geometry data. this is because, e.g., i might design my dynamical system in blender but then use some non-blender-created graphics in my application. we dont want to tie the data to the application after all. nate and others - is there any useful level of concensus on what the "one true file format" should be? (disclaimer: i've not looked at the juice file format or any others). if there is no convergence yet, i have a pile of my own ideas i would like to contribute here. russ. -- Russ Smith http://www.q12.org/ From russ at q12.org Fri Oct 18 14:00:03 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 14:00:03 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: > i have a question: the commercial dynamics providers (ME, havok etc) have > their own plugins for 3DSMax, maya, and other expensive tools. i am > wondering what functionality, if any, would be lost by an artist switching > from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a > blender dummy.) oh ... and i know that 3DSMax/Havok supports cloth and squishy bodies (ODE doesn't yet) ... my question is more to do with the capabilities of blender itself vs 3DS etc. russ. -- Russ Smith http://www.q12.org/ From nathan at whatever.net Fri Oct 18 14:45:02 2002 From: nathan at whatever.net (Nate Waddoups) Date: Fri Oct 18 14:45:02 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: Message-ID: On Fri, 18 Oct 2002, Russ Smith wrote: > nate and others - is there any useful level of concensus on what the "one > true file format" should be? (disclaimer: i've not looked at the juice > file format or any others). if there is no convergence yet, i have a pile > of my own ideas i would like to contribute here. I went with an XML sort of format merely for the sake of experience with SAX and putting XML on my resume. It was also nice to have a pre-existing parser and a standard parser API (MSXML and SAX). I pretty much made it up as a went along, so I'm not terribly attached to the format. Novodex uses a format that looks friendly to C/C++ people (using { and } and familiar indenting, for example), and if I understand correctly they would be happy to see it used as a common open standard. It's definitely worth a look. Speaking of which, I'm reminded of a message from Adam @ Novodex that I didn't get around to replying to the other day... Anyhow, once a good file format gets agreed upon, I think a second key ingredient to standardization would be to have some open and shared "deserialization" code available. The less work it takes for application developers to import such files, quicker they (we?) will support it. Serialization and deserialization are useful for sharing data over a network as well as persisting stuff to disk, so I kinda like the idea of designing the file format and accompanying code with that in mind as well. It could be possible to load objects (and even synchronize them) over a network using the same format and much of the same deserialization code. That aspect would be helped quite a bit if the application objects had a common API to use when moving data from disk (or from the network) and into the application. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Fri Oct 18 14:50:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 14:50:02 2002 Subject: [ODE] file formats In-Reply-To: <200210170913.g9H9DQx22252@dubb05h07-0.dplanet.ch> Message-ID: On Thu, 17 Oct 2002 amoravanszky at dplanet.ch wrote: > We at NovodeX think the entire community, regardless of which physics > SDK is used, would benefit from a file format that is an open > standard. In particular we are open to file format extensions as > required by Juice -- though of course we should debate them first. I haven't looked too deeply into the Novodex docs yet, but as far as I can tell, the only stuff the Juice files contain that doesn't fit right into the Novodex for format is stuff that pertains to motion control. I don't think that really should be part of a common file format, because (as far as I'm aware) control systems themselves are not yet standardized. I came up with a couple of them for Juice, but chances are no other application would support them or even want them. The main thing, I think, would be to have a syntax that allows for application-specific additions, and some sort of namespace control (even if it's just the honor system) so that each application can easily ignore any sections of the file that it doesn't support. -- Nate Waddoups Redmond WA USA http://www.natew.com From amoravanszky at dplanet.ch Fri Oct 18 15:49:01 2002 From: amoravanszky at dplanet.ch (Adam Moravanszky) Date: Fri Oct 18 15:49:01 2002 Subject: [ODE] Introduction / Suggestions etc References: Message-ID: <001c01c276f8$da7e1c20$c912da50@powerhouse> > worth a look. Speaking of which, I'm reminded of a message from Adam @ > Novodex that I didn't get around to replying to the other day... > > Anyhow, once a good file format gets agreed upon, I think a second key > ingredient to standardization would be to have some open and shared > "deserialization" code available. The less work it takes for application > developers to import such files, quicker they (we?) will support it. Hi Nate, I attached some simple parser code (only 7K, I guess that is OK). It can create the ODS data structure from a C++ stream, or write a structure to a stream. This stuff only works on the ODS syntax level, and is not physics specific. All the higher (physics) level serialization code is part of the free viewer code in the SDK download, but of course on that level things are less portable -- as you know for example our joint limits are specified quite differently than those in ODE, for example. Still, standardization even on this level would not hurt. -- Adam Moravanszky /*================*\ |Chief Software Architect |NovodeX AG |physics middleware |www.novodex.com \*================*/ -------------- next part -------------- A non-text attachment was scrubbed... Name: odblock.zip Type: application/x-zip-compressed Size: 6951 bytes Desc: not available Url : http://q12.org/pipermail/ode/attachments/20021018/2432148f/odblock.bin From nlin at nlin.net Fri Oct 18 17:59:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Fri Oct 18 17:59:02 2002 Subject: [ODE] ODE/Blender Message-ID: <20021019024242.GA32509@nlin.net> Russ Smith wrote: > >i'm in full support of ODE/blender integration - i think this is quite >an exciting prospect. in fact i took some very preliminary steps in this >direction as soon as the blender sources were released - but as norman >is far in advance of my own pitiful attempt i will abandon what i am doing >and help out the existing effort. Not so fast - we may be doing different types of ODE/Blender integration so I wouldn't throw out your work just yet... >i have a question: the commercial dynamics providers (ME, havok etc) have >their own plugins for 3DSMax, maya, and other expensive tools. i am >wondering what functionality, if any, would be lost by an artist switching >from e.g. 3DSMax/Havok to Blender/ODE ? (i'm a 3DSMax novice and a >blender dummy.) Something important to understand about Blender is that it has a built-in real-time interactive 3D game engine. This means you can model a 3D scene in Blender, press the "P" key, and Blender instantly (typically less than 1 second) starts the game engine, which then controls all objects on-screen. This is a reasonably complete (Turing-complete, anyway) game engine; you can animate objects along paths, read keyboard input, move the camera and players around, create/destroy objects, set variables, send messages between objects, run scripts, and have objects controlled by the physics subsystem. This physics subsystem in the real-time game engine is what I am working on, so that Blender real-time games can have dynamic objects controlled by ODE. (The previous Blender game physics were impulse-based.) >i am guessing >that the initial blender integration will be to run ODE simulations >within blender to produce animation data, and that the saved dynamics >information will be tied in with blenders own file format(s). This is not the ODE/Blender integration I am working on right now, but it is very important as well, so that artists creating non-interactive animations (more traditional animations and movies) can also use ODE to create realistic dynamic motions. As I am not an expert in creating these kinds of animations, I don't know how such tools typically work or how they could be integrated into the modeling/animation workflow of Blender (as opposed to the game engine integration, which appears to me to be of a different nature). The way it is now integrated, physical properties of objects are specified either in the Blender material for the object (button DYN in the MaterialButtons) and/or in the Blender Game Attributes for the object (in the GameButtons). These buttons allow the user to enter properties like mass, friction, bounding volume, etc. The Blender game engine reads these fields on game startup, then creates the ODE objects. A rendering/animation tool should probably use these same buttons to read out physically relevant information, but would start an ODE world and simulate one timestep forward for each frame of the animation rendered. From russ at q12.org Fri Oct 18 20:36:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 18 20:36:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021019024242.GA32509@nlin.net> References: <20021019024242.GA32509@nlin.net> Message-ID: <20021018204011.2905d6de.russ@q12.org> > This physics subsystem in the real-time game engine is what I am > working on, so that Blender real-time games can have dynamic objects > controlled by ODE. (The previous Blender game physics were > impulse-based.) ah ... how are the dynamical properties of objects set in blender? i have in mind something where you select two objects, add a joint at a specific position, drag the low/high limits (some kind of draggable widgets that surround the joint), pop up a dialog box for the joint/body/surface properties, etc etc. of course i should just try out your work in blender - but i have found it (blender) even more difficult to use for the ininitiated than 3DSMax, which is saying something. russ. -- Russell Smith http://www.q12.org From coding at natew.com Fri Oct 18 21:12:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 18 21:12:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021018204011.2905d6de.russ@q12.org> Message-ID: On Fri, 18 Oct 2002, Russ Smith wrote: > of course i should just try out your work in blender - but i have found > it (blender) even more difficult to use for the ininitiated than 3DSMax, > which is saying something. That's good to hear, I was afraid it was just me. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From nlin at nlin.net Sat Oct 19 07:19:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Sat Oct 19 07:19:02 2002 Subject: [ODE] Re: ODE/Blender Message-ID: <20021019155757.GA4938@nlin.net> On Fri, Oct 18, 2002 at 08:40:11PM -0400, Russ Smith wrote: [reordering a bit...] > of course i should just try out your work in blender - but i have found > it (blender) even more difficult to use for the ininitiated than 3DSMax, > which is saying something. The Blender UI is about as intuitive as that of vi or emacs. Hard to learn, but very fast and powerful once you do know it. See http://www.cse.cuhk.edu.hk/~wmpang1/blender/blen_ui/blen_ui.html for a good introduction. It's somewhat old, but still relevant for the basics. > > This physics subsystem in the real-time game engine is what I am > > working on, so that Blender real-time games can have dynamic objects > > controlled by ODE. (The previous Blender game physics were > > impulse-based.) > > ah ... how are the dynamical properties of objects set in blender? i > have in mind something where you select two objects, add a joint at a > specific position, drag the low/high limits (some kind of draggable > widgets that surround the joint), pop up a dialog box for the > joint/body/surface properties, etc etc. After reading the above tutorial, add a mesh, add a new material to the mesh, and in the MaterialButtons look for a small button "DYN". This controls dynamic properties of the material connected with the mesh. E.g. friction, restitution, or some special Fh force on slopes (for the old physics, currently unused I think). Another place to enter material properties is by the GameButtons. Select a mesh, press F8 to go to the GameButtons, then click on the small "Actor" button, at which point some more buttons will appear, then click on "Dynamic" and "Rigid Body" (the old physics system had both "fake" dynamics and rigid-body dynamics, which is why you had to explicitly select "rigid body"; currently there is no longer any distinction between "Dynamic" and "Rigid Body" that I am aware of). At this point you can set the mass of the rigid body object, some damping properties, and some other properties which are probably outdated and were for the old physics system (like the "form factor"). To select the bounding volume for an object, select the object, go to the EditButtons (press F9), and at the left activate the button "Bounds" then select either "Box" or "Sphere". This controls whether the physics system will use a sphere or a box for the rigid body. "Polyheder" is also an option, which will eventually cause a tri-mesh to be generated using Erwin de Vries's triangle collider. There are currently some bugs with the bounding volume selection (see the ToDo list in OdePhysicsController.cpp) As for joints or constraints, Blender already has a constraints window designed for animation. You can constraint two objects to have the same location. By creating "empty" or "dummy" objects, and using these as parents of "real" objects, you can get point-to-point constraints in the modeler. The game engine could use this information for generating a ODE p2p constraint. There are some other simple constraints like "track to" or "copy orientation". The current constraint types are designed for animation/modeling help, but we could add new constraint types for physics, which would then be used in the game engine. Again see OdePhysicsController.cpp for notes on how this might work. Blender may be a bit confusing at first, but it a very powerful program and is worth learning. -Norman From nlin at nlin.net Sat Oct 19 07:21:02 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Sat Oct 19 07:21:02 2002 Subject: [ODE] Re: ODE/Blender In-Reply-To: <20021018204011.2905d6de.russ@q12.org> References: <20021019024242.GA32509@nlin.net> <20021018204011.2905d6de.russ@q12.org> Message-ID: <20021019155926.GB4938@nlin.net> By the way, some sample files illustrating the current ODE/Blender integration are at http://www.xype.net/~nlin . These files will only work with the CVS version of blender at CVSROOT=:pserver:anonymous at 217.77.141.135:/cvs01 . -Norman From benny at kramekweb.com Sat Oct 19 08:32:02 2002 From: benny at kramekweb.com (Benny) Date: Sat Oct 19 08:32:02 2002 Subject: [ODE] 3d world an directx Message-ID: <200210191531.g9JFV8u16679@hook.org> ------- Original Message -------- From: ivan.bolcina at volja.net To: "ode at q12.org" CC: Subject: [ODE] 3d world an directx Date: 17/10/02 07:10     Problems.   Is ode 3d world different from DirectXs? It seems to me that y and z axes are swapt.   bye,ivan From don_reid at attbi.com Sat Oct 19 09:04:02 2002 From: don_reid at attbi.com (don) Date: Sat Oct 19 09:04:02 2002 Subject: [ODE] Re: File formats In-Reply-To: <200210190101.g9J119u04892@hook.org> References: <200210190101.g9J119u04892@hook.org> Message-ID: <20021019160048.GA9649@reid.corvallis.or.us> An important thing to have in any file format, esp. a new one, is extensability. You want to be able to add new construts easily, and without changing old code. XML gives you this automatically. Of course the parser must then be written to skip over things it doesn't understand (with a warning if desired). Don Reid From ivan.bolcina at volja.net Sat Oct 19 13:17:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Sat Oct 19 13:17:01 2002 Subject: [ODE] 3d world on directx Message-ID: <007401c277ac$57b1de30$0100a8c0@vectra> Hi! I assure you that if I swap y and z axis, stuff works ok, otherwise doesnt. Please look at my original code and see how are they swapt. I believe that DirectX uses left-handed system. I pass only quaternions from ode to directx to determine current orientation. I have to swap axis in this case too. thanx, ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021019/55d10c16/attachment.htm From airsona at bestweb.net Sat Oct 19 22:35:02 2002 From: airsona at bestweb.net (Sasha H) Date: Sat Oct 19 22:35:02 2002 Subject: [ODE] Flight Simulation Message-ID: <001601c27795$5a7a6b80$4001b3d8@airsona> Hey guys, I've few questions! Okey, I'm planning to use ODE to make my airplane fly... Would it be possible to simulate aerodynamics on each element of the airplane (body, right wing, left wing, tail, etc...)? What is the best approach, even if it's not "super realistic". And also, if I have a mesh and a terrain, does ODE support such collisions? Cool......thanks! -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021019/ae4a8d37/attachment.htm From grubertm at hotmail.com Sat Oct 19 22:57:01 2002 From: grubertm at hotmail.com (Marco Grubert) Date: Sat Oct 19 22:57:01 2002 Subject: [ODE] Flight Simulation References: <001601c27795$5a7a6b80$4001b3d8@airsona> Message-ID: >Okey, I'm planning to use ODE to make my airplane fly... >Would it be possible to simulate aerodynamics on each element of the airplane (body, right wing, left wing, >tail, etc...)? What is the best approach, even if it's not "super realistic". As I have never done a flightsim, I can only refer you to a book such as "Physics for Game Developers" which has a chapter on airplanes. >And also, if I have a mesh and a terrain, does ODE support such collisions? AFAIK no. Only one of the objects can be a mesh (trilist) the other one has to be a box or sphere (not sure about the current capped/cylinder status). I.e. you would use the bounding box of the fuselage & wings and a trilist for the terrain. - Marco Grubert From coding at natew.com Sat Oct 19 23:06:02 2002 From: coding at natew.com (Nate W) Date: Sat Oct 19 23:06:02 2002 Subject: [ODE] Flight Simulation In-Reply-To: Message-ID: On Sat, 19 Oct 2002, Marco Grubert wrote: > >And also, if I have a mesh and a terrain, does ODE support such collisions? > > AFAIK no. Only one of the objects can be a mesh (trilist) the other one has > to be a box or sphere (not sure about the current capped/cylinder status). > I.e. you would use the bounding box of the fuselage & wings and a trilist > for the terrain. That's a better answer than what I wrote just a minute ago. I think I misunderstood the question. -- Nate Waddoups Redmond WA USA http://www.natew.com From coding at natew.com Sat Oct 19 23:09:02 2002 From: coding at natew.com (Nate W) Date: Sat Oct 19 23:09:02 2002 Subject: [ODE] Flight Simulation In-Reply-To: <001601c27795$5a7a6b80$4001b3d8@airsona> Message-ID: On Sat, 19 Oct 2002, Sasha H wrote: > Okey, I'm planning to use ODE to make my airplane fly... > > Would it be possible to simulate aerodynamics on each element of the > airplane (body, right wing, left wing, tail, etc...)? What is the best > approach, even if it's not "super realistic". $0.02 from a guy with a moderate understanding of aerodynamics and flying things: How about applying a force to each flying surface, in proportion to what the aerodynamic force on said surface should be? You could calculate the lift and drag for the wings, for example, and a force for the deflection of each control surface, etc. I bet you'd get fun, if not realistic, results. Make the force computations as accurate and sophisticated as your understanding of aerodynamics, learn all you can, and polish them up as you learn. > And also, if I have a mesh and a terrain, does ODE support such > collisions? If you mix in the "tri-collider" contribution, you can do collision detection between height-mapped terrain and boxes or spheres. A few of us have been doing this in our ODE projects for a while now. I'm using it with the Demeter terrain engine and I'm pretty happy with the results. -- Nate Waddoups Redmond WA USA http://www.natew.com From x19er at comcast.net Sun Oct 20 02:57:02 2002 From: x19er at comcast.net (John Lagerquist) Date: Sun Oct 20 02:57:02 2002 Subject: [ODE] Quaternion Integration Message-ID: <00a801c2781e$c6941260$6401a8c0@singularity> It appears that NASA has a quaternion integration method that does not require normalization between integration steps. Does anyone have any information on this technique? Their webpage (http://ettc.usc.edu/dryden/tos/closedform.html) states: "NASA's technology represents a substantial improvement over traditional methods of integrating 4-D kinematics equations. Those methods solve the quaternion kinematic equations in a way that does not automatically preserve the unit normalization of the quaternion. These methods are therefore inherently prone to error and difficult to correct. Such traditional methods are computation-intensive because of the substantial amount of error correction needed to compensate for analytical drift. NASA's integration method preserves the mathematics of the quaternion space that it creates and therefore introduces no error associated specifically with non-preservation of the quaternion norm. As a result, error correction associated with normalization is not needed in the NASA method" John From rtonge90 at yahoo.co.uk Sun Oct 20 04:14:01 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sun Oct 20 04:14:01 2002 Subject: [ODE] Quaternion Integration Message-ID: <20021020111339.28128.qmail@web14909.mail.yahoo.com> Hello >Does anyone have any information on this technique? Here is the full text of the patent: http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO2&Sect2=HITOFF&p=1&u=/netahtml/search-bool.html&r=1&f=G&l=50&co1=AND&d=ft00&s1=6,061,611.WKU.&OS=PN/6,061,611&RS=PN/6,061,611 Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From Remko at act-3d.com Sun Oct 20 08:42:01 2002 From: Remko at act-3d.com (Remko Jacobs (act-3d.com)) Date: Sun Oct 20 08:42:01 2002 Subject: [ODE] Another strange wheel rotation Message-ID: <277753125.359388433.98@server> Ok, it was a stupid mistake. The hinges where initialized AFTER the first simulation step. The wheels moved down because of the gravity and the rotation point was shifted. Changing the order fixed this. -Remko -----Original Message----- From: Remko Jacobs (act-3d.com) Sent: Thursday, October 17, 2002 11:40 AM To: ode at q12.org; Remko Jacobs (act-3d.com) Subject: [ODE] Another strange wheel rotation bug I fixed the 'bending wheels' problem using the following methods. The problem still exists but at least you can reduce it to acceptable levels: - Decrease the step size (update of 200-300Hz) - Different CFM and ERP values - Different masses - Bigger wheels (The bigger the wheels, the slower they have to turn for the same speed) I'm experimenting with a driving simulation and the results are stunning! However, after some experimentation, the car started to bounce and the handling was completely gone. It turned out that the wheel is not rotating around it's axis but around a point slightly above that. Gravity was causing this offset. Gravity pulls the wheel down so the rotation axis of the hinge is too high. What really surprised me, is the solution I found: When I set the gravity to zero the problem does not occur (as expected). When I crank up the gravity while the simulation is running, the bug does not come back but the wheel rotates around the correct point. Does anyone has an explanation for this? Why the rotation screws up when I initialize with gravity? -Remko _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode From kjmac at freenet.co.uk Sun Oct 20 12:11:02 2002 From: kjmac at freenet.co.uk (Ken MacLeod) Date: Sun Oct 20 12:11:02 2002 Subject: [ODE] Compiling OPCODE 1.0 as a static lib for use with tri-collider Message-ID: <000301c2786c$4cf17990$0401a8c0@xperemental> (Apologies if this message is posted twice, I initially sent it using the incorrect email account) Hi, I?m developing a car simulation API for my MSc degree. I would like to be able to use ODE with the tri-collider contribution (ode/contrib) so that I can do sphere (wheel) triangle (terrain) collisions. Unfortunatly I have cannot for the life of me get opcode to compile as a static library. I printed off and followed the guide on the Wiki pages, but got only the following error output: --------------------Configuration: OPCODE 1_0 - Win32 Debug-------------------- Compiling... OPC_Container.cpp C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(41) : warning C4273: 'private: static unsigned int Opcode::Container::mNbContainers' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(41) : error C2491: 'Container::mNbContainers' : definition of dllimport static data member not allowed C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(42) : warning C4273: 'private: static unsigned int Opcode::Container::mUsedRam' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(42) : error C2491: 'Container::mUsedRam' : definition of dllimport static data member not allowed C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(50) : warning C4273: 'Container::Container' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(64) : warning C4273: 'Container::~Container' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(79) : warning C4273: 'Resize' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(121) : warning C4273: 'Contains' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(143) : warning C4273: 'Delete' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(166) : warning C4273: 'FindNext' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(186) : warning C4273: 'FindPrev' : inconsistent dll linkage. dllexport assumed. C:\MSc\opcode 1.0\opcode\OPC_Container.cpp(204) : warning C4273: 'GetUsedRam' : inconsistent dll linkage. dllexport assumed. OPC_Matrix4x4.cpp C:\MSc\opcode 1.0\opcode\OPC_Matrix4x4.cpp(65) : error C2491: 'InvertPRMatrix' : definition of dllimport function not allowed Error executing cl.exe. OPCODE 1_0.lib - 3 error(s), 10 warning(s) Looking through the archives for this mailing list someone named Norman had the same problem. He posted a message saying the he to could not compile opcode 1.0 as a static lib, unfortunately I could not see any reply to his request in the archives. Norman?s next post just thanked the author for helping him get it compiling! Here?s a snippit: ------------ Hi, Thanks to the author's help I was able to compile the tri-collider - I needed to modify opcode to compile it as a static library, then compile the files in the tri-collider directory as a static library, then link my test app against both libraries. ? ---------- All help with this is greatly appreciated! Thanks, - Ken MacLeod --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.394 / Virus Database: 224 - Release Date: 03/10/2002 From amoravanszky at dplanet.ch Sun Oct 20 13:12:01 2002 From: amoravanszky at dplanet.ch (Adam Moravanszky) Date: Sun Oct 20 13:12:01 2002 Subject: [ODE] Compiling OPCODE 1.0 as a static lib for use with tri-collider In-Reply-To: <000301c2786c$4cf17990$0401a8c0@xperemental> Message-ID: <5.1.0.14.0.20021020221049.009edb30@pop.dplanet.ch> Ken, You just have to get rid of the #defines that prefix all the functions / classes with __dllexport or __dllimport. It is not rocket science. --Adam At 08:10 PM 10/20/02 +0100, Ken MacLeod wrote: >(Apologies if this message is posted twice, I initially sent it using >the incorrect email account) > >Hi, >I'm developing a car simulation API for my MSc degree. I would like to >be able to use ODE with the tri-collider contribution (ode/contrib) so >that I can do sphere (wheel) triangle (terrain) collisions. Unfortunatly >I have cannot for the life of me get opcode to compile as a static >library. I printed off and followed the guide on the Wiki pages, but got >only the following error output: > >--------------------Configuration: OPCODE 1_0 - Win32 >Debug-------------------- >Compiling... >OPC_Container.cpp From ngbinh at glassegg.com Sun Oct 20 21:29:03 2002 From: ngbinh at glassegg.com (Nguyen Binh) Date: Sun Oct 20 21:29:03 2002 Subject: [ODE] Introduction / Suggestions etc In-Reply-To: <001c01c276f8$da7e1c20$c912da50@powerhouse> References: <001c01c276f8$da7e1c20$c912da50@powerhouse> Message-ID: <731305116.20021021111343@glassegg.com> As far as I know, Blender currently support Python. Then why do we need to re-implement a small descriptive language? Why we don't use the powerful Python? I didn't use Python but I use Lua (www.lua.org) and it does help alot.(I've heard that Python is much more powerful). >> worth a look. Speaking of which, I'm reminded of a message from Adam @ >> Novodex that I didn't get around to replying to the other day... >> >> Anyhow, once a good file format gets agreed upon, I think a second key >> ingredient to standardization would be to have some open and shared >> "deserialization" code available. The less work it takes for application >> developers to import such files, quicker they (we?) will support it. AM> Hi Nate, -- Best regards, --------------------------------------------------------------------- Nguyen Binh Software Engineer Glass Egg Digital Media Me Linh Point Tower, 10th Floor 2 Ngo Duc Ke District 1, Ho Chi Minh City Vietnam Fax: (84.8)823-8392 www.glassegg.com --------------------------------------------------------------------- From ivan.bolcina at volja.net Mon Oct 21 12:15:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Mon Oct 21 12:15:02 2002 Subject: [ODE] ode to directx coordinates and orientation Message-ID: <000e01c27935$f510c620$0100a8c0@vectra> Hi. Sorry cant speak Russian. I am from Slovenia, so we have slavic language in common. I have this problem. Mapping 3-d coordinats from ode to directx. It is not one to one. I have come to conclusion that positions, velocities are mapped one to one, but orientation is like this function: //from ode to directx D3DXVECTOR3 convertVector(const dReal *in) { D3DXVECTOR3 out; out.x=in[0]; out.y=in[1]; out.z=in[2]; return out; } //from ode to directx D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=(float)in[0]; out.y=(float)in[1]; out.z=(float)in[2]; out.w=-(float)in[3]; return out; } So ODE is doing steps on objects and then I need to display it with directx in corrent position and orientation. Position seem to be ok, but orientation..... btw, I see you are professional game developer. How does it feel like? Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021021/cd911cd2/attachment.htm From ivan.bolcina at volja.net Tue Oct 22 02:03:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 02:03:01 2002 Subject: [ODE] Re: ode to directx coordinates and orientation References: <000e01c27935$f510c620$0100a8c0@vectra> <642235524.20021022104030@gsc-game.kiev.ua> Message-ID: <001101c279a9$8fddd8f0$0100a8c0@vectra> Hi,slipch. Thank you VERY much. It works great. So for anyone interested, here is transformation from ODE quaternion to DirectX's. D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=(float)in[1]; out.y=(float)in[2]; out.z=(float)in[3]; out.w=(float)in[0]; return out; } Ukraine is actually very near slovenia. Slovenia, Hungary, Ukraine. Najlepsa hvala se enkrat in uzivaj se naprej. Lep pozdrav,ivan. ----- Original Message ----- From: "slipch" To: "Ivan Bolcina" Sent: Tuesday, October 22, 2002 9:40 AM Subject: Re: ode to directx coordinates and orientation > Hello Ivan, > > Monday, October 21, 2002, 10:13:36 PM, you wrote: > > IB> //from ode to directx > IB> D3DXVECTOR3 convertVector(const dReal *in) > IB> { > IB> D3DXVECTOR3 out; > IB> out.x=in[0]; > IB> out.y=in[1]; > IB> out.z=in[2]; > IB> return out; > IB> } > > IB> //from ode to directx > > IB> D3DXQUATERNION convertQuaternion(const dReal *in) > IB> { > IB> D3DXQUATERNION out; > IB> out.x=(float)in[0]; > IB> out.y=(float)in[1]; > IB> out.z=(float)in[2]; > IB> out.w=-(float)in[3]; > IB> return out; > IB> } > > > IB> So ODE is doing steps on objects and then I need to display it with directx in corrent position and orientation. Position seem to be ok, but orientation..... > > IB> btw, I see you are professional game developer. How does it feel like? > I am doing my best to be it but I am only in the start :). > I translate DirectX transforms to ode and vise versa and > everything works right (As I already tell you it need to transpose DirectX matrix before > set it as ODE rotation matrix.). But I have never translate > Quaternion. > Following DirectX doc quaternion is > > q.x = sin(theta/2) * axis.x > q.y = sin(theta/2) * axis.y > q.z = sin(theta/2) * axis.z > q.w = cos(theta/2) > > From ODE doc: > > A quaternion is four numbers [cos(theta/2) sin(theta/2)*u] > where theta is a rotation angle and `u' is a unit length rotation axis. > > May be the problem in sequence cos(theta/2) - last in DIrectX and > first in ODE. Then > > D3DXQUATERNION convertQuaternion(const dReal *in) > { > D3DXQUATERNION out; > out.x=(float)in[1]; > out.y=(float)in[2]; > out.z=(float)in[3]; > out.w=(float)in[0]; > return out; > } > > IB> Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) > It is nearly understandable. > I am from Ukraine indeed. > > Nashi najkrashi pobazsannya! :) > > > -- > Best regards, > slipch mailto:slipch at gsc-game.kiev.ua > From ivan.bolcina at volja.net Tue Oct 22 02:06:01 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 02:06:01 2002 Subject: [ODE] Re: ode to directx coordinates and orientation References: <000e01c27935$f510c620$0100a8c0@vectra> <642235524.20021022104030@gsc-game.kiev.ua> Message-ID: <001a01c279a9$9e142730$0100a8c0@vectra> Hi,slipch. Thank you VERY much. It works great. So for anyone interested, here is transformation from ODE quaternion to DirectX's. D3DXQUATERNION convertQuaternion(const dReal *in) { D3DXQUATERNION out; out.x=(float)in[1]; out.y=(float)in[2]; out.z=(float)in[3]; out.w=(float)in[0]; return out; } Ukraine is actually very near slovenia. Slovenia, Hungary, Ukraine. Najlepsa hvala se enkrat in uzivaj se naprej. Lep pozdrav,ivan. ----- Original Message ----- From: "slipch" To: "Ivan Bolcina" Sent: Tuesday, October 22, 2002 9:40 AM Subject: Re: ode to directx coordinates and orientation > Hello Ivan, > > Monday, October 21, 2002, 10:13:36 PM, you wrote: > > IB> //from ode to directx > IB> D3DXVECTOR3 convertVector(const dReal *in) > IB> { > IB> D3DXVECTOR3 out; > IB> out.x=in[0]; > IB> out.y=in[1]; > IB> out.z=in[2]; > IB> return out; > IB> } > > IB> //from ode to directx > > IB> D3DXQUATERNION convertQuaternion(const dReal *in) > IB> { > IB> D3DXQUATERNION out; > IB> out.x=(float)in[0]; > IB> out.y=(float)in[1]; > IB> out.z=(float)in[2]; > IB> out.w=-(float)in[3]; > IB> return out; > IB> } > > > IB> So ODE is doing steps on objects and then I need to display it with directx in corrent position and orientation. Position seem to be ok, but orientation..... > > IB> btw, I see you are professional game developer. How does it feel like? > I am doing my best to be it but I am only in the start :). > I translate DirectX transforms to ode and vise versa and > everything works right (As I already tell you it need to transpose DirectX matrix before > set it as ODE rotation matrix.). But I have never translate > Quaternion. > Following DirectX doc quaternion is > > q.x = sin(theta/2) * axis.x > q.y = sin(theta/2) * axis.y > q.z = sin(theta/2) * axis.z > q.w = cos(theta/2) > > From ODE doc: > > A quaternion is four numbers [cos(theta/2) sin(theta/2)*u] > where theta is a rotation angle and `u' is a unit length rotation axis. > > May be the problem in sequence cos(theta/2) - last in DIrectX and > first in ODE. Then > > D3DXQUATERNION convertQuaternion(const dReal *in) > { > D3DXQUATERNION out; > out.x=(float)in[1]; > out.y=(float)in[2]; > out.z=(float)in[3]; > out.w=(float)in[0]; > return out; > } > > IB> Lep pozdrav in dobro se imej tam v mrzli Rusiji. :-) > It is nearly understandable. > I am from Ukraine indeed. > > Nashi najkrashi pobazsannya! :) > > > -- > Best regards, > slipch mailto:slipch at gsc-game.kiev.ua > From facontidavide at hotmail.com Tue Oct 22 08:25:02 2002 From: facontidavide at hotmail.com (Edgard Oscuro) Date: Tue Oct 22 08:25:02 2002 Subject: [ODE] Get the motor torque Message-ID: Hi everyone. I am using ODE to simulate a humanoid robot (and it seems I am not the only one!). Usually we use the motors making them give a fixed velocity. I need to know the TORQUE genereted by the motor to have that velocity. Someone can suggest me how? I suppose I have to modify the code to create my how function, but where can I take this value? Thanks, Davide _________________________________________________________________ Chiacchiera con gli amici online, prova MSN Messenger! http://messenger.msn.it From ivan.bolcina at volja.net Tue Oct 22 11:50:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 22 11:50:02 2002 Subject: [ODE] This is corect, I hope? Message-ID: <001201c279fb$b4114ca0$0100a8c0@vectra> Hi. Is this function, which converts ODE vector to DirectX's, correct? It appears so, exept for the mass to body assignment. bye,ivan D3DXVECTOR3 convertVector(const dReal *in) { D3DXVECTOR3 out; out.x=in[0]; out.y=in[1]; out.z=in[2]; return out; } -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021022/7bf45b94/attachment.htm From ahamilton_01 at hotmail.com Tue Oct 22 15:04:02 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Tue Oct 22 15:04:02 2002 Subject: [ODE] penalty method Message-ID: Every one say penalty method is bad, but has anybody actually tried it? I am talking about David Wu's gdc talk. Has any one actually implemented his method? Not trying to start a fight here, just going through all the alternatives... Al _________________________________________________________________ Broadband? Dial-up? Get reliable MSN Internet Access. http://resourcecenter.msn.com/access/plans/default.asp From g.r.vansickle at worldnet.att.net Tue Oct 22 18:44:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Tue Oct 22 18:44:02 2002 Subject: [ODE] penalty method In-Reply-To: Message-ID: > Every one say penalty method is bad, but has anybody actually tried it? I'd wager that pretty much *everybody* has actually tried it. It's bad. > I am > talking about David Wu's gdc talk. Has any one actually implemented his > method? Not trying to start a fight here, just going through all the > alternatives... I don't know what Mr. Wu had to say, but penalty methods have a built-in problem that is essentially intractable: they, by definition, lead to stiff systems of differential equations. Collisions and resting contact are either too squishy or your simulation blows up or both. I know for a fact that everybody who's ever considered the rigid-body simulation problem wish it weren't so, but it is. And to add insult to injury, the step from easily-understandable penalty methods to eye-glazingly complex more robust methods is a very long one. But luckily, Russ has a good start at putting this baby to bed once and for all for us ;-). -- Gary R. Van Sickle Brewer. Patriot. From nlin at nlin.net Tue Oct 22 19:36:01 2002 From: nlin at nlin.net (nlin@nlin.net) Date: Tue Oct 22 19:36:01 2002 Subject: [ODE] penalty method Message-ID: <20021023040645.GE8364@nlin.net> Gary R. Van Sickle wrote: > > Every one say penalty method is bad, but has anybody actually tried it? > > I'd wager that pretty much *everybody* has actually tried it. It's bad. I believe by "it" the original poster was talking about David Wu's bag of tricks for penalty methods, not the penalty technique in general. > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say See http://www.pseudointeractive.com/games/penaltymethods.ppt Unfortunately, I was not able to attend this talk, so the slides are my only source of information on David Wu's techniques for penalty methods. He seems to swear by them. I, too, am interested in hearing from people who have tried David Wu's suggestions, since most penalty sims suffer from the well-known problems. -Norman From p.terdiman at wanadoo.fr Wed Oct 23 01:00:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 23 01:00:02 2002 Subject: [ODE] penalty method References: Message-ID: <007401c27a69$d2a0bf20$0e00000a@pierre> > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say, but penalty methods have a built-in problem > that is essentially intractable: they, by definition, lead to stiff systems of > differential equations. Collisions and resting contact are either too squishy > or your simulation blows up or both. Penalty methods have a bad reputation indeed. And for pretty good reasons. But this is not a black-or-white situation where one can simply discard them completely. Even if I'm alone on that one, I'll say they *are* a good alternative in particular cases, especially in games. Let me summarize what I think are the pros and cons. Cons: - unstable as soon as you connect bodies with springs - implementation of resting contacts borders on voodoo magic - stacked objects and all joints are pretty difficult to handle - you'll need a small timestep indeed Pros: - each iteration is extremely fast - you can solve each contact on-the-fly, which is great on consoles since it doesn't require any stack memory (see the recent post about the 10 Mb stack in VC++. No way you can do that on a console.) - handle 200~300 simultaneous contacts without any (speed) problem - you *will* need it anyway as a fallback when the LCP solver fails (that's what they do in Havok AFAIK) - they're good enough to handle common game situations, and that's the key point. Many great games with great physics have been using nothing more than penalty methods (especially japanese games - on top of my head the last good example was Wreckless on X-Box) They're "bad", but sometimes they're the right tool for the job IMHO. Some lame tests available here (I probably didn't upload the most convincing scenes anyway) : http://www.codercorner.com/Rigid.htm Pierre From svalverde at barcelona.ubisoft.es Wed Oct 23 01:03:02 2002 From: svalverde at barcelona.ubisoft.es (Sergio Valverde) Date: Wed Oct 23 01:03:02 2002 Subject: [ODE] penalty method Message-ID: <61504D875986D511928A00B0D0F36AF8D95F0C@SRVMAIL-ES> So long ago I tryed to implement a physic engine for my comercial game which is based on penalty methods for resting (or continous) contact. I remembered myself reading the Wu's presentation and trying to implement his ideas (...) In case of "sudden" and "hard" collisions, instantaneous impulses apply (like in the old and good Baraff papers). It was *VERY* difficult to tune the system for stability 1) This approach results in very tight coupling between the physics low-level simulation and more high level controls (for instance: the AI code which lays on top of the low sim layer) The system isn't very modular and was the 1st source of major headaches ... 2) -----Original Message----- From: nlin at nlin.net [mailto:nlin at nlin.net] Sent: miercoles, 23 de octubre de 2002 6:07 To: ode at q12.org Subject: Re: [ODE] penalty method Gary R. Van Sickle wrote: > > Every one say penalty method is bad, but has anybody actually tried it? > > I'd wager that pretty much *everybody* has actually tried it. It's bad. I believe by "it" the original poster was talking about David Wu's bag of tricks for penalty methods, not the penalty technique in general. > > I am > > talking about David Wu's gdc talk. Has any one actually implemented his > > method? Not trying to start a fight here, just going through all the > > alternatives... > > I don't know what Mr. Wu had to say See http://www.pseudointeractive.com/games/penaltymethods.ppt Unfortunately, I was not able to attend this talk, so the slides are my only source of information on David Wu's techniques for penalty methods. He seems to swear by them. I, too, am interested in hearing from people who have tried David Wu's suggestions, since most penalty sims suffer from the well-known problems. -Norman _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode From G.J.A.v.d.Bergen at cebra.tue.nl Wed Oct 23 02:33:02 2002 From: G.J.A.v.d.Bergen at cebra.tue.nl (Bergen, G.J.A. van den) Date: Wed Oct 23 02:33:02 2002 Subject: [ODE] penalty method Message-ID: <81E5F727841DD211A5FD0008C728DB7B06E94C4E@campusx1.tue.nl> The stiffness of the differential equations and the fact that the penalty forces rely solely on the position of the objects (not the velocities) demand that you use an integrator that does not amplify its own errors. Wu uses implicit Euler as integrator, which he claims keeps the system from exploding. Also, care should be taken not to add energy to the system by placing exerted springs on interpenetrating contacts, so either you have to determine the exact time of collision, or you'll have to allow that objects are interpenetrating to some extent. Inserting exerted springs to a contact (especially when using non-linear springs) causes your objects to go ballistic. Penalty methods are mostly useful for spongy objects (See Jeff Lander's GDM articles). John Nagle is using a (patented) penalty method for rigid bodies in Animats, but his approach is not really useful for interactive applications. Gino > -----Original Message----- > From: Pierre Terdiman [mailto:p.terdiman at wanadoo.fr] > Sent: Wednesday, October 23, 2002 9:57 AM > To: ode at q12.org > Subject: Re: [ODE] penalty method > > > > > I am > > > talking about David Wu's gdc talk. Has any one actually > implemented his > > > method? Not trying to start a fight here, just going > through all the > > > alternatives... > > > > I don't know what Mr. Wu had to say, but penalty methods > have a built-in > problem > > that is essentially intractable: they, by definition, lead to stiff > systems of > > differential equations. Collisions and resting contact are > either too > squishy > > or your simulation blows up or both. > > Penalty methods have a bad reputation indeed. And for pretty > good reasons. > But this is not a black-or-white situation where one can > simply discard them > completely. Even if I'm alone on that one, I'll say they *are* a good > alternative in particular cases, especially in games. Let me > summarize what > I think are the pros and cons. > > Cons: > - unstable as soon as you connect bodies with springs > - implementation of resting contacts borders on voodoo magic > - stacked objects and all joints are pretty difficult to handle > - you'll need a small timestep indeed > > Pros: > - each iteration is extremely fast > - you can solve each contact on-the-fly, which is great on > consoles since it > doesn't require any stack memory (see the recent post about > the 10 Mb stack > in VC++. No way you can do that on a console.) > - handle 200~300 simultaneous contacts without any (speed) problem > - you *will* need it anyway as a fallback when the LCP solver > fails (that's > what they do in Havok AFAIK) > - they're good enough to handle common game situations, and > that's the key > point. Many great games with great physics have been using > nothing more than > penalty methods (especially japanese games - on top of my > head the last good > example was Wreckless on X-Box) > > > They're "bad", but sometimes they're the right tool for the job IMHO. > > Some lame tests available here (I probably didn't upload the > most convincing > scenes anyway) : > http://www.codercorner.com/Rigid.htm > > Pierre > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > From p.terdiman at wanadoo.fr Wed Oct 23 04:02:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Wed Oct 23 04:02:02 2002 Subject: [ODE] penalty method References: <81E5F727841DD211A5FD0008C728DB7B06E94C4E@campusx1.tue.nl> Message-ID: <013301c27a83$4a121a40$0e00000a@pierre> > The stiffness of the differential equations and the fact that the penalty > forces rely solely on the position of the objects (not the velocities) > demand that you use an integrator that does not amplify its own errors. Who said the penalty forces didn't depend on velocities ? Mine do. > Wu > uses implicit Euler as integrator, which he claims keeps the system from > exploding. Also, care should be taken not to add energy to the system by > placing exerted springs on interpenetrating contacts, so either you have to > determine the exact time of collision, or you'll have to allow that objects > are interpenetrating to some extent. Indeed, some interpenetration is allowed. That's good or bad, depending on the way you see it. On the bad side, well, it might be visually unpleasant if it's too obvious. On the good side, the system doesn't break or explode when it happens. And it does happen. Anyway I'm not sure the magic physics bullet has been found yet, each method has its share of painful problems.. Pierre From svalverde at barcelona.ubisoft.es Wed Oct 23 04:28:01 2002 From: svalverde at barcelona.ubisoft.es (Sergio Valverde) Date: Wed Oct 23 04:28:01 2002 Subject: [ODE] penalty method Message-ID: <61504D875986D511928A00B0D0F36AF8D95F47@SRVMAIL-ES> In fact, when you told us about penalty forces I was thinking in a spring-damping system. That is, we have a penalty which depends both on penetration distance and the relative velocity between the interpenetrating bodies. I think you can implement "simple" simulations of "passive" rigid bodies (like those piles of balls and boxes) with both methods in an acceptable amount of time. Maybe the penalty method allows faster and efficient simulations for these kind of systems than the LCP-based does. But when you need to implement complex mechanics and/or behaviour over your physic engine the choose is clear to me: LCP. The stability provided by this method is worth the associated computation costs. Penalty method is tricky and doesn't assure stability for certain simulation situations. Unfortunately, a game designer is allways able to find such problematic cases, breaking your trick code! :-( The topic is : What is the best way to implement the high-level, physically-based, behavior which is required by current and future games? Sergi -----Original Message----- From: Pierre Terdiman [mailto:p.terdiman at wanadoo.fr] Sent: mi?rcoles, 23 de octubre de 2002 13:00 To: ode at q12.org Subject: Re: [ODE] penalty method > The stiffness of the differential equations and the fact that the penalty > forces rely solely on the position of the objects (not the velocities) > demand that you use an integrator that does not amplify its own errors. Who said the penalty forces didn't depend on velocities ? Mine do. > Wu > uses implicit Euler as integrator, which he claims keeps the system from > exploding. Also, care should be taken not to add energy to the system by > placing exerted springs on interpenetrating contacts, so either you have to > determine the exact time of collision, or you'll have to allow that objects > are interpenetrating to some extent. Indeed, some interpenetration is allowed. That's good or bad, depending on the way you see it. On the bad side, well, it might be visually unpleasant if it's too obvious. On the good side, the system doesn't break or explode when it happens. And it does happen. Anyway I'm not sure the magic physics bullet has been found yet, each method has its share of painful problems.. Pierre _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode From russ at q12.org Wed Oct 23 21:48:02 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 23 21:48:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: <20021023215217.34a17eb4.russ@q12.org> hi all, erwin and others have been working hard developing extensions to ODEs collision functionality for the past little while, and i am finally getting around to integrating this work into ODE. as a first step, i am publishing my proposed extensions to ODE's native collision API. please read the updated collision section in: http://q12.org/ode/ode-new-collision.html the new features are: heirarchical spaces, ability to collide spaces with single geoms, ability to collide spaces together, geom groups are now spaces, geoms have 'category' and 'collide' bits for early culling, better definition of function behavior, other stuff i forgot. note that this is 99% backwards compatible with the existing API, except for two points noted below. erwin, this API is not exactly the same as your work, here's where it differs: * colliding a geom with a space (or a space with a space) is handled with dSpaceCollide2(), not dCollide() - this makes things simpler i think, and gives the user the same degree of control. * spaces do not need to be explicitly locked before use. rather, the spaces will maintain the locked state internally and trigger an error when there are any violations. the spaces will detect geoms that do not move and precompute e.g. bounding boxes and internal collision data structures * there is no geom disable/enable. you can delete and add a geom to a space to get the same effect. incompatabilities with the current API are: * the dXXXSpaceCreate() functions now take a space argument, which can just be set to 0 to get the existing behavior. * geometry groups have a slight behavior change if you want self intersection - see the doc. please provide feedback about this new API. erwin - any comments? does this API work for you? is there any missing functionality? david - i think you mentioned that geoms might want to be interted into multiple spaces. can you give me a use case for this? - in the current API each geom has just one parent. after getting this API implemented i will focus on integrating erwin's ray and trimesh work, then adding the cylinder class. there is also a new quadtree space that is further down the list. russ. -- Russell Smith http://www.q12.org From tetron at interreality.org Wed Oct 23 22:53:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Wed Oct 23 22:53:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <20021023215217.34a17eb4.russ@q12.org> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Cool! A physics engine is for naught if things collisions arn't detected correctly :-) Have box-box collisions (specifically the problem of not generating enough contact joints) been fixed yet? If not, please tell me which file the collision code is in and I'll see if I can fix it myself (and provide a patch of course). The ability for objects to rest upon each other stably is absolutely necessary and precludes using ODE in my application (and I really, really want to use ODE.) The cylinder class you refer to -- would this be a flat-ended cylinder, as opposed to the (slightly weird but I guess easier to program) hemisphere-ended cylinder that already exists? I'm interested in flat-ended cylinders that can stably stand up on end, which a round-ended cylinder of course cannot do. Have you considered using octtrees to optimize collision tests for complex scenes? (I'm just suggesting this off the top of my head, I'm not 100% sure how it would work...) On Wed, 23 Oct 2002, Russ Smith wrote: > hi all, > > erwin and others have been working hard developing extensions to ODEs > collision functionality for the past little while, and i am finally > getting around to integrating this work into ODE. [ Peter Amstutz ][ amstutz at cs.umass.edu ][ tetron at interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9t4p7aeHUyhjCHfcRArs3AJwKBlWNnoCDJrZbnKWcN/Em1y4L9wCffkMj HRiJEoqUygM4DPJBJ1enu58= =bQ/J -----END PGP SIGNATURE----- From russ at q12.org Wed Oct 23 23:11:01 2002 From: russ at q12.org (Russ Smith) Date: Wed Oct 23 23:11:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: References: <20021023215217.34a17eb4.russ@q12.org> Message-ID: <20021023231536.7431c952.russ@q12.org> > Have box-box collisions (specifically the problem of not generating > enough contact joints) been fixed yet? not yet - it has been on my list for a while. look at dBoxBox() in geom.cpp. note that there are many ways to badly generate multiple contact points, and only a few good ways (but i don't want to discourage you! by all means fix this annoying problem...) > The cylinder class you refer to -- would this be a flat-ended > cylinder, as opposed to the (slightly weird but I guess easier to > program) hemisphere-ended cylinder that already exists? yes. this was contributed by Konstantin Slipchenko a short while ago. the capped cylinders are easier to code, it's true, but they're preferable to flat ended cylinders when you need some long thin object that doesn't need to stand on its own. this is because the contact points generated by capped cylinders are much more predictable than that for flat-end cylinders, and less sensitive to geom position changes. this makes for more stable dynamics. > Have you considered using octtrees to optimize collision tests for > complex scenes? i believe erwin is working on this. russ. -- Russell Smith http://www.q12.org From erwin at vo.com Thu Oct 24 05:24:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 05:24:01 2002 Subject: [ODE] enhanced ODE collision API References: <20021023215217.34a17eb4.russ@q12.org> Message-ID: <005f01c27b58$3056d250$73fefea9@athlon> Feedback: Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() or dGeomGetRotation() on a non-placeable geom? The way you handle colliding spaces is more clear to the user, and thus preferable. I assume dSpaceCollide2() will find the (best) space itself from the 2 geom arguments? The sample callback function in the docs also does pairwise checks on all subspaces, right? The enumeration function you use is better than mine. I suppose you buffer the last used index and last used geom? If you have added the 'prev' pointer in the spacedata of a geom, the user can also enumerate backwards. You default the Category and Collide bits to 1 so that users that dont care about it dont have to touch it. Wouldnt it be more logical to default to 0xffffffff then? This is how i interpret the new way it works now: RootSpace - SubSpace1 + GeomTransform1 o Sphere1 + ... - SubSpace2 + GeomTransform2 o Sphere2 + ... - ... Steps: * The user calls dSpaceCollide() on RootSpace. * This will call the usercallback for SubSpace1 and SubSpace2. * The usercallback will call dCollide2() on SubSpace1 and SubSpace2. * This will call the usercallback for SubSpace1, and GeomTransform2 (or the other way around). * The usercallback will call dCollide2 on SubSpace1, and GeomTransform2. * This will call the usercallback for GeomTransform1 and GeomTransform2. * The usercallback will call dCollide() for GeomTransform1 and GeomTransform2. * ... Is this correct? > * spaces do not need to be explicitly locked before use. rather, the > spaces will maintain the locked state internally and trigger an > error when there are any violations. the spaces will detect geoms > that do not move and precompute e.g. bounding boxes and internal > collision data structures So outside of the 'lock' the user is still able to use the bounding boxes computed while colliding? Excellent. How do you determine if a geom has (not) moved? Is it possible to manually lock and unlock the spaces? > * there is no geom disable/enable. you can delete and add a geom to a > space to get the same effect. Not entirely, but i was thinking of removing this flag as well, because it can be faked by setting the Category and Collide bits to 0. > please provide feedback about this new API. erwin - any comments? does > this API work for you? is there any missing functionality? There is no missing functionality as far as i can tell. Its a pity the geom constructor with a body as argument is not added (It saves a malloc and a free), but this is not that important to me. I think it is good enough to keep me from continuing my own dc library. > david - i think you mentioned that geoms might want to be interted into > multiple spaces. can you give me a use case for this? - in the current > API each geom has just one parent. I also considered adding this, but i found it too problematic. > after getting this API implemented i will focus on integrating erwin's > ray and trimesh work, then adding the cylinder class. there is also a > new quadtree space that is further down the list. Have you added the 'prev' pointer in the spacedata of a geom? Without it you cant store the node a geom is in. And it is also faster for the simple and hash spaces. :-) On a related note. Would it be possible to pass 0 in the body constructor for the world it is in, and manually add and remove it? This would be far more appropriate for my apps. Providing the same enumeration functions as in a space would also be appreciated. Cheers, Erwin From russ at q12.org Thu Oct 24 11:13:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 11:13:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <005f01c27b58$3056d250$73fefea9@athlon> Message-ID: > Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() > or dGeomGetRotation() on a non-placeable geom? hmmm ... non-placeable geoms may not have any relevant pos or R data at all. even if something is returned, e.g. zeros, i think the user should be notified that it's not good for anything. or perhaps the user should be told to check for a 0 return code? perhaps this is a way to detect non-placeable geoms? but in that case a dGeomIsPlaceable() function would be cleaner. > The way you handle colliding spaces is more clear to the user, and thus > preferable. I assume dSpaceCollide2() will find the (best) space itself from > the 2 geom arguments? The sample callback function in the docs also does > pairwise checks on all subspaces, right? yes. > The enumeration function you use is better than mine. I suppose you buffer > the last used index and last used geom? yes, that's exactly what i had in mind. > If you have added the 'prev' pointer > in the spacedata of a geom, the user can also enumerate backwards. yes - i'll use a doubly circularly linked list. > You default the Category and Collide bits to 1 so that users that dont care > about it dont have to touch it. Wouldnt it be more logical to default to > 0xffffffff then? i thought about this and could not decide the right answer. how about category=1 and collide=(~0)? > This is how i interpret the new way it works now: > Is this correct? yes. > So outside of the 'lock' the user is still able to use the bounding boxes > computed while colliding? correct. your AABB caching code is preserved. > Excellent. How do you determine if a geom has (not) moved? a space will have a list of clean and dirty geoms. the clean geoms have precomputed AABBs (and perhaps precomputed other things). a geom gets transferred to the dirty list when: * dGeomSetSomething() is called. * it's attached to a non-disabled body. a space can only be in a clean list if it has no dirty items itself - so operations on clean geoms can propagate dirty-ness up to the root space. > Is it possible to manually lock and unlock the spaces? no ... can you give me a use case for when this is required? > Not entirely, but i was thinking of removing this flag as well, because it > can be faked by setting the Category and Collide bits to 0. why 'not entirely?'. > I think it is good enough to keep me from continuing my own dc library. i am largely cutting and pasting from your dc library into ODE - changing the way some things work - but the new collision system is largely the result of your effort. > I also considered adding this, but i found it too problematic. as did i - * memory management: when a space is deleted, which geoms are deleted? should we use ref counting or garbage collection. either way introduces other problems. * a geom has to notify multiple parents when certain things happen, e.g. when it moves. annoying for the clean-data-structure point of view. > Have you added the 'prev' pointer in the spacedata of a geom? Without it you > cant store the node a geom is in. And it is also faster for the simple and > hash spaces. :-) yes. > On a related note. Would it be possible to pass 0 in the body constructor > for the world it is in, and manually add and remove it? This would be far > more appropriate for my apps. Providing the same enumeration functions as in > a space would also be appreciated. yes - i'll add this to the to-do list? :) russ. -- Russ Smith http://www.q12.org/ From dmcclurg at pandemicstudios.com.au Thu Oct 24 15:08:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 24 15:08:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: > geom groups are now spaces does that mean a geom cannot be placed into two different groups? not a big deal, but i'm curious. > david - i think you mentioned that geoms might want to be interted into multiple spaces. can you give me a use case for this? - in the current API each geom has just one parent. i just needed a way to implement collision filtering and the category and collide bitfields do this very elegantly! thanks one other common concept in collision detection is a ghost or phantom geom used as a sensor. you don't bounce off it -- you just detect a penetration. ie: what you want is just detection of the collision and not the contact information. it would be nice if there was a built-in type called 'sensor' or something that didn't do the extra work of computing the contact point/normal. that's it! thanks to erwin for his contribs and i'm really excited about these developments. From dmcclurg at pandemicstudios.com.au Thu Oct 24 15:25:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Thu Oct 24 15:25:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: struct dContactGeom { dVector3 pos; // contact position dVector3 normal; // normal vector dReal depth; // penetration depth dGeomID g1,g2; // the colliding geoms }; A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). int dCombineContacts(int n, dContactGeom* Contacts, int Stride); // Attempts to merge all contacts into a single contact // returns 1 if successful and 'n' otherwise Ta From erwin at vo.com Thu Oct 24 16:02:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:02:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <004201c27bb1$4833fe30$73fefea9@athlon> > > Is it a good idea to assert when calling dGeomGetBody(), dGeomGetPosition() > > or dGeomGetRotation() on a non-placeable geom? > > hmmm ... non-placeable geoms may not have any relevant pos or R data at > all. even if something is returned, e.g. zeros, i think the user > should be notified that it's not good for anything. or perhaps the user > should be told to check for a 0 return code? perhaps this is a way to > detect non-placeable geoms? but in that case a dGeomIsPlaceable() > function would be cleaner. Agreed. But i dont think i saw it in the docs. ;-) > > You default the Category and Collide bits to 1 so that users that dont care > > about it dont have to touch it. Wouldnt it be more logical to default to > > 0xffffffff then? > > i thought about this and could not decide the right answer. how about > category=1 and collide=(~0)? There is no correct solution.to this. People should just use it! So either 1 or ~0 for the category bits will do. I vote for ~0. > > Excellent. How do you determine if a geom has (not) moved? > > a space will have a list of clean and dirty geoms. the clean geoms have > precomputed AABBs (and perhaps precomputed other things). a geom gets > transferred to the dirty list when: > * dGeomSetSomething() is called. > * it's attached to a non-disabled body. > a space can only be in a clean list if it has no dirty items itself - so > operations on clean geoms can propagate dirty-ness up to the root space. How do you handle the case where a user creates a geom, attaches a body, disables it, and then calls dBodySetPosition() on it each step? I actually do this (the object gets enabled when it is touched), and it took me hours to find why the hell my object wasnt collision-detected (and thus enabled). Needless to say i was extremely unsatisfied when i found the bug. > > Is it possible to manually lock and unlock the spaces? > > no ... can you give me a use case for when this is required? > > > Not entirely, but i was thinking of removing this flag as well, because it > > can be faked by setting the Category and Collide bits to 0. > > why 'not entirely?'. Because the geom's aabb would be computed while it is inside the space, and in the quadtree space it would be inside a node. Thus, enabling is faster than adding. The main reason i added this is to give the user the ability collide a geom with a space on-demand, without performance loss. Imagine fireing a bullet with instant impact (ray). All the objects the bullet could possibly hit are in a seperate space. I would call dSpaceLock() on the root space, which locks all subspaces as well. (I suppose internally this already happens?) I would then call dSpaceCollide() on my root space. Then i call dSpaceCollide2() with my bullet and the seperate space. The bullet now has the same advantages as all other objects had while in dSpaceCollide(). > > I think it is good enough to keep me from continuing my own dc library. > > i am largely cutting and pasting from your dc library into ODE - changing > the way some things work - but the new collision system is largely > the result of your effort. > > > I also considered adding this, but i found it too problematic. > > as did i - > * memory management: when a space is deleted, which geoms are deleted? > should we use ref counting or garbage collection. either way > introduces other problems. > * a geom has to notify multiple parents when certain things happen, > e.g. when it moves. annoying for the clean-data-structure point of > view. Not to mention the prev and next pointer you have to keep for each space the geom is in, or the ability to create infinite loops by adding a space in another space which contains the first space itself. Have fun debugging that. :-) Erwin From coding at natew.com Thu Oct 24 16:03:01 2002 From: coding at natew.com (Nate W) Date: Thu Oct 24 16:03:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: On Fri, 25 Oct 2002, David McClurg wrote: > one other common concept in collision detection is a ghost or phantom > geom used as a sensor. you don't bounce off it -- you just detect a > penetration. ie: what you want is just detection of the collision and > not the contact information. it would be nice if there was a built-in > type called 'sensor' or something that didn't do the extra work of > computing the contact point/normal. Could you do that by filtering out collisions involving the 'sensor' geoms in the collision callback? Like: int count = dCollide (o1, o2, contacts, &contact[0].geom ... MyClass *p1 = dGeomGetData (o1); MyClass *p2 = dGeomGetData (o2); if (p1->isSensor) p1->CollisionDetected (count, contact) if (p2->isSensor) p2->CollisionDetected (count, contact) if (!p1->isSensor && !p2->isSensor) { // create contact joints } -- Nate Waddoups Redmond WA USA http://www.natew.com From erwin at vo.com Thu Oct 24 16:09:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:09:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <005201c27bb2$4fbc97b0$73fefea9@athlon> > one other common concept in collision detection is a ghost or phantom geom used as a sensor. you don't bounce off it -- you just detect a penetration. ie: what you want is just detection of the collision and not the contact information. it would be nice if there was a built-in type called 'sensor' or something that didn't do the extra work of computing the contact point/normal. I proposed this once. Calling dCollide() with 0 as flags, and simply have it return 0 or 1. It would be entirely possible, but it could break old code. But i doubt anyone does it this way. Erwin From erwin at vo.com Thu Oct 24 16:20:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:20:02 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <008401c27bb3$c83da200$73fefea9@athlon> > struct dContactGeom { > dVector3 pos; // contact position > dVector3 normal; // normal vector > dReal depth; // penetration depth > dGeomID g1,g2; // the colliding geoms > }; > > A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? > Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). You're actually using the mesh-plane intersection?? Daring. My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. > int dCombineContacts(int n, dContactGeom* Contacts, int Stride); > // Attempts to merge all contacts into a single contact > // returns 1 if successful and 'n' otherwise This would be very nice. But you should probably add a dReal MaxError as parameter, because without it it would be very hard. Erwin From erwin at vo.com Thu Oct 24 16:22:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Thu Oct 24 16:22:01 2002 Subject: [ODE] enhanced ODE collision API References: Message-ID: <008801c27bb4$1955fa70$73fefea9@athlon> Thats not what he ment. I also typed a similar message, and then realized i didnt get the point. :-) The point David is making is that his dectection geoms dont need contacts. Just a true/false to determine if they hit. Erwin ----- Original Message ----- From: "Nate W" To: Sent: Thursday, October 24, 2002 17:11 Subject: RE: [ODE] enhanced ODE collision API > On Fri, 25 Oct 2002, David McClurg wrote: > > > one other common concept in collision detection is a ghost or phantom > > geom used as a sensor. you don't bounce off it -- you just detect a > > penetration. ie: what you want is just detection of the collision and > > not the contact information. it would be nice if there was a built-in > > type called 'sensor' or something that didn't do the extra work of > > computing the contact point/normal. > > Could you do that by filtering out collisions involving the 'sensor' geoms > in the collision callback? Like: > > int count = dCollide (o1, o2, contacts, &contact[0].geom ... > > MyClass *p1 = dGeomGetData (o1); > MyClass *p2 = dGeomGetData (o2); > > if (p1->isSensor) > p1->CollisionDetected (count, contact) > if (p2->isSensor) > p2->CollisionDetected (count, contact) > > if (!p1->isSensor && !p2->isSensor) > { > // create contact joints > } > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > > From russ at q12.org Thu Oct 24 17:05:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 17:05:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: > does that mean a geom cannot be placed into two different groups? not > a big deal, but i'm curious. they can't, yes. any reason you would want to? > one other common concept in collision detection is a ghost or phantom > geom used as a sensor. you don't bounce off it -- you just detect a > penetration. ie: what you want is just detection of the collision and > not the contact information. it would be nice if there was a built-in > type called 'sensor' or something that didn't do the extra work of > computing the contact point/normal. hmmmm ... perhaps a flag defined for dCollide() that instructs it to just return 1 or 0 depending on if there is intersection or not. at last a use for the flags parameter! this would mean touching ALL the pairwise collision functions - this is lower down the TODO list for now because you can just use dCollide() as-is, although it might be slower than you like. russ. -- Russ Smith http://www.q12.org/ From russ at q12.org Thu Oct 24 17:12:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 24 17:12:02 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: <004201c27bb1$4833fe30$73fefea9@athlon> Message-ID: > How do you handle the case where a user creates a geom, attaches a body, > disables it, and then calls dBodySetPosition() on it each step? I actually > do this (the object gets enabled when it is touched), and it took me hours > to find why the hell my object wasnt collision-detected (and thus enabled). > Needless to say i was extremely unsatisfied when i found the bug. tricky! the body will have to know what geom it is attached to and call dGeomThisGuyMoved() when dBodySetPosition() etc called on it - which will make sure the geom is in the dirty list. > Because the geom's aabb would be computed while it is inside the space, and > in the quadtree space it would be inside a node. Thus, enabling is faster > than adding. ok, good reason. i'll add dGeomEnable/Disable/IsEnabled. russ. -- Russ Smith http://www.q12.org/ From dmcclurg at pandemicstudios.com.au Fri Oct 25 01:19:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Fri Oct 25 01:19:02 2002 Subject: [ODE] enhanced ODE collision API Message-ID: >> A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. > You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? if there is a callback for each contact generated, the callback could query the index. otherwise, you could put it into the dContactGeom struct, but since they could both be a mesh, you would need two-- i1,i2. maybe this is a good time to bring up the idea of a generalized event handler instead of callbacks. you get an event when the contact is generated instead of passing an array. you store it off then and query the index if needed. >> Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). > You're actually using the mesh-plane intersection?? Daring. no, i'm sorry. i meant my player collides with many static meshes and planes in the world. i combine the contacts between the player sphere and all the triangle & plane contacts to get smooth physics. > My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. that's what i've noticed. why doesn't ODE like close contacts? hmmm. got to investigate that soon. From tetron at interreality.org Fri Oct 25 01:34:09 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 01:34:09 2002 Subject: [ODE] box-box collisions Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Okay, so I've spent a little time looking at the box-box collision code. Detecting face-face contacts seems fairly easy; we just need to compare the normal vector between the boxes centers in the collision with the normal vector of the normal vectors of the sides of the penatrating box. In other words, determine if they share a coplanar face. Then we need to generate contact points (I haven't quite figured this part out yet). I have a few questions. The first is that in doing this comparison, there is enough error floating around that it is very unlikely that the normals of box faces that should be treated as coplanar will be *exactly* the same. In general, what is the policy in ODE for handling these sorts of slightly inexact comparisons? The second question is face-edge collisions. What's a good way of determining if a line (the edge) lies in the plane of the face? Again, this has to be a slightly inexact comparison rather than an exact calculation because of error. I've determined that face-edge collisions are absolutely crucial for good box stacking, since otherwise it becomes almost impossible for one box to come to rest upon another if the first one hits the supporting box at an angle. Face-edge contacts need two contact joints, otherwise boxes will just tumble uncontrolably. I'm going to take a look at the box-plane collision code tomorrow, since it must already handle these issues correctly, perhaps differently (having an object that is infinite and static does make certain calculations easier!) [ Peter Amstutz ][ amstutz at cs.umass.edu ][ tetron at interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uQHBaeHUyhjCHfcRArq1AKCwBhNnJJ31E9GYdocpzCJgp3vkOQCfRmlS MLWLUFenllq0HRzWXDWrbjs= =l4iZ -----END PGP SIGNATURE----- From dale_thomas at hotmail.com Fri Oct 25 01:49:02 2002 From: dale_thomas at hotmail.com (Dale Thomas) Date: Fri Oct 25 01:49:02 2002 Subject: [ODE] Tetrahedron class Message-ID: Hi there I am looking for a tetrahedron primitive class. Does anyone have such a class or can give me advice on creating one Thanks _________________________________________________________________ Protect your PC - get McAfee.com VirusScan Online http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963 From f99jooh at dd.chalmers.se Fri Oct 25 01:56:02 2002 From: f99jooh at dd.chalmers.se (Johannes =?iso-8859-1?q?=D6hlin?=) Date: Fri Oct 25 01:56:02 2002 Subject: [ODE] Invisible spheres Message-ID: <200210250855.KAA12394@eru.dd.chalmers.se> Hi I've been using ODE with drawstuff for a couple of weeks now and I'm experiencing a problem I can't solve. In my program I run several simulations with drawstuff (dsSimulationLoop), in each simulation I use a more or less random collection of boxes and spheres and joints. Here's the problem: Spheres are only visible in the first simulation. After that first run only boxes and shadows are visible. Does anybody have any idea what could be wrong? /Johannes -- Johannes ?Hlin Undergraduate student Engineering Physics Chalmers University of Technology From Marta.Pla at uv.es Fri Oct 25 02:02:01 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Fri Oct 25 02:02:01 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <1035536660.27694.8.camel@welfa> El vie, 25-10-2002 a las 10:33, Peter Amstutz escribi?: First of all, hello to everyone, this is my first message to the list > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Okay, so I've spent a little time looking at the box-box collision code. > Detecting face-face contacts seems fairly easy; we just need to compare > the normal vector between the boxes centers in the collision with the > normal vector of the normal vectors of the sides of the penatrating box. > In other words, determine if they share a coplanar face. Then we need to > generate contact points (I haven't quite figured this part out yet). > > I have a few questions. The first is that in doing this comparison, there > is enough error floating around that it is very unlikely that the normals > of box faces that should be treated as coplanar will be *exactly* the > same. In general, what is the policy in ODE for handling these sorts of > slightly inexact comparisons? > The fact is that I don't know really how it does, but I have the same problem in my application. I resolve the face-face collision by examining the relative rotation matrix between the two boxes. If the angles of this matrix are "little" enough I consider the boxes are parallel and solve the problem adding two more contact points in the colliding face with the same problem. > The second question is face-edge collisions. What's a good way of > determining if a line (the edge) lies in the plane of the face? Again, > this has to be a slightly inexact comparison rather than an exact > calculation because of error. I've determined that face-edge collisions > are absolutely crucial for good box stacking, since otherwise it becomes > almost impossible for one box to come to rest upon another if the first > one hits the supporting box at an angle. Face-edge contacts need two > contact joints, otherwise boxes will just tumble uncontrolably. > Totaly certain. But this is more difficult. Before beginning working with ODE I was using another collision detection library based also in OBBTrees but I was not able to determine well enough the face-edge collision. If anyone has an idea, it will be great. I wish you understand why a spanish write so bad english :) -- **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint = 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla at uv.es) http://www.uv.es/~mplac **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: Esta parte del mensaje esta firmada digitalmente Url : http://q12.org/pipermail/ode/attachments/20021025/850b3a93/attachment.bin From p.terdiman at wanadoo.fr Fri Oct 25 03:13:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 25 03:13:02 2002 Subject: [ODE] box-box collisions References: Message-ID: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Quick question : Is there a reason why the number of contacts for the box-box collision is limited to 3 ? What do I need to do in order to change that number ? From Marta.Pla at uv.es Fri Oct 25 04:03:02 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Fri Oct 25 04:03:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> References: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: <1035543982.27694.22.camel@welfa> El vie, 25-10-2002 a las 12:10, Pierre Terdiman escribi?: > Quick question : > > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? You only need 3 points to put a box over another box. The necesary forces to implement, for example, a box leaved in a floor, are three. Of course you can implement 4 or more contact points, but they are redundant. > What do I need to do in order to change that number ? > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode -- **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint = 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla at uv.es) http://www.uv.es/~mplac **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: Esta parte del mensaje esta firmada digitalmente Url : http://q12.org/pipermail/ode/attachments/20021025/15a5ba6b/attachment.bin From ps_yumemi at yahoo.com Fri Oct 25 05:55:02 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Fri Oct 25 05:55:02 2002 Subject: [ODE] synchronizing network programs Message-ID: <20021025125408.1747.qmail@web40506.mail.yahoo.com> hello i'm still finishing my networking program using ODE. it's a mobile robot simulator and i still have problems synchronizing my mobots. i'm using a peer to peer session so all the computers send messages to other computers. the messages contain the current speed, position, rotation and other things i need. all i nedd is to compensate for the lag of the network by checking the constant position of the mobot and where it is suppose to be according to the data sent. what would be the best way to do this? 2nd i can't seem to make dBodySetRotation to work. is the matrix required for it in degrees? or in radians? last, if i have two or more mobots in the system, what's the best way to check if they collide? coz the original program only considered one mobot in the system. please consider that a mobot has not just wheels and a body but sensors as well. any suggestion is welcome. thanks __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From slipch at gsc-game.kiev.ua Fri Oct 25 09:20:02 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Fri Oct 25 09:20:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <10033043223.20021025192245@gsc-game.kiev.ua> Hello Peter, Friday, October 25, 2002, 11:33:00 AM, you wrote: PA> -----BEGIN PGP SIGNED MESSAGE----- PA> Hash: SHA1 PA> Okay, so I've spent a little time looking at the box-box collision code. PA> Detecting face-face contacts seems fairly easy; we just need to compare PA> the normal vector between the boxes centers in the collision with the PA> normal vector of the normal vectors of the sides of the penatrating box. PA> In other words, determine if they share a coplanar face. Then we need to PA> generate contact points (I haven't quite figured this part out yet). PA> I have a few questions. The first is that in doing this comparison, there PA> is enough error floating around that it is very unlikely that the normals PA> of box faces that should be treated as coplanar will be *exactly* the PA> same. In general, what is the policy in ODE for handling these sorts of PA> slightly inexact comparisons? PA> The second question is face-edge collisions. What's a good way of PA> determining if a line (the edge) lies in the plane of the face? Again, PA> this has to be a slightly inexact comparison rather than an exact PA> calculation because of error. I've determined that face-edge collisions PA> are absolutely crucial for good box stacking, since otherwise it becomes PA> almost impossible for one box to come to rest upon another if the first PA> one hits the supporting box at an angle. Face-edge contacts need two PA> contact joints, otherwise boxes will just tumble uncontrolably. PA> I'm going to take a look at the box-plane collision code tomorrow, since PA> it must already handle these issues correctly, perhaps differently (having PA> an object that is infinite and static does make certain calculations PA> easier!) Box - box collision use axis separating. It never checks complanarity of box faces and I do not think It will ever do it and do not think it really need it. But you can make your own alternative box-box collider than you can see easy it or not :). May be it needs to spend more time looking at the original box-box collider :). -- Best regards, Konstantin Slipchenko. mailto:slipch at gsc-game.kiev.ua From russ at q12.org Fri Oct 25 10:36:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 10:36:01 2002 Subject: [ODE] enhanced ODE collision API In-Reply-To: Message-ID: > why doesn't ODE like close contacts? ODE needs to find a unique solution for all constraints in the system. if there are two (or more) constraint dimensions that do not have a unique solution, numerical errors will result. now, imagine two contacts in exactly the same position. if we look at the solution for this system and subtract some of the force from contact 1 and add the same amount to contact 2, the resulting motion of the system will be the same (because the contacts are adding at the same point). thus the solution is not unique. moral: the closer that contacts come to having the same effect on the system, the more solution error there will be. note that the global CFM parameter can be increased to reduce the amount of numerical error in the system, even when you have coincident contacts. russ. -- Russ Smith http://www.q12.org/ On Fri, 25 Oct 2002, David McClurg wrote: > >> A 'dTriMeshClass' geom is really an aggregate type so I need to know the index of the triangle to lookup material properties. The material properties tell me how to create the contact, light the player, etc. > > You need the index of the triangle in the near callback when creating the joint? Hm.. Do you have a suggestion? > > if there is a callback for each contact generated, the callback could query the index. otherwise, you could put it into the dContactGeom struct, but since they could both be a mesh, you would need two-- i1,i2. > > maybe this is a good time to bring up the idea of a generalized event handler instead of callbacks. you get an event when the contact is generated instead of passing an array. you store it off then and query the index if needed. > > >> Also, it would be handy to expose erwin's combine contacts functionality. It seems to be essential even between meshes/planes in my game (i'll post some test programs soon to show this). > > You're actually using the mesh-plane intersection?? Daring. > > no, i'm sorry. i meant my player collides with many static meshes and planes in the world. i combine the contacts between the player sphere and all the triangle & plane contacts to get smooth physics. > > > My contact-combine code only works for spheres-triangle contacts. Its actually there because ODE doesnt like many close contacts. > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > From russ at q12.org Fri Oct 25 10:49:02 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 10:49:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? to be clear: it's my intention to generate at most 3 contact points for box-box collison (at the moment only 1 will be generated). to represent the *complete* geometry of one box being stacked on top of another up to 8 contacts may be necessary. but in ODE contacts are expensive, so we want to use the least number of contacts that will result in a reasonable approximation. three is a reasonable number, as long as we use the three contacts that are most penetrating. for a 3-contact box stacking situation it is *possible* that the boxes can interpenetrate when pushed along some directions, but such errors will be corrected in the next timestep so they will generally not be visible. > What do I need to do in order to change that number ? write more code :) russ. -- Russ Smith http://www.q12.org/ From tetron at interreality.org Fri Oct 25 11:29:01 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 11:29:01 2002 Subject: [ODE] box-box collisions In-Reply-To: <006f01c27c0e$c85b2cc0$0e00000a@pierre> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 You can think of it this way -- each contact point removes (or at least restricts) a degree of freedom from the system. Since the box can rotate on three axes, you need at least three contact constraints in order to have a stable face-face collision. However as Marta said, more than three would be redundant in most situtations. On Fri, 25 Oct 2002, Pierre Terdiman wrote: > Quick question : > > Is there a reason why the number of contacts for the box-box collision is > limited to 3 ? > What do I need to do in order to change that number ? > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > [ Peter Amstutz ][ amstutz at cs.umass.edu ][ tetron at interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uY1KaeHUyhjCHfcRAs0SAJ9Umt8RnmJ41zY22GWmjtfEp4cTxwCfTQo3 Xpnd1HgglR+jEL8q/rM5l0A= =XDEF -----END PGP SIGNATURE----- From tetron at interreality.org Fri Oct 25 11:43:02 2002 From: tetron at interreality.org (Peter Amstutz) Date: Fri Oct 25 11:43:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <10033043223.20021025192245@gsc-game.kiev.ua> Message-ID: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Fri, 25 Oct 2002, slipch wrote: > Box - box collision use axis separating. It never checks complanarity of > box faces and I do not think It will ever do it and do not think it > really need it. But you can make your own alternative box-box collider > than you can see easy it or not :). May be it needs to spend more time > looking at the original box-box collider :). It seems there are a couple possible ways to test for face-face box contacts. Rather than being coplanar actually I meant that the planes of each box are parallel, so if we know that the boxes penetrate and are coplanar then there must be a face-face contact. The other way suggested by Marta is to compare rotations, and if the boxes are at equal/right/180 degree angles to one another then they must be in face-face contact as well. I think the second way may be a bit faster. For box-edge collisions we definately need to test to see if an edge is coplanar with the face it collides with. Actually, that may not be so bad. Once we know that, generating a couple contact points should be easy. Russ, would you care to explain the current box-box collision algorithm (and maybe box-plane as well)? I've been looking it over but the code is rather... dense :-) Oh, and for comparison, last night I took a midterm exam in Advanced Algorithms (a required course in the masters/PhD program here) and it was waaay easier than trying to figure out the box collision code :-) [ Peter Amstutz ][ amstutz at cs.umass.edu ][ tetron at interreality.org ] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9uZCcaeHUyhjCHfcRAmR+AJ9JvdpYz0722LwBZgOJlLkOJgc20gCdFnhg USeMPPQ/VUpi8lXlqK8DgwA= =RmQm -----END PGP SIGNATURE----- From russ at q12.org Fri Oct 25 12:22:01 2002 From: russ at q12.org (Russ Smith) Date: Fri Oct 25 12:22:01 2002 Subject: [ODE] box-box collisions In-Reply-To: Message-ID: > Russ, would you care to explain the current box-box collision algorithm > (and maybe box-plane as well)? I've been looking it over but the code is > rather... dense :-) to summarize: the standard 15-axis test is performed to check for box-box intersection (6 face-normal tests and 9 edge x edge tests). for each axis, the box-box penetration is recorded (penetration defined as the overlap of the projection of the boxes to the test axis). the most penetrating axis is used as the normal. if the most penetrating axis is an edge x edge then the closest point between the closest box edges is used as the contact point. otherwise the most penetrating axis is normal to the face of one box so the deepest vertex (along this axis) of the other box is used. it is this last case that should be modified to generate up to 3 contacts, not just the one. one approach is to examine the three edges adjacent to the most penetrating vertex and clip them to the box, thereby generating three other points, and use the two that are deepest. i've not tried this, so i don't know if it will work well, but this would be my first approach. some other people's box-box code takes the following approach (or some variant of it): compute the box-box intersection volume, take the vertices of this volume as an initial contact point set, then do some kind of culling to reduce the contact points to a manageable number. this approach has three big drawbacks: (1) it's slow, (2) the culling process is not well defined so this can lead to over-sensitive contacts, (3) for edge-edge contacts, where there should only be one contact point, these schemes nevertheless generate many points - and it takes a very smart culling algorithm to reduce this to just one. this illustrates a point i've made before: that collision detection for dynamics is a more difficult problem that collsion detection alone: the contact points that are generated must meet extra conditions so that the resulting contact-driven motion will be stable. in particular: * contact points should be inside the collison volume. * contact points should not jump around unnecessarily if the object positions change slightly (these are called over-sensitive contacts). * the contact constraints should be far from singular. the worst thing that collision code can do is generate coincident contacts. * the contact set must depend only on the local surface properties, not on the global object properties. * the contact normal should be the most direct translational path to reducing penetration at a contact point. this condition is less necessary for stability than the others, but is still important. russ. -- Russ Smith http://www.q12.org/ From coding at natew.com Fri Oct 25 12:55:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 25 12:55:02 2002 Subject: [ODE] dynamics in general In-Reply-To: Message-ID: Does anyone know of any mailing lists for dynamics in general, not just for particular libraries and applications? I just realized that there might be people out there who are not using ODE, and yet are doing interesting things with dynamics anyway. :-) -- Nate Waddoups Redmond WA USA http://www.natew.com From tisch at uni-paderborn.de Fri Oct 25 13:34:01 2002 From: tisch at uni-paderborn.de (Tim Schmidt) Date: Fri Oct 25 13:34:01 2002 Subject: [ODE] ODE for Java v0.1 released Message-ID: <3DB9AA9B.9040701@uni-paderborn.de> Hi! I am pleased to announce that the first release of 'ODE for Java' is available via: http://www.tim-schmidt.de/odeforjava/ Additionally to just making ODE available in Java, it provides a set of Java3D objects that can hopefully be used without detailed knowledge of ODE internals. This release is version v0.1 and it should work with: - JDK 1.3 - Java3d 1.2.1-03 Please note: - The JNI covers the ODE functionality that was available around june 2002. - The ode.core.extensions and ode.java3d.geometry.sensors packages use objects that can be found in ode/core/extensions/ode-src. To integrate them into ODE itself follow the instructions that are given in contrib/GeomTransformGroup/README.txt in the ODE CVS tree. - At the current stage I can not guarantee that the API will not change to a certain extent. - There may still be several bugs in the code, especially as respects garbage collection (so watch out for memory leaks) The lib/ directory contains precompiled linux libraries of ODE and 'ODE for Java' that have to be reacheable through the LD_LIBRARY_PATH environment variable. The provided archive development.tar.bz2 is ready to use for your own development. It contains the source code of this project and a set of makefiles that represent a modification and extension of 'The Universal Makefile' which can be found at http://geosoft.no/javamake.html. The latter is rather designed for unix/linux environments but with loss of functionality it may be adapted to work with windows, too. Just make sure that: - the environment variable JAVA_DEV_ROOT points to the development directory that is created after the unpacking of development.tar.bz2 - the environment variable JAVA_HOME points to your Java SDK directory Have a look at the examples in the ode.java3d.test package. They should give a good impression how everything is set up, at least for those who are already familiar with Java3D scene graph assembly. Feel free to send bug reports and comments to odeforjava at tim-schmidt.de. And finally I don't want to forget to thank Russ for his really great work!!! :-))) kind regards, Tim Schmidt From p.terdiman at wanadoo.fr Fri Oct 25 13:58:02 2002 From: p.terdiman at wanadoo.fr (Pierre Terdiman) Date: Fri Oct 25 13:58:02 2002 Subject: [ODE] box-box collisions References: Message-ID: <041101c27c68$ede5d260$0e00000a@pierre> > three is a reasonable number, as long as we use the three > contacts that are most penetrating. Ok, that's the extra condition I was missing. > > What do I need to do in order to change that number ? > > write more code :) Actually the answer I was looking for was : "change the hardcoded value in static void nearCallback (void *data, dGeomID o1, dGeomID o2)" That's in the box-stack test, no wonder I didn't find it in ODE itself..... Pierre From wristy_j at yahoo.com Fri Oct 25 14:32:02 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Fri Oct 25 14:32:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021025213134.48020.qmail@web40812.mail.yahoo.com> Hello, I need to implement a physics simulation that can handle rag-doll type constraints (hinge, ball, but probably none powered) with joint limits, and contact with friction. I need a fast method. Is the LCP / Lagrange multiplier method used in ODE fast enough for interactive frame rates (> 30 fps) for a minimal number of constraints/contacts? I'm thinking at most, a few multi-bodies with around 9 joints each (10 bodies), plus random simple rigid bodies which may come in contact with the multi-bodies. Also - is there any drawback to using the LCP method on consoles? Does anyone know if Havok uses a similar method? I imagine they're not just using penalty methods. What other good, fast methods are out there? Thanks! J __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From coding at natew.com Fri Oct 25 17:10:02 2002 From: coding at natew.com (Nate W) Date: Fri Oct 25 17:10:02 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021025213134.48020.qmail@web40812.mail.yahoo.com> Message-ID: On Fri, 25 Oct 2002, Jason Gott wrote: > I need to implement a physics simulation that can > handle rag-doll type constraints (hinge, ball, but > probably none powered) with joint limits, and contact > with friction. I need a fast method. Is the LCP / > Lagrange multiplier method used in ODE fast enough for > interactive frame rates (> 30 fps) for a minimal > number of constraints/contacts? I just did some experiments with a rag doll consisting of 10 bodies, and 9 joints - all bodies are boxes, and I use ball joints for the shoulders, hips, and neck, and hinges for the knees and elbows. I have a 1.7ghz K7 and a GeForce 3. It's like Porrasturvat, but without the stairs, just a simple ground plane. With one doll, I get ~38 frames per second. With two dolls, 25-28 fps. With three, 19-20 fps. With four dolls (team dismount!), about 15 fps. Changing the bodies to flat-ended cylinders brought the four-doll simulation down to 11 fps. Changing them to capped cylinders, 6-9 fps. Bear in mind that there's some overhead in my tests due to the fact that they're conducted in a general purpose ODE playground rather than in an optimized game. I have no idea how much overhead there is, though. I don't think it's very significant, but if anyone can do a similar test I'd be really interested in the results. -- Nate Waddoups Redmond WA USA http://www.natew.com From johnb003 at hotmail.com Fri Oct 25 21:50:02 2002 From: johnb003 at hotmail.com (John Butterfield) Date: Fri Oct 25 21:50:02 2002 Subject: [ODE] Higher Order Integrators Message-ID: Hey Russ, have you done any work on implementing a higher order integrator? I was about to give it a shot and I thought I'd see if you had started anything before I begin. Thanks, John Butterfield _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From erwin at vo.com Sat Oct 26 05:28:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Sat Oct 26 05:28:02 2002 Subject: [ODE] Speed of ODE's constraint method References: Message-ID: <001b01c27cea$e4e57670$73fefea9@athlon> These framerates look rediculously low. Are you measuring the physics stepping rate? Erwin ----- Original Message ----- From: "Nate W" To: Sent: Friday, October 25, 2002 18:18 Subject: Re: [ODE] Speed of ODE's constraint method > On Fri, 25 Oct 2002, Jason Gott wrote: > > > I need to implement a physics simulation that can > > handle rag-doll type constraints (hinge, ball, but > > probably none powered) with joint limits, and contact > > with friction. I need a fast method. Is the LCP / > > Lagrange multiplier method used in ODE fast enough for > > interactive frame rates (> 30 fps) for a minimal > > number of constraints/contacts? > > I just did some experiments with a rag doll consisting of 10 bodies, and 9 > joints - all bodies are boxes, and I use ball joints for the shoulders, > hips, and neck, and hinges for the knees and elbows. I have a 1.7ghz K7 > and a GeForce 3. > > It's like Porrasturvat, but without the stairs, just a simple ground > plane. With one doll, I get ~38 frames per second. With two dolls, 25-28 > fps. With three, 19-20 fps. With four dolls (team dismount!), about 15 > fps. > > Changing the bodies to flat-ended cylinders brought the four-doll > simulation down to 11 fps. Changing them to capped cylinders, 6-9 fps. > > Bear in mind that there's some overhead in my tests due to the fact that > they're conducted in a general purpose ODE playground rather than in an > optimized game. I have no idea how much overhead there is, though. I > don't think it's very significant, but if anyone can do a similar test I'd > be really interested in the results. > > -- > > Nate Waddoups > Redmond WA USA > http://www.natew.com > > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > > From rtonge90 at yahoo.co.uk Sat Oct 26 07:13:02 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sat Oct 26 07:13:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021026141225.80198.qmail@web14907.mail.yahoo.com> Hello >Is the LCP / Lagrange multiplier method used in ODE >fast enough for interactive frame rates (> 30 fps) >for a minimal number of constraints/contacts? The short answer is yes. The long answer is maybe :o) The short answer is yes because there are a number of games on the shelves (and the top 10) that use an LCP method. Although the actual LCP method used in those games is different, it has similar characteristics to the one used in ODE. Brace yourselves for the long answer lads... Direct LCP methods (as used in ODE) have properties that are acceptable for some games/platforms and not others. In particular, memory usage, cpu usage and memory bandwidth usage can scale quite badly as the size of the system increases. Memory Direct methods require the storage of one or more large matrices. The size of the matrix can fluctuate quite a bit depending on what is happening in the game. For example, take a game where animated characters turn into physical ragdolls when they die. Suppose each one has 9 joints which each constrain 6 relative degrees of freedom. If a ragdoll is flying through the air then the number of matrix rows is 9*6=54. In this system, there is one matrix of size 54*54, which takes about 12k. Not too bad. Suppose the ragdoll hits the floor. This might add 2 friction contacts,each constraining 3 dof for each of the 10 bodies, giving 9*6+3*10*2=114 rows in total. This brings the matrix size to 114*114 which takes 52k. Suppose you have 10 ragdolls flying through the air. You get 10 matrices of size 54, which takes 12k*10=120k. Suppose that they fall in a pile on the floor. As they are all touching they have to all go in the smae matrix. There might be 3*10*2=60 rows due to the contacts between 9 ragdoll-ragdoll pairs, and 3*10*2=60 rows between the bottom ragdoll and the ground. Each ragdoll still has 54 rows holding it together. This gives a grand total of 9*60+60+54*10=1140 rows. A 1140*1140 matrix takes about 5 megs! Unlike graphics, the cost of (direct LCP) physics is not per object, it is per interaction, and it can get quite big. Of course, in real games which use these methods, there are hacks to make sure that people dont die in the same spot, or that only a small number of cars can be involved in a crash. James Golding did a GDC 2002 talk about how this is done in MathEngine Karma. However, big piles of dying people, big walls of falling blocks or big car crashes might be a vital part of the game, and in these cases other methods are better. There is a similar story with cpu time. Ill have to talk generally here because the direct LCP method I have experience with is different to the one used in ODE. Typically what happens is that a number of 'iterations' (in the for-loop sense, not the iterative algorithm sense) are performed. Each one takes some subset of the data in the matrix and performs some O(n^3) or O(n^2) matrix operations on it. The number of 'iterations' is variable and depends on things like the number of separating contacts. In theory, the maximum number of iterations is O(2^n) or O(3^n), which is an argument often wheeled out by anti-LCP people. There are problems but this is the least of your worries. The reason is that you can stop the an LCP after a constant number of iterations, and the physical artefacts are not too bad. The real problem is that the size of the matrix, n fluctuates quite a bit (as discussed above). This wouldnt be too bad if you were doing a linear amount of work on the matrix. However, you are doing O(n^3) work, so any fluctuations in n give large fluctuations in the cpu time. I should say though that LCP methods are very stable, and once Russ sorts out box-box, ODE is going to be rock solid. The reason that there are direct LCP games in the top 20 at the moment despite the above hurdles is because the stability is so good. >Also - is there any drawback to using the LCP method >on consoles? On PC, the above concerns arent too much of a problem. PC games machines have lots more ram than consoles, and if the game is good enough they will buy more. CPUs are a lot faster and have more cache. This makes the constant factors in execution time very small. Simple gameplay and AI hacks can prevent physical systems getting too big. For this reason, I believe that direct LCP based physics engines such as ODE are a very good choice for the PC. Our tests have also shown that they are a very good choice on the gamecube and xbox due to the easily accessible memory bandwitdh on those platforms. However, on the PS2 it is not quite as clear. Many people are releasing games based on a direct LCP solver on PS2, but they have had to make some compromises. The PS2 does have masses of memory bandwidth and floating point performance, but unoptimised C code doesnt have access to it. If you are going to port ODE to the PS2 I would suggest double buffering all your data through the scratchpad, microcoding all your inner loops and staying away from vif0. Taking advantage of matrix sparsity is a good idea too. In my experience, iterative (as opposed to direct) LCP methods work much better on PS2. With these methods it is possible to keep all the data of a reasonably sized scene in spr or vumem0 at once. This gives you far more gigaflops, because you are not hanging around waiting for main memory all the time. With these algorithms, you can even out run a PC! MathEngine Karma 1.3 comes with a direct LCP solver Kea, and an iterative LCP solver Arthur, so that you can select the best solution for your platform/game. Sorry about that... Of course, there are non LCP routes you could look at as well. In particular Thomas Jacobsen's constraint relaxation with verlet integration is probably worth a look. Good luck with your simulations! Richard Tonge PS2 Optimisation Engineer MathEngine __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From g.r.vansickle at worldnet.att.net Sat Oct 26 13:55:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Sat Oct 26 13:55:02 2002 Subject: [ODE] box-box collisions In-Reply-To: Message-ID: (oops, accidentally sent this only to Russ) [snip] > this illustrates a point i've made before: that collision detection for > dynamics is a more difficult problem that collsion detection alone: the > contact points that are generated must meet extra conditions so that the > resulting contact-driven motion will be stable. in particular: > > * contact points should be inside the collison volume. > This sounds like it doesn't bode well for any sort of "collision anti-aliasing" schemes, i.e. preventing a fast-moving small object from going right through a wall. Are you saying here that even if a suitable collision point was found, the fact that it was by definition outside the collision volume (because there is none) would prevent it from being properly taken into account? -- Gary R. Van Sickle Brewer. Patriot. From russ at q12.org Sun Oct 27 00:25:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:25:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <20021027002918.5ef81c00.russ@q12.org> > This sounds like it doesn't bode well for any sort of "collision > anti-aliasing" schemes, i.e. preventing a fast-moving small object > from going right through a wall. Are you saying here that even if a > suitable collision point was found, the fact that it was by definition > outside the collision volume (because there is none) would prevent it > from being properly taken into account? i'm not quite sure i understand the question - what i was saying is that more stable dynamics results when the contact point is inside the intersection volume. if your objects don't collide, there is no intersection volume and thus ODE won't generate a contact point. if you generate one anyway for fast moving objects (e.g. projecting the object along its path) the contact constraint will still act in the same way, but finding a contact position that will give you consistent stability is going to be a problem. russ. -- Russell Smith http://www.q12.org From russ at q12.org Sun Oct 27 00:36:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:36:02 2002 Subject: [ODE] ODE presentation at IGC'02 Message-ID: <20021027003656.5b83b402.russ@q12.org> for those interested in some more blah blah about ODE, the slides of my talk at IGC'02 are up on q12. it way not make much sense because it's all in note form, but i'm sure you will get the idea. anyway, follow the link at: http://q12.org/ode/slides/slides.html russ. -- Russell Smith http://www.q12.org From russ at q12.org Sun Oct 27 00:46:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 00:46:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021026141225.80198.qmail@web14907.mail.yahoo.com> References: <20021026141225.80198.qmail@web14907.mail.yahoo.com> Message-ID: <20021027005050.3de333b3.russ@q12.org> hi richard, > I should say though that LCP methods are very stable, > and once Russ sorts out box-box, ODE is going to be > rock solid. thanks for the vote of confidence! > The reason that there are direct LCP games > in the top 20 at the moment despite the above hurdles > is because the stability is so good. i am curious about one thing: do your customers percieve that the stability itself is the good thing, or that the shortened development time that results is the good thing? (both? neither?) > > > Sorry about that... as a penance for shamelessly marketing your stuff here :), perhaps you could tell us exactly what an 'iterative LCP' solver is? i'm genuinely curious. are you: * running a fixed number of LCP iterations per timestep? * factorizing the non-LCP constraints fully? * re-using constraint clamping info from step to step? - if so, how do you handle contact coherency problems? * in general, how is the LCP restarted? also, there is one thing to add to your explanation of where the time goes: when a large impact occurs in the system (e.g. a car crashes into a pile of boxes) there is usually a single time step at the moment of impact that goes *really* slowly. the problem is that the LCP solver needs a large number of iterations to effectively spread the impact force throughout the rest of the system (this problem can be understood more precisely by considering how the algorithm steps through the elongated LCP solution space). it sounds like this situation would benefit the most from your constant iteration technique? russ. -- Russell Smith http://www.q12.org From g.r.vansickle at worldnet.att.net Sun Oct 27 00:59:02 2002 From: g.r.vansickle at worldnet.att.net (Gary R. Van Sickle) Date: Sun Oct 27 00:59:02 2002 Subject: [ODE] box-box collisions In-Reply-To: <20021027002918.5ef81c00.russ@q12.org> Message-ID: > > This sounds like it doesn't bode well for any sort of "collision > > anti-aliasing" schemes, i.e. preventing a fast-moving small object > > from going right through a wall. Are you saying here that even if a > > suitable collision point was found, the fact that it was by definition > > outside the collision volume (because there is none) would prevent it > > from being properly taken into account? > > i'm not quite sure i understand the question - what i was saying is that > more stable dynamics results when the contact point is inside the > intersection volume. if your objects don't collide, there is no > intersection volume and thus ODE won't generate a contact point. As I understand it, you actually mean "If your objects don't intersect at any timestep..." in that last sentence, right? > if you > generate one anyway for fast moving objects (e.g. projecting the object > along its path) the contact constraint will still act in the same way, > but finding a contact position that will give you consistent stability > is going to be a problem. I guess what I'm wondering is, say you shoot an ODE bullet at an ODE wall. At one timestep, the bullet is on one side of the wall, at the next it's on the other side, in neither step do their respective geometries overlap. Are you saying that it isn't possible to generate a contact point that will ensure stability in such a case? -- Gary R. Van Sickle Brewer. Patriot. From rtonge90 at yahoo.co.uk Sun Oct 27 03:19:02 2002 From: rtonge90 at yahoo.co.uk (=?iso-8859-1?q?Richard=20Tonge?=) Date: Sun Oct 27 03:19:02 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: <20021027101849.10220.qmail@web14904.mail.yahoo.com> Hello >perhaps you could tell us exactly what an 'iterative >LCP' solver is? i'm genuinely curious I meant iterative in the sense that the Newton Raphson method is an iterative method for finding the roots of an equation. An iterative LCP method is one that makes an initial guess of the force vector and then on each iteration moves the force vector strictly closer to the exact solution. You can then stop the iteration whenever you like, if you are willing to accept an approximate solution. If you stop the algorithm after one iteration, you get an effect that looks quite similar to a micro-impulse simulator. If you dont limit the number of iterations, you get the exact LCP solution. For reasonable size systems with lots of stacks and stuff, about 350 iterations looks ok. Each iteration does a tiny amount of work (just a constant number of 4*6 matrix multiplies), so the user has quite fine grained control over the execution time (or simulation quality). A good reference on iterative LCP methods is chapter 9 of Murty's book, which is available online: http://ioe.engin.umich.edu/books/murty/linear_complementarity_webbook/kat9.ps Although this should give you an idea about what I mean by iterative LCP, I should point out that we dont use any of the methods in that chapter. > * re-using constraint clamping info from step to > step? > - if so, how do you handle contact coherency > problems? > * in general, how is the LCP restarted? I think that you are thinking that I was talking about a warm starting technique. Whilst it is a good idea to do this as well, that was not what I meant by an iterative LCP. Richard Tonge PS2 Optimisation Engineer MathEngine www.richardtonge.com __________________________________________________ Do You Yahoo!? Everything you'll ever need on one web page from News and Sport to Email and Music Charts http://uk.my.yahoo.com From paul.chavent at fnac.net Sun Oct 27 11:13:02 2002 From: paul.chavent at fnac.net (Chavent Paul) Date: Sun Oct 27 11:13:02 2002 Subject: [ODE] how to get a geom class type. Message-ID: <3DBC3B39.5090407@fnac.net> Hello i'am french. I'am a new user. This is very exiting to play with this library, so thanks to its author. I have a question for you. Knowing a dGeomID geom how can i get its class (it is a cube, a sphere, a caped cylinder ????). I'have already try to found how the structure of a dGeomID is made, but i'am not sure. thanks ! From coding at natew.com Sun Oct 27 11:25:02 2002 From: coding at natew.com (Nate W) Date: Sun Oct 27 11:25:02 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <001b01c27cea$e4e57670$73fefea9@athlon> Message-ID: On Sat, 26 Oct 2002, Erwin de Vries wrote: > > It's like Porrasturvat, but without the stairs [...] With four dolls > > (team dismount!), about 15 fps. Changing them to capped cylinders, > > 6-9 fps. > > These framerates look rediculously low. Are you measuring the physics > stepping rate? I am now, and you're right, those numwers are really low with four dolls and capped cylinders, the dWorldStep call takes about 7 milliseconds. Drawing the scene takes about 22ms, so I should be getting around 35 fps, not 6-to-9. Thanks for the tip, now I'll see what I can do about it. -- Nate Waddoups Redmond WA USA http://www.natew.com From ahamilton_01 at hotmail.com Sun Oct 27 12:14:01 2002 From: ahamilton_01 at hotmail.com (alex hamilton) Date: Sun Oct 27 12:14:01 2002 Subject: [ODE] Speed of ODE's constraint method Message-ID: This iterative LCP solving sounds like the magic bullet for physics in game. Is it? Al >From: Richard Tonge >To: ode at q12.org >Subject: [ODE] Speed of ODE's constraint method Date: Sun, 27 Oct 2002 >10:18:49 +0000 (GMT) > >Hello > > >perhaps you could tell us exactly what an 'iterative > >LCP' solver is? i'm genuinely curious > >I meant iterative in the sense that the Newton Raphson >method is an iterative method for finding the roots of >an equation. > >An iterative LCP method is one that makes an initial >guess of the force vector and then on each iteration >moves the force vector strictly closer to the exact >solution. You can then stop the iteration whenever you >like, if you are willing to accept an approximate >solution. If you stop the algorithm after one >iteration, you get an effect that looks quite similar >to a micro-impulse simulator. If you dont limit the >number of iterations, you get the exact LCP solution. >For reasonable size systems with lots of stacks and >stuff, about 350 iterations looks ok. Each iteration >does a tiny amount of work (just a constant number of >4*6 matrix multiplies), so the user has quite fine >grained control over the execution time (or simulation >quality). > >A good reference on iterative LCP methods is chapter 9 >of Murty's book, which is available online: >http://ioe.engin.umich.edu/books/murty/linear_complementarity_webbook/kat9.ps >Although this should give you an idea about what I >mean by iterative LCP, I should point out that we dont >use any of the methods in that chapter. > > > * re-using constraint clamping info from step to > > step? > > - if so, how do you handle contact coherency > > problems? > > * in general, how is the LCP restarted? > >I think that you are thinking that I was talking about >a warm starting technique. Whilst it is a good idea to >do this as well, that was not what I meant by an >iterative LCP. > >Richard Tonge >PS2 Optimisation Engineer >MathEngine >www.richardtonge.com > >__________________________________________________ >Do You Yahoo!? >Everything you'll ever need on one web page >from News and Sport to Email and Music Charts >http://uk.my.yahoo.com >_______________________________________________ >ODE mailing list >ODE at q12.org >http://q12.org/mailman/listinfo/ode _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From russ at q12.org Sun Oct 27 12:23:02 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 12:23:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: <20021027002918.5ef81c00.russ@q12.org> Message-ID: <20021027122325.04738156.russ@q12.org> > I guess what I'm wondering is, say you shoot an ODE bullet at an ODE > wall. At one timestep, the bullet is on one side of the wall, at the > next it's on the other side, in neither step do their respective > geometries overlap. Are you saying that it isn't possible to generate > a contact point that will ensure stability in such a case? in this case it's not too hard - consider the wall to be an infinite plane and generate the contact point when the bullet is on the 'wrong' side of the wall. a better example is two long thin objects that go through each other without intersecting (e.g. in a sword fight). generating the contact point to handle this case is harder, but not impossible. russ. -- Russell Smith http://www.q12.org From erwin at vo.com Sun Oct 27 12:31:57 2002 From: erwin at vo.com (Erwin de Vries) Date: Sun Oct 27 12:31:57 2002 Subject: [ODE] Speed of ODE's constraint method References: Message-ID: <006b01c27ded$f751f5a0$73fefea9@athlon> > On Sat, 26 Oct 2002, Erwin de Vries wrote: > > > > It's like Porrasturvat, but without the stairs [...] With four dolls > > > (team dismount!), about 15 fps. Changing them to capped cylinders, > > > 6-9 fps. > > > > These framerates look rediculously low. Are you measuring the physics > > stepping rate? > > I am now, and you're right, those numwers are really low with four dolls > and capped cylinders, the dWorldStep call takes about 7 milliseconds. > > Drawing the scene takes about 22ms, so I should be getting around 35 fps, > not 6-to-9. Thanks for the tip, now I'll see what I can do about it. If the dWorldStep time is 7 milliseconds, isnt ~143fps the number you should be reporting? It might be questionable that you are doing only one worldstep in one rendering step, but if someone wants to know how fast ODE is this is the best way of telling them. :-) And any rendering shouldnt interfere with these numbers of course. Erwin From holmlund at hpc2n.umu.se Sun Oct 27 12:54:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Sun Oct 27 12:54:02 2002 Subject: [ODE] Speed of ODE's constraint method References: <006b01c27ded$f751f5a0$73fefea9@athlon> Message-ID: <3DBC4423.3030005@hpc2n.umu.se> How do you all time your simulation steps? Time system calls are generally quite expensive, and not a great way to test your simulation. If you do it like that you should dry run 1000 physics steps and measure that instead. /Ken -- Kenneth Holmlund Director VRlab HPC2N, Ume? University, Sweden holmlund at hpc2n.umu.se From coding at natew.com Sun Oct 27 13:19:01 2002 From: coding at natew.com (Nate W) Date: Sun Oct 27 13:19:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <006b01c27ded$f751f5a0$73fefea9@athlon> Message-ID: On Sun, 27 Oct 2002, Erwin de Vries wrote: > > I am now, and you're right, those numwers are really low with four dolls > > and capped cylinders, the dWorldStep call takes about 7 milliseconds. > > > > Drawing the scene takes about 22ms, so I should be getting around 35 fps, > > not 6-to-9. Thanks for the tip, now I'll see what I can do about it. > > If the dWorldStep time is 7 milliseconds, isnt ~143fps the number you should > be reporting? Yeah, good point. > It might be questionable that you are doing only one worldstep > in one rendering step (...) Yes, it definitely is. :-) I had incorrectly assumed that it took more time to 'step' the world than to render it. I just revised my code to step twice before rendering, and it only makes a small difference in frame rate. Probably does lots for stability though. Thanks for the tip. -- Nate Waddoups Redmond WA USA http://www.natew.com From si at sjbrown.co.uk Sun Oct 27 13:32:01 2002 From: si at sjbrown.co.uk (Si Brown) Date: Sun Oct 27 13:32:01 2002 Subject: [ODE] how to get a geom class type. References: <3DBC3B39.5090407@fnac.net> Message-ID: <001701c27df7$96841d70$ce0d68d5@gimp> Use the dGeomGetClass function, and compare the result with the statically defined class numbers such as dSphereClass, dBoxClass, etc. Have a look in the documentation(!) and geom.h for more details. Si ----- Original Message ----- From: "Chavent Paul" To: Sent: Sunday, October 27, 2002 7:15 PM Subject: [ODE] how to get a geom class type. > Hello i'am french. > I'am a new user. > This is very exiting to play with this library, so thanks to its author. > > I have a question for you. Knowing a dGeomID geom how can i get its > class (it is a cube, a sphere, a caped cylinder ????). > I'have already try to found how the structure of a dGeomID is made, but > i'am not sure. > > thanks ! > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > From nathan at whatever.net Sun Oct 27 19:27:01 2002 From: nathan at whatever.net (Nate Waddoups) Date: Sun Oct 27 19:27:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <001b01c27cea$e4e57670$73fefea9@athlon> Message-ID: On Sat, 26 Oct 2002, Erwin de Vries wrote: > These framerates look rediculously low. Are you measuring the physics > stepping rate? No, but that's a really good idea. I have no idea how much overhead there is in the rest of the app... I'll try measuring the time spent in dWorldStep. -- Nate Waddoups Redmond WA USA http://www.natew.com From russ at q12.org Sun Oct 27 21:16:01 2002 From: russ at q12.org (Russ Smith) Date: Sun Oct 27 21:16:01 2002 Subject: [ODE] Speed of ODE's constraint method In-Reply-To: <20021027101849.10220.qmail@web14904.mail.yahoo.com> References: <20021027101849.10220.qmail@web14904.mail.yahoo.com> Message-ID: <20021027212041.76d4b926.russ@q12.org> > A good reference on iterative LCP methods is chapter 9 > of Murty's book interesting. i read chapter 9 and implemented some of the methods there in matlab. the sparsity-preserving SOR (successive over-relaxation) method described on p378 seems to be the closest to what you describe, as its main computational step is multiplying M by some vector. in ODE 'M' is J*inv(M)*J', which boils down to a bunch of 6xN matrix operations as you described. for the random PD matrices i was testing with i found that the SOR method scaled as O(n^3), the same as the direct method. i found that if a 0.1% error was the termination condition then SOR was 3-4 times less flop count than ODE's direct solver for 100*100 matrices (the crossover point below which the direct method was faster was about 20*20). however! --> typical rigid body system matrices have a much more useful spectrum than my random matrices, so i suspect that if ODE had an SOR it would (a) be much faster than direct LCP, and (b) scale O(n) or O(n^2) depending on the structure of the RB system. i will investigate this later. SOR would not be too hard to implement in ODE at all (it would be an optional method). chosing the parameter values (e.g. w) presents a problem. > Although this should give you an idea about what I > mean by iterative LCP, I should point out that we dont > use any of the methods in that chapter. are you using a method related to the SOR method? russ. -- Russell Smith http://www.q12.org From amatos at create.human.nagoya-u.ac.jp Mon Oct 28 01:02:02 2002 From: amatos at create.human.nagoya-u.ac.jp (Artur Matos) Date: Mon Oct 28 01:02:02 2002 Subject: [ODE] ODE for Java v0.1 released In-Reply-To: <3DB9AA9B.9040701@uni-paderborn.de> References: <3DB9AA9B.9040701@uni-paderborn.de> Message-ID: <20021029020236.79571ec3.amatos@create.human.nagoya-u.ac.jp> Hi Tim, On Fri, 25 Oct 2002 22:33:31 +0200 Tim Schmidt wrote: > I am pleased to announce that the first release of 'ODE for Java' is > available I just take a look at the source and played a little bit with the examples. Looks great! Thanks for releasing it. As you probably remember, I was also working in a java application that used ODE. For that I developed my own java ODE interface using swig (http://www.swig.org). SWIG is an utility that helps to interface C and C++ libraries to a myrad of programming languages, including Java, Tcl and Python. I thing using SWIG in the long run would be more useful to the ODE community, because it would be easier to interface with other programming languages besides Java (like Python). Also, because the mapping from C++ to the other languages is more or less automatic, it could help with the garbage collection problems that you mention. Basically, in SWIG you only have to create an "interface" file (that is like a C/C++ header file), and the utility automatically creates all the necessary files; Garbage collection is also handled automatically by it. My own SWIG interface file is rather rough and incomplete by now, because I don't have the necessary SWIG knowledge (i.e. typemaps) to make a more natural mapping. Also, I have based my SWIG file in the C++ interface bundled with the O.03 distribution (I haven't checked the latest CVS versions, so I really don't know how it is now), and it was rather incomplete, so I had to change it slighty in order to work. Because anyway your interface is working much better that mine, and also because of the Java3D integration, I think I can drop my own interface so that we could work together in further developing yours. Anyway, because the reasons that I pointed before, I would sugest for this changing the current ode.core.* package with a SWIG generated one instead, and adjusting the remaining Java3D integration classes. We could use my own interface file as a starting point. Also, some changes in the ODE own C++ interface would be needed. Of course, this is only my idea.:) In any case, you can count with me for helping you developing furthermore the java version. Any suggestions/ideas from the rest of the community? Best regards, Artur Matos. --------------------------------------------------------------- Artur Matos ALife Core Lab (http://www2.create.human.nagoya-u.ac.jp) Graduate School of Human Informatics | Nagoya University Email: amatos at create.human.nagoya-u.ac.jp (Lab) arturmatos78 at yahoo.com --------------------------------------------------------------- From Marta.Pla at uv.es Mon Oct 28 02:18:02 2002 From: Marta.Pla at uv.es (Marta Pla i Castells) Date: Mon Oct 28 02:18:02 2002 Subject: [ODE] box-box collisions In-Reply-To: References: Message-ID: <1035796861.17791.3.camel@welfa> > > It seems there are a couple possible ways to test for face-face box > contacts. Rather than being coplanar actually I meant that the planes of > each box are parallel, so if we know that the boxes penetrate and are > coplanar then there must be a face-face contact. The other way suggested > by Marta is to compare rotations, and if the boxes are at equal/right/180 > degree angles to one another then they must be in face-face contact as > well. > > I think the second way may be a bit faster. > > I have implemented that way and it works well. The only difficult thing is that I don't know well how to introduce it in the ODE code. I would need someone who knows C++ well to do it. Despite of this, I were reading the boxbox algorithm and I see they use the rotation of the two boxes also. I think there would be easy to put my code inside of that but I think I wouldn't be able to do it. -- **************************************** gpg pub 1024D/A2D21610 Marta Pla i Castells Key fingerprint = 9578 8116 FC87 C4D2 1A5C 993F 86B4 52D2 A2D2 1610 *********************************** Marta Pla i Castells (Marta.Pla at uv.es) http://www.uv.es/~mplac Robotics Institute University of Valencia (Spain) **************************************** Mathematicians are like Frenchmen: Whenever you say something to them, they translate it into their own language, and at once it is something entirely different Goethe. -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: Esta parte del mensaje esta firmada digitalmente Url : http://q12.org/pipermail/ode/attachments/20021028/a44d504c/attachment.bin From ps_yumemi at yahoo.com Mon Oct 28 07:33:01 2002 From: ps_yumemi at yahoo.com (pia dalusong) Date: Mon Oct 28 07:33:01 2002 Subject: [ODE] rotation Message-ID: <20021028143204.88351.qmail@web40508.mail.yahoo.com> hello, how exactly do you manipulate the dMatrix3 variable? is it an array? how can you copy it? is there any way to get the euler angles from it? i really need to copy them to another variable. thanks pia __________________________________________________ Do you Yahoo!? Y! Web Hosting - Let the expert host your web site http://webhosting.yahoo.com/ From facontidavide at hotmail.com Mon Oct 28 09:35:02 2002 From: facontidavide at hotmail.com (Edgard Oscuro) Date: Mon Oct 28 09:35:02 2002 Subject: [ODE] Get the motor torque Message-ID: An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021028/883025b1/attachment.htm From bpellens at vub.ac.be Mon Oct 28 12:52:02 2002 From: bpellens at vub.ac.be (Bram Pellens) Date: Mon Oct 28 12:52:02 2002 Subject: [ODE] Creating DLL of drawstuff Message-ID: Hello, I'm having some problems using ODE together with wxWindows (www.wxWindows.org). Both the libraries drawstuff and wxWindows have references to the main function leading to linker errors when compiling my application. I believe from earlier messages in the archives I have to create a DLL from the drawstuff sources, but i don't know how the build such a DLL Can someone please give me some explanation on creating the DLL. Thanks in advance, Bram Pellens From coding at natew.com Mon Oct 28 14:17:02 2002 From: coding at natew.com (Nate W) Date: Mon Oct 28 14:17:02 2002 Subject: [ODE] Creating DLL of drawstuff In-Reply-To: Message-ID: On Mon, 28 Oct 2002, Bram Pellens wrote: > I'm having some problems using ODE together with wxWindows > (www.wxWindows.org). Both the libraries drawstuff and wxWindows have > references to the main function leading to linker errors when > compiling my application. I believe from earlier messages in the > archives I have to create a DLL from the drawstuff sources, but i > don't know how the build such a DLL Can someone please give me some > explanation on creating the DLL. If you have some sort of DLL building already, try opening drawstuff/windows.cpp and just comment out the WinMain function at the bottom of the file. You might think of drawstuff as a trivial GUI for simple tests of ODE. It's just there to make ODE objects visible in a very simple GUI. If you have wxWindows providing your GUI, you have no need for most of the code in drawstuff. You will probably find useful the functions for drawing basic geometric objects like boxes and spheres, but not much else. Those functions can simply be pasted into a source file in your application. -- Nate Waddoups Redmond WA USA http://www.natew.com From dmcclurg at pandemicstudios.com.au Mon Oct 28 18:19:02 2002 From: dmcclurg at pandemicstudios.com.au (David McClurg) Date: Mon Oct 28 18:19:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp Message-ID: i've found that i need to combine contacts when sphere bodies roll from one static geom to another. to understand the problem, let me show you an example... attached is a modified version of test_boxstack.cpp. hit the 's' key to drop a sphere and watch what happens. see how it sticks on the cusp between the ramp and the ground plane? that is kind of weird. it happens when spheres are rolling over boxes, planes, or meshes. it can even happen if you embed a ccylinder into the ground and roll up next to it. you will stick for a while before you can pull yourself away from the ccylinder. is this expected or is it a bug? if it is expected, perhaps it should automatically be handled because it is so common to run up against. erwin handles it within a single tri-list by merging the contacts into a single contact. but you need to do this on a higher level as well between different trilists, boxes, and planes. -------------- next part -------------- A non-text attachment was scrubbed... Name: test_boxstack.cpp Type: application/octet-stream Size: 11008 bytes Desc: test_boxstack.cpp Url : http://q12.org/pipermail/ode/attachments/20021028/381d84b5/test_boxstack.obj From russ at q12.org Mon Oct 28 23:39:02 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 28 23:39:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: References: Message-ID: <20021028234323.7f5815bb.russ@q12.org> > attached is a modified version of test_boxstack.cpp. hit the 's' key > to drop a sphere and watch what happens. see how it sticks on the > cusp between the ramp and the ground plane? > > is this expected or is it a bug? hi david, i have found the problem. it's not exactly a coding bug in ODE, it's a problem with the way that the friction model is used. here's the story: ODE has two ways to approximate friction: the default way (called the constant-force-limit approximation, or 'box friction') and the improved way (called "friction pyramid approximation 1") which is obtained by setting the dContactApprox1 flag in the contact mode. your example uses the default box friction (as do most of the ODE test samples). it turns out that in a world that has box friction only, the "physically correct" behavior for a ball rolling down an inclined plane is to stop dead when it hits the ground! in other words, it's not an ODE bug as such but a consequence of this friction model in the contact joint. of course this is not the behavior that you see in real life, because real life does not have box friction! the solution is to use the dContactApprox1 mode, i.e. do this in your code: contact[i].surface.mode = dContactApprox1 | other_flags contact[i].surface.mu = dInfinity; // or, some other value like '1' your example did lead me to find a couple of problems in the LCP solver that were only evident in when dContactApprox1 was being used ... i've fixed them, and you'll have to check out lcp.cpp,lcp.h from CVS for this to work properly. i'll add a section to the FAQ that explains all this better, and gives the intuitive reason why box-friction causes this problem (i'll need a diagram - it's hard to explain in words). hope this helps you! russ. -- Russell Smith http://www.q12.org From russ at q12.org Mon Oct 28 23:49:01 2002 From: russ at q12.org (Russ Smith) Date: Mon Oct 28 23:49:01 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: <20021028234323.7f5815bb.russ@q12.org> References: <20021028234323.7f5815bb.russ@q12.org> Message-ID: <20021028235046.3dc17a77.russ@q12.org> oh yes ... other people doing vehicle stuff may want to update CVS and use the dContactApprox1 mode too. this problem affected all rolling bodies that had multiple frictional contacts at different angles (i.e. car wheels going over bumps, up ramps etc). let me know of any problems. russ. -- Russell Smith http://www.q12.org From russ at q12.org Tue Oct 29 01:11:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 01:11:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: References: Message-ID: <20021029001532.65434c54.russ@q12.org> i have added a faq section to the docs that explains the cause and solution for this problem. check out: "11.13. My rolling bodies (e.g. wheels) sometimes get stuck between geoms". http://q12.org/ode/ode-latest-userguide.html enjoy, russ -- Russell Smith http://www.q12.org From ivan.bolcina at volja.net Tue Oct 29 02:51:02 2002 From: ivan.bolcina at volja.net (Ivan Bolcina) Date: Tue Oct 29 02:51:02 2002 Subject: [ODE] Torque and acceleration of angular velocities Message-ID: <000a01c27f30$9aba3ed0$0100a8c0@vectra> Hi. I have a box body with box mass. I want to apply some amount of torque. I am interested in acceleration of angular velocity. How to calculate it? bye and thanx, ivan -------------- next part -------------- An HTML attachment was scrubbed... URL: http://q12.org/pipermail/ode/attachments/20021029/d91625a3/attachment.htm From martin at metahuman.org Tue Oct 29 06:17:02 2002 From: martin at metahuman.org (Martin C. Martin) Date: Tue Oct 29 06:17:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp References: <20021028234323.7f5815bb.russ@q12.org> <20021028235046.3dc17a77.russ@q12.org> Message-ID: <3DBE8A24.A1246A71@metahuman.org> Hey Russ, ODE never ceases to amaze me with the level of support you give, Russ. Tracking down things like this, documenting them and fixing those LCP bugs is a great example. Since many people simply take the examples and change what they need to change, and don't change anything they don't understand; and since the difference between the two friction models is subtle, should the examples be changed to use dContactApprox1? For that matter, should it be the default friction model? At the very least, when discussing contact parameters in the manual, should it say "if you don't know which friction model to use, start with dContactApprox1?" Just a thought, Martin Russ Smith wrote: > > oh yes ... other people doing vehicle stuff may want to update CVS and > use the dContactApprox1 mode too. this problem affected all rolling > bodies that had multiple frictional contacts at different angles (i.e. > car wheels going over bumps, up ramps etc). > > let me know of any problems. > > russ. From russ at q12.org Tue Oct 29 11:33:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 11:33:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp In-Reply-To: <3DBE8A24.A1246A71@metahuman.org> Message-ID: > Since many people simply take the examples and change what they need to > change, and don't change anything they don't understand; and since the > difference between the two friction models is subtle, should the examples > be changed to use dContactApprox1? For that matter, should it be the > default friction model? At the very least, when discussing contact > parameters in the manual, should it say "if you don't know which friction > model to use, start with dContactApprox1?" probably you're right. in fact, there needs to be a lot more written about the friction models in general. i'm reluctant to made dContactApprox1 the default, as this will break people's code in subtle ways - there are now enough users of ODE that breaking the API is kind of an anti-social thing to do unless there is a good reason. i changed the buggy example, since that's the basis for a lot of people's vehicles. i may change the other examples too, but i'll try them out first to see what effect the change has. russ. -- Russ Smith http://www.q12.org/ From wristy_j at yahoo.com Tue Oct 29 16:21:02 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Tue Oct 29 16:21:02 2002 Subject: [ODE] "fixed world point" joint Message-ID: <20021029232045.49157.qmail@web40811.mail.yahoo.com> Hello, How can I constrain (through a ball joint) a physically simulated body to another body that is NOT under physical simulation, but updated by either user input or an animation sequence? (So, like having a shoulder joint that is updated by an animation, while having the arm lifelessly dangle from it like a rag doll.) - (Note: I'm treating the non-simulated body as though it were infinitely massive (InvMass = 0) - the problem is that it moves!) Is there a simple way to just specify a new anchor point per frame, and let the LCP solver calculate the necessary forces to keep the body constrained at that point? OR - Do I need to calculate forces to apply to the simulated body based on the current and previous position of the animated body myself (instead of letting the LCP solver figure out those forces). Will this work? Is there any other way to do it? Thanks! J __________________________________________________ Do you Yahoo!? HotJobs - Search new jobs daily now http://hotjobs.yahoo.com/ From russ at q12.org Tue Oct 29 17:12:02 2002 From: russ at q12.org (Russ Smith) Date: Tue Oct 29 17:12:02 2002 Subject: [ODE] "fixed world point" joint In-Reply-To: <20021029232045.49157.qmail@web40811.mail.yahoo.com> Message-ID: > How can I constrain (through a ball joint) a > physically simulated body to another body that is NOT > under physical simulation ideally, there should be a new joint that constrains a point on a body to move at a certain global velocity. you could compute this velocity based on the motion you desire. this joint is easy to create - in fact it's quite similar to the existing ball joint - but i have so much other stuff on my ODE todo list right now. any volunteers? other approaches (e.g. setting forces on bodies) will also work, but are less than ideal - they require a lot of fiddling and tuning to get right, and they never look quite right. russ. -- Russ Smith http://www.q12.org/ From aanand at milestoneindia.com Tue Oct 29 21:30:02 2002 From: aanand at milestoneindia.com (Aanand Narayanan.P.P) Date: Tue Oct 29 21:30:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Does anybody know which method (direct LCP, iterative LCP, penalty etc) was used in the (vehicle) physics for GTA3? Is it possible to achieve the same level of stability with ODE? I would like to hear from other people who have used ODE for full fledged physics simulations. Thanks AN --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.401 / Virus Database: 226 - Release Date: 10/9/2002 From coding at natew.com Tue Oct 29 23:34:01 2002 From: coding at natew.com (Nate W) Date: Tue Oct 29 23:34:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: On Wed, 30 Oct 2002, Aanand Narayanan.P.P wrote: > I would like to hear from other people who have used ODE for full > fledged physics simulations. What do you mean by "full fledged?" -- Nate Waddoups Redmond WA USA http://www.natew.com From slipch at gsc-game.kiev.ua Wed Oct 30 01:35:03 2002 From: slipch at gsc-game.kiev.ua (slipch) Date: Wed Oct 30 01:35:03 2002 Subject: [ODE] "fixed world point" joint In-Reply-To: References: Message-ID: <823040832.20021030103748@gsc-game.kiev.ua> Hello Russ, Wednesday, October 30, 2002, 2:11:25 AM, you wrote: >..... any volunteers? I have tried to understand creating joints in ODE. But it turned out a not easy task for me. I have read your paper on creating joints. There is a very good explained theory but it says nothing about implementation. May be some main points would be enough for me. -- Best regards, Konstantin Slipchenko mailto:slipch at gsc-game.kiev.ua From aanand at milestoneindia.com Wed Oct 30 04:45:02 2002 From: aanand at milestoneindia.com (Aanand Narayanan.P.P) Date: Wed Oct 30 04:45:02 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: Message-ID: <000001c2800a$7836a2b0$0e01a8c0@aanand> >> I would like to hear from other people who have used ODE for full >> fledged physics simulations. > What do you mean by "full fledged?" Like in GTA3 (or any other similar game). Not just for vehicles, but for other objects in the world (lamp post, dust bins etc.). What I am interested is in the stability and robustness of the system when several simulations occur (several different active joints). I did read about the posts on direct LCP and iterative LCP. So I wanted to know if anybody knows about the physics in GTA3 and the stability of ODE itself when used for such simulations (GTA3). Also can anyone point me to some literature on Dantzig algorithm (used by LCP solver in ODE). Cheers AN --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.401 / Virus Database: 226 - Release Date: 10/9/2002 From wristy_j at yahoo.com Wed Oct 30 06:24:01 2002 From: wristy_j at yahoo.com (Jason Gott) Date: Wed Oct 30 06:24:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c2800a$7836a2b0$0e01a8c0@aanand> Message-ID: <20021030132310.65975.qmail@web40807.mail.yahoo.com> > Also can anyone point me to some literature on > Dantzig algorithm > (used by LCP solver in ODE). > > Cheers > AN Hello, David Baraff has a paper entitled "Fast Contact Force Computation for Nonpenetrating Rigid Bodies" that was in SIGGRAPH 94. In it, he has pseudo-code for his implementation of Dantzig's algorithm. Just search for it by name and you'll find a .pdf. Hope that helps, J __________________________________________________ Do you Yahoo!? HotJobs - Search new jobs daily now http://hotjobs.yahoo.com/ From erwin at vo.com Wed Oct 30 06:39:02 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 30 06:39:02 2002 Subject: [ODE] GTA3 and Physics References: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: <005601c28019$9d6561c0$73fefea9@athlon> Actually the carphysics in GTA3 are pretty lousy in my opinion. I suspect they are using Havok. Although i wouldnt even consider calling Havok 'lousy' in general, i dont like the carphysics i've seen in their public demo's. GTA3 kinda feels like these. I dont think its impossible to create the same physicsmodel in ODE, though. You just need to fiddle a lot with masses to get it right. Erwin ----- Original Message ----- From: "Aanand Narayanan.P.P" To: Sent: Wednesday, October 30, 2002 05:34 Subject: [ODE] GTA3 and Physics > > Does anybody know which method (direct LCP, iterative LCP, penalty etc) > was used in the (vehicle) physics for GTA3? > Is it possible to achieve the same level of stability with ODE? I would > like to hear from other people who have used ODE for full fledged > physics simulations. > > Thanks > AN From Henrik.Karlsson at dice.se Wed Oct 30 06:55:02 2002 From: Henrik.Karlsson at dice.se (Karlsson, Henrik) Date: Wed Oct 30 06:55:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <160E755604B6A949900013D42C3484722DEBAB@elrond.dice.se> I'm guessing they are using a very customized physics model for gta3... They might use havoc or similar package for most physics stuff.. but when it comes to car physics in games it is much cheaper to have a customized system compared to building up a vehicle correctly with different parts.. Henrik -----Original Message----- From: Erwin de Vries [mailto:erwin at vo.com] Sent: den 30 oktober 2002 13:06 To: ode at q12.org Subject: Re: [ODE] GTA3 and Physics Actually the carphysics in GTA3 are pretty lousy in my opinion. I suspect they are using Havok. Although i wouldnt even consider calling Havok 'lousy' in general, i dont like the carphysics i've seen in their public demo's. GTA3 kinda feels like these. I dont think its impossible to create the same physicsmodel in ODE, though. You just need to fiddle a lot with masses to get it right. Erwin ----- Original Message ----- From: "Aanand Narayanan.P.P" To: Sent: Wednesday, October 30, 2002 05:34 Subject: [ODE] GTA3 and Physics > > Does anybody know which method (direct LCP, iterative LCP, penalty etc) > was used in the (vehicle) physics for GTA3? > Is it possible to achieve the same level of stability with ODE? I would > like to hear from other people who have used ODE for full fledged > physics simulations. > > Thanks > AN _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode From ed.jones at oracle.com Wed Oct 30 10:16:01 2002 From: ed.jones at oracle.com (Ed Jones) Date: Wed Oct 30 10:16:01 2002 Subject: [ODE] Self Righting Boxes (on castors) Message-ID: <3DC013BD.9080102@oracle.com> Hi Folks, I'm building a "simulation" which consists of a load of boxes on castors which I can push around (don't ask!). The boxes are (fairly obviously) boxes and the castors are 4 spheres attached to each box with ball joints. I can click on the boxes to give them forces and hence push them around the floor. Which is just a ground plane, with other boxes and spheres on it. So far so good. The "castorbox people" fall over quite regularly, which is fine and all part of the "fun". But what I'd like to do is, after a couple of seconds of lying down, get them to spring back up to their feet of their own accord. Obviously I can just reset the little fella to be the right way up but I'd like it to look more like they're jumping back up themselves. Anyone got any ideas of what would be a good (and preferably simple!) way to achieve this? Cheers, Ed. From filipe.dias at mind.pt Wed Oct 30 10:48:02 2002 From: filipe.dias at mind.pt (Filipe Dias) Date: Wed Oct 30 10:48:02 2002 Subject: [ODE] Self Righting Boxes (on castors) In-Reply-To: <3DC013BD.9080102@oracle.com> Message-ID: <200210301747.g9UHlGu01461@hook.org> I remember seeing (in the buggy demo) a force being aplyed upwards to one of the corners of the box while we were pressing the backspace key. but that isn't an automatic way to straighten things up, since it is aplied for as long as the key is down... What I am remembering now is that you can do something archimedes-like and fix a balloon some distance above the boxes.. when they go upside- down you would fill the baloon and it would turn the box over.. An up force aplied some distance over the center of the box. This is obviosly not as funny as an explosion-like effect where the box would spin a number of times an land straigt up.. but trying to turn boxes arround with explosions may take quite a lot of attepts to do it right!.. :-) Fil. -----Original Message----- From: Ed Jones To: ode at q12.org Date: Wed, 30 Oct 2002 17:15:41 +0000 Subject: [ODE] Self Righting Boxes (on castors) > Hi Folks, > > I'm building a "simulation" which consists of a load of boxes on > castors > which I can push around (don't ask!). > > The boxes are (fairly obviously) boxes and the castors are 4 spheres > attached to each box with ball joints. I can click on the boxes to give > them forces and hence push them around the floor. Which is just a > ground > plane, with other boxes and spheres on it. So far so good. > > The "castorbox people" fall over quite regularly, which is fine and all > part of the "fun". But what I'd like to do is, after a couple of > seconds > of lying down, get them to spring back up to their feet of their own > accord. Obviously I can just reset the little fella to be the right way > up but I'd like it to look more like they're jumping back up > themselves. > > Anyone got any ideas of what would be a good (and preferably simple!) > way to achieve this? > > Cheers, > Ed. > > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > From erwin at vo.com Wed Oct 30 11:19:01 2002 From: erwin at vo.com (Erwin de Vries) Date: Wed Oct 30 11:19:01 2002 Subject: [ODE] GTA3 and Physics References: <160E755604B6A949900013D42C3484722DEBAB@elrond.dice.se> Message-ID: <00ba01c28040$be7d2510$73fefea9@athlon> > I'm guessing they are using a very customized physics model for gta3... They > might use havoc or similar package for most physics stuff.. but when it > comes to car physics in games it is much cheaper to have a customized system > compared to building up a vehicle correctly with different parts.. This is exactly what comes with Havok. A vehicle SDK. Now i have no idea how it works behind the scenes, and i've never used it, but my guess is that they are using many hacks to make it 'just work'. Erwin From philt at microsoft.com Wed Oct 30 11:49:02 2002 From: philt at microsoft.com (Phil Teschner) Date: Wed Oct 30 11:49:02 2002 Subject: [ODE] GTA3 and Physics Message-ID: <240659DFBDD99C4299EF7483EAD70F2410C1A1@RED-MSG-01.redmond.corp.microsoft.com> I remember hearing that the physics engine in GTA3 was entirely written in house. It is a pretty straight forward rigid body system that does not solve multiple simultaneous contacts (i.e. does not use an LPC solver). Phil -----Original Message----- From: Erwin de Vries [mailto:erwin at vo.com] Sent: Wednesday, October 30, 2002 10:18 AM To: ode at q12.org Subject: Re: [ODE] GTA3 and Physics > I'm guessing they are using a very customized physics model for gta3... They > might use havoc or similar package for most physics stuff.. but when it > comes to car physics in games it is much cheaper to have a customized system > compared to building up a vehicle correctly with different parts.. This is exactly what comes with Havok. A vehicle SDK. Now i have no idea how it works behind the scenes, and i've never used it, but my guess is that they are using many hacks to make it 'just work'. Erwin _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Wed Oct 30 12:44:01 2002 From: coding at natew.com (Nate W) Date: Wed Oct 30 12:44:01 2002 Subject: [ODE] Self Righting Boxes (on castors) In-Reply-To: <3DC013BD.9080102@oracle.com> Message-ID: On Wed, 30 Oct 2002, Ed Jones wrote: > The "castorbox people" fall over quite regularly, which is fine and all > part of the "fun". But what I'd like to do is, after a couple of seconds > of lying down, get them to spring back up to their feet of their own > accord. Obviously I can just reset the little fella to be the right way > up but I'd like it to look more like they're jumping back up themselves. > > Anyone got any ideas of what would be a good (and preferably simple!) > way to achieve this? How about using an angular motor? http://q12.org/ode/ode-latest-userguide.html#ref56 Set the motor to have one axis, and set one of the motor's bodies to the "castorperson" body and set the other to null. Use dJointSetAMotorParam to set a desired (angular) velocity. That should rotate the person upright. To come up with a desired velocity, get the angle between the person's current orientation and the desired "upright" vector. Multiply that angle by a "gain" factor. To tune the way the people get upright, you can tune the gain, the maximum force, the people's mass, gravity, etc. When the person's angular velocity gets close to zero, you can probably consider them upright and turn off the angular motor. I haven't actually used angular motors yet in my own code, so this is as much a question as a suggestion. If anyone has other ideas I'm all ears. -- Nate Waddoups Redmond WA USA http://www.natew.com From filipe.dias at mind.pt Wed Oct 30 13:14:01 2002 From: filipe.dias at mind.pt (Filipe Dias) Date: Wed Oct 30 13:14:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <240659DFBDD99C4299EF7483EAD70F2410C1A1@RED-MSG-01.redmond.corp.microsoft.com> Message-ID: <200210302013.g9UKDsu16879@hook.org> What I remember from playing it is that when a seeding firetruck bumps into 2 cars at the same time the result is unexpected, the two cars stay still and the fire truck goes mad like if it had hit a wall. So this is very simmilar to "doesn't solve multiple simultaneous contacts" Now judging by how good it looks, I am surprised how multiple contact situations happen that seldom! Even so it is possible to push two stoped cars very slowly, so it is possible that multiple contacts can be solved if the speed is low... Dispite all this I have mannaged to drive a firetruck inside a taxi! Fil. -----Original Message----- From: "Phil Teschner" To: "Erwin de Vries" , Date: Wed, 30 Oct 2002 10:48:02 -0800 Subject: RE: [ODE] GTA3 and Physics > I remember hearing that the physics engine in GTA3 was entirely written > in house. It is a pretty straight forward rigid body system that does > not solve multiple simultaneous contacts (i.e. does not use an LPC > solver). > > Phil > > -----Original Message----- > From: Erwin de Vries [mailto:erwin at vo.com] > Sent: Wednesday, October 30, 2002 10:18 AM > To: ode at q12.org > Subject: Re: [ODE] GTA3 and Physics > > > I'm guessing they are using a very customized physics model for > gta3... > They > > might use havoc or similar package for most physics stuff.. but when > it > > comes to car physics in games it is much cheaper to have a customized > system > > compared to building up a vehicle correctly with different parts.. > > This is exactly what comes with Havok. A vehicle SDK. Now i have no > idea > how > it works behind the scenes, and i've never used it, but my guess is > that > they are using many hacks to make it 'just work'. > > Erwin > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > From holmlund at hpc2n.umu.se Wed Oct 30 14:15:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Wed Oct 30 14:15:02 2002 Subject: [ODE] multiple contacts and sticking on the cusp References: Message-ID: <3DC04BAA.4050904@hpc2n.umu.se> Btw, what's the current status of R&D on finding methods for implementing real coulomb friction in an efficient way? Any recent publications/preprints/conferences in this area? /Kenneth Russ Smith wrote: > probably you're right. in fact, there needs to be a lot more written about > the friction models in general. i'm reluctant to made dContactApprox1 the > default, as this will break people's code in subtle ways - there are now > enough users of ODE that breaking the API is kind of an anti-social thing > to do unless there is a good reason. > > i changed the buggy example, since that's the basis for a lot of people's > vehicles. i may change the other examples too, but i'll try them out first > to see what effect the change has. > > russ. -- Kenneth Holmlund Director VRlab HPC2N, Ume? University, Sweden holmlund at hpc2n.umu.se From holmlund at hpc2n.umu.se Wed Oct 30 14:31:02 2002 From: holmlund at hpc2n.umu.se (Kenneth Holmlund) Date: Wed Oct 30 14:31:02 2002 Subject: [ODE] GTA3 and Physics References: <000001c2800a$7836a2b0$0e01a8c0@aanand> Message-ID: <3DC04F58.5040909@hpc2n.umu.se> The probably most advanced vehicle simulator around is the harvester simulator by Oryx Simulations. See http://www.oryx.se/ It's using Vortex from CM-Labs, and Russ had a key role in it's early development. (see http://www.cm-labs.com/) In this simulator you have full vehicle dynamics plus highly advanced interaction with many objects in the environment. Upcoming simulators for "heavy vehicles" use physics for adding even more realism and generality. If you would tear off the hardware (for control and display) the whole thing could quite easily be made into a "game like" application (there's a reason why Russ talks about "Harvester wars" in his notes! :) ODE and Vortex were quite similar one year ago, but Vortex has quite a few more features nowadays, as well as an improved friction model and better stability for rotating bodies. In fact, MathEngine Karma, ODE and Vortex all bear influences from the same people (including Russ), but they have been developed independently for some time now (though I really don't know much about Karma these days). /Kenneth Aanand Narayanan.P.P wrote: >>>I would like to hear from other people who have used ODE for full >>>fledged physics simulations. >> > >>What do you mean by "full fledged?" > > > Like in GTA3 (or any other similar game). Not just for vehicles, > but for other objects in the world (lamp post, dust bins etc.). What I > am interested is in the stability and robustness of the system when > several simulations occur (several different active joints). I did read > about the posts on direct LCP and iterative LCP. So I wanted to know if > anybody knows about the physics in GTA3 and the stability of ODE itself > when used for such simulations (GTA3). > > Also can anyone point me to some literature on Dantzig algorithm > (used by LCP solver in ODE). > > Cheers > AN > -- Kenneth Holmlund Director VRlab HPC2N, Ume? University, Sweden holmlund at hpc2n.umu.se From Henrik.Karlsson at dice.se Wed Oct 30 14:39:01 2002 From: Henrik.Karlsson at dice.se (Karlsson, Henrik) Date: Wed Oct 30 14:39:01 2002 Subject: [ODE] GTA3 and Physics Message-ID: <160E755604B6A949900013D42C3484722DEBB0@elrond.dice.se> It's very common that you use simple displacement in games when contacts appear between objects.. and solve them one by one.. If you tweak it a little you can make it look good.. cheap and simple :) Or you can always solve displacement simultaneously. That might give you a better protection against bodies penetrating each other when multiple contacts. The big performance hit in game physics usually is the collision part though. In our game right now 50% of the cpu is just collision detection.. (most graphics are done on the gpu). So keep your collision primitives as simple as possible (use composites of spheres instead of boxes etc, works good enough in most cases). regards, Henrik -----Original Message----- From: Filipe Dias [mailto:filipe.dias at mind.pt] Sent: den 30 oktober 2002 20:49 To: ode at q12.org Subject: RE: [ODE] GTA3 and Physics What I remember from playing it is that when a seeding firetruck bumps into 2 cars at the same time the result is unexpected, the two cars stay still and the fire truck goes mad like if it had hit a wall. So this is very simmilar to "doesn't solve multiple simultaneous contacts" Now judging by how good it looks, I am surprised how multiple contact situations happen that seldom! Even so it is possible to push two stoped cars very slowly, so it is possible that multiple contacts can be solved if the speed is low... Dispite all this I have mannaged to drive a firetruck inside a taxi! Fil. -----Original Message----- From: "Phil Teschner" To: "Erwin de Vries" , Date: Wed, 30 Oct 2002 10:48:02 -0800 Subject: RE: [ODE] GTA3 and Physics > I remember hearing that the physics engine in GTA3 was entirely written > in house. It is a pretty straight forward rigid body system that does > not solve multiple simultaneous contacts (i.e. does not use an LPC > solver). > > Phil > > -----Original Message----- > From: Erwin de Vries [mailto:erwin at vo.com] > Sent: Wednesday, October 30, 2002 10:18 AM > To: ode at q12.org > Subject: Re: [ODE] GTA3 and Physics > > > I'm guessing they are using a very customized physics model for > gta3... > They > > might use havoc or similar package for most physics stuff.. but when > it > > comes to car physics in games it is much cheaper to have a customized > system > > compared to building up a vehicle correctly with different parts.. > > This is exactly what comes with Havok. A vehicle SDK. Now i have no > idea > how > it works behind the scenes, and i've never used it, but my guess is > that > they are using many hacks to make it 'just work'. > > Erwin > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > _______________________________________________ ODE mailing list ODE at q12.org http://q12.org/mailman/listinfo/ode From coding at natew.com Thu Oct 31 00:23:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 00:23:02 2002 Subject: [ODE] slider trouble Message-ID: I've noticed that when I connect two boxes with a slider, and set stops on the slider so it can only move between +1 and -1, the box-slider-box system spins off into infinity if I toss it into the air. Without the limits, the system behaves just fine. I was thinking that I was just seeing the rotating body instability described in 11.12 of the FAQ, but bodies by themselves are a much smaller problem. It seems like the joint limits exacerbate the problem, could they be adding energy to the system somehow? Russ, do you have a pretty good idea of what would cause this, or would you like me to tweak one of the drawstuff-based sample apps to demonstrate this? There is a possiblity that something in Juice is contributing to the problem, so if you want I'll put together a bare-minimum test case for you. Nate Waddoups Redmond WA USA http://www.natew.com From duhprey at yahoo.com Thu Oct 31 09:59:01 2002 From: duhprey at yahoo.com (Daniel Duhprey) Date: Thu Oct 31 09:59:01 2002 Subject: [ODE] GTA3 and Physics In-Reply-To: <000001c27fcd$ac3ae7c0$0e01a8c0@aanand> Message-ID: On Wed, 30 Oct 2002, Aanand Narayanan.P.P wrote: --> -->Does anybody know which method (direct LCP, iterative LCP, penalty etc) -->was used in the (vehicle) physics for GTA3? -->Is it possible to achieve the same level of stability with ODE? I would -->like to hear from other people who have used ODE for full fledged -->physics simulations. I'm one of the devs responsible for the ode plugin to crystal space. I also wrote a pinball simulator using that http://cs-pinball.sourceforge.net. Its not exactly full-fledged physics since the only real active object is the ball, but the flipper and shooter are represented with joints and forces/torques as are anything else in the game, but its really not on the scale of GTA3 -- ------------ email: duhprey at tosos.com www: http://paradox.tosos.com/~duhprey icq: 129354442 She's got a whole brood of kids, like Sendmail, and Postfix, and Apache, and Perl. And some of 'em die young, and some are mentally retarded. Sterling The European finds intercourse with Americans easy and agreeable. Einstein Not a shred of evidence exists in favor of the idea that life is serious. Gill From ed.jones at oracle.com Thu Oct 31 11:05:02 2002 From: ed.jones at oracle.com (Ed Jones) Date: Thu Oct 31 11:05:02 2002 Subject: [ODE] Self Righting Boxes (on castors) References: Message-ID: <3DC170AC.5010004@oracle.com> Thanks for the ideas Nate and Fil, I think I'll go for a big comedy magnet, attached to helicopter rotor-blades (or possibly a jet-pack or something) to hover around and pull them back up. Cheers, Ed. Nate W wrote: >On Wed, 30 Oct 2002, Ed Jones wrote: > > > >>The "castorbox people" fall over quite regularly, which is fine and all >>part of the "fun". But what I'd like to do is, after a couple of seconds >>of lying down, get them to spring back up to their feet of their own >>accord. Obviously I can just reset the little fella to be the right way >>up but I'd like it to look more like they're jumping back up themselves. >> >>Anyone got any ideas of what would be a good (and preferably simple!) >>way to achieve this? >> >> > >How about using an angular motor? >http://q12.org/ode/ode-latest-userguide.html#ref56 > >Set the motor to have one axis, and set one of the motor's bodies to the >"castorperson" body and set the other to null. Use dJointSetAMotorParam >to set a desired (angular) velocity. That should rotate the person >upright. > >To come up with a desired velocity, get the angle between the person's >current orientation and the desired "upright" vector. Multiply that angle >by a "gain" factor. To tune the way the people get upright, you can tune >the gain, the maximum force, the people's mass, gravity, etc. When the >person's angular velocity gets close to zero, you can probably consider >them upright and turn off the angular motor. > >I haven't actually used angular motors yet in my own code, so this is as >much a question as a suggestion. If anyone has other ideas I'm all ears. > > > From russ at q12.org Thu Oct 31 12:39:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 12:39:02 2002 Subject: [ODE] slider trouble In-Reply-To: Message-ID: > so if you want I'll put together a bare-minimum test case for you. please. russ -- Russ Smith http://www.q12.org/ From mein at cs.umn.edu Thu Oct 31 12:49:01 2002 From: mein at cs.umn.edu (Kent Mein) Date: Thu Oct 31 12:49:01 2002 Subject: [ODE] just a little patch Message-ID: <20021031092658.A10224@cs.umn.edu> Just a small patch under solaris for ode/test/test_ode.cpp I added the following: #if defined (__sparc) || defined (__sparc__) #include #endif Kent Mein -- mein at cs.umn.edu http://www.cs.umn.edu/~mein From xyberswine at hotmail.com Thu Oct 31 12:57:30 2002 From: xyberswine at hotmail.com (Kirk Waynesdale) Date: Thu Oct 31 12:57:30 2002 Subject: [ODE] more physics Message-ID: looks like another physics engine... www.tokamakphysics.com John L. _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From russ at q12.org Thu Oct 31 13:08:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 13:08:02 2002 Subject: [ODE] more physics In-Reply-To: Message-ID: > looks like another physics engine... > > www.tokamakphysics.com interesting. yet another mention of iterative constraint solving methods here. the demos are kind of bare bones (i.e., like ODE's bare bones demos). no mention of the cost. the box stack demo has an interesting flaw: a nudged stack will tip over, then freeze part of the way down. this suggests that 'stable' box stacking is achieved through simply turning off the phisics for a stationary stack - which is a good idea, but it makes it hard to evaluate the stability of the underlying method for stacks. the collision looks like it allows penetration, like ODE. if you collapse the chain on top of itself it will squish into itself a bit then expand out. russ. -- Russ Smith http://www.q12.org/ From anselm at hook.org Thu Oct 31 13:40:02 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 31 13:40:02 2002 Subject: [ODE] more physics In-Reply-To: Message-ID: I was looking around for some information on this topic and ran across these links that others may find interesting: http://w3imagis.imag.fr/Publications/1999/Fau99/Fau99.pdf http://w3imagis.imag.fr/Membres/Francois.Faure/faure.html - a On Thu, 31 Oct 2002, Russ Smith wrote: > > > looks like another physics engine... > > > > www.tokamakphysics.com > > interesting. yet another mention of iterative constraint solving methods > here. the demos are kind of bare bones (i.e., like ODE's bare bones > demos). no mention of the cost. > > the box stack demo has an interesting flaw: a nudged stack will tip over, > then freeze part of the way down. this suggests that 'stable' box stacking > is achieved through simply turning off the phisics for a stationary stack > - which is a good idea, but it makes it hard to evaluate the stability of > the underlying method for stacks. > > the collision looks like it allows penetration, like ODE. if you collapse > the chain on top of itself it will squish into itself a bit then expand > out. > > russ. > > -- > Russ Smith > http://www.q12.org/ > > _______________________________________________ > ODE mailing list > ODE at q12.org > http://q12.org/mailman/listinfo/ode > From jme at snowcode.com Thu Oct 31 14:28:02 2002 From: jme at snowcode.com (Joakim Eriksson) Date: Thu Oct 31 14:28:02 2002 Subject: SV: [ODE] more physics Message-ID: > > looks like another physics engine... > > > > www.tokamakphysics.com > > interesting. yet another mention of iterative constraint > solving methods here. the demos are kind of bare bones >(i.e., like ODE's bare bones demos). no mention of the cost. Costs in what way? It does say memory usage and how much of the cpu per frame the physics system takes. What other costs are there? > the box stack demo has an interesting flaw: a nudged stack > will tip over, then freeze part of the way down. this suggests > that 'stable' box stacking is achieved through simply turning >off the phisics for a stationary stack Yes, seems like the objects sleep VERY quickly. After just a few tries I manage to get it to sleep in a physicly impossible position. (If the simulation had run for just a few ticks more the boxes would have fallen over) but they quickly froze in place. > the collision looks like it allows penetration, like ODE. if > you collapse the chain on top of itself it will squish into > itself a bit then expand out. It does indeed allow penetration. Just move closer to a object and spawn a sphere or something. You can see that even if the object is inside another object he can handle it. Its also a dead give away that he for the moment only handles primitives vs primitives and primitives vs static triangle meshes. It seems to be able to handle quite a lot. It does use a bit of memory 500Kb in some cases but they do contain quite a lot of objects. Too bad they dont have any more information on thier method. Also is it just me or do the chain and hinge behave strangly? If you continue to force it upwards it starts to wobble. Like a snake or something. Maybe it's just me and thats how it should behave. /Joakim E. - www.planestate.net From coding at natew.com Thu Oct 31 14:59:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 14:59:02 2002 Subject: [ODE] slider trouble In-Reply-To: Message-ID: On Thu, 31 Oct 2002, Russ Smith wrote: > > so if you want I'll put together a bare-minimum test case for you. > > please. I've attached test_sliderstops.cpp, a small demo in the drawstuff tradition with two boxes and a slider between them. To get them flying, they are dropped onto bouncy ground. The first bounce looks about right, but before it hits the ground again the two-box system appears to gain a lot of angular momentum. They mellow out after they hit the ground again. The boxes start with altitudes of 7 and 8 units; if you raise those to 19 and 20 you get more 'air time' and more trouble. You have to be quick with the mouse to follow them around the sky though. -- Nate Waddoups Redmond WA USA http://www.natew.com -------------- next part -------------- /************************************************************************* * * * Open Dynamics Engine, Copyright (C) 2001,2002 Russell L. Smith. * * All rights reserved. Email: russ at q12.org Web: www.q12.org * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of EITHER: * * (1) The GNU Lesser General Public License as published by the Free * * Software Foundation; either version 2.1 of the License, or (at * * your option) any later version. The text of the GNU Lesser * * General Public License is included with this library in the * * file LICENSE.TXT. * * (2) The BSD-style license that is included with this library in * * the file LICENSE-BSD.TXT. * * * * This library is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the files * * LICENSE.TXT and LICENSE-BSD.TXT for more details. * * * *************************************************************************/ #include #include #ifdef MSVC #pragma warning(disable:4244 4305) // for VC++, no precision loss complaints #endif // select correct drawing functions #ifdef dDOUBLE #define dsDrawBox dsDrawBoxD #endif // some constants #define SIDE (0.5f) // side length of a box #define MASS (1.0) // mass of a box // dynamics and collision objects static dWorldID world; static dSpaceID space; static dBodyID body[2]; static dGeomID box[2]; static dJointID slider; static dGeomID ground; static dJointGroupID contactgroup; // start simulation - set viewpoint static void start() { static float xyz[3] = {5.0382f,-5.0811f,1.4700f}; static float hpr[3] = {160.0000f,0.0f,0.0000f}; dsSetViewpoint (xyz,hpr); printf ("Press 'e' to start/stop occasional error.\n"); } // called when a key pressed static void command (int cmd) { } // collision callback static void nearCallback (void *data, dGeomID o1, dGeomID o2) { int i,n; // don't collide boxes with each other if ((o1 == box[0]) && (o2 == box[1])) return; if ((o1 == box[1]) && (o2 == box[0])) return; const int N = 10; dContact contact[N]; n = dCollide (o1,o2,N,&contact[0].geom,sizeof(dContact)); if (n > 0) { for (i=0; i >Costs in what way? It does say memory usage and how much of >the cpu per frame the physics system takes. What other costs >are there? I think Russ mean cost for licensing it for use in games. >Yes, seems like the objects sleep VERY quickly. After just a few >tries I manage to get it to sleep in a physicly impossible position. >(If the simulation had run for just a few ticks more the boxes >would have fallen over) but they quickly froze in place. Indeed, but in a game, if that means an a few extra stacks for the game designer, I think that's a fair trade. >Also is it just me or do the chain and hinge behave strangly? >If you continue to force it upwards it starts to wobble. Like >a snake or something. Maybe it's just me and thats how it >should behave. Both of the long chains do seem a bit elastic when you lift them up for a while. Also the hinge chains looks abit rubbery when it fall onto itself. Perhaps that's an artifact of this 'iterative' method. Al > >/Joakim E. - www.planestate.net >_______________________________________________ >ODE mailing list >ODE at q12.org >http://q12.org/mailman/listinfo/ode _________________________________________________________________ Surf the Web without missing calls! Get MSN Broadband. http://resourcecenter.msn.com/access/plans/freeactivation.asp From coding at natew.com Thu Oct 31 20:42:02 2002 From: coding at natew.com (Nate W) Date: Thu Oct 31 20:42:02 2002 Subject: [ODE] Interesting thing... Message-ID: "MelBotWars is a real-time dynamics competition involving autonomous virtual robots that fight each other using rigidBody dynamics in Maya. The contestants get to build their own robots and add intelligence to them. They need to learn many things in order to make sure their robot survives. You get to learn all about physics and the rigidBody dynamics in Maya and have a lot of fun doing it!" http://www.melbotwars.com/index_lo.html -- Nate Waddoups Redmond WA USA http://www.natew.com From anselm at hook.org Thu Oct 31 21:09:01 2002 From: anselm at hook.org (Anselm Hook) Date: Thu Oct 31 21:09:01 2002 Subject: [ODE] msvc dlls? In-Reply-To: Message-ID: Just a little note, I updated my c# code to link against the latest ode and I noticed something missing in the dll support. Using msvc 7.0 I think that I have to have __dllexport... defined - but none of the methods in objects.h have SHAREDLIBEXPORT as a prefix. I suppose this isn't a problem under cygwin (I haven't checked) but it is maybe something missing in the latest ode lib. But I am a bit baffled about how I did it last time - I don't think I was using cygwin... maybe these define prefixes were removed? Anyway... Here's my copy - maybe it can be merged back in - or somebody can point out to me a better way to force export of all methods in msdev? http://p2pmap.org/cgi-bin/cvsweb.cgi/p2pmap/src/ode/include/ode/objects.h?rev=1.3&content-type=text/x-cvsweb-markup Also I noticed that there's an include of alloca.h - msdev doesn't have that. And I do actually add one new method to the ode library - a self handling collision callback so that I don't have to do callbacks in c#. Of course this can't really be generalized beyond specific users needs (such as mine) because there's no good concept of material property intersections. Otherwise I was able to pretty trivially build an ode.dll under msdev... - a From russ at q12.org Thu Oct 31 23:06:02 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 23:06:02 2002 Subject: [ODE] slider trouble In-Reply-To: References: Message-ID: <20021031221053.291c8cac.russ@q12.org> > I've noticed that when I connect two boxes with a slider, and set > stops on the slider so it can only move between +1 and -1, the > box-slider-box system spins off into infinity if I toss it into the > air. Without the limits, the system behaves just fine. this one took a while to figure out, but it's now fixed (joint.cpp updated in CVS, with a long comment explaining the problem). the problem was that the constraint forces being applied to a powered or limited slider joint resulted in a torque couple if the body centers of mass did not line up along the slider axis (as they do in all my slider tests!). that caused the joined bodies to build up angular velocity. slider joints between objects that weren't spinning freely (e.g. sitting on the ground) would not have been affected much by this problem. nate, can you verify the fix? russ. -- Russell Smith http://www.q12.org From russ at q12.org Thu Oct 31 23:49:01 2002 From: russ at q12.org (Russ Smith) Date: Thu Oct 31 23:49:01 2002 Subject: [ODE] slider trouble In-Reply-To: <20021031221053.291c8cac.russ@q12.org> References: <20021031221053.291c8cac.russ@q12.org> Message-ID: <20021031225314.6ad768b2.russ@q12.org> > this one took a while to figure out, but it's now fixed (joint.cpp > updated in CVS, with a long comment explaining the problem). oops ... got some signs incorrect ... checked in a new joint.cpp. -- Russell Smith http://www.q12.org