BATMA - tire physics model [Issues]

Started by
6 comments, last by adriansnetlis 7 years, 10 months ago

So recently I started my work on the BATMA(Blender Advanced Tire Model Adris) which is softbody tire physics model based on spring/damping principle(F = kx+dvx). Here I am gone ask all my questions and list the problems. Hopefully you can help me to fix them.

0.0.4-a [problem 1] | Active

[video]https:

[/video]

As you can see, the integration seems to not to work fine. Maybe I am wrong, but it really seems to be like that. I hope that somebody can solve this

Advertisement

OK! Here are 2 of my simple question:

  • What is a good way to model a spring between 2 dynamic particles?
  • What's the best way to manually check for collisions between objects(assuming all - performance, stability and accuracy)?

I hope that someone can answer them:)

Here're some resources that might help:

1. http://box2d.org/files/GDC2011/GDC2011_Catto_Erin_Soft_Constraints.pdf

2. http://box2d.org/downloads/. Check Dirk's SAT and Contact Creation talks and Erin's talks on GJK. Try to implement them by yourself.

OK! Thanks! The contact part might be very important to me. I'll see if I can stabilise my springs using the semi-implicit Euler integration.

Hopefully I'll have something great to show soon:)

Uh... Not as easy as I thought. I am actually working in an opposite workflow.

I calculate the compression of the spring using the distance between the 2 points as current lengths and subtracting it from rest length. Than I use the compression to gain the force. After that I use the position difference between the points, normalize it and get the normal vector for the force. And than I apply the force. Dividing it by mass of the vertex gives acceleration. This is assigned to velocity(v += a*dt). Than the position is updated(pos += v*dt). This, however, doesn't work fine. It's the neptune case. However, what's shown there is that I actually need to know the new velocity before applying new compression? :huh: I can not know velocity without acceleration. Acceleration needs force. Force needs compression. I'm lost at this point - how can spring work in opposite direction?

There is one more problem(which Brian Beckman also describes in one of his videos, but in a different example). The tire is made out of a vertex network. Each of them acts on multiple other vertices. And in real life they does at the same time. However, computer does calculate it in an order. Although my system already calculates forces for every vertex and only than applies motion(this way the forces netting often matches up), it can still be interesting to find out how the system would change if I changed the order of vertex calculations. Maybe I'm false(in my case I could be), but possibly it does matter.

Maybe I should use some more advanced collisions rather than raycasts? Hm... That'd not change much. Possibly what would change much is if I used normalforce rather than setting position. It'd work more realisticly, but may have some frequency-releated problems. What do you say?

[video]https:

[/video]

So the 2 questions are:

How to calculate normalforce on vertex if I know how deep under ground the vertex is, know it's mass and velocity?

How would I actually implement semi-implicit Euler inside of force-based system? Can I actually use previous-frame compression for the springs? Wouldn't that kind of produce a lag in the physics?

Is it possible to implement the implicit Euler integration in game? It seems impossible, cause it has the problem loop where one value requires the other one for calculation. However, it may be the solution in this case.

This topic is closed to new replies.

Advertisement