I am attempting to make a small submarine simulator, and have a few questions. My sub model has a main body, 2 landing skids, and two engines that come off either side. I want to generate an odegeom for this model but from what I read generating it using trimesh is unreliable and slow. My thought was using a cylinder for the body rectangles for the skids and cylinders for the engines. My first question is whether or not this is the best method for doing this? The second is if this is a good method do i use the setfixed joint command to connect them together? And last but not least how do you size your odebodies and geoms to your models it seems difficult with out being able to show ODE bodies or Geoms. Thanks for any ideas you guys can give me.
If you need some assistance with visualizing your ODE geoms, I wrote a small module that generates wireframe representations of the typical ODE collision solids. You can find it here.
As for trimeshes being unreliable and slow… They are unreliable in the fact that polygons are modeled in the ODE universe as infinitely thin solids, so there is a chance that something can slip past them. And slow in that any kind of polygon collision takes more time to resolve than using pure parametrically-defined surfaces such as spheres and capsules.
You don’t need to link the different geoms together using joints. Multiple ODE geoms can be assigned to the same body, creating a hierarchical definition.
When it comes to defining those geoms, my personal idea was to use dummies in my Blender file, set to export with a certain tag assigned to them. Upon model import, I was going to cycle over them, find their boundaries, and then create ODE geoms based upon that. This way I could visualize the geoms in Blender (exported using the special Chicken exporter flag of ForceEmpty, so no actual 3d mesh data was exported, only the bounds). Sorry, no code to show, as I never got that far.
Thanks for the quick and detailed reply, this seems like exactly what I needed. Now I’m off to try it, thanks again.