TGE-ODE integration 2
by Kage · in Torque Game Engine · 03/31/2005 (12:58 pm) · 154 replies
This is the second part of the ODE-TGE integration. It's still a "work in progress", but I figured I can update the progress whenever major enhancements are made. Demo for this has been removed.
Enhancements/Corrections
-multiplayer option enabled.
-interior object collision is constructed using abstractpolys from vehiclecollision brushes
-corrected the exception problem in the 1st version
-corrected the sign mesh object geom/body labelling, which was causing erroneous behavior
Features (same as before but I'll outline it again)
-terrain collision (height map, default terrain file)
-trimesh collision (.dts files)
-box and sphere collision (.dts files)
-infinite plane collision (.dts file, see the blue strip in the mission)
-interior collision (.dif file)
-ode vehicle (.dts file)
-ragdoll (.dts file, but yet applied to player.cc)
Required Work
-more work on the interpolation
-tie in ragdoll to player.cc
-correct the player response to ode
-verify TGE's default collision notification and damage process
-verify sounds
Let me know what you think.
Contents of the .rar file
-ode.zip & common.zip (leave them as they are)
-dll files
-exe file
You only need to uncompress the .rar file to a folder to play the demo.
edit: added the .rar contents
Enhancements/Corrections
-multiplayer option enabled.
-interior object collision is constructed using abstractpolys from vehiclecollision brushes
-corrected the exception problem in the 1st version
-corrected the sign mesh object geom/body labelling, which was causing erroneous behavior
Features (same as before but I'll outline it again)
-terrain collision (height map, default terrain file)
-trimesh collision (.dts files)
-box and sphere collision (.dts files)
-infinite plane collision (.dts file, see the blue strip in the mission)
-interior collision (.dif file)
-ode vehicle (.dts file)
-ragdoll (.dts file, but yet applied to player.cc)
Required Work
-more work on the interpolation
-tie in ragdoll to player.cc
-correct the player response to ode
-verify TGE's default collision notification and damage process
-verify sounds
Let me know what you think.
Contents of the .rar file
-ode.zip & common.zip (leave them as they are)
-dll files
-exe file
You only need to uncompress the .rar file to a folder to play the demo.
edit: added the .rar contents
About the author
Professional gameplay programmer and have worked in the industry since 2004. Specialized in: animation system, player control, weapon system, AI, combat, camera, physics - ODE/Havok, optimization, and networking.
#62
@Jonathan - Cool, thanks:)
04/15/2005 (1:57 pm)
@Toby - This work is primarily on collision and physics and nothing on the graphics manipulation. It's a pretty cool idea though:)@Jonathan - Cool, thanks:)
#63
But I would concur with the others, getting it to work on all supported platforms (the main ones initially, Win, Linux and Mac) is essential.
Good luck, I look forward to handing you my money!
04/15/2005 (5:29 pm)
If you can make the ragdoll work as well as in Silent Storm, I'll be happy. I love the way it works in that game.But I would concur with the others, getting it to work on all supported platforms (the main ones initially, Win, Linux and Mac) is essential.
Good luck, I look forward to handing you my money!
#64
Nice, thanks:)
In addition, I'll be extending interior objects to process vehicle collision size up to 64K surfaces instead of 256. That should allow developers to create more complex race tracks w/o any problem.
edit:
Max surface size correction
More specifically,
-max vertices = 64K + 2
-max tri faces = 64K
-edges = n/a
04/17/2005 (11:21 am)
Mark,Nice, thanks:)
In addition, I'll be extending interior objects to process vehicle collision size up to 64K surfaces instead of 256. That should allow developers to create more complex race tracks w/o any problem.
edit:
Max surface size correction
More specifically,
-max vertices = 64K + 2
-max tri faces = 64K
-edges = n/a
#65
Will I be able to implement chain type objects? ie, hanging items like lights?
Cheers, Mark.
04/17/2005 (1:02 pm)
I take it the increased collision mesh size will solve the problem of vehicles 'sticking' on bits of terrain etc?Will I be able to implement chain type objects? ie, hanging items like lights?
Cheers, Mark.
#66
Also yes to hanging ODE object:)
04/17/2005 (1:32 pm)
Hmm, terrain collision is not the same as interior collision constructed from vehicle collision brushes, but yes, you won't see any 'sticking'.Also yes to hanging ODE object:)
#67
Really nice to see that youve moved on leaps and bounds, ive been really curious over the last 2 weeks (terrible weeks) as to what you had done or if you had implemented all the goodies which have been mentioned and it looks like your on fire mate.
Keep up the good work and roll on some form of release.
04/29/2005 (4:15 am)
Looking great Akio, Just got out of hospital here ( http://racing.edgegaming.com/forums/showthread.php?p=14083 ) page 3 some nasty pics so make sure your not eating and your sitting down.Really nice to see that youve moved on leaps and bounds, ive been really curious over the last 2 weeks (terrible weeks) as to what you had done or if you had implemented all the goodies which have been mentioned and it looks like your on fire mate.
Keep up the good work and roll on some form of release.
#68
Any new news on the ODE integration pack Akio?
05/05/2005 (4:55 pm)
Wow Archies you warned about the pics but I still wasnt prepared to see that. I'm wishing you a speedy recovery.Any new news on the ODE integration pack Akio?
#69
Looking forward to some ODE goodies :)
05/11/2005 (6:41 am)
Thx for the recovery wishes, feeling much better now with my wounds getting better, just aching bad at the moment.Looking forward to some ODE goodies :)
#70
05/20/2005 (6:40 pm)
@Akio - You've been quiet for a while... anything new with your ODE integration?
#72
Progress
I have completed adding ragdoll to player.cc and that's looking good. All exception problems are resolved. I've also implemented combining all vehicle collision brushes per interior dif-objects and performed tests to see how feasible, or rather, computationally expensive it is to run it in a client/server.
I knew it would take a heavy toll on the frame rate, but it had to be measure to see how much would be degraded. The ragdoll implementation works well placed inside the interior, but as I expected, any mesh objects such as vehicle or dynamic objects would degrade the performance to a point where the frame would become undesirable and the game play unplayable. How bad? Around 12 fps with one vehicle and a few dynamic mesh objects. Not a pretty sight.
Regression
The described frame rate problem occurs with the interior objects because the colliding objects are inside another object. OPCODE is efficient and fast in determining collisions using its AABB tree for objects approaching one another, however, computationally costly when a colliding object is enveloped within another object. I think all trimesh collision algorithm would behave the same. Solution is to optimize this problem.
I had to regress my testing at this point by duplicating my collision detection (CD) routine from ODE and porting it to TGE to see how well it would handle the collision and to check for performance loss. I suspected the performance would be better since the collisions are based on convex hull, which rarely envelops another object.
TGE enhanced collision demo
I have the starter.racing demo so you can see how well it works. The demo has no ODE integrated. It's just based on the TGE release-v1.3, uses TGE's rigid physics, and untouched interior DIF and tree DTS objects. What I did was port my own CD routine, modified a few existing source files, and added a new dynamic class.
What you'll see in the demo:
-all dynamic objects are colored RWG.
-beachball: uses sphere collision
-all others: convex collision (triangle-triangle col.)
Check out how good the TGE physics really is!
I didn't add the box or cylinder collision types yet, but I did have to add sphere and capsule mass inertia configurations in rigid.cc. The demo does not include any large interior buildings because I don't have one to share, but feel free to add your own. I would like to hear your results though.
Plan
I'm sure I'll get heat for this comment, but it would be nice to see this collision enhancement (or one like it) as part of the TGE code base instead of it becoming an add-on pack because the current rigid collision problem is a development showstopper for most of us. Well, it was for me anyway, and it's the only reason I started this integration project.
What happens to the ODE integration? It will be easier to integrate ODE because of what's proven with this demo. It means some rewrites, implementation, and testing will be required. But I'm not certain if people would still want it after this enhanced collision becomes freely available:)
05/23/2005 (6:12 am)
Here is what's going on.Progress
I have completed adding ragdoll to player.cc and that's looking good. All exception problems are resolved. I've also implemented combining all vehicle collision brushes per interior dif-objects and performed tests to see how feasible, or rather, computationally expensive it is to run it in a client/server.
I knew it would take a heavy toll on the frame rate, but it had to be measure to see how much would be degraded. The ragdoll implementation works well placed inside the interior, but as I expected, any mesh objects such as vehicle or dynamic objects would degrade the performance to a point where the frame would become undesirable and the game play unplayable. How bad? Around 12 fps with one vehicle and a few dynamic mesh objects. Not a pretty sight.
Regression
The described frame rate problem occurs with the interior objects because the colliding objects are inside another object. OPCODE is efficient and fast in determining collisions using its AABB tree for objects approaching one another, however, computationally costly when a colliding object is enveloped within another object. I think all trimesh collision algorithm would behave the same. Solution is to optimize this problem.
I had to regress my testing at this point by duplicating my collision detection (CD) routine from ODE and porting it to TGE to see how well it would handle the collision and to check for performance loss. I suspected the performance would be better since the collisions are based on convex hull, which rarely envelops another object.
TGE enhanced collision demo
I have the starter.racing demo so you can see how well it works. The demo has no ODE integrated. It's just based on the TGE release-v1.3, uses TGE's rigid physics, and untouched interior DIF and tree DTS objects. What I did was port my own CD routine, modified a few existing source files, and added a new dynamic class.
What you'll see in the demo:
-all dynamic objects are colored RWG.
-beachball: uses sphere collision
-all others: convex collision (triangle-triangle col.)
Check out how good the TGE physics really is!
I didn't add the box or cylinder collision types yet, but I did have to add sphere and capsule mass inertia configurations in rigid.cc. The demo does not include any large interior buildings because I don't have one to share, but feel free to add your own. I would like to hear your results though.
Plan
I'm sure I'll get heat for this comment, but it would be nice to see this collision enhancement (or one like it) as part of the TGE code base instead of it becoming an add-on pack because the current rigid collision problem is a development showstopper for most of us. Well, it was for me anyway, and it's the only reason I started this integration project.
What happens to the ODE integration? It will be easier to integrate ODE because of what's proven with this demo. It means some rewrites, implementation, and testing will be required. But I'm not certain if people would still want it after this enhanced collision becomes freely available:)
#73
Edit: That's a damn sweet demo. Great enhancement to the TGE collision. What's it like inside of interiors?
05/23/2005 (6:17 am)
I fixed Akio's link for ya'll: www.inoculousgames.com/ggposts/tgeenhancedcol.rarEdit: That's a damn sweet demo. Great enhancement to the TGE collision. What's it like inside of interiors?
#74
I would like to get some feedback on people testing with their own interior buildings.
05/23/2005 (8:51 am)
I did some some preliminary testing with what I had but I didn't think it was big enough to do an accurate testing. I would like to get some feedback on people testing with their own interior buildings.
#75
05/23/2005 (2:53 pm)
Thanks Akio... I want to take a look at this!
#76
05/23/2005 (2:54 pm)
...you're new CD routine and demo I mean.
#77
05/24/2005 (3:43 am)
.
#78
05/24/2005 (7:42 am)
@Thc-03, Dynamic collisions are based on dts collisions. As matter of fact, how TGE sets up collision objects hasn't changed at all. I minized the changes in this demo to prove that with everything else in tact and with just a minor changes in CD, dynamic objects can be placed in the game w/o problems.
#79
05/25/2005 (9:03 am)
.
#80
05/25/2005 (10:41 am)
I want to know what GG thinks of this....
Torque 3D Owner Jon Fernback
We'll definitely be watching for an ODE add-on to TGE, so keep up the good work!