Jump to content
  • Advertisement
Sign in to follow this  
adriansnetlis

BATMA - tire physics model [Issues]

This topic is 842 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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

Edited by adriansnetlis

Share this post


Link to post
Share on other sites
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:)

Edited by adriansnetlis

Share this post


Link to post
Share on other sites

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:) 

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

[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?

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!