GangstaDotNet and ODE

Kodachi_Garou

27-06-2006 17:13:32

I've been travelling the long road towards integrating ODE with Ogre using Gangsta in .NET.

So far I've been able to, in bottom-up order:

- Compile ODE 0.6 release dll
- Compile GangstaWrapper in order to obtain Gangsta.dll and corresponding ODE dll
- Compile GaCallbackInterface
- Compile GangstaBindings
- Compile GangstaDotNet

After such a strenuous road, everything crashes after Ogre config window with some PInvoke object reference not set to instance exceptions.....

Has anyone been able to run the Gangsta Pyramid demos in .NET? It really seems that the major problem with Ogre functionalities is precisely getting them to run. Afterwards they work like a charm...

Kodachi_Garou

27-06-2006 17:36:27

Trying to tirelessly debug the thing...

Everything crashes when instantiating a new Manager()

I've been swamping myself through the dependencies and post-build events and I've been wondering... what exactly are the dlls needed to run the GangstaDotNet demos?

Do you need some of the stranger libs like libltdl3.dll? Don't know exactly how to go through this...

Thanks,

dylan

03-07-2006 12:03:02

Hi Kodachi_Garou,

I had the same thing with ODE through gangsta, it is a long process but well worth it.

My feeling is that Gangsta does not yet support 0.6, as it has just been released. Try and build ODE 0.5 then it should work, it did for me. I expect that Gangsta will be updated shortly against 0.6 ?

You can also try and loading the newton driver instead.

good luck
dylan

dylan

04-07-2006 19:24:11

I have made a small change to the GanstaWrapper to get it to work against ODE 0.6, nameley in the PhysicsDriver_ODE source.

The symptom is that every thing compiles ok against ODE 0.6 but the application crashes with an assertion on a line of code in the ODE library itself.

The cause of this is there probably must have been a change in the dAreConnectedExcluding function to require that both body parameters are not null. Gangsta calls this function in the World_ODE::calculateCollisions function and somtimes the body of a colliding Geom is null!.

I change the following on line 200 of gaworld_ode.cpp from



if((b1 || b2) && should_collide && dAreConnectedExcluding(b1,b2,dJointTypeContact))

to

if((b1 || b2) && should_collide && ((b1 && b2) && dAreConnectedExcluding(b1,b2,dJointTypeContact)))

Every thing seems to work but I stand under correction from the Gansta maintainer himself. I will try and create a patch file on the gansta site for this although never done a patch before.

Warm regards
Dylan

Rob Loach

06-07-2006 18:06:34

If you need a P/Invoke library to ODE, use Tao.Ode. It's at 0.5 right now as there seems to be a bug in 0.6.

dylan

10-07-2006 22:02:52

Hey Rob,

I remember you from ODE.NET, I was using it and Axiom. I built a beutiful prototype for a product using them and learned enough to get the ogre side working! Hope you not bummed about me moving over from Axiom to OgreDotNet and Ogre, I think you guys are doing an awsome job but Ogre is very mature which is what I need right now.

By the way I have had no problems with the Ode 0.6 through gansta, what is the bug at the moment on the ODE side? I am using basic shapes and joints so I might not have hit it yet.
Warm regards
Dylan