Search found 51 matches

by bram
Fri Nov 23, 2018 10:12 pm
Forum: General Bullet Physics Support and Feedback
Topic: Generating Contact Constraints.
Replies: 6
Views: 7609

Re: Generating Contact Constraints.

Thanks Erwin, Going with gContactProcessedCallback for now. I noticed that my gContactStartedCallback was never called though? So I used gContactProcessedCallback, which does get called. When setting m_appliedImpulseLaterial1 and m_appliedImpulseLateral2 to 0.0, I expected the tyre to slide friction...
by bram
Fri Nov 23, 2018 7:36 pm
Forum: General Bullet Physics Support and Feedback
Topic: Generating Contact Constraints.
Replies: 6
Views: 7609

Generating Contact Constraints.

I would like to have full control over how contact constraints are generated. This is, so that I can properly model tyre-road interaction. I want to vary friction dynamically, based on what is happening (how fast does tyre spin, e.g.) and have different friction coefficients for lateral and parallel...
by bram
Fri Nov 23, 2018 7:18 pm
Forum: General Bullet Physics Support and Feedback
Topic: Compound shape rigid body doesn't collide, obey gravity, ..
Replies: 3
Views: 3454

Re: Compound shape rigid body doesn't collide, obey gravity, ..

Are you sure you added the body to the world with addRigidBody() call?

The sequence is:

- create btCompoundShape
- create child shapes, and add them with addChildShape()
- create btRigidBody with the compound shape as its shape.
- add the rigid body to your world.
by bram
Thu Nov 22, 2018 10:28 pm
Forum: General Bullet Physics Support and Feedback
Topic: Different types of friction.
Replies: 7
Views: 10137

Re: Different types of friction.

Oops, no, I was wrong again. It is a direction after all, not a set of scalar values, as can be seen here: 98 virtual btVector3 getAnisotropicRollingFrictionDirection() const 99 { 100 btVector3 aniDir(0,0,0); 101 aniDir[getUpAxis()]=1; 102 return aniDir; 103 } Which takes me back to my original ques...
by bram
Wed Nov 21, 2018 8:53 pm
Forum: Applications, Games, Demos or Movies using Bullet
Topic: Procedural Destruction of convex shapes.
Replies: 4
Views: 48310

Re: Procedural Destruction of convex shapes.

Thanks Richard, Split screen severely limits size of audience. Most gaming is done single player, or else online multi player. I have to think how the destruction physics can be properly utilized in a strategy game. It's quite hard to make NPCs deal with changing environments. Latest video: https://...
by bram
Wed Nov 21, 2018 8:22 pm
Forum: General Bullet Physics Support and Feedback
Topic: Different types of friction.
Replies: 7
Views: 10137

Re: Different types of friction.

bram wrote: Wed Nov 21, 2018 8:09 pm But Bullet's API seems to take a vector (for direction) and that's it?
Never mind, I just figured out that it is not a direction vector.
It is three different multiplier values, one for each axis.
by bram
Wed Nov 21, 2018 8:09 pm
Forum: General Bullet Physics Support and Feedback
Topic: Different types of friction.
Replies: 7
Views: 10137

Re: Different types of friction.

Thanks, I found solver mode SOLVER_DISABLE_IMPLICIT_CONE_FRICTION. But the anisotropic API confuses me. I expect it to take 2 perpendicular directions, and two scalar values? One friction value for direction1, another friction value for direction 2? (That's how ODE does it.) But Bullet's API seems t...
by bram
Wed Nov 21, 2018 6:35 pm
Forum: General Bullet Physics Support and Feedback
Topic: Different types of friction.
Replies: 7
Views: 10137

Different types of friction.

My app is coming along nicely, will post video soon. Currently, I am struggling to get a convincing tyre simulation. I want to use real tyre shapes (Cylinders) and not the ray-vehicle. When looking that the demos, I see that there are a lot of different friction types: body->setFriction(1.f); body->...
by bram
Tue Nov 20, 2018 5:51 pm
Forum: General Bullet Physics Support and Feedback
Topic: Hinge2 damping
Replies: 5
Views: 4538

Re: Hinge2 damping

In the meanwhile, I highly recommend trying to use the btGeneric6DofSpring2Constraint. It is more configurable and the spring is easier to control. I tried btGeneric6DofSpring2Constraint, which exhibits the same never ending oscillation as the Hinge2 does. Which I think is to be expected, because H...
by bram
Mon Nov 19, 2018 8:48 pm
Forum: General Bullet Physics Support and Feedback
Topic: Hinge2 damping
Replies: 5
Views: 4538

Re: Hinge2 damping

I spoke too soon.

Even with setDamping() and setStiffness() calls, there is residual oscillation that never goes away.

https://youtu.be/WHhR5poTSew

Any ideas why the spring will not settle?
by bram
Mon Nov 19, 2018 8:11 pm
Forum: General Bullet Physics Support and Feedback
Topic: Hinge2 damping
Replies: 5
Views: 4538

Re: Hinge2 damping

Ah, OK, I think I found it.

From the parent class, setDamping() is inherited.

With trial and error, I saw that damping on axis2 will stop the oscilations.

Code: Select all

                hinge->setDamping( 2, 2.0f );
by bram
Mon Nov 19, 2018 8:00 pm
Forum: General Bullet Physics Support and Feedback
Topic: Hinge2 damping
Replies: 5
Views: 4538

Hinge2 damping

btHello() I am following the Hinge2Vehicle example to create a vehicle. When I drop my vehicle on the ground, it oscilates indefinitely. I create my hinge as follows: btVector3 anchor = wp; anchor[1] += (i&2) ? WHEELPIVOTOFFSET : -WHEELPIVOTOFFSET; btVector3 axis1( 0,0,1 ); btVector3 axis2( 0,1,...
by bram
Mon Nov 19, 2018 3:56 am
Forum: General Bullet Physics Support and Feedback
Topic: what does the third parameter in btCylinderShape mean?
Replies: 3
Views: 4730

Re: what does the third parameter in btCylinderShape mean?

The half extends contain three values, two of which is the radius, and the third is half the height of the cylinder. Which value goes where, depends on which class you use. E.g. btCylinderShapeZ has its axis in Z, so you would construct it as: wheelshape = new btCylinderShapeZ( btVector3( radius, ra...
by bram
Thu Nov 15, 2018 10:40 pm
Forum: General Bullet Physics Support and Feedback
Topic: printStats()
Replies: 9
Views: 6841

Re: printStats()

There are however a few built-in task schedulers, pick one of those: Excellent! For anyone else reading this, and trying to switch to MT: After you create the manager, you need to set it with btSetTaskScheduler like so: btITaskScheduler* scheduler = btCreateDefaultTaskScheduler(); btSetTaskSchedule...