The online racing simulator
My Own - Deformable Tire Simulation
1
(31 posts, started )
My Own - Deformable Tire Simulation
Back in January 2009, I started working on a little Deformable Tire in my spare time. I quickly ran out of spare time to make enough money for my adventure. Since I've been back I've spent a few more weeks programming this, and had some optimizations that helped a lot.

This is not to be compared to the LFS Tire Physics, new OR old.

My tire is deforming from a contact patch on a sine wave. Meaning, I set up a value that make the deformation look 'right'. Of course this is a little exaggerated to show deformations. But remember that it is not placed on a car that is turning.

TireSimV2 on Youtube HD
TireSimV2 on Youtube Low

In the video I explain a few of the techniques that I am using, a Point Mass System in laymen terms is a collection of points connected by springs, in this case, to hold the structure together. It took some time to come up with my old structure: Old Youtube Video: January 8th. While I was on the trail I thought of, and drew up what I felt would be a more stable tire, and have a lot better performance from removing several springs. I implemented that when I got back, and also added a rim, texture, lighting and a few other graphical improvements so I can use this demonstration to find another programming job - with any luck.

I figured as a racing community it might be nice to hear positive input.

Remember: This tire is not simulating driving forces or anything besides the contact patch on a sine wave, which means it is very simplified. It is not competing with LFS tires in anyway, and that is not the reason of my post. I just hope a few people enjoy and leave constructive comments.

Thanks for checking it out!
I think that's pretty damn impressive! Loving the way the tyre seems to take a moment to recover it's shape, and deforms laterally as well.

Any chance of a 'to-do' list for upcoming updates? Are you, for instance, planning on making the tyre transmit a torque and/or a lateral force, as in moving a car?
#3 - amp88
Looks very interesting. Like Tristan I'm sort of wondering what your end goal is with this? Are you trying to develop a new simulator or just interested in modelling some tyres and having fun with that?
Hmm, I don't really know. This started as a project just to learn about simulating tire deformation, and seeing what I could come up with. The tire is created procedurally, as is the point mass system holding it together; and it handles tire sizes in real measurements. The graphical improvements came because I wanted to use this for a demonstration to try getting my next job... Now, of course I have things that I wanna add to this, but at the same time I am not making any sort of promises, including to myself. Some basic ideas of what I would like to implement:

Dropping the tire from a raised height to get the PointMassSystem to bounce the tire/rim back up, I think this would be amazing.

A small 'test track', of a highly detailed mesh, that the tire rolls along and deforms to very small bumps.

Add accelerating/braking forces to the spinning of the tire, which would add longitudinal deformation. (This deformation is already proven possible by changing the axis that sine wave affects).

In theory, the spring system should be stable enough to handle lateral deformation, longitudinal deformation and even twisting of the contact patch. The twisting has not been tested, and lateral and longitudinal deformation together has not been tested. -Though the only twisting that can not occur is the tread. It is currently assumed that the tread is always parallel with the rim, this is what gave a massive speed boost, cutting the springs down by more than half and adding stability. I think with proper placement

--------

There is no simulation in mind, though that would be a dream! I already know I don't have the time or know-how to do that, and would obviously need a good team of people to even attempt it. Maybe in another 10 years? Ha! But really, this was just a side project, that turned into a tool to get a job.

Glad you guys like it. Sorry for my (always) wordy response.
Quote from blackbird04217 :There is no simulation in mind, though that would be a dream! I already know I don't have the time or know-how to do that, and would obviously need a good team of people to even attempt it. Maybe in another 10 years? Ha! But really, this was just a side project, that turned into a tool to get a job.

It's taken a couple guys (and some help here and there from others) ~8 years to get LFS to where it is today. Get cracking.
That's great and all, but how do I survive if I don't have any money - no job, and this tire deformation certainly won't make me money! Do you see tree's, and even some form of decent graphics in the 'environment'? I didn't but I could be blind. No but honestly, funding is my restriction. Probably the only one. I just took 6 months off to complete a life dream, I can't just do them back to back, although it would be amazing - it just doesn't work that way

Maybe, someday, when I have enough money to fund myself and some teammates and feel a bit more confident in the ability to make a track environment come to life.
Anytime you want, PM for details
Really impressive

This is exactly the kind of thing I'm trying to learn at the moment, with the intention of getting a job in the games industry one I've finished my degree.
Two further questions (thanks for previous answers)

1. Would it be possible to show the sine wave contact surface as the ground plane?

2. Can your system handle multiple contact points - i.e. say the ground and the edge of a kerb, or can you only handle a single point?
Quote from Crashgate3 :Really impressive

This is exactly the kind of thing I'm trying to learn at the moment, with the intention of getting a job in the games industry one I've finished my degree.

That is great, and the advice I would give you is practice, study, practice, and just keep working on your own side projects. Self-motivation is a huge advantage here. About the jobs in the industry, heh that seems to be touch and go, and right now I am having some difficulties with that part, even with a project under my belt. Though in all seriousness, its a lot about who you know, and being in the right place at the right time - as it is with almost anything.

Quote from tristancliffe :
1. Would it be possible to show the sine wave contact surface as the ground plane?

Hmm, I don't quite know what you mean, and if I do get what you mean I don't quite get the purpose. As the contact patch shows the movement here already.

Quote :
2. Can your system handle multiple contact points - i.e. say the ground and the edge of a kerb, or can you only handle a single point?

This is a very interesting idea, and in theory it certainly should be able to, assuming I wrote the collision detection to handle multiple points. Currently the ground collision is not even true collision as I simply check if a spot on the tire is below the ground, then it is automatically assumed that it is part of the contact patch and put back to ground level.

