Jump to content

State Of The Ode Code


Guest xionmark

Recommended Posts

Guest xionmark

Greetings all,

What is the current state of the ODE project? I've forgotten where the code resides and am not sure if I have the latest.

Are there plans to put this on sourceforge too?

--Mark

Link to comment
Share on other sites

Greetings all,

What is the current state of the ODE project?  I've forgotten where the code resides and am not sure if I have the latest.

Are there plans to put this on sourceforge too?

--Mark

20376[/snapback]

Well, last I touched it I can get it to compile but it crashes when it gets executed :( - and I have not been able to track down the bug yet (time and skills limit me). It stopped compiling after a while because the HDK changed subtely and IIRC, the RBD_DynamicState class was removed and the data was directly under SIM_Data?

Anyhow, I do think that the entire approach should be different to the test route I took there. Now that we have Colliders seperate and new ideas written into that forum post by Mark Tucker, perhaps that old code is totally redundant in the light of all this new development.

Perhaps if we build an new framework for an ODE DOP then the same framework could be used to write a Novodex DOP?

Link to comment
Share on other sites

I downloaded the Novodex SDK, but haven't realy looked through the documentation yet. But unless the two APIs (Novodex and ODE) are very similar, I would think that trying to build a layer between DOPs and ODE/Novodex would be overkill. I guess my way of looking at it is that DOPs is supposed to be that layer already.

If the ODE plugin source code was available on the sourceforge site through CVS I might be able to help figure out why it's crashing...

Oh, and RBD_DynamicState was not removed, just renamed to RBD_State.

Mark

Link to comment
Share on other sites

Well, I'm not getting any crashes. There is one important bug: on line 201, you call SIM_DATA_CREATE, and pass "0" as the last parameter. Instead you should pass SIM_DATA_RETURN_EXISTING so that if there is already RBD_State data attached to the object you will get back a pointer to the existing data instead of creating new data on top of the old (and thus throwing out the state from the last timestep).

Also, the getMass function is still a valid member function of RBD_State, so you can re-instate the code that does "m.mass = state->getMass()".

Referring to the comments about getPosition and getOrientation not being in the header files, if you look at SIM_Position.h (of which RBD_State is a subclass), you'll see a bunch of lines like:

GETSET_DATA_FUNCS_V3(SIM_NAME_POSITION, Position);

This macro (defined in SIM_OptionsUser.h) creates two functions, getPosition and setPosition which store a UT_Vector3 (the V3 part of the macro) under the name SIM_NAME_POSITION (which is defined as "Position" in SIM_Names.h). So that's how those functions work.

As a final point, you don't seem to be destroying any of the ODE data you create (caling dWorldDestroy, for example).

Can you put the SIM_SolverODE.[Ch] files under version control on sourceforge? Then I could have made these edits myself rather than telling you what to do. You don't need to version control the whole ODE library, just the two important files.

Anyway, it's very cool to see this in action. My only suggestion for the crashing would be that you make sure you are building the ODE library and the SIM_SolverODE with the same libraries (debug or non-debug libc, etc). I really don't see anything that would cause it to crash, and as I said it doesn't crash on me. Are you on Windows or Linux? I am more likely to be able to help if you're on Windows because that's what I know best.

Let me know if there's anything I can do to help,

Mark

Link to comment
Share on other sites

Great, thanks for all the info Mark. I figured out the GETSET functions after a while and some false matches on the PHYS_ classes from the old RBD system.

I have no idea how to place anything under CVS control on sourceforge - do you know how? Not to sound lazy, but if so do you just want to do it? I can make "mtucker" an Admin on the project if you do.

Thanks,

Jason

Link to comment
Share on other sites

Guest xionmark
I have no idea how to place anything under CVS control on sourceforge - do you know how? Not to sound lazy, but if so do you just want to do it? I can make "mtucker" an Admin on the project if you do.

20464[/snapback]

Hi Jason,

I might be able to help with the CVS. This afternoon I finally found a few minutes to read through the rest of the sourceforge docs to properly release packages, so I should be able to get all of my work up there over the next few days.

Mark, if you're too busy too handle the CVS stuff, I can help out, I use CVS all the time and it can't be all too different then most CVS configs.

--Mark

Link to comment
Share on other sites

I would be ahppy to add the files. My sourceforge username is wmarktucker. Both mtucker and marktucker were already taken. And from the looks of it you've made someone named Matt Tucker a (probably very surprised) developer on the houdini plugins project :)

I've never used sourceforge as a developer, but I've used CVS, and from the looks of it, it will be much the same. I'll put up a post explaining the process if I get it figured out. Otherwise I'll let Mark S. have a go at it.

Mark

Link to comment
Share on other sites

I would be ahppy to add the files. My sourceforge username is wmarktucker.  Both mtucker and marktucker were already taken. And from the looks of it you've made someone named Matt Tucker a (probably very surprised) developer on the houdini plugins project :)

20467[/snapback]

Ha ha! Perfect!

Congratulations Mark, you're now an admin! (Instead of some other guy) ;)

Link to comment
Share on other sites

Cool, I feel so important :)

Below is a list of what I did. I got al this information from http://sourceforge.net/docman/display_doc....4033&group_id=1 and http://sourceforge.net/cvs/?group_id=140048. Oh, and for all the commands listed below, I had the environemnt variable "CVS_RSH" set to "ssh". And you'll obviously have to replace "wmarktucker" withyour sourceforge user name.

1. Created a new module within the odforceplugins project called "dops", which contains a directory called SIM_SolverODE with the SIM_SolverODE source code in it. This was done by creating the directory structure I wanted under the "dops" module, and doing:

cvs -z3 -d:ext:wmarktucker@cvs.sourceforge.net:/cvsroot/odforceplugins import -m "Initial import of ODE Solver Plugin." dops vendor start

2. Once this new modeul was created, I needed to check out a local copy with the command:

cvs -z3 -d:ext:wmarktucker@cvs.sourceforge.net:/cvsroot/odforceplugins co -P dops

3. I then had a local editable copy of the dops module. So I made some changes to the SIM_SolverODE.C file. When I was ready to commit them I did:

cvs commit -m "A message describing my commit."

Step 1 doesn't need to be done again by anyone, unless they want to create a new module (i.e. a new collection of non-dops plugins). Steps 2 you only need to do once, to get a local copy of the baseline. And from then on it's just a lot of step 3 (and other standard cvs commands like cvs update to update your baseline from commits others have made and cvs diff to see what you've changed, and cvs add to add new files or directories).

Apologies to those of you already familiar with CVS for the excrutiating detail. I figured it wouldn't hurt to be explicit in case there is anyone not comfortable with it.

Mark

Link to comment
Share on other sites

Hm. Looking ba now I guess the module name DOPs wasn't such a great choice... I probably should have done something more generic like "plugins", and created a DOPs directory under there in case anyone wanted to put up the source for chopls or the warp sop... Well, you can always ignore the dops module name and put all the plugins there. Or you can create a new uber-module called plugins, move the ODE solver there, and delete the dops module. Anyway, at least this might get the ball rolling :)

Mark

Link to comment
Share on other sites

Guest xionmark
Apologies to those of you already familiar with CVS for the excrutiating detail. I figured it wouldn't hurt to be explicit in case there is anyone not comfortable with it.

20486[/snapback]

Details are good!

Thanks Mark!

--Mark

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...