I noticed you can set linear and angular damping, and friction and restitution. What surprises me is that there is nothing in the manual about them. I am not even sure I know what all of these do. If I google linear damping I'm not getting much wiser.
Can anyone explain what these things exactly do, what values are high/low? Or if you know a general source of information in which these concepts are explained in more detail, you could please point me to them, thanks a lot!
damping, friction and restitution
Re: damping, friction and restitution
55 people read this post, but no one could explain what they mean? Does this mean this is too advanced for most people, or is my question just too stupid ?
Re: damping, friction and restitution
In bullet at least, linear damping affects how the body moves through the world in any given direction. Having linear damping at zero (the default) means objects will keep moving until friction slows them down. At higher values, they would slow down even if they don't touch anything. Angular damping is similar, but applies to angular motion (ie. rotation).
Friction is essentially damping, but it only applies when two bodies are touching instead of all the time like with linear and angular damping. I am not sure how different values on two different bodies interact.
Restitution is like 'bounciness'. Higher restitution makes a body bounce more, no restitution gives no added bouncing.
You could try playing with the values in the BasicDemo in the bullet source release, by setting members of 'rbInfo' around line 176 (of the cpp file) and see for yourself.
Friction is essentially damping, but it only applies when two bodies are touching instead of all the time like with linear and angular damping. I am not sure how different values on two different bodies interact.
Restitution is like 'bounciness'. Higher restitution makes a body bounce more, no restitution gives no added bouncing.
You could try playing with the values in the BasicDemo in the bullet source release, by setting members of 'rbInfo' around line 176 (of the cpp file) and see for yourself.
Re: damping, friction and restitution
Thanks you, that is helpful. I did plan to play with those value, but it is hard to play with them if you're not sure what you're looking for
Re: damping, friction and restitution
Finally found a post where someone answered, at least partially, what I've been trying to figure out for the past year. I still don't get how bullet handles friction though. You can set a "friction" value for each object in bullet - I assume this allows bullet to calculate it's coefficient of friction when coming in contact with another object. But what does this "friction" value mean, physically? How does bullet calculate static and dynamic friction coefficients between two objects? I really hope someone on the planet has some insight on this...
Re: damping, friction and restitution
I can remember reading about this somewhere, but I don't remember where, so I can't point you to the source, but I believe it was multiplied.
So friction = fc1 * fc2;, where fc1 = friction coeficient of object1 and fc2 = friction coeficient2.
In some engines you can use different methods of combining the coeficients.. like avarage, multiply, etc. etc.
However, how the final friction value is exactly used in bullet, I have no clue. it probably involves (1- friction), so slow down speeds, but it should also depends on how much force is currently pressing the objects together.
But indeed, it would be nice if this was explained somewhere (at least somewhere easy to find).. guess now you'd have to look into the code to find out?
So friction = fc1 * fc2;, where fc1 = friction coeficient of object1 and fc2 = friction coeficient2.
In some engines you can use different methods of combining the coeficients.. like avarage, multiply, etc. etc.
However, how the final friction value is exactly used in bullet, I have no clue. it probably involves (1- friction), so slow down speeds, but it should also depends on how much force is currently pressing the objects together.
But indeed, it would be nice if this was explained somewhere (at least somewhere easy to find).. guess now you'd have to look into the code to find out?