Commit Graph

543 Commits

Author SHA1 Message Date
Daniel Chappuis
010d7876ef Make sure we do not recompute automatically center of mass and inertia tensor when they are set by the user 2018-01-21 13:11:11 +01:00
Daniel Chappuis
301823729d Remove the use of std::vector 2018-01-20 17:30:36 +01:00
Daniel Chappuis
3a0cc1feac Working on Map 2018-01-19 17:50:30 +01:00
Daniel Chappuis
b1ecfb0fed Working on containers (List, Map) 2018-01-19 07:55:55 +01:00
Daniel Chappuis
b93e358f5b Fix issue with zero penetration depth in Sphere vs Capsule collision 2018-01-15 18:34:20 +01:00
Daniel Chappuis
c7f7a169f8 Refactor the getter/setter for inertia tensor of a RigidBody 2018-01-15 07:18:00 +01:00
Daniel Chappuis
27a451adcf Merge branch 'optimization' into develop 2018-01-14 11:05:21 +01:00
Daniel Chappuis
ceb27760cb Working on containers 2018-01-14 10:47:39 +01:00
Daniel Chappuis
261ffef616 Refactor memory allocation 2018-01-01 18:35:57 +01:00
Daniel Chappuis
8f126a75d6 Use List in HalfEdgeStructure with some changes in memory allocation 2017-12-27 20:53:09 +01:00
Daniel Chappuis
f2ee00ca68 Use List instead of std::vector compute segment clipping in SAT algorithm 2017-12-14 22:25:52 +01:00
Daniel Chappuis
47869627d1 Fix issue in Transform 2017-12-14 20:24:19 +01:00
Daniel Chappuis
7d20a746e9 Do not std::map to store mapping from rigid body to index in array 2017-12-14 15:09:56 +01:00
Daniel Chappuis
5392948518 Use inline constructors for mathematics objects (vectors, quaternion, matrices, ...) 2017-12-13 17:51:38 +01:00
Daniel Chappuis
2d0cb27538 Add List and DefaultAllocator classes 2017-12-12 22:53:00 +01:00
Daniel Chappuis
9066264189 Remove commented code 2017-12-12 22:36:19 +01:00
Daniel Chappuis
cf42e9f04c Optimizations in contact solver 2017-12-12 07:29:29 +01:00
Daniel Chappuis
9d761291d6 Small optimizations 2017-12-06 21:55:50 +01:00
Daniel Chappuis
4f76553c59 Many small optimizations 2017-12-04 22:14:52 +01:00
Daniel Chappuis
4cc024b85e Rename fields and methods in ContactPoint class 2017-11-29 23:43:55 +01:00
Daniel Chappuis
ebd715d2e0 Add data types 2017-11-28 17:53:50 +01:00
Daniel Chappuis
e754711a84 Remove unnecessary calls to Quaternion.getMatrix() 2017-11-28 17:46:45 +01:00
Daniel Chappuis
317dea90bd Remove Quaternion constructor with Euler angles and replace it by static fromEulerAngles() method 2017-11-28 17:26:13 +01:00
Daniel Chappuis
c8e9cca912 Compute the inverse quaternion using its conjugate 2017-11-26 12:07:58 +01:00
Daniel Chappuis
fea467f112 Add profiling in SAT algorithm methods 2017-11-25 17:51:14 +01:00
Daniel Chappuis
f09331c185 Remove unused cachedCollisionData variable 2017-11-22 22:58:31 +01:00
Daniel Chappuis
f403a6e804 Add temporal coherence for convex vs triangle collision detection 2017-11-22 22:43:27 +01:00
Daniel Chappuis
38bd462b91 Fix issue in SAT algorithm, use the correct penetration depth for each contact point 2017-11-13 18:42:39 +01:00
Daniel Chappuis
e9709c3db5 Refactor the Profiler. Now there is one profiler instance per CollisionWorld/DynamicsWorld instance instead of a static one 2017-11-10 19:57:50 +01:00
Daniel Chappuis
222636391e Use the true triangle face normal if contact is not on an edge in smooth triangle contact 2017-11-10 17:51:02 +01:00
Daniel Chappuis
de95e15147 Fix issue with the shape order in concave vs convex middle-phase collision detection 2017-11-08 21:28:00 +01:00
Daniel Chappuis
8bfa6dd137 Fix issue : the scaling factor was not used when recomputing AABB tree for concave mesh shape 2017-11-08 21:26:15 +01:00
Daniel Chappuis
013431487e Rename setScaling() to setLocalScaling() 2017-11-08 21:24:09 +01:00
Daniel Chappuis
b39bb3ba37 Initialize the timestep in the DynamicsWorld constructor 2017-11-08 21:14:21 +01:00
Daniel Chappuis
e91cded831 Update code documentation and fix warnings 2017-11-05 23:15:47 +01:00
Daniel Chappuis
6e322882eb Fix wrong world AABB computation that caused broad-phase collision misses 2017-11-05 23:10:55 +01:00
Daniel Chappuis
fd427c0337 Fix compilation errors because of removed files 2017-11-03 07:11:19 +01:00
Daniel Chappuis
002264a5a1 Remove unused files 2017-11-02 23:01:32 +01:00
Daniel Chappuis
ad0f805f53 Fix robustness issue in SAT Algorithm (convex polyhedron vs capsule) 2017-11-01 23:09:02 +01:00
Daniel Chappuis
6a69ef76c5 Fix issue with ProxyShape::mBroadPhaseId not set when body was sleeping or inactive 2017-11-01 23:07:56 +01:00
Daniel Chappuis
5da57a96c8 Fix issue with sphere and capsule SAT collision detection 2017-10-24 22:47:35 +02:00
Daniel Chappuis
cdaa297a78 Remove unused variable 2017-10-19 17:19:33 +02:00
Daniel Chappuis
c1295f1d7a Remove contactNormaldId attribute and fix typo 2017-10-19 07:26:11 +02:00
Daniel Chappuis
cdec7413c5 Improve capsule resting on another shape stability 2017-10-18 21:26:53 +02:00
Daniel Chappuis
0250d8c4bd Fix issue in SAT algorithm 2017-10-18 19:35:20 +02:00
Daniel Chappuis
de494bb0fd Changes and bug fixes in ContactManifold and ContactManifoldSet 2017-10-18 00:41:32 +02:00
Daniel Chappuis
d5617526ff Modify the policy to drop contact manifolds. First drop the old ones before the new ones 2017-10-12 20:07:39 +02:00
Daniel Chappuis
4a37ba3994 Add unit tests for the TriangleVertexArray 2017-10-09 23:34:35 +02:00
Daniel Chappuis
37e2c79cf2 Fix issue in ContactManifoldSet 2017-10-09 22:41:45 +02:00
Daniel Chappuis
38eff07d0d Fix issue and small changes in TriangleVertexArray 2017-10-09 22:36:39 +02:00
Daniel Chappuis
d62aa41974 Fix issue in ContactManifoldSet 2017-10-04 22:38:39 +02:00
Daniel Chappuis
cbfeb608df Fix bug and clean the pointers casting in TriangleVertexArray 2017-10-04 22:38:14 +02:00
Daniel Chappuis
310fef1c52 Fix issue with middle phase collision detection (AABB not computed in correct space) 2017-09-28 08:34:45 +02:00
Daniel Chappuis
b33b8e0dc5 Fix issue in SAT algorithm between polyhedron and capsule 2017-09-25 23:06:17 +02:00
Daniel Chappuis
643c781fa0 Fix issues with smooth triangle contact 2017-09-21 22:44:42 +02:00
Daniel Chappuis
63833621a0 Fix issue with triangle shape normal computation 2017-09-12 23:25:21 +02:00
Daniel Chappuis
709bed3cec Fix issues with GJK algorithm 2017-09-09 15:37:55 +02:00
Daniel Chappuis
8cb2ec7e17 Remove wrong assert 2017-09-08 07:38:57 +02:00
Daniel Chappuis
b890773053 Fix issue when computing clipping planes in SAT algorithm 2017-09-07 22:24:30 +02:00
Daniel Chappuis
1b82a3e228 Fix issue in GJK algorithm when numerical issue occurs 2017-09-07 22:23:00 +02:00
Daniel Chappuis
dd91f6dcbf Fix typo 2017-09-04 22:23:29 +02:00
Daniel Chappuis
95ade79af5 Fix issue with obsolete contact points that were not removed 2017-09-04 21:23:07 +02:00
Daniel Chappuis
501bca5e3d Fix issue in TriangleVertexArray 2017-09-04 07:26:01 +02:00
Daniel Chappuis
946e62dd4b Remove unnecessary collision margin for some shapes 2017-09-03 19:06:02 +02:00
Daniel Chappuis
8bab9c1348 Remove unused cachedCollisionData parameter 2017-09-03 18:05:23 +02:00
Daniel Chappuis
e1602f2b27 Fix issues with normals computation in TriangleVertexArray 2017-09-03 17:35:09 +02:00
Daniel Chappuis
6a22b3a81d Fix temporal coherence in SAT algorithm between two convex polyhedra 2017-09-03 10:48:39 +02:00
Daniel Chappuis
673e487f14 Remove temporal coherence from SAT for sphere vs polyhedron and capsule vs polyhedron 2017-09-01 07:37:45 +02:00
Daniel Chappuis
9b89f66667 Fix issues and refactor collision shape type and collision shape name 2017-08-31 23:11:00 +02:00
Daniel Chappuis
a655ffb462 Fix issue in ContactManifoldSet.cpp 2017-08-31 22:42:19 +02:00
Daniel Chappuis
624e01b595 Working on ConcaveMeshShape and HeightFieldShape collision detection 2017-08-21 07:35:08 +02:00
Daniel Chappuis
319cc72cde Fix issues in collision detection 2017-08-18 17:50:27 +02:00
Daniel Chappuis
2f60190942 Do not generate contact in GJK algorithm if not needed 2017-08-01 15:57:46 +02:00
Daniel Chappuis
b6ad69b278 Do not compute contacts if not necessary 2017-07-30 23:56:20 +02:00
Daniel Chappuis
8b82c4ac81 Refactor the way to create the contact manifolds and contact points 2017-07-30 22:14:46 +02:00
Daniel Chappuis
6eec956eb0 Fix issues in SAT algorithm between two convex polyhedra 2017-07-21 08:09:43 +02:00
Daniel Chappuis
ddd7f500a6 Fix issues in SAT algorithm 2017-07-17 18:35:51 +02:00
Daniel Chappuis
6e9a84823a Fix issues in collision detection 2017-07-17 08:05:40 +02:00
Daniel Chappuis
462fc1dfae Merge joint bug fix into develop 2017-07-04 07:10:10 +02:00
jorrit
1855e1c121 Fixed bug in FixedJoint and SliderJoint when objects initially have a different rotation. In solvePositionConstraint the error was calculated wrongly causing incorrect simulation. 2017-07-03 19:21:44 +02:00
Daniel Chappuis
2f43e554b5 Make TriangleShape inherits from ConvexPolyhedronShape 2017-06-06 21:12:26 +02:00
Daniel Chappuis
95db87fd62 Working on contacts reduction 2017-06-05 00:05:49 +02:00
Daniel Chappuis
b1597c508f Working on temporal coherence in SAT algorithm 2017-05-31 07:36:39 +02:00
Daniel Chappuis
6b0ba1cfbb Fix issues in collision detection 2017-05-29 22:30:30 +02:00
Daniel Chappuis
730b687877 Working on temporal coherence in SAT (polyhedron vs polyhedron) 2017-05-29 08:32:10 +02:00
Daniel Chappuis
2af87d4804 Add bias to prefer some axis when penetration depths are the same in SAT algorithm 2017-05-16 07:42:04 +02:00
Daniel Chappuis
0ec21e36b9 Working on SAT algorithm between two polyhedra 2017-05-16 07:10:44 +02:00
Daniel Chappuis
7fb6f49149 Working on capsule vs polyhedron narrow-phase algorithm 2017-04-28 21:40:16 +02:00
Daniel Chappuis
f61fea8b8a Add clippling segment/polygons methods, fix issues and add convex vs capsule algorithm 2017-04-16 22:09:59 +02:00
Daniel Chappuis
57da79492f Add sphere vs convex polyhedron test in SAT algorithm 2017-04-02 00:33:29 +02:00
Daniel Chappuis
951ba3e42c Working on ConvexPolyhedron class 2017-03-30 22:39:06 +02:00
Daniel Chappuis
a9b3afae59 Finish implementing capsule vs capsule narrow-phase algorithm 2017-03-28 23:07:10 +02:00
Daniel Chappuis
050e8b36dc Refactor convex mesh shape (create PolyhedronMesh, ConvexPolyhedron classes) 2017-03-22 19:07:31 +01:00
Daniel Chappuis
b21a6bb59b Refactor contact manifold and contact point creation 2017-02-26 13:48:50 +02:00
Daniel Chappuis
6a01abfae8 Fix issues, work on HalfEdgeStructure and add unit tests 2017-02-20 17:11:13 +02:00
Daniel Chappuis
7a656aedc9 Working on HalfEdgeStructure 2017-02-13 22:38:47 +01:00
Daniel Chappuis
30e0132e15 Add capsule/capsule and capsule/sphere collision algorithm 2017-02-02 23:10:01 +01:00
Daniel Chappuis
e9f2f94f64 Continue working on SAT, remove Cone and Cylinder shapes 2017-02-02 22:58:40 +01:00
Daniel Chappuis
e491e38146 Fix issue in collision detection 2017-01-27 20:26:56 +01:00
Daniel Chappuis
99eb7cf82c Fix issue in collision detection 2017-01-19 21:27:58 +01:00
Daniel Chappuis
a50ae73663 Fix issue in GJK algorithm 2017-01-19 20:29:40 +01:00
Daniel Chappuis
f2a6dde913 Fix return value in EPA Algorithm 2017-01-18 23:05:43 +01:00
Daniel Chappuis
4a97c2ca97 Refactor collision detection 2017-01-08 19:56:59 +01:00
Daniel Chappuis
f82777bd3b Refactor some methods in ContactPoint 2016-11-05 19:20:54 +01:00
Daniel Chappuis
16d27f40b9 Remove bodies pointer from ContactPoint 2016-11-03 18:06:45 +01:00
Daniel Chappuis
b3d24e4299 Cache some calculation in contact solver 2016-10-23 20:04:52 +02:00
Daniel Chappuis
cc6d3d621d Add profiling data 2016-10-20 19:16:55 +02:00
Daniel Chappuis
ce06a4b935 Change fixed size data types 2016-10-17 22:41:58 +02:00
Daniel Chappuis
14bfb0aca4 Some optimizations in contact solver 2016-10-17 22:41:33 +02:00
Daniel Chappuis
81426293e0 Remove unused variables in contact solver 2016-10-16 23:18:42 +02:00
Daniel Chappuis
d04cee7d0a Change the way to iterate over contacts 2016-10-16 15:40:38 +02:00
Daniel Chappuis
58ae61d6aa Remove Impulse class 2016-10-11 20:08:47 +02:00
Daniel Chappuis
7b5dce927e Fix issue with split impulse and refactor contact solver 2016-10-10 23:30:32 +02:00
Daniel Chappuis
a4a141483b Remove init contact constraint method 2016-10-08 23:04:22 +02:00
Daniel Chappuis
3ab2b8608c Always solve friction at the center of the manifold and always use warmstarting 2016-10-08 16:58:28 +02:00
Daniel Chappuis
25fddd6fb2 Back to previous contact solver 2016-10-08 01:18:56 +02:00
Daniel Chappuis
54be20c5d3 Increase the default size of the single frame memory allocator 2016-10-02 15:10:19 +02:00
Daniel Chappuis
c597815191 Remove unecessary variables in constraints and cache inverse inertia world tensor of bodies 2016-09-26 22:51:30 +02:00
Daniel Chappuis
8f4979f4a2 Allocate memory in the SingleFrameAllocator in the update() method 2016-09-22 23:24:03 +02:00
Daniel Chappuis
e014f00afc Refactor memory allocator and refactor contact solver 2016-09-21 22:03:45 +02:00
Daniel Chappuis
92460791e6 Refactor PoolAllocator and add SingleFrameAllocator 2016-09-21 22:01:14 +02:00
Daniel Chappuis
1a26241fa8 Fix issue in contact solver 2016-09-16 20:02:38 +02:00
Daniel Chappuis
b4f13308de Optimize warmstarting in contact solver 2016-09-13 22:58:17 +02:00
Daniel Chappuis
e069a25f08 Start refactoring the contact solver 2016-09-10 11:18:52 +02:00
Daniel Chappuis
5b17652adb Merge branch 'develop' into optimization 2016-08-21 20:49:22 +02:00
Daniel Chappuis
2f195c6106 Fix compilation error on gcc 2016-08-21 20:44:29 +02:00
Daniel Chappuis
123cd93f38 Fix compilation error on gcc 2016-08-21 20:37:58 +02:00
Daniel Chappuis
6f8d9586c7 Fix compilation error on gcc 2016-08-21 20:25:50 +02:00
Daniel Chappuis
0a7eeaeb48 Fix compilation error on gcc 2016-08-21 19:32:14 +02:00
Daniel Chappuis
8a69dc89fa Add missing override keyword 2016-08-21 12:34:27 +02:00
Daniel Chappuis
8d2b898168 Fix merge conflicts 2016-08-21 11:47:22 +02:00
Daniel Chappuis
2932403ff4 Use default keyword for default constructors/destructors 2016-07-19 06:52:18 +02:00
Daniel Chappuis
cfede8f179 Use constexpr for compile time constants 2016-07-11 08:59:39 +02:00
Daniel Chappuis
16478722de Use override keyword to mark virtual overriden methods 2016-07-11 08:33:24 +02:00
Daniel Chappuis
f5ade0f52d Fix virtual constructors, use c++11 scoped enums, use c++11 delete methods instead of private constructors 2016-07-08 07:25:37 +02:00
Daniel Chappuis
be957ba41a Replace typedefs by c++11 alias declaration 2016-07-06 07:05:34 +02:00
Daniel Chappuis
9cc633fc67 Modify initial GJK support direction 2016-07-06 06:48:19 +02:00
Daniel Chappuis
da9f6ae233 Remove Simplex class (replaced by VoronoiSimplex) 2016-07-05 22:02:16 +02:00
Daniel Chappuis
4bad013c91 Make GJK/EPA collision detection more robust 2016-07-05 21:34:44 +02:00
Daniel Chappuis
ccd33c2502 Fix issue in VoronoiSimplex 2016-06-27 18:50:12 +02:00
Daniel Chappuis
fd224ebaba Add VoronoiSimplex class for GJK algorithm 2016-06-20 08:41:22 +02:00
Daniel Chappuis
9fae1b4e35 Add missing virtual destructor 2016-06-20 08:40:26 +02:00
Daniel Chappuis
942b63b48d Replace NULL pointer by nullptr 2016-05-19 22:47:19 +02:00
Daniel Chappuis
c3e74856a0 Fix assert raised in empty scene 2016-05-18 22:30:20 +02:00
Daniel Chappuis
ae7bec43c4 Allow for zero mass rigid body 2016-05-18 21:39:11 +02:00
Daniel Chappuis
6a8b63adc2 ProxyShape must have a virtual destructor 2016-05-15 19:29:50 +02:00
Daniel Chappuis
2640fbd48a Start replacing NULL constant by nullptr 2016-05-15 19:25:58 +02:00
Daniel Chappuis
1ae9bb5467 Fix warning 2016-04-12 21:32:35 +02:00
Daniel Chappuis
34b330eb4f Fix warnings 2016-04-12 21:28:09 +02:00
Daniel Chappuis
4ae8d446be Fix compilation errors on Visual Studio and warnings 2016-04-12 18:44:55 +02:00