expose max_num_object_capacity and max_shape_capacity_in_bytes to override the graphics VBO buffer allocations. This allows to load larger triangle meshes in pybullet.
Example:
p.connect(p.GUI, options="--max_num_object_capacity=131072 --max_shape_capacity_in_bytes=1073741824")
Use MAX_NUM_PARTS_IN_BITS=4 by default, this allows to use 134 million triangles in each concave triangle mesh in PyBullet (instead of 2 Million)
Example:
p.connect(p.GUI, options="--max_num_object_capacity=131072 --max_shape_capacity_in_bytes=1073741824")
Use MAX_NUM_PARTS_IN_BITS=4 by default, this allows to use 134 million triangles in each concave triangle mesh in PyBullet (instead of 2 Million)
- add contact information for collisions between rigid and soft bodies
- collisions between different soft bodies are not supported
- uses impulse acting on tetrahedral nodes for calculation of forces
- contact points are approximated by node positions
- multiple forces acting on identical nodes are accumulated
(cherry picked from commit 5795bd676f)
The following issues in btLemkeAlgorithm::findLexicographicMinimum() are addressed in this commit.
- The z_0 column located at A(*,2*dim), is used for lexico minimum test, which should not be used.
- If the check on the 1st column 'q' produces multiple minimums due to generacy,
and if it contains z_0, the tie must be broken in favor of z_0 and return,
which is not performed in the original.
- The 1st part to construct 'Rows' is unnecessary.
- The 2nd part has three nested loops with brute-force search, which is inefficient.
The improved version performs the lexico minimum test column-by-column
from the left-most column of (-B^{-1}q:B^{-1}).
If the test finds a single row, it returns it.
If the test finds multiple rows and if they contain z_0, it returns z_0.
Otherwise, it moves on to the next column.
Please see 2.2.2 "Pivot Step" of
K. Murty, "Linear Complementarity, Linear and Nonlinear Programming" Heldermann Verlag, Berlin, 1998
for the algorithm details.
Some performance tests are done and non-negligible improvment was observed.
Please see https://github.com/ShoYamanishi/AppleNumericalComputing/tree/main/14_lcp for the test details.
Not sure if this is omitted at purpose, but adding this like in most aligned classes/structs fixes some intermittent problems with alignment when reassigning transforms. There's also one `BT_DECLARE_ALIGNED_ALLOCATOR` missing in `btMatrix3x3.h` but with the fix above it doesn't seem to be necessary.
When building 64 bit arm with visual studio, btScalar will try to include SSE headers meant for x86 and x64 architectures.
This gives the following error in many source files:
```
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.31.31103\include\emmintrin.h(20): fatal error C1189: #error: This header is specific to X86 and X64 targets
```