Commit Graph

133 Commits

Author SHA1 Message Date
Crozet Sébastien
d2ee642053 CCD: take angular motion and penetration depth into account in various thresholds. 2021-03-30 17:10:50 +02:00
Crozet Sébastien
7306821c46 Attenuate the warmstart impulse for CCD contacts.
CCD contacts result in very strong, instantaneous, impulses. So it is preferable to attenuate their contribution to subsequent timesteps to avoid overshooting.
2021-03-28 11:27:07 +02:00
Crozet Sébastien
97157c9423 First working version of non-linear CCD based on single-substep motion-clamping. 2021-03-26 18:16:27 +01:00
Crozet Sébastien
8dab63bda1 Fix regression in the WASM version of the velocity solver. 2021-03-08 15:14:54 +01:00
Crozet Sébastien
152ada67ec Fix regression causing invalid contacts to be solved. 2021-03-07 17:34:54 +01:00
Crozet Sébastien
0e4393ba9e Reduce code duplication between the SIMD and non-SIMD contact solve and warmstart. 2021-03-07 17:15:32 +01:00
Crozet Sébastien
4cb1f5c692 Fix warning when targetting wasm. 2021-03-07 11:55:10 +01:00
Crozet Sébastien
bed47a82e7 Projection friction impulses on an implicit cone instead of a pyramidal approximation. 2021-03-07 11:44:19 +01:00
Emil Ernerfeldt
115bae172d fix the body-body revolute angle velocity erp 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
f517601e17 Final cleanup 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
54eae9bb7b simplify prismatic limits 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
4ef7b1cefe Fix primatic wide 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
a0824772c9 fix the revolute wide 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
9bbb081539 fix narrow revolute velocity 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
4ee09a8bc9 Fix the narrow pismatic velocity constraint 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
59796e4767 fix 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
b94cdfa782 Implement ground wide 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
48afbac6ce Implement revolute wide 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
89de6903dc Implement prismatic wide 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
27366e27ff Implement fixed wide 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
48708d9a76 Implement revolute narrow 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
d3f39a9bab Implemented prismatic narrow. Needs testing and close review 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
ede4f0f770 cleanup 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
3f26b46196 Implement ball wide 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
4162aed2a0 Add params.velocity_based_erp_inv_dt() helper 2021-02-26 11:06:29 +01:00
Emil Ernerfeldt
21247a1236 Add restorative impulse in velocity solver 2021-02-26 11:06:29 +01:00
Crozet Sébastien
9cdd34c741 Fix the parallel build. 2021-02-24 13:40:26 +01:00
Crozet Sébastien
96ecb877e2 Implement dominance. 2021-02-24 13:26:51 +01:00
Crozet Sébastien
3cc2738e5f Fix warnings in the WASM build. 2021-02-23 16:47:48 +01:00
Crozet Sébastien
3fdb4cd6d3 Properly take the tangent_velocity into account in the velocity solver. 2021-02-23 15:47:24 +01:00
Crozet Sébastien
ad5c10672e Use contact ids instead of contact reordering in order to identify the impulse writeback location. 2021-02-22 17:52:03 +01:00
Sébastien Crozet
d31a327b45 Merge pull request #119 from dimforge/joint_drive
Add joint motors
2021-02-22 17:40:29 +01:00
Crozet Sébastien
0eec28325e Fix warnings. 2021-02-22 14:20:06 +01:00
Crozet Sébastien
4c9138fd2b Some minor cleanup and joint constraint refactoring. 2021-02-22 13:58:43 +01:00
Crozet Sébastien
052a5a5fc0 Make Simd prismatic joint limit code transmit torque. 2021-02-22 13:44:38 +01:00
Crozet Sébastien
73192d41c2 Make prismatic joint limit transmit torque. 2021-02-22 13:22:15 +01:00
Crozet Sébastien
aaba6c8927 Add motors to prismatic joints. 2021-02-22 12:12:24 +01:00
Crozet Sébastien
f204a5f736 Take max motor impulse into account for the ball joint. 2021-02-22 10:15:13 +01:00
Crozet Sébastien
01496d43e5 Add motors to ball joints. 2021-02-21 17:15:00 +01:00
Crozet Sébastien
f5515c3973 Fix lever-arm handling in the revolute joint. 2021-02-21 17:14:43 +01:00
Crozet Sébastien
dc8ccc0c30 Make revolute joint actuation work properly even when SIMD is enabled. 2021-02-19 17:32:09 +01:00
Crozet Sébastien
e9f17f32e8 Complete the implementation of non-simd joint motor for the revolute joint. 2021-02-19 15:21:25 +01:00
Emil Ernerfeldt
5e7eedc3fd Always apply the predictive contact term, even for bouncing contacts 2021-02-18 17:58:17 +01:00
Emil Ernerfeldt
f9e3d382d2 New contacts are bouncy, old are resting
If a contact is new (previous impluse = 0), then we treat it as bouncy (respecting restitution).
If the contact is old we treat it as resting.

Exceptions for restitutions <=0 and >= 1.
2021-02-18 15:41:46 +01:00
Crozet Sébastien
a1ddda5077 Revolute joint constraints: properly adjust the angular impulse and torque projection. 2021-02-17 15:57:58 +01:00
Crozet Sébastien
4f8f8017f4 Properly writeback the generic constrainst impulse when it comes from a revolute joint. 2021-02-15 16:44:55 +01:00
Crozet Sébastien
ebd5562af3 Generic velocity constraint: split the translation and rotation terms. 2021-02-15 12:08:18 +01:00
Crozet Sébastien
de39a41faa Implement non-linear position stabilization for the generic constraint. 2021-02-15 11:20:09 +01:00
Crozet Sébastien
d9b6198fa0 Various generic joint fixes. 2021-02-12 16:00:57 +01:00
Crozet Sébastien
cc80e40067 More experiments with the way the generic joint is stabilized. 2021-02-11 18:52:07 +01:00