So, if I actually added a more advanced collision system, the tire should be able to handle it.
The first question was because I couldn't quite see the direction the sine wave was travelling in, and nor can I quite see the rate of reaction of the tyre without seeing what is causing the reaction. T'was just a though - from a non-programmer
I see you've come a long way with that tire, Tim. It's looking better than ever. Good job on the optimizations as well, I can tell it's much more stable now.

Quick question: can you make it more rigid or softer? Like if it was more or less inflated..
I guess that because you're forcing points of the tire to be at a certain place (above "ground") and not really compressing them against the ground, it seems... different, so it's hard to compare things. It's certainly fun to watch it going back to its normal shape though. :P

Happy job hunting.
Quote from de Souza :Quick question: can you make it more rigid or softer? Like if it was more or less inflated..

Just altering the resistance of the springs to compression should alter the 'inflation' of the tyre.
You could get the effect of an air-filled tyre by having the stiffness of all tyre sections proportional to any compression that a section is undergoing. This will have the effect of the tyre pressure increasing due to part of it being compressed, so as one section is compressed, the stiffness of all sections increases slightly. It would then be pretty easy to play with the coefficients that control this to simulate the effects of tyre heating on tyre pressure.
Wow, I hadn't quite thought of it that way - but yes that would be a much better way then my thought of changing all the spring strengths based on the air pressure. But that is an interesting idea, to change the springs dynamically based on the compression ratio of the springs... Will certainly think more on this.
Are there any books or online papers you can suggest for teaching myself how to model this kind of force-constrained mesh?
Let me dig up the one I wrote back when I first did this. I really need to write a second article on it. But It will certainly give you a good idea into the Point Mass System, and how it works . . . I will PM you when I find it.
Does your calculation simulate the stiffness of the sidewall of the tire? For example, could a sidewall be very resistant to lateral deformation, but not very resistant to upwards/downards deformation, or vice versa? Either way, awesome job so far!
The original spring structure that I made the tire from would have. However the current version uses only four springs attached from the rim to the center of the tread. This has an effect on the lateral force, but is also attached to the vertical force as well. So increasing the spring strength would make the sidewall stiffer but at the exact same time it would also make the tire more resistant to being pressed toward the rim. I have been trying to think of a way to re-add this ability without losing the performance I gained from the optimization.
Maybe you could add a second type of spring that can have different stiffnesses when acted on from a different direction, which you can place in certain specific locations that need it. If you use inheritence (i'm assuming your springs are distinct objects) you should be able to make it so the code to check the direction isn't executed unless a spring is this special kind.
I almost misread what you said to just having springs that can change the stiffness. But I see what you mean now, so that the spring acts differently to horizontal forces vs vertical forces. While this is completely possible, I think it is also a bit overkill for a simple effect. The easier way, using already existing spring code, is to attach springs in the proper direction, some based on the sidewall stiffness and others based on air pressure. Though, I will keep in mind what you have said, who knows, in the end it might be what is used.

The old spring system had so many springs it wasn't funny, for some reason I had believed that more springs would stabilize the tire. And it did, to a degree. But the new spring system has fewer springs, and close to the same appearance and behavior. I won't say that the cpu cycles spent on updating that old tire was outrageous, but the new one being less than 10% is a lot better. I am thinking about a way to add no more than 2 more springs to achieve all other desired effects. Even if I have to rearrange the 4 that I have now.

Which just gave me a great thought that I didn't think of before . . . :doh:
This is exactly what I love about coding - the fact that you *don't* have to make things perfect (as 'perfect' is impossible with the current hardware as it'd just involve way too much computation), just 'perfect enough', and finding clever ways to acheive it, and especially the 'Eureka!' moments you have when suddenly it all falls into place.
I like! Okay, just made a small update to the tire. I have completely changed the positions of the springs. They still effect the Center Line of the tread like they did in the video, except coming from completely different spots. Testing shows it to be almost identical, though I now have the ability to remove 2 springs if I want only lateral deflection. After running some tests with longitudinal deformation I don't know if it will be worth keeping. The visible difference is tiny.

However, the benefit of the four springs in the new position is complete control over sidewall stiffness vs the outward force from the rim to the tire. Which should mean, if ever used on a car, that tuning the deformation should be easier to make the sidewall look stiffer!

Thanks guys for the ideas, or at least for getting me to come up with the idea as I read your posts!
I was thinking about something else a little earlier, the effects of over/under inflation on tires. The way the center of the tread comes up is what I was trying to grasp. When the sidewalls deform, they bend. So, the part of the sidewall that is on the rim cannot move (not easily at least) because it's fixed to the wheel. This means that the sidewall must bend, as the tread cannot be stretched. As a result, the tread ends up being pushed together by the sidewall, causing it to bend upwards in the center. Also, when the you increase the vertical load on the tire, I think it would then result in similar deformation to lowering the pressure.
Right, though as a visual effect how notice-able is that when you really sit with a camera and look for it? I think you wouldn't notice the effect much at all really. I created limitations when I deleted many of the springs that used to 'hold' the tire together. One limitation is: Tread width is always the same, and is not bendable. Nor are the sidewalls bendable. The center of the tread is the only point that really can move, the edges of the tread just follow it.

Where you have a valid point it would be neat to see, I don't think the effect would be seen too well, just like the longitudinal deformation really isn't seen all that well. I was about to make a video showing that deformation, but even looking for it, and exaggerating the effect did not help. (Though I know it is there because when the effect was exaggerated enough it was noticeable and looked bad :schwitz

Thanks for the idea though!
1

My Own - Deformable Tire Simulation
(31 posts, started )
FGED GREDG RDFGDR GSFDG