jME Physics System Roadmap

Hey everyone,



I’ve done some talking with DP about this, and we would just LOVE to see more people join up on this project - think of what we could have accomplished already with just one more on the team!



However, this would require you people to know of what we have in plan :slight_smile:



v.04

  • splitted PhysicsObject (done)
  • joints (done)
  • basic vehicle support (done)
  • compounded objects (so close EDIT: done)



    v.05
  • basic particle effects
  • basic ragdoll support
  • cylinders.



    v.06
  • full vehicle support
  • full ragdoll support
  • full effects support



    For ragdolls, this is what we have in mind so far: a basic Skeleton class that just contains an array of Joints. Derived classes will define which joints to use and what their properties are gonna be like. Everything placed in the com.jmex.physics.ragdoll package.



    The particle effects are going to be placed in com.jmex.physics.effects.particle. They are going to be like the ones shown by the meqon physics engine (http://www.meqon.com). ATM there’s only one other effect that we have planned for: Explosion, but I’m sure that we will think of many more.



    As we move on with the releases, we will always keep performance in the back of our minds, and trying to improve that part wherever possible.



    So, any of you want to take on the responsibility for any of these? It’s not like we’re gonna blast your head off if you fail ;). It would just be nice to know that someone is working on it, so that the others can concentrate on other parts.



    Have we missed something you would like to see? This is also the correct thread to post your own suggestions on what you feel should be included. Discussions wanted!

I think it’d be cool if you could do something like


DynamicPhysicsObject wheeee = new DynamicPhysicsObject(ParticleManager);



and then it would automatically handle creating the objects for each of your particles and destroying them when the particle died. I can already imagine the jet blast from a ship or something hitting a wall and sending particles flying all over. That would be really cool.

Not sure if it's feasible though considering how many objects that would be. Might bring a system to a crawl heh.

shochu, you think small!



Think big! Thing a jet of steam going upwards on which a ball is hovering realistically!



Anyway, I have two implementations for this, the first is what you mentioned, dynamic physical objects all over the place (expensive, but realistic).



The second is creating a Rays that are in the direction of the movement of the particle and have a length that is proportional to the distance the particle has covered in the last update…



Both implementations need a change in the particle system and im going to be proposing those changes soon to renanse…



About ragdolls…Like per said, a Skeleton class which just adds/removes joints. Then accessory classes (like Human, Dog, deer, chimpanzee…5 legged alien!) would create those joints and add them to skeleton class. As far as I can see it, its extendable and is probably the best way to do it for an API. This is for v0.5.



For 0.6, i would like to be able (as a user ofcourse) to set the number of bones in the right arm of a human (extendability of each accessory class), be able to add a tail/pony tail or whatever…



Also per, i forgot to tell you about Cloth! That shouldn’t be too hard to implement too…



DP

"DarkProphet" wrote:
Also per, i forgot to tell you about Cloth! That shouldn't be too hard to implement too....

Sould be awesome :D
You could use the renanse's cloth demo for a starting point...

Chman

well, i was thinking more of a couple of ball joints to some boxes…the more boxes there are, the better the cloth!



So again, not very hard at all…



Renanse’s is very well for like curtains and stuff, but when you want a cape on a character and that cape is pretty long and will interact witht the world, its probably easier to do it via the physics system…but thats just my opinion…



but first, lets get 0.4 out!



DP

The second is creating a Rays that are in the direction of the movement of the particle and have a length that is proportional to the distance the particle has covered in the last update...


So you'd be doing collision detection with the rays? Would you group particles with similar movement paths into the same ray?

No, The answer for this is two fold:



a) Each ray needs a starting position, and it would be not feasible to average the distance between similar particles and use that…(ie. it wont look good!)



b) Each ray only adds a little tiny force onto the objects, so approximating into one ray is not so good as the forces that are applied will be little and thus will not sustain a ball in the air for example. Imagine a Ball with sticks digging into it…



However, with this “Ray” approach, the particle system will only be able to apply forces onto other objects, not into itself. So in your thrusters example, the particles wont actually reflect off the wall, they would just go straight through. But if that wall was dynamic, the wall would move backwards…



So its really a compromise, i mean I could add a force manually onto the particle which is the same force the ray has exerted onto that object…but we’l have to wait and see as this is more complicated than it sounds…



DP

Heh, I don’t really mind if they go reinvent the wheel. :wink: That’s how we got radial tires.

hehe, i will try to incoorperate your cloth in there renanse, but i can’t promise anything as it probably doesn’t interface well with physics system…



Or should i say the physics system doesn’t interface well with Cloth :wink:



Anyway, its simple enought to do, we’l see what happens…



DP

I’m thinking, are you people happy with the documentation as it is (javadoc, examples)? Or do you want to see guides and stuff, and if so, what would they cover?

So far the javadocs and examples have been plenty since the PhysicsSystem is still relatively compact.





In the future if it grows beyond a certain size then maybe some guides will be necessary.

I think for the moment it’s better to concentrate on implementing it up to 0.6 at least and think over documentation as demand emerges.

For now the source and javadoc should do.

Ok, good…



BTW: I just put up cylinders for v.05.

I just thought of a way to implement water/jelly in physics! And theorehtically, it should be fast too.



Lets add this for v0.8



DP

cool, what were your ideas about doing that? sounds interesting

please see this post:



http://jmonkeyengine.com/jmeforum/viewtopic.php?t=1576

Hi all,

Ragdolls are taking longer than expected for the v0.5 release. Im trying to keep with the "jme-way" of making it easy for the user to make them, and im emphasising now the use of physics with models and not just with pretty boxes and spheres made in jme. So the ragdoll stuff will be ready to be loaded from a model and no need to actually create anything yourself, which is always good :slight_smile:



Im trying my best to keep with the road map that me and per have agreed on, but as with more and more people using it, and me using it for my own project, other things get in the way (e.g. Thread Safety stuff) and those take priority. But be assured, by the end of august, ragdolls, a format to save the physics's state and threads will be very well underway if not finished. Also, improved vehicle support and possibly redoing that as in my own game, i found it very hard to work with.



Hopefully, by the end of august, jmephysics will be a professional suite to develop with. Thats the intention anyway…



Regards,

DP

I feel bad not having the time to do anything myself :frowning: – will see if I'll get some time after the summer (I'll probably go a 3-year gamedev education here in Sweden if I won't find a job in the game industry until then).



I try to read the forum regularily so I won't be totally lost the day I come back :).



I'm happy to see you and irrisor making progress though!

type faster than I read :-o  ://

  1. what's the current roadmap for jme-physics?


  2. is the opcode addition sphere/box/any ode-primitive->trianglemesh/soup enabled in jme-physics (or has that been incorporated into ode allready?